ShellBanner
System:Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686
Software:Apache. PHP/5.3.6-13ubuntu3.10
ID:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Safe Mode:OFF
Open_Basedir:OFF
Freespace:24.95 GB of 70.42 GB (35.43%)
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

/ http/ yalagina/ components/ com_content/ models/ - drwxr-xr-x

Directory:
Viewing file:     article.php (10.42 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * @package        Joomla.Site
 * @subpackage    com_content
 * @copyright    Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license        GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

jimport('joomla.application.component.modelitem');

/**
 * Content Component Article Model
 *
 * @package        Joomla.Site
 * @subpackage    com_content
 * @since 1.5
 */
class ContentModelArticle extends JModelItem
{
    
/**
     * Model context string.
     *
     * @var        string
     */
    
protected $_context 'com_content.article';

    
/**
     * Method to auto-populate the model state.
     *
     * Note. Calling getState in this method will result in recursion.
     *
     * @since    1.6
     */
    
protected function populateState()
    {
        
$app JFactory::getApplication('site');

        
// Load state from the request.
        
$pk JRequest::getInt('id');
        
$this->setState('article.id'$pk);

        
$offset JRequest::getUInt('limitstart');
        
$this->setState('list.offset'$offset);

        
// Load the parameters.
        
$params $app->getParams();
        
$this->setState('params'$params);

        
// TODO: Tune these values based on other permissions.
        
$user        JFactory::getUser();
        if ((!
$user->authorise('core.edit.state''com_content')) &&  (!$user->authorise('core.edit''com_content'))){
            
$this->setState('filter.published'1);
            
$this->setState('filter.archived'2);
        }
    }

    
/**
     * Method to get article data.
     *
     * @param    integer    The id of the article.
     *
     * @return    mixed    Menu item data object on success, false on failure.
     */
    
public function &getItem($pk null)
    {
        
// Initialise variables.
        
$pk = (!empty($pk)) ? $pk : (int) $this->getState('article.id');

        if (
$this->_item === null) {
            
$this->_item = array();
        }

        if (!isset(
$this->_item[$pk])) {

            try {
                
$db $this->getDbo();
                
$query $db->getQuery(true);

                
$query->select($this->getState(
                    
'item.select''a.id, a.asset_id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, ' .
                    
// If badcats is not null, this means that the article is inside an unpublished category
                    // In this case, the state is set to 0 to indicate Unpublished (even if the article state is Published)
                    
'CASE WHEN badcats.id is null THEN a.state ELSE 0 END AS state, ' .
                    
'a.mask, a.catid, a.created, a.created_by, a.created_by_alias, ' .
                
// use created if modified is 0
                
'CASE WHEN a.modified = 0 THEN a.created ELSE a.modified END as modified, ' .
                    
'a.modified_by, a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, ' .
                    
'a.images, a.urls, a.attribs, a.version, a.parentid, a.ordering, ' .
                    
'a.metakey, a.metadesc, a.access, a.hits, a.metadata, a.featured, a.language, a.xreference'
                    
)
                );
                
$query->from('#__content AS a');

                
// Join on category table.
                
$query->select('c.title AS category_title, c.alias AS category_alias, c.access AS category_access');
                
$query->join('LEFT''#__categories AS c on c.id = a.catid');

                
// Join on user table.
                
$query->select('u.name AS author');
                
$query->join('LEFT''#__users AS u on u.id = a.created_by');
        
                
// Join on contact table
                
$subQuery $db->getQuery(true);
                
$subQuery->select('contact.user_id, MAX(contact.id) AS id, contact.language');
                
$subQuery->from('#__contact_details AS contact');
                
$subQuery->where('contact.published = 1');
                
$subQuery->group('contact.user_id, contact.language');
                
$query->select('contact.id as contactid' );
                
$query->join('LEFT''(' $subQuery ') AS contact ON contact.user_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');
                
$query->join('LEFT''#__categories as parent ON parent.id = c.parent_id');

                
// Join on voting table
                
$query->select('ROUND(v.rating_sum / v.rating_count, 0) AS rating, v.rating_count as rating_count');
                
$query->join('LEFT''#__content_rating AS v ON a.id = v.content_id');

                
$query->where('a.id = ' . (int) $pk);

                
// Filter by start and end dates.
                
$nullDate $db->Quote($db->getNullDate());
                
$date JFactory::getDate();

                
$nowDate $db->Quote($date->toSql());

                
$query->where('(a.publish_up = ' $nullDate ' OR a.publish_up <= ' $nowDate ')');
                
$query->where('(a.publish_down = ' $nullDate ' OR a.publish_down >= ' $nowDate ')');

                
// Join to check for category published state in parent categories up the tree
                // If all categories are published, badcats.id will be null, and we just use the article state
                
$subquery ' (SELECT cat.id as id FROM #__categories AS cat JOIN #__categories AS parent ';
                
$subquery .= 'ON cat.lft BETWEEN parent.lft AND parent.rgt ';
                
$subquery .= 'WHERE parent.extension = ' $db->quote('com_content');
                
$subquery .= ' AND parent.published <= 0 GROUP BY cat.id)';
                
$query->join('LEFT OUTER'$subquery ' AS badcats ON badcats.id = c.id');

                
// Filter by published state.
                
$published $this->getState('filter.published');
                
$archived $this->getState('filter.archived');

                if (
is_numeric($published)) {
                    
$query->where('(a.state = ' . (int) $published ' OR a.state =' . (int) $archived ')');
                }

                
$db->setQuery($query);

                
$data $db->loadObject();

                if (
$error $db->getErrorMsg()) {
                    throw new 
Exception($error);
                }

                if (empty(
$data)) {
                    return 
JError::raiseError(404JText::_('COM_CONTENT_ERROR_ARTICLE_NOT_FOUND'));
                }

                
// Check for published state if filter set.
                
if (((is_numeric($published)) || (is_numeric($archived))) && (($data->state != $published) && ($data->state != $archived))) {
                    return 
JError::raiseError(404JText::_('COM_CONTENT_ERROR_ARTICLE_NOT_FOUND'));
                }

                
// Convert parameter fields to objects.
                
$registry = new JRegistry;
                
$registry->loadString($data->attribs);

                
$data->params = clone $this->getState('params');
                
$data->params->merge($registry);

                
$registry = new JRegistry;
                
$registry->loadString($data->metadata);
                
$data->metadata $registry;

                
// Compute selected asset permissions.
                
$user    JFactory::getUser();

                
// Technically guest could edit an article, but lets not check that to improve performance a little.
                
if (!$user->get('guest')) {
                    
$userId    $user->get('id');
                    
$asset    'com_content.article.'.$data->id;

                    
// Check general edit permission first.
                    
if ($user->authorise('core.edit'$asset)) {
                        
$data->params->set('access-edit'true);
                    }
                    
// Now check if edit.own is available.
                    
elseif (!empty($userId) && $user->authorise('core.edit.own'$asset)) {
                        
// Check for a valid user and that they are the owner.
                        
if ($userId == $data->created_by) {
                            
$data->params->set('access-edit'true);
                        }
                    }
                }

                
// Compute view 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();

                    if (
$data->catid == || $data->category_access === null) {
                        
$data->params->set('access-view'in_array($data->access$groups));
                    }
                    else {
                        
$data->params->set('access-view'in_array($data->access$groups) && in_array($data->category_access$groups));
                    }
                }

                
$this->_item[$pk] = $data;
            }
            catch (
JException $e)
            {
                if (
$e->getCode() == 404) {
                    
// Need to go thru the error handler to allow Redirect to work.
                    
JError::raiseError(404$e->getMessage());
                }
                else {
                    
$this->setError($e);
                    
$this->_item[$pk] = false;
                }
            }
        }

        return 
$this->_item[$pk];
    }

    
/**
     * Increment the hit counter for the article.
     *
     * @param    int        Optional primary key of the article to increment.
     *
     * @return    boolean    True if successful; false otherwise and internal error set.
     */
    
public function hit($pk 0)
    {
            
$hitcount JRequest::getInt('hitcount'1);

            if (
$hitcount)
            {
                
// Initialise variables.
                
$pk = (!empty($pk)) ? $pk : (int) $this->getState('article.id');
                
$db $this->getDbo();

                
$db->setQuery(
                        
'UPDATE #__content' .
                        
' SET hits = hits + 1' .
                        
' WHERE id = '.(int) $pk
                
);

                if (!
$db->query()) {
                        
$this->setError($db->getErrorMsg());
                        return 
false;
                }
            }

            return 
true;
    }

    public function 
storeVote($pk 0$rate 0)
    {
        if ( 
$rate >= && $rate <= && $pk )
        {
            
$userIP $_SERVER['REMOTE_ADDR'];
            
$db $this->getDbo();

            
$db->setQuery(
                    
'SELECT *' .
                    
' FROM #__content_rating' .
                    
' WHERE content_id = '.(int) $pk
            
);

            
$rating $db->loadObject();

            if (!
$rating)
            {
                
// There are no ratings yet, so lets insert our rating
                
$db->setQuery(
                        
'INSERT INTO #__content_rating ( content_id, lastip, rating_sum, rating_count )' .
                        
' VALUES ( '.(int) $pk.', '.$db->Quote($userIP).', '.(int) $rate.', 1 )'
                
);

                if (!
$db->query()) {
                        
$this->setError($db->getErrorMsg());
                        return 
false;
                }
            } else {
                if (
$userIP != ($rating->lastip))
                {
                    
$db->setQuery(
                            
'UPDATE #__content_rating' .
                            
' SET rating_count = rating_count + 1, rating_sum = rating_sum + '.(int) $rate.', lastip = '.$db->Quote($userIP) .
                            
' WHERE content_id = '.(int) $pk
                    
);
                    if (!
$db->query()) {
                            
$this->setError($db->getErrorMsg());
                            return 
false;
                    }
                } else {
                    return 
false;
                }
            }
            return 
true;
        }
        
JError::raiseWarning'SOME_ERROR_CODE'JText::sprintf('COM_CONTENT_INVALID_RATING'$rate), "JModelArticle::storeVote($rate)");
        return 
false;
    }
}
Command:
Quick Commands:
Upload:
[OK] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [OK]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.2005 seconds