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