/** * @param string $campaignName * @param bool $anonymous * @throws NoAdsMatchingCriteriaException * @throws NoFallbackCampaign * @throws FallbackCampaignDisabled */ function __construct($campaignName, $anonymous = false) { global $wgPromoterFallbackCampaign; $this->anonymous = $anonymous; $campaign = new AdCampaign($campaignName); if (!AdCampaign::campaignExists($campaignName) || !$campaign->isEnabled()) { /* If the selected campaign doesn't exist or is disabled, fallback: */ $campaign = new AdCampaign($wgPromoterFallbackCampaign); if (!AdCampaign::campaignExists($wgPromoterFallbackCampaign)) { throw new NoFallbackCampaign(); } elseif (!$campaign->isEnabled()) { throw new FallbackCampaignDisabled(); } } $this->campaignName = $campaign->getName(); $this->ads = $campaign->getAds(); $this->filterAds(); if (count($this->ads) < 1) { throw new NoAdsMatchingCriteriaException($this->campaignName); } /* echo '<pre dir="ltr">'; print_r( $this->ads ); echo '</pre>'; */ $this->allocate(); //$chosenAd = $this->chooseAd(); }