Пример #1
0
	public function hasMethod($name)
	{
		return $name == 'tagged' || parent::hasMethod($name);
	}
 /**
  * Return DataList of the results using $_REQUEST to get search info
  * Wraps around {@link searchEngine()}.
  *
  * Results also checks to see if there is a custom filter set in
  * configuration and adds it.
  *
  * @param $classname Name of the object we will be filtering
  * @param $columns an array of the column names we will be sorting
  * @param $query the current search query
  *
  * @return SS_List
  */
 public static function Results($classname, $columns, $keywords, $limit = 0)
 {
     $cols_string = implode('","', $columns);
     $custom_filters = Searchable::config()->custom_filters;
     $results = ArrayList::create();
     $filter = array();
     foreach ($columns as $col) {
         $filter["{$col}:PartialMatch"] = $keywords;
     }
     $search = $classname::get()->filterAny($filter);
     if (is_array($custom_filters) && array_key_exists($classname, $custom_filters) && is_array($custom_filters[$classname])) {
         $search = $search->filter($custom_filters[$classname]);
     }
     $searchable = new Searchable();
     if ($searchable->hasMethod('filterResultsByCallback')) {
         $search = $searchable->filterResultsByCallback($search, $classname);
     }
     if ($limit) {
         $search = $search->limit($limit);
     }
     foreach ($search as $result) {
         if ($result->canView() || isset($result->ShowInSearch) && $result->ShowInSearch) {
             $results->add($result);
         }
     }
     return $results;
 }