2010-06-10 20:18:29 +00:00
<? php
/*+********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
********************************************************************************/
require_once ( 'Smarty_setup.php' );
require_once ( 'include/CustomFieldUtil.php' );
require_once ( 'include/utils/UserInfoUtil.php' );
require_once ( 'include/utils/utils.php' );
global $mod_strings , $app_strings , $log , $theme ;
$theme_path = "themes/" . $theme . "/" ;
$image_path = $theme_path . "images/" ;
require_once ( $theme_path . 'layout_utils.php' );
$smarty = new vtigerCRM_Smarty ;
$subMode = $_REQUEST [ 'sub_mode' ];
$smarty -> assign ( "MOD" , $mod_strings );
$smarty -> assign ( "APP" , $app_strings );
if ( $subMode == 'updateFieldProperties' )
updateFieldProperties ();
elseif ( $subMode == 'deleteCustomField' )
deleteCustomField ();
elseif ( $subMode == 'changeOrder' )
changeFieldOrder ();
elseif ( $subMode == 'addBlock' )
$duplicate = addblock ();
elseif ( $subMode == 'deleteCustomBlock' )
deleteBlock ();
elseif ( $subMode == 'addCustomField' )
$duplicate = addCustomField ();
elseif ( $subMode == 'movehiddenfields' || $subMode == 'showhiddenfields' )
show_move_hiddenfields ( $subMode );
elseif ( $subMode == 'changeRelatedInfoOrder' )
changeRelatedListOrder ();
$smarty -> assign ( "THEME" , $theme );
$module_array = getCustomFieldSupportedModules ();
$cfimagecombo = Array (
$image_path . "text.gif" ,
$image_path . "number.gif" ,
$image_path . "percent.gif" ,
$image_path . "currency.gif" ,
$image_path . "date.gif" ,
$image_path . "email.gif" ,
$image_path . "phone.gif" ,
$image_path . "picklist.gif" ,
$image_path . "url.gif" ,
$image_path . "checkbox.gif" ,
$image_path . "text.gif" ,
$image_path . "picklist.gif"
);
$cftextcombo = Array (
$mod_strings [ 'Text' ],
$mod_strings [ 'Number' ],
$mod_strings [ 'Percent' ],
$mod_strings [ 'Currency' ],
$mod_strings [ 'Date' ],
$mod_strings [ 'Email' ],
$mod_strings [ 'Phone' ],
$mod_strings [ 'PickList' ],
$mod_strings [ 'LBL_URL' ],
$mod_strings [ 'LBL_CHECK_BOX' ],
$mod_strings [ 'LBL_TEXT_AREA' ],
$mod_strings [ 'LBL_MULTISELECT_COMBO' ]
);
$smarty -> assign ( "MODULES" , $module_array );
$smarty -> assign ( "CFTEXTCOMBO" , $cftextcombo );
$smarty -> assign ( "CFIMAGECOMBO" , $cfimagecombo );
if ( $_REQUEST [ 'formodule' ] != '' )
$fld_module = vtlib_purify ( $_REQUEST [ 'formodule' ]);
elseif ( $_REQUEST [ 'fld_module' ] != '' ){
$fld_module = vtlib_purify ( $_REQUEST [ 'fld_module' ]);
} else
$fld_module = 'Accounts' ;
$block_array = getModuleBlocks ( $fld_module );
$smarty -> assign ( "BLOCKS" , $block_array );
$smarty -> assign ( "MODULE" , $fld_module );
$smarty -> assign ( "CFENTRIES" , getFieldListEntries ( $fld_module ));
$smarty -> assign ( "RELATEDLIST" , getRelatedListInfo ( $fld_module ));
if ( isset ( $_REQUEST [ "duplicate" ]) && $_REQUEST [ "duplicate" ] == "yes" || $duplicate == 'yes' )
{
echo "ERROR" ;
exit ;
}
if ( $duplicate == 'LENGTH_ERROR' ){
echo "LENGTH_ERROR" ;
exit ;
}
if ( $_REQUEST [ 'mode' ] != '' )
$mode = vtlib_purify ( $_REQUEST [ 'mode' ]);
$smarty -> assign ( "MODE" , $mode );
if ( $_REQUEST [ 'ajax' ] != 'true' ){
$smarty -> display ( 'Settings/LayoutBlockList.tpl' );
}
elseif (( $subMode == 'getRelatedInfoOrder' || $subMode == 'changeRelatedInfoOrder' ) && $_REQUEST [ 'ajax' ] == 'true' ){
$smarty -> display ( 'Settings/OrderRelatedList.tpl' );
}
else {
$smarty -> display ( 'Settings/LayoutBlockEntries.tpl' );
}
function InStrCount ( $String , $Find , $CaseSensitive = false ) {
global $log ;
$i = 0 ;
$x = 0 ;
$substring = '' ;
while ( strlen ( $String ) >= $i ) {
unset ( $substring );
if ( $CaseSensitive ) {
$Find = strtolower ( $Find );
$String = strtolower ( $String );
}
$substring = substr ( $String , $i , strlen ( $Find ));
if ( $substring == $Find ) $x ++ ;
$i ++ ;
}
$log -> debug ( "In InStrCount function" . $String , $Find );
return $x ;
}
/**
* Function to get customfield entries
* @param string $module - Module name
* return array $cflist - customfield entries
*/
function getFieldListEntries ( $module )
{
$tabid = getTabid ( $module );
global $adb , $smarty , $log ;
global $theme ;
$theme_path = "themes/" . $theme . "/" ;
$image_path = "themes/images/" ;
$dbQuery = "select vtiger_blocks.*,vtiger_tab.presence as tabpresence from vtiger_blocks" .
" inner join vtiger_tab on vtiger_tab.tabid = vtiger_blocks.tabid" .
" where vtiger_blocks.tabid=? and vtiger_tab.presence = 0 order by sequence" ;
$result = $adb -> pquery ( $dbQuery , array ( $tabid ));
$row = $adb -> fetch_array ( $result );
$focus = CRMEntity :: getInstance ( $module );
$nonEditableUiTypes = array ( '4' , '70' );
$cflist = Array ();
$i = 0 ;
if ( $row != '' )
{
do
{
if ( $row [ "blocklabel" ] == 'LBL_CUSTOM_INFORMATION' )
{
$smarty -> assign ( "CUSTOMSECTIONID" , $row [ "blockid" ]);
}
if ( $row [ "blocklabel" ] == 'LBL_RELATED_PRODUCTS' )
{
$smarty -> assign ( "RELPRODUCTSECTIONID" , $row [ "blockid" ]);
}
if ( $row [ "blocklabel" ] == 'LBL_COMMENTS' || $row [ 'blocklabel' ] == 'LBL_COMMENT_INFORMATION' )
{
$smarty -> assign ( "COMMENTSECTIONID" , $row [ "blockid" ]);
}
if ( $row [ 'blocklabel' ] == 'LBL_TICKET_RESOLUTION' ){
$smarty -> assign ( "SOLUTIONBLOCKID" , $row [ "blockid" ]);
}
if ( $row [ 'blocklabel' ] == '' ){
continue ;
}
$cflist [ $i ][ 'tabpresence' ] = $row [ 'tabpresence' ];
$cflist [ $i ][ 'module' ] = $module ;
$cflist [ $i ][ 'blocklabel' ] = getTranslatedString ( $row [ "blocklabel" ], $module );
$cflist [ $i ][ 'blockid' ] = $row [ "blockid" ];
$cflist [ $i ][ 'display_status' ] = $row [ "display_status" ];
$cflist [ $i ][ 'tabid' ] = $tabid ;
$cflist [ $i ][ 'blockselect' ] = $row [ "blockid" ];
$cflist [ $i ][ 'sequence' ] = $row [ "sequence" ];
$cflist [ $i ][ 'iscustom' ] = $row [ "iscustom" ];
if ( $module != 'Invoices' && $module != 'Quotes' && $module != 'SalesOrder' && $module != 'Invoice' )
{
$sql_field = "select * from vtiger_field where block=? and vtiger_field.displaytype IN (1,2,4) order by sequence" ;
$sql_field_params = array ( $row [ "blockid" ]);
} else
{
$sql_field = "select * from vtiger_field where block=? and (vtiger_field.fieldlabel!='Total' and vtiger_field.fieldlabel!='Sub Total' and vtiger_field.fieldlabel!='Tax') and vtiger_field.displaytype IN (1,2,4) order by sequence" ;
$sql_field_params = array ( $row [ "blockid" ]);
}
$result_field = $adb -> pquery ( $sql_field , $sql_field_params );
$row_field = $adb -> fetch_array ( $result_field );
if ( $row_field != '' )
{
$cf_element = Array ();
$cf_hidden_element = Array ();
$count = 0 ;
$hiddencount = 0 ;
do
{
$fieldid = $row_field [ 'fieldid' ];
$presence = $row_field [ 'presence' ];
$fieldname = $row_field [ 'fieldname' ];
$customfieldflag = InStrCount ( $row_field [ 'fieldname' ], 'cf_' , true );
$quickcreate = $row_field [ 'quickcreate' ];
$massedit = $row_field [ 'masseditable' ];
$typeofdata = $row_field [ 'typeofdata' ];
$displaytype = $row_field [ 'displaytype' ];
$uitype = $row_field [ 'uitype' ];
$fld_type_name = getCustomFieldTypeName ( $row_field [ 'uitype' ]);
$fieldlabel = getTranslatedString ( $row_field [ 'fieldlabel' ], $module );
$strictlyMandatory = false ;
if ( isset ( $focus -> mandatory_fields ) && ( ! empty ( $focus -> mandatory_fields )) && in_array ( $fieldname , $focus -> mandatory_fields )){
$strictlyMandatory = true ;
} elseif ( in_array ( $uitype , $nonEditableUiTypes ) || $displaytype == 2 ) {
$strictlyMandatory = true ;
}
$visibility = getFieldInfo ( $fieldname , $typeofdata , $quickcreate , $massedit , $presence , $strictlyMandatory , $customfieldflag , $displaytype , $uitype );
if ( $presence == 0 || $presence == 2 ) {
$cf_element [ $count ][ 'fieldselect' ] = $fieldid ;
$cf_element [ $count ][ 'blockid' ] = $row [ 'blockid' ];
$cf_element [ $count ][ 'tabid' ] = $tabid ;
$cf_element [ $count ][ 'no' ] = $count ;
$cf_element [ $count ][ 'label' ] = $fieldlabel ;
$cf_element [ $count ][ 'fieldlabel' ] = $row_field [ 'fieldlabel' ];
$cf_element [ $count ][ 'type' ] = $fld_type_name ;
$cf_element [ $count ][ 'uitype' ] = $uitype ;
$cf_element [ $count ][ 'columnname' ] = $row_field [ 'columnname' ];
$cf_element [ $count ] = array_merge ( $cf_element [ $count ], $visibility );
$count ++ ;
} else {
$cf_hidden_element [ $hiddencount ][ 'fieldselect' ] = $fieldid ;
$cf_hidden_element [ $hiddencount ][ 'blockid' ] = $row [ 'blockid' ];
$cf_hidden_element [ $hiddencount ][ 'tabid' ] = $tabid ;
$cf_hidden_element [ $hiddencount ][ 'no' ] = $hiddencount ;
$cf_hidden_element [ $hiddencount ][ 'label' ] = $fieldlabel ;
$cf_hidden_element [ $hiddencount ][ 'fieldlabel' ] = $row_field [ 'fieldlabel' ];
$cf_hidden_element [ $hiddencount ][ 'type' ] = $fld_type_name ;
$cf_hidden_element [ $hiddencount ][ 'uitype' ] = $uitype ;
$cf_hidden_element [ $hiddencount ][ 'columnname' ] = $row_field [ 'columnname' ];
$cf_hidden_element [ $hiddencount ] = array_merge ( $cf_hidden_element [ $hiddencount ], $visibility );
$hiddencount ++ ;
}
} while ( $row_field = $adb -> fetch_array ( $result_field ));
$cflist [ $i ][ 'no' ] = $count ;
$cflist [ $i ][ 'hidden_count' ] = $hiddencount ;
}
else
{
$cflist [ $i ][ 'no' ] = 0 ;
}
$query_fields_not_in_block = 'select fieldid,fieldlabel,block from vtiger_field ' .
'inner join vtiger_blocks on vtiger_field.block=vtiger_blocks.blockid ' .
'where vtiger_field.block != ? and vtiger_blocks.blocklabel not in ("LBL_TICKET_RESOLUTION","LBL_COMMENTS","LBL_COMMENT_INFORMATION") ' .
'AND vtiger_field.tabid = ? and vtiger_field.displaytype IN (1,2,4) order by vtiger_field.sequence' ;
$params = array ( $row [ 'blockid' ], $tabid );
$fields = $adb -> pquery ( $query_fields_not_in_block , $params );
$row_field = $adb -> fetch_array ( $fields );
if ( $row_field != '' ){
$movefields = array ();
$movefieldcount = 0 ;
do {
$movefields [ $movefieldcount ][ 'fieldid' ] = $row_field [ 'fieldid' ];
$movefields [ $movefieldcount ][ 'fieldlabel' ] = getTranslatedString ( $row_field [ 'fieldlabel' ], $module );
$movefieldcount ++ ;
} while ( $row_field = $adb -> fetch_array ( $fields ));
$cflist [ $i ][ 'movefieldcount' ] = $movefieldcount ;
}
else {
$cflist [ $i ][ 'movefieldcount' ] = 0 ;
}
$cflist [ $i ][ 'field' ] = $cf_element ;
$cflist [ $i ][ 'hiddenfield' ] = $cf_hidden_element ;
$cflist [ $i ][ 'movefield' ] = $movefields ;
$cflist [ $i ][ 'hascustomtable' ] = $focus -> customFieldTable ;
unset ( $cf_element );
unset ( $cf_hidden_element );
unset ( $movefields );
$i ++ ;
} while ( $row = $adb -> fetch_array ( $result ));
}
return $cflist ;
}
/**
* Function to Lead customfield Mapping entries
* @param integer $cfid - Lead customfield id
* return array $label - customfield mapping
*/
function getListLeadMapping ( $cfid )
{
global $adb ;
$sql = 'select * from vtiger_convertleadmapping where cfmid = ?' ;
$result = $adb -> pquery ( $sql , array ( $cfid ));
$noofrows = $adb -> num_rows ( $result );
for ( $i = 0 ; $i < $noofrows ; $i ++ )
{
$leadid = $adb -> query_result ( $result , $i , 'leadfid' );
$accountid = $adb -> query_result ( $result , $i , 'accountfid' );
$contactid = $adb -> query_result ( $result , $i , 'contactfid' );
$potentialid = $adb -> query_result ( $result , $i , 'potentialfid' );
$cfmid = $adb -> query_result ( $result , $i , 'cfmid' );
$sql2 = "select fieldlabel from vtiger_field where fieldid = ? and vtiger_field.presence in (0,2)" ;
$result2 = $adb -> pquery ( $sql2 , array ( $accountid ));
$accountfield = $adb -> query_result ( $result2 , 0 , 'fieldlabel' );
$label [ 'accountlabel' ] = $accountfield ;
$sql3 = "select fieldlabel from vtiger_field where fieldid = ? and vtiger_field.presence in (0,2)" ;
$result3 = $adb -> pquery ( $sql3 , array ( $contactid ));
$contactfield = $adb -> query_result ( $result3 , 0 , 'fieldlabel' );
$label [ 'contactlabel' ] = $contactfield ;
$sql4 = "select fieldlabel from vtiger_field where fieldid = ? and vtiger_field.presence in (0,2)" ;
$result4 = $adb -> pquery ( $sql4 , array ( $potentialid ));
$potentialfield = $adb -> query_result ( $result4 , 0 , 'fieldlabel' );
$label [ 'potentiallabel' ] = $potentialfield ;
}
return $label ;
}
/* function to get the modules supports Custom Fields
*/
function getCustomFieldSupportedModules ()
{
global $adb ;
$sql = "select distinct vtiger_field.tabid,name from vtiger_field inner join vtiger_tab on vtiger_field.tabid=vtiger_tab.tabid where vtiger_field.tabid not in(9,10,16,15,8,29)" ;
$result = $adb -> query ( $sql );
while ( $moduleinfo = $adb -> fetch_array ( $result ))
{
$modulelist [ $moduleinfo [ 'name' ]] = $moduleinfo [ 'name' ];
}
return $modulelist ;
}
function getModuleBlocks ( $module ){
global $adb ;
$tabid = getTabid ( $module );
$blockquery = "select blocklabel,blockid from vtiger_blocks where tabid = ?" ;
$blockres = $adb -> pquery ( $blockquery , array ( $tabid ));
while ( $blockinfo = $adb -> fetch_array ( $blockres )){
$blocklist [ $blockinfo [ 'blockid' ]] = getTranslatedString ( $blockinfo [ 'blocklabel' ], $module );
}
return $blocklist ;
}
/**
*
*/
function changeFieldOrder (){
global $adb , $log , $smarty ;
if ( ! empty ( $_REQUEST [ 'what_to_do' ])){
if ( $_REQUEST [ 'what_to_do' ] == 'block_down' ){
$sql = "select * from vtiger_blocks where blockid=?" ;
$result = $adb -> pquery ( $sql , array ( $_REQUEST [ 'blockid' ]));
$row = $adb -> fetch_array ( $result );
$current_sequence = $row [ sequence ];
$sql_next = "select * from vtiger_blocks where sequence > ? and tabid=? limit 0,1" ;
$result_next = $adb -> pquery ( $sql_next , array ( $current_sequence , $_REQUEST [ tabid ]));
$row_next = $adb -> fetch_array ( $result_next );
$next_sequence = $row_next [ sequence ];
$next_id = $row_next [ blockid ];
$sql_up_current = "update vtiger_blocks set sequence=? where blockid=?" ;
$result_up_current = $adb -> pquery ( $sql_up_current , array ( $next_sequence , $_REQUEST [ 'blockid' ]));
$sql_up_next = "update vtiger_blocks set sequence=? where blockid=?" ;
$result_up_next = $adb -> pquery ( $sql_up_next , array ( $current_sequence , $next_id ));
}
if ( $_REQUEST [ 'what_to_do' ] == 'block_up' ){
$sql = "select * from vtiger_blocks where blockid=?" ;
$result = $adb -> pquery ( $sql , array ( $_REQUEST [ 'blockid' ]));
$row = $adb -> fetch_array ( $result );
$current_sequence = $row [ sequence ];
$sql_previous = "select * from vtiger_blocks where sequence < ? and tabid=? order by sequence desc limit 0,1" ;
$result_previous = $adb -> pquery ( $sql_previous , array ( $current_sequence , $_REQUEST [ tabid ]));
$row_previous = $adb -> fetch_array ( $result_previous );
$previous_sequence = $row_previous [ sequence ];
$previous_id = $row_previous [ blockid ];
$sql_up_current = "update vtiger_blocks set sequence=? where blockid=?" ;
$result_up_current = $adb -> pquery ( $sql_up_current , array ( $previous_sequence , $_REQUEST [ 'blockid' ]));
$sql_up_previous = "update vtiger_blocks set sequence=? where blockid=?" ;
$result_up_previous = $adb -> pquery ( $sql_up_previous , array ( $current_sequence , $previous_id ));
}
if ( $_REQUEST [ 'what_to_do' ] == 'down' || $_REQUEST [ 'what_to_do' ] == 'Right' ){
$sql = "select * from vtiger_field where fieldid=? and vtiger_field.presence in (0,2)" ;
$result = $adb -> pquery ( $sql , array ( $_REQUEST [ 'fieldid' ]));
$row = $adb -> fetch_array ( $result );
$current_sequence = $row [ 'sequence' ];
if ( $_REQUEST [ 'what_to_do' ] == 'down' ){
$sql_next = "select * from vtiger_field where sequence > ? and block = ? and vtiger_field.presence in (0,2) order by sequence limit 1,1" ;
$sql_next_params = array ( $current_sequence , $_REQUEST [ 'blockid' ]);
} else {
$sql_next = "select * from vtiger_field where sequence > ? and block = ? and vtiger_field.presence in (0,2) order by sequence limit 0,1" ;
$sql_next_params = array ( $current_sequence , $_REQUEST [ 'blockid' ]);
}
$result_next = $adb -> pquery ( $sql_next , $sql_next_params );
$row_next = $adb -> fetch_array ( $result_next );
$next_sequence = $row_next [ 'sequence' ];
$next_id = $row_next [ 'fieldid' ];
$sql_up_current = "update vtiger_field set sequence=? where fieldid=?" ;
$result_up_current = $adb -> pquery ( $sql_up_current , array ( $next_sequence , $_REQUEST [ 'fieldid' ]));
$sql_up_next = "update vtiger_field set sequence=? where fieldid=?" ;
$result_up_next = $adb -> pquery ( $sql_up_next , array ( $current_sequence , $next_id ));
$smarty -> assign ( "COLORID" , vtlib_purify ( $_REQUEST [ 'fieldid' ]));
}
if ( $_REQUEST [ 'what_to_do' ] == 'up' || $_REQUEST [ 'what_to_do' ] == 'Left' ){
$sql = "select * from vtiger_field where fieldid=? and vtiger_field.presence in (0,2)" ;
$result = $adb -> pquery ( $sql , array ( $_REQUEST [ 'fieldid' ]));
$row = $adb -> fetch_array ( $result );
$current_sequence = $row [ 'sequence' ];
if ( $_REQUEST [ 'what_to_do' ] == 'up' ){
$sql_previous = "select * from vtiger_field where sequence < ? and block=? and vtiger_field.presence in (0,2) order by sequence desc limit 1,1" ;
$sql_prev_params = array ( $current_sequence , $_REQUEST [ 'blockid' ]);
} else {
$sql_previous = "select * from vtiger_field where sequence < ? and block=? and vtiger_field.presence in (0,2) order by sequence desc limit 0,1" ;
$sql_prev_params = array ( $current_sequence , $_REQUEST [ 'blockid' ]);
}
$result_previous = $adb -> pquery ( $sql_previous , $sql_prev_params );
$row_previous = $adb -> fetch_array ( $result_previous );
$previous_sequence = $row_previous [ 'sequence' ];
$previous_id = $row_previous [ 'fieldid' ];
$sql_up_current = "update vtiger_field set sequence=? where fieldid=?" ;
$result_up_current = $adb -> pquery ( $sql_up_current , array ( $previous_sequence , $_REQUEST [ 'fieldid' ]));
$sql_up_previous = "update vtiger_field set sequence=? where fieldid=?" ;
$result_up_previous = $adb -> pquery ( $sql_up_previous , array ( $current_sequence , $previous_id ));
$smarty -> assign ( "COLORID" , vtlib_purify ( $_REQUEST [ 'fieldid' ]));
}
if ( $_REQUEST [ 'what_to_do' ] == 'show' ){
$sql_up_display = "update vtiger_blocks set display_status='1' where blockid=?" ;
$result_up_display = $adb -> pquery ( $sql_up_display , array ( $_REQUEST [ 'blockid' ]));
}
if ( $_REQUEST [ 'what_to_do' ] == 'hide' ){
$sql_up_display = "update vtiger_blocks set display_status='0' where blockid=?" ;
$result_up_display = $adb -> pquery ( $sql_up_display , array ( $_REQUEST [ 'blockid' ]));
}
}
}
/**
*
*/
function getFieldInfo ( $fieldname , $typeofdata , $quickcreate , $massedit , $presence , $strictlyMandatory , $customfieldflag , $displaytype , $uitype ){
global $log ;
$fieldtype = explode ( "~" , $typeofdata );
if ( $strictlyMandatory ){ //fields without which the CRM Record will be inconsistent
$mandatory = '0' ;
} elseif ( $fieldtype [ 1 ] == "M" ){ //fields which are made mandatory
$mandatory = '2' ;
} else {
$mandatory = '1' ; //fields not mandatory
}
if ( $uitype == 4 || $displaytype == 2 ) {
$mandatory = '3' ;
}
$visibility = array ();
$visibility [ 'mandatory' ] = $mandatory ;
$visibility [ 'quickcreate' ] = $quickcreate ;
$visibility [ 'presence' ] = $presence ;
$visibility [ 'massedit' ] = $massedit ;
$visibility [ 'displaytype' ] = $displaytype ;
$visibility [ 'customfieldflag' ] = $customfieldflag ;
$visibility [ 'fieldtype' ] = $fieldtype [ 1 ];
return $visibility ;
}
function updateFieldProperties (){
global $adb , $smarty , $log ;
$fieldid = $_REQUEST [ 'fieldid' ];
$req_sql = "select * from vtiger_field where fieldid = ? and fieldname not in('salutationtype') and vtiger_field.presence in (0,2)" ;
$req_result = $adb -> pquery ( $req_sql , array ( $fieldid ));
$typeofdata = $adb -> query_result ( $req_result , 0 , 'typeofdata' );
$tabid = $adb -> query_result ( $req_result , 0 , 'tabid' );
$fieldname = $adb -> query_result ( $req_result , 0 , 'fieldname' );
$uitype = $adb -> query_result ( $req_result , 0 , 'uitype' );
$oldfieldlabel = $adb -> query_result ( $req_result , 0 , 'fieldlabel' );
$tablename = $adb -> query_result ( $req_result , 0 , 'tablename' );
$columnname = $adb -> query_result ( $req_result , 0 , 'columnname' );
$oldquickcreate = $adb -> query_result ( $req_result , 0 , 'quickcreate' );
$oldmassedit = $adb -> query_result ( $req_result , 0 , 'masseditable' );
$oldpresence = $adb -> query_result ( $req_result , 0 , 'presence' );
if ( ! empty ( $_REQUEST [ 'fld_module' ])){
$fld_module = vtlib_purify ( $_REQUEST [ 'fld_module' ]);
} else {
$fld_module = getTabModuleName ( $tabid );
}
$focus = CRMEntity :: getInstance ( $fld_module );
$fieldtype = explode ( "~" , $typeofdata );
$mandatory_checked = $_REQUEST [ 'ismandatory' ];
$quickcreate_checked = $_REQUEST [ 'quickcreate' ];
$presence_check = $_REQUEST [ 'isPresent' ];
$massedit_check = $_REQUEST [ 'massedit' ];
if ( isset ( $focus -> mandatory_fields ) && ( ! empty ( $focus -> mandatory_fields )) && in_array ( $fieldname , $focus -> mandatory_fields )){
$fieldtype [ 1 ] = 'M' ;
} elseif ( $mandatory_checked == 'true' || $mandatory_checked == '' ){
$fieldtype [ 1 ] = 'M' ;
} else {
$fieldtype [ 1 ] = 'O' ;
}
$datatype = implode ( '~' , $fieldtype );
$maxseq = '' ;
if ( $oldquickcreate != 3 ){
if (( $quickcreate_checked == 'true' || $quickcreate_checked == '' )){
$qcdata = 2 ;
$quickcreateseq_Query = 'select max(quickcreatesequence) as maxseq from vtiger_field where tabid = ?' ;
$res = $adb -> pquery ( $quickcreateseq_Query , array ( $tabid ));
$maxseq = $adb -> query_result ( $res , 0 , 'maxseq' );
} else {
$qcdata = 1 ;
}
}
if ( $oldpresence != 3 ){
if ( $presence_check == 'true' || $presence_check == '' ){
$presence = 2 ;
} else {
$presence = 1 ;
}
} else {
$presence = 1 ;
}
if ( $oldmassedit != 3 ){
if (( $massedit_check == 'true' || $massedit_check == '' )){
$massedit = 1 ;
} else {
$massedit = 2 ;
}
} else {
$massedit = 1 ;
}
if ( isset ( $focus -> mandatory_fields ) && ( ! empty ( $focus -> mandatory_fields ))){
$fieldname_list = implode ( ',' , $focus -> mandatory_fields );
} else {
$fieldname_list = '' ;
}
$mandatory_query = "update vtiger_field set typeofdata=? where fieldid=? and fieldname not in (?) AND displaytype != 2" ;
$mandatory_params = array ( $datatype , $fieldid , $fieldname_list );
$adb -> pquery ( $mandatory_query , $mandatory_params );
if ( ! empty ( $qcdata )){
$quickcreate_query = "update vtiger_field set quickcreate = ? ,quickcreatesequence = ? where fieldid = ? and quickcreate not in (0,3) AND displaytype != 2" ;
$quickcreate_params = array ( $qcdata , $maxseq + 1 , $fieldid );
$adb -> pquery ( $quickcreate_query , $quickcreate_params );
}
$presence_query = "update vtiger_field set presence = ? where fieldid = ? and presence not in (0,3) and quickcreate != 0" ;
$quickcreate_params = array ( $presence , $fieldid );
$adb -> pquery ( $presence_query , $quickcreate_params );
$massedit_query = "update vtiger_field set masseditable = ? where fieldid = ? and masseditable not in (0,3) AND displaytype != 2" ;
$massedit_params = array ( $massedit , $fieldid );
$adb -> pquery ( $massedit_query , $massedit_params );
}
function deleteCustomField (){
global $adb ;
$fld_module = $_REQUEST [ "fld_module" ];
$id = $_REQUEST [ "fld_id" ];
$colName = $_REQUEST [ "colName" ];
$uitype = $_REQUEST [ "uitype" ];
$fieldquery = 'select * from vtiger_field where fieldid = ?' ;
$res = $adb -> pquery ( $fieldquery , array ( $id ));
$typeofdata = $adb -> query_result ( $res , 0 , 'typeofdata' );
$fieldname = $adb -> query_result ( $res , 0 , 'fieldname' );
$oldfieldlabel = $adb -> query_result ( $res , 0 , 'fieldlabel' );
$tablename = $adb -> query_result ( $res , 0 , 'tablename' );
$columnname = $adb -> query_result ( $res , 0 , 'columnname' );
$fieldtype = explode ( "~" , $typeofdata );
//Deleting the CustomField from the Custom Field Table
$query = 'delete from vtiger_field where fieldid = ? and vtiger_field.presence in (0,2)' ;
$adb -> pquery ( $query , array ( $id ));
//Deleting from vtiger_profile2field table
$query = 'delete from vtiger_profile2field where fieldid=?' ;
$adb -> pquery ( $query , array ( $id ));
//Deleting from vtiger_def_org_field table
$query = 'delete from vtiger_def_org_field where fieldid=?' ;
$adb -> pquery ( $query , array ( $id ));
$focus = CRMEntity :: getInstance ( $fld_module );
$deletecolumnname = $tablename . ":" . $columnname . ":" . $fieldname . ":" . $fld_module . "_" . str_replace ( " " , "_" , $oldfieldlabel ) . ":" . $fieldtype [ 0 ];
$column_cvstdfilter = $tablename . ":" . $columnname . ":" . $fieldname . ":" . $fld_module . "_" . str_replace ( " " , "_" , $oldfieldlabel );
$select_columnname = $tablename . ":" . $columnname . ":" . $fld_module . "_" . str_replace ( " " , "_" , $oldfieldlabel ) . ":" . $fieldname . ":" . $fieldtype [ 0 ];
$reportsummary_column = $tablename . ":" . $columnname . ":" . str_replace ( " " , "_" , $oldfieldlabel );
$dbquery = 'alter table ' . $adb -> sql_escape_string ( $focus -> customFieldTable [ 0 ]) . ' drop column ' . $adb -> sql_escape_string ( $colName );
$adb -> pquery ( $dbquery , array ());
//To remove customfield entry from vtiger_field table
$dbquery = 'delete from vtiger_field where columnname= ? and fieldid=? and vtiger_field.presence in (0,2)' ;
$adb -> pquery ( $dbquery , array ( $colName , $id ));
//we have to remove the entries in customview and report related tables which have this field ($colName)
$adb -> pquery ( "delete from vtiger_cvcolumnlist where columnname = ? " , array ( $deletecolumnname ));
$adb -> pquery ( "delete from vtiger_cvstdfilter where columnname = ?" , array ( $column_cvstdfilter ));
$adb -> pquery ( "delete from vtiger_cvadvfilter where columnname = ?" , array ( $deletecolumnname ));
$adb -> pquery ( "delete from vtiger_selectcolumn where columnname = ?" , array ( $select_columnname ));
$adb -> pquery ( "delete from vtiger_relcriteria where columnname = ?" , array ( $select_columnname ));
$adb -> pquery ( "delete from vtiger_reportsortcol where columnname = ?" , array ( $select_columnname ));
$adb -> pquery ( "delete from vtiger_reportdatefilter where datecolumnname = ?" , array ( $column_cvstdfilter ));
$adb -> pquery ( "delete from vtiger_reportsummary where columnname like ?" , array ( '%' . $reportsummary_column . '%' ));
//Deleting from convert lead mapping vtiger_table- Jaguar
if ( $fld_module == "Leads" )
{
$deletequery = 'delete from vtiger_convertleadmapping where leadfid=?' ;
$adb -> pquery ( $deletequery , array ( $id ));
} elseif ( $fld_module == "Accounts" || $fld_module == "Contacts" || $fld_module == "Potentials" )
{
$map_del_id = array ( "Accounts" => "accountfid" , "Contacts" => "contactfid" , "Potentials" => "potentialfid" );
$map_del_q = "update vtiger_convertleadmapping set " . $map_del_id [ $fld_module ] . "=0 where " . $map_del_id [ $fld_module ] . "=?" ;
$adb -> pquery ( $map_del_q , array ( $id ));
}
//HANDLE HERE - we have to remove the table for other picklist type values which are text area and multiselect combo box
if ( $uitype == 15 )
{
$deltablequery = 'drop table vtiger_' . $adb -> sql_escape_string ( $colName );
$adb -> pquery ( $deltablequery , array ());
}
}
function addblock (){
global $mod_strings , $log , $adb ;
$fldmodule = $_REQUEST [ 'fld_module' ];
$mode = $_REQUEST [ 'mode' ];
$newblocklabel = trim ( $_REQUEST [ 'blocklabel' ]);
$after_block = $_REQUEST [ 'after_blockid' ];
$tabid = getTabid ( $fldmodule );
$flag = 0 ;
$dup_check_query = $adb -> pquery ( "SELECT blocklabel from vtiger_blocks WHERE tabid = ?" , array ( $tabid ));
$norows = $adb -> num_rows ( $dup_check_query );
for ( $i = 0 ; $i < $norows ; $i ++ ){
$blklbl = $adb -> query_result ( $dup_check_query , $i , 'blocklabel' );
$blklbltran = getTranslatedString ( $blklbl , $fldmodule );
if ( strtolower ( $blklbltran ) == strtolower ( $newblocklabel )){
$flag = 1 ;
$duplicate = 'yes' ;
return $duplicate ;
}
}
$length = strlen ( $newblocklabel );
if ( $length > 50 ){
$flag = 1 ;
$duplicate = 'LENGTH_ERROR' ;
return $duplicate ;
}
if ( $flag != 1 ){
$sql_seq = "select sequence from vtiger_blocks where blockid=?" ;
$res_seq = $adb -> pquery ( $sql_seq , array ( $after_block ));
$row_seq = $adb -> fetch_array ( $res_seq );
$block_sequence = $row_seq [ 'sequence' ];
$newblock_sequence = $block_sequence + 1 ;
$sql_up = "update vtiger_blocks set sequence=sequence+1 where tabid=? and sequence > ?" ;
$adb -> pquery ( $sql_up , array ( $tabid , $block_sequence ));
$max_blockid = $adb -> getUniqueID ( 'vtiger_blocks' );
$iscustom = 1 ;
$sql = "INSERT INTO vtiger_blocks (tabid, blockid, sequence, blocklabel,iscustom) values (?,?,?,?,?)" ;
$params = array ( $tabid , $max_blockid , $newblock_sequence , $newblocklabel , $iscustom );
$adb -> pquery ( $sql , $params );
}
}
function deleteBlock (){
global $adb ;
$blockid = $_REQUEST [ 'blockid' ];
$deleteblock = 'delete from vtiger_blocks where blockid = ? and iscustom = 1' ;
$res = $adb -> pquery ( $deleteblock , array ( $blockid ));
}
function addCustomField (){
global $current_user , $log , $adb ;
$fldmodule = vtlib_purify ( $_REQUEST [ 'fld_module' ]);
$fldlabel = vtlib_purify ( trim ( $_REQUEST [ 'fldLabel' ]));
$fldType = vtlib_purify ( $_REQUEST [ 'fieldType' ]);
$parenttab = vtlib_purify ( $_REQUEST [ 'parenttab' ]);
$mode = vtlib_purify ( $_REQUEST [ 'mode' ]);
$blockid = vtlib_purify ( $_REQUEST [ 'blockid' ]);
$tabid = getTabid ( $fldmodule );
if ( $fldmodule == 'Calendar' && isset ( $_REQUEST [ 'activity_type' ])) {
$activitytype = $_REQUEST [ 'activity_type' ];
if ( $activitytype == 'E' ) $tabid = '16' ;
if ( $activitytype == 'T' ) $tabid = '9' ;
}
if ( get_magic_quotes_gpc () == 1 ){
$fldlabel = stripslashes ( $fldlabel );
}
$dup_check_tab_id = $tabid ;
if ( $fldmodule == 'Calendar' )
$dup_check_tab_id = array ( '9' , '16' );
$checkquery = "select * from vtiger_field where tabid in (" . generateQuestionMarks ( $dup_check_tab_id ) . ") and fieldlabel=?" ;
$params = array ( $dup_check_tab_id , $fldlabel );
$checkresult = $adb -> pquery ( $checkquery , $params );
if ( $adb -> num_rows ( $checkresult ) > 0 )
{
$duplicate = 'yes' ;
return $duplicate ;
}
else {
$max_fieldid = $adb -> getUniqueID ( "vtiger_field" );
$columnName = 'cf_' . $max_fieldid ;
$custfld_fieldid = $max_fieldid ;
//Assigning the vtiger_table Name
if ( $fldmodule != '' ) {
$focus = CRMEntity :: getInstance ( $fldmodule );
if ( isset ( $focus -> customFieldTable )) {
$tableName = $focus -> customFieldTable [ 0 ];
} else {
$tableName = 'vtiger_' . strtolower ( $fldmodule ) . 'cf' ;
}
}
//Assigning the uitype
$fldlength = $_REQUEST [ 'fldLength' ];
$uitype = '' ;
$fldPickList = '' ;
if ( isset ( $_REQUEST [ 'fldDecimal' ]) && $_REQUEST [ 'fldDecimal' ] != '' ){
$decimal = $_REQUEST [ 'fldDecimal' ];
} else {
$decimal = 0 ;
}
$type = '' ;
$uichekdata = '' ;
if ( $fldType == 'Text' ){
$uichekdata = 'V~O~LE~' . $fldlength ;
$uitype = 1 ;
$type = "C(" . $fldlength . ") default ()" ; // adodb type
} elseif ( $fldType == 'Number' ){
$uitype = 7 ;
//this may sound ridiculous passing decimal but that is the way adodb wants
$dbfldlength = $fldlength + $decimal + 1 ;
2010-08-21 15:03:48 +00:00
$type = "N(" . $dbfldlength . "." . $decimal . ")" ; // adodb type
// Fix for http://trac.vtiger.com/cgi-bin/trac.cgi/ticket/6363
$uichekdata = 'NN~O~' . $fldlength . ',' . $decimal ;
2010-06-10 20:18:29 +00:00
} elseif ( $fldType == 'Percent' ){
$uitype = 9 ;
$type = "N(5.2)" ; //adodb type
$uichekdata = 'N~O~2~2' ;
} elseif ( $fldType == 'Currency' ){
$uitype = 71 ;
$dbfldlength = $fldlength + $decimal + 1 ;
$type = "N(" . $dbfldlength . "." . $decimal . ")" ; //adodb type
$uichekdata = 'N~O~' . $fldlength . ',' . $decimal ;
} elseif ( $fldType == 'Date' ){
$uichekdata = 'D~O' ;
$uitype = 5 ;
$type = "D" ; // adodb type
} elseif ( $fldType == 'Email' ){
$uitype = 13 ;
$type = "C(50) default () " ; //adodb type
$uichekdata = 'E~O' ;
} elseif ( $fldType == 'Phone' ){
$uitype = 11 ;
$type = "C(30) default () " ; //adodb type
$uichekdata = 'V~O' ;
} elseif ( $fldType == 'Picklist' ){
$uitype = 15 ;
$type = "C(255) default () " ; //adodb type
$uichekdata = 'V~O' ;
} elseif ( $fldType == 'URL' ){
$uitype = 17 ;
$type = "C(255) default () " ; //adodb type
$uichekdata = 'V~O' ;
} elseif ( $fldType == 'Checkbox' ){
$uitype = 56 ;
$type = "C(3) default 0" ; //adodb type
$uichekdata = 'C~O' ;
} elseif ( $fldType == 'TextArea' ){
$uitype = 21 ;
$type = "X" ; //adodb type
$uichekdata = 'V~O' ;
} elseif ( $fldType == 'MultiSelectCombo' ){
$uitype = 33 ;
$type = "X" ; //adodb type
$uichekdata = 'V~O' ;
} elseif ( $fldType == 'Skype' ){
$uitype = 85 ;
$type = "C(255) default () " ; //adodb type
$uichekdata = 'V~O' ;
}
if ( is_numeric ( $blockid )){
if ( $_REQUEST [ 'fieldid' ] == '' ){
$max_fieldsequence = "select max(sequence) as maxsequence from vtiger_field where block = ? " ;
$res = $adb -> pquery ( $max_fieldsequence , array ( $blockid ));
$max_seq = $adb -> query_result ( $res , 0 , 'maxsequence' );
if ( $fldmodule == 'Quotes' || $fldmodule == 'PurchaseOrder' || $fldmodule == 'SalesOrder' || $fldmodule == 'Invoice' ){
$quickcreate = 3 ;
} else {
$quickcreate = 1 ;
}
$query = "insert into vtiger_field (tabid,fieldid,columnname,tablename,generatedtype,uitype,fieldname,fieldlabel,readonly,presence,selected,maximumlength,sequence,block,displaytype,typeofdata,quickcreate,quickcreatesequence,info_type,masseditable) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" ;
$qparams = array ( $tabid , $custfld_fieldid , $columnName , $tableName , 2 , $uitype , $columnName , $fldlabel , 0 , 2 , 0 , 100 , $max_seq + 1 , $blockid , 1 , $uichekdata , $quickcreate , 0 , 'BAS' , 1 );
$adb -> pquery ( $query , $qparams );
$adb -> alterTable ( $tableName , $columnName . " " . $type , "Add_Column" );
//Inserting values into vtiger_profile2field vtiger_tables
$sql1 = "select * from vtiger_profile" ;
$sql1_result = $adb -> pquery ( $sql1 , array ());
$sql1_num = $adb -> num_rows ( $sql1_result );
for ( $i = 0 ; $i < $sql1_num ; $i ++ ){
$profileid = $adb -> query_result ( $sql1_result , $i , "profileid" );
$sql2 = "insert into vtiger_profile2field values(?,?,?,?,?)" ;
$adb -> pquery ( $sql2 , array ( $profileid , $tabid , $custfld_fieldid , 0 , 1 ));
}
//Inserting values into def_org vtiger_tables
$sql_def = "insert into vtiger_def_org_field values(?,?,?,?)" ;
$adb -> pquery ( $sql_def , array ( $tabid , $custfld_fieldid , 0 , 1 ));
if ( $fldType == 'Picklist' || $fldType == 'MultiSelectCombo' ){
$columnName = $adb -> sql_escape_string ( $columnName );
// Creating the PickList Table and Populating Values
if ( $_REQUEST [ 'fieldid' ] == '' ){
$qur = "CREATE TABLE vtiger_" . $columnName . " (
" . $columnName . "id int(19) NOT NULL auto_increment,
" . $columnName . " varchar(200) NOT NULL,
presence int(1) NOT NULL default '1',
picklist_valueid int(19) NOT NULL default '0',
PRIMARY KEY (" . $columnName . "id)
)" ;
$adb -> pquery ( $qur , array ());
}
//Adding a new picklist value in the picklist table
if ( $mode != 'edit' ){
$picklistid = $adb -> getUniqueID ( "vtiger_picklist" );
$sql = "insert into vtiger_picklist values(?,?)" ;
$adb -> pquery ( $sql , array ( $picklistid , $columnName ));
}
$roleid = $current_user -> roleid ;
$qry = "select picklistid from vtiger_picklist where name=?" ;
$picklistid = $adb -> query_result ( $adb -> pquery ( $qry , array ( $columnName )), 0 , 'picklistid' );
$pickArray = Array ();
$fldPickList = $_REQUEST [ 'fldPickList' ];
$pickArray = explode ( " \n " , $fldPickList );
$count = count ( $pickArray );
for ( $i = 0 ; $i < $count ; $i ++ )
{
$pickArray [ $i ] = trim ( from_html ( $pickArray [ $i ]));
if ( $pickArray [ $i ] != '' )
{
$picklistcount = 0 ;
$sql = "select $columnName from vtiger_ $columnName " ;
$numrow = $adb -> num_rows ( $adb -> pquery ( $sql , array ()));
for ( $x = 0 ; $x < $numrow ; $x ++ )
{
$picklistvalues = $adb -> query_result ( $adb -> pquery ( $sql , array ()), $x , $columnName );
if ( $pickArray [ $i ] == $picklistvalues )
{
$picklistcount ++ ;
}
}
if ( $picklistcount == 0 )
{
$picklist_valueid = getUniquePicklistID ();
$query = "insert into vtiger_" . $columnName . " values(?,?,?,?)" ;
$adb -> pquery ( $query , array ( $adb -> getUniqueID ( "vtiger_" . $columnName ), $pickArray [ $i ], 1 , $picklist_valueid ));
/*$sql="update vtiger_picklistvalues_seq set id = ?";
$adb->pquery($sql, array(++$picklist_valueid));*/
}
$sql = "select picklist_valueid from vtiger_ $columnName where $columnName =?" ;
$pick_valueid = $adb -> query_result ( $adb -> pquery ( $sql , array ( $pickArray [ $i ])), 0 , 'picklist_valueid' );
$sql = "insert into vtiger_role2picklist select roleid, $pick_valueid , $picklistid , $i from vtiger_role" ;
$adb -> pquery ( $sql , array ());
}
}
}
//Inserting into LeadMapping table - Jaguar
if ( $fldmodule == 'Leads' && $_REQUEST [ 'fieldid' ] == '' )
{
$sql_def = "insert into vtiger_convertleadmapping (leadfid) values(?)" ;
$adb -> pquery ( $sql_def , array ( $custfld_fieldid ));
}
}
}
}
}
function show_move_hiddenfields ( $submode ){
global $adb , $log ;
$selected_fields = $_REQUEST [ 'selected' ];
$selected = trim ( $selected_fields , ":" );
$sel_arr = array ();
$sel_arr = explode ( ":" , $selected );
$sequence = $adb -> pquery ( 'select max(sequence) as maxseq from vtiger_field where block = ? and tabid = ?' , array ( $_REQUEST [ 'blockid' ], $_REQUEST [ 'tabid' ]));
$max = $adb -> query_result ( $sequence , 0 , 'maxseq' );
$max_seq = $max + 1 ;
if ( $submode == 'showhiddenfields' ){
for ( $i = 0 ; $i < count ( $sel_arr ); $i ++ ){
$res = $adb -> pquery ( 'update vtiger_field set presence = 2,sequence = ? where block = ? and fieldid = ?' , array ( $max_seq , $_REQUEST [ 'blockid' ], $sel_arr [ $i ]));
$max_seq ++ ;
}
}
else {
for ( $i = 0 ; $i < count ( $sel_arr ); $i ++ ){
$res = $adb -> pquery ( 'update vtiger_field set sequence = ? , block = ? where fieldid = ?' , array ( $max_seq , $_REQUEST [ 'blockid' ], $sel_arr [ $i ]));
$max_seq ++ ;
}
}
}
function getRelatedListInfo ( $module ){
global $adb ;
$tabid = getTabid ( $module );
$related_query = 'select * from vtiger_relatedlists ' .
'inner join vtiger_tab on vtiger_relatedlists.related_tabid = vtiger_tab.tabid and vtiger_tab.presence = 0 where vtiger_relatedlists.tabid = ? order by sequence' ;
$relinfo = $adb -> pquery ( $related_query , array ( $tabid ));
$noofrows = $adb -> num_rows ( $relinfo );
for ( $i = 0 ; $i < $noofrows ; $i ++ ){
$res [ $i ][ 'name' ] = $adb -> query_result ( $relinfo , $i , 'name' );
$res [ $i ][ 'sequence' ] = $adb -> query_result ( $relinfo , $i , 'sequence' );
$label = $adb -> query_result ( $relinfo , $i , 'label' );
$relatedModule = getTabname ( $adb -> query_result ( $relinfo , $i , 'related_tabid' ));
$res [ $i ][ 'label' ] = getTranslatedString ( $label , $relatedModule );
$res [ $i ][ 'presence' ] = $adb -> query_result ( $relinfo , $i , 'presence' );
$res [ $i ][ 'tabid' ] = $tabid ;
$res [ $i ][ 'id' ] = $adb -> query_result ( $relinfo , $i , 'relation_id' );
}
return $res ;
}
function changeRelatedListOrder (){
global $adb , $log ;
$tabid = $_REQUEST [ 'tabid' ];
$what_todo = $_REQUEST [ 'what_to_do' ];
if ( ! empty ( $_REQUEST [ 'what_to_do' ])){
if ( $_REQUEST [ 'what_to_do' ] == 'move_up' ){
$currentsequence = $_REQUEST [ 'sequence' ];
$previous_relation = $adb -> pquery ( 'select relation_id,sequence from vtiger_relatedlists where sequence < ? and tabid = ? order by sequence desc limit 0,1' , array ( $currentsequence , $tabid ));
$previous_sequence = $adb -> query_result ( $previous_relation , 0 , 'sequence' );
$previous_relationid = $adb -> query_result ( $previous_relation , 0 , 'relation_id' );
$adb -> pquery ( 'update vtiger_relatedlists set sequence = ? where relation_id = ? and tabid = ?' , array ( $previous_sequence , $_REQUEST [ 'id' ], $tabid ));
$adb -> pquery ( 'update vtiger_relatedlists set sequence = ? where tabid = ? and relation_id = ?' , array ( $currentsequence , $tabid , $previous_relationid ));
} elseif ( $_REQUEST [ 'what_to_do' ] == 'move_down' ){
$currentsequence = $_REQUEST [ 'sequence' ];
$next_relation = $adb -> pquery ( 'select relation_id,sequence from vtiger_relatedlists where sequence > ? and tabid = ? order by sequence limit 0,1' , array ( $currentsequence , $tabid ));
$next_sequence = $adb -> query_result ( $next_relation , 0 , 'sequence' );
$next_relationid = $adb -> query_result ( $next_relation , 0 , 'relation_id' );
$adb -> pquery ( 'update vtiger_relatedlists set sequence = ? where relation_id = ? and tabid = ?' , array ( $next_sequence , $_REQUEST [ 'id' ], $tabid ));
$adb -> pquery ( 'update vtiger_relatedlists set sequence = ? where tabid = ? and relation_id = ?' , array ( $currentsequence , $tabid , $next_relationid ));
}
}
}
?>