* 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[] ='
';
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[] ='
';
//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 = "
";
}
$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