/** * Returns an object list * * @param JDatabaseQuery $query The query * @param int $limitstart Offset * @param int $limit The number of records * * @return array */ protected function _getList($query, $limitstart = 0, $limit = 0) { $search = $this->getState('filter.name') ? $this->getState('filter.name') : $this->getState('filter.search'); $ordering = $this->getState('list.ordering', 'ordering'); if ($ordering == 'name' || !empty($search) && stripos($search, 'id:') !== 0) { $this->_db->setQuery($query); $result = $this->_db->loadObjectList(); $this->translate($result); if (!empty($search)) { foreach ($result as $i => $item) { if (!preg_match("/{$search}/i", $item->name)) { unset($result[$i]); } } } $lang = JFactory::getLanguage(); $direction = $this->getState('list.direction') == 'desc' ? -1 : 1; Joomla\Utilities\ArrayHelper::sortObjects($result, $ordering, $direction, true, $lang->getLocale()); $total = count($result); $this->cache[$this->getStoreId('getTotal')] = $total; if ($total < $limitstart) { $limitstart = 0; $this->setState('list.start', 0); } return array_slice($result, $limitstart, $limit ? $limit : null); } else { // Add the list ordering clause. $direction = strtoupper($this->state->get('list.direction')); switch ($this->state->get('list.ordering')) { case 'ordering': $query->order('a.ordering ' . $direction); break; case 'enabled': $query->order('a.enabled ' . $direction); break; case 'element': $query->order('a.element ' . $direction); break; case 'access': $query->order('a.access ' . $direction); break; default: $query->order('a.extension_id ' . $direction); } $result = parent::_getList($query, $limitstart, $limit); $this->translate($result); return $result; } }