没什么功能

源代码在线查看: archive.php

软件大小: 6025 K
上传用户: rylzll
关键词:
下载地址: 免注册下载 普通下载 VIP

相关代码

								/**				 * @version		$Id: archive.php 10704 2008-08-21 09:38:40Z eddieajau $				 * @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');								/**				 * Content Component Archive Model				 *				 * @package 	Joomla				 * @subpackage	Content				 * @since		1.5				 */				class ContentModelArchive extends JModel				{					/**					 * Article list array					 *					 * @var array					 */					var $_data = array();									/**					 * Article total					 *					 * @var integer					 */					var $_total = array();									/**					 * Method to get the archived article list					 *					 * @access public					 * @return array					 */					function getData()					{						global $mainframe;						// Lets load the content if it doesn't already exist						if (empty($this->_data))						{							// Get the page/component configuration							$params = &$mainframe->getParams();											// Get the pagination request variables							$limit		= JRequest::getVar('limit', $params->get('display_num', 20), '', 'int');							$limitstart	= JRequest::getVar('limitstart', 0, '', 'int');											$query = $this->_buildQuery();											$this->_data = $this->_getList($query, $limitstart, $limit);						}										return $this->_data;					}									/**					 * Method to get the total number of content items for the frontpage					 *					 * @access public					 * @return integer					 */					function getTotal()					{						// Lets load the content if it doesn't already exist						if (empty($this->_total))						{							$query = $this->_buildQuery();							$this->_total = $this->_getListCount($query);						}										return $this->_total;					}									// JModel override to add alternating value for $odd					function &_getList( $query, $limitstart=0, $limit=0 )					{						$result =& parent::_getList($query, $limitstart, $limit);										$odd = 1;						foreach ($result as $k => $row) {							$result[$k]->odd = $odd;							$odd = 1 - $odd;						}										return $result;					}									function _buildQuery()					{						global $mainframe;						// Get the page/component configuration						$params = &$mainframe->getParams();										// If voting is turned on, get voting data as well for the content items						$voting	= ContentHelperQuery::buildVotingQuery($params);										// Get the WHERE and ORDER BY clauses for the query						$where		= $this->_buildContentWhere();						$orderby	= $this->_buildContentOrderBy();										$query = 'SELECT a.id, a.title, a.title_alias, a.introtext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,'.							' a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.attribs, a.hits, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access, cc.title AS category, s.title AS section,' .							' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'.							' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.							' CHAR_LENGTH( a.`fulltext` ) AS readmore, u.name AS author, u.usertype, g.name AS groups'.$voting['select'] .							' FROM #__content AS a' .							' INNER JOIN #__categories AS cc ON cc.id = a.catid' .							' LEFT JOIN #__sections AS s ON s.id = a.sectionid' .							' LEFT JOIN #__users AS u ON u.id = a.created_by' .							' LEFT JOIN #__groups AS g ON a.access = g.id'.							$voting['join'].							$where.							$orderby;										return $query;					}									function _buildContentOrderBy()					{						$filter_order		= JRequest::getCmd('filter_order');						$filter_order_Dir	= JRequest::getWord('filter_order_Dir');										$orderby = ' ORDER BY ';						if ($filter_order && $filter_order_Dir) {							$orderby .= $filter_order.' '.$filter_order_Dir.', ';						}										// Get the page/component configuration						$params = $this->getState('parameters.menu');						if (!is_object($params)) {							$params = &JComponentHelper::getParams('com_content');						}										// Special ordering for archive articles						$orderby_sec	= $params->def('orderby', 'rdate');						$primary		= ContentHelperQuery::orderbySecondary($orderby_sec);						$orderby		.= $primary;										return $orderby;					}									function _buildContentWhere()					{						global $mainframe;										// Initialize some variables						$user	=& JFactory::getUser();						$db		=& JFactory::getDBO();						$aid	= (int) $user->get('aid', 0);										// First thing we need to do is build the access section of the clause						$where = ' WHERE a.access 						$where .= ' AND s.access 						$where .= ' AND cc.access 						$where .= ' AND s.published = 1';						$where .= ' AND cc.published = 1';										$where .= ' AND a.state = \'-1\'';						$year	= JRequest::getInt( 'year' );						if ($year) {							$where .= ' AND YEAR( a.created ) = \''.$year.'\'';						}						$month	= JRequest::getInt( 'month' );						if ($month) {							$where .= ' AND MONTH( a.created ) = \''.$month.'\'';						}										/*						 * If we have a filter... lets tack the AND clause						 * for the filter onto the WHERE clause of the archive query.						 */						$filter = JRequest::getString('filter', '', 'post');						if ($filter) {							// clean filter variable							$filter = JString::strtolower($filter);							$filter	= $db->Quote( '%'.$db->getEscaped( $filter, true ).'%', false );											// Get the page/component configuration							$params = &$mainframe->getParams();							switch ($params->get('filter_type', 'title'))							{								case 'title' :									$where .= ' AND LOWER( a.title ) LIKE '.$filter;									break;												case 'author' :									$where .= ' AND ( ( LOWER( u.name ) LIKE '.$filter.' ) OR ( LOWER( a.created_by_alias ) LIKE '.$filter.' ) )';									break;												case 'hits' :									$where .= ' AND a.hits LIKE '.$filter;									break;							}						}						return $where;					}				}							

相关资源