[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Vtiger/views/ -> List.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_List_View extends Vtiger_Index_View {
  12      protected $listViewEntries = false;
  13      protected $listViewCount = false;
  14      protected $listViewLinks = false;
  15      protected $listViewHeaders = false;
  16  	function __construct() {
  17          parent::__construct();
  18      }
  19  
  20  	function preProcess(Vtiger_Request $request, $display=true) {
  21          parent::preProcess($request, false);
  22  
  23          $viewer = $this->getViewer ($request);
  24          $moduleName = $request->getModule();
  25  
  26          $listViewModel = Vtiger_ListView_Model::getInstance($moduleName);
  27          $linkParams = array('MODULE'=>$moduleName, 'ACTION'=>$request->get('view'));
  28          $viewer->assign('CUSTOM_VIEWS', CustomView_Record_Model::getAllByGroup($moduleName));
  29          $this->viewName = $request->get('viewname');
  30          if(empty($this->viewName)){
  31              //If not view name exits then get it from custom view
  32              //This can return default view id or view id present in session
  33              $customView = new CustomView();
  34              $this->viewName = $customView->getViewId($moduleName);
  35          }
  36  
  37          $quickLinkModels = $listViewModel->getSideBarLinks($linkParams);
  38          $viewer->assign('QUICK_LINKS', $quickLinkModels);
  39          $this->initializeListViewContents($request, $viewer);
  40          $viewer->assign('VIEWID', $this->viewName);
  41  
  42          if($display) {
  43              $this->preProcessDisplay($request);
  44          }
  45      }
  46  
  47  	function preProcessTplName(Vtiger_Request $request) {
  48          return 'ListViewPreProcess.tpl';
  49      }
  50  
  51      //Note : To get the right hook for immediate parent in PHP,
  52      // specially in case of deep hierarchy
  53      /*function preProcessParentTplName(Vtiger_Request $request) {
  54          return parent::preProcessTplName($request);
  55      }*/
  56  
  57  	protected function preProcessDisplay(Vtiger_Request $request) {
  58          parent::preProcessDisplay($request);
  59      }
  60  
  61  
  62  	function process (Vtiger_Request $request) {
  63          $viewer = $this->getViewer ($request);
  64          $moduleName = $request->getModule();
  65          $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  66          $this->viewName = $request->get('viewname');
  67  
  68          $this->initializeListViewContents($request, $viewer);
  69          $viewer->assign('VIEW', $request->get('view'));
  70          $viewer->assign('MODULE_MODEL', $moduleModel);
  71          $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel());
  72          $viewer->view('ListViewContents.tpl', $moduleName);
  73      }
  74  
  75  	function postProcess(Vtiger_Request $request) {
  76          $viewer = $this->getViewer ($request);
  77          $moduleName = $request->getModule();
  78  
  79          $viewer->view('ListViewPostProcess.tpl', $moduleName);
  80          parent::postProcess($request);
  81      }
  82  
  83      /**
  84       * Function to get the list of Script models to be included
  85       * @param Vtiger_Request $request
  86       * @return <Array> - List of Vtiger_JsScript_Model instances
  87       */
  88  	function getHeaderScripts(Vtiger_Request $request) {
  89          $headerScriptInstances = parent::getHeaderScripts($request);
  90          $moduleName = $request->getModule();
  91  
  92          $jsFileNames = array(
  93              'modules.Vtiger.resources.List',
  94              "modules.$moduleName.resources.List",
  95              'modules.CustomView.resources.CustomView',
  96              "modules.$moduleName.resources.CustomView",
  97              "modules.Emails.resources.MassEdit",
  98              "modules.Vtiger.resources.CkEditor"
  99          );
 100  
 101          $jsScriptInstances = $this->checkAndConvertJsScripts($jsFileNames);
 102          $headerScriptInstances = array_merge($headerScriptInstances, $jsScriptInstances);
 103          return $headerScriptInstances;
 104      }
 105  
 106      /*
 107       * Function to initialize the required data in smarty to display the List View Contents
 108       */
 109  	public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer) {
 110          $moduleName = $request->getModule();
 111          $cvId = $this->viewName;
 112          $pageNumber = $request->get('page');
 113          $orderBy = $request->get('orderby');
 114          $sortOrder = $request->get('sortorder');
 115          if($sortOrder == "ASC"){
 116              $nextSortOrder = "DESC";
 117              $sortImage = "icon-chevron-down";
 118          }else{
 119              $nextSortOrder = "ASC";
 120              $sortImage = "icon-chevron-up";
 121          }
 122  
 123          if(empty ($pageNumber)){
 124              $pageNumber = '1';
 125          }
 126  
 127          $listViewModel = Vtiger_ListView_Model::getInstance($moduleName, $cvId);
 128          $currentUser = Users_Record_Model::getCurrentUserModel();
 129  
 130          $linkParams = array('MODULE'=>$moduleName, 'ACTION'=>$request->get('view'), 'CVID'=>$cvId);
 131          $linkModels = $listViewModel->getListViewMassActions($linkParams);
 132  
 133          $pagingModel = new Vtiger_Paging_Model();
 134          $pagingModel->set('page', $pageNumber);
 135          $pagingModel->set('viewid', $request->get('viewname'));
 136  
 137          if(!empty($orderBy)) {
 138              $listViewModel->set('orderby', $orderBy);
 139              $listViewModel->set('sortorder',$sortOrder);
 140          }
 141  
 142          $searchKey = $request->get('search_key');
 143          $searchValue = $request->get('search_value');
 144          $operator = $request->get('operator');
 145          if(!empty($operator)) {
 146              $listViewModel->set('operator', $operator);
 147              $viewer->assign('OPERATOR',$operator);
 148              $viewer->assign('ALPHABET_VALUE',$searchValue);
 149          }
 150          if(!empty($searchKey) && !empty($searchValue)) {
 151              $listViewModel->set('search_key', $searchKey);
 152              $listViewModel->set('search_value', $searchValue);
 153          }
 154  
 155          $searchParmams = $request->get('search_params');
 156          if(empty($searchParmams)) {
 157              $searchParmams = array();
 158          }
 159          $transformedSearchParams = $this->transferListSearchParamsToFilterCondition($searchParmams, $listViewModel->getModule());
 160          $listViewModel->set('search_params',$transformedSearchParams);
 161  
 162  
 163          //To make smarty to get the details easily accesible
 164          foreach($searchParmams as $fieldListGroup){
 165              foreach($fieldListGroup as $fieldSearchInfo){
 166                  $fieldSearchInfo['searchValue'] = $fieldSearchInfo[2];
 167                  $fieldSearchInfo['fieldName'] = $fieldName = $fieldSearchInfo[0];
 168                  $searchParmams[$fieldName] = $fieldSearchInfo;
 169              }
 170          }
 171  
 172  
 173          if(!$this->listViewHeaders){
 174              $this->listViewHeaders = $listViewModel->getListViewHeaders();
 175          }
 176          if(!$this->listViewEntries){
 177              $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
 178          }
 179          $noOfEntries = count($this->listViewEntries);
 180  
 181          $viewer->assign('MODULE', $moduleName);
 182  
 183          if(!$this->listViewLinks){
 184              $this->listViewLinks = $listViewModel->getListViewLinks($linkParams);
 185          }
 186          $viewer->assign('LISTVIEW_LINKS', $this->listViewLinks);
 187  
 188          $viewer->assign('LISTVIEW_MASSACTIONS', $linkModels['LISTVIEWMASSACTION']);
 189  
 190          $viewer->assign('PAGING_MODEL', $pagingModel);
 191          $viewer->assign('PAGE_NUMBER',$pageNumber);
 192  
 193          $viewer->assign('ORDER_BY',$orderBy);
 194          $viewer->assign('SORT_ORDER',$sortOrder);
 195          $viewer->assign('NEXT_SORT_ORDER',$nextSortOrder);
 196          $viewer->assign('SORT_IMAGE',$sortImage);
 197          $viewer->assign('COLUMN_NAME',$orderBy);
 198  
 199          $viewer->assign('LISTVIEW_ENTRIES_COUNT',$noOfEntries);
 200          $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
 201          $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
 202  
 203          if (PerformancePrefs::getBoolean('LISTVIEW_COMPUTE_PAGE_COUNT', false)) {
 204              if(!$this->listViewCount){
 205                  $this->listViewCount = $listViewModel->getListViewCount();
 206              }
 207              $totalCount = $this->listViewCount;
 208              $pageLimit = $pagingModel->getPageLimit();
 209              $pageCount = ceil((int) $totalCount / (int) $pageLimit);
 210  
 211              if($pageCount == 0){
 212                  $pageCount = 1;
 213              }
 214              $viewer->assign('PAGE_COUNT', $pageCount);
 215              $viewer->assign('LISTVIEW_COUNT', $totalCount);
 216          }
 217          $viewer->assign('LIST_VIEW_MODEL', $listViewModel);
 218          $viewer->assign('GROUPS_IDS', Vtiger_Util_Helper::getGroupsIdsForUsers($currentUser->getId()));
 219          $viewer->assign('IS_MODULE_EDITABLE', $listViewModel->getModule()->isPermitted('EditView'));
 220          $viewer->assign('IS_MODULE_DELETABLE', $listViewModel->getModule()->isPermitted('Delete'));
 221          $viewer->assign('SEARCH_DETAILS', $searchParmams);
 222      }
 223  
 224      /**
 225       * Function returns the number of records for the current filter
 226       * @param Vtiger_Request $request
 227       */
 228  	function getRecordsCount(Vtiger_Request $request) {
 229          $moduleName = $request->getModule();
 230          $cvId = $request->get('viewname');
 231          $count = $this->getListViewCount($request);
 232  
 233          $result = array();
 234          $result['module'] = $moduleName;
 235          $result['viewname'] = $cvId;
 236          $result['count'] = $count;
 237  
 238          $response = new Vtiger_Response();
 239          $response->setEmitType(Vtiger_Response::$EMIT_JSON);
 240          $response->setResult($result);
 241          $response->emit();
 242      }
 243  
 244      /**
 245       * Function to get listView count
 246       * @param Vtiger_Request $request
 247       */
 248  	function getListViewCount(Vtiger_Request $request){
 249          $moduleName = $request->getModule();
 250          $cvId = $request->get('viewname');
 251          if(empty($cvId)) {
 252              $cvId = '0';
 253          }
 254  
 255          $searchKey = $request->get('search_key');
 256          $searchValue = $request->get('search_value');
 257  
 258          $listViewModel = Vtiger_ListView_Model::getInstance($moduleName, $cvId);
 259  
 260          $searchParmams = $request->get('search_params');
 261          $listViewModel->set('search_params',$this->transferListSearchParamsToFilterCondition($searchParmams, $listViewModel->getModule()));
 262  
 263          $listViewModel->set('search_key', $searchKey);
 264          $listViewModel->set('search_value', $searchValue);
 265          $listViewModel->set('operator', $request->get('operator'));
 266  
 267          $count = $listViewModel->getListViewCount();
 268  
 269          return $count;
 270      }
 271  
 272  
 273  
 274      /**
 275       * Function to get the page count for list
 276       * @return total number of pages
 277       */
 278  	function getPageCount(Vtiger_Request $request){
 279          $listViewCount = $this->getListViewCount($request);
 280          $pagingModel = new Vtiger_Paging_Model();
 281          $pageLimit = $pagingModel->getPageLimit();
 282          $pageCount = ceil((int) $listViewCount / (int) $pageLimit);
 283  
 284          if($pageCount == 0){
 285              $pageCount = 1;
 286          }
 287          $result = array();
 288          $result['page'] = $pageCount;
 289          $result['numberOfRecords'] = $listViewCount;
 290          $response = new Vtiger_Response();
 291          $response->setResult($result);
 292          $response->emit();
 293      }
 294  
 295  
 296      public function transferListSearchParamsToFilterCondition($listSearchParams, $moduleModel) {
 297          return Vtiger_Util_Helper::transferListSearchParamsToFilterCondition($listSearchParams, $moduleModel);
 298      }
 299  }


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