[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Vtiger/views/ -> Popup.php (source)

   1  <?php
   2  /*+**********************************************************************************
   3   * The contents of this file are subject to the vtiger CRM Public License Version 1.1
   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 Vtiger_Popup_View extends Vtiger_Footer_View {
  12      protected $listViewEntries = false;
  13      protected $listViewHeaders = false;
  14  
  15  	function checkPermission(Vtiger_Request $request) {
  16          $moduleName = $request->getModule();
  17          $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  18  
  19          $currentUserPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
  20          if(!$currentUserPrivilegesModel->hasModulePermission($moduleModel->getId())) {
  21              throw new AppException(vtranslate($moduleName).' '.vtranslate('LBL_NOT_ACCESSIBLE'));
  22          }
  23      }
  24  
  25      /**
  26       * Function returns the module name for which the popup should be initialized
  27       * @param Vtiger_request $request
  28       * @return <String>
  29       */
  30  	function getModule(Vtiger_request $request) {
  31          $moduleName = $request->getModule();
  32          return $moduleName;
  33      }
  34  
  35  	function process (Vtiger_Request $request) {
  36          $viewer = $this->getViewer ($request);
  37          $moduleName = $this->getModule($request);
  38          $companyDetails = Vtiger_CompanyDetails_Model::getInstanceById();
  39          $companyLogo = $companyDetails->getLogo();
  40  
  41          $this->initializeListViewContents($request, $viewer);
  42  
  43          $viewer->assign('COMPANY_LOGO',$companyLogo);
  44  
  45          $viewer->view('Popup.tpl', $moduleName);
  46      }
  47  
  48  	function postProcess(Vtiger_Request $request) {
  49          $viewer = $this->getViewer ($request);
  50          $moduleName = $this->getModule($request);
  51          $viewer->view('PopupFooter.tpl', $moduleName);
  52      }
  53  
  54      /**
  55       * Function to get the list of Script models to be included
  56       * @param Vtiger_Request $request
  57       * @return <Array> - List of Vtiger_JsScript_Model instances
  58       */
  59  	function getHeaderScripts(Vtiger_Request $request) {
  60          $headerScriptInstances = parent::getHeaderScripts($request);
  61          $moduleName = $request->getModule();
  62  
  63          $jsFileNames = array(
  64              'modules.Vtiger.resources.Popup',
  65              "modules.$moduleName.resources.Popup",
  66              'modules.Vtiger.resources.BaseList',
  67              "modules.$moduleName.resources.BaseList",
  68              'libraries.jquery.jquery_windowmsg',
  69              'modules.Vtiger.resources.validator.BaseValidator',
  70              'modules.Vtiger.resources.validator.FieldValidator',
  71              "modules.$moduleName.resources.validator.FieldValidator"
  72          );
  73  
  74          $jsScriptInstances = $this->checkAndConvertJsScripts($jsFileNames);
  75          $headerScriptInstances = array_merge($headerScriptInstances, $jsScriptInstances);
  76          return $headerScriptInstances;
  77      }
  78  
  79      /*
  80       * Function to initialize the required data in smarty to display the List View Contents
  81       */
  82  	public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer) {
  83          $moduleName = $this->getModule($request);
  84          $cvId = $request->get('cvid');
  85          $pageNumber = $request->get('page');
  86          $orderBy = $request->get('orderby');
  87          $sortOrder = $request->get('sortorder');
  88          $sourceModule = $request->get('src_module');
  89          $sourceField = $request->get('src_field');
  90          $sourceRecord = $request->get('src_record');
  91          $searchKey = $request->get('search_key');
  92          $searchValue = $request->get('search_value');
  93          $currencyId = $request->get('currency_id');
  94          $relatedParentModule = $request->get('related_parent_module');
  95          $relatedParentId = $request->get('related_parent_id');
  96  
  97          //To handle special operation when selecting record from Popup
  98          $getUrl = $request->get('get_url');
  99  
 100          //Check whether the request is in multi select mode
 101          $multiSelectMode = $request->get('multi_select');
 102          if(empty($multiSelectMode)) {
 103              $multiSelectMode = false;
 104          }
 105  
 106          if(empty($cvId)) {
 107              $cvId = '0';
 108          }
 109          if(empty ($pageNumber)){
 110              $pageNumber = '1';
 111          }
 112  
 113          $pagingModel = new Vtiger_Paging_Model();
 114          $pagingModel->set('page', $pageNumber);
 115  
 116          $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
 117          $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel);
 118          
 119          $isRecordExists = Vtiger_Util_Helper::checkRecordExistance($relatedParentId);
 120          
 121          if($isRecordExists) {
 122              $relatedParentModule = '';
 123              $relatedParentId = '';
 124          } else if($isRecordExists === NULL) {
 125              $relatedParentModule = '';
 126              $relatedParentId = '';
 127          }
 128          
 129          if(!empty($relatedParentModule) && !empty($relatedParentId)) {
 130              $parentRecordModel = Vtiger_Record_Model::getInstanceById($relatedParentId, $relatedParentModule);
 131              $listViewModel = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $moduleName, $label);
 132          }else{
 133              $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName);
 134          }
 135  
 136          if(!empty($orderBy)) {
 137              $listViewModel->set('orderby', $orderBy);
 138              $listViewModel->set('sortorder', $sortOrder);
 139          }
 140          if(!empty($sourceModule)) {
 141              $listViewModel->set('src_module', $sourceModule);
 142              $listViewModel->set('src_field', $sourceField);
 143              $listViewModel->set('src_record', $sourceRecord);
 144          }
 145          if((!empty($searchKey)) && (!empty($searchValue)))  {
 146              $listViewModel->set('search_key', $searchKey);
 147              $listViewModel->set('search_value', $searchValue);
 148          }
 149  
 150          if(!empty($relatedParentModule) && !empty($relatedParentId)) {
 151              $this->listViewHeaders = $listViewModel->getHeaders();
 152              
 153              $models = $listViewModel->getEntries($pagingModel);
 154              $noOfEntries = count($models);
 155              foreach ($models as $recordId => $recordModel) {
 156                  foreach ($this->listViewHeaders as $fieldName => $fieldModel) {
 157                      $recordModel->set($fieldName, $recordModel->getDisplayValue($fieldName));
 158                  }
 159                  $models[$recordId] = $recordModel;
 160              }
 161              $this->listViewEntries = $models;
 162              if(count($this->listViewEntries) > 0 ){
 163                  $parent_related_records = true;
 164              }
 165          }else{
 166              $this->listViewHeaders = $listViewModel->getListViewHeaders();
 167              $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
 168          }
 169          
 170          // If there are no related records with parent module then, we should show all the records
 171          if(!$parent_related_records && !empty($relatedParentModule) && !empty($relatedParentId)){
 172              $relatedParentModule = null;
 173              $relatedParentId = null;
 174              $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName);
 175              
 176              if(!empty($orderBy)) {
 177                  $listViewModel->set('orderby', $orderBy);
 178                  $listViewModel->set('sortorder', $sortOrder);
 179              }
 180              if(!empty($sourceModule)) {
 181                  $listViewModel->set('src_module', $sourceModule);
 182                  $listViewModel->set('src_field', $sourceField);
 183                  $listViewModel->set('src_record', $sourceRecord);
 184              }
 185              if((!empty($searchKey)) && (!empty($searchValue)))  {
 186                  $listViewModel->set('search_key', $searchKey);
 187                  $listViewModel->set('search_value', $searchValue);
 188              }
 189              $this->listViewHeaders = $listViewModel->getListViewHeaders();
 190              $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
 191          }
 192          // End
 193          
 194          $noOfEntries = count($this->listViewEntries);
 195          
 196          if(empty($sortOrder)){
 197              $sortOrder = "ASC";
 198          }
 199          if($sortOrder == "ASC"){
 200              $nextSortOrder = "DESC";
 201              $sortImage = "downArrowSmall.png";
 202          }else{
 203              $nextSortOrder = "ASC";
 204              $sortImage = "upArrowSmall.png";
 205          }
 206          $viewer->assign('MODULE', $moduleName);
 207          $viewer->assign('RELATED_MODULE', $moduleName);
 208          $viewer->assign('MODULE_NAME',$moduleName);
 209  
 210          $viewer->assign('SOURCE_MODULE', $sourceModule);
 211          $viewer->assign('SOURCE_FIELD', $sourceField);
 212          $viewer->assign('SOURCE_RECORD', $sourceRecord);
 213          $viewer->assign('RELATED_PARENT_MODULE', $relatedParentModule);
 214          $viewer->assign('RELATED_PARENT_ID', $relatedParentId);
 215  
 216          $viewer->assign('SEARCH_KEY', $searchKey);
 217          $viewer->assign('SEARCH_VALUE', $searchValue);
 218  
 219          $viewer->assign('ORDER_BY',$orderBy);
 220          $viewer->assign('SORT_ORDER',$sortOrder);
 221          $viewer->assign('NEXT_SORT_ORDER',$nextSortOrder);
 222          $viewer->assign('SORT_IMAGE',$sortImage);
 223          $viewer->assign('GETURL', $getUrl);
 224          $viewer->assign('CURRENCY_ID', $currencyId);
 225  
 226          $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance);
 227          $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
 228  
 229          $viewer->assign('PAGING_MODEL', $pagingModel);
 230          $viewer->assign('PAGE_NUMBER',$pageNumber);
 231  
 232          $viewer->assign('LISTVIEW_ENTRIES_COUNT',$noOfEntries);
 233          $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
 234          $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
 235          
 236          if (PerformancePrefs::getBoolean('LISTVIEW_COMPUTE_PAGE_COUNT', false)) {
 237              if(!$this->listViewCount){
 238                  $this->listViewCount = $listViewModel->getListViewCount();
 239              }
 240              $totalCount = $this->listViewCount;
 241              $pageLimit = $pagingModel->getPageLimit();
 242              $pageCount = ceil((int) $totalCount / (int) $pageLimit);
 243  
 244              if($pageCount == 0){
 245                  $pageCount = 1;
 246              }
 247              $viewer->assign('PAGE_COUNT', $pageCount);
 248              $viewer->assign('LISTVIEW_COUNT', $totalCount);
 249          }
 250  
 251          $viewer->assign('MULTI_SELECT', $multiSelectMode);
 252          $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel());
 253      }
 254      
 255      /**
 256       * Function to get listView count
 257       * @param Vtiger_Request $request
 258       */
 259  	function getListViewCount(Vtiger_Request $request){
 260          $moduleName = $this->getModule($request);
 261          $sourceModule = $request->get('src_module');
 262          $sourceField = $request->get('src_field');
 263          $sourceRecord = $request->get('src_record');
 264          $orderBy = $request->get('orderby');
 265          $sortOrder = $request->get('sortorder');
 266          $currencyId = $request->get('currency_id');
 267  
 268          $searchKey = $request->get('search_key');
 269          $searchValue = $request->get('search_value');
 270          
 271          $relatedParentModule = $request->get('related_parent_module');
 272          $relatedParentId = $request->get('related_parent_id');
 273  
 274          if(!empty($relatedParentModule) && !empty($relatedParentId)) {
 275              $parentRecordModel = Vtiger_Record_Model::getInstanceById($relatedParentId, $relatedParentModule);
 276              $listViewModel = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $moduleName, $label);
 277          }else{
 278              $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName);
 279          }
 280          
 281          if(!empty($sourceModule)) {
 282              $listViewModel->set('src_module', $sourceModule);
 283              $listViewModel->set('src_field', $sourceField);
 284              $listViewModel->set('src_record', $sourceRecord);
 285              $listViewModel->set('currency_id', $currencyId);
 286          }
 287          
 288          if(!empty($orderBy)) {
 289              $listViewModel->set('orderby', $orderBy);
 290              $listViewModel->set('sortorder', $sortOrder);
 291          }
 292          if((!empty($searchKey)) && (!empty($searchValue)))  {
 293              $listViewModel->set('search_key', $searchKey);
 294              $listViewModel->set('search_value', $searchValue);
 295          }
 296          if(!empty($relatedParentModule) && !empty($relatedParentId)) {
 297              $count = $listViewModel->getRelatedEntriesCount();
 298          }else{
 299              $count = $listViewModel->getListViewCount();
 300          }
 301          
 302          return $count;
 303      }
 304      
 305      /**
 306       * Function to get the page count for list
 307       * @return total number of pages
 308       */
 309  	function getPageCount(Vtiger_Request $request){
 310          $listViewCount = $this->getListViewCount($request);
 311          $pagingModel = new Vtiger_Paging_Model();
 312          $pageLimit = $pagingModel->getPageLimit();
 313          $pageCount = ceil((int) $listViewCount / (int) $pageLimit);
 314  
 315          if($pageCount == 0){
 316              $pageCount = 1;
 317          }
 318          $result = array();
 319          $result['page'] = $pageCount;
 320          $result['numberOfRecords'] = $listViewCount;
 321          $response = new Vtiger_Response();
 322          $response->setResult($result);
 323          $response->emit();
 324      }
 325  }


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