public function searchFetch($loader_class_name, &$counter, $params = array(), $fetch_method = 'fetch_accessible_by_ids') { if (!$this->_query_object) { return array(); } $site_object = Limb::toolkit()->createSiteObject($loader_class_name); $restricted_classes = array(); $allowed_classes = array(); if (!isset($params['restrict_by_class']) || isset($params['restrict_by_class']) && (bool) $params['restrict_by_class']) { $class_id = $site_object->getClassId(); } else { $class_id = null; if (isset($params['restricted_classes'])) { $restricted_classes = $this->_getClassesIdsFromString($params['restricted_classes']); } if (isset($params['allowed_classes'])) { $allowed_classes = $this->_getClassesIdsFromString($params['allowed_classes']); } } $search = new FullTextSearch(); $search_result = $search->find($this->_query_object, $class_id, $restricted_classes, $allowed_classes); if (!count($search_result)) { return array(); } $counter = 0; $count_method = $fetch_method . '_count'; $counter = $site_object->{$count_method}(array_keys($search_result), $params); $fetched_objects = $site_object->{$fetch_method}(array_keys($search_result), $params); if (!count($fetched_objects)) { return array(); } foreach ($search_result as $key => $score) { if (isset($fetched_objects[$key])) { $result[$key] = $fetched_objects[$key]; $result[$key]['score'] = $score; } } Limb::toolkit()->getAuthorizer()->assignActionsToObjects($result); $this->_assignPaths($result); $this->_assignSearchPaths($result, isset($params['offset']) ? $params['offset'] : 0); return $result; }