Exemplo n.º 1
0
 /**
  * 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;
     }
 }