Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发

源代码在线查看: banner.php

软件大小: 5657 K
上传用户: fansino
关键词: Joomla Management Content System
下载地址: 免注册下载 普通下载 VIP

相关代码

								/**				 * @version		$Id: banner.php 11393 2009-01-05 02:11:06Z ian $				 * @package  Joomla				 * @subpackage	Banners				 * @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' );				jimport( 'joomla.application.component.helper' );								/**				 * @package		Joomla				 * @subpackage	Banners				 */				class BannersModelBanner extends JModel				{					/**					 * Gets a list of banners					 * @param array An array of filters					 * @return array An array of banner objects					 */					function getList( $filters )					{						$db			= &$this->getDBO();						$ordering	= @$filters['ordering'];						$tagSearch	= @$filters['tag_search'];						$randomise	= ($ordering == 'random');										$wheres = array();						$wheres[] = 'showBanner = 1';						$wheres[] = '(imptotal = 0 OR impmade < imptotal)';										if (@$filters['cid'])						{							$wheres[] = 'cid = ' . (int) $filters['cid'];						}						if (@$filters['catid'])						{							$wheres[] = 'catid = ' . (int) $filters['catid'];						}						if (is_array( $tagSearch ))						{							$temp = array();							$n = count( $tagSearch );							if ($n == 0)							{								// if tagsearch is an array, and empty, fail the query								$result = array();								return $result;							}							for ($i = 0; $i < $n; $i++)							{								$temp[] = "tags REGEXP '[[::]]'";							}							if ($n)							{								$wheres[] = '(' . implode( ' OR ', $temp). ')';							}						}										$query = "SELECT *"							. ($randomise ? ', RAND() AS ordering' : '')							. ' FROM #__banner'							. ' WHERE ' . implode( ' AND ', $wheres )							. ' ORDER BY sticky DESC, ordering ';										$db->setQuery( $query, 0, $filters['limit'] );										$result = $db->loadObjectList();								//		if($db->getErrorNum()) {				//			JError::raiseError( 500, $db->stderr());				//		}						return $result;					}									/**					 * Makes impressions on a list of banners					 */					function impress( $list )					{						$config =& JComponentHelper::getParams( 'com_banners' );						$db		= &$this->getDBO();						$n		= count( $list );										$trackImpressions = $config->get( 'track_impressions' );						$date =& JFactory::getDate();						$trackDate = $date->toFormat( '%Y-%m-%d' );										// TODO: Change loop single sql with where bid = x OR bid = y format						for ($i = 0; $i < $n; $i++) {							$item = &$list[$i];											$item->impmade++;							$expire = ($item->impmade >= $item->imptotal) && ($item->imptotal != 0);											$query = 'UPDATE #__banner'							. ' SET impmade = impmade + 1'							. ($expire ? ', showBanner=0' : '')							. ' WHERE bid = '.(int) $item->bid							;							$db->setQuery( $query );											if(!$db->query()) {								JError::raiseError( 500, $db->stderror());							}											if ($trackImpressions)							{								// TODO: Add impression tracking								/*								$query = 'UPDATE #__bannertrack SET' .									' track_type = 1,' .									' banner_id = ' . $item->bid;								*/								$query = 'INSERT INTO #__bannertrack ( track_type, banner_id, track_date )' .									' VALUES ( 1, '.(int) $item->bid.', '.$db->Quote($trackDate).' )'									;								$db->setQuery( $query );												if(!$db->query()) {									JError::raiseError( 500, $db->stderror() );								}							}						}					}									/**					 * Clicks the URL, incrementing the counter					 */					function click( $id = 0 )					{						$config =& JComponentHelper::getParams( 'com_banners' );						$db		= &$this->getDBO();										$trackClicks = $config->get( 'track_clicks' );						$date =& JFactory::getDate();						$trackDate = $date->toFormat( '%Y-%m-%d' );										// update click count						$query = 'UPDATE #__banner' .							' SET clicks = ( clicks + 1 )' .							' WHERE bid = ' . (int)$id;										$db->setQuery( $query );						if(!$db->query()) {							JError::raiseError( 500, $db->stderror());						}										if ($trackClicks)						{							$query = 'INSERT INTO #__bannertrack ( track_type, banner_id, track_date )' .								' VALUES ( 2, '.(int)$id.', '.$db->Quote($trackDate).' )'								;							$db->setQuery( $query );											if(!$db->query()) {								JError::raiseError( 500, $db->stderror() );							}						}									}									/**					 * Get the URL for a					 */					function getUrl( $id = 0 )					{						global $mainframe;										$db = &$this->getDBO();										// redirect to banner url						$query = 'SELECT clickurl, bid FROM #__banner' .							' WHERE bid = ' . (int) $id;										$db->setQuery( $query );						if(!$db->query())						{							JError::raiseError( 500, $db->stderr());						}						$url = $db->loadResult();										// check for links						if (!preg_match( '#http[s]?://|index[2]?\.php#', $url ))						{							$url = "http://$url";						}						return $url;					}				}							

相关资源