Bitrix-D7  20.0.0
Класс Service

Открытые статические члены

static isRegistered ()
 CAn connect to seoproxy? Подробнее...
 
static getAuth ($engineCode)
 Get client info @use \Bitrix\Seo\Service::getClientList(...) Подробнее...
 
static getClientList ($engineCode=false)
 Get clients list. Подробнее...
 
static clearLocalAuth ()
 
static clearClientsCache ($engine=null, $clientId=null)
 Clear clients list cache. Подробнее...
 
static clearAuth ($engineCode, $localOnly=false)
 
static clearAuthForClient ($client, $localOnly=false)
 Remove auth for a client. Подробнее...
 
static getEngine ()
 
static register ()
 
static unregister ()
 
static getAuthorizeLink ()
 
static getAuthorizeData ($engine, $clientType=false)
 

Поля данных

const SERVICE_URL = SEO_SERVICE_URL
 
const REGISTER = "/oauth/register/"
 
const AUTHORIZE = "/register/"
 
const REDIRECT_URI = "/bitrix/tools/seo_client.php"
 
const SERVICE_AUTH_CACHE_TLL = 86400
 
const SERVICE_AUTH_CACHE_ID = 'seo|service_auth'
 
const CLIENT_LIST_CACHE_TLL = 86400
 
const CLIENT_LIST_CACHE_ID = 'seo|client_list'
 
const CLIENT_TYPE_SINGLE = 'S'
 
const CLIENT_TYPE_MULTIPLE = 'M'
 
const CLIENT_TYPE_COMPATIBLE = 'C'
 

Защищенные статические члены

static setAccessSettings (array $accessParams)
 Set access settings. Подробнее...
 
static getRedirectUri ()
 
static getLicense ()
 

Статические защищенные данные

static $engine = null
 
static $auth = null
 
static $clientList = null
 

Подробное описание

См. определение в файле seo/lib/service.php строка 32

Методы

◆ clearAuth()

static clearAuth (   $engineCode,
  $localOnly = false 
)
static
Аргументы
string$engineCodeProvider code.
bool$localOnlyDo not delete client in seoproxy service.
Возвращает
void @use \Bitrix\Seo\Service::clearAuthForClient(...)
Исключения
SystemException
Уст.:

См. определение в файле seo/lib/service.php строка 195

196  {
197  static::clearClientsCache($engineCode);
198 
199  if(!$localOnly)
200  {
201  static::getEngine()->getInterface()->clearClientAuth($engineCode);
202  }
203  }

◆ clearAuthForClient()

static clearAuthForClient (   $client,
  $localOnly = false 
)
static

Remove auth for a client.

Аргументы
array$clientClient data.
bool$localOnlyOnly clear cache.
Возвращает
void
Исключения
SystemException

См. определение в файле seo/lib/service.php строка 212

213  {
214 
215  if(!$localOnly)
216  {
217  static::getEngine()->getInterface()->clearClientAuth($client['engine_code'], $client['proxy_client_id']);
218  }
219  static::clearClientsCache($client['engine_code'], $client['proxy_client_id']);
220  }

◆ clearClientsCache()

static clearClientsCache (   $engine = null,
  $clientId = null 
)
static

Clear clients list cache.

Аргументы
string | null$engineEngine code.
int | null$clientIdProxy client id.
Возвращает
void
Исключения
SystemException

См. определение в файле seo/lib/service.php строка 166

167  {
168  $cache = Application::getInstance()->getManagedCache();
169  $cache->Clean(static::CLIENT_LIST_CACHE_ID);
170  $cache->Clean(static::SERVICE_AUTH_CACHE_ID);
171 
172  list($group, $type) = explode('.', $engine, 2);
173 
174  if ($group == \Bitrix\Seo\Retargeting\Service::GROUP)
175  {
176  $service = AdsAudience::getService();
177  $service->setClientId($clientId);
178  $account = $service->getAccount($type);
179  if ($account)
180  $account->clearCache();
181  }
182 
183  static::$clientList = null;
184  static::$auth = null;
185  }

◆ clearLocalAuth()

static clearLocalAuth ( )
static
Возвращает
void @use \Bitrix\Seo\Service::clearClientsCache()
Уст.:

См. определение в файле seo/lib/service.php строка 150

151  {
152  global $CACHE_MANAGER;
153 
154  $CACHE_MANAGER->Clean(static::SERVICE_AUTH_CACHE_ID);
155 
156  static::$auth = null;
157  }

◆ getAuth()

static getAuth (   $engineCode)
static

Get client info @use \Bitrix\Seo\Service::getClientList(...)

Аргументы
string$engineCodeProvider code.
Возвращает
array
Уст.:

См. определение в файле seo/lib/service.php строка 69

