- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/consent/abstractconsentresponse.php
- Класс: Bitrix\Sender\Consent\AbstractConsentResponse
- Вызов: AbstractConsentResponse::getConsentId
function getConsentId();
/**
* @return mixed
*/
protected abstract function getPostingId();
/**
* @param $apply
* @return mixed
*/
protected abstract function isContactUpdated($apply);
/**
* @param $apply
* @return bool
* @throws \Bitrix\Main\ArgumentException
* @throws \Bitrix\Main\ObjectPropertyException
* @throws \Bitrix\Main\SystemException
*/
protected function updateContact($apply)
{
$result = false;
if ($this->isContactUpdated($apply))
{
$contactId = $this->getContactId();
$type = ($apply? ContactTable::CONSENT_STATUS_ACCEPT : ContactTable::CONSENT_STATUS_DENY);
$isUnsub = ($apply? 'N':'Y');
$result = ContactTable::update($contactId,[
'CONSENT_STATUS' => $type,
'IS_UNSUB' => $isUnsub,
'DATE_UPDATE' => new DateTime()
])->isSuccess();
$recipients = RecipientTable::getList([
'select' => ['ID','STATUS'],
'filter' => [
'=CONTACT_ID' => $contactId,
'@STATUS' => [RecipientTable::SEND_RESULT_NONE, RecipientTable::SEND_RESULT_WAIT_ACCEPT]
]
])->fetchAll();
if(!empty($recipients))
{
SqlBatch::update(RecipientTable::getTableName(),array_map(
function($recipient) use ($isUnsub)
{
$changeStatus = $recipient['STATUS'] === RecipientTable::SEND_RESULT_WAIT_ACCEPT;
return [
'ID' => $recipient['ID'],
'STATUS' => ($changeStatus? RecipientTable::SEND_RESULT_NONE: $recipient['STATUS']),
'IS_UNSUB' => $isUnsub
];
},
$recipients
));
}
}
return $result;
}