1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
accountgoogle.php
См. документацию.
1<?php
2
3namespace Bitrix\Seo\Analytics\Services;
4
5use Bitrix\Main\Error;
6use Bitrix\Main\NotImplementedException;
7use Bitrix\Main\PhoneNumber\Parser;
8use Bitrix\Main\Result;
9use Bitrix\Main\Type\Date;
10use Bitrix\Main\Web\Json;
11
12use Bitrix\Seo\Analytics;
13use Bitrix\Seo\Retargeting;
14
16{
17 const TYPE_CODE = 'google';
18
19 public function getList()
20 {
21 $response = $this->request->send(array(
22 'methodName' => 'analytics.account.list',
23 'parameters' => array()
24 ));
25
26 return $response;
27 }
28
29 public function getProfile()
30 {
31 $response = $this->getRequest()->getClient()->get(
32 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=' .
33 urlencode($this->getRequest()->getAuthAdapter()->getToken())
34 );
35
36 if ($response)
37 {
38 $response = Json::decode($response);
39 if (is_array($response))
40 {
41 return array(
42 'ID' => $response['id'],
43 'NAME' => $response['name'],
44 'LINK' => '',
45 'PICTURE' => $response['picture'],
46 );
47 }
48 }
49
50
51 return null;
52 }
53
60 public function getExpenses($accountId, Date $dateFrom = null, Date $dateTo = null)
61 {
62 $parameters = [
63 'ACCOUNT_ID' => $accountId,
64 ];
65 if($dateFrom && $dateTo)
66 {
67 $parameters['DATE_FROM'] = $dateFrom->format('Ymd');
68 $parameters['DATE_TO'] = $dateTo->format('Ymd');
69 }
70 $response = $this->getRequest()->send([
71 'methodName' => 'analytics.expenses.get',
72 'parameters' => $parameters,
73 ]);
74
75 if($response->isSuccess())
76 {
77 $data = $response->getData();
78 $response->setData([
79 'expenses' => new Analytics\Internals\Expenses([
80 'impressions' => $data['Impressions'],
81 'clicks' => $data['Clicks'],
82 'actions' => $data['Interactions'],
83 'cpc' => $data['Avg. CPC'],
84 'cpm' => $data['Avg. CPM'],
85 'spend' => $data['Cost'],
86 'currency' => $data['Currency'],
87 ]),
88 ]);
89 }
90
91 return $response;
92 }
93
103 public function getExpensesReport($accountId, Date $dateFrom = null, Date $dateTo = null)
104 {
105 $parameters = [
106 'ACCOUNT_ID' => $accountId,
107 ];
108 if($dateFrom && $dateTo)
109 {
110 $parameters['DATE_FROM'] = $dateFrom->format('Ymd');
111 $parameters['DATE_TO'] = $dateTo->format('Ymd');
112 }
113 $response = $this->getRequest()->send([
114 'methodName' => 'analytics.expenses.report',
115 'parameters' => $parameters,
116 ]);
117
118 return $response;
119 }
120
129 public function getDailyExpensesReport(?string $accountId, ?Date $dateFrom, ?Date $dateTo): Result
130 {
131 $result = new Result();
132
133 $parameters = [
134 'ACCOUNT_ID' => $accountId,
135 ];
136
137 if ($dateFrom && $dateTo)
138 {
139 $parameters['DATE_FROM'] = $dateFrom->format('Ymd');
140 $parameters['DATE_TO'] = $dateTo->format('Ymd');
141 }
142
143 $response = $this->getRequest()->send([
144 'methodName' => 'analytics.ads.expenses.get',
145 'parameters' => $parameters,
146 'streamTimeout' => static::LOAD_DAILY_EXPENSES_TIMEOUT,
147 'listenHttpErrors' => true,
148 ]);
149
150 if (!$response->isSuccess())
151 {
152 $innerErrors = implode(',', $response->getErrorMessages());
153 $errorMessage = $this->buildErrorMessage("Error occurred while load daily expenses: {$innerErrors}");
154
155 return $result->addError(new Error($errorMessage));
156 }
157
158 $data = $response->getData();
159
160 if (isset($data['ROWS']) && count($data['ROWS']) > 0)
161 {
162 foreach ($data['ROWS'] as &$row)
163 {
164 $row['COST'] /= 1000000;
165 }
166 }
167
168 $result->setData(['expenses' => Helpers\ExpensesAdapter::translateExpensesReportToDailyExpenses($data)]);
169
170 return $result;
171 }
172
173 public function hasDailyExpensesReport(): bool
174 {
175 return true;
176 }
177
183 public function hasExpensesReport()
184 {
185 return true;
186 }
187
194 public function updateAnalyticParams($accountId, array $params, array $publicPageIds = [])
195 {
196 $result = new Result();
197 if(!isset($params['phone']) && !isset($params['url_tags']))
198 {
199 return $result;
200 }
201 $parameters = [
202 'ACCOUNT_ID' => $accountId,
203 ];
204 if(isset($params['phone']))
205 {
206 $phoneNumber = Parser::getInstance()->parse($params['phone']);
207 $parameters['PHONE'] = ['COUNTRY_CODE' => mb_strtoupper($phoneNumber->getCountry()), 'NUMBER' => $phoneNumber->format()];
208 }
209 if(isset($params['url_tags']))
210 {
211 $parameters['URL_TAGS'] = $params['url_tags'];
212 }
213
214 return $this->getRequest()->send([
215 'methodName' => 'analytics.update',
216 'parameters' => $parameters,
217 ]);
218 }
219}
Определения result.php:20
Определения error.php:15
Определения date.php:9
format($format)
Определения date.php:110
buildErrorMessage(string $error)
Определения account.php:194
updateAnalyticParams($accountId, array $params, array $publicPageIds=[])
Определения accountgoogle.php:194
getDailyExpensesReport(?string $accountId, ?Date $dateFrom, ?Date $dateTo)
Определения accountgoogle.php:129
getExpensesReport($accountId, Date $dateFrom=null, Date $dateTo=null)
Определения accountgoogle.php:103
getExpenses($accountId, Date $dateFrom=null, Date $dateTo=null)
Определения accountgoogle.php:60
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
while($arParentIBlockProperty=$dbParentIBlockProperty->Fetch()) $errorMessage
</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."%"
Определения waybill.php:936
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$response
Определения result.php:21