[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Vtiger/views/ -> BasicAjax.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_BasicAjax_View extends Vtiger_Basic_View {
  12  
  13  	function __construct() {
  14          parent::__construct();
  15          $this->exposeMethod('showAdvancedSearch');
  16          $this->exposeMethod('showSearchResults');
  17      }
  18  
  19  	function checkPermission() { }
  20  
  21  	function preProcess(Vtiger_Request $request) {
  22          return true;
  23      }
  24  
  25  	function postProcess(Vtiger_Request $request) {
  26          return true;
  27      }
  28  
  29  	function process(Vtiger_Request $request) {
  30          $mode = $request->get('mode');
  31          if(!empty($mode)) {
  32              $this->invokeExposedMethod($mode, $request);
  33          }
  34          return;
  35      }
  36  
  37      /**
  38       * Function to display the UI for advance search on any of the module
  39       * @param Vtiger_Request $request
  40       */
  41  	function showAdvancedSearch(Vtiger_Request $request) {
  42          //Modules for which search is excluded
  43          $excludedModuleForSearch = array('Vtiger', 'Reports');
  44  
  45          $viewer = $this->getViewer($request);
  46          $moduleName = $request->getModule();
  47          
  48          if($request->get('source_module')) {
  49              $moduleName = $request->get('source_module');
  50          }
  51          
  52          $saveFilterPermitted = true;
  53          $saveFilterexcludedModules =  array('ModComments','RSS','Portal','Integration','PBXManager','DashBoard');
  54          if(in_array($moduleName, $saveFilterexcludedModules)){
  55              $saveFilterPermitted = false;
  56          }
  57          
  58          //See if it is an excluded module, If so search in home module
  59          if(in_array($moduleName, $excludedModuleForSearch)) {
  60              $moduleName = 'Home';
  61          }
  62          $module = $request->getModule();
  63  
  64          $customViewModel = new CustomView_Record_Model();
  65          $customViewModel->setModule($moduleName);
  66          $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  67          $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel);
  68  
  69          $viewer->assign('SEARCHABLE_MODULES', Vtiger_Module_Model::getSearchableModules());
  70          $viewer->assign('CUSTOMVIEW_MODEL', $customViewModel);
  71          
  72          if($moduleName == 'Calendar'){
  73              $advanceFilterOpsByFieldType = Calendar_Field_Model::getAdvancedFilterOpsByFieldType();
  74          } else{
  75              $advanceFilterOpsByFieldType = Vtiger_Field_Model::getAdvancedFilterOpsByFieldType();
  76          }
  77          $viewer->assign('ADVANCED_FILTER_OPTIONS', Vtiger_Field_Model::getAdvancedFilterOptions());
  78          $viewer->assign('ADVANCED_FILTER_OPTIONS_BY_TYPE', $advanceFilterOpsByFieldType);
  79          $dateFilters = Vtiger_Field_Model::getDateFilterTypes();
  80          foreach($dateFilters as $comparatorKey => $comparatorInfo) {
  81              $comparatorInfo['startdate'] = DateTimeField::convertToUserFormat($comparatorInfo['startdate']);
  82              $comparatorInfo['enddate'] = DateTimeField::convertToUserFormat($comparatorInfo['enddate']);
  83              $comparatorInfo['label'] = vtranslate($comparatorInfo['label'],$module);
  84              $dateFilters[$comparatorKey] = $comparatorInfo;
  85          }
  86          $viewer->assign('DATE_FILTERS', $dateFilters);
  87          $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
  88          $viewer->assign('SOURCE_MODULE',$moduleName);
  89          $viewer->assign('SOURCE_MODULE_MODEL', $moduleModel);
  90          $viewer->assign('MODULE', $module);
  91          
  92          $viewer->assign('SAVE_FILTER_PERMITTED', $saveFilterPermitted);
  93  
  94          echo $viewer->view('AdvanceSearch.tpl',$moduleName, true);
  95      }
  96  
  97      /**
  98       * Function to display the Search Results
  99       * @param Vtiger_Request $request
 100       */
 101  	function showSearchResults(Vtiger_Request $request) {
 102          $db = PearDatabase::getInstance();
 103  
 104          $viewer = $this->getViewer($request);
 105          $moduleName = $request->getModule();
 106          $advFilterList = $request->get('advfilterlist');
 107  
 108          //used to show the save modify filter option
 109          $isAdvanceSearch = false;
 110          $matchingRecords = array();
 111          if(is_array($advFilterList) && count($advFilterList) > 0) {
 112              $isAdvanceSearch = true;
 113              $user = Users_Record_Model::getCurrentUserModel();
 114              $queryGenerator = new QueryGenerator($moduleName, $user);
 115              $queryGenerator->setFields(array('id'));
 116            
 117              vimport('~~/modules/CustomView/CustomView.php');
 118              $customView = new CustomView($moduleName);
 119              $dateSpecificConditions = $customView->getStdFilterConditions();
 120  
 121              foreach ($advFilterList as $groupindex=>$groupcolumns) {
 122                  $filtercolumns = $groupcolumns['columns'];
 123                  if(count($filtercolumns) > 0) {
 124                      $queryGenerator->startGroup('');
 125                      foreach ($filtercolumns as $index=>$filter) {
 126                          $nameComponents = explode(':',$filter['columnname']);
 127                          if(empty($nameComponents[2]) && $nameComponents[1] == 'crmid' && $nameComponents[0] == 'vtiger_crmentity') {
 128                              $name = $queryGenerator->getSQLColumn('id');
 129                          } else {
 130                              $name = $nameComponents[2];
 131                          }
 132                          if(($nameComponents[4] == 'D' || $nameComponents[4] == 'DT') && in_array($filter['comparator'], $dateSpecificConditions)) {
 133                              $filter['stdfilter'] = $filter['comparator'];
 134                              $valueComponents = explode(',',$filter['value']);
 135                              if($filter['comparator'] == 'custom') {
 136                                  $filter['startdate'] = DateTimeField::convertToDBFormat($valueComponents[0]);
 137                                  $filter['enddate'] = DateTimeField::convertToDBFormat($valueComponents[1]);
 138                              }
 139                              $dateFilterResolvedList = $customView->resolveDateFilterValue($filter);
 140                              $value[] = $queryGenerator->fixDateTimeValue($name, $dateFilterResolvedList['startdate']);
 141                              $value[] = $queryGenerator->fixDateTimeValue($name, $dateFilterResolvedList['enddate'], false);
 142                              $queryGenerator->addCondition($name, $value, 'BETWEEN');
 143                          }else{
 144                              $queryGenerator->addCondition($name, $filter['value'], $filter['comparator']);
 145                          }
 146                          $columncondition = $filter['column_condition'];
 147                          if(!empty($columncondition)) {
 148                              $queryGenerator->addConditionGlue($columncondition);
 149                          }
 150                      }
 151                      $queryGenerator->endGroup();
 152                      $groupConditionGlue = $groupcolumns['condition'];
 153                      if(!empty($groupConditionGlue))
 154                          $queryGenerator->addConditionGlue($groupConditionGlue);
 155                  }
 156              }
 157              $query = $queryGenerator->getQuery();
 158              //Remove the ordering for now to improve the speed
 159              //$query .= ' ORDER BY createdtime DESC';
 160              $result = $db->pquery($query, array());
 161              $rows = $db->num_rows($result);
 162  
 163              for($i=0; $i<$rows; ++$i) {
 164                  $row = $db->query_result_rowdata($result, $i);
 165                  $recordInstance = Vtiger_Record_Model::getInstanceById($row[0]);
 166                  $moduleName = $recordInstance->getModuleName();
 167                  $matchingRecords[$moduleName][$row[0]] = $recordInstance;
 168              }
 169              $viewer->assign('SEARCH_MODULE', $moduleName);
 170          } else {
 171              $searchKey = $request->get('value');
 172              $searchModule = false;
 173              
 174              if($request->get('searchModule')) {
 175                  $searchModule = $request->get('searchModule');
 176              }
 177              
 178              $viewer->assign('SEARCH_KEY', $searchKey);
 179              $viewer->assign('SEARCH_MODULE', $searchModule);
 180              $matchingRecords =  Vtiger_Record_Model::getSearchResult($searchKey, $searchModule);
 181          }
 182          
 183          $matchingRecordsList = array();
 184          if ($matchingRecords[$moduleName]) {
 185              $matchingRecordsList[$moduleName] = $matchingRecords[$moduleName];
 186          }
 187          foreach ($matchingRecords as $module => $recordModelsList) {
 188              $matchingRecordsList[$module] = $recordModelsList;
 189          }
 190  
 191          $viewer->assign('MODULE', $moduleName);
 192          $viewer->assign('MATCHING_RECORDS', $matchingRecordsList);
 193          $viewer->assign('IS_ADVANCE_SEARCH', $isAdvanceSearch);
 194  
 195          echo $viewer->view('UnifiedSearchResults.tpl', '', true);
 196      }    
 197  }


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