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