• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/event_user_view.php
  • Класс: CAllSocNetEventUserView
  • Вызов: CAllSocNetEventUserView::Delete
static function Delete($entityType, $entityID, $feature = false, $event = false)
{
	global $DB;

	$arSocNetAllowedSubscribeEntityTypes = CSocNetAllowed::GetAllowedEntityTypes();
	$arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();
	$arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();

	$entityType = trim($entityType);

	if (!in_array($entityType, CSocNetAllowed::GetAllowedEntityTypes()))
	{
		$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_EUV_INCORRECT_ENTITY_TYPE"), "ERROR_INCORRECT_ENTITY_TYPE");
		return false;
	}

	$entityID = intval($entityID);
	if ($entityID <= 0)
	{
		$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_EUV_EMPTY_ENTITY_ID"), "ERROR_EMPTY_ENTITY_ID");
		return false;
	}

	$strWhere = " WHERE ENTITY_TYPE = '".$entityType."' AND ENTITY_ID = ".$entityID;
	if ($feature)
	{
		if ($event)
			$strWhere .= " AND EVENT_ID = '".$event."'";
		else
		{
			$event_id = array();

			if (
				(
					array_key_exists($feature, $arSocNetLogEvents)
					&& array_key_exists("ENTITIES", $arSocNetLogEvents[$feature])
					&& array_key_exists($entityType, $arSocNetLogEvents[$feature]["ENTITIES"])
				)
				||
				(
					array_key_exists($feature, $arSocNetFeaturesSettings)
					&& array_key_exists("subscribe_events", $arSocNetFeaturesSettings[$feature])
					&& count($arSocNetFeaturesSettings[$feature]["subscribe_events"]) > 0
				)
			)
			{
				if (array_key_exists($feature, $arSocNetLogEvents))
				{
					$event_id[] = $feature;

					if (
						array_key_exists("COMMENT_EVENT", $arSocNetLogEvents[$feature])
						&& is_array($arSocNetLogEvents[$feature]["COMMENT_EVENT"])
						&& array_key_exists("EVENT_ID", $arSocNetLogEvents[$feature]["COMMENT_EVENT"])
						&& $arSocNetLogEvents[$feature]["COMMENT_EVENT"]["EVENT_ID"] <> ''
					)
						$event_id[] = $arSocNetLogEvents[$feature]["COMMENT_EVENT"]["EVENT_ID"];
				}	

				if (
					array_key_exists($feature, $arSocNetFeaturesSettings)
					&& array_key_exists("subscribe_events", $arSocNetFeaturesSettings[$feature])
					&& count($arSocNetFeaturesSettings[$feature]["subscribe_events"]) > 0
				)
				{
					foreach ($arSocNetFeaturesSettings[$feature]["subscribe_events"] as $event_id_tmp => $arEventIDTmp)
					{
						if (
							array_key_exists("NO_SET", $arEventIDTmp)
							&& $arEventIDTmp["NO_SET"]
						)
						{
							continue;
						}

						$event_id[] = $event_id_tmp;

						if (
							array_key_exists("COMMENT_EVENT", $arEventIDTmp)
							&& is_array($arEventIDTmp["COMMENT_EVENT"])
							&& array_key_exists("EVENT_ID", $arEventIDTmp["COMMENT_EVENT"])
							&& $arEventIDTmp["COMMENT_EVENT"]["EVENT_ID"] <> ''
						)
							$event_id[] = $arEventIDTmp["COMMENT_EVENT"]["EVENT_ID"];
					}
				}
				$event_id = array_unique($event_id);
				
				$strWhere .= " AND (";
				$i = 0;
				foreach ($event_id as $ev)
				{
					if ($i > 0)
						$strWhere .= " OR ";
					$strWhere .= "EVENT_ID = '".$ev."'";					
					$i++;
				}
				$strWhere .= ")";
			}
		}
	}
	$bSuccess = $DB->Query("DELETE FROM b_sonet_event_user_view".$strWhere, true);

	return $bSuccess;
}