3namespace Bitrix\Seo\WebHook;
5use Bitrix\Main\ArgumentException;
6use Bitrix\Main\Context;
8use Bitrix\Main\ErrorCollection;
10use Bitrix\Main\EventManager;
11use Bitrix\Main\Web\Json;
12use Bitrix\Seo\Engine\Bitrix as EngineBitrix;
66 $this->data = self::getData($this->type, $this->externalId);
69 protected static function answer(
array $answer)
74 header(
'Content-Type:application/json; charset=UTF-8');
76 echo Json::encode($answer);
78 \CMain::finalActions();
86 $code = self::ANSWER_ERROR_SYSTEM;
91 $errorMessages =
array(
92 self::ANSWER_ERROR_SYSTEM =>
'Error.',
93 self::ANSWER_ERROR_NO_CODE =>
'Parameter `code` not found.',
94 self::ANSWER_ERROR_NO_EXT_ID =>
'Parameter `externalId` not found.',
95 self::ANSWER_ERROR_NO_SEC_CODE =>
'Parameter `sec` not found.',
96 self::ANSWER_ERROR_WRONG_SEC_CODE =>
'Wrong `sec` parameter.',
121 public static function listen()
123 $request = Context::getCurrent()->getRequest();
127 self::answerError(self::ANSWER_ERROR_NO_CODE);
131 $securityCode =
$request->get(
'sec');
134 self::answerError(self::ANSWER_ERROR_NO_SEC_CODE);
137 $externalId =
$request->get(
'externalId');
140 self::answerError(self::ANSWER_ERROR_NO_EXT_ID);
146 $payload = Json::decode(
$request->get(
'payload'));
147 $payload = (
new Payload\Batch())->setArray($payload);
149 catch (ArgumentException $e)
151 self::answerError(self::ANSWER_ERROR_NO_PAYLOAD);
155 if (!
$instance->checkSecurityCode($securityCode))
157 self::answerError(self::ANSWER_ERROR_WRONG_SEC_CODE);
164 catch (\Exception $e)
166 self::answerError($e->getCode(), $e->getMessage());
175 self::answerError(
$error->getCode(),
$error->getMessage());
201 public function register(
array $parameters = [])
207 'EXTERNAL_ID' => $this->externalId,
209 if (!empty($parameters[
'SECURITY_CODE']))
211 $addParameters[
'SECURITY_CODE'] = $parameters[
'SECURITY_CODE'];
213 $addResult = Internals\WebHookTable::add($addParameters);
214 if (!$addResult->isSuccess())
219 $this->data = self::getData($this->type, $this->externalId);
222 $result = self::queryHookRegister(
223 'seo.client.webhook.register',
225 'CODE' => $this->data[
'TYPE'],
226 'EXTERNAL_ID' => $this->data[
'EXTERNAL_ID'],
227 'SECURITY_CODE' => $this->data[
'SECURITY_CODE'],
228 'CONFIRMATION_CODE' => isset($parameters[
'CONFIRMATION_CODE']) ?
229 $parameters[
'CONFIRMATION_CODE']
240 return self::queryHookRegister(
241 'seo.client.form.register',
243 'FORM_ID' => $formId,
250 return self::queryHookRegister(
251 'seo.client.form.unregister',
253 'FORM_ID' => $formId,
263 public function remove()
265 $result = self::queryHookRegister(
266 'seo.client.webhook.remove',
268 'CODE' => $this->type,
269 'EXTERNAL_ID' => $this->externalId
277 $deleteResult = Internals\WebHookTable::delete($this->data[
'ID']);
278 $result = $deleteResult->isSuccess();
287 $list = Internals\WebHookTable::getList(
array(
294 return $list->fetch();
310 $response =
$engine->getInterface()->getTransport()->call($methodName, $parameters);
323 return ($this->data && $this->data[
'SECURITY_CODE'] === $securityCode);
333 return $this->errorCollection;
336 protected function sendEvent()
339 'PAYLOAD' => $this->payload,
344 $parameters =
$result->getParameters();
345 if (!empty($parameters[
'ERROR_COLLECTION']))
348 $resultErrorCollection = $parameters[
'ERROR_COLLECTION'];
349 $this->errorCollection->add($resultErrorCollection->toArray());
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
const ANSWER_ERROR_NO_PAYLOAD
static registerForm($formId)
const ANSWER_ERROR_WRONG_SEC_CODE
const ANSWER_ERROR_NO_SEC_CODE
const ANSWER_ERROR_SYSTEM
static getData($type, $externalId)
checkSecurityCode($securityCode)
__construct($type, $externalId)
static queryHookRegister($methodName, array $parameters)
const ANSWER_ERROR_NO_EXT_ID
static unregisterForm($formId)
static answerData(array $data=array())
const ANSWER_ERROR_NO_CODE
static create($type, $externalId)
handle(Payload\Batch $payload)
static answerError($code=null, $text=null)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code