www.gusucode.com > iWebshop开源PHP商城系统 v2.8源码程序 > iwebshop/classes/ad.php

    <?php
/**
 * @copyright (c) 2011 jooyea.cn
 * @file ad.php
 * @brief 关于广告管理
 * @author chendeshan
 * @date 2011-02-14
 * @version 0.6
 */

/**
 * @class article
 * @brief 广告管理模块
 */
class Ad
{
	//是否加载过js
	private static $isLoadJs = false;

	/**
	 * @brief 广告类型展示解析
	 * @param $type int 类型
	 * @return string 类型字符串
	 */
	public static function showType($type)
	{
		switch($type)
		{
			case "1":
			$str = '图片';
			break;

			case "2":
			$str = 'flash';
			break;

			case "3":
			$str = '文字';
			break;

			case "4":
			$str = '代码';
			break;

			case "5":
			$str = '幻灯片';
			break;
		}
		return $str;
	}

	/**
	 * @brief 展示制定广告位的广告内容
	 * @param $position mixed 广告位ID 或者 广告位名称
	 * @param $goods_cat_id 商品分类ID
	 * @return string
	 */
	public static function show($position,$goods_cat_id = 0)
	{
		$positionObject = array();
		$adArray        = array();

		$positionObject = self::getPositionInfo($position);
		if($positionObject)
		{
			$adList = self::getAdList($positionObject['id'],$goods_cat_id);
			foreach($adList as $key => $val)
			{
				$adArray[] = self::display($val);
			}
		}

		//有广告内容数据
		if($adArray)
		{
			$positionJson = JSON::encode($positionObject);
			$adJson       = JSON::encode($adArray);

			//引入 adloader js类库
			$loadJs = '';
			if(self::$isLoadJs == false)
			{
				$loadJs = IJSPackage::load('admanage');
				self::$isLoadJs = true;
			}

			$adPositionJsId = md5("AD_{$position}_{$goods_cat_id}");
			//生成HTML代码
			$htmlOutput =
<<< OEF
			{$loadJs}
			<div id='{$adPositionJsId}' class='admanage'>
			</div>
			<script type='text/javascript'>
				(new adLoader()).load({$positionJson},{$adJson},"{$adPositionJsId}");
			</script>
OEF;
			echo $htmlOutput;
		}

	}

	/**
	 * @brief 展示广告位数据
	 * @param $adData array 广告数据
	 * @return string
	 */
	private static function display($adData)
	{
		$result = array();
		$linkHtml = $adData['link'] ? "onclick=window.open('".IUrl::creatUrl($adData['link'])."')" : "";

		switch($adData['type'])
		{
			//图片
			case 1:
			{
				$size = ($adData['width'] > 0 && $adData['height'] > 0) ? 'width:'.$adData['width'].';height:'.$adData['height'] : '';
				$result = array
				(
					'type' => 1,
					'data' => '<img src="'.IUrl::creatUrl("").$adData['content'].'" style="cursor:pointer;'.$size.'" '.$linkHtml.' />'
				);
			}
			break;

			//flash
			case 2:
			{
				$size = ($adData['width'] > 0 && $adData['height'] > 0) ? 'width='.$adData['width'].' height='.$adData['height'] : '';
				$result = array
				(
					'type' => 2,
					'data' => '<object style="cursor:pointer;" '.$linkHtml.' classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" '.$size.' hspace="0" vspace="0" border="0" align="left"><param name="movie" value="'.IUrl::creatUrl("").$adData['content'].'"><param name="quality" value="high"><param name="wmode" value="transparent"><param name="scale" value="noborder"><embed src="'.IUrl::creatUrl("").$adData['content'].'" quality="high" wmode="transparent" scale="noborder" '.$size.' hspace="0" vspace="0" border="0" align="left" type="application/x-shockwave-flash" luginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>'
				);
			}
			break;

			//文字
			case 3:
			{
				$result = array
				(
					'type' => 3,
					'data' => '<label style="cursor:pointer;" '.$linkHtml.'>'.$adData['content'].'</label>'
				);
			}
			break;

			//代码
			case 4:
			{
				preg_match('|src\s*=\s*[\'"](.*?)[\'"]|',$adData['content'],$match);
				$result = array('type' => 4,'data' => '');

				if(isset($match[1]))
				{
					$result['data'] = file_get_contents($match[1]);
				}
				else
				{
					$result['data'] = strip_tags($adData['content']);
				}
			}
			break;
		}
		return $result;
	}

	/**
	 * @brief 获取广告位置的信息
	 * @param $position mixed 广告位ID 或者 广告位名称
	 * @return array
	 */
	public static function getPositionInfo($position)
	{
		$adPositionDB = new IModel("ad_position");
		if(is_int($position))
		{
			return $adPositionDB->getObj("id={$position} AND `status`=1");
		}
		else
		{
			return $adPositionDB->getObj("name='{$position}' AND `status`=1");
		}
	}

	/**
	 * @brief 获取当前时间段正在使用的广告数据
	 * @param $position int 广告位ID
	 * @param $goods_cat_id 商品分类ID
	 * @return array
	 */
	public static function getAdList($position,$goods_cat_id = 0)
	{
		$now    = date("Y-m-d H:i:s",ITime::getNow());
		$adDB   = new IModel("ad_manage");
		return $adDB->query("position_id={$position} and goods_cat_id = {$goods_cat_id} and start_time < '{$now}' AND end_time > '{$now}' ORDER BY `order` ASC ");
	}
}