/** * This function returns the ec_blocks and its related information for given module. * Input Parameter are $module - module name, $disp_view = display view (edit,detail or create),$mode - edit, $col_fields - * column ec_fields/ * This function returns an array */ function getBlocksForQuickEdit($module, $disp_view, $mode, $col_fields = '', $display_type_check) { global $log; $log->debug("Entering getBlocksForQuickEdit() method ..."); global $adb, $current_user; global $mod_strings; $tabid = getTabid($module); $block_detail = array(); $getBlockinfo = ""; $prev_header = ""; $query = "select blockid,blocklabel,show_title from ec_blocks where tabid={$tabid} and {$disp_view}=0 and visible = 0 order by sequence"; $result = $adb->query($query); $noofrows = $adb->num_rows($result); $blockid_list = '('; for ($i = 0; $i < $noofrows; $i++) { $blockid = $adb->query_result($result, $i, "blockid"); if ($i != 0) { $blockid_list .= ', '; } $blockid_list .= $blockid; $block_label[$blockid] = $adb->query_result($result, $i, "blocklabel"); } $blockid_list .= ')'; //retreive the ec_profileList from database require 'user_privileges/user_privileges_' . $current_user->id . '.php'; if ($is_admin == true) { $sql = "SELECT ec_field.* FROM ec_field INNER JOIN ec_def_org_field ON ec_def_org_field.fieldid=ec_field.fieldid AND ec_def_org_field.visible=0 WHERE ec_field.tabid=" . $tabid . " AND ec_field.block IN " . $blockid_list . " AND " . $display_type_check . " ORDER BY block,sequence"; } else { $profileList = getCurrentUserProfileList(); $sql = "SELECT ec_field.*,ec_profile2field.readonly as profile_readonly FROM ec_field INNER JOIN ec_profile2field ON ec_profile2field.fieldid=ec_field.fieldid INNER JOIN ec_def_org_field ON ec_def_org_field.fieldid=ec_field.fieldid WHERE ec_field.tabid=" . $tabid . " AND ec_field.block IN " . $blockid_list . " AND " . $display_type_check . " AND ec_def_org_field.visible=0 AND ec_profile2field.visible=0 AND ec_profile2field.profileid IN " . $profileList . " ORDER BY block,sequence"; } $result = $adb->query($sql); $getBlockInfo = getBlockInformation($module, $result, $col_fields, $tabid, $block_label, $mode); $index_count = 1; $max_index = 0; if (!isset($getBlockInfo)) { $getBlockInfo = array(); } foreach ($getBlockInfo as $label => $contents) { $no_rows = count($contents); $index_count = $max_index + 1; foreach ($contents as $block_row => $elements) { $max_index = $no_rows + $index_count; for ($i = 0; $i < count($elements); $i++) { if (isset($getBlockInfo[$label][$block_row][$i]) && sizeof($getBlockInfo[$label][$block_row][$i]) != 0) { if ($i == 0) { $getBlockInfo[$label][$block_row][$i][] = array($index_count); } else { $getBlockInfo[$label][$block_row][$i][] = array($max_index); } } } $index_count++; } } $log->debug("Exiting getBlocksForQuickEdit method ..."); return $getBlockInfo; }
function getBlocks($module, $disp_view, $mode, $col_fields = '', $info_type = '', $crmid = '') { global $log; $log->debug("Entering getBlocks() method ..."); global $adb, $current_user; global $mod_strings; $tabid = getTabid($module); $block_detail = array(); $getBlockinfo = ""; $prev_header = ""; //block cache on 2008-12-23 for performance by dingjianting $key2 = "block_label_" . $tabid; $block_label = getSqlCacheData($key2); if (!$block_label) { $block_label = array(); $query = "select blockid,blocklabel,show_title from ec_blocks where tabid={$tabid} and visible = 0 order by sequence"; $result = $adb->query($query); $noofrows = $adb->num_rows($result); for ($i = 0; $i < $noofrows; $i++) { $blockid = $adb->query_result($result, $i, "blockid"); $block_label[$blockid] = $adb->query_result($result, $i, "blocklabel"); } setSqlCacheData($key2, $block_label); } $key = "blockview_list_" . $tabid . "_" . $disp_view . "_" . $mode . "_" . $info_type; //detailview blockview_list_6_detail_view__ $blockviewList = getSqlCacheData($key); if (!$blockviewList) { if ($mode == 'edit') { $display_type_check = 'ec_field.displaytype = 1'; } else { $display_type_check = 'ec_field.displaytype in (1,4)'; } if ($disp_view == "detail_view") { $sql = "SELECT ec_field.* FROM ec_field INNER JOIN ec_def_org_field ON ec_def_org_field.fieldid=ec_field.fieldid AND ec_def_org_field.visible=0 WHERE ec_field.tabid=" . $tabid . " AND ec_field.block IN (select blockid from ec_blocks where tabid=" . $tabid . " and visible = 0) AND ec_field.displaytype IN (1,2,4) ORDER BY block,sequence"; } else { if ($info_type != '') { $sql = "SELECT ec_field.* FROM ec_field INNER JOIN ec_def_org_field ON ec_def_org_field.fieldid=ec_field.fieldid AND ec_def_org_field.visible=0 WHERE ec_field.tabid=" . $tabid . " AND ec_field.block IN (select blockid from ec_blocks where tabid=" . $tabid . " and visible = 0) AND " . $display_type_check . " AND info_type = '" . $info_type . "' ORDER BY block,sequence"; } else { $sql = "SELECT ec_field.* FROM ec_field INNER JOIN ec_def_org_field ON ec_def_org_field.fieldid=ec_field.fieldid AND ec_def_org_field.visible=0 WHERE ec_field.tabid=" . $tabid . " AND ec_field.block IN (select blockid from ec_blocks where tabid=" . $tabid . " and visible = 0) AND " . $display_type_check . " ORDER BY block,sequence"; } } $blockviewList = $adb->query($sql); setSqlCacheData($key, $blockviewList); } if ($disp_view == "detail_view") { $getBlockInfo = getDetailBlockInformation($module, $blockviewList, $col_fields, $tabid, $block_label); } else { $getBlockInfo = getBlockInformation($module, $blockviewList, $col_fields, $tabid, $block_label, $mode, $supportmultiapprove); } $index_count = 1; $max_index = 0; if (!isset($getBlockInfo)) { $getBlockInfo = array(); } foreach ($getBlockInfo as $label => $contents) { $no_rows = count($contents); $index_count = $max_index + 1; foreach ($contents as $block_row => $elements) { $max_index = $no_rows + $index_count; for ($i = 0; $i < count($elements); $i++) { if (isset($getBlockInfo[$label][$block_row][$i]) && sizeof($getBlockInfo[$label][$block_row][$i]) != 0) { if ($i == 0) { $getBlockInfo[$label][$block_row][$i][] = array($index_count); } else { $getBlockInfo[$label][$block_row][$i][] = array($max_index); } } } $index_count++; } } $log->debug("Exiting getBlocks method ..."); //print_r($getBlockInfo);die; return $getBlockInfo; }
/** * This function returns the vtiger_blocks and its related information for given module. * Input Parameter are $module - module name, $disp_view = display view (edit,detail or create),$mode - edit, $col_fields - * column vtiger_fields/ * This function returns an array */ function getBlocks($module, $disp_view, $mode, $col_fields = '', $info_type = '') { global $log; $log->debug("Entering getBlocks(" . $module . "," . $disp_view . "," . $mode . "," . $col_fields . "," . $info_type . ") method ..."); global $adb, $current_user; global $mod_strings; $tabid = getTabid($module); $block_detail = array(); $getBlockinfo = ""; $query = "select blockid,blocklabel,show_title,display_status from vtiger_blocks where tabid=? and {$disp_view}=0 and visible = 0 order by sequence"; $result = $adb->pquery($query, array($tabid)); $noofrows = $adb->num_rows($result); $prev_header = ""; $blockid_list = array(); for ($i = 0; $i < $noofrows; $i++) { $blockid = $adb->query_result($result, $i, "blockid"); array_push($blockid_list, $blockid); $block_label[$blockid] = $adb->query_result($result, $i, "blocklabel"); $sLabelVal = getTranslatedString($block_label[$blockid], $module); $aBlockStatus[$sLabelVal] = $adb->query_result($result, $i, "display_status"); } if ($mode == 'edit') { $display_type_check = 'vtiger_field.displaytype = 1'; } elseif ($mode == 'mass_edit') { $display_type_check = 'vtiger_field.displaytype = 1 AND vtiger_field.masseditable NOT IN (0,2)'; } else { $display_type_check = 'vtiger_field.displaytype in (1,4)'; } /*if($non_mass_edit_fields!='' && sizeof($non_mass_edit_fields)!=0){ $mass_edit_query = "AND vtiger_field.fieldname NOT IN (". generateQuestionMarks($non_mass_edit_fields) .")"; }*/ //retreive the vtiger_profileList from database require 'user_privileges/user_privileges_' . $current_user->id . '.php'; if ($disp_view == "detail_view") { if ($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0 || $module == "Users" || $module == "Emails") { $sql = "SELECT vtiger_field.*, '0' as readonly FROM vtiger_field WHERE vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND vtiger_field.displaytype IN (1,2,4) and vtiger_field.presence in (0,2) ORDER BY block,sequence"; $params = array($tabid, $blockid_list); } else { $profileList = getCurrentUserProfileList(); $sql = "SELECT vtiger_field.*, vtiger_profile2field.readonly FROM vtiger_field INNER JOIN vtiger_profile2field ON vtiger_profile2field.fieldid=vtiger_field.fieldid INNER JOIN vtiger_def_org_field ON vtiger_def_org_field.fieldid=vtiger_field.fieldid WHERE vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND vtiger_field.displaytype IN (1,2,4) and vtiger_field.presence in (0,2) AND vtiger_profile2field.visible=0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") GROUP BY vtiger_field.fieldid ORDER BY block,sequence"; $params = array($tabid, $blockid_list, $profileList); //Postgres 8 fixes if ($adb->dbType == "pgsql") { $sql = fixPostgresQuery($sql, $log, 0); } } $result = $adb->pquery($sql, $params); // Added to unset the previous record's related listview session values if (isset($_SESSION['rlvs'])) { unset($_SESSION['rlvs']); } $getBlockInfo = getDetailBlockInformation($module, $result, $col_fields, $tabid, $block_label); } else { if ($info_type != '') { if ($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0 || $module == 'Users' || $module == "Emails") { $sql = "SELECT vtiger_field.* FROM vtiger_field WHERE vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND {$display_type_check} AND info_type = ? and vtiger_field.presence in (0,2) ORDER BY block,sequence"; $params = array($tabid, $blockid_list, $info_type); } else { $profileList = getCurrentUserProfileList(); $sql = "SELECT vtiger_field.* FROM vtiger_field INNER JOIN vtiger_profile2field ON vtiger_profile2field.fieldid=vtiger_field.fieldid INNER JOIN vtiger_def_org_field ON vtiger_def_org_field.fieldid=vtiger_field.fieldid WHERE vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND {$display_type_check} AND info_type = ? AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly = 0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid ORDER BY block,sequence"; $params = array($tabid, $blockid_list, $info_type, $profileList); //Postgres 8 fixes if ($adb->dbType == "pgsql") { $sql = fixPostgresQuery($sql, $log, 0); } } } else { if ($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0 || $module == 'Users' || $module == "Emails") { $sql = "SELECT vtiger_field.* FROM vtiger_field WHERE vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND {$display_type_check} and vtiger_field.presence in (0,2) ORDER BY block,sequence"; $params = array($tabid, $blockid_list); } else { $profileList = getCurrentUserProfileList(); $sql = "SELECT vtiger_field.* FROM vtiger_field INNER JOIN vtiger_profile2field ON vtiger_profile2field.fieldid=vtiger_field.fieldid INNER JOIN vtiger_def_org_field ON vtiger_def_org_field.fieldid=vtiger_field.fieldid WHERE vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND {$display_type_check} AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly = 0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid ORDER BY block,sequence"; $params = array($tabid, $blockid_list, $profileList); //Postgres 8 fixes if ($adb->dbType == "pgsql") { $sql = fixPostgresQuery($sql, $log, 0); } } } $result = $adb->pquery($sql, $params); $getBlockInfo = getBlockInformation($module, $result, $col_fields, $tabid, $block_label, $mode); } $log->debug("Exiting getBlocks method ..."); if (count($getBlockInfo) > 0) { foreach ($getBlockInfo as $label => $contents) { if (empty($getBlockInfo[$label])) { unset($getBlockInfo[$label]); } } } $_SESSION['BLOCKINITIALSTATUS'] = $aBlockStatus; return $getBlockInfo; }