227 lines
8.8 KiB
PHP
227 lines
8.8 KiB
PHP
<?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/database/PearDatabase.php');
|
|
require_once('include/CustomFieldUtil.php');
|
|
|
|
global $mod_strings, $app_strings, $theme;
|
|
|
|
$smarty = new vtigerCRM_Smarty;
|
|
$smarty->assign("MOD", $mod_strings);
|
|
$smarty->assign("APP", $app_strings);
|
|
$smarty->assign("THEME", $theme);
|
|
$theme_path = "themes/" . $theme . "/";
|
|
$image_path = "themes/images/";
|
|
$smarty->assign("IMAGE_PATH", $image_path);
|
|
$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['fld_module'] != '')
|
|
$fld_module = vtlib_purify($_REQUEST['fld_module']);
|
|
elseif ($_REQUEST['formodule'] != '') {
|
|
$fld_module = vtlib_purify($_REQUEST['formodule']);
|
|
}
|
|
else
|
|
$fld_module = 'Leads';
|
|
$smarty->assign("MODULE", $fld_module);
|
|
if ($fld_module == 'Calendar')
|
|
$smarty->assign("CFENTRIES", getCFListEntries($fld_module));
|
|
else
|
|
$smarty->assign("CFENTRIES", getCFLeadMapping($fld_module));
|
|
if (isset($_REQUEST["duplicate"]) && $_REQUEST["duplicate"] == "yes") {
|
|
$error = getTranslatedString('ERR_CUSTOM_FIELD_WITH_NAME', 'Settings') . vtlib_purify($_REQUEST["fldlabel"]) . getTranslatedString('ERR_ALREADY_EXISTS', 'Settings') . ' ' . getTranslatedString('ERR_SPECIFY_DIFFERENT_LABEL', 'Settings');
|
|
$smarty->assign("DUPLICATE_ERROR", $error);
|
|
}
|
|
|
|
if ($_REQUEST['mode'] != '')
|
|
$mode = vtlib_purify($_REQUEST['mode']);
|
|
$smarty->assign("MODE", $mode);
|
|
|
|
if ($_REQUEST['ajax'] != 'true')
|
|
$smarty->display(vtlib_getModuleTemplate('Vtiger', 'CustomFieldList.tpl'));
|
|
else
|
|
$smarty->display(vtlib_getModuleTemplate('Vtiger', 'CustomFieldEntries.tpl'));
|
|
|
|
/**
|
|
* Function to get customfield entries
|
|
* @param string $module - Module name
|
|
* return array $cflist - customfield entries
|
|
*/
|
|
function getCFListEntries($module) {
|
|
global $adb, $app_strings, $theme, $smarty, $log;
|
|
$tabid = getTabid($module);
|
|
if ($module == 'Calendar') {
|
|
$tabid = array(9, 16);
|
|
}
|
|
$theme_path = "themes/" . $theme . "/";
|
|
$image_path = "themes/images/";
|
|
$dbQuery = "SELECT fieldid,columnname,fieldlabel,uitype,displaytype,block,vtiger_convertleadmapping.cfmid,tabid FROM vtiger_field LEFT JOIN vtiger_convertleadmapping
|
|
ON vtiger_convertleadmapping.leadfid = vtiger_field.fieldid WHERE tabid IN (" . generateQuestionMarks($tabid) . ")
|
|
AND vtiger_field.presence IN (0,2)
|
|
AND generatedtype = 2
|
|
ORDER BY sequence";
|
|
$result = $adb->pquery($dbQuery, array($tabid));
|
|
$row = $adb->fetch_array($result);
|
|
$count = 1;
|
|
$cflist = Array();
|
|
if ($row != '') {
|
|
do {
|
|
$cf_element = Array();
|
|
$cf_element['no'] = $count;
|
|
$cf_element['label'] = getTranslatedString($row["fieldlabel"], $module);
|
|
$fld_type_name = getCustomFieldTypeName($row["uitype"]);
|
|
$cf_element['type'] = $fld_type_name;
|
|
$cf_tab_id = $row["tabid"];
|
|
if ($module == 'Leads') {
|
|
$mapping_details = getListLeadMapping($row["cfmid"]);
|
|
$cf_element[] = $mapping_details['accountlabel'];
|
|
$cf_element[] = $mapping_details['contactlabel'];
|
|
$cf_element[] = $mapping_details['potentiallabel'];
|
|
}
|
|
if ($module == 'Calendar') {
|
|
if ($cf_tab_id == '9')
|
|
$cf_element['activitytype'] = getTranslatedString('Task', $module);
|
|
else
|
|
$cf_element['activitytype'] = getTranslatedString('Event', $module);
|
|
|
|
$cf_element['tool'] = ' <img style="cursor:pointer;" onClick="deleteCustomField(' . $row["fieldid"] . ',\'' . $module . '\', \'' . $row["columnname"] . '\', \'' . $row["uitype"] . '\')" src="' . vtiger_imageurl('delete.gif', $theme) . '" border="0" alt="' . $app_strings['LBL_DELETE_BUTTON_LABEL'] . '" title="' . $app_strings['LBL_DELETE_BUTTON_LABEL'] . '"/></a>';
|
|
}
|
|
$cflist[] = $cf_element;
|
|
$count++;
|
|
}while ($row = $adb->fetch_array($result));
|
|
}
|
|
return $cflist;
|
|
}
|
|
|
|
/**
|
|
* Function to get customfield entries for leads
|
|
* @param string $module - Module name
|
|
* return array $cflist - customfield entries
|
|
*/
|
|
function getCFLeadMapping($module) {
|
|
global $adb, $app_strings, $theme, $smarty, $log;
|
|
$tabid = getTabid($module);
|
|
$theme_path = "themes/" . $theme . "/";
|
|
$image_path = "themes/images/";
|
|
$dbQuery = "SELECT fieldid,columnname,fieldlabel,uitype,displaytype,block,vtiger_convertleadmapping.cfmid,vtiger_convertleadmapping.editable,tabid FROM vtiger_convertleadmapping LEFT JOIN vtiger_field
|
|
ON vtiger_field.fieldid=vtiger_convertleadmapping.leadfid
|
|
WHERE tabid IN (" . generateQuestionMarks($tabid) . ")
|
|
AND vtiger_field.presence IN (0,2)
|
|
AND generatedtype IN (1,2)
|
|
AND vtiger_field.fieldname NOT IN('assigned_user_id','createdtime','modifiedtime','lead_no','modifiedby','campaignrelstatus')
|
|
ORDER BY vtiger_field.fieldlabel";
|
|
$result = $adb->pquery($dbQuery, array($tabid));
|
|
$row = $adb->fetch_array($result);
|
|
$count = 1;
|
|
$cflist = Array();
|
|
if ($row != '') {
|
|
do {
|
|
$cf_element = Array();
|
|
$cf_element['map']['no'] = $count;
|
|
$cf_element['map']['label'] = getTranslatedString($row["fieldlabel"], $module);
|
|
$fld_type_name = getCustomFieldTypeName($row["uitype"]);
|
|
$cf_element['map']['type'] = $fld_type_name;
|
|
$cf_tab_id = $row["tabid"];
|
|
$cf_element['cfmid'] = $row["cfmid"];
|
|
$cf_element['editable']=$row["editable"];
|
|
if ($module == 'Leads') {
|
|
$mapping_details = getListLeadMapping($row["cfmid"]);
|
|
$cf_element['map'][] = $mapping_details['accountlabel'];
|
|
$cf_element['map'][] = $mapping_details['contactlabel'];
|
|
$cf_element['map'][] = $mapping_details['potentiallabel'];
|
|
}
|
|
$cflist[] = $cf_element;
|
|
$count++;
|
|
}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 =?";
|
|
$result2 = $adb->pquery($sql2, array($accountid));
|
|
$accountfield = $adb->query_result($result2, 0, 'fieldlabel');
|
|
$label['accountlabel'] = getTranslatedString($accountfield, 'Accounts');
|
|
|
|
$sql3 = "select fieldlabel from vtiger_field where fieldid =?";
|
|
$result3 = $adb->pquery($sql3, array($contactid));
|
|
$contactfield = $adb->query_result($result3, 0, 'fieldlabel');
|
|
$label['contactlabel'] = getTranslatedString($contactfield, 'Contacts');
|
|
$sql4 = "select fieldlabel from vtiger_field where fieldid =?";
|
|
$result4 = $adb->pquery($sql4, array($potentialid));
|
|
$potentialfield = $adb->query_result($result4, 0, 'fieldlabel');
|
|
$label['potentiallabel'] = getTranslatedString($potentialfield, 'Potentials');
|
|
}
|
|
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(10,16,15,8,29) AND vtiger_tab.presence != 1"; // 16 is still here as we do not want duplicates for Calendar - Both 9 and 16 point to Calendar itself
|
|
// END
|
|
$result = $adb->pquery($sql, array());
|
|
while ($moduleinfo = $adb->fetch_array($result)) {
|
|
$modulelist[$moduleinfo['name']] = $moduleinfo['name'];
|
|
}
|
|
return $modulelist;
|
|
}
|
|
|
|
?>
|