?
Path : /home/admin/public_html/old/board/administrator/components/com_content/models/ |
Current File : /home/admin/public_html/old/board/administrator/components/com_content/models/element.php |
<?php /** * @version $Id: element.php 17299 2010-05-27 16:06:54Z ian $ * @package Joomla * @subpackage Content * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant to the * GNU General Public License, and as distributed it includes or is derivative * of works licensed under the GNU General Public License or other free or open * source software licenses. See COPYRIGHT.php for copyright notices and * details. */ // no direct access defined('_JEXEC') or die('Restricted access'); jimport( 'joomla.application.component.helper'); jimport( 'joomla.application.component.model'); /** * Content Component Article Model * * @package Joomla * @subpackage Content * @since 1.5 */ class ContentModelElement extends JModel { /** * Content data in category array * * @var array */ var $_list = null; var $_page = null; /** * Method to get content article data for the frontpage * * @since 1.5 */ function getList() { global $mainframe; if (!empty($this->_list)) { return $this->_list; } // Initialize variables $db =& $this->getDBO(); $filter = null; // Get some variables from the request $sectionid = JRequest::getVar( 'sectionid', -1, '', 'int' ); $redirect = $sectionid; $option = JRequest::getCmd( 'option' ); $filter_order = $mainframe->getUserStateFromRequest('articleelement.filter_order', 'filter_order', '', 'cmd'); $filter_order_Dir = $mainframe->getUserStateFromRequest('articleelement.filter_order_Dir', 'filter_order_Dir', '', 'word'); $catid = $mainframe->getUserStateFromRequest('articleelement.catid', 'catid', 0, 'int'); $filter_authorid = $mainframe->getUserStateFromRequest('articleelement.filter_authorid', 'filter_authorid', 0, 'int'); $filter_sectionid = $mainframe->getUserStateFromRequest('articleelement.filter_sectionid', 'filter_sectionid', -1, 'int'); $limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int'); $limitstart = $mainframe->getUserStateFromRequest('articleelement.limitstart', 'limitstart', 0, 'int'); $search = $mainframe->getUserStateFromRequest('articleelement.search', 'search', '', 'string'); if (strpos($search, '"') !== false) { $search = str_replace(array('=', '<'), '', $search); } $search = JString::strtolower($search); //$where[] = "c.state >= 0"; $where[] = "c.state != -2"; if (!$filter_order) { $filter_order = 'section_name'; } $order = ' ORDER BY '. $filter_order .' '. $filter_order_Dir .', section_name, cc.name, c.ordering'; $all = 1; if ($filter_sectionid >= 0) { $filter = ' WHERE cc.section = '.$db->Quote($filter_sectionid); } $section->title = 'All Articles'; $section->id = 0; /* * Add the filter specific information to the where clause */ // Section filter if ($filter_sectionid >= 0) { $where[] = 'c.sectionid = '.(int) $filter_sectionid; } // Category filter if ($catid > 0) { $where[] = 'c.catid = '.(int) $catid; } // Author filter if ($filter_authorid > 0) { $where[] = 'c.created_by = '.(int) $filter_authorid; } // Only published articles $where[] = 'c.state = 1'; // Keyword filter if ($search) { $where[] = 'LOWER( c.title ) LIKE '.$db->Quote( '%'.$db->getEscaped( $search, true ).'%', false ); } // Build the where clause of the content record query $where = (count($where) ? ' WHERE '.implode(' AND ', $where) : ''); // Get the total number of records $query = 'SELECT COUNT(*)' . ' FROM #__content AS c' . ' LEFT JOIN #__categories AS cc ON cc.id = c.catid' . ' LEFT JOIN #__sections AS s ON s.id = c.sectionid' . $where; $db->setQuery($query); $total = $db->loadResult(); // Create the pagination object jimport('joomla.html.pagination'); $this->_page = new JPagination($total, $limitstart, $limit); // Get the articles $query = 'SELECT c.*, g.name AS groupname, cc.title as cctitle, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author' . ' FROM #__content AS c' . ' LEFT JOIN #__categories AS cc ON cc.id = c.catid' . ' LEFT JOIN #__sections AS s ON s.id = c.sectionid' . ' LEFT JOIN #__groups AS g ON g.id = c.access' . ' LEFT JOIN #__users AS u ON u.id = c.checked_out' . ' LEFT JOIN #__users AS v ON v.id = c.created_by' . ' LEFT JOIN #__content_frontpage AS f ON f.content_id = c.id' . $where . $order; $db->setQuery($query, $this->_page->limitstart, $this->_page->limit); $this->_list = $db->loadObjectList(); // If there is a db query error, throw a HTTP 500 and exit if ($db->getErrorNum()) { JError::raiseError( 500, $db->stderr() ); return false; } return $this->_list; } function getPagination() { if (is_null($this->_list) || is_null($this->_page)) { $this->getList(); } return $this->_page; } } ?>