| Current Path : /var/www/iplanru/data/old/www/i-plan.ru/administrator/components/com_weblinks/models/ |
| Current File : /var/www/iplanru/data/old/www/i-plan.ru/administrator/components/com_weblinks/models/weblink.php |
<?php
/**
* @version $Id: weblink.php 10381 2008-06-01 03:35:53Z pasamio $
* @package Joomla
* @subpackage Content
* @copyright Copyright (C) 2005 - 2008 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;
}
}