function getSitesByUrls($urls, $targeting) { $soapClients =& APIlityClients::getClients(); $urlsXml = ''; foreach ($urls as $url) { $urlsXml .= "<urls>" . trim($url) . "</urls>"; } $someSoapClient = $soapClients->getSiteSuggestionClient(); $soapParameters = "<getSitesByUrls>" . $urlsXml . getTargetingXml($targeting) . "\n </getSitesByUrls>"; // talk to the google server $siteSuggestion = $someSoapClient->call("getSitesByUrls", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":getSitesByUrls()", $soapParameters); return false; } return $siteSuggestion['getSitesByUrlsReturn']; }
function setStatus($newStatus) { // update the google servers $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getAdGroupClient(); $soapParameters = "<updateAdGroup>\n <changedData>\n <campaignId>" . $this->getBelongsToCampaignId() . "\n </campaignId>\n <id>" . $this->getId() . "</id>\n <status>" . $newStatus . "</status>\n </changedData>\n </updateAdGroup>"; // set the new status on the google servers $someSoapClient->call("updateAdGroup", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":setStatus()", $soapParameters); return false; } // update local object $this->status = $newStatus; return true; }
function getCustomizedKeywordListEstimate($keywords, $maxCpc, $geoTargets, $languages, $networkTargeting) { $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getTrafficEstimatorClient(); // prepare soap parameters, this takes some time as we need to iterate over // all keywords in all adgroups of the campaign $soapParameters = "<estimateCampaignList>\n <campaignRequests>\n <adGroupRequests>"; if (is_array($keywords)) { foreach ($keywords as $newKeyword) { // think in micros $soapParameters .= "<keywordRequests>\n <maxCpc>" . (isset($newKeyword['maxCpc']) ? $newKeyword['maxCpc'] * EXCHANGE_RATE : '') . "</maxCpc>\n <text>" . $newKeyword['text'] . "</text>\n <type>" . $newKeyword['type'] . "</type>\n </keywordRequests>"; } } // max cpc (adgroup level) if ($maxCpc) { $soapParameters .= "<maxCpc>" . $maxCpc * EXCHANGE_RATE . "</maxCpc>"; } $soapParameters .= "</adGroupRequests>"; // network targeting. expecting array("target1", "target2") $networkTargetingXml = ''; if (is_array($networkTargeting)) { foreach ($networkTargeting as $networkTarget) { $networkTargetingXml .= "<networkTypes>" . trim($networkTarget) . "</networkTypes>"; } } $soapParameters .= "<networkTargeting>" . $networkTargetingXml . "\n </networkTargeting>"; // geo targeting $geoTargetsXml = ''; $geoTargetsXml .= "<countryTargets>"; if (isset($geoTargets['countryTargets']['countries'])) { foreach ($geoTargets['countryTargets']['countries'] as $country) { $geoTargetsXml .= "<countries>" . trim($country) . "</countries>"; } } $geoTargetsXml .= "</countryTargets><regionTargets>"; if (isset($geoTargets['regionTargets']['regions'])) { foreach ($geoTargets['regionTargets']['regions'] as $region) { $geoTargetsXml .= "<regions>" . trim($region) . "</regions>"; } } $geoTargetsXml .= "</regionTargets><metroTargets>"; if ($geoTargets['metroTargets']['metros']) { foreach ($geoTargets['metroTargets']['metros'] as $metro) { $geoTargetsXml .= "<metros>" . trim($metro) . "</metros>"; } } $geoTargetsXml .= "</metroTargets><cityTargets>"; if ($geoTargets['cityTargets']['cities']) { foreach ($geoTargets['cityTargets']['cities'] as $city) { $geoTargetsXml .= "<cities>" . trim($city) . "</cities>"; } } $geoTargetsXml .= "</cityTargets><proximityTargets>"; if ($geoTargets['proximityTargets']['circles']) { foreach ($geoTargets['proximityTargets']['circles'] as $circle) { $geoTargetsXml .= "<circles>"; $geoTargetsXml .= "<latitudeMicroDegrees>" . $circle['latitudeMicroDegrees'] . "</latitudeMicroDegrees>"; $geoTargetsXml .= "<longitudeMicroDegrees>" . $circle['longitudeMicroDegrees'] . "</longitudeMicroDegrees>"; $geoTargetsXml .= "<radiusMeters>" . $circle['radiusMeters'] . "</radiusMeters>"; $geoTargetsXml .= "</circles>"; } } $geoTargetsXml .= "</proximityTargets>"; if (isset($geoTargets['targetAll']) && $geoTargets['targetAll']) { $geoTargetsXml .= "<targetAll>true</targetAll>"; } $soapParameters .= "<geoTargeting>" . $geoTargetsXml . "</geoTargeting>"; // language targeting, expecting array("en", "fr", "gr") $languagesXml = ''; if (strcasecmp($languages[0], "all") == 0) { $languagesXml = ''; } else { foreach ($languages as $language) { $languagesXml .= "<languages>" . trim($language) . "</languages>"; } } $soapParameters .= "<languageTargeting>" . $languagesXml . "</languageTargeting>"; $soapParameters .= "</campaignRequests>\n </estimateCampaignList>"; // soap parameters happily prepared // talk to the google server $trafficEstimates = $someSoapClient->call("estimateCampaignList", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":getCustomizedKeywordListEstimate()", $soapParameters); return false; } if (isset($trafficEstimates['estimateCampaignListReturn']['adGroupEstimates']['keywordEstimates']['lowerCpc'])) { $saveArray = $trafficEstimates['estimateCampaignListReturn']['adGroupEstimates']['keywordEstimates']; unset($trafficEstimates['estimateCampaignListReturn']['adGroupEstimates']['keywordEstimates']); $trafficEstimates['estimateCampaignListReturn']['adGroupEstimates']['keywordEstimates'][0] = $saveArray; } $i = 0; foreach ($trafficEstimates['estimateCampaignListReturn']['adGroupEstimates']['keywordEstimates'] as $trafficEstimate) { // separate returned values $lowerAveragePosition = $trafficEstimate['lowerAvgPosition']; $upperAveragePosition = $trafficEstimate['upperAvgPosition']; $lowerCostPerClick = (double) $trafficEstimate['lowerCpc'] / EXCHANGE_RATE; $upperCostPerClick = (double) $trafficEstimate['upperCpc'] / EXCHANGE_RATE; $lowerClicksPerDay = $trafficEstimate['lowerClicksPerDay']; $upperClicksPerDay = $trafficEstimate['upperClicksPerDay']; // create estimate array unset($trafficEstimates['estimateCampaignListReturn']['adGroupEstimates']['keywordEstimates'][$i]); $trafficEstimates['estimateCampaignListReturn']['adGroupEstimates']['keywordEstimates'][$i] = array('text' => $keywords[$i]['text'], 'lowerAveragePosition' => $lowerAveragePosition, 'upperAveragePosition' => $upperAveragePosition, 'lowerCostPerClick' => $lowerCostPerClick, 'upperCostPerClick' => $upperCostPerClick, 'lowerClicksPerDay' => $lowerClicksPerDay, 'upperClicksPerDay' => $upperClicksPerDay); $i++; } return $trafficEstimates['estimateCampaignListReturn']['adGroupEstimates']['keywordEstimates']; }
function setMaxCpc($newMaxCpc) { // update the google servers $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getCriterionClient(); // danger! think in micros $soapParameters = "<updateCriteria>\n <criteria>\n <id>" . $this->getId() . "</id>\n <adGroupId>" . $this->getBelongsToAdGroupId() . "\n </adGroupId>\n <criterionType>Website</criterionType>\n <maxCpc>" . $newMaxCpc * EXCHANGE_RATE . "</maxCpc>\n <negative>" . $this->getIsNegative() . "</negative>\n <destinationUrl>" . $this->getDestinationUrl() . "</destinationUrl>\n </criteria>\n </updateCriteria>"; // update the keyword on the google servers $someSoapClient->call("updateCriteria", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":setMaxCpc()", $soapParameters); return false; } // update local object $this->maxCpc = $newMaxCpc; return true; }
function setDestinationUrl($newDestinationUrl) { // setting the destination url is not provided by the api so emulating // this by deleting and then re-creating the ad // update the google servers $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getAdClient(); // then recreate it with the new destination url set $soapParameters = "<addAds>\n <ads>\n <adGroupId>" . $this->getBelongsToAdGroupId() . "</adGroupId>\n <headline>" . $this->getHeadline() . "</headline>\n <description1>" . $this->getDescription1() . "</description1>\n <description2>" . $this->getDescription2() . "</description2>\n <displayUrl>" . $this->getDisplayUrl() . "</displayUrl>\n <destinationUrl>" . $newDestinationUrl . "</destinationUrl>\n <status>" . $this->getStatus() . "</status>\n <adType>TextAd</adType>\n </ads>\n </addAds>"; // add the ad to the google servers $someAd = $someSoapClient->call("addAds", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":setDestinationUrl()", $soapParameters); return false; } // first delete the current ad $soapParameters = "<updateAds>\n <ads>\n <adGroupId>" . $this->getBelongsToAdGroupId() . "</adGroupId>\n <id>" . $this->getId() . "</id>\n <status>Disabled</status>\n <adType>TextAd</adType>\n </ads>\n </updateAds>"; // delete the ad on the google servers $someSoapClient->call("updateAds", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":setDestinationUrl()", $soapParameters); return false; } // update local object $this->destinationUrl = $someAd['addAdsReturn']['destinationUrl']; // changing the destination url of an ad will change its id so update local object $this->id = $someAd['addAdsReturn']['id']; return true; }
function getKeywordVariations($seedKeywords, $useSynonyms, $languages, $countries) { $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getKeywordToolClient(); $languagesXml = ""; $countriesXml = ""; $seedKeywordsXml = ""; // process seed keywords foreach ($seedKeywords as $seedKeyword) { if ($seedKeyword['isNegative']) { $seedKeyword['isNegative'] = "true"; } else { $seedKeyword['isNegative'] = "false"; } $seedKeywordsXml .= "<seedKeywords>\n <negative>" . trim($seedKeyword['isNegative']) . "</negative>\n <text>" . trim($seedKeyword['text']) . "</text>\n <type>" . trim($seedKeyword['type']) . "</type>\n </seedKeywords>"; } // process languages if ($languages[0] == "all") { $languagesXml = ""; } else { foreach ($languages as $language) { $languagesXml .= "<languages>" . trim($language) . "</languages>"; } } // process countries if ($countries[0] == "all") { $countriesXml = ""; } else { foreach ($countries as $country) { $countriesXml .= "<countries>" . trim($country) . "</countries>"; } } // make sure boolean gets transferred to string correctly if ($useSynonyms) { $useSynonyms = "true"; } else { $useSynonyms = "false"; } $soapParameters = "<getKeywordVariations>" . $seedKeywordsXml . "\n <useSynonyms>" . $useSynonyms . "</useSynonyms>" . $languagesXml . $countriesXml . "\n </getKeywordVariations>"; $keywordVariations = $someSoapClient->call("getKeywordVariations", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":getKeywordVariations()", $soapParameters); return false; } if (isset($keywordVariations['getKeywordVariationsReturn']['additionalToConsider'])) { if (!isset($keywordVariations['getKeywordVariationsReturn']['additionalToConsider'][0])) { $saveArray = $keywordVariations['getKeywordVariationsReturn']['additionalToConsider']; unset($keywordVariations['getKeywordVariationsReturn']['additionalToConsider']); if (!empty($saveArray)) { $keywordVariations['getKeywordVariationsReturn']['additionalToConsider'][0] = $saveArray; } } } else { $keywordVariations['getKeywordVariationsReturn']['additionalToConsider'] = array(); } if (isset($keywordVariations['getKeywordVariationsReturn']['moreSpecific'])) { if (!isset($keywordVariations['getKeywordVariationsReturn']['moreSpecific'][0])) { $saveArray = $keywordVariations['getKeywordVariationsReturn']['moreSpecific']; unset($keywordVariations['getKeywordVariationsReturn']['moreSpecific']); if (!empty($saveArray)) { $keywordVariations['getKeywordVariationsReturn']['moreSpecific'][0] = $saveArray; } } } else { $keywordVariations['getKeywordVariationsReturn']['moreSpecific'] = array(); } return $keywordVariations['getKeywordVariationsReturn']; }
function updateAccountInfo($defaultNetworkTargeting, $descriptiveName, $emailPromotionsPreferences, $languagePreference, $primaryBusinessCategory) { $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getAccountClient(); // prepare soap parameters if ($defaultNetworkTargeting) { $defaultNetworkTargetingXml = "<defaultNetworkTargeting>" . $defaultNetworkTargeting . "</defaultNetworkTargeting>"; } else { $defaultNetworkTargetingXml = ''; } if ($descriptiveName) { $descriptiveNameXml = "<descriptiveName>" . $descriptiveName . "</descriptiveName>"; } else { $descriptiveNameXml = ''; } if ($emailPromotionsPreferences) { $emailPromotionsPreferencesXml = "<emailPromotionsPreferences>" . $emailPromotionsPreferences . "</emailPromotionsPreferences>"; } else { $emailPromotionsPreferencesXml = ''; } if ($languagePreference) { $languagePreferenceXml = "<languagePreference>" . $languagePreference . "</languagePreference>"; } else { $languagePreferenceXml = ''; } if ($primaryBusinessCategory) { $primaryBusinessCategoryXml = "<primaryBusinessCategory>" . $primaryBusinessCategory . "</primaryBusinessCategory>"; } else { $primaryBusinessCategoryXml = ''; } $soapParameters = "<updateAccountInfo>\n <account>" . $defaultNetworkTargetingXml . $descriptiveNameXml . $emailPromotionsPreferencesXml . $languagePreferenceXml . $primaryBusinessCategoryXml . "\n </account>\n </updateAccountInfo>"; // execute soap call $accountInfo = $someSoapClient->call("updateAccountInfo", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":updateAccountInfo()", $soapParameters); return false; } return true; }
function getUsageQuotaThisMonth() { $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getInfoClient(); $soapParameters = "<getUsageQuotaThisMonth></getUsageQuotaThisMonth>"; $usageQuotaThisMonth = $someSoapClient->call("getUsageQuotaThisMonth", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":getUsageQuotaThisMonth()", $soapParameters); return false; } return $usageQuotaThisMonth['getUsageQuotaThisMonthReturn']; }
function getAdGroupList($adGroupIds) { $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getAdGroupClient(); $soapParameters = '<getAdGroupList>'; foreach ($adGroupIds as $adGroupId) { $soapParameters .= '<ids>' . $adGroupId . '</ids>'; } $soapParameters .= '</getAdGroupList>'; // query the google servers for all adgroups $allAdGroups = array(); $allAdGroups = $someSoapClient->call('getAdGroupList', $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ':getAdGroupList()', $soapParameters); return false; } // when we have only one adgroup in the campaign return a (one adgroup // element) array anyway $allAdGroups = makeNumericArray($allAdGroups); $allAdGroupObjects = array(); if (!isset($allAdGroups['getAdGroupListReturn'])) { return $allAdGroupObjects; } foreach ($allAdGroups['getAdGroupListReturn'] as $adGroup) { $adGroupObject = receiveAdGroup($adGroup); if (isset($adGroupObject)) { array_push($allAdGroupObjects, $adGroupObject); } } return $allAdGroupObjects; }
function getMyVideos() { $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getAdClient(); $soapParameters = "<getMyVideos></getMyVideos>"; $videos = $someSoapClient->call("getMyVideos", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":getMyVideos()", $soapParameters); return false; } return makeNumericArray($videos); }
function validateReportJob($reportXml) { $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getReportClient(); $soapParameters = "<validateReportJob xmlns='" . REPORT_WSDL_URL . "'>" . $reportXml . "\n </validateReportJob>"; // query the google servers for all existing report jobs $validation = $someSoapClient->call("validateReportJob", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":validateReportJob()", $soapParameters); return false; } return true; }
function receiveCampaign($someCampaign, $apiOperation, $overrideStatus = false) { if ($someCampaign['status'] == "Active" || $someCampaign['status'] == "Paused" || $someCampaign['status'] == "Pending" || $someCampaign['status'] == "Suspended" || $someCampaign['status'] == "Ended" || $overrideStatus) { // populate class attributes $name = $someCampaign['name']; $id = $someCampaign['id']; $status = $someCampaign['status']; $startDate = $someCampaign['startDay']; $endDate = $someCampaign['endDay']; // think in currency units $budgetAmount = 0; if (isset($someCampaign['budgetAmount'])) { $budgetAmount = (double) $someCampaign['budgetAmount'] / EXCHANGE_RATE; } $budgetPeriod = $someCampaign['budgetPeriod']; $budgetOptimizerSettings = array('bidCeiling' => 0.0, 'enabled' => false); if (!empty($someCampaign['budgetOptimizerSettings']['bidCeiling'])) { $budgetOptimizerSettings['bidCeiling'] = (double) $someCampaign['budgetOptimizerSettings']['bidCeiling'] / EXCHANGE_RATE; } if (!empty($someCampaign['budgetOptimizerSettings']['enabled'])) { $budgetOptimizerSettings['enabled'] = $someCampaign['budgetOptimizerSettings']['enabled']; } $conversionOptimizerSettings = array('maxCpaBidForAllAdGroups' => 0.0, 'enabled' => false); if (!empty($someCampaign['conversionOptimizerSettings']['maxCpaBidForAllAdGroups'])) { $conversionOptimizerSettings['maxCpaBidForAllAdGroups'] = (double) $someCampaign['conversionOptimizerSettings']['maxCpaBidForAllAdGroups'] / EXCHANGE_RATE; } if (!empty($someCampaign['conversionOptimizerSettings']['enabled'])) { $conversionOptimizerSettings['enabled'] = $someCampaign['conversionOptimizerSettings']['enabled']; } $networkTargeting = ''; if (isset($someCampaign['networkTargeting']['networkTypes'])) { $networkTargeting = $someCampaign['networkTargeting']['networkTypes']; } $languages = ''; if (isset($someCampaign['languageTargeting']['languages'])) { $languages = $someCampaign['languageTargeting']['languages']; } // determine the geoTargets $geoTargets = array('countryTargets' => array('countries' => array(), 'excludedCountries' => array()), 'regionTargets' => array('regions' => array(), 'excludedRegions' => array()), 'metroTargets' => array('metros' => array(), 'excludedMetros' => array()), 'cityTargets' => array('cities' => array(), 'excludedCities' => array()), 'proximityTargets' => array('circles' => array()), 'targetAll' => false); // countries if (isset($someCampaign['geoTargeting']['countryTargets']['countries']) && is_array($someCampaign['geoTargeting']['countryTargets']['countries'])) { foreach ($someCampaign['geoTargeting']['countryTargets']['countries'] as $country) { array_push($geoTargets['countryTargets']['countries'], $country); } } else { if (isset($someCampaign['geoTargeting']['countryTargets']['countries'])) { array_push($geoTargets['countryTargets']['countries'], $someCampaign['geoTargeting']['countryTargets']['countries']); } } // excludedCountries if (isset($someCampaign['geoTargeting']['countryTargets']['excludedCountries']) && is_array($someCampaign['geoTargeting']['countryTargets']['excludedCountries'])) { foreach ($someCampaign['geoTargeting']['countryTargets']['excludedCountries'] as $excludedCountry) { array_push($geoTargets['countryTargets']['excludedCountries'], $excludedCountry); } } else { if (isset($someCampaign['geoTargeting']['countryTargets']['excludedCountries'])) { array_push($geoTargets['countryTargets']['excludedCountries'], $someCampaign['geoTargeting']['countryTargets']['excludedCountries']); } } // regions if (isset($someCampaign['geoTargeting']['regionTargets']['regions']) && is_array($someCampaign['geoTargeting']['regionTargets']['regions'])) { foreach ($someCampaign['geoTargeting']['regionTargets']['regions'] as $region) { array_push($geoTargets['regionTargets']['regions'], $region); } } else { if (isset($someCampaign['geoTargeting']['regionTargets']['regions'])) { array_push($geoTargets['regionTargets']['regions'], $someCampaign['geoTargeting']['regionTargets']['regions']); } } // excludedRegions if (isset($someCampaign['geoTargeting']['regionTargets']['excludedRegions']) && is_array($someCampaign['geoTargeting']['regionTargets']['excludedRegions'])) { foreach ($someCampaign['geoTargeting']['regionTargets']['excludedRegions'] as $excludedRegion) { array_push($geoTargets['regionTargets']['excludedRegions'], $excludedRegion); } } else { if (isset($someCampaign['geoTargeting']['regionTargets']['excludedRegions'])) { array_push($geoTargets['regionTargets']['excludedRegions'], $someCampaign['geoTargeting']['regionTargets']['excludedRegions']); } } // metros if (isset($someCampaign['geoTargeting']['metroTargets']['metros']) && is_array($someCampaign['geoTargeting']['metroTargets']['metros'])) { foreach ($someCampaign['geoTargeting']['metroTargets']['metros'] as $metro) { array_push($geoTargets['metroTargets']['metros'], $metro); } } else { if (isset($someCampaign['geoTargeting']['metroTargets']['metros'])) { array_push($geoTargets['metroTargets']['metros'], $someCampaign['geoTargeting']['metroTargets']['metros']); } } // excludedMetros if (isset($someCampaign['geoTargeting']['metroTargets']['excludedMetros']) && is_array($someCampaign['geoTargeting']['metroTargets']['excludedMetros'])) { foreach ($someCampaign['geoTargeting']['metroTargets']['excludedMetros'] as $excludedMetro) { array_push($geoTargets['metroTargets']['excludedMetros'], $excludedMetro); } } else { if (isset($someCampaign['geoTargeting']['metroTargets']['excludedMetros'])) { array_push($geoTargets['metroTargets']['excludedMetros'], $someCampaign['geoTargeting']['metroTargets']['excludedMetros']); } } // cities if (isset($someCampaign['geoTargeting']['cityTargets']['cities']) && is_array($someCampaign['geoTargeting']['cityTargets']['cities'])) { foreach ($someCampaign['geoTargeting']['cityTargets']['cities'] as $city) { array_push($geoTargets['cityTargets']['cities'], $city); } } else { if (isset($someCampaign['geoTargeting']['cityTargets']['cities'])) { array_push($geoTargets['cityTargets']['cities'], $someCampaign['geoTargeting']['cityTargets']['cities']); } } // excludedCities if (isset($someCampaign['geoTargeting']['cityTargets']['excludedCities']) && is_array($someCampaign['geoTargeting']['cityTargets']['excludedCities'])) { foreach ($someCampaign['geoTargeting']['cityTargets']['excludedCities'] as $excludedCity) { array_push($geoTargets['cityTargets']['excludedCities'], $excludedCity); } } else { if (isset($someCampaign['geoTargeting']['cityTargets']['excludedCities'])) { array_push($geoTargets['cityTargets']['excludedCities'], $someCampaign['geoTargeting']['cityTargets']['excludedCities']); } } // circles if (isset($someCampaign['geoTargeting']['proximityTargets']['circles']) && is_array($someCampaign['geoTargeting']['proximityTargets']['circles'])) { foreach ($someCampaign['geoTargeting']['proximityTargets']['circles'] as $circle) { array_push($geoTargets['proximityTargets']['circles'], $circle); } } else { if (isset($someCampaign['geoTargeting']['proximityTargets']['circles'])) { array_push($geoTargets['proximityTargets']['circles'], $someCampaign['geoTargeting']['proximityTargets']['circles']); } } // targetAll if (isset($someCampaign['geoTargeting']['targetAll'])) { $geoTargets['targetAll'] = $someCampaign['geoTargeting']['targetAll']; } $adScheduling = array(); if (isset($someCampaign['schedule']['status'])) { $adScheduling['status'] = $someCampaign['schedule']['status']; } if (strcasecmp($someCampaign['schedule']['status'], "Disabled") != 0) { if (!isset($someCampaign['schedule']['intervals']['day'])) { $adScheduling['intervals'] = array(); foreach ($someCampaign['schedule']['intervals'] as $interval) { array_push($adScheduling['intervals'], $interval); } } else { if (isset($someCampaign['schedule']['intervals']['day'])) { $adScheduling['intervals'] = array(); array_push($adScheduling['intervals'], $someCampaign['schedule']['intervals']); } } } if (IS_ENABLED_OPTIMIZED_AD_SERVING_ATTRIBUTE) { // isEnabledOptimizedAdServing? // this is not an object attribute but we make it be one. as we can change // it we want to see its value $soapParameters = "<getOptimizeAdServing>\n <campaignId>" . $id . "</campaignId>\n </getOptimizeAdServing>"; // query the google servers whether the campaign is optimize adserving $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getCampaignClient(); $isEnabledOptimizedAdServing = $someSoapClient->call("getOptimizeAdServing", $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ":" . $apiOperation . "()", $soapParameters); return false; } $isEnabledOptimizedAdServing = isset($isEnabledOptimizedAdServing['getOptimizeAdServingReturn']) ? $isEnabledOptimizedAdServing['getOptimizeAdServingReturn'] : false; } else { $isEnabledOptimizedAdServing = NULL; } $campaignNegativeKeywordCriteria = null; $campaignNegativeWebsiteCriteria = null; if (INCLUDE_CAMPAIGN_NEGATIVE_CRITERIA) { $campaignNegativeKeywordCriteria = getExplicitCampaignNegativeKeywordCriteria($id); $campaignNegativeWebsiteCriteria = getExplicitCampaignNegativeWebsiteCriteria($id); } // end of populate class attributes // now we can create the object $campaignObject = new APIlityCampaign($name, $id, $status, $startDate, $endDate, $budgetAmount, $budgetPeriod, $networkTargeting, $languages, $geoTargets, $isEnabledOptimizedAdServing, $campaignNegativeKeywordCriteria, $campaignNegativeWebsiteCriteria, $adScheduling, $budgetOptimizerSettings, $conversionOptimizerSettings); return $campaignObject; } else { if (RETURN_DELETED_OBJECTS && $someCampaign['status'] == 'Deleted') { return receiveCampaign($someCampaign, $apiOperation, true); } } }
function checkCriterionList($criteria, $languages, $newGeoTargets) { $soapClients =& APIlityClients::getClients(); $someSoapClient = $soapClients->getCriterionClient(); $soapParameters = "<checkCriteria>"; foreach ($criteria as $criterion) { // make sure integer is transformed to string correctly if ($criterion['isNegative']) { $criterion['isNegative'] = "true"; } else { $criterion['isNegative'] = "false"; } // think in micros $soapParameters .= "<criteria>"; if (isset($criterion['destinationUrl'])) { $soapParameters .= "<destinationUrl>" . $criterion['destinationUrl'] . "</destinationUrl>"; } if (isset($criterion['isNegative'])) { $soapParameters .= "<negative>" . $criterion['isNegative'] . "</negative>"; } if (isset($criterion['text'])) { $soapParameters .= "<type>" . $criterion['type'] . "</type>\n <criterionType>Keyword</criterionType>\n <text>" . $criterion['text'] . "</text>\n <maxCpc>" . $criterion['maxCpc'] * EXCHANGE_RATE . "\n </maxCpc>\n <language>" . $criterion['language'] . "</language>"; } else { if (isset($criterion['url'])) { $soapParameters .= "<url>" . $criterion['url'] . "</url>\n <criterionType>Website</criterionType>\n <maxCpm>" . $criterion['maxCpm'] * EXCHANGE_RATE . "\n </maxCpm>\n <maxCpc>" . $criterion['maxCpc'] * EXCHANGE_RATE . "\n </maxCpc>"; } } $soapParameters .= "</criteria>"; } $languagesXml = "<languageTarget>"; foreach ($languages as $language) { $languagesXml .= "<languages>" . $language . "</languages>"; } $languagesXml .= "</languageTarget>"; $soapParameters .= $languagesXml; // expecting geoTargets as // array( // ['countryTargets']['countries'] => array(), // ['regionTargtes']['regions'] => array(), // ['metroTargets']['metros'] => array(), // ['cityTargets']['cities'] => array() // ['targetAll'] => boolean // ) $newGeoTargetsXml = ""; $newGeoTargetsXml .= "<countryTargets>"; if (isset($newGeoTargets['countryTargets']['countries'])) { foreach ($newGeoTargets['countryTargets']['countries'] as $country) { $newGeoTargetsXml .= "<countries>" . trim($country) . "</countries>"; } } $newGeoTargetsXml .= "</countryTargets><regionTargets>"; if (isset($newGeoTargets['regionTargets']['regions'])) { foreach ($newGeoTargets['regionTargets']['regions'] as $region) { $newGeoTargetsXml .= "<regions>" . trim($region) . "</regions>"; } } $newGeoTargetsXml .= "</regionTargets><metroTargets>"; if (isset($newGeoTargets['metroTargets']['metros'])) { foreach ($newGeoTargets['metroTargets']['metros'] as $metro) { $newGeoTargetsXml .= "<metros>" . trim($metro) . "</metros>"; } } $newGeoTargetsXml .= "</metroTargets><cityTargets>"; if (isset($newGeoTargets['cityTargets']['cities'])) { foreach ($newGeoTargets['cityTargets']['cities'] as $city) { $newGeoTargetsXml .= "<cities>" . trim($city) . "</cities>"; } } $newGeoTargetsXml .= "</cityTargets><proximityTargets>"; if (isset($newGeoTargets['proximityTargets']['circles'])) { foreach ($newGeoTargets['proximityTargets']['circles'] as $circle) { $newGeoTargetsXml .= "<circles>"; $newGeoTargetsXml .= "<latitudeMicroDegrees>" . $circle['latitudeMicroDegrees'] . "</latitudeMicroDegrees>"; $newGeoTargetsXml .= "<longitudeMicroDegrees>" . $circle['longitudeMicroDegrees'] . "</longitudeMicroDegrees>"; $newGeoTargetsXml .= "<radiusMeters>" . $circle['radiusMeters'] . "</radiusMeters>"; $newGeoTargetsXml .= "</circles>"; } } $newGeoTargetsXml .= "</proximityTargets>"; if (!empty($newGeoTargets['targetAll'])) { $newGeoTargetsXml .= "<targetAll>true</targetAll>"; } $soapParameters .= "<geoTarget>" . $newGeoTargetsXml . "</geoTarget></checkCriteria>"; // query the google servers $criteriaCheck = $someSoapClient->call('checkCriteria', $soapParameters); $soapClients->updateSoapRelatedData(extractSoapHeaderInfo($someSoapClient->getHeaders())); if ($someSoapClient->fault) { pushFault($someSoapClient, $_SERVER['PHP_SELF'] . ':checkCriterionList()', $soapParameters); return false; } return $criteriaCheck; }