get('series_cat', JRequest::getInt('series_cat', '')); $cat['speaker'] = $params->get('speaker_cat', JRequest::getInt('speaker_cat', '')); $cat['sermon'] = $params->get('sermon_cat', JRequest::getInt('sermon_cat', '')); $this->seriesjoin = NULL; $this->catwhere = NULL; $this->cat = array(); if ($cat['series'] != 0){ $this->seriesjoin = " LEFT JOIN #__sermon_series AS ss ON j.series_id = ss.id \n"; $this->catwhere .= " AND ss.catid = '".(int)$cat['series']."' \n"; $this->cat[] = $cat['series']; } if ($cat['speaker'] != 0){ $this->catwhere .= " AND k.catid = '".(int)$cat['speaker']."' \n"; $this->cat[] = $cat['speaker']; } if ($cat['sermon'] != 0){ $this->catwhere .= " AND j.catid = '".(int)$cat['sermon']."' \n"; $this->cat[] = $cat['sermon']; } // Get pagination request variables $limit = $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit'), 'int'); $limitstart = JRequest::getInt('limitstart', 0); // In case limit has been changed, adjust it $limitstart = ($limit != 0 ? (floor($limitstart / $limit) * $limit) : 0); $this->setState('limit', $limit); $this->setState('limitstart', $limitstart); // Get sorting order from Request and UserState $this->lists['order'] = $app->getUserStateFromRequest("com_sermonspeaker.sermons.filter_order",'filter_order','sermon_date','cmd' ); $this->lists['order_Dir'] = $app->getUserStateFromRequest("com_sermonspeaker.sermons.filter_order_Dir",'filter_order_Dir','DESC','word' ); } function getCat() { $database =& JFactory::getDBO(); $cats = array_unique($this->cat); $title = array(); foreach ($cats as $cat){ $query = "SELECT title FROM #__categories WHERE id = ".$cat; $database->setQuery( $query ); $title[] = $database->LoadResult(); } $title = implode(' & ', $title); return $title; } function getOrder() { return $this->lists; } function _buildContentOrderBy() { return $this->lists['order'].' '.$this->lists['order_Dir']; } function getTotal() { $database =& JFactory::getDBO(); $query = "SELECT count(*) " . "FROM #__sermon_sermons AS j " . "LEFT JOIN #__sermon_speakers k ON j.speaker_id = k.id \n" .$this->seriesjoin . "WHERE j.published = '1'" .$this->catwhere; $database->setQuery( $query ); $total_rows = $database->LoadResult(); return $total_rows; } function getPagination() { jimport('joomla.html.pagination'); $this->_pagination = new JPagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit') ); return $this->_pagination; } function getData() { $orderby = $this->_buildContentOrderBy(); $database = &JFactory::getDBO(); $query = "SELECT sermon_title, sermon_number, sermon_scripture, sermon_date, sermon_time, sermon_path, notes, k.name, k.pic, k.id as s_id, j.id, j.addfile, j.addfileDesc, ss.id, ss.series_title \n" . ", CASE WHEN CHAR_LENGTH(j.alias) THEN CONCAT_WS(':', j.id, j.alias) ELSE j.id END as slug \n" . "FROM #__sermon_sermons j \n" . "LEFT JOIN #__sermon_speakers k ON j.speaker_id = k.id \n" . "LEFT JOIN #__sermon_series AS ss ON j.series_id = ss.id \n" . "WHERE j.published='1' \n" .$this->catwhere . "ORDER BY ".$orderby; $rows = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit')); return $rows; } }