* @copyright 2010-2012 Persistent Objects Ltd * @license GNU General Public License version 2 or later; see LICENSE.txt * * @link http://p-o.co.uk/ */ defined('_JEXEC') or die(); jimport('joomla.application.component.model'); /** * Model for Ajax demonstration * * @category Joomla_Component * @package Com_Ajaxdemo * @author Alan Hicks * @license GNU General Public License version 2 or later; see LICENSE.txt * * @link http://p-o.co.uk/ */ class AjaxdemoModelColour extends JModel { /** * Retrieves the colour data * * @return stdClass containing the data from the database */ function getItem() { JLog::add(__METHOD__ . '()', JLog::ERROR, COM_AJAXDEMO); // Lets load the data if it doesn't already exist if (empty( $this->_data )) { $row =& $this->getTable(); $row->load(JRequest::getVar('id', 0, '', 'int')); $this->_data =& $row; } if (!$this->_data) { $this->_data = new stdClass(); $this->_data->id = 0; $this->_data->ordering = 0; $this->_data->published = 1; $this->_data->date = ''; $this->_data->title = ''; $this->_data->alias = ''; $this->_data->url = ''; $this->_data->material = ''; $this->_data->size = ''; $this->_data->notes = ''; } return $this->_data; } /** * Retrieves the available colours in this series * * @return mixed The return value or null if the query failed. */ public function getColours() { // Get the current ordering if (!$this->_data) { $this->getItem(); } if (!$this->_data) { return null; } $db = JFactory::getDBO(); $query = $db->getQuery(true); $query->select('id, ordering, title, thumbnail_image'); $query->from('#__ajaxdemo_colour'); $query->where('published = 1'); $query->where('colour_id = ' . $this->_data->colour_id); $query->order('ordering asc'); $db->setQuery($query); $result = $db->loadObjectList(); return $result; } /** * Retrieves the previous colour data * * @return stdClass containing the data from the database */ public function getPrevColour() { // Get the current ordering if (!$this->_data) { $this->getItem(); } if (!$this->_data) { return false; } $db = JFactory::getDBO(); $query = $db->getQuery(true); $query->select('s.id, c.id as colour_id, s.ordering, s.published'); $query->select('s.featured, s.title, s.alias, c.thumbnail_image, s.notes'); $query->from('#__ajaxdemo_colours s'); $query->innerjoin('#__ajaxdemo_colour c ON s.id = c.colour_id '); $query->where('s.published = 1'); $query->where('c.published = 1 AND c.dflt = 1'); $query->where( 's.ordering < (' . 'SELECT a.ordering ' . 'FROM #__ajaxdemo_colours a ' . 'INNER JOIN #__ajaxdemo_colour b ' . 'ON a.id = b.colour_id ' . 'WHERE b.id = '. $this->_data->id . ')' ); $query->order('s.ordering desc'); $query->limit(1); $db->setQuery($query); $result = $db->loadObject(); return $result; } /** * Retrieves the next colour data * * @return stdClass containing the data from the database */ public function getNextColour() { // Get the current ordering if (!$this->_data) { $this->getItem(); } if (!$this->_data) { return false; } $db = JFactory::getDBO(); $query = $db->getQuery(true); $query->select('s.id, c.id as colour_id, s.ordering, s.published'); $query->select('s.featured, s.title, s.alias, c.thumbnail_image, s.notes'); $query->from('#__ajaxdemo_colours s'); $query->innerjoin('#__ajaxdemo_colour c ON s.id = c.colour_id '); $query->where('s.published = 1'); $query->where('c.published = 1 AND c.dflt = 1'); $query->where( 's.ordering > (' . 'SELECT a.ordering ' . 'FROM #__ajaxdemo_colours a ' . 'INNER JOIN #__ajaxdemo_colour b ' . 'ON a.id = b.colour_id ' . 'WHERE b.id = '. $this->_data->id . ')' ); $query->order('s.ordering asc'); $query->limit(1); $db->setQuery($query); $result = $db->loadObject(); return $result; } }