• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/classes/general/livefeed.php
  • Класс: CListsLiveFeed
  • Вызов: CListsLiveFeed::setSocnetFollow
static function setSocnetFollow($users = array(), $logId, $type, $manualMode = false, $addingComment = false)
{
	if($manualMode)
	{
		foreach($users as $userId)
		{
			$logFollowObject = CSocNetLogFollow::getList(
				array('USER_ID' => $userId, 'REF_ID' => $logId), array('BY_WF', 'TYPE'));
			$logFollow = $logFollowObject->fetch();
			if(!empty($logFollow) && $logFollow['TYPE'] == 'Y' && !$logFollow['BY_WF'])
			{
				CSocNetLogFollow::delete($userId, 'L'.$logId, false);
				CSocNetLogFollow::set($userId, 'L'.$logId, $type,
					ConvertTimeStamp(time() + CTimeZone::GetOffset(), "FULL", SITE_ID), SITE_ID, true);

				if (
					$type == 'Y'
					&& method_exists('BitrixSocialnetworkComponentHelper','userLogSubscribe')
				)
				{
					BitrixSocialnetworkComponentHelper::userLogSubscribe(array(
						'logId' => $logId,
						'userId' => $userId,
						'typeList' => array(
							'COUNTER_COMMENT_PUSH'
						)
					));
				}
			}
		}
	}
	else
	{
		if($type == 'Y')
		{
			foreach($users as $userId)
			{
				$logFollowObject = CSocNetLogFollow::getList(
					array('USER_ID' => $userId, 'REF_ID' => $logId), array('BY_WF'));
				$logFollow = $logFollowObject->fetch();

				if(
					empty($logFollow)
					|| ($logFollow['BY_WF'] == 'Y' || $addingComment)
				)
				{
					CSocNetLogFollow::delete($userId, 'L'.$logId, false);

					if (method_exists('BitrixSocialnetworkComponentHelper','userLogSubscribe'))
					{
						BitrixSocialnetworkComponentHelper::userLogSubscribe(array(
							'logId' => $logId,
							'userId' => $userId,
							'typeList' => array(
								'FOLLOW',
								'COUNTER_COMMENT_PUSH'
							),
							'followDate' => 'CURRENT',
							'followByWF' => true
						));
					}
					else
					{
						CSocNetLogFollow::set($userId, 'L'.$logId, 'Y',
							ConvertTimeStamp(time() + CTimeZone::GetOffset(), "FULL", SITE_ID), SITE_ID, true);
					}
				}
			}
		}
		else
		{
			foreach($users as $userId)
			{
				$logFollowObject = CSocNetLogFollow::getList(
					array('USER_ID' => $userId, 'REF_ID' => $logId), array('BY_WF'));
				$logFollow = $logFollowObject->fetch();

				if(
					empty($logFollow)
					|| $logFollow['BY_WF'] == 'Y'
				)
				{
					CSocNetLogFollow::set($userId, 'L'.$logId, 'N', false, SITE_ID, true);
				}
			}
		}
	}
}