[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /*+*********************************************************************************** 3 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 4 * ("License"); You may not use this file except in compliance with the License 5 * The Original Code is: vtiger CRM Open Source 6 * The Initial Developer of the Original Code is vtiger. 7 * Portions created by vtiger are Copyright (C) vtiger. 8 * All Rights Reserved. 9 *************************************************************************************/ 10 11 class Reports_Detail_View extends Vtiger_Index_View { 12 13 protected $reportData; 14 protected $calculationFields; 15 protected $count; 16 17 public function checkPermission(Vtiger_Request $request) { 18 $moduleName = $request->getModule(); 19 $moduleModel = Reports_Module_Model::getInstance($moduleName); 20 21 $record = $request->get('record'); 22 $reportModel = Reports_Record_Model::getCleanInstance($record); 23 24 $currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); 25 if(!$currentUserPriviligesModel->hasModulePermission($moduleModel->getId()) && !$reportModel->isEditable()) { 26 throw new AppException('LBL_PERMISSION_DENIED'); 27 } 28 } 29 30 const REPORT_LIMIT = 1000; 31 32 function preProcess(Vtiger_Request $request) { 33 parent::preProcess($request); 34 35 $viewer = $this->getViewer($request); 36 $moduleName = $request->getModule(); 37 $recordId = $request->get('record'); 38 $page = $request->get('page'); 39 40 $detailViewModel = Reports_DetailView_Model::getInstance($moduleName, $recordId); 41 $reportModel = $detailViewModel->getRecord(); 42 $reportModel->setModule('Reports'); 43 44 $pagingModel = new Vtiger_Paging_Model(); 45 $pagingModel->set('page', $page); 46 $pagingModel->set('limit', self::REPORT_LIMIT); 47 48 $reportData = $reportModel->getReportData($pagingModel); 49 $this->reportData = $reportData['data']; 50 $this->calculationFields = $reportModel->getReportCalulationData(); 51 52 $count = $reportData['count']; 53 if($count < 1000){ 54 $this->count = $count; 55 }else{ 56 $query = $reportModel->getReportSQL(false, 'PDF'); 57 $countQuery = $reportModel->generateCountQuery($query); 58 $this->count = $reportModel->getReportsCount($countQuery); 59 } 60 61 $primaryModule = $reportModel->getPrimaryModule(); 62 $secondaryModules = $reportModel->getSecondaryModules(); 63 $primaryModuleModel = Vtiger_Module_Model::getInstance($primaryModule); 64 65 $currentUser = Users_Record_Model::getCurrentUserModel(); 66 $userPrivilegesModel = Users_Privileges_Model::getInstanceById($currentUser->getId()); 67 $permission = $userPrivilegesModel->hasModulePermission($primaryModuleModel->getId()); 68 69 if(!$permission) { 70 $viewer->assign('MODULE', $primaryModule); 71 $viewer->assign('MESSAGE', 'LBL_PERMISSION_DENIED'); 72 $viewer->view('OperationNotPermitted.tpl', $primaryModule); 73 exit; 74 } 75 76 $detailViewLinks = $detailViewModel->getDetailViewLinks(); 77 78 // Advanced filter conditions 79 $viewer->assign('SELECTED_ADVANCED_FILTER_FIELDS', $reportModel->transformToNewAdvancedFilter()); 80 $viewer->assign('PRIMARY_MODULE', $primaryModule); 81 82 $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($reportModel); 83 $primaryModuleRecordStructure = $recordStructureInstance->getPrimaryModuleRecordStructure(); 84 $secondaryModuleRecordStructures = $recordStructureInstance->getSecondaryModuleRecordStructure(); 85 86 //TODO : We need to remove "update_log" field from "HelpDesk" module in New Look 87 // after removing old look we need to remove this field from crm 88 if($primaryModule == 'HelpDesk'){ 89 foreach($primaryModuleRecordStructure as $blockLabel => $blockFields){ 90 foreach($blockFields as $field => $object){ 91 if($field == 'update_log'){ 92 unset($primaryModuleRecordStructure[$blockLabel][$field]); 93 } 94 } 95 } 96 } 97 if(!empty($secondaryModuleRecordStructures)){ 98 foreach($secondaryModuleRecordStructures as $module => $structure){ 99 if($module == 'HelpDesk'){ 100 foreach($structure as $blockLabel => $blockFields){ 101 foreach($blockFields as $field => $object){ 102 if($field == 'update_log'){ 103 unset($secondaryModuleRecordStructures[$module][$blockLabel][$field]); 104 } 105 } 106 } 107 } 108 } 109 } 110 // End 111 112 $viewer->assign('PRIMARY_MODULE_RECORD_STRUCTURE', $primaryModuleRecordStructure); 113 $viewer->assign('SECONDARY_MODULE_RECORD_STRUCTURES', $secondaryModuleRecordStructures); 114 115 $secondaryModuleIsCalendar = strpos($secondaryModules, 'Calendar'); 116 if(($primaryModule == 'Calendar') || ($secondaryModuleIsCalendar !== FALSE)){ 117 $advanceFilterOpsByFieldType = Calendar_Field_Model::getAdvancedFilterOpsByFieldType(); 118 } else{ 119 $advanceFilterOpsByFieldType = Vtiger_Field_Model::getAdvancedFilterOpsByFieldType(); 120 } 121 $viewer->assign('ADVANCED_FILTER_OPTIONS', Vtiger_Field_Model::getAdvancedFilterOptions()); 122 $viewer->assign('ADVANCED_FILTER_OPTIONS_BY_TYPE', $advanceFilterOpsByFieldType); 123 $dateFilters = Vtiger_Field_Model::getDateFilterTypes(); 124 foreach($dateFilters as $comparatorKey => $comparatorInfo) { 125 $comparatorInfo['startdate'] = DateTimeField::convertToUserFormat($comparatorInfo['startdate']); 126 $comparatorInfo['enddate'] = DateTimeField::convertToUserFormat($comparatorInfo['enddate']); 127 $comparatorInfo['label'] = vtranslate($comparatorInfo['label'],$module); 128 $dateFilters[$comparatorKey] = $comparatorInfo; 129 } 130 $viewer->assign('DATE_FILTERS', $dateFilters); 131 $viewer->assign('LINEITEM_FIELD_IN_CALCULATION', $reportModel->showLineItemFieldsInFilter(false)); 132 $viewer->assign('DETAILVIEW_LINKS', $detailViewLinks); 133 $viewer->assign('REPORT_MODEL', $reportModel); 134 $viewer->assign('RECORD_ID', $recordId); 135 $viewer->assign('COUNT',$this->count); 136 $viewer->assign('MODULE', $moduleName); 137 $viewer->view('ReportHeader.tpl', $moduleName); 138 } 139 140 function process(Vtiger_Request $request) { 141 $mode = $request->getMode(); 142 if(!empty($mode)) { 143 $this->invokeExposedMethod($mode, $request); 144 return; 145 } 146 echo $this->getReport($request); 147 } 148 149 function getReport(Vtiger_Request $request) { 150 $viewer = $this->getViewer($request); 151 $moduleName = $request->getModule(); 152 153 $record = $request->get('record'); 154 $page = $request->get('page'); 155 156 $data = $this->reportData; 157 $calculation = $this->calculationFields; 158 159 if(empty($data)){ 160 $reportModel = Reports_Record_Model::getInstanceById($record); 161 $reportModel->setModule('Reports'); 162 $reportType = $reportModel->get('reporttype'); 163 164 $pagingModel = new Vtiger_Paging_Model(); 165 $pagingModel->set('page', $page); 166 $pagingModel->set('limit', self::REPORT_LIMIT+1); 167 168 $reportData = $reportModel->getReportData($pagingModel); 169 $data = $reportData['data']; 170 $calculation = $reportModel->getReportCalulationData(); 171 172 $advFilterSql = $reportModel->getAdvancedFilterSQL(); 173 $query = $reportModel->getReportSQL($advFilterSql, 'PDF'); 174 $countQuery = $reportModel->generateCountQuery($query); 175 $this->count = $reportModel->getReportsCount($countQuery); 176 } 177 178 $viewer->assign('CALCULATION_FIELDS',$calculation); 179 $viewer->assign('DATA', $data); 180 $viewer->assign('RECORD_ID', $record); 181 $viewer->assign('PAGING_MODEL', $pagingModel); 182 $viewer->assign('COUNT', $this->count); 183 $viewer->assign('MODULE', $moduleName); 184 $viewer->assign('REPORT_RUN_INSTANCE', ReportRun::getInstance($record)); 185 if (count($data) > self::REPORT_LIMIT) { 186 $viewer->assign('LIMIT_EXCEEDED', true); 187 } 188 189 $viewer->view('ReportContents.tpl', $moduleName); 190 } 191 192 /** 193 * Function to get the list of Script models to be included 194 * @param Vtiger_Request $request 195 * @return <Array> - List of Vtiger_JsScript_Model instances 196 */ 197 function getHeaderScripts(Vtiger_Request $request) { 198 $headerScriptInstances = parent::getHeaderScripts($request); 199 $moduleName = $request->getModule(); 200 201 $jsFileNames = array( 202 'modules.Vtiger.resources.Detail', 203 "modules.$moduleName.resources.Detail" 204 ); 205 206 $jsScriptInstances = $this->checkAndConvertJsScripts($jsFileNames); 207 $headerScriptInstances = array_merge($headerScriptInstances, $jsScriptInstances); 208 return $headerScriptInstances; 209 } 210 211 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |