?
Path : /home/admin/public_html/old/board/components/com_weblinks/models/ |
Current File : /home/admin/public_html/old/board/components/com_weblinks/models/category.php |
<?php /** * @version $Id: category.php 19343 2010-11-03 18:12:02Z 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. */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die( 'Restricted access' ); jimport('joomla.application.component.model'); /** * Weblinks Component Weblink Model * * @package Joomla * @subpackage Content * @since 1.5 */ class WeblinksModelCategory extends JModel { /** * Category id * * @var int */ var $_id = null; /** * Category ata array * * @var array */ var $_data = null; /** * Category total * * @var integer */ var $_total = null; /** * Category data * * @var object */ var $_category = null; /** * Pagination object * * @var object */ var $_pagination = null; /** * Constructor * * @since 1.5 */ function __construct() { parent::__construct(); global $mainframe; $config = JFactory::getConfig(); // Get the pagination request variables $this->setState('limit', $mainframe->getUserStateFromRequest('com_weblinks.limit', 'limit', $config->getValue('config.list_limit'), 'int')); $this->setState('limitstart', JRequest::getVar('limitstart', 0, '', 'int')); // In case limit has been changed, adjust limitstart accordingly $this->setState('limitstart', ($this->getState('limit') != 0 ? (floor($this->getState('limitstart') / $this->getState('limit')) * $this->getState('limit')) : 0)); $filter_order = JRequest::getCmd('filter_order', 'ordering'); $filter_order_Dir = JRequest::getCmd('filter_order_Dir', 'ASC'); if (!in_array($filter_order, array('title', 'hits', 'ordering'))) { $filter_order = 'ordering'; } if (!in_array(strtoupper($filter_order_Dir), array('ASC', 'DESC', ''))) { $filter_order_Dir = 'ASC'; } // Get the filter request variables $this->setState('filter_order', $filter_order); $this->setState('filter_order_dir', $filter_order_Dir); $id = JRequest::getVar('id', 0, '', 'int'); $this->setId((int)$id); } /** * Method to set the category id * * @access public * @param int Category ID number */ function setId($id) { // Set category ID and wipe data $this->_id = $id; $this->_category = null; } /** * Method to get weblink item data for the category * * @access public * @return array */ function getData() { // Lets load the content if it doesn't already exist if (empty($this->_data)) { $query = $this->_buildQuery(); $this->_data = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit')); $total = count($this->_data); for($i = 0; $i < $total; $i++) { $item =& $this->_data[$i]; $item->slug = $item->id.':'.$item->alias; } } return $this->_data; } /** * Method to get the total number of weblink items for the category * * @access public * @return integer */ function getTotal() { // Lets load the content if it doesn't already exist if (empty($this->_total)) { $query = $this->_buildQuery(); $this->_total = $this->_getListCount($query); } return $this->_total; } /** * Method to get a pagination object of the weblink items for the category * * @access public * @return integer */ function getPagination() { // Lets load the content if it doesn't already exist if (empty($this->_pagination)) { jimport('joomla.html.pagination'); $this->_pagination = new JPagination( $this->getTotal(), $this->getState('limitstart'), $this->getState('limit') ); } return $this->_pagination; } /** * Method to get category data for the current category * * @since 1.5 */ function getCategory() { // Load the Category data if ($this->_loadCategory()) { // Initialize some variables $user = &JFactory::getUser(); // Make sure the category is published if (!$this->_category->published) { JError::raiseError(404, JText::_("Resource Not Found")); return false; } // check whether category access level allows access if ($this->_category->access > $user->get('aid', 0)) { JError::raiseError(403, JText::_("ALERTNOTAUTH")); return false; } } return $this->_category; } /** * Method to load category data if it doesn't exist. * * @access private * @return boolean True on success */ function _loadCategory() { if (empty($this->_category)) { // current category info $query = 'SELECT c.*, ' . ' CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(\':\', c.id, c.alias) ELSE c.id END as slug '. ' FROM #__categories AS c' . ' WHERE c.id = '. (int) $this->_id . ' AND c.section = "com_weblinks"'; $this->_db->setQuery($query, 0, 1); $this->_category = $this->_db->loadObject(); } return true; } function _buildQuery() { $filter_order = $this->getState('filter_order'); $filter_order_dir = $this->getState('filter_order_dir'); $filter_order = JFilterInput::clean($filter_order, 'cmd'); $filter_order_dir = JFilterInput::clean($filter_order_dir, 'word'); // We need to get a list of all weblinks in the given category $query = 'SELECT *' . ' FROM #__weblinks' . ' WHERE catid = '. (int) $this->_id. ' AND published = 1' . ' AND archived = 0'. ' ORDER BY '. $filter_order .' '. $filter_order_dir .', ordering'; return $query; } }