[ 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_Edit_View extends Vtiger_Edit_View { 12 13 function __construct() { 14 parent::__construct(); 15 $this->exposeMethod('step1'); 16 $this->exposeMethod('step2'); 17 $this->exposeMethod('step3'); 18 } 19 20 public function checkPermission(Vtiger_Request $request) { 21 $moduleName = $request->getModule(); 22 $moduleModel = Reports_Module_Model::getInstance($moduleName); 23 24 $currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); 25 if (!$currentUserPriviligesModel->hasModulePermission($moduleModel->getId())) { 26 throw new AppException('LBL_PERMISSION_DENIED'); 27 } 28 29 $record = $request->get('record'); 30 if ($record) { 31 $reportModel = Reports_Record_Model::getCleanInstance($record); 32 if (!$reportModel->isEditable()) { 33 throw new AppException('LBL_PERMISSION_DENIED'); 34 } 35 } 36 } 37 38 public function preProcess(Vtiger_Request $request) { 39 parent::preProcess($request); 40 $viewer = $this->getViewer($request); 41 $record = $request->get('record'); 42 $moduleName = $request->getModule(); 43 $reportModel = Reports_Record_Model::getCleanInstance($record); 44 $primaryModule = $reportModel->getPrimaryModule(); 45 $primaryModuleModel = Vtiger_Module_Model::getInstance($primaryModule); 46 if ($primaryModuleModel) { 47 $currentUser = Users_Record_Model::getCurrentUserModel(); 48 $userPrivilegesModel = Users_Privileges_Model::getInstanceById($currentUser->getId()); 49 $permission = $userPrivilegesModel->hasModulePermission($primaryModuleModel->getId()); 50 51 if (!$permission) { 52 $viewer->assign('MODULE', $primaryModule); 53 $viewer->assign('MESSAGE', 'LBL_PERMISSION_DENIED'); 54 $viewer->view('OperationNotPermitted.tpl', $primaryModule); 55 exit; 56 } 57 } 58 $viewer->assign('REPORT_MODEL', $reportModel); 59 $viewer->assign('RECORD_ID', $record); 60 $viewer->assign('VIEW', 'Edit'); 61 $viewer->assign('RECORD_MODE', $request->getMode()); 62 $viewer->assign('QUALIFIED_MODULE', $moduleName); 63 $viewer->view('EditHeader.tpl', $request->getModule()); 64 } 65 66 public function process(Vtiger_Request $request) { 67 $mode = $request->getMode(); 68 if (!empty($mode)) { 69 echo $this->invokeExposedMethod($mode, $request); 70 exit; 71 } 72 $this->step1($request); 73 } 74 75 function step1(Vtiger_Request $request) { 76 $viewer = $this->getViewer($request); 77 $moduleName = $request->getModule(); 78 $record = $request->get('record'); 79 80 $reportModel = Reports_Record_Model::getCleanInstance($record); 81 if(!$reportModel->has('folderid')){ 82 $reportModel->set('folderid',$request->get('folder')); 83 } 84 $data = $request->getAll(); 85 foreach ($data as $name => $value) { 86 $reportModel->set($name, $value); 87 } 88 89 $modulesList = $reportModel->getModulesList(); 90 91 if (!empty($record)) { 92 $viewer->assign('MODE', 'edit'); 93 } else { 94 $firstModuleName = reset($modulesList); 95 if($firstModuleName) 96 $reportModel->setPrimaryModule($firstModuleName); 97 $viewer->assign('MODE', ''); 98 } 99 100 $reportModuleModel = $reportModel->getModule(); 101 $reportFolderModels = $reportModuleModel->getFolders(); 102 103 $relatedModules = $reportModel->getReportRelatedModules(); 104 105 foreach ($relatedModules as $primaryModule => $relatedModuleList) { 106 $translatedRelatedModules = array(); 107 108 foreach($relatedModuleList as $relatedModuleName) { 109 $translatedRelatedModules[$relatedModuleName] = vtranslate($relatedModuleName, $relatedModuleName); 110 } 111 $relatedModules[$primaryModule] = $translatedRelatedModules; 112 } 113 $currentUserModel = Users_Record_Model::getCurrentUserModel(); 114 115 $viewer->assign('SCHEDULEDREPORTS', $reportModel->getScheduledReport()); 116 $viewer->assign('MODULELIST', $modulesList); 117 $viewer->assign('RELATED_MODULES', $relatedModules); 118 $viewer->assign('REPORT_MODEL', $reportModel); 119 $viewer->assign('REPORT_FOLDERS', $reportFolderModels); 120 $viewer->assign('RECORD_ID', $record); 121 $viewer->assign('MODULE', $moduleName); 122 $viewer->assign('CURRENT_USER', $currentUserModel); 123 $viewer->assign('ROLES', Settings_Roles_Record_Model::getAll()); 124 $admin = Users::getActiveAdminUser(); 125 $viewer->assign('ACTIVE_ADMIN', $admin); 126 127 if ($request->get('isDuplicate')) { 128 $viewer->assign('IS_DUPLICATE', true); 129 } 130 $viewer->view('Step1.tpl', $moduleName); 131 } 132 133 function step2(Vtiger_request $request) { 134 $viewer = $this->getViewer($request); 135 $moduleName = $request->getModule(); 136 $record = $request->get('record'); 137 138 $reportModel = Reports_Record_Model::getCleanInstance($record); 139 if(!empty($record)) { 140 $viewer->assign('SELECTED_FIELDS', $reportModel->getSelectedFields()); 141 $viewer->assign('SELECTED_SORT_FIELDS', $reportModel->getSelectedSortFields()); 142 $viewer->assign('SELECTED_CALCULATION_FIELDS', $reportModel->getSelectedCalculationFields()); 143 } 144 145 $data = $request->getAll(); 146 foreach ($data as $name => $value) { 147 if($name == 'schdayoftheweek' || $name == 'schdayofthemonth' || $name == 'schannualdates' || $name == 'recipients') { 148 if(is_string($value)) { // need to save these as json data 149 $value = array($value); 150 } 151 } 152 $reportModel->set($name, $value); 153 } 154 $primaryModule = $request->get('primary_module'); 155 $secondaryModules = $request->get('secondary_modules'); 156 157 $reportModel->setPrimaryModule($primaryModule); 158 if(!empty($secondaryModules)){ 159 $secondaryModules = implode(':', $secondaryModules); 160 $reportModel->setSecondaryModule($secondaryModules); 161 162 $secondaryModules = explode(':',$secondaryModules); 163 } 164 165 //TODO : We need to remove "update_log" field from "HelpDesk" module in New Look 166 // after removing old look we need to remove this field from crm 167 $primaryModuleFields = $reportModel->getPrimaryModuleFields(); 168 $secondaryModuleFields = $reportModel->getSecondaryModuleFields(); 169 if($primaryModule == 'HelpDesk'){ 170 foreach($primaryModuleFields as $module => $blockFields){ 171 foreach($blockFields as $key => $value){ 172 if(isset($value)){ 173 foreach($value as $key1 => $value1){ 174 if($key1 == 'vtiger_troubletickets:update_log:HelpDesk_Update_History:update_log:V'){ 175 unset($primaryModuleFields[$module][$key][$key1]); 176 } 177 } 178 } 179 } 180 } 181 } 182 183 if(!empty($secondaryModuleFields)){ 184 foreach($secondaryModuleFields as $module => $blockFields){ 185 if($module == 'HelpDesk'){ 186 foreach($blockFields as $key => $value){ 187 if(isset($value)){ 188 foreach($value as $key1 => $value1){ 189 if($key1 == 'vtiger_troubletickets:update_log:HelpDesk_Update_History:update_log:V'){ 190 unset($secondaryModuleFields[$module][$key][$key1]); 191 } 192 } 193 } 194 } 195 } 196 } 197 } 198 // End 199 200 $viewer->assign('RECORD_ID', $record); 201 $viewer->assign('REPORT_MODEL', $reportModel); 202 $viewer->assign('PRIMARY_MODULE',$primaryModule); 203 $viewer->assign('SECONDARY_MODULES',$secondaryModules); 204 $viewer->assign('PRIMARY_MODULE_FIELDS', $primaryModuleFields); 205 $viewer->assign('SECONDARY_MODULE_FIELDS', $secondaryModuleFields); 206 207 $viewer->assign('CALCULATION_FIELDS', $reportModel->getCalculationFields()); 208 $viewer->assign('MODULE', $moduleName); 209 210 if ($request->get('isDuplicate')) { 211 $viewer->assign('IS_DUPLICATE', true); 212 } 213 214 $viewer->view('step2.tpl', $moduleName); 215 } 216 217 function step3(Vtiger_Request $request) { 218 $viewer = $this->getViewer($request); 219 $moduleName = $request->getModule(); 220 $record = $request->get('record'); 221 222 $reportModel = Reports_Record_Model::getCleanInstance($record); 223 if (!empty($record)) { 224 $viewer->assign('SELECTED_STANDARD_FILTER_FIELDS', $reportModel->getSelectedStandardFilter()); 225 $viewer->assign('SELECTED_ADVANCED_FILTER_FIELDS', $reportModel->transformToNewAdvancedFilter()); 226 } 227 $data = $request->getAll(); 228 foreach ($data as $name => $value) { 229 if($name == 'schdayoftheweek' || $name == 'schdayofthemonth' || $name == 'schannualdates' || $name == 'recipients') { 230 $value = Zend_Json::decode($value); 231 if(!is_array($value)) { // need to save these as json data 232 $value = array($value); 233 } 234 } 235 $reportModel->set($name, $value); 236 } 237 $primaryModule = $request->get('primary_module'); 238 $secondaryModules = $request->get('secondary_modules'); 239 $reportModel->setPrimaryModule($primaryModule); 240 if(!empty($secondaryModules)){ 241 $secondaryModules = implode(':', $secondaryModules); 242 $reportModel->setSecondaryModule($secondaryModules); 243 244 $secondaryModules = explode(':',$secondaryModules); 245 }else{ 246 $secondaryModules = array(); 247 } 248 249 $viewer->assign('RECORD_ID', $record); 250 $viewer->assign('REPORT_MODEL', $reportModel); 251 $viewer->assign('PRIMARY_MODULE',$primaryModule); 252 253 $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($reportModel); 254 $primaryModuleRecordStructure = $recordStructureInstance->getPrimaryModuleRecordStructure(); 255 $secondaryModuleRecordStructures = $recordStructureInstance->getSecondaryModuleRecordStructure(); 256 257 //TODO : We need to remove "update_log" field from "HelpDesk" module in New Look 258 // after removing old look we need to remove this field from crm 259 if($primaryModule == 'HelpDesk'){ 260 foreach($primaryModuleRecordStructure as $blockLabel => $blockFields){ 261 foreach($blockFields as $field => $object){ 262 if($field == 'update_log'){ 263 unset($primaryModuleRecordStructure[$blockLabel][$field]); 264 } 265 } 266 } 267 } 268 269 if(!empty($secondaryModuleRecordStructures)){ 270 foreach($secondaryModuleRecordStructures as $module => $structure){ 271 if($module == 'HelpDesk'){ 272 foreach($structure as $blockLabel => $blockFields){ 273 foreach($blockFields as $field => $object){ 274 if($field == 'update_log'){ 275 unset($secondaryModuleRecordStructures[$module][$blockLabel][$field]); 276 } 277 } 278 } 279 } 280 } 281 } 282 // End 283 284 $viewer->assign('SECONDARY_MODULES',$secondaryModules); 285 $viewer->assign('PRIMARY_MODULE_RECORD_STRUCTURE', $primaryModuleRecordStructure); 286 $viewer->assign('SECONDARY_MODULE_RECORD_STRUCTURES', $secondaryModuleRecordStructures); 287 $dateFilters = Vtiger_Field_Model::getDateFilterTypes(); 288 foreach($dateFilters as $comparatorKey => $comparatorInfo) { 289 $comparatorInfo['startdate'] = DateTimeField::convertToUserFormat($comparatorInfo['startdate']); 290 $comparatorInfo['enddate'] = DateTimeField::convertToUserFormat($comparatorInfo['enddate']); 291 $comparatorInfo['label'] = vtranslate($comparatorInfo['label'],$moduleName); 292 $dateFilters[$comparatorKey] = $comparatorInfo; 293 } 294 $viewer->assign('DATE_FILTERS', $dateFilters); 295 296 if(($primaryModule == 'Calendar') || (in_array('Calendar', $secondaryModules))){ 297 $advanceFilterOpsByFieldType = Calendar_Field_Model::getAdvancedFilterOpsByFieldType(); 298 } else{ 299 $advanceFilterOpsByFieldType = Vtiger_Field_Model::getAdvancedFilterOpsByFieldType(); 300 } 301 $viewer->assign('ADVANCED_FILTER_OPTIONS', Vtiger_Field_Model::getAdvancedFilterOptions()); 302 $viewer->assign('ADVANCED_FILTER_OPTIONS_BY_TYPE', $advanceFilterOpsByFieldType); 303 $viewer->assign('MODULE', $moduleName); 304 305 $calculationFields = $reportModel->get('calculation_fields'); 306 if($calculationFields) { 307 $calculationFields = Zend_Json::decode($calculationFields); 308 $viewer->assign('LINEITEM_FIELD_IN_CALCULATION', $reportModel->showLineItemFieldsInFilter($calculationFields)); 309 } 310 if ($request->get('isDuplicate')) { 311 $viewer->assign('IS_DUPLICATE', true); 312 } 313 $viewer->view('step3.tpl', $moduleName); 314 } 315 316 /** 317 * Function to get the list of Script models to be included 318 * @param Vtiger_Request $request 319 * @return <Array> - List of Vtiger_JsScript_Model instances 320 */ 321 function getHeaderScripts(Vtiger_Request $request) { 322 $headerScriptInstances = parent::getHeaderScripts($request); 323 $moduleName = $request->getModule(); 324 325 $jsFileNames = array( 326 "modules.$moduleName.resources.Edit1", 327 "modules.$moduleName.resources.Edit2", 328 "modules.$moduleName.resources.Edit3", 329 '~libraries/jquery/jquery.datepick.package-4.1.0/jquery.datepick.js', 330 ); 331 332 $jsScriptInstances = $this->checkAndConvertJsScripts($jsFileNames); 333 $headerScriptInstances = array_merge($headerScriptInstances, $jsScriptInstances); 334 return $headerScriptInstances; 335 } 336 337 function getHeaderCss(Vtiger_Request $request) { 338 $headerCssInstances = parent::getHeaderCss($request); 339 $moduleName = $request->getModule(); 340 $cssFileNames = array( 341 '~libraries/jquery/jquery.datepick.package-4.1.0/jquery.datepick.css', 342 ); 343 $cssInstances = $this->checkAndConvertCssStyles($cssFileNames); 344 $headerCssInstances = array_merge($cssInstances, $headerCssInstances); 345 return $headerCssInstances; 346 } 347 348 }
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 |