Mercurial > defr > drupal > ad
view channel/ad_channel.inc @ 1:948362c2a207 ad
update advertisement
author | pierre |
---|---|
date | Thu, 02 Apr 2009 15:28:21 +0000 |
parents | |
children | e5584a19768b |
line wrap: on
line source
<?php /** * @file * Ad Channel include file. * * Copyright (c) 2008-2009. * Jeremy Andrews <jeremy@tag1consulting.com>. */ /** * Filter advertisements not in an appropriate channel, from cache. */ 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) { // display on all except listed urls if (empty($urls) || !$match) { _debug_echo("ad_channel_cache: aid($aid) is valid"); $valid[] = $aid; break; } } else { // display only on listed urls 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 { // no channel information for ad, it's valid $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; }