_performSearch($query, $modules, $offset); $str = '
'; $actions=0; $foundData = false; foreach($results as $m=>$data){ if(empty($data['data'])){ continue; } $foundData = true; $countRemaining = $data['pageData']['offsets']['total'] - count($data['data']); if($offset > 0) $countRemaining -= $offset; $more = ''; $data['pageData']['offsets']['next']++; if($countRemaining > 0){ $more = <<($countRemaining more) EOHTML; } $modDisplayString = $m; if(isset($GLOBALS['app_list_strings']['moduleList'][$m])) $modDisplayString = $GLOBALS['app_list_strings']['moduleList'][$m]; $str.= "
{$modDisplayString} $more
"; $str.= ''; } $str .= <<{$GLOBALS['app_strings']['LBL_EMAIL_SHOW_READ']}
EOHTML; return $str; } /** * Returns the array containing the $searchFields for a module * * @param $moduleName string * @return array */ protected function getSearchFields( $moduleName ) { if(file_exists("modules/{$moduleName}/metadata/SearchFields.php")) { $searchFields = array(); require "modules/{$moduleName}/metadata/SearchFields.php" ; return $searchFields; } else { return array(); } } /** * Performs the search * * @param $query string what we are searching for * @param $modules array modules we are searching in * @param $offset int search result offset * @return array */ protected function _performSearch( $query, $modules, $offset = -1 ) { $primary_module=''; $results = array(); require_once 'include/SearchForm/SearchForm2.php' ; $where = ''; $searchEmail = preg_match('/^([^\%]|\%)*@([^\%]|\%)*$/', $query); foreach($modules as $moduleName){ if (empty($primary_module)) $primary_module=$moduleName; $searchFields = SugarSpot::getSearchFields($moduleName); $class = $GLOBALS['beanList'][$moduleName]; $return_fields = array(); $seed = new $class(); if (empty($searchFields[$moduleName])) continue; if ($class == 'aCase') { $class = 'Case'; } foreach($searchFields[$moduleName] as $k=>$v){ $keep = false; $searchFields[$moduleName][$k]['value'] = $query; if(!empty($GLOBALS['dictionary'][$class]['unified_search'])){ if(empty($GLOBALS['dictionary'][$class]['fields'][$k]['unified_search'])){ if(isset($searchFields[$moduleName][$k]['db_field'])){ foreach($searchFields[$moduleName][$k]['db_field'] as $field){ if(!empty($GLOBALS['dictionary'][$class]['fields'][$field]['unified_search'])){ $return_fields[] = $field; $keep = true; } } } if(!$keep){ if(strpos($k,'email') === false || !$searchEmail) { unset($searchFields[$moduleName][$k]); } } }else{ $return_fields[] = $k; } }else if(empty($GLOBALS['dictionary'][$class]['fields'][$k]) ){; unset($searchFields[$moduleName][$k]); }else{ switch($GLOBALS['dictionary'][$class]['fields'][$k]['type']){ case 'id': case 'date': case 'datetime': case 'bool': unset($searchFields[$moduleName][$k]); default: $return_fields[] = $k; } } } $searchForm = new SearchForm ( $seed, $moduleName ) ; $searchForm->setup (array ( $moduleName => array() ) , $searchFields , '' , 'saved_views' /* hack to avoid setup doing further unwanted processing */ ) ; $where_clauses = $searchForm->generateSearchWhere() ; $where = ""; if (count($where_clauses) > 0){ $where = '(('. implode(' ) OR ( ', $where_clauses) . '))'; } $lvd = new ListViewData(); $lvd->additionalDetails = false; $max = ( !empty($sugar_config['max_spotresults_initial']) ? $sugar_config['max_spotresults_initial'] : 5 ); if($offset !== -1){ $max = ( !empty($sugar_config['max_spotresults_more']) ? $sugar_config['max_spotresults_more'] : 20 ); } $params = array(); if ( $moduleName == 'Reports') { $params['overrideOrder'] = true; $params['orderBy'] = 'name'; } $results[$moduleName]= $lvd->getListViewData($seed, $where, $offset, $max, $return_fields,$params,'id') ; } return $results; } /** * Function used to walk the array and find keys that map the queried string. * if both the pattern and module name is found the promote the string to thet top. */ protected function _searchKeys( $item1, $key, $patterns ) { //make the module name singular.... if ($patterns[1][strlen($patterns[1])-1] == 's') { $patterns[1]=substr($patterns[1],0,(strlen($patterns[1])-1)); } $module_exists = stripos($key,$patterns[1]); //primary module name. $pattern_exists = stripos($key,$patterns[0]); //pattern provided by the user. if ($module_exists !== false and $pattern_exists !== false) { $GLOBALS['matching_keys']= array_merge(array(array('NAME'=>$key, 'ID'=>$key, 'VALUE'=>$item1)),$GLOBALS['matching_keys']); } else { if ($pattern_exists !== false) { $GLOBALS['matching_keys'][]=array('NAME'=>$key, 'ID'=>$key, 'VALUE'=>$item1); } } } }