$bannersListRemote = $engine->getBanners(array_keys($bannersList));
				$bannersListSorted = array();
				foreach($bannersListRemote as $key => $bannerInfo)
				{
					$bannersListSorted[$bannerInfo['BannerID']] = $bannerInfo;
				}

				Adv\YandexBannerTable::setSkipRemoteUpdate(true);
				foreach($bannersList as $bannerXmlId => $bannerId)
				{
					if(isset($bannersListSorted[$bannerXmlId]))
					{
						$result = Adv\YandexBannerTable::update(
							$bannerId, array(
								"SETTINGS" => $bannersListSorted[$bannerXmlId]
							)
						);

						if(!$result->isSuccess())
						{
							$errorsList = $result->getErrorMessages();
							foreach($errorsList as $errorMessage)
							{
								$adminList->AddGroupError($errorMessage, $bannerId);
							}
						}
					}
					else
					{
						$adminList->AddGroupError(
			'PhraseID' => '0',
			'Phrase' => trim($phrase),
			'AutoBudgetPriority' => $phrasePriority[$key]
		);
	}

	$bannerSettings['MinusKeywords'] = preg_split("/[\\n,;]+\\s*/", $bannerSettings['MinusKeywords']);

	$bannerFields = array(
		"CAMPAIGN_ID" => $campaignId,
		"SETTINGS" => $bannerSettings
	);

	if($ID > 0)
	{
		$result = Adv\YandexBannerTable::update($ID, $bannerFields);
	}
	else
	{
		$result = Adv\YandexBannerTable::add($bannerFields);
	}


	/*
	var_dump($result->isSuccess());
		echo '<pre>'; print_r($bannerFields); echo '</pre>';
		echo '<pre>'; print_r($result); echo '</pre>';
		echo '<pre>'; print_r($request); echo '</pre>';
	die();
	*/
Exemple #3
0
 public function updateBannersManual($campaignId, $bannerId = null)
 {
     $res = array('added' => 0, 'updated' => 0, 'error' => 0);
     if (!is_array($bannerId) && $bannerId > 0) {
         $bannerId = array($bannerId);
     }
     $bannerList = array();
     if (is_array($bannerId) && count($bannerId) > 0) {
         $dbRes = YandexBannerTable::getList(array('filter' => array('=ID' => $bannerId, '=ENGINE_ID' => $this->getId()), 'select' => array('XML_ID')));
         while ($banner = $dbRes->fetch()) {
             $keys[] = $banner['XML_ID'];
         }
         $bannerList = $this->getBanners($keys);
     } else {
         $dbCampaigns = YandexCampaignTable::getList(array('filter' => array('=ID' => $campaignId, '=ENGINE_ID' => $this->getId()), 'select' => array('ID', 'XML_ID')));
         while ($campaign = $dbCampaigns->fetch()) {
             $campaignIndex[$campaign['XML_ID']] = $campaign['ID'];
         }
         if (count($campaignIndex) > 0) {
             $bannerList = $this->getCampaignBanners(array_keys($campaignIndex));
         }
     }
     if (count($bannerList) > 0) {
         $bannerListSorted = array();
         foreach ($bannerList as $bannerInfo) {
             $bannerListSorted[$bannerInfo['BannerID']] = $bannerInfo;
         }
         $dbBanners = YandexBannerTable::getList(array('filter' => array('=XML_ID' => array_keys($bannerListSorted), '=ENGINE_ID' => $this->getId())));
         YandexBannerTable::setSkipRemoteUpdate(true);
         while ($banner = $dbBanners->fetch()) {
             if (isset($bannerListSorted[$banner['XML_ID']])) {
                 $result = YandexBannerTable::update($banner['ID'], array("SETTINGS" => $bannerListSorted[$banner['XML_ID']]));
                 unset($bannerListSorted[$banner['XML_ID']]);
                 if ($result->isSuccess()) {
                     $res['updated']++;
                 } else {
                     $res['error']++;
                 }
             }
         }
         foreach ($bannerListSorted as $bannerId => $bannerInfo) {
             $result = YandexBannerTable::add(array("CAMPAIGN_ID" => $campaignIndex[$bannerInfo['CampaignID']], "SETTINGS" => $bannerInfo));
             if ($result->isSuccess()) {
                 $res['added']++;
             } else {
                 $res['error']++;
             }
         }
         YandexBannerTable::setSkipRemoteUpdate(false);
     }
     return $res;
 }