70  {
71  global $CACHE_MANAGER;
72  if(static::$auth === null)
73  {
74  if($CACHE_MANAGER->Read(static::SERVICE_AUTH_CACHE_TLL, static::SERVICE_AUTH_CACHE_ID))
75  {
76  static::$auth = $CACHE_MANAGER->Get(static::SERVICE_AUTH_CACHE_ID);
77  }
78  else
79  {
80  static::$auth = static::getEngine()->getInterface()->getClientInfo();
81  $CACHE_MANAGER->Set(static::SERVICE_AUTH_CACHE_ID, static::$auth);
82  }
83  }
84 
85  if(static::$auth)
86  {
87  return static::$auth["engine"][$engineCode];
88  }
89 
90  return false;
91  }

◆ getAuthorizeData()

static getAuthorizeData (   $engine,
  $clientType = false 
)
static
Аргументы
string$engineProvider code.
bool$clientTypeClient type.
Возвращает
array
Исключения

См. определение в файле seo/lib/service.php строка 330

331  {
332  $checkKey = "";
333  if(Loader::includeModule("socialservices"))
334  {
335  $checkKey = \CSocServAuthManager::GetUniqueKey();
336  }
337 
338  $clientType = $clientType ?: Service::CLIENT_TYPE_COMPATIBLE;
339 
340  return array(
341  "action" => "authorize",
342  "type" => $clientType,
343  "engine" => $engine,
344  "client_id" => static::getEngine()->getClientId(),
345  "client_secret" => static::getEngine()->getClientSecret(),
346  "key" => static::getLicense(),
347  "check_key" => urlencode($checkKey)
348  );
349  }

◆ getAuthorizeLink()

static getAuthorizeLink ( )
static
Возвращает
string

См. определение в файле seo/lib/service.php строка 319

320  {
321  return static::SERVICE_URL.static::AUTHORIZE;
322  }

◆ getClientList()

static getClientList (   $engineCode = false)
static

Get clients list.

Аргументы
string | bool$engineCodeProvider code.
Возвращает
array
Исключения
SystemException

См. определение в файле seo/lib/service.php строка 99

100  {
101  if( static::$clientList == null)
102  {
103  $cache = Application::getInstance()->getManagedCache();
104  if ($cache->read(static::CLIENT_LIST_CACHE_TLL, static::CLIENT_LIST_CACHE_ID))
105  {
106  static::$clientList = $cache->get(static::CLIENT_LIST_CACHE_ID);
107  static::$clientList = is_array(static::$clientList) ? static::$clientList : [];
108  }
109  else
110  {
111  $clientDataProvider = static::getEngine()->getInterface();
112  $result = $clientDataProvider->getClientList();
113  if (!is_array($result)) // backward compatibility
114  {
115  $result = [];
116  $data = $clientDataProvider->getClientInfo();
117  if (is_array($data))
118  {
119  foreach ($data as $code => $client)
120  {
121  $data['proxy_client_type'] = static::CLIENT_TYPE_COMPATIBLE;
122  $data['engine_code'] = $code;
123  $data['proxy_client_id'] = null;
124  $result[] = $data;
125  }
126  }
127  }
128  else
129  {
130  $result = $result['items'];
131  }
132  $cache->set(static::CLIENT_LIST_CACHE_ID, $result);
133  static::$clientList = $result;
134  }
135  }
136  if ($engineCode)
137  {
138  return array_filter(static::$clientList, function ($item) use ($engineCode) {
139  return $item['engine_code'] == $engineCode;
140  });
141  }
142  return static::$clientList;
143  }

◆ getEngine()

static getEngine ( )
static
Возвращает
\Bitrix\Seo\Engine\Bitrix

См. определение в файле seo/lib/service.php строка 262

263  {
264  if(!static::$engine && Loader::includeModule("socialservices"))
265  {
266  static::$engine = new Bitrix();
267  }
268 
269  return static::$engine;
270  }

◆ getLicense()

static getLicense ( )
staticprotected
Возвращает
string

См. определение в файле seo/lib/service.php строка 367

368  {
369  return md5(LICENSE_KEY);
370  }

◆ getRedirectUri()

static getRedirectUri ( )
staticprotected
Возвращает
string

См. определение в файле seo/lib/service.php строка 354

355  {
356  $request = Context::getCurrent()->getRequest();
357 
358  $host = $request->getHttpHost();
359  $isHttps = $request->isHttps();
360 
361  return ($isHttps ? 'https' : 'http').'://'.$host.static::REDIRECT_URI;
362  }

◆ isRegistered()

static isRegistered ( )
static

CAn connect to seoproxy?

Возвращает
bool

См. определение в файле seo/lib/service.php строка 57

58  {
59  return static::getEngine() ? static::getEngine()->isRegistered() : false;
60  }

◆ register()

static register ( )
static
Возвращает
void
Исключения
SystemException

См. определение в файле seo/lib/service.php строка 277

278  {
279  static::clearClientsCache();
280 
281  $httpClient = new HttpClient();
282 
283  $queryParams = array(
284  "key" => static::getLicense(),
285  "scope" => static::getEngine()->getInterface()->getScopeEncode(),
286  "redirect_uri" => static::getRedirectUri(),
287  );
288 
289  $result = $httpClient->post(static::SERVICE_URL.static::REGISTER, $queryParams);
290  $result = Json::decode($result);
291 
292  if($result["error"])
293  {
294  throw new SystemException($result["error"]);
295  }
296  else
297  {
298  static::setAccessSettings($result);
299  }
300  }

