select('n.*') ->from('#__com_blogfactory_notifications n'); // Select language. $query->select('l.title AS language_title') ->leftJoin('#__languages l ON l.lang_code = n.lang_code'); // Filter by search. if ('' != $search = $this->getState('filter.search')) { $query->where('n.subject LIKE ' . $query->quote('%' . $search . '%')); } // Filter by published. if ('' !== $published = $this->getState('filter.published')) { $query->where('n.published = ' . $query->quote((int)$published)); } // Filter by type. if ('' !== $type = $this->getState('filter.type')) { $query->where('n.type = ' . $query->quote($type)); } // Filter by language. if ('' !== $language = $this->getState('filter.language')) { $query->where('n.lang_code = ' . $query->quote($language)); } $this->addOrderQuery($query); return $query; } protected function populateState($ordering = null, $direction = null) { foreach ($this->filters as $filter) { $value = $this->getUserStateFromRequest($this->context . '.filter.' . $filter, 'filter_' . $filter, ''); $this->setState('filter.' . $filter, $value); } // List state information. parent::populateState('n.subject', 'asc'); } protected function addOrderQuery($query) { // Add the list ordering clause. $orderCol = $this->state->get('list.ordering', 'n.subject'); $orderDirn = $this->state->get('list.direction', 'asc'); $query->order($query->escape($orderCol . ' ' . $orderDirn)); } }