/modules/Vtiger/views/List.php
PHP | 256 lines | 176 code | 45 blank | 35 comment | 15 complexity | 0b58353bdb1c4112b337f1fb7009f93e MD5 | raw file
Possible License(s): Apache-2.0, LGPL-3.0, LGPL-2.1, GPL-2.0, GPL-3.0
- <?php
- /*+**********************************************************************************
- * The contents of this file are subject to the vtiger CRM Public License Version 1.1
- * ("License"); You may not use this file except in compliance with the License
- * The Original Code is: vtiger CRM Open Source
- * The Initial Developer of the Original Code is vtiger.
- * Portions created by vtiger are Copyright (C) vtiger.
- * All Rights Reserved.
- ************************************************************************************/
- class Vtiger_List_View extends Vtiger_Index_View {
- protected $listViewEntries = false;
- protected $listViewCount = false;
- protected $listViewLinks = false;
- protected $listViewHeaders = false;
- function __construct() {
- parent::__construct();
- }
- function preProcess(Vtiger_Request $request, $display=true) {
- parent::preProcess($request, false);
- $viewer = $this->getViewer ($request);
- $moduleName = $request->getModule();
- $listViewModel = Vtiger_ListView_Model::getInstance($moduleName);
- $linkParams = array('MODULE'=>$moduleName, 'ACTION'=>$request->get('view'));
- $viewer->assign('CUSTOM_VIEWS', CustomView_Record_Model::getAllByGroup($moduleName));
- $this->viewName = $request->get('viewname');
- if(empty($this->viewName)){
- //If not view name exits then get it from custom view
- //This can return default view id or view id present in session
- $customView = new CustomView();
- $this->viewName = $customView->getViewId($moduleName);
- }
- $quickLinkModels = $listViewModel->getSideBarLinks($linkParams);
- $viewer->assign('QUICK_LINKS', $quickLinkModels);
- $this->initializeListViewContents($request, $viewer);
- $viewer->assign('VIEWID', $this->viewName);
- if($display) {
- $this->preProcessDisplay($request);
- }
- }
- function preProcessTplName(Vtiger_Request $request) {
- return 'ListViewPreProcess.tpl';
- }
- //Note : To get the right hook for immediate parent in PHP,
- // specially in case of deep hierarchy
- /*function preProcessParentTplName(Vtiger_Request $request) {
- return parent::preProcessTplName($request);
- }*/
- protected function preProcessDisplay(Vtiger_Request $request) {
- parent::preProcessDisplay($request);
- }
- function process (Vtiger_Request $request) {
- $viewer = $this->getViewer ($request);
- $moduleName = $request->getModule();
- $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
- $this->viewName = $request->get('viewname');
-
- $this->initializeListViewContents($request, $viewer);
- $viewer->assign('VIEW', $request->get('view'));
- $viewer->assign('MODULE_MODEL', $moduleModel);
- $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel());
- $viewer->view('ListViewContents.tpl', $moduleName);
- }
- function postProcess(Vtiger_Request $request) {
- $viewer = $this->getViewer ($request);
- $moduleName = $request->getModule();
- $viewer->view('ListViewPostProcess.tpl', $moduleName);
- parent::postProcess($request);
- }
- /**
- * Function to get the list of Script models to be included
- * @param Vtiger_Request $request
- * @return <Array> - List of Vtiger_JsScript_Model instances
- */
- function getHeaderScripts(Vtiger_Request $request) {
- $headerScriptInstances = parent::getHeaderScripts($request);
- $moduleName = $request->getModule();
- $jsFileNames = array(
- 'modules.Vtiger.resources.List',
- "modules.$moduleName.resources.List",
- 'modules.CustomView.resources.CustomView',
- "modules.$moduleName.resources.CustomView",
- "modules.Emails.resources.MassEdit",
- "modules.Vtiger.resources.CkEditor"
- );
- $jsScriptInstances = $this->checkAndConvertJsScripts($jsFileNames);
- $headerScriptInstances = array_merge($headerScriptInstances, $jsScriptInstances);
- return $headerScriptInstances;
- }
- /*
- * Function to initialize the required data in smarty to display the List View Contents
- */
- public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer) {
- $moduleName = $request->getModule();
- $cvId = $this->viewName;
- $pageNumber = $request->get('page');
- $orderBy = $request->get('orderby');
- $sortOrder = $request->get('sortorder');
- if($sortOrder == "ASC"){
- $nextSortOrder = "DESC";
- $sortImage = "icon-chevron-down";
- }else{
- $nextSortOrder = "ASC";
- $sortImage = "icon-chevron-up";
- }
- if(empty ($pageNumber)){
- $pageNumber = '1';
- }
- $listViewModel = Vtiger_ListView_Model::getInstance($moduleName, $cvId);
- $linkParams = array('MODULE'=>$moduleName, 'ACTION'=>$request->get('view'), 'CVID'=>$cvId);
- $linkModels = $listViewModel->getListViewMassActions($linkParams);
- $pagingModel = new Vtiger_Paging_Model();
- $pagingModel->set('page', $pageNumber);
- if(!empty($orderBy)) {
- $listViewModel->set('orderby', $orderBy);
- $listViewModel->set('sortorder',$sortOrder);
- }
- $searchKey = $request->get('search_key');
- $searchValue = $request->get('search_value');
- $operator = $request->get('operator');
- if(!empty($operator)) {
- $listViewModel->set('operator', $operator);
- $viewer->assign('OPERATOR',$operator);
- $viewer->assign('ALPHABET_VALUE',$searchValue);
- }
- if(!empty($searchKey) && !empty($searchValue)) {
- $listViewModel->set('search_key', $searchKey);
- $listViewModel->set('search_value', $searchValue);
- }
- if(!$this->listViewHeaders){
- $this->listViewHeaders = $listViewModel->getListViewHeaders();
- }
- if(!$this->listViewEntries){
- $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
- }
- $noOfEntries = count($this->listViewEntries);
- $viewer->assign('MODULE', $moduleName);
- if(!$this->listViewLinks){
- $this->listViewLinks = $listViewModel->getListViewLinks($linkParams);
- }
- $viewer->assign('LISTVIEW_LINKS', $this->listViewLinks);
- $viewer->assign('LISTVIEW_MASSACTIONS', $linkModels['LISTVIEWMASSACTION']);
- $viewer->assign('PAGING_MODEL', $pagingModel);
- $viewer->assign('PAGE_NUMBER',$pageNumber);
- $viewer->assign('ORDER_BY',$orderBy);
- $viewer->assign('SORT_ORDER',$sortOrder);
- $viewer->assign('NEXT_SORT_ORDER',$nextSortOrder);
- $viewer->assign('SORT_IMAGE',$sortImage);
- $viewer->assign('COLUMN_NAME',$orderBy);
- $viewer->assign('LISTVIEW_ENTIRES_COUNT',$noOfEntries);
- $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
- $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
- if (PerformancePrefs::getBoolean('LISTVIEW_COMPUTE_PAGE_COUNT', false)) {
- if(!$this->listViewCount){
- $this->listViewCount = $listViewModel->getListViewCount();
- }
- $viewer->assign('LISTVIEW_COUNT', $this->listViewCount);
- }
- $viewer->assign('IS_MODULE_EDITABLE', $listViewModel->getModule()->isPermitted('EditView'));
- $viewer->assign('IS_MODULE_DELETABLE', $listViewModel->getModule()->isPermitted('Delete'));
- }
- /**
- * Function returns the number of records for the current filter
- * @param Vtiger_Request $request
- */
- function getRecordsCount(Vtiger_Request $request) {
- $moduleName = $request->getModule();
- $cvId = $request->get('viewname');
- $count = $this->getListViewCount($request);
- $result = array();
- $result['module'] = $moduleName;
- $result['viewname'] = $cvId;
- $result['count'] = $count;
- $response = new Vtiger_Response();
- $response->setEmitType(Vtiger_Response::$EMIT_JSON);
- $response->setResult($result);
- $response->emit();
- }
- /**
- * Function to get listView count
- * @param Vtiger_Request $request
- */
- function getListViewCount(Vtiger_Request $request){
- $moduleName = $request->getModule();
- $cvId = $request->get('viewname');
- if(empty($cvId)) {
- $cvId = '0';
- }
- $searchKey = $request->get('search_key');
- $searchValue = $request->get('search_value');
- $listViewModel = Vtiger_ListView_Model::getInstance($moduleName, $cvId);
- $listViewModel->set('search_key', $searchKey);
- $listViewModel->set('search_value', $searchValue);
- $listViewModel->set('operator', $request->get('operator'));
- $count = $listViewModel->getListViewCount();
- return $count;
- }
- /**
- * Function to get the page count for list
- * @return total number of pages
- */
- function getPageCount(Vtiger_Request $request){
- $listViewCount = $this->getListViewCount($request);
- $pagingModel = new Vtiger_Paging_Model();
- $pageLimit = $pagingModel->getPageLimit();
- $pageCount = ceil((int) $listViewCount / (int) $pageLimit);
- $result = array();
- $result['page'] = $pageCount;
- $response = new Vtiger_Response();
- $response->setResult($result);
- $response->emit();
- }
- }