DiscuzX/upload/source/function/cache/cache_advs.php

65 lines
2.1 KiB
PHP

<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: cache_advs.php 30323 2012-05-22 09:33:36Z monkey $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
function build_cache_advs() {
global $_G;
$advlist = $data = array();
$data['code'] = $data['parameters'] = $data['evalcode'] = array();
foreach(C::t('common_advertisement')->fetch_all_old() as $adv) {
foreach(explode("\t", $adv['targets']) as $target) {
$data['code'][$target][$adv['type']][$adv['advid']] = $adv['code'];
}
$etype = explode(':', $adv['type']);
if(count($etype) > 1) {
$advtype_class = DISCUZ_ROOT.'./source/plugin/'.$etype[0].'/adv/adv_'.$etype[1].'.php';
if(!file_exists($advtype_class) || !in_array($etype[0], $_G['setting']['plugins']['available'])) {
continue;
}
require_once $advtype_class;
$advclass = 'adv_'.$etype[1];
} else {
$advtype_class = libfile('adv/'.$adv['type'], 'class');
if(!file_exists($advtype_class)) {
continue;
}
require_once $advtype_class;
$advclass = 'adv_'.$adv['type'];
}
$advclass = new $advclass;
$adv['parameters'] = unserialize($adv['parameters']);
unset($adv['parameters']['style'], $adv['parameters']['html'], $adv['parameters']['displayorder']);
$data['parameters'][$adv['type']][$adv['advid']] = $adv['parameters'];
if($adv['parameters']['extra']) {
$data['parameters'][$adv['type']][$adv['advid']] = array_merge($data['parameters'][$adv['type']][$adv['advid']], $adv['parameters']['extra']);
unset($data['parameters'][$adv['type']][$adv['advid']]['extra']);
}
$advlist[] = $adv;
$data['evalcode'][$adv['type']] = $advclass->evalcode($adv);
}
updateadvtype();
savecache('advs', $data);
}
function updateadvtype() {
global $_G;
$advtype = array();
foreach(C::t('common_advertisement')->fetch_all_old() as $row) {
$advtype[$row['type']] = 1;
}
$_G['setting']['advtype'] = $advtype = array_keys($advtype);
C::t('common_setting')->update('advtype', $advtype);
}
?>