You've already forked joomla_test
first commit
This commit is contained in:
202
components/com_newsfeeds/models/newsfeed.php
Normal file
202
components/com_newsfeeds/models/newsfeed.php
Normal file
@ -0,0 +1,202 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_newsfeeds
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
/**
|
||||
* Newsfeeds Component Newsfeed Model
|
||||
*
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_newsfeeds
|
||||
* @since 1.5
|
||||
*/
|
||||
class NewsfeedsModelNewsfeed extends JModelItem
|
||||
{
|
||||
/**
|
||||
* Model context string.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.6
|
||||
*/
|
||||
protected $_context = 'com_newsfeeds.newsfeed';
|
||||
|
||||
/**
|
||||
* Method to auto-populate the model state.
|
||||
*
|
||||
* Note. Calling getState in this method will result in recursion.
|
||||
*
|
||||
* @return void
|
||||
* @since 1.6
|
||||
*/
|
||||
protected function populateState()
|
||||
{
|
||||
$app = JFactory::getApplication('site');
|
||||
|
||||
// Load state from the request.
|
||||
$pk = $app->input->getInt('id');
|
||||
$this->setState('newsfeed.id', $pk);
|
||||
|
||||
$offset = $app->input->get('limitstart', 0, 'uint');
|
||||
$this->setState('list.offset', $offset);
|
||||
|
||||
// Load the parameters.
|
||||
$params = $app->getParams();
|
||||
$this->setState('params', $params);
|
||||
|
||||
$user = JFactory::getUser();
|
||||
if ((!$user->authorise('core.edit.state', 'com_newsfeeds')) && (!$user->authorise('core.edit', 'com_newsfeeds'))){
|
||||
$this->setState('filter.published', 1);
|
||||
$this->setState('filter.archived', 2);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get newsfeed data.
|
||||
*
|
||||
* @param integer The id of the newsfeed.
|
||||
*
|
||||
* @return mixed Menu item data object on success, false on failure.
|
||||
* @since 1.6
|
||||
*/
|
||||
public function &getItem($pk = null)
|
||||
{
|
||||
$pk = (!empty($pk)) ? $pk : (int) $this->getState('newsfeed.id');
|
||||
|
||||
if ($this->_item === null)
|
||||
{
|
||||
$this->_item = array();
|
||||
}
|
||||
|
||||
if (!isset($this->_item[$pk]))
|
||||
{
|
||||
try
|
||||
{
|
||||
$db = $this->getDbo();
|
||||
$query = $db->getQuery(true)
|
||||
->select($this->getState('item.select', 'a.*'))
|
||||
->from('#__newsfeeds AS a');
|
||||
|
||||
// Join on category table.
|
||||
$query->select('c.title AS category_title, c.alias AS category_alias, c.access AS category_access')
|
||||
->join('LEFT', '#__categories AS c on c.id = a.catid');
|
||||
|
||||
// Join on user table.
|
||||
$query->select('u.name AS author')
|
||||
->join('LEFT', '#__users AS u on u.id = a.created_by');
|
||||
|
||||
// Join over the categories to get parent category titles
|
||||
$query->select('parent.title as parent_title, parent.id as parent_id, parent.path as parent_route, parent.alias as parent_alias')
|
||||
->join('LEFT', '#__categories as parent ON parent.id = c.parent_id')
|
||||
|
||||
->where('a.id = ' . (int) $pk);
|
||||
|
||||
// Filter by start and end dates.
|
||||
$nullDate = $db->quote($db->getNullDate());
|
||||
$nowDate = $db->quote(JFactory::getDate()->toSql());
|
||||
|
||||
// Filter by published state.
|
||||
$published = $this->getState('filter.published');
|
||||
$archived = $this->getState('filter.archived');
|
||||
if (is_numeric($published))
|
||||
{
|
||||
$query->where('(a.published = ' . (int) $published . ' OR a.published =' . (int) $archived . ')')
|
||||
->where('(a.publish_up = ' . $nullDate . ' OR a.publish_up <= ' . $nowDate . ')')
|
||||
->where('(a.publish_down = ' . $nullDate . ' OR a.publish_down >= ' . $nowDate . ')')
|
||||
->where('(c.published = ' . (int) $published . ' OR c.published =' . (int) $archived . ')');
|
||||
}
|
||||
|
||||
$db->setQuery($query);
|
||||
|
||||
$data = $db->loadObject();
|
||||
|
||||
if (empty($data))
|
||||
{
|
||||
JError::raiseError(404, JText::_('COM_NEWSFEEDS_ERROR_FEED_NOT_FOUND'));
|
||||
}
|
||||
|
||||
// Check for published state if filter set.
|
||||
if (((is_numeric($published)) || (is_numeric($archived))) && (($data->published != $published) && ($data->published != $archived)))
|
||||
{
|
||||
JError::raiseError(404, JText::_('COM_NEWSFEEDS_ERROR_FEED_NOT_FOUND'));
|
||||
}
|
||||
|
||||
// Convert parameter fields to objects.
|
||||
$registry = new JRegistry;
|
||||
$registry->loadString($data->params);
|
||||
$data->params = clone $this->getState('params');
|
||||
$data->params->merge($registry);
|
||||
|
||||
$registry = new JRegistry;
|
||||
$registry->loadString($data->metadata);
|
||||
$data->metadata = $registry;
|
||||
|
||||
// Compute access permissions.
|
||||
if ($access = $this->getState('filter.access'))
|
||||
{
|
||||
// If the access filter has been set, we already know this user can view.
|
||||
$data->params->set('access-view', true);
|
||||
}
|
||||
else {
|
||||
// If no access filter is set, the layout takes some responsibility for display of limited information.
|
||||
$user = JFactory::getUser();
|
||||
$groups = $user->getAuthorisedViewLevels();
|
||||
$data->params->set('access-view', in_array($data->access, $groups) && in_array($data->category_access, $groups));
|
||||
}
|
||||
|
||||
$this->_item[$pk] = $data;
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
$this->setError($e);
|
||||
$this->_item[$pk] = false;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->_item[$pk];
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment the hit counter for the newsfeed.
|
||||
*
|
||||
* @param int $pk Optional primary key of the item to increment.
|
||||
*
|
||||
* @return boolean True if successful; false otherwise and internal error set.
|
||||
*
|
||||
* @since 3.0
|
||||
*/
|
||||
public function hit($pk = 0)
|
||||
{
|
||||
$input = JFactory::getApplication()->input;
|
||||
$hitcount = $input->getInt('hitcount', 1);
|
||||
|
||||
if ($hitcount)
|
||||
{
|
||||
$pk = (!empty($pk)) ? $pk : (int) $this->getState('newsfeed.id');
|
||||
$db = $this->getDbo();
|
||||
|
||||
$db->setQuery(
|
||||
'UPDATE #__newsfeeds' .
|
||||
' SET hits = hits + 1' .
|
||||
' WHERE id = '.(int) $pk
|
||||
);
|
||||
|
||||
try
|
||||
{
|
||||
$db->execute();
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
$this->setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user