Subscription::getSubscriptions

  1. Bitrix24 API (v. 23.675.0)
  2. sender
  3. Subscription
  4. getSubscriptions
  • Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/subscription.php
  • Класс: Bitrix\Sender\Subscription
  • Вызов: Subscription::getSubscriptions
static function getSubscriptions($data)
{
	$resultMailingList = array();

	$mailing = MailingTable::getRowById(array('ID' => $data['MAILING_ID']));
	if(isset($data['TEST']) && $data['TEST'] == 'Y')
	{
		$resultMailingList[] = array(
			'ID' => $mailing['ID'],
			'NAME' => $mailing['NAME'],
			'DESC' => $mailing['DESCRIPTION'],
			'SELECTED' => true,
		);

		return $resultMailingList;
	}
	$contactData = $contactId = null;
	if($data['RECIPIENT_ID'] && $recipient = PostingRecipientTable::getRowById(array('ID' => $data['RECIPIENT_ID'])))
	{
		if(isset($data['CONTACT_ID']) && $recipient['CONTACT_ID'] != $data['CONTACT_ID'])
		{
			return [];
		}
		$contactData = ContactTable::getRowById($contactId = $recipient['CONTACT_ID']);
	}
	elseif($data['CONTACT_ID'] && $contactData = ContactTable::getRowById($data['CONTACT_ID']))
	{
		$contactId = $contactData['ID'];
	}
	else
	{
		return [];
	}

	if ($contactData && $contactData['BLACKLISTED'] === 'Y')
	{
		return [];
	}

	$mailingUnsub = array();
	$unSubDb = MailingSubscriptionTable::getUnSubscriptionList(array(
		'select' => array('MAILING_ID'),
		'filter' => array(
			'=CONTACT.ID' => $contactId,
			'=MAILING.SITE_ID' => $mailing['SITE_ID']
		)
	));
	while($unSub = $unSubDb->fetch())
	{
		$mailingUnsub[] = $unSub['MAILING_ID'];
	}

	$mailingList = array();
	// all receives mailings
	$mailingDb = PostingRecipientTable::getList(array(
		'select' => array('MAILING_ID' => 'POSTING.MAILING.ID'),
		'filter' => array(
			'=CONTACT_ID' => $contactId,
			'=POSTING.MAILING.ACTIVE' => 'Y',
			'=POSTING.MAILING.SITE_ID' => $mailing['SITE_ID']
		),
		'group' => array('MAILING_ID')
	));
	while ($mailing = $mailingDb->fetch())
	{
		$mailingList[] = $mailing['MAILING_ID'];
	}

	// all subscribed mailings
	$mailingDb = MailingSubscriptionTable::getSubscriptionList(array(
		'select' => array('MAILING_ID'),
		'filter' => array(
			'=CONTACT.ID' => $contactId,
			'=MAILING.ACTIVE' => 'Y',
			'=MAILING.SITE_ID' => $mailing['SITE_ID']
		)
	));
	while ($mailing = $mailingDb->fetch())
	{
		$mailingList[] = $mailing['MAILING_ID'];
	}

	$mailingList = array_unique($mailingList);
	foreach($mailingList as $mailingId)
	{
		if(!in_array($mailingId, $mailingUnsub))
		{
			$mailingDesc = MailingTable::getRowById($mailingId);
			if($mailingDesc)
			{
				$resultMailingList[] = array(
					'ID' => $mailingDesc['ID'],
					'NAME' => $mailingDesc['NAME'],
					'DESC' => $mailingDesc['DESCRIPTION'],
					'SELECTED' => in_array($mailingDesc['ID'], array($data['MAILING_ID'])),
				);
			}
		}
	}

	return $resultMailingList;
}

Добавить комментарий