10use \Bitrix\Seo\Analytics\Account;
22 'methodName' =>
'analytics.account.list',
23 'parameters' =>
array()
32 'methodName' =>
'analytics.profile',
46 'PICTURE' =>
$response[
'picture'][
'data'][
'url'] ??
null,
66 'ACCOUNT_ID' => $accountId,
68 if($dateFrom && $dateTo)
70 $parameters[
'DATE_FROM'] = $dateFrom->format(
'Ymd');
71 $parameters[
'DATE_TO'] = $dateTo->format(
'Ymd');
74 'methodName' =>
'analytics.expenses.get',
75 'parameters' => $parameters,
81 'impressions' =>
$data[
'impressions'],
82 'clicks' =>
$data[
'clicks'],
83 'actions' =>
$data[
'actions'],
84 'cpc' =>
$data[
'cpc'],
85 'cpm' =>
$data[
'cpm'],
86 'spend' =>
$data[
'spend'],
87 'currency' =>
$data[
'currency'],
91 $response->setData([
'expenses' => $expenses]);
121 if (mb_substr($accountId, 0, 4) ===
'act_')
123 $accountId = mb_substr($accountId, 4);
127 'ACCOUNT_ID' => $accountId,
129 if($dateFrom && $dateTo)
131 $parameters[
'DATE_FROM'] = $dateFrom->format(
'Ymd');
132 $parameters[
'DATE_TO'] = $dateTo->format(
'Ymd');
135 'methodName' =>
'analytics.expenses.report',
136 'parameters' => $parameters,
151 if (mb_substr($accountId, 0, 4) ===
'act_')
153 $accountId = mb_substr($accountId, 4);
157 'ACCOUNT_ID' => $accountId,
160 if ($dateFrom && $dateTo)
162 $parameters[
'DATE_FROM'] = $dateFrom->
format(
'Ymd');
163 $parameters[
'DATE_TO'] = $dateTo->
format(
'Ymd');
167 'methodName' =>
'analytics.expenses.ads.report',
168 'parameters' => $parameters,
169 'streamTimeout' => static::LOAD_DAILY_EXPENSES_TIMEOUT,
170 'listenHttpErrors' =>
true,
177 $innerErrors = implode(
',',
$response->getErrorMessages());
184 $result->setData([
'expenses' =>
Helpers\ExpensesAdapter::translateExpensesReportToDailyExpenses(
$data)]);
213 'endpoint' =>
'act_'.$accountId.
'/promote_pages',
215 'fields' =>
'id,name,about,cover,emails,phone',
225 $pages[] =
new Page([
227 'name' =>
$page[
'name'],
228 'about' =>
$page[
'about'],
229 'image' =>
$page[
'cover'][
'source'],
230 'phone' =>
$page[
'phone'],
231 'email' =>
$page[
'emails'],
261 'endpoint' => $publicPageId,
271 'endpoint' => $publicPageId.
'/call_to_actions',
273 'fields' =>
'id,type'
279 if($callToAction[
'type'] ==
'CALL_NOW' && isset(
$fields[
'phone']))
283 'endpoint' => $callToAction[
'id'],
285 'intl_number_with_plus' =>
$fields[
'phone']
293 'endpoint' => $callToAction[
'id'],
295 'email_address' =>
$fields[
'emails']
323 if(!empty(
$params[
'url_tags']))
326 if(!$updateAdResult->isSuccess())
328 $result->addErrors($updateAdResult->getErrors());
334 foreach($publicPageIds as $publicPageId)
337 if(!$updatePageResult->isSuccess())
339 $result->addErrors($updatePageResult->getErrors());
355 if($adSetResult->isSuccess())
357 $adSetIds = $adSetResult->getData();
368 'fields' =>
'id,adset_id,campaign_id,creative',
373 'endpoint' =>
'act_'.$accountId.
'/ads',
376 if($adsResult->isSuccess())
378 $ads = $adsResult->getData();
382 if(in_array($ad[
'adset_id'], $adSetIds))
400 'fields' =>
'id,account_id,actor_id,adlabels,applink_treatment,asset_feed_spec,body,branded_content_sponsor_page_id,'.
401 'call_to_action_type,effective_instagram_story_id,effective_object_story_id,image_crops,image_hash,'.
402 'image_url,instagram_actor_id,instagram_permalink_url,instagram_story_id,link_og_id,link_url,'.
403 'messenger_sponsored_message,name,object_id,object_story_id,object_story_spec,object_type,object_url,'.
404 'platform_customizations,portrait_customizations,product_set_id,recommender_settings,status,template_url,'.
405 'template_url_spec,thumbnail_url,title,url_tags,use_page_actor_override,video_id',
410 'endpoint' => $creativeId,
425 unset($creative[
'id']);
426 foreach($creative as
$key => $value)
430 $creative[
$key] = Json::encode($value);
436 'endpoint' =>
'act_'.$accountId.
'/adcreatives',
437 'fields' => $creative,
443 if(isset(
$data[
'id']))
448 'fields' => [
'creative' =>
$data[
'id']],
453 $response->addError(
new Error(
'Could not find id after Ad Creative add'));
478 if(!isset($ad[
'creative']) || !isset($ad[
'creative'][
'id']))
482 $getAdCreativeResult = $this->
getAdCreative($ad[
'creative'][
'id']);
483 if($getAdCreativeResult->isSuccess())
485 $creative = $getAdCreativeResult->getData();
487 $creative[
'url_tags'] = http_build_query($this->
mergeUrlParams($currentUrlParams, $urlParams));
489 $updateAdCreativeResult = $this->
updateAdCreative($accountId, $ad[
'id'], $creative);
490 if(!$updateAdCreativeResult->isSuccess())
492 $result->addErrors($updateAdCreativeResult->getErrors());
497 $result->addErrors($getAdCreativeResult->getErrors());
517 $pairs = explode(
'&', $string);
518 foreach($pairs as $pair)
520 list(
$name, $value) = explode(
'=', $pair);
534 foreach($newParams as
$name => $value)
538 if(isset($currentParams[
$name]))
540 unset($currentParams[
$name]);
545 $currentParams[
$name] = $value;
549 return $currentParams;
557 return [
'facebook',
'messenger',
'audience_network'];
569 'endpoint' =>
'act_'.$accountId.
'/adsets',
571 'fields' =>
'id,name,targeting'
577 $facebook = $instagram = [];
578 foreach(
$data as $adSet)
580 $all[] = $adSet[
'id'];
582 isset($adSet[
'targeting']) && is_array($adSet[
'targeting']) &&
583 isset($adSet[
'targeting'][
'publisher_platforms']) && is_array($adSet[
'targeting'][
'publisher_platforms']) &&
584 count($adSet[
'targeting'][
'publisher_platforms']) == 1 && reset($adSet[
'targeting'][
'publisher_platforms']) ==
'instagram'
587 $instagram[] = $adSet[
'id'];
591 $facebook[] = $adSet[
'id'];
594 if(static::TYPE_CODE ===
'instagram')
buildErrorMessage(string $error)
updatePublicPage($publicPageId, array $params)
prepareExpensesData($data)
mergeUrlParams(array $currentParams, array $newParams)
updateAnalyticParams($accountId, array $params, array $publicPageIds=[])
getDailyExpensesReport(?string $accountId, ?Date $dateFrom, ?Date $dateTo)
getAdCreative($creativeId)
getPublicPages($accountId)
getExpensesReport($accountId, Date $dateFrom=null, Date $dateTo=null)
updateAdCreative($accountId, $adId, array $creative)
updateAdUrlTags($accountId, array $urlParams)
getExpenses($accountId, Date $dateFrom=null, Date $dateTo=null)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
while($arParentIBlockProperty=$dbParentIBlockProperty->Fetch()) $errorMessage
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']