* SPDX-License-Identifier: AGPL-3.0-only ************************************/ require_once('include/database/PearDatabase.php'); require_once('include/ComboUtil.php'); //new require_once('include/utils/CommonUtils.php'); //new /** This function returns the detail view form vte_field and and its properties in array format. * Param $uitype - UI type of the vte_field * Param $fieldname - Form vte_field name * Param $fieldlabel - Form vte_field label name * Param $col_fields - array contains the vte_fieldname and values * Param $generatedtype - Field generated type (default is 1) * Param $tabid - vte_tab id to which the Field belongs to (default is "") * Return type is an array */ function getDetailViewOutputHtml($uitype, $fieldname, $fieldlabel, $col_fields,$generatedtype,$tabid='',$module='',$dynaform_info=array()) //crmv@96450 { global $log,$adb, $table_prefix; $log->debug("Entering getDetailViewOutputHtml(".$uitype.",". $fieldname.",". $fieldlabel.",". $col_fields.",".$generatedtype.",".$tabid.") method ..."); global $mod_strings, $app_strings; global $current_user; global $theme; $theme_path="themes/".$theme."/"; $image_path=$theme_path."images/"; $fieldlabel = from_html($fieldlabel); $custfld = ''; $value =''; $arr_data =Array(); $label_fld = Array(); $data_fld = Array(); $InventoryUtils = InventoryUtils::getInstance(); // crmv@42024 require('user_privileges/requireUserPrivileges.php'); // crmv@39110 require('user_privileges/sharing_privileges_'.$current_user->id.'.php'); //crmv@10666 if($generatedtype == 2 && $mod_strings[$fieldlabel] == ''){ $mod_strings[$fieldlabel] = $fieldlabel; } //crmv@10666e //crmv@sdk-18509 if(SDK::isUitype($uitype)) { $sdk_file = SDK::getUitypeFile('php','detail',$uitype); if ($sdk_file != '') { include($sdk_file); } } //crmv@sdk-18509 e // vtlib customization: New uitype to handle relation between modules elseif($uitype == '10'){ //crmv@90385 $fieldlabel = getTranslatedString($fieldlabel, $module); $fldmod_result = $adb->pquery('SELECT relmodule, status FROM '.$table_prefix.'_fieldmodulerel WHERE fieldid= (SELECT fieldid FROM '.$table_prefix.'_field, '.$table_prefix.'_tab WHERE '.$table_prefix.'_field.tabid='.$table_prefix.'_tab.tabid AND fieldname=? AND name=? and '.$table_prefix.'_field.presence in (0,2))', Array($fieldname, $module)); $entityTypes = Array(); $parent_id = $value; for($index = 0; $index < $adb->num_rows($fldmod_result); ++$index) { $entityTypes[] = $adb->query_result($fldmod_result, $index, 'relmodule'); } $parent_id = $col_fields[$fieldname]; if(!empty($parent_id)) { if (in_array('Users',$entityTypes)) { $resUserField = $adb->pquery("SELECT user_name, first_name, last_name FROM {$table_prefix}_users WHERE id = ?", array($parent_id)); if ($resUserField && $adb->num_rows($resUserField) > 0) { $parent_module = 'Users'; $displayValue = getUserFullName($userid, $resUserField); } } if (empty($displayValue)) { $parent_module = getSalesEntityType($parent_id); $displayValueArray = getEntityName($parent_module, $parent_id); if(!empty($displayValueArray)){ foreach($displayValueArray as $key=>$value){ $displayValue = $value; } } } $valueTitle=$parent_module; if($app_strings[$valueTitle]) $valueTitle = $app_strings[$valueTitle]; $label_fld=array($fieldlabel, "$displayValue"); //crmv@152802 // crmv@157124 } else { $moduleSpecificMessage = 'MODULE_NOT_SELECTED'; if($mod_strings[$moduleSpecificMessage] != ""){ $moduleSpecificMessage = $mod_strings[$moduleSpecificMessage]; } $label_fld=array($fieldlabel, ''); } //crmv@90385e } // END elseif($uitype == 99) { $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $col_fields[$fieldname]; if($fieldname == 'confirm_password') return null; }elseif($uitype == 116 || $uitype == 117) { $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = getCurrencyName($col_fields[$fieldname]); $pick_query="select * from ".$table_prefix."_currency_info where currency_status = 'Active' and deleted=0"; $pickListResult = $adb->pquery($pick_query, array()); $noofpickrows = $adb->num_rows($pickListResult); //Mikecrowe fix to correctly default for custom pick lists $options = array(); $found = false; for($j = 0; $j < $noofpickrows; $j++) { $pickListValue=$adb->query_result($pickListResult,$j,'currency_name'); $currency_id=$adb->query_result($pickListResult,$j,'id'); if($col_fields[$fieldname] == $currency_id) { $chk_val = "selected"; $found = true; } else { $chk_val = ''; } $options[$currency_id] = array($pickListValue=>$chk_val ); } $label_fld ["options"] = $options; } elseif($uitype == 13 || $uitype == 104) { $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $col_fields[$fieldname]; } elseif($uitype == 15 || $uitype == 16) { $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $col_fields[$fieldname]; //crmv@96450 if (!empty($dynaform_info['picklistvalues'])) { $picklistvalues = explode("\n",$dynaform_info['picklistvalues']); if (!empty($picklistvalues)) { foreach($picklistvalues as $picklistvalue) { $picklistvalue = trim($picklistvalue); $values_arr[$picklistvalue] = $picklistvalue; } } } else { $roleid=$current_user->roleid; $values_arr = getAssignedPicklistValues($fieldname, $roleid, $adb,$module); } //crmv@96450e $value = $col_fields[$fieldname]; $value_decoded = decode_html($value); $pickcount = count($values_arr); if ($pickcount > 0){ $chk_selected = false; //crmv@65492 - 10 foreach ($values_arr as $pickListValue=>$translated_value){ //crmv@65492 - 10 if($value_decoded == trim($pickListValue)){ $chk_val = "selected"; $chk_selected = true; }else { $chk_val = ''; } //crmv@65492e - 10 $pickListValue = to_html($pickListValue); if(isset($_REQUEST['file']) && $_REQUEST['file'] == 'QuickCreate') $options[] = array(htmlentities($translated_value,ENT_QUOTES,$default_charset),$pickListValue,$chk_val ); else $options[] = array($translated_value,$pickListValue,$chk_val ); } //crmv@65492 - 10 if(!$chk_selected && !empty($value_decoded)){ $options[] = array($app_strings['LBL_NOT_ACCESSIBLE'],$value,'selected'); } //crmv@65492e - 10 } elseif($pickcount == 0 && !empty($value)) // crmv@167234 { $options[] = array("".$app_strings['LBL_NOT_ACCESSIBLE']."",$value,'selected'); } $label_fld ["options"] = $options; } //crmv@8982 elseif($uitype == 1015) { $label_fld[] = getTranslatedString($fieldlabel,$module); //crmv@481398 if ($col_fields[$fieldname] != ""){ $label_fld[] = Picklistmulti::getTranslatedPicklist($col_fields[$fieldname],$fieldname); } else $label_fld[] = ''; $picklistvalues = Picklistmulti::getTranslatedPicklist(false,$fieldname); if (is_array($picklistvalues)){ foreach ($picklistvalues as $picklistid=>$pickListValue){ if ($col_fields[$fieldname] == trim($picklistid)){ $chk_val = "selected"; $pickcount++; $found = true; } else $chk_val = ''; $pickListValue =to_html($pickListValue); $options[] = array($pickListValue,$picklistid,$chk_val ); } } $label_fld ["options"] = $options; } //crmv@8982e elseif($uitype == 33) { $value = $col_fields[$fieldname]; $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = str_ireplace(' |##| ',', ',$value); //crmv@96450 if (!empty($dynaform_info['picklistvalues'])) { $picklistvalues = explode("\n",$dynaform_info['picklistvalues']); if (!empty($picklistvalues)) { foreach($picklistvalues as $picklistvalue) { $picklistvalue = trim($picklistvalue); $values_arr[$picklistvalue] = $picklistvalue; } } } else { $roleid=$current_user->roleid; $values_arr = getAssignedPicklistValues($fieldname, $roleid, $adb,$module); } //crmv@96450e $value_decoded = decode_html($value); $valuearr = explode(' |##| ',$value); $valuearr_decoded = explode(' |##| ',$value_decoded); $pickcount = count($values_arr); if ($pickcount > 0){ foreach ($values_arr as $pickListValue=>$translated_value){ if(in_array(trim($pickListValue),$valuearr_decoded)) $chk_val = "selected"; else $chk_val = ''; $pickListValue = to_html($pickListValue); if(isset($_REQUEST['file']) && $_REQUEST['file'] == 'QuickCreate') $options[] = array(htmlentities($translated_value,ENT_QUOTES,$default_charset),$pickListValue,$chk_val ); else $options[] = array($translated_value,$pickListValue,$chk_val ); } if ($value != ''){ foreach (array_diff($valuearr_decoded,array_keys($values_arr)) as $value_not_accessible){ $options[] = array("".$app_strings['LBL_NOT_ACCESSIBLE']."",$value_not_accessible,'selected'); } } } elseif($value != '') { $options[] = array("".$app_strings['LBL_NOT_ACCESSIBLE']."",$value,'selected'); } $label_fld ["options"] = $options; } elseif($uitype == 17) { $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $col_fields[$fieldname]; } elseif($uitype == 19) { //crmv@2963m crmv@56409 if ($fieldname == 'description' && $module == 'Messages') { // translates only & to preserve < and > in the raw html // blame the query_result, which by default converts everything from html :( // this field is already supposed to be pure html in the database $col_fields[$fieldname] = str_replace('&', '&', $col_fields[$fieldname]); //crmv@2963me crmv@56409e } elseif($fieldname == 'notecontent' || ($fieldname == 'description' && $module == 'Timecards')){ //crmv@22860 $col_fields[$fieldname]= decode_html($col_fields[$fieldname]); //crmv@361584 if ($col_fields[$fieldname] != strip_tags($col_fields[$fieldname])){ $col_fields[$fieldname] = str_replace("\r",'',$col_fields[$fieldname]); $col_fields[$fieldname] = str_replace("\n",'',$col_fields[$fieldname]); } //crmv@361584e } else $col_fields[$fieldname]= str_replace("<br />","
",$col_fields[$fieldname]); $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $col_fields[$fieldname]; } elseif($uitype == 21) // Armando LC B'descriptionSpan -> Desc: removed $uitype == 19 and made an aditional elseif above { $col_fields[$fieldname]=nl2br($col_fields[$fieldname]); $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $col_fields[$fieldname]; } //crmv@101683 elseif($uitype == 52 || $uitype == 77 || $uitype == 54) { $label_fld[] = getTranslatedString($fieldlabel, $module); $id = $col_fields[$fieldname]; if ($uitype == 54) { $name = getGroupName($id); $name = $name[0]; $link = ''.$name.''; $assigned_user_id = $id; } else { global $showfullusername; $name = getUserName($id,$showfullusername); $link = ''.$name.''; $assigned_user_id = $current_user->id; } if(is_admin($current_user)) { $label_fld[] = $link; } else { $label_fld[] = $name; } if($is_admin==false && $profileGlobalPermission[2] == 1 && ($defaultOrgSharingPermission[getTabid($module)] == 3 or $defaultOrgSharingPermission[getTabid($module)] == 0)) { if ($uitype == 54) $combo = get_select_options_array(get_group_array(FALSE, "Active", $assigned_user_id,'private'), $assigned_user_id); else $combo = get_select_options_array(get_user_array(FALSE, "Active", $assigned_user_id,'private'), $assigned_user_id); } else { if ($uitype == 54) $combo = get_select_options_array(get_group_array(FALSE, "Active", $id), $assigned_user_id); else $combo = get_select_options_array(get_user_array(FALSE, "Active", $id), $assigned_user_id); } $label_fld ["options"] = $combo; } //crmv@101683e // crmv@112606 elseif($uitype == 53) { $owner_id = $col_fields[$fieldname]; $user = 'no'; $result = $adb->pquery("SELECT count(*) as count from ".$table_prefix."_users where id = ?",array($owner_id)); if($adb->query_result($result,0,'count') > 0) { $user = 'yes'; } global $showfullusername; $owner_name = getUserName($owner_id,$showfullusername); //crmv@93486 if(empty($owner_name)){ $tmp = getGroupName($owner_id); $owner_name = $tmp[0]; } //crmv@93486e $label_fld[] =getTranslatedString($fieldlabel, $module); $label_fld[] =$owner_name; if(is_admin($current_user)) { $label_fld["secid"][] = $owner_id; if($user == 'no') { $label_fld["link"][] = "index.php?module=Settings&action=GroupDetailView&groupId=".$owner_id; } else { $label_fld["link"][] = "index.php?module=Users&action=DetailView&record=".$owner_id; } //$label_fld["secid"][] = $groupid; //$label_fld["link"][] = "index.php?module=Settings&action=GroupDetailView&groupId=".$groupid; } //$value = $user_id; if($owner_id != '') { if($user == 'yes') { $label_fld ["options"][] = 'User'; $assigned_user_id = $owner_id; $user_checked = "checked"; $team_checked = ''; $user_style='display:block'; $team_style='display:none'; } else { //$record = $col_fields["record_id"]; //$module = $col_fields["record_module"]; $label_fld ["options"][] = 'Group'; $assigned_group_id = $owner_id; $user_checked = ''; $team_checked = 'checked'; $user_style='display:none'; $team_style='display:block'; } } else { $label_fld ["options"][] = 'User'; $assigned_user_id = $current_user->id; $user_checked = "checked"; $team_checked = ''; $user_style='display:block'; $team_style='display:none'; } if($fieldlabel == 'Assigned To' && $is_admin==false && $profileGlobalPermission[2] == 1 && ($defaultOrgSharingPermission[getTabid($module)] == 3 or $defaultOrgSharingPermission[getTabid($module)] == 0)) { $users_combo = get_select_options_array(get_user_array(FALSE, "Active", $assigned_user_id,'private'), $assigned_user_id); } else { $users_combo = get_select_options_array(get_user_array(FALSE, "Active", $assigned_user_id), $assigned_user_id); } if($fieldlabel == 'Assigned To' && $is_admin==false && $profileGlobalPermission[2] == 1 && ($defaultOrgSharingPermission[getTabid($module)] == 3 or $defaultOrgSharingPermission[getTabid($module)] == 0)) { $groups_combo = get_select_options_array(get_group_array(FALSE, "Active", $assigned_group_id,'private'), $assigned_group_id); //crmv@31171 } else { $groups_combo = get_select_options_array(get_group_array(FALSE, "Active", $assigned_group_id), $assigned_group_id); //crmv@31171 } $label_fld ["options"][] = $users_combo; $label_fld ["options"][] = $groups_combo; } // crmv@112606e elseif($uitype == 55 || $uitype == 255) { // crmv@127567 $label_fld[] =getTranslatedString($fieldlabel, $module); $value = $col_fields[$fieldname]; // crmv@127567e $value = $col_fields[$fieldname]; if($uitype==255) { global $currentModule; $fieldpermission = getFieldVisibilityPermission($currentModule, $current_user->id,'firstname'); } if($uitype == 255 && $fieldpermission == 0 && $fieldpermission != '') { $fieldvalue[] = ''; } else { $roleid=$current_user->roleid; $subrole = getRoleSubordinates($roleid); if(count($subrole)> 0) { $roleids = implode("','",$subrole); $roleids = $roleids."','".$roleid; } else { $roleids = $roleid; } if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0) { $pick_query="select salutationtype from ".$table_prefix."_salutationtype order by salutationtype"; $params = array(); } else { $pick_query="select * from ".$table_prefix."_salutationtype left join ".$table_prefix."_role2picklist on ".$table_prefix."_role2picklist.picklistvalueid=".$table_prefix."_salutationtype.picklist_valueid where picklistid in (select picklistid from ".$table_prefix."_picklist where name='salutationtype') and roleid=? order by salutationtype"; $params = array($current_user->roleid); } $pickListResult = $adb->pquery($pick_query, $params); $noofpickrows = $adb->num_rows($pickListResult); $sal_value = $col_fields["salutationtype"]; $salcount =0; for($j = 0; $j < $noofpickrows; $j++) { $pickListValue=$adb->query_result($pickListResult,$j,"salutationtype"); if($sal_value == $pickListValue) { $chk_val = "selected"; $salcount++; } else { $chk_val = ''; } } if($salcount == 0 && $sal_value != '') { $notacc = $app_strings['LBL_NOT_ACCESSIBLE']; } $sal_value = $col_fields["salutationtype"]; if($sal_value == '--None--') { $sal_value=''; } $label_fld["salut"] = getTranslatedString($sal_value); $label_fld["notaccess"] = $notacc; } $label_fld[] = $value; } elseif($uitype == 56) { $label_fld[] =getTranslatedString($fieldlabel, $module); $value = $col_fields[$fieldname]; if($value == 1) { //Since "yes" is not been translated it is given as app strings here.. $display_val = $app_strings['yes']; } else { $display_val = $app_strings['no']; } $label_fld[] = $display_val; } elseif($uitype == 61) { global $adb; $label_fld[] =getTranslatedString($fieldlabel, $module); if($tabid ==10 || getTabname($tabid) == 'Fax') //Emails and Fax { $attach_result = $adb->pquery("select * from ".$table_prefix."_seattachmentsrel where crmid = ?", array($col_fields['record_id'])); for($ii=0;$ii < $adb->num_rows($attach_result);$ii++) { $attachmentid = $adb->query_result($attach_result,$ii,'attachmentsid'); if($attachmentid != '') { $attachquery = "select * from ".$table_prefix."_attachments where attachmentsid=?"; $attachmentsname = $adb->query_result($adb->pquery($attachquery, array($attachmentid)),0,'name'); //crmv@24153 $res_attach = $adb->pquery($attachquery, array($attachmentid)); $attachmentstype = $adb->query_result($res_attach,0,'type'); $attachmentslink = $adb->query_result($res_attach,0,'path'); if ($attachmentstype == 'link') { $custfldval = ''.$attachmentsname.''; } else { if($attachmentsname != '') $custfldval = ''.$attachmentsname.''; else $custfldval = ''; } //crmv@24153e } $label_fld['options'][] = $custfldval; } } else { $attachmentid=$adb->query_result($adb->pquery("select * from ".$table_prefix."_seattachmentsrel where crmid = ?", array($col_fields['record_id'])),0,'attachmentsid'); if($col_fields[$fieldname] == '' && $attachmentid != '') { $attachquery = "select * from ".$table_prefix."_attachments where attachmentsid=?"; $col_fields[$fieldname] = $adb->query_result($adb->pquery($attachquery, array($attachmentid)),0,'name'); } //This is added to strip the crmid and _ from the file name and show the original filename //$org_filename = ltrim($col_fields[$fieldname],$col_fields['record_id'].'_'); /*Above line is not required as the filename in the database is stored as it is and doesn't have crmid attached to it. This was the cause for the issue reported in ticket #4645 */ $org_filename = $col_fields[$fieldname]; // For Backward Compatibility version < 5.0.4 $filename_pos = strpos($org_filename, $col_fields['record_id'].'_'); if ($filename_pos === 0) { $start_idx = $filename_pos+strlen($col_fields['record_id'].'_'); $org_filename = substr($org_filename, $start_idx); } if($org_filename != '') { if($col_fields['filelocationtype'] == 'E' ){ if($col_fields['filestatus'] == 1 ){ $custfldval = ''.$col_fields[$fieldname].''; } else{ $custfldval = $col_fields[$fieldname]; } }elseif($col_fields['filelocationtype'] == 'I') { if($col_fields['filestatus'] == 1){ $custfldval = ''.$col_fields[$fieldname].''; } else{ $custfldval = $col_fields[$fieldname]; } } else $custfldval = ''; } $label_fld[] =$custfldval; } } elseif($uitype==28){ $label_fld[] =getTranslatedString($fieldlabel, $module); $attachmentid=$adb->query_result($adb->pquery("select * from ".$table_prefix."_seattachmentsrel where crmid = ?", array($col_fields['record_id'])),0,'attachmentsid'); if($col_fields[$fieldname] == '' && $attachmentid != '') { $attachquery = "select * from ".$table_prefix."_attachments where attachmentsid=?"; $col_fields[$fieldname] = $adb->query_result($adb->pquery($attachquery, array($attachmentid)),0,'name'); } $org_filename = $col_fields[$fieldname]; // For Backward Compatibility version < 5.0.4 $filename_pos = strpos($org_filename, $col_fields['record_id'].'_'); if ($filename_pos === 0) { $start_idx = $filename_pos+strlen($col_fields['record_id'].'_'); $org_filename = substr($org_filename, $start_idx); } if($org_filename != '') { if($col_fields['filelocationtype'] == 'E' ){ if($col_fields['filestatus'] == 1 ){//&& strlen($col_fields['filename']) > 7 ){ $custfldval = ''.$col_fields[$fieldname].''; } else{ $custfldval = $col_fields[$fieldname]; } }elseif($col_fields['filelocationtype'] == 'I' || $col_fields['filelocationtype'] == 'B') { // crmv@95157 $col_fields[$fieldname] = html_entity_decode($col_fields[$fieldname],ENT_QUOTES,$default_charset); //crmv@131416 if($col_fields['filestatus'] == 1){ $custfldval = ''.$col_fields[$fieldname].''; } else{ $custfldval = $col_fields[$fieldname]; } } else $custfldval = ''; } $label_fld[] =$custfldval; } elseif($uitype == 69) { $label_fld[] =getTranslatedString($fieldlabel, $module); if($tabid==14) { $images=array(); $query = 'select productname, '.$table_prefix.'_attachments.path, '.$table_prefix.'_attachments.attachmentsid, '.$table_prefix.'_attachments.name,'.$table_prefix.'_crmentity.setype from '.$table_prefix.'_products left join '.$table_prefix.'_seattachmentsrel on '.$table_prefix.'_seattachmentsrel.crmid='.$table_prefix.'_products.productid inner join '.$table_prefix.'_attachments on '.$table_prefix.'_attachments.attachmentsid='.$table_prefix.'_seattachmentsrel.attachmentsid inner join '.$table_prefix.'_crmentity on '.$table_prefix.'_crmentity.crmid = '.$table_prefix.'_attachments.attachmentsid where '.$table_prefix.'_crmentity.setype=? and productid=?'; $result_image = $adb->pquery($query, array("Products Image",$col_fields['record_id'])); $image_array = array(); // crmv@167234 for($image_iter=0;$image_iter < $adb->num_rows($result_image);$image_iter++) { $image_id_array[] = $adb->query_result($result_image,$image_iter,'attachmentsid'); //decode_html - added to handle UTF-8 characters in file names //urlencode - added to handle special characters like #, %, etc., $image_array[] = urlencode(decode_html($adb->query_result($result_image,$image_iter,'name'))); $image_orgname_array[] = decode_html($adb->query_result($result_image,$image_iter,'name')); $imagepath_array[] = $adb->query_result($result_image,$image_iter,'path'); } if(count($image_array)>1) { if(count($image_array) < 4) $sides=count($image_array)*2; else $sides=8; $image_lists = ''; $label_fld[] =$image_lists; }elseif(count($image_array)==1) { list($pro_image_width, $pro_image_height) = getimagesize($imagepath_array[0].$image_id_array[0]."_".$image_orgname_array[0]); if($pro_image_width > 450 || $pro_image_height > 300) $label_fld[] =''; else $label_fld[] =''; }else { $label_fld[] =''; } } if($tabid==4) { //$imgpath = getModuleFileStoragePath('Contacts').$col_fields[$fieldname]; $sql = "select ".$table_prefix."_attachments.*,".$table_prefix."_crmentity.setype from ".$table_prefix."_attachments inner join ".$table_prefix."_seattachmentsrel on ".$table_prefix."_seattachmentsrel.attachmentsid = ".$table_prefix."_attachments.attachmentsid inner join ".$table_prefix."_crmentity on ".$table_prefix."_crmentity.crmid = ".$table_prefix."_attachments.attachmentsid where ".$table_prefix."_crmentity.setype='Contacts Image' and ".$table_prefix."_seattachmentsrel.crmid=?"; $image_res = $adb->pquery($sql, array($col_fields['record_id'])); $image_id = $adb->query_result($image_res,0,'attachmentsid'); $image_path = $adb->query_result($image_res,0,'path'); //decode_html - added to handle UTF-8 characters in file names //urlencode - added to handle special characters like #, %, etc., $image_name = urlencode(decode_html($adb->query_result($image_res,0,'name'))); $imgpath = $image_path.$image_id."_".$image_name; if($image_name != '') $label_fld[] =''.$mod_strings['Contact Image'].''; else $label_fld[] = ''; } } elseif($uitype == 62) { $value = $col_fields[$fieldname]; if($value != '') { $parent_module = getSalesEntityType($value); if($parent_module == "Leads") { $label_fld[] =$app_strings['LBL_LEAD_NAME']; $lead_name = getLeadName($value); $label_fld[] =''.$lead_name.''; } elseif($parent_module == "Accounts") { $label_fld[] = $app_strings['LBL_ACCOUNT_NAME']; $sql = "select * from ".$table_prefix."_account where accountid=?"; $result = $adb->pquery($sql, array($value)); $account_name = $adb->query_result($result,0,"accountname"); $label_fld[] =''.$account_name.''; } elseif($parent_module == "Potentials") { $label_fld[] =$app_strings['LBL_POTENTIAL_NAME']; $sql = "select * from ".$table_prefix."_potential where potentialid=?"; $result = $adb->pquery($sql, array($value)); $potentialname = $adb->query_result($result,0,"potentialname"); $label_fld[] =''.$potentialname.''; } elseif($parent_module == "Products") { $label_fld[] =$app_strings['LBL_PRODUCT_NAME']; $sql = "select * from ".$table_prefix."_products where productid=?"; $result = $adb->pquery($sql, array($value)); $productname= $adb->query_result($result,0,"productname"); $label_fld[] =''.$productname.''; } elseif($parent_module == "PurchaseOrder") { $label_fld[] =$app_strings['LBL_PORDER_NAME']; $sql = "select * from ".$table_prefix."_purchaseorder where purchaseorderid=?"; $result = $adb->pquery($sql, array($value)); $pordername= $adb->query_result($result,0,"subject"); $label_fld[] = ''.$pordername.''; } elseif($parent_module == "SalesOrder") { $label_fld[] = $app_strings['LBL_SORDER_NAME']; $sql = "select * from ".$table_prefix."_salesorder where salesorderid=?"; $result = $adb->pquery($sql, array($value)); $sordername= $adb->query_result($result,0,"subject"); $label_fld[] = ''.$sordername.''; } elseif($parent_module == "Invoice") { $label_fld[] = $app_strings['LBL_INVOICE_NAME']; $sql = "select * from ".$table_prefix."_invoice where invoiceid=?"; $result = $adb->pquery($sql, array($value)); $invoicename= $adb->query_result($result,0,"subject"); $label_fld[] =''.$invoicename.''; } elseif($parent_module == "Quotes") { $label_fld[] = $app_strings['LBL_QUOTES_NAME']; $sql = "select * from ".$table_prefix."_quotes where quoteid=?"; $result = $adb->pquery($sql, array($value)); $quotename= $adb->query_result($result,0,"subject"); $label_fld[] =''.$quotename.''; } elseif($parent_module == "HelpDesk") { $label_fld[] = $app_strings['LBL_HELPDESK_NAME']; $sql = "select * from ".$table_prefix."_troubletickets where ticketid=?"; $result = $adb->pquery($sql, array($value)); $title= $adb->query_result($result,0,"title"); $label_fld[] =''.$title.''; } } else { $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $value; } } elseif($uitype == 105)//Added for user image { $label_fld[] =getTranslatedString($fieldlabel, $module); //$imgpath = getModuleFileStoragePath('Contacts').$col_fields[$fieldname]; $sql = "select ".$table_prefix."_attachments.* from ".$table_prefix."_attachments left join ".$table_prefix."_salesmanattachmentsrel on ".$table_prefix."_salesmanattachmentsrel.attachmentsid = ".$table_prefix."_attachments.attachmentsid where ".$table_prefix."_salesmanattachmentsrel.smid=?"; $image_res = $adb->pquery($sql, array($col_fields['record_id'])); $image_id = $adb->query_result($image_res,0,'attachmentsid'); $image_path = $adb->query_result($image_res,0,'path'); $image_name = $adb->query_result($image_res,0,'name'); $imgpath = $image_path.$image_id."_".$image_name; if($image_name != '') { //Added the following check for the image to retain its in original size. //crmv@29079 $user_name = getUserFullName($col_fields['record_id']); $label_fld[] =''.$user_name.''; //crmv@29079e } else { $label_fld[] = ''; } } elseif($uitype == 67) { $value = $col_fields[$fieldname]; if($value != '') { $parent_module = getSalesEntityType($value); if($parent_module == "Leads") { $label_fld[] = $app_strings['LBL_LEAD_NAME']; $lead_name = getLeadName($value); $label_fld[] = ''.$lead_name.''; } elseif($parent_module == "Contacts") { $label_fld[] = $app_strings['LBL_CONTACT_NAME']; $contact_name = getContactName($value); $label_fld[] = ''.$contact_name.''; } } else { $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $value; } } //added by raju/rdhital for better emails elseif($uitype == 357) { //crmv@fix crmid $value = intval($col_fields[$fieldname]); //crmv@fix crmid e if($value != '') { $parent_name=''; $parent_id=''; $myemailid= $_REQUEST['record']; $mysql = "select crmid from ".$table_prefix."_seactivityrel where activityid=?"; $myresult = $adb->pquery($mysql, array($myemailid)); $mycount=$adb->num_rows($myresult); if ($mycount>1){ $label_fld[] = $app_strings['LBL_RELATED_TO']; $label_fld[] =$app_strings['LBL_MULTIPLE']; } else { $parent_module = getSalesEntityType($value); if($parent_module == "Leads") { $label_fld[] = $app_strings['LBL_LEAD_NAME']; $lead_name = getLeadName($value); $label_fld[] = ''.$lead_name.''; } elseif($parent_module == "Contacts") { $label_fld[] = $app_strings['LBL_CONTACT_NAME']; $contact_name = getContactName($value); $label_fld[] = ''.$contact_name.''; } elseif($parent_module == "Accounts") { $label_fld[] = $app_strings['LBL_ACCOUNT_NAME']; $sql = "select * from ".$table_prefix."_account where accountid=?"; $result = $adb->pquery($sql, array($value)); $accountname = $adb->query_result($result,0,"accountname"); $label_fld[] = ''.$accountname.''; } elseif($parent_module == "Vendors") { $label_fld[] = $app_strings['LBL_VENDOR_NAME']; $sql = "select * from ".$table_prefix."_vendor where vendorid=?"; $result = $adb->pquery($sql, array($value)); $vendorname = $adb->query_result($result,0,"vendorname"); $label_fld[] = ''.$vendorname.''; } } } else { $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $value; } }//Code added by raju for better email ends elseif($uitype==63) { $label_fld[] =getTranslatedString($fieldlabel, $module); $label_fld[] = $col_fields[$fieldname].'h  '.$col_fields['duration_minutes'].'m'; } elseif($uitype == 6) { $label_fld[] =getTranslatedString($fieldlabel, $module); if($col_fields[$fieldname]=='0') $col_fields[$fieldname]=''; if($col_fields['time_start']!='') { $start_time = $col_fields['time_start']; } if($col_fields[$fieldname] == '0000-00-00' || $col_fields[$fieldname] === null) { $displ_date = ''; } else { $displ_date = getDisplayDate(substr($col_fields[$fieldname],0,10)); } $label_fld[] = $displ_date.' '.$start_time; } //crmv@18338 elseif($uitype == 5 || $uitype == 23 || $uitype == 70 || $uitype == 1021) //crmv@18338 end { $label_fld[] =getTranslatedString($fieldlabel, $module); $cur_date_val = $col_fields[$fieldname]; if($col_fields['time_end']!='' && ($tabid == 9 || $tabid == 16) && $uitype == 23) { $end_time = $col_fields['time_end']; } if($cur_date_val == '0000-00-00' || $cur_date_val === null) { $display_val = ''; } else { //ds@30 if($cur_date_val == '') { $display_val = ''; //crmv@2963m } elseif ($module == 'Messages' && $fieldname == 'mdate') { $focus = CRMEntity::getInstance($module); $display_val = $focus->getFullDate($cur_date_val); //crmv@2963me } else { if ($uitype == 5 || $uitype == 23 ) $cur_date_val = substr($cur_date_val,0,10); $display_val = getDisplayDate($cur_date_val); } //ds@30e } //crmv@12035 $field_val = array(); if ($display_val != '') $field_val[] = $display_val; if ($end_time != '') $field_val[] = $end_time; $field_val = implode(' ',$field_val); //crmv@12035e //crmv@7214 if($fieldname == "expiry_date" && ($tabid == 13 || $tabid == 14)) // 13=HelpDesk, 14=Products { $expiry_date = $col_fields['expiry_date']; if ($tabid == 13){ // HelpDesk $product_id = $col_fields["product_id"]; if($product_id != '') { $sql = "select expiry_date from ".$table_prefix."_products where productid=?"; $result = $adb->pquery($sql, array($product_id)); $expiry_date = $adb->query_result($result,0,"expiry_date"); } } $today = date("Y-m-d"); if (trim($expiry_date) == ''){ } elseif ( $expiry_date >= $today){ $secid = 'ok'; $expiry_date = getDisplayDate(date("Y-m-d",strtotime($expiry_date))); //crmv@35579 $field_val = $expiry_date; } elseif ( $expiry_date < $today){ $expiry_date = getDisplayDate(date("Y-m-d",strtotime($expiry_date))); //crmv@35579 $field_val = $expiry_date; $secid = 'ko'; } } //crmv@7214e $label_fld[] = $field_val; $label_fld['secid'] = $secid; } elseif($uitype == 71 || $uitype == 72) { $label_fld[] = getTranslatedString($fieldlabel, $module); // crmv@92112 if($fieldname == 'unit_price') { $rate_symbol=getCurrencySymbolandCRate($InventoryUtils->getProductBaseCurrency($col_fields['record_id'], $module)); //crmv@42024 } else { $rate_symbol=getCurrencySymbolandCRate($user_info['currency_id']); } if ($col_fields[$fieldname] !== '' && $col_fields[$fieldname] !== null) { if($fieldname == 'unit_price') { $label_fld[] = formatUserNumber(floatval($col_fields[$fieldname])); //crmv@92824 } else { $rate = $rate_symbol['rate']; $value = convertFromMasterCurrency($col_fields[$fieldname],$rate); //crmv@92519 $label_fld[] = formatUserNumber(floatval($value)); // crmv@83877 } } else { $label_fld[] = ''; } // crmv@92112e $currency = $rate_symbol['symbol']; $label_fld["cursymb"] = $currency; // crmv@83877 crmv@92112 } elseif($uitype == 7 || $uitype == 9) { $label_fld[] = getTranslatedString($fieldlabel, $module); if ($col_fields[$fieldname] !== '' && $col_fields[$fieldname] !== null) { $label_fld[] = formatUserNumber(floatval($col_fields[$fieldname]), true); } else { $label_fld[] = ''; } // crmv@83877e crmv@92112e } elseif($uitype == 79) { $label_fld[] =getTranslatedString($fieldlabel, $module); $purchaseorder_id = $col_fields[$fieldname]; if($purchaseorder_id != '') { $purchaseorder_name = getPoName($purchaseorder_id); } $label_fld[] = $purchaseorder_name; $label_fld["secid"] = $purchaseorder_id; $label_fld["link"] = "index.php?module=PurchaseOrder&action=DetailView&record=".$purchaseorder_id; } elseif($uitype == 30) { $rem_days = 0; $rem_hrs = 0; $rem_min = 0; $reminder_str =""; $rem_days = floor($col_fields[$fieldname]/(24*60)); $rem_hrs = floor(($col_fields[$fieldname]-$rem_days*24*60)/60); $rem_min = ($col_fields[$fieldname]-$rem_days*24*60)%60; $label_fld[] =getTranslatedString($fieldlabel, $module); if($col_fields[$fieldname]) { $reminder_str= $rem_days.' '.$mod_strings['LBL_DAYS'].' '.$rem_hrs.' '.$mod_strings['LBL_HOURS'].' '.$rem_min.' '.$mod_strings['LBL_MINUTES'].'  '.$mod_strings['LBL_BEFORE_EVENT']; } $label_fld[] = ' '.$reminder_str; }elseif($uitype == 98) { $label_fld[] =getTranslatedString($fieldlabel, $module); if(is_admin($current_user)) $label_fld[] = ''.getRoleName($col_fields[$fieldname]).''; else $label_fld[] = getRoleName($col_fields[$fieldname]); }elseif($uitype == 85) //Added for Skype by Minnie { $label_fld[] =getTranslatedString($fieldlabel, $module); $label_fld[]= $col_fields[$fieldname]; } //vtc elseif($uitype == 26){ $label_fld[] =getTranslatedString($fieldlabel, $module); // crmv@30967 $query = "select foldername from ".$table_prefix."_crmentityfolder where tabid = ? and folderid = ?"; $result = $adb->pquery($query, array(getTabId($module), $col_fields[$fieldname])); // crmv@30967e $folder_name = $adb->query_result($result,0,"foldername"); $label_fld[] = $folder_name; } elseif($uitype == 27){ // crmv@95157 if($col_fields[$fieldname] == 'I' || $col_fields[$fieldname] == 'B'){ $label_fld[]=getTranslatedString($fieldlabel); $label_fld[]= $mod_strings['LBL_INTERNAL']; } elseif($col_fields[$fieldname] == 'E') { $label_fld[]=getTranslatedString($fieldlabel); $label_fld[]= $mod_strings['LBL_EXTERNAL']; } // crmv@95157e } //crmv@16265 crmv@43764 elseif($uitype == 199){ (!empty($col_fields[$fieldname])) ? $fakeValue = '********' : $fakeValue = ''; $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $fakeValue; //$label_fld['options'] = $col_fields[$fieldname]; // real value } //crmv@16265e crmv@43764e //crmv@18338 elseif($uitype == 1020){ $temp_val = $col_fields[$fieldname]; $label_fld[] = getTranslatedString($fieldlabel, $module); $label_fld[] = $temp_val; //crmv@46872 @TODO:optimize sla config if ($fieldname == 'sla_time'){ $sla_obj = CRMEntity::getInstance('SLA'); $sla_config_global = $sla_obj->get_config(); if ((count($sla_config_global)>0 && in_array($module,array_keys($sla_config_global)))){ switch ($sla_config_global[$module]['time_measure']){ case 'minutes': $temp_val = $temp_val*60; break; case 'hours': $temp_val = $temp_val*3600; break; case 'days': $temp_val = $temp_val*86400; break; } } } //crmv@46872 e $value=time_duration(abs($temp_val)); if (strpos($fieldname,"remaining")!==false || strpos($fieldname,"_out_")!==false){ if (strpos($fieldname,"remaining")!==false){ if ($temp_val<=0) $color = "red"; else $color = "green"; } if (strpos($fieldname,"_out_")!==false){ if ($temp_val>0) $color = "red"; else $color = "green"; } $value = "$value"; } $label_fld['options'] = $value; } //crmv@18338 end else{ $label_fld[] =getTranslatedString($fieldlabel, $module); // crmv@59470 - show the zero value in generic fields /*if ($col_fields[$fieldname]=='0' && $fieldname != 'filedownloadcount' && $fieldname != 'filestatus' && $fieldname != 'filesize') { $col_fields[$fieldname]=''; }*/ // crmv@59470e if ($uitype == 1 && ($fieldname=='expectedrevenue' || $fieldname=='budgetcost' || $fieldname=='actualcost' || $fieldname=='expectedroi' || $fieldname=='actualroi' )) { $rate_symbol=getCurrencySymbolandCRate($user_info['currency_id']); $label_fld[] = convertFromDollar($col_fields[$fieldname],$rate_symbol['rate']); } else { //code for Documents module :start if($tabid == 8) { $downloadtype = $col_fields['filelocationtype']; if($fieldname == 'filename') { if($downloadtype == 'I' || $downloadtype == 'B') // crmv@95157 { //$file_value = $mod_strings['LBL_INTERNAL']; $fld_value = $col_fields['filename']; $ext_pos = strrpos($fld_value, "."); $ext =substr($fld_value, $ext_pos + 1); $ext = strtolower($ext); if($ext == 'bin' || $ext == 'exe' || $ext == 'rpm') $fileicon=""; elseif($ext == 'jpg' || $ext == 'gif' || $ext == 'bmp') $fileicon=""; elseif($ext == 'txt' || $ext == 'doc' || $ext == 'xls') $fileicon=""; elseif($ext == 'zip' || $ext == 'gz' || $ext == 'rar') $fileicon=""; else $fileicon=""; } else { $fld_value = $col_fields['filename']; $fileicon = "".$mod_strings["; } $col_fields[$fieldname] = $fileicon.$fld_value; } if($fieldname == 'filesize') { if($col_fields['filelocationtype'] == 'I' || $col_fields['filelocationtype'] == 'B') // crmv@95157z { $filesize = $col_fields[$fieldname]; if($filesize < 1024) $col_fields[$fieldname]=$filesize.' B'; elseif($filesize > 1024 && $filesize < 1048576) $col_fields[$fieldname]=round($filesize/1024,2).' KB'; else if($filesize > 1048576) $col_fields[$fieldname]=round($filesize/(1024*1024),2).' MB'; } else { $col_fields[$fieldname]=' --'; } } if($fieldname == 'filetype' && $col_fields['filelocationtype'] == 'E') { $col_fields[$fieldname]=' --'; } /*if($fieldname == 'filestatus') { $filestatus = $col_fields[$fieldname]; if($filestatus == 0) $col_fields[$fieldname]=$mod_strings['LBL_ACTIVE']; else $col_fields[$fieldname]=$mod_strings['LBL_INACTIVE']; }*/ } //code for Documents module :end $label_fld[] = $col_fields[$fieldname]; } } $label_fld[]=$uitype; //sets whether the currenct user is admin or not if(is_admin($current_user)) { $label_fld["isadmin"] = 1; }else { $label_fld["isadmin"] = 0; } $log->debug("Exiting getDetailViewOutputHtml method ..."); return $label_fld; } /** This function returns the related vte_tab details for a given entity or a module. * Param $module - module name * Param $focus - module object * Return type is an array */ function getRelatedListsInformation($module,$focus) { global $log; $log->debug("Entering getRelatedLists(".$module.",focus) method ..."); global $adb,$table_prefix; global $current_user; require('user_privileges/requireUserPrivileges.php'); // crmv@39110 $cur_tab_id = getTabid($module); //$sql1 = "select * from vte_relatedlists where tabid=? order by sequence"; // vtlib customization: Do not picklist module which are set as in-active $sql1 = "select * from ".$table_prefix."_relatedlists where tabid=? and related_tabid not in (SELECT tabid FROM ".$table_prefix."_tab WHERE presence = 1) order by sequence"; // END $result = $adb->pquery($sql1, array($cur_tab_id)); $num_row = $adb->num_rows($result); for($i=0; $i<$num_row; $i++) { $rel_tab_id = $adb->query_result($result,$i,"related_tabid"); $function_name = $adb->query_result($result,$i,"name"); $label = $adb->query_result($result,$i,"label"); $actions = $adb->query_result($result,$i,"actions"); $relationId = $adb->query_result($result,$i,"relation_id"); if($rel_tab_id != 0) { if($profileTabsPermission[$rel_tab_id] == 0) { if($profileActionPermission[$rel_tab_id][3] == 0) { // vtlib customization: Send more information (from module, related module) // to the callee $focus_list[$label] = $focus->$function_name($focus->id, $cur_tab_id, $rel_tab_id, $actions); // END } } } else { // vtlib customization: Send more information (from module, related module) // to the callee $focus_list[$label] = $focus->$function_name($focus->id, $cur_tab_id, $rel_tab_id, $actions); // END } } $log->debug("Exiting getRelatedLists method ..."); return $focus_list; } /** This function returns the related vte_tab details for a given entity or a module. * Param $module - module name * Param $focus - module object * Return type is an array */ function getRelatedLists($module,$focus,$turbolift=false) //crmv@26896 { global $log; $log->debug("Entering getRelatedLists(".$module.") method ..."); global $adb,$table_prefix; global $current_user; require('user_privileges/requireUserPrivileges.php'); // crmv@39110 $cur_tab_id = getTabid($module); //$sql1 = "select * from vte_relatedlists where tabid=? order by sequence"; // vtlib customization: Do not picklist module which are set as in-active //crmv@26896 crmv@39110 crmv@150751 $firstUserProfile = $current_user_profiles[0]; $vh_info = array( 'relatedlists' => array($table_prefix.'_relatedlists',"{$table_prefix}_relatedlists.tabid=?",$cur_tab_id), 'tab' => array($table_prefix.'_tab',"{$table_prefix}_tab.tabid = {$table_prefix}_relatedlists.related_tabid"), ); require_once('modules/Settings/ProcessMaker/ProcessMakerUtils.php'); $PMUtils = ProcessMakerUtils::getInstance(); $tvh_id = $PMUtils->getSystemVersion4Record($focus->id,array('tabs',$module,'id')); if (!empty($tvh_id)) { $vh_info['relatedlists'] = array($table_prefix.'_relatedlists_vh',"{$table_prefix}_relatedlists_vh.tabid=? and {$table_prefix}_relatedlists_vh.versionid=?",array($cur_tab_id,$tvh_id)); $vh_info['tab'] = array($table_prefix.'_tab',"{$table_prefix}_tab.tabid = {$table_prefix}_relatedlists_vh.related_tabid"); //crmv@150751 } $vh_info['profile2related'] = array($table_prefix.'_profile2related', "p2r.profileid = ? AND p2r.tabid = ? AND p2r.relationid = {$vh_info['relatedlists'][0]}.relation_id"); $pvh_id = $PMUtils->getSystemVersion4Record($focus->id,array('profiles','id')); if (!empty($pvh_id)) { $vh_info['profile2related'] = array($table_prefix.'_profile2related_vh', $vh_info['profile2related'][1]." and p2r.versionid = {$pvh_id}"); } if ($turbolift) { $condition1 = ''; if ($cur_tab_id == 9) { $condition1 = "and {$vh_info['relatedlists'][0]}.related_tabid not in (0,4)"; } // use first profile to get only one row, no sense to mix them all $sql1 = "select {$vh_info['relatedlists'][0]}.*, p2r.visible as profile_visible, p2r.actions as profile_actions, {$vh_info['tab'][0]}.name as related_tabname FROM {$vh_info['relatedlists'][0]} INNER JOIN {$vh_info['tab'][0]} ON {$vh_info['tab'][1]} LEFT JOIN vte_turbolift_count on (vte_turbolift_count.relation_id = {$vh_info['relatedlists'][0]}.relation_id and vte_turbolift_count.userid = $current_user->id) LEFT JOIN {$vh_info['profile2related'][0]} p2r ON {$vh_info['profile2related'][1]} WHERE {$vh_info['relatedlists'][1]} $condition1 AND {$vh_info['tab'][0]}.presence != 1 AND {$vh_info['relatedlists'][0]}.presence != 1 AND (p2r.visible IS NULL OR p2r.visible = 1) ORDER BY COALESCE(p2r.sequence, 0) ASC, coalesce(tb_count,0) DESC, {$vh_info['relatedlists'][0]}.sequence ASC"; } else { $sql1 = "select {$vh_info['relatedlists'][0]}.*, p2r.visible as profile_visible, p2r.actions as profile_actions, {$vh_info['tab'][0]}.name as related_tabname FROM {$vh_info['relatedlists'][0]} LEFT JOIN {$vh_info['tab'][0]} ON {$vh_info['tab'][1]} LEFT JOIN {$vh_info['profile2related'][0]} p2r ON {$vh_info['profile2related'][1]} WHERE {$vh_info['relatedlists'][1]} AND ({$vh_info['tab'][0]}.tabid IS NULL OR {$vh_info['tab'][0]}.presence != 1) AND {$vh_info['relatedlists'][0]}.presence != 1 AND (p2r.visible IS NULL OR p2r.visible = 1) ORDER BY COALESCE(p2r.sequence, {$vh_info['relatedlists'][0]}.sequence)"; } $params = array($firstUserProfile, $cur_tab_id, $vh_info['relatedlists'][2]); //crmv@26896e crmv@39110e crmv@150751e $result = $adb->pquery($sql1, $params); $num_row = $adb->num_rows($result); for($i=0; $i<$num_row; $i++) { $rel_tab_id = $adb->query_result($result,$i,"related_tabid"); $related_tabname = $adb->query_result($result,$i,"related_tabname"); $function_name = $adb->query_result($result,$i,"name"); $label = $adb->query_result($result,$i,"label"); $actions = $adb->query_result($result,$i,"actions"); $relationId = $adb->query_result($result,$i,"relation_id"); $presence = $adb->query_result($result,$i,"presence"); //crmv@170167 if($rel_tab_id != 0) { if($profileTabsPermission[$rel_tab_id] == 0) { if($profileActionPermission[$rel_tab_id][3] == 0) { // vtlib customization: Send more information (from module, related module) // to the callee $focus_list[$label] = array( 'related_tabid' => $rel_tab_id, 'relationId' => $relationId, 'actions' => $actions, 'name'=>$function_name, // crmv@33097 'related_tabname'=>$related_tabname, 'presence'=>$presence, //crmv@170167 ); // END } } } else { // vtlib customization: Send more information (from module, related module) // to the callee $focus_list[$label] = array( 'related_tabid' => $rel_tab_id, 'relationId' => $relationId, 'actions' => $actions, 'name'=>$function_name, // crmv@33097 'related_tabname'=>$related_tabname, 'presence'=>$presence, //crmv@170167 ); // END } } $log->debug("Exiting getRelatedLists method ..."); return $focus_list; } /** This function returns whether related lists is present for this particular module or not * Param $module - module name * Param $activity_mode - mode of activity * Return type true or false */ function isPresentRelatedLists($module,$activity_mode='') { static $moduleRelatedListCache = array(); global $adb,$current_user,$table_prefix; $retval=array(); /* crmv@140903 removed tabdata include */ require('user_privileges/requireUserPrivileges.php'); // crmv@39110 $tab_id=getTabid($module); // We need to check if there is atleast 1 relation, no need to use count(*) $query= "select relation_id,related_tabid, label from ".$table_prefix."_relatedlists where tabid=? ". "order by sequence"; $result=$adb->pquery($query, array($tab_id)); $count=$adb->num_rows($result); if($count < 1 || ($module =='Calendar' && $activity_mode=='task')) { $retval='false'; }else if(empty($moduleRelatedListCache[$module])){ $tab_seq_array = TabdataCache::get('tab_seq_array'); //crmv@140903 for($i=0; $i<$count; ++$i) { $relatedId = $adb->query_result($result, $i, 'relation_id'); $relationLabel = $adb->query_result($result, $i, 'label'); $relatedTabId = $adb->query_result($result, $i, 'related_tabid'); //check for module disable. $permitted = $tab_seq_array[$relatedTabId]; if($permitted === 0 || $permitted === '0' || empty($relatedTabId)){ // crmv@140903 if($is_admin || $profileTabsPermission[$relatedTabId] === 0 || empty($relatedTabId)){ $retval[$relatedId] = $relationLabel; } } } $moduleRelatedListCache[$module] = $retval; } return $moduleRelatedListCache[$module]; } /** This function returns the detailed block information of a record in a module. * Param $module - module name * Param $block - block id * Param $col_fields - column vte_fields array for the module * Param $tabid - vte_tab id * Return type is an array */ function getDetailBlockInformation($view,$module,$result,$col_fields,$tabid,$blockdata,&$aBlockStatus='') //crmv@96450 crmv@104568 { global $log; $log->debug("Entering getDetailBlockInformation(".$module.",". $result.",".$col_fields.",".$tabid.",".$blockdata.") method ..."); // crmv@104568 global $adb; global $current_user; global $mod_strings; $label_data = Array(); $noofrows = $adb->num_rows($result); //crmv@9434+31357 if (vtlib_isModuleActive('Transitions')){ $transitions_obj = CRMEntity::getInstance('Transitions'); $transitions_obj->Initialize($module,$current_user->roleid); } //crmv@9434+31357 end //crmv@9433 if (vtlib_isModuleActive('Conditionals')){ //crmv@36505 $conditionals_obj = CRMEntity::getInstance('Conditionals'); $conditionals_obj->Initialize($module,$tabid,$col_fields); // crmv@198388: removed crmv@142262 //crmv@36505e } //crmv@9433 end for($i=0; $i<$noofrows; $i++) { $fieldtablename = $adb->query_result($result,$i,"tablename"); $fieldcolname = $adb->query_result($result,$i,"columnname"); $uitype = $adb->query_result($result,$i,"uitype"); $fieldname = $adb->query_result($result,$i,"fieldname"); $fieldid = $adb->query_result($result,$i,"fieldid"); $fieldlabel = $adb->query_result($result,$i,"fieldlabel"); $maxlength = $adb->query_result($result,$i,"maximumlength"); $block = $adb->query_result($result,$i,"block"); $generatedtype = $adb->query_result($result,$i,"generatedtype"); $tabid = $adb->query_result($result,$i,"tabid"); $displaytype = $adb->query_result($result,$i,'displaytype'); $readonly = $adb->query_result($result,$i,"readonly"); //crmv@3085m $quickcreate = $adb->query_result($result,$i,"quickcreate"); $typeofdata = getFinalTypeOfData($adb->query_result($result,$i,"typeofdata"), $adb->query_result($result,$i,"mandatory")); //crmv@49510 $type_of_data = explode('~',$typeofdata); if ($type_of_data[1] == 'M') $mandatory = true; else $mandatory = false; //crmv@3085me //crmv@9434 if (vtlib_isModuleActive('Transitions')) $transitions_obj->handle_managed_fields($fieldname,$fieldcolname,$readonly,$col_fields,$mode,'DetailView'); //crmv@9434 end //crmv@9433 if (vtlib_isModuleActive('Conditionals')){ $fieldid = $adb->query_result($result,$i,"fieldid"); if (is_array($conditionals_obj->permissions[$fieldid])){ if ($conditionals_obj->permissions[$fieldid]["f2fp_visible"] == 0) $readonly = 100; elseif ($conditionals_obj->permissions[$fieldid]["f2fp_editable"] == 0) $readonly = 99; } // crmv@198388: removed crmv@142262, crmv@181275 } //crmv@9433 e //crmv@sdk-18508 $sdk_files = SDK::getViews($module,'detail'); if (!empty($sdk_files)) { foreach($sdk_files as $sdk_file) { $success = false; $readonly_old = $readonly; include($sdk_file['src']); SDK::checkReadonly($readonly_old,$readonly,$sdk_file['mode']); if ($success && $sdk_file['on_success'] == 'stop') { break; } } } //crmv@sdk-18508 e //crmv@3085m crmv@45034 if ($view == 'summary') { $wbsFldObj = WebserviceField::fromQueryResult($adb,$result,$i); if (!in_array($quickcreate,array(0,2))) { if (!$wbsFldObj->showInSummary()) { // if ($wbsFldObj->isExcludedBySummary() || $wbsFldObj->isEmpty($col_fields[$fieldname])) { $readonly = 100; // } } } } //crmv@3085me crmv@45034e $custfld = getDetailViewOutputHtml($uitype, $fieldname, $fieldlabel, $col_fields,$generatedtype,$tabid,$module); if(is_array($custfld)) { //crmv@3085m if ($view == 'summary') { $label_data[] = array($custfld[0]=>array("value"=>$custfld[1],"ui"=>$custfld[2],"options"=>$custfld["options"],"secid"=>$custfld["secid"],"link"=>$custfld["link"],"cursymb"=>$custfld["cursymb"],"salut"=>$custfld["salut"],"notaccess"=>$custfld["notaccess"],"isadmin"=>$custfld["isadmin"],"tablename"=>$fieldtablename,"fldname"=>$fieldname,"fldid"=>$fieldid,"displaytype"=>$displaytype,"readonly"=>$readonly,'mandatory'=>$mandatory)); } else { $label_data[$block][] = array($custfld[0]=>array("value"=>$custfld[1],"ui"=>$custfld[2],"options"=>$custfld["options"],"secid"=>$custfld["secid"],"link"=>$custfld["link"],"cursymb"=>$custfld["cursymb"],"salut"=>$custfld["salut"],"notaccess"=>$custfld["notaccess"],"isadmin"=>$custfld["isadmin"],"tablename"=>$fieldtablename,"fldname"=>$fieldname,"fldid"=>$fieldid,"displaytype"=>$displaytype,"readonly"=>$readonly,'mandatory'=>$mandatory)); } //crmv@3085me } } //crmv@96450 if ($module == 'Processes' && $view != 'summary') { require_once('modules/Settings/ProcessMaker/ProcessDynaForm.php'); $processDynaFormObj = ProcessDynaForm::getInstance(); $processDynaFormObj->addBlockInformation($col_fields,'detail',$label_data,$blockdata,$aBlockStatus,array(),true); // crmv@104568 crmv@106857 } //crmv@96450e // crmv@198024 if ($module == 'Products' && $view != 'summary') { $prodFocus = CRMEntity::getInstance('Products'); $prodFocus->addAttributesBlock($col_fields, 'detail', $label_data, $blockdata, $aBlockStatus); } // crmv@198024e //crmv@3085m if ($view == 'summary') { return $label_data; } //crmv@3085me //crmv@99316 foreach($label_data as $headerid=>$value_array) { foreach($value_array as $i => $arr) { $keys = array_keys($arr); $key = $keys[0]; if ($arr[$key]['readonly'] == 100) unset($value_array[$i]); // skip field } if (empty($value_array)) unset($label_data[$headerid]); // skip block if empty } //crmv@99316e foreach($label_data as $headerid=>$value_array) { $detailview_data = Array(); for ($i=0,$j=0;$i $value_array[$i][$key1],$key2 => $value_array[$i+1][$key2]); $i+=2; }else{ $detailview_data[$j]=array($use_key1 => $value_array[$i][$key1]); $i++; } } $label_data[$headerid] = $detailview_data; } // crmv@104568 $returndata = array(); foreach($blockdata as $blockid=>$blockinfo) { $label = $blockinfo['label']; if ($label != '') { $curBlock = $label; } $blocklabel = getTranslatedString($curBlock,$module); $key = $blocklabel; if(is_array($label_data[$blockid])) { if (!is_array($returndata[$key])) { $returndata[$key] = array( 'blockid' => $blockid, 'panelid' => $blockinfo['panelid'], 'label' => $blocklabel, 'fields' => array() ); } $returndata[$key]['fields'] = array_merge((array)$returndata[$key]['fields'], (array)$label_data[$blockid]); } } // crmv@104568e $log->debug("Exiting getDetailBlockInformation method ..."); return $returndata; } function VT_detailViewNavigation($smarty,$recordNavigationInfo,$currrentRecordId){ $pageNumber =0; foreach ($recordNavigationInfo as $start=>$recordIdList){ $pageNumber++; foreach ($recordIdList as $index=>$recordId) { if($recordId === $currrentRecordId){ if($index ==0 ){ $smarty->assign('privrecordstart',$start-1); $smarty->assign('privrecord',$recordNavigationInfo[$start-1][count($recordNavigationInfo[$start-1])-1]); }else{ $smarty->assign('privrecordstart',$start); $smarty->assign('privrecord',$recordIdList[$index-1]); } if($index == count($recordIdList)-1){ $smarty->assign('nextrecordstart',$start+1); $smarty->assign('nextrecord',$recordNavigationInfo[$start+1][0]); }else{ $smarty->assign('nextrecordstart',$start); $smarty->assign('nextrecord',$recordIdList[$index+1]); } } } } } //crmv@150751 function getRelatedListInfoById($relationId, $recordid=''){ global $table_prefix; static $relatedInfoCache = array(); if(isset($relatedInfoCache[$relationId])){ return $relatedInfoCache[$relationId]; } $adb = PearDatabase::getInstance(); require_once('modules/Settings/ProcessMaker/ProcessMakerUtils.php'); $PMUtils = ProcessMakerUtils::getInstance(); if (!empty($recordid)) $tvh_id = $PMUtils->getSystemVersion4Record($recordid,array('tabs',getSalesEntityType($recordid),'id')); if (!empty($tvh_id)) { $result = $adb->pquery("select * from {$table_prefix}_relatedlists_vh where relation_id=? and versionid=?", array($relationId, $tvh_id)); } else { $result = $adb->pquery("select * from {$table_prefix}_relatedlists where relation_id=?", array($relationId)); } $rowCount = $adb->num_rows($result); $relationInfo = array(); if($rowCount > 0) { $relationInfo['tabid'] = $adb->query_result($result,0,"tabid"); // crmv@49398 $relationInfo['relatedTabId'] = $adb->query_result($result,0,"related_tabid"); $relationInfo['functionName'] = $adb->query_result($result,0,"name"); $relationInfo['label'] = $adb->query_result($result,0,"label"); $relationInfo['actions'] = $adb->query_result($result,0,"actions"); $relationInfo['relationId'] = $adb->query_result($result,0,"relation_id"); } $relatedInfoCache[$relationId] = $relationInfo; return $relatedInfoCache[$relationId]; } //crmv@150751e