?
Path : /home/admin/public_html/old/board/administrator/components/com_weblinks/models/ |
Current File : /home/admin/public_html/old/board/administrator/components/com_weblinks/models/weblink.php |
<?php /** * @version $Id: weblink.php 14401 2010-01-26 14:10:00Z louis $ * @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 Weblinks * @since 1.5 */ class WeblinksModelWeblink extends JModel { /** * Weblink id * * @var int */ var $_id = null; /** * Weblink data * * @var array */ var $_data = null; /** * Constructor * * @since 1.5 */ function __construct() { parent::__construct(); $array = JRequest::getVar('cid', array(0), '', 'array'); $edit = JRequest::getVar('edit',true); if($edit) $this->setId((int)$array[0]); } /** * Method to set the weblink identifier * * @access public * @param int Weblink identifier */ function setId($id) { // Set weblink id and wipe data $this->_id = $id; $this->_data = null; } /** * Method to get a weblink * * @since 1.5 */ function &getData() { // Load the weblink data if ($this->_loadData()) { // Initialize some variables $user = &JFactory::getUser(); // Check to see if the category is published if (!$this->_data->cat_pub) { JError::raiseError( 404, JText::_("Resource Not Found") ); return; } // Check whether category access level allows access if ($this->_data->cat_access > $user->get('aid', 0)) { JError::raiseError( 403, JText::_('ALERTNOTAUTH') ); return; } } else $this->_initData(); return $this->_data; } /** * Tests if weblink is checked out * * @access public * @param int A user id * @return boolean True if checked out * @since 1.5 */ function isCheckedOut( $uid=0 ) { if ($this->_loadData()) { if ($uid) { return ($this->_data->checked_out && $this->_data->checked_out != $uid); } else { return $this->_data->checked_out; } } } /** * Method to checkin/unlock the weblink * * @access public * @return boolean True on success * @since 1.5 */ function checkin() { if ($this->_id) { $weblink = & $this->getTable(); if(! $weblink->checkin($this->_id)) { $this->setError($this->_db->getErrorMsg()); return false; } } return false; } /** * Method to checkout/lock the weblink * * @access public * @param int $uid User ID of the user checking the article out * @return boolean True on success * @since 1.5 */ function checkout($uid = null) { if ($this->_id) { // Make sure we have a user id to checkout the article with if (is_null($uid)) { $user =& JFactory::getUser(); $uid = $user->get('id'); } // Lets get to it and checkout the thing... $weblink = & $this->getTable(); if(!$weblink->checkout($uid, $this->_id)) { $this->setError($this->_db->getErrorMsg()); return false; } return true; } return false; } /** * Method to store the weblink * * @access public * @return boolean True on success * @since 1.5 */ function store($data) { $row =& $this->getTable(); // Bind the form fields to the web link table if (!$row->bind($data)) { $this->setError($this->_db->getErrorMsg()); return false; } // Create the timestamp for the date $row->date = gmdate('Y-m-d H:i:s'); // if new item, order last in appropriate group if (!$row->id) { $where = 'catid = ' . (int) $row->catid ; $row->ordering = $row->getNextOrder( $where ); } // Make sure the web link table is valid if (!$row->check()) { $this->setError($this->_db->getErrorMsg()); return false; } // Store the web link table to the database if (!$row->store()) { $this->setError($this->_db->getErrorMsg()); return false; } return true; } /** * Method to remove a weblink * * @access public * @return boolean True on success * @since 1.5 */ function delete($cid = array()) { $result = false; if (count( $cid )) { JArrayHelper::toInteger($cid); $cids = implode( ',', $cid ); $query = 'DELETE FROM #__weblinks' . ' WHERE id IN ( '.$cids.' )'; $this->_db->setQuery( $query ); if(!$this->_db->query()) { $this->setError($this->_db->getErrorMsg()); return false; } } return true; } /** * Method to (un)publish a weblink * * @access public * @return boolean True on success * @since 1.5 */ function publish($cid = array(), $publish = 1) { $user =& JFactory::getUser(); if (count( $cid )) { JArrayHelper::toInteger($cid); $cids = implode( ',', $cid ); $query = 'UPDATE #__weblinks' . ' SET published = '.(int) $publish . ' WHERE id IN ( '.$cids.' )' . ' AND ( checked_out = 0 OR ( checked_out = '.(int) $user->get('id').' ) )' ; $this->_db->setQuery( $query ); if (!$this->_db->query()) { $this->setError($this->_db->getErrorMsg()); return false; } } return true; } /** * Method to move a weblink * * @access public * @return boolean True on success * @since 1.5 */ function move($direction) { $row =& $this->getTable(); if (!$row->load($this->_id)) { $this->setError($this->_db->getErrorMsg()); return false; } if (!$row->move( $direction, ' catid = '.(int) $row->catid.' AND published >= 0 ' )) { $this->setError($this->_db->getErrorMsg()); return false; } return true; } /** * Method to move a weblink * * @access public * @return boolean True on success * @since 1.5 */ function saveorder($cid = array(), $order) { $row =& $this->getTable(); $groupings = array(); // update ordering values for( $i=0; $i < count($cid); $i++ ) { $row->load( (int) $cid[$i] ); // track categories $groupings[] = $row->catid; if ($row->ordering != $order[$i]) { $row->ordering = $order[$i]; if (!$row->store()) { $this->setError($this->_db->getErrorMsg()); return false; } } } // execute updateOrder for each parent group $groupings = array_unique( $groupings ); foreach ($groupings as $group){ $row->reorder('catid = '.(int) $group); } return true; } /** * Method to load content weblink data * * @access private * @return boolean True on success * @since 1.5 */ function _loadData() { // Lets load the content if it doesn't already exist if (empty($this->_data)) { $query = 'SELECT w.*, cc.title AS category,'. ' cc.published AS cat_pub, cc.access AS cat_access'. ' FROM #__weblinks AS w' . ' LEFT JOIN #__categories AS cc ON cc.id = w.catid' . ' WHERE w.id = '.(int) $this->_id; $this->_db->setQuery($query); $this->_data = $this->_db->loadObject(); return (boolean) $this->_data; } return true; } /** * Method to initialise the weblink data * * @access private * @return boolean True on success * @since 1.5 */ function _initData() { // Lets load the content if it doesn't already exist if (empty($this->_data)) { $weblink = new stdClass(); $weblink->id = 0; $weblink->catid = 0; $weblink->sid = 0; $weblink->title = null; $weblink->alias = null; $weblink->url = null; $weblink->description = null; $weblink->date = null; $weblink->hits = 0; $weblink->published = 0; $weblink->checked_out = 0; $weblink->checked_out_time = 0; $weblink->ordering = 0; $weblink->archived = 0; $weblink->approved = 0; $weblink->params = null; $weblink->category = null; $this->_data = $weblink; return (boolean) $this->_data; } return true; } }