◆ setAccessSettings()

static setAccessSettings ( array  $accessParams)
staticprotected

Set access settings.

Аргументы
array$accessParamsAccess params.
Возвращает
void
Исключения
SystemException

См. определение в файле seo/lib/service.php строка 228

229  {
230  if(static::isRegistered())
231  {
232  $id = static::getEngine()->getId();
233 
234  $result = SearchEngineTable::update($id, array(
235  "CLIENT_ID" => $accessParams["client_id"],
236  "CLIENT_SECRET" => $accessParams["client_secret"],
237  "SETTINGS" => "",
238  ));
239  }
240  else
241  {
242  $result = SearchEngineTable::add(array(
243  "CODE" => Bitrix::ENGINE_ID,
244  "NAME" => "Bitrix",
245  "ACTIVE" => SearchEngineTable::ACTIVE,
246  "CLIENT_ID" => $accessParams["client_id"],
247  "CLIENT_SECRET" => $accessParams["client_secret"],
248  "REDIRECT_URI" => static::getRedirectUri(),
249  ));
250  }
251 
252  if($result->isSuccess())
253  {
254  static::clearAuth(Bitrix::ENGINE_ID, true);
255  static::$engine = null;
256  }
257  }

◆ unregister()

static unregister ( )
static
Возвращает
void
Исключения
SystemException

См. определение в файле seo/lib/service.php строка 306

307  {
308  if(static::isRegistered())
309  {
310  $id = static::getEngine()->getId();
311  SearchEngineTable::delete($id);
312  static::clearClientsCache();
313  }
314  }

Поля

◆ $auth

$auth = null
staticprotected

См. определение в файле seo/lib/service.php строка 50

◆ $clientList

$clientList = null
staticprotected

См. определение в файле seo/lib/service.php строка 51

◆ $engine

$engine = null
staticprotected

См. определение в файле seo/lib/service.php строка 49

◆ AUTHORIZE

const AUTHORIZE = "/register/"

См. определение в файле seo/lib/service.php строка 36

◆ CLIENT_LIST_CACHE_ID

const CLIENT_LIST_CACHE_ID = 'seo|client_list'

См. определение в файле seo/lib/service.php строка 43

◆ CLIENT_LIST_CACHE_TLL

const CLIENT_LIST_CACHE_TLL = 86400

См. определение в файле seo/lib/service.php строка 42

◆ CLIENT_TYPE_COMPATIBLE

const CLIENT_TYPE_COMPATIBLE = 'C'

См. определение в файле seo/lib/service.php строка 47

◆ CLIENT_TYPE_MULTIPLE

const CLIENT_TYPE_MULTIPLE = 'M'

См. определение в файле seo/lib/service.php строка 46

◆ CLIENT_TYPE_SINGLE

const CLIENT_TYPE_SINGLE = 'S'

См. определение в файле seo/lib/service.php строка 45

◆ REDIRECT_URI

const REDIRECT_URI = "/bitrix/tools/seo_client.php"

См. определение в файле seo/lib/service.php строка 37

◆ REGISTER

const REGISTER = "/oauth/register/"

См. определение в файле seo/lib/service.php строка 35

◆ SERVICE_AUTH_CACHE_ID

const SERVICE_AUTH_CACHE_ID = 'seo|service_auth'

См. определение в файле seo/lib/service.php строка 40

◆ SERVICE_AUTH_CACHE_TLL

const SERVICE_AUTH_CACHE_TLL = 86400

См. определение в файле seo/lib/service.php строка 39

◆ SERVICE_URL

const SERVICE_URL = SEO_SERVICE_URL

См. определение в файле seo/lib/service.php строка 34


Объявления и описания членов класса находятся в файле:
Bitrix\Seo\Retargeting\AdsAudience\getService
static getService()
Get service.
Definition: adsaudience.php:45
$request
$request
Definition: sale/lib/rest/synchronization/push.php:6
Bitrix\Seo\SearchEngineTable\ACTIVE
const ACTIVE
Definition: searchengine.php:15
Bitrix\Main\Web\Json\decode
static decode($data)
Takes a JSON encoded string and converts it into a PHP variable.
Definition: web/json.php:51
Bitrix\Main\Application\getInstance
static getInstance()
Returns current instance of the Application.
Definition: main/lib/application.php:86
Bitrix\Seo\Service\CLIENT_TYPE_COMPATIBLE
const CLIENT_TYPE_COMPATIBLE
Definition: seo/lib/service.php:47
Bitrix\Seo\Service\$engine
static $engine
Definition: seo/lib/service.php:49
Bitrix\Seo\Engine\Bitrix\ENGINE_ID
const ENGINE_ID
Definition: bitrix.php:27
Bitrix
Class Button.
Bitrix\Main\Loader\includeModule
static includeModule($moduleName)
Includes module by its name.
Definition: main/lib/loader.php:70
Bitrix\Main\Context\getCurrent
static getCurrent()
Static method returns current instance of context.
Definition: main/lib/context.php:194