• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/helper.php
  • Класс: BitrixMailHelper
  • Вызов: Helper::markOldMessagesAgent
static function markOldMessagesAgent()
{
	$userMailboxes = BitrixMailMailboxTable::getList([
		'select' => [
			'ID'
		],
		'filter' => [
			'=ACTIVE' => 'Y',
			'=SERVER_TYPE' => 'imap',
		],
	])->fetchAll();

	if (empty($userMailboxes))
	{
		return '';
	}

	$numberOfUnSynchronizedMailboxes = count($userMailboxes);

	foreach ($userMailboxes as $mailbox)
	{
		$mailboxID = $mailbox['ID'];
		$mailboxHelper = HelperMailbox::createInstance($mailboxID, false);
		if (empty($mailboxHelper))
		{
			$numberOfUnSynchronizedMailboxes--;
			continue;
		}

		$keyRow = [
			'MAILBOX_ID' => $mailboxID,
			'ENTITY_TYPE' => 'MAILBOX',
			'ENTITY_ID' => $mailboxID,
			'PROPERTY_NAME' => 'SYNC_IS_OLD_STATUS',
		];

		$filter = [
			'=MAILBOX_ID' => $keyRow['MAILBOX_ID'],
			'=ENTITY_TYPE' => $keyRow['ENTITY_TYPE'],
			'=ENTITY_ID' => $keyRow['ENTITY_ID'],
			'=PROPERTY_NAME' => $keyRow['PROPERTY_NAME'],
		];

		$startValue = 'started_for_id_'.$mailboxID;

		if(BitrixMailInternalsMailEntityOptionsTable::getCount($filter))
		{
			if(InternalsMailEntityOptionsTable::getList([
					'select' => [
						'VALUE',
					],
					'filter' => $filter,
				])->fetchAll()[0]['VALUE'] !== 'completed')
			{
				BitrixMailInternalsMailEntityOptionsTable::update(
					$keyRow,
					['VALUE' => $startValue]
				);

				$synchronizationSuccess = $mailboxHelper->resyncIsOldStatus();

				if($synchronizationSuccess)
				{
					BitrixMailInternalsMailEntityOptionsTable::update(
						$keyRow,
						['VALUE' => 'completed']
					);
					$numberOfUnSynchronizedMailboxes--;
				}
			}
			else
			{
				$numberOfUnSynchronizedMailboxes--;
			}
		}
		else
		{
			$fields = $keyRow;
			$fields['VALUE'] = $startValue;
			BitrixMailInternalsMailEntityOptionsTable::add(
				$fields
			);
			$synchronizationSuccess = $mailboxHelper->resyncIsOldStatus();

			if($synchronizationSuccess)
			{
				BitrixMailInternalsMailEntityOptionsTable::update(
					$keyRow,
					['VALUE' => 'completed']
				);
				$numberOfUnSynchronizedMailboxes--;
			}
		}
	}

	if($numberOfUnSynchronizedMailboxes === 0)
	{
		return '';
	}
	else
	{
		return 'BitrixMailHelper::markOldMessagesAgent();';
	}
}