ad_channel.inc in Advertisement 5.2
File
channel/ad_channel.inc
View source
<?php
function ad_channel_cache_filter($ads) {
_debug_echo("ad_channel_cache: adserve_cache_filter");
$channels = adserve_cache('get_cache', 'channel');
$valid = array();
$nochannel = array();
foreach ($ads as $aid) {
_debug_echo("ad_channel_cache: checking aid({$aid})");
if (is_array($channels['ads']) && isset($channels['ads'][$aid]) && is_array($channels['ads'][$aid])) {
foreach ($channels['ads'][$aid] as $chid) {
$channel = $channels['channels'][$chid];
$display = $channel->display;
$urls = unserialize($channel->urls);
$frontpage = adserve_variable('site_frontpage') ? adserve_variable('site_frontpage') : 'node';
$regexp = '/^(' . preg_replace(array(
'/(\\r\\n?|\\n)/',
'/\\\\\\*/',
'/(^|\\|)\\\\<front\\\\>($|\\|)/',
), array(
'|',
'.*',
'\\1' . preg_quote($frontpage, '/') . '\\2',
), preg_quote($urls, '/')) . ')$/';
$match = preg_match($regexp, adserve_variable('url'));
_debug_echo("ad_channel_cache: checking aid({$aid}) against channel({$chid}) path(" . adserve_variable('url') . ") regexp({$regexp}) match({$match})");
if ($display == 0) {
if (empty($urls) || !$match) {
_debug_echo("ad_channel_cache: aid({$aid}) is valid");
$valid[] = $aid;
break;
}
}
else {
if (!empty($urls) && $match) {
_debug_echo("ad_channel_cache: aid({$aid}) is valid");
$valid[] = $aid;
break;
}
}
_debug_echo("ad_channel_cache: aid({$aid}) is not valid");
}
}
else {
$display = $channels['display'];
_debug_echo("ad_channel_cache: aid({$aid}) has no channel info [{$display}]");
switch ($display) {
case 0:
$nochannel[] = $aid;
_debug_echo("ad_channel_cache: aid({$aid}) is valid if no valid ads found in current channel");
break;
case 1:
$valid[] = $aid;
_debug_echo("ad_channel_cache: aid({$aid}) is valid");
break;
case 2:
_debug_echo("ad_channel_cache: aid({$aid}) is not valid");
break;
}
}
}
if (empty($valid) && !empty($nochannel)) {
_debug_echo("ad_channel_cache: using ads with no channel info");
$valid = $nochannel;
}
$premiere = adserve_cache('get_cache', 'premiere');
$premieres = array();
if (is_array($premiere)) {
foreach ($valid as $aid) {
if (in_array($aid, $premiere)) {
_debug_echo("ad_channel_cache: aid({$aid}) is premiere advertisement");
$premieres[$aid] = $aid;
}
else {
_debug_echo("ad_channel_cache: aid({$aid}) is not a premiere advertisement");
}
}
if (!empty($premieres)) {
_debug_echo("ad_channel_cache: returning premiere advertisements");
return $premieres;
}
}
_debug_echo("ad_channel_cache: returning non-premiere advertisements");
return $valid;
}