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; }
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]); }
/** * 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 }
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); }