- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/internals/countercalculation.php
- Класс: Bitrix\Sender\Internals\CounterCalculation
- Вызов: CounterCalculation::updateRecipientReadCounters
static function updateRecipientReadCounters($type)
{
$params = array(
'select' => array('RECIPIENT_ID'),
'runtime' => array(
new \Bitrix\Main\Entity\ReferenceField(
'UPDATE_RECIPIENT',
'Bitrix\Sender\PostingRecipientTable',
array('=this.RECIPIENT_ID' => 'ref.ID')
)
),
'filter' => array(
'!UPDATE_RECIPIENT.ID' => null,
'=UPDATE_RECIPIENT.IS_' . $type => 'N',
),
'group' => array('RECIPIENT_ID')
);
$dataDb = null;
switch($type)
{
case 'READ':
$dataDb = \Bitrix\Sender\PostingReadTable::getList($params);
break;
case 'CLICK':
$dataDb = \Bitrix\Sender\PostingClickTable::getList($params);
break;
case 'UNSUB':
$dataDb = \Bitrix\Sender\PostingUnsubTable::getList($params);
break;
}
if(!$dataDb)
{
return false;
}
while($item = $dataDb->fetch())
{
if(self::isTimeUp())
{
return true;
}
Model\Posting\RecipientTable::update($item['RECIPIENT_ID'], ['IS_' . $type => 'Y']);
}
return false;
}