Пример #1
0
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'];
}
Пример #2
0
 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;
 }
Пример #3
0
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'];
}
Пример #4
0
 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;
 }
Пример #5
0
 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;
 }
Пример #6
0
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'];
}
Пример #7
0
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;
}
Пример #8
0
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'];
}
Пример #9
0
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;
}
Пример #10
0
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);
}
Пример #11
0
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;
}
Пример #12
0
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);
        }
    }
}
Пример #13
0
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;
}