git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
157 lines
4.8 KiB
PHP
157 lines
4.8 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: element.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.
|
|
*/
|
|
|
|
// no direct access
|
|
defined('_JEXEC') or die('Restricted access');
|
|
|
|
jimport( 'joomla.application.component.helper');
|
|
jimport( 'joomla.application.component.model');
|
|
|
|
/**
|
|
* Content Component Article Model
|
|
*
|
|
* @package Joomla
|
|
* @subpackage Content
|
|
* @since 1.5
|
|
*/
|
|
class ContentModelElement extends JModel
|
|
{
|
|
/**
|
|
* Content data in category array
|
|
*
|
|
* @var array
|
|
*/
|
|
var $_list = null;
|
|
|
|
var $_page = null;
|
|
|
|
/**
|
|
* Method to get content article data for the frontpage
|
|
*
|
|
* @since 1.5
|
|
*/
|
|
function getList()
|
|
{
|
|
global $mainframe;
|
|
|
|
if (!empty($this->_list)) {
|
|
return $this->_list;
|
|
}
|
|
|
|
// Initialize variables
|
|
$db =& $this->getDBO();
|
|
$filter = null;
|
|
|
|
// Get some variables from the request
|
|
$sectionid = JRequest::getVar( 'sectionid', -1, '', 'int' );
|
|
$redirect = $sectionid;
|
|
$option = JRequest::getCmd( 'option' );
|
|
$filter_order = $mainframe->getUserStateFromRequest('articleelement.filter_order', 'filter_order', '', 'cmd');
|
|
$filter_order_Dir = $mainframe->getUserStateFromRequest('articleelement.filter_order_Dir', 'filter_order_Dir', '', 'word');
|
|
$catid = $mainframe->getUserStateFromRequest('articleelement.catid', 'catid', 0, 'int');
|
|
$filter_authorid = $mainframe->getUserStateFromRequest('articleelement.filter_authorid', 'filter_authorid', 0, 'int');
|
|
$filter_sectionid = $mainframe->getUserStateFromRequest('articleelement.filter_sectionid', 'filter_sectionid', -1, 'int');
|
|
$limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int');
|
|
$limitstart = $mainframe->getUserStateFromRequest('articleelement.limitstart', 'limitstart', 0, 'int');
|
|
$search = $mainframe->getUserStateFromRequest('articleelement.search', 'search', '', 'string');
|
|
$search = JString::strtolower($search);
|
|
|
|
//$where[] = "c.state >= 0";
|
|
$where[] = "c.state != -2";
|
|
|
|
if (!$filter_order) {
|
|
$filter_order = 'section_name';
|
|
}
|
|
$order = ' ORDER BY '. $filter_order .' '. $filter_order_Dir .', section_name, cc.name, c.ordering';
|
|
$all = 1;
|
|
|
|
if ($filter_sectionid >= 0) {
|
|
$filter = ' WHERE cc.section = '.$db->Quote($filter_sectionid);
|
|
}
|
|
$section->title = 'All Articles';
|
|
$section->id = 0;
|
|
|
|
/*
|
|
* Add the filter specific information to the where clause
|
|
*/
|
|
// Section filter
|
|
if ($filter_sectionid >= 0) {
|
|
$where[] = 'c.sectionid = '.(int) $filter_sectionid;
|
|
}
|
|
// Category filter
|
|
if ($catid > 0) {
|
|
$where[] = 'c.catid = '.(int) $catid;
|
|
}
|
|
// Author filter
|
|
if ($filter_authorid > 0) {
|
|
$where[] = 'c.created_by = '.(int) $filter_authorid;
|
|
}
|
|
|
|
// Only published articles
|
|
$where[] = 'c.state = 1';
|
|
|
|
// Keyword filter
|
|
if ($search) {
|
|
$where[] = 'LOWER( c.title ) LIKE '.$db->Quote( '%'.$db->getEscaped( $search, true ).'%', false );
|
|
}
|
|
|
|
// Build the where clause of the content record query
|
|
$where = (count($where) ? ' WHERE '.implode(' AND ', $where) : '');
|
|
|
|
// Get the total number of records
|
|
$query = 'SELECT COUNT(*)' .
|
|
' FROM #__content AS c' .
|
|
' LEFT JOIN #__categories AS cc ON cc.id = c.catid' .
|
|
' LEFT JOIN #__sections AS s ON s.id = c.sectionid' .
|
|
$where;
|
|
$db->setQuery($query);
|
|
$total = $db->loadResult();
|
|
|
|
// Create the pagination object
|
|
jimport('joomla.html.pagination');
|
|
$this->_page = new JPagination($total, $limitstart, $limit);
|
|
|
|
// Get the articles
|
|
$query = 'SELECT c.*, g.name AS groupname, cc.title as cctitle, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author' .
|
|
' FROM #__content AS c' .
|
|
' LEFT JOIN #__categories AS cc ON cc.id = c.catid' .
|
|
' LEFT JOIN #__sections AS s ON s.id = c.sectionid' .
|
|
' LEFT JOIN #__groups AS g ON g.id = c.access' .
|
|
' LEFT JOIN #__users AS u ON u.id = c.checked_out' .
|
|
' LEFT JOIN #__users AS v ON v.id = c.created_by' .
|
|
' LEFT JOIN #__content_frontpage AS f ON f.content_id = c.id' .
|
|
$where .
|
|
$order;
|
|
$db->setQuery($query, $this->_page->limitstart, $this->_page->limit);
|
|
$this->_list = $db->loadObjectList();
|
|
|
|
// If there is a db query error, throw a HTTP 500 and exit
|
|
if ($db->getErrorNum()) {
|
|
JError::raiseError( 500, $db->stderr() );
|
|
return false;
|
|
}
|
|
|
|
return $this->_list;
|
|
}
|
|
|
|
function getPagination()
|
|
{
|
|
if (is_null($this->_list) || is_null($this->_page)) {
|
|
$this->getList();
|
|
}
|
|
return $this->_page;
|
|
}
|
|
}
|
|
?>
|