示例#1
0
function _adSelectZone($zoneId, $context = array(), $source = '', $richMedia = true)
{
    global $g_append, $g_prepend;
    while (!in_array($zoneId, $GLOBALS['_MAX']['followedChain'])) {
        $GLOBALS['_MAX']['followedChain'][] = $zoneId;
        $appendedThisZone = false;
        // Get all ads which are linked to the zone
        $aZoneLinkedAds = MAX_cacheGetZoneLinkedAds($zoneId);
        if ($zoneId != 0 && MAX_limitationsIsZoneForbidden($zoneId, $aZoneLinkedAds)) {
            $zoneId = _getNextZone($zoneId, $aZoneLinkedAds);
            continue;
        }
        if (is_array($aZoneLinkedAds)) {
            if (isset($aZoneLinkedAds['forceappend']) && $aZoneLinkedAds['forceappend'] == 't') {
                $g_prepend .= $aZoneLinkedAds['prepend'];
                $g_append = $aZoneLinkedAds['append'] . $g_append;
                $appendedThisZone = true;
            }
            $aLinkedAd = _adSelectCommon($aZoneLinkedAds, $context, $source, $richMedia);
            if (is_array($aLinkedAd)) {
                $aLinkedAd['zoneid'] = $zoneId;
                $aLinkedAd['bannerid'] = $aLinkedAd['ad_id'];
                $aLinkedAd['storagetype'] = $aLinkedAd['type'];
                $aLinkedAd['campaignid'] = $aLinkedAd['placement_id'];
                $aLinkedAd['zone_companion'] = $aZoneLinkedAds['zone_companion'];
                $aLinkedAd['block_zone'] = $aZoneLinkedAds['block_zone'];
                $aLinkedAd['cap_zone'] = $aZoneLinkedAds['cap_zone'];
                $aLinkedAd['session_cap_zone'] = $aZoneLinkedAds['session_cap_zone'];
                if (!$appendedThisZone) {
                    $aLinkedAd['append'] .= $aZoneLinkedAds['append'] . $g_append;
                    $aLinkedAd['prepend'] = $g_prepend . $aZoneLinkedAds['prepend'];
                } else {
                    $aLinkedAd['append'] .= $g_append;
                    $aLinkedAd['prepend'] = $g_prepend;
                }
                return $aLinkedAd;
            }
            $zoneId = _getNextZone($zoneId, $aZoneLinkedAds);
        }
    }
    if (!empty($aZoneLinkedAds['default_banner_image_url'])) {
        return array('default' => true, 'default_banner_image_url' => $aZoneLinkedAds['default_banner_image_url'], 'default_banner_destination_url' => $aZoneLinkedAds['default_banner_destination_url']);
    }
    return false;
}
示例#2
0
文件: ck.php 项目: villos/tree_admin
function _getZoneAd($zoneId)
{
    $conf = $GLOBALS['conf'];
    $zoneLinkedAds = MAX_cacheGetZoneLinkedAds($zoneId, false);
    if (!empty($zoneLinkedAds['xAds']) && count($zoneLinkedAds['xAds']) == 1) {
        list($adId, $ad) = each($zoneLinkedAds['xAds']);
    } elseif (!empty($zoneLinkedAds['ads']) && count($zoneLinkedAds['ads']) == 1) {
        list($adId, $ad) = each($zoneLinkedAds['ads']);
    } elseif (!empty($zoneLinkedAds['lAds']) && count($zoneLinkedAds['lAds']) == 1) {
        list($adId, $ad) = each($zoneLinkedAds['lAds']);
    }
    if (!empty($ad['url'])) {
        // Store the destination URL to save querying the DB again
        $_REQUEST[$conf['var']['dest']] = $ad['url'];
    }
    return $adId;
}
 /**
  * Method tests invalidateZonesLinkingCache method
  */
 function test_invalidateZonesLinkingCache()
 {
     $cachedData[0] = MAX_cacheGetZoneLinkedAds($this->_aIds['zones'][0]);
     $cachedData[1] = MAX_cacheGetZoneLinkedAds($this->_aIds['zones'][1]);
     $aZonesIds = array($this->_aIds['zones'][0], $this->_aIds['zones'][1]);
     // Unlink zones from campaign
     $dalZones = OA_Dal::factoryDAL('zones');
     $dalZones->unlinkZonesFromCampaign($aZonesIds, $this->_aIds['campaigns'][0]);
     // Expect no changes in cache
     $this->assertEqual(MAX_cacheGetZoneLinkedAds($this->_aIds['zones'][0]), $cachedData[0]);
     $this->assertEqual(MAX_cacheGetZoneLinkedAds($this->_aIds['zones'][1]), $cachedData[1]);
     $this->oDeliveryCacheManager->invalidateZonesLinkingCache($aZonesIds);
     // Now expect changes in cache
     $this->assertNotEqual(MAX_cacheGetZoneLinkedAds($this->_aIds['zones'][0]), $cachedData[0]);
     $this->assertNotEqual(MAX_cacheGetZoneLinkedAds($this->_aIds['zones'][1]), $cachedData[1]);
 }
