/aamenu/code/trunk/administrator/components/com_aamenu/libraries/jxtended/application/component/modellist.php
PHP | 226 lines | 77 code | 29 blank | 120 comment | 5 complexity | 43cc76f2cad2adb14a7f61a2fc09b6e6 MD5 | raw file
- <?php
- /**
- * @version $Id: modellist.php 36 2009-05-19 01:06:55Z eddieajau $
- * @package JXtended.Libraries
- * @subpackage Application.Component
- * @copyright Copyright (C) 2008 - 2009 JXtended, LLC. All rights reserved.
- * @license GNU General Public License <http://www.gnu.org/copyleft/gpl.html>
- * @link http://jxtended.com
- */
- defined('JPATH_BASE') or die;
- jimport('joomla.application.component.model');
- jximport('jxtended.database.query');
- /**
- * Prototype list model.
- *
- * @package JXtended.Libraries
- * @subpackage Application
- * @version 1.0
- */
- class JXModelList extends JModel
- {
- /**
- * Flag to indicate model state initialization.
- *
- * @access private
- * @var boolean
- */
- var $__state_set = false;
- /**
- * An array of totals for the lists.
- *
- * @access protected
- * @var array
- */
- var $_totals = array();
- /**
- * Array of lists containing items.
- *
- * @access protected
- * @var array
- */
- var $_lists = array();
- /**
- * Model context string.
- *
- * @access protected
- * @var string
- */
- var $_context = 'group.type';
- /**
- * Overridden model constructor.
- *
- * @access public
- * @param array $config Configuration array
- * @return void
- * @since 1.0
- */
- function __construct($config = array())
- {
- // If ignore request flag is set, set the state set flag.
- if (!empty($config['ignore_request'])) {
- $this->__state_set = true;
- }
- parent::__construct($config);
- }
- /**
- * Overridden method to get model state variables.
- *
- * @access public
- * @param string $property Optional parameter name.
- * @return object The property where specified, the state object where omitted.
- * @since 1.0
- */
- function getState($property = null, $default = null)
- {
- if (!$this->__state_set)
- {
- // Private method to auto-populate the model state.
- $this->_populateState();
- // Set the model state set flat to true.
- $this->__state_set = true;
- }
- $value = parent::getState($property);
- return (is_null($value) ? $default : $value);
- }
- /**
- * Method to get a list of items.
- *
- * @access public
- * @return mixed An array of objects on success, false on failure.
- * @since 1.0
- */
- function &getItems()
- {
- // Get a unique key for the current list state.
- $key = $this->_getStoreId($this->_context);
- // Try to load the value from internal storage.
- if (!empty ($this->_lists[$key])) {
- return $this->_lists[$key];
- }
- // Load the list.
- $query = $this->_getListQuery();
- $rows = $this->_getList($query->toString(), $this->getState('list.start'), $this->getState('list.limit'));
- // Add the rows to the internal storage.
- $this->_lists[$key] = $rows;
- return $this->_lists[$key];
- }
- /**
- * Method to get a list pagination object.
- *
- * @access public
- * @return object A JPagination object.
- * @since 1.0
- */
- function &getPagination()
- {
- jimport('joomla.html.pagination');
- // Create the pagination object.
- $instance = new JPagination($this->getTotal(), (int)$this->getState('list.start'), (int)$this->getState('list.limit'));
- return $instance;
- }
- /**
- * Method to get the total number of published items.
- *
- * @access public
- * @return int The number of published items.
- * @since 1.0
- */
- function getTotal()
- {
- // Get a unique key for the current list state.
- $key = $this->_getStoreId($this->_context);
- // Try to load the value from internal storage.
- if (!empty ($this->_totals[$key])) {
- return $this->_totals[$key];
- }
- // Load the total.
- $query = $this->_getListQuery();
- $return = (int)$this->_getListCount($query->toString());
- // Check for a database error.
- if ($this->_db->getErrorNum()) {
- $this->setError($this->_db->getErrorMsg());
- return false;
- }
- // Push the value into internal storage.
- $this->_totals[$key] = $return;
- return $this->_totals[$key];
- }
- /**
- * Method to build an SQL query to load the list data.
- *
- * @access protected
- * @return string An SQL query
- * @since 1.0
- */
- function _getListQuery()
- {
- $query = new JXQuery();
- return $query;
- }
- /**
- * Method to get a store id based on model configuration state.
- *
- * This is necessary because the model is used by the component and
- * different modules that might need different sets of data or different
- * ordering requirements.
- *
- * @access protected
- * @param string $context A prefix for the store id.
- * @return string A store id.
- * @since 1.0
- */
- function _getStoreId($id = '')
- {
- // Compile the store id.
- $id .= ':'.$this->getState('list.start');
- $id .= ':'.$this->getState('list.limit');
- $id .= ':'.$this->getState('list.ordering');
- $id .= ':'.$this->getState('list.direction');
- return md5($id);
- }
- /**
- * Method to auto-populate the model state.
- *
- * This method should only be called once per instantiation and is designed
- * to be called on the first call to the getState() method unless the model
- * configuration flag to ignore the request is set.
- *
- * @access protected
- * @return void
- * @since 1.0
- */
- function _populateState()
- {
- $this->setState('list.start', 0);
- }
- }