[ 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.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 }
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 |