示例#4
0
/**
 * Get the ad information when only passed in a zone ID (for email zones)
 *
 * @param int $zoneId The Zone ID of the zone
 * @return int $adId The ad ID of the only linked banner, or 0 if <> 1 active ad linked
 */
function _getZoneAd($zoneId)
{
    $conf = $GLOBALS['conf'];
    $zoneLinkedAds = MAX_cacheGetZoneLinkedAds($zoneId, false);
    if (!empty($zoneLinkedAds['xAds']) && count($zoneLinkedAds['xAds']) == 1) {
        reset($zoneLinkedAds['xAds']);
        list($adId, $ad) = each($zoneLinkedAds['xAds']);
    } elseif (!empty($zoneLinkedAds['ads']) && count($zoneLinkedAds['ads']) == 1) {
        reset($zoneLinkedAds['ads']);
        // we select the first (and only) banner linked to this email zone
        foreach ($zoneLinkedAds['ads'] as $priority => $ads) {
            foreach ($ads as $adId => $ad) {
                break;
            }
        }
    } elseif (!empty($zoneLinkedAds['lAds']) && count($zoneLinkedAds['lAds']) == 1) {
        reset($zoneLinkedAds['lAds']);
        list($adId, $ad) = each($zoneLinkedAds['lAds']);
    }
    if (!empty($ad['url'])) {
        // Store the destination URL to save querying the DB again
        $_REQUEST[$conf['var']['dest']] = $ad['url'];
    }
    return $adId;
}
 /**
  * Creates all possible delivert cache files
  *
  * @param array $aIds array of DB Ids returned by _createTestData
  * @see _createTestData
  */
 function _createTestCacheFiles($aIds)
 {
     // Create cache files not related to DB Objects
     MAX_cacheGetAccountTZs();
     MAX_cacheCheckIfMaintenanceShouldRun();
     MAX_cacheGetGoogleJavaScript();
     // Create cache files for banners and images
     foreach ($aIds['banners'] as $bannerId) {
         MAX_cacheGetAd($bannerId);
     }
     foreach ($aIds['images'] as $filename) {
         MAX_cacheGetCreative($filename);
     }
     // Create cache files for zones
     foreach ($aIds['zones'] as $zoneId) {
         MAX_cacheGetZoneLinkedAds($zoneId);
         MAX_cacheGetZoneInfo($zoneId);
     }
     // Create cache files for websites
     foreach ($aIds['affiliates'] as $affiliateid) {
         OA_cacheGetPublisherZones($affiliateid);
     }
     // Create cache files for trackers
     foreach ($aIds['trackers'] as $trackerid) {
         MAX_cacheGetTracker($trackerid);
         MAX_cacheGetTrackerVariables($trackerid);
     }
     // Create cache files for channels
     foreach ($aIds['channel'] as $channelid) {
         MAX_cacheGetChannelLimitations($channelid);
     }
     // cache files for direct-selection are not created
     // due to problems with invalidating MAX_cacheGetLinkedAds
 }
示例#6
0
function _getZoneAd($zoneId)
{
    $conf = $GLOBALS['conf'];
    $zoneLinkedAds = MAX_cacheGetZoneLinkedAds($zoneId, false);
    if (!empty($zoneLinkedAds['xAds']) && count($zoneLinkedAds['xAds']) == 1) {
        reset($zoneLinkedAds['xAds']);
        list($adId, $ad) = each($zoneLinkedAds['xAds']);
    } elseif (!empty($zoneLinkedAds['ads']) && count($zoneLinkedAds['ads']) == 1) {
        reset($zoneLinkedAds['ads']);
        foreach ($zoneLinkedAds['ads'] as $priority => $ads) {
            foreach ($ads as $adId => $ad) {
                break;
            }
        }
    } elseif (!empty($zoneLinkedAds['lAds']) && count($zoneLinkedAds['lAds']) == 1) {
        reset($zoneLinkedAds['lAds']);
        list($adId, $ad) = each($zoneLinkedAds['lAds']);
    }
    if (!empty($ad['url'])) {
        $_REQUEST[$conf['var']['dest']] = $ad['url'];
    }
    return $adId;
}
 /**
  * Method tests invalidateZoneLinkedAdsCache method
  */
 function test_invalidateZoneLinkedAdsCache()
 {
     $aIds = $this->_createTestData();
     $this->_createTestCacheFiles($aIds);
     $cachedData = MAX_cacheGetZoneLinkedAds($aIds['zones'][0]);
     // Change zone
     $doZone = OA_Dal::factoryDO('zones');
     $doZone->get($aIds['zones'][0]);
     $doZone->zonename = 'new name';
     $doZone->update();
     // Expect no changes in cache
     $this->assertEqual(MAX_cacheGetZoneLinkedAds($aIds['zones'][0]), $cachedData);
     $this->oDeliveryCacheCommon->invalidateZoneLinkedAdsCache($aIds['zones'][0]);
     // Now expect changes in cache
     $cachedData2 = MAX_cacheGetZoneLinkedAds($aIds['zones'][0]);
     $this->assertNotEqual($cachedData2, $cachedData);
     // Change linked banner
     $doBanners = OA_Dal::factoryDO('banners');
     $doBanners->get($aIds['banners'][0]);
     $doBanners->description = 'new description';
     $doBanners->update();
     // Expect no changes in cache
     $this->assertEqual(MAX_cacheGetZoneLinkedAds($aIds['zones'][0]), $cachedData2);
     $this->oDeliveryCacheCommon->invalidateZoneLinkedAdsCache($aIds['zones'][0]);
     // Now expect changes in cache
     $cachedData3 = MAX_cacheGetZoneLinkedAds($aIds['zones'][0]);
     $this->assertNotEqual($cachedData3, $cachedData2);
     // Unlink banner
     $doAdZoneAssoc = OA_Dal::factoryDO('ad_zone_assoc');
     $doAdZoneAssoc->zone_id = $aIds['zones'][0];
     $doAdZoneAssoc->ad_id = $aIds['banners'][0];
     $doAdZoneAssoc->delete();
     // Expect no changes in cache
     $this->assertEqual(MAX_cacheGetZoneLinkedAds($aIds['zones'][0]), $cachedData3);
     $this->oDeliveryCacheCommon->invalidateZoneLinkedAdsCache($aIds['zones'][0]);
     // Now expect changes in cache
     $this->assertNotEqual(MAX_cacheGetZoneLinkedAds($aIds['zones'][0]), $cachedData3);
 }