Advertisement
Guest User

Untitled

a guest
Apr 1st, 2015
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.21 KB | None | 0 0
  1.     /**
  2.      * Static Function to get the list of records matching the search key
  3.      * @param <String> $searchKey
  4.      * @return <Array> - List of Vtiger_Record_Model or Module Specific Record Model instances
  5.      */
  6.     public static function getSearchResult($searchKey, $module=false) {
  7.         $db = PearDatabase::getInstance();
  8.  
  9.         $query = 'SELECT label, crmid, setype, createdtime FROM vtiger_crmentity WHERE label LIKE ? AND vtiger_crmentity.deleted = 0';
  10.         $params = array("%$searchKey%");
  11.  
  12.         if($module !== false) {
  13.             $query .= ' AND setype = ?';
  14.             $params[] = $module;
  15.         }
  16.  
  17.  
  18.                 /*TOTHOMweb search Leads*/
  19.         if ($module == false || $module == "Leads" ) {
  20.                         $query = $query ." UNION ALL " . 'select CONCAT(vtiger_leaddetails.firstname, " ", vtiger_leaddetails.lastname) as label, vtiger_leaddetails.leadid as crmid, "Leads" as setype, vtiger_crmentity.createdtime as createdtime from vtiger_leaddetails, vtiger_crmentity where vtiger_leaddetails.leadid = vtiger_crmentity.crmid AND vtiger_crmentity.deleted = 0 AND
  21.                        (vtiger_leaddetails.email like ?
  22.                         OR vtiger_leaddetails.company like ?
  23.                         OR vtiger_leaddetails.leadid in (select leadaddressid from vtiger_leadaddress where city LIKE ? OR code LIKE ? OR state LIKE ? OR pobox LIKE ? OR country LIKE ? OR phone LIKE ? OR mobile LIKE ? OR fax LIKE ? OR lane LIKE ? OR leadaddresstype LIKE ?)
  24.                         OR vtiger_leaddetails.leadid in (select leadid from vtiger_leadscf where cf_714 like ? ))';
  25.             $params = array_merge($params ,array("%$searchKey%","%$searchKey%","%$searchKey%","%$searchKey%","%$searchKey%","%$searchKey%","%$searchKey%","%$searchKey%","%$searchKey%","%$searchKey%","%$searchKey%","%$searchKey%","%$searchKey%")); //$query .= ' ORDER BY createdtime DESC';
  26.         }
  27.  
  28.  
  29.        
  30.         //Remove the ordering for now to improve the speed
  31.         //$query .= ' ORDER BY createdtime DESC';
  32.        
  33.        
  34.         $result = $db->pquery($query, $params);
  35.         /*End TOTHOMweb search Leads*/      $noOfRows = $db->num_rows($result);
  36.  
  37.         $moduleModels = $matchingRecords = $leadIdsList = array();
  38.         for($i=0; $i<$noOfRows; ++$i) {
  39.             $row = $db->query_result_rowdata($result, $i);
  40.             if ($row['setype'] === 'Leads') {
  41.                 $leadIdsList[] = $row['crmid'];
  42.             }
  43.         }
  44.         $convertedInfo = Leads_Module_Model::getConvertedInfo($leadIdsList);
  45.  
  46.         for($i=0, $recordsCount = 0; $i<$noOfRows && $recordsCount<100; ++$i) {
  47.             $row = $db->query_result_rowdata($result, $i);
  48.             if ($row['setype'] === 'Leads' && $convertedInfo[$row['crmid']]) {
  49.                 continue;
  50.             }
  51.             if(Users_Privileges_Model::isPermitted($row['setype'], 'DetailView', $row['crmid'])) {
  52.                 $row['id'] = $row['crmid'];
  53.                 $moduleName = $row['setype'];
  54.                 if(!array_key_exists($moduleName, $moduleModels)) {
  55.                     $moduleModels[$moduleName] = Vtiger_Module_Model::getInstance($moduleName);
  56.                 }
  57.                 $moduleModel = $moduleModels[$moduleName];
  58.                 $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'Record', $moduleName);
  59.                 $recordInstance = new $modelClassName();
  60.                 $matchingRecords[$moduleName][$row['id']] = $recordInstance->setData($row)->setModuleFromInstance($moduleModel);
  61.                 $recordsCount++;
  62.             }
  63.         }
  64.         return $matchingRecords;
  65.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement