[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Reports/views/ -> Edit.php (source)

   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  }


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1