function FindLogEventIDByForumEntityID($forumEntityType)
	{
		$event_id = false;
		$arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();

		foreach ($arSocNetLogEvents as $event_id_tmp => $arEventTmp)
		{
			if (
				array_key_exists("FORUM_COMMENT_ENTITY", $arEventTmp)
				&& $arEventTmp["FORUM_COMMENT_ENTITY"] == $forumEntityType
			)
			{
				$event_id = $event_id_tmp;
				break;
			}
		}

		$arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();
		foreach ($arSocNetFeaturesSettings as $feature_tmp => $arFeature)
		{
			if (array_key_exists("subscribe_events", $arFeature))
			{
				foreach ($arFeature["subscribe_events"] as $event_id_tmp => $arEventTmp)
				{
					if (
						array_key_exists("FORUM_COMMENT_ENTITY", $arEventTmp)
						&& $arEventTmp["FORUM_COMMENT_ENTITY"] == $forumEntityType
					)
					{
						$event_id = $event_id_tmp;
						break;
					}
				}
			}
		}

		return $event_id;
	}
示例#2
0
         $arFilter["USER_ID"] = $arParams["CREATED_BY_ID"];
     }
     $arResult["IS_FILTERED"] = true;
     $arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
     $arParams["USE_FOLLOW"] = "N";
     unset($arFilter["!USER_ID"]);
 }
 if (IntVal($arParams["GROUP_ID"]) > 0) {
     $arResult["IS_FILTERED"] = true;
 }
 if ($arParams["FLT_ALL"] == "Y") {
     $arFilter["ALL"] = "Y";
 }
 if ($ENTITY_TYPE != "" && $ENTITY_ID > 0 && !array_key_exists("EVENT_ID", $arFilter)) {
     $arFilter["EVENT_ID"] = array();
     $arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();
     foreach ($arSocNetLogEvents as $event_id_tmp => $arEventTmp) {
         if (array_key_exists("HIDDEN", $arEventTmp) && $arEventTmp["HIDDEN"]) {
             continue;
         }
         $arFilter["EVENT_ID"][] = $event_id_tmp;
     }
     $arFeatures = CSocNetFeatures::GetActiveFeatures($ENTITY_TYPE, $ENTITY_ID);
     $arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();
     foreach ($arFeatures as $feature_id) {
         if (array_key_exists($feature_id, $arSocNetFeaturesSettings) && array_key_exists("subscribe_events", $arSocNetFeaturesSettings[$feature_id])) {
             foreach ($arSocNetFeaturesSettings[$feature_id]["subscribe_events"] as $event_id_tmp => $arEventTmp) {
                 $arFilter["EVENT_ID"][] = $event_id_tmp;
             }
         }
     }
示例#3
0
 function FindFullSetEventIDByEventID($event_id)
 {
     $event_id_fullset = false;
     $arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();
     foreach ($arSocNetLogEvents as $event_id_tmp => $arEventTmp) {
         if (array_key_exists("FULL_SET", $arEventTmp) && is_array($arEventTmp["FULL_SET"]) && in_array($event_id, $arEventTmp["FULL_SET"])) {
             $event_id_fullset = $event_id_tmp;
             break;
         }
     }
     if (!$event_id_fullset) {
         $arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();
         foreach ($arSocNetFeaturesSettings as $feature_id_tmp => $arFeatureTmp) {
             if (array_key_exists("subscribe_events", $arFeatureTmp)) {
                 foreach ($arFeatureTmp["subscribe_events"] as $event_id_tmp => $arEventTmp) {
                     if (array_key_exists("FULL_SET", $arEventTmp) && is_array($arEventTmp["FULL_SET"]) && in_array($event_id, $arEventTmp["FULL_SET"])) {
                         $event_id_fullset = $event_id_tmp;
                         break;
                     }
                 }
             }
             if ($event_id_fullset) {
                 break;
             }
         }
     }
     return $event_id_fullset;
 }
示例#4
0
 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"]) && strlen($arSocNetLogEvents[$feature]["COMMENT_EVENT"]["EVENT_ID"]) > 0) {
                         $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"]) && strlen($arEventIDTmp["COMMENT_EVENT"]["EVENT_ID"]) > 0) {
                             $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;
 }
示例#5
0
 function CheckFields($ACTION, &$arFields, $ID = 0)
 {
     global $DB, $arSocNetAllowedEntityTypes;
     $arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();
     $arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();
     if ($ACTION != "ADD" && IntVal($ID) <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException("System error 870164", "ERROR");
         return false;
     }
     if ((is_set($arFields, "ENTITY_TYPE") || $ACTION == "ADD") && StrLen($arFields["ENTITY_TYPE"]) <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_LE_EMPTY_ENTITY_TYPE"), "EMPTY_ENTITY_TYPE");
         return false;
     } elseif (is_set($arFields, "ENTITY_TYPE")) {
         if (!in_array($arFields["ENTITY_TYPE"], CSocNetAllowed::GetAllowedEntityTypes())) {
             $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_LE_ERROR_NO_ENTITY_TYPE"), "ERROR_NO_ENTITY_TYPE");
             return false;
         }
     }
     if (is_set($arFields, "ENTITY_ID")) {
         $type = "";
         if (is_set($arFields, "ENTITY_TYPE")) {
             $type = $arFields["ENTITY_TYPE"];
         } elseif ($ACTION != "ADD") {
             $arRe = CAllSocNetLog::GetByID($ID);
             if ($arRe) {
                 $type = $arRe["ENTITY_TYPE"];
             }
         }
         if (StrLen($type) <= 0) {
             $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_LE_ERROR_CALC_ENTITY_TYPE"), "ERROR_CALC_ENTITY_TYPE");
             return false;
         }
         if ($type == SONET_SUBSCRIBE_ENTITY_GROUP && intval($arFields["ENTITY_ID"]) > 0) {
             $arResult = CSocNetGroup::GetByID($arFields["ENTITY_ID"]);
             if ($arResult == false) {
                 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_LE_ERROR_NO_ENTITY_ID"), "ERROR_NO_ENTITY_ID");
                 return false;
             }
         } elseif ($type == SONET_SUBSCRIBE_ENTITY_USER && intval($arFields["ENTITY_ID"]) > 0) {
             $dbResult = CUser::GetByID($arFields["ENTITY_ID"]);
             if (!$dbResult->Fetch()) {
                 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_LE_ERROR_NO_ENTITY_ID"), "ERROR_NO_ENTITY_ID");
                 return false;
             }
         }
     }
     if ((is_set($arFields, "EVENT_ID") || $ACTION == "ADD") && StrLen($arFields["EVENT_ID"]) <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_LE_EMPTY_EVENT_ID"), "EMPTY_EVENT_ID");
         return false;
     } elseif (is_set($arFields, "EVENT_ID")) {
         $arFields["EVENT_ID"] = strtolower($arFields["EVENT_ID"]);
         if (!array_key_exists($arFields["EVENT_ID"], $arSocNetFeaturesSettings) && $arFields["EVENT_ID"] != "all" && !array_key_exists($arFields["EVENT_ID"], $arSocNetLogEvents)) {
             $bFound = false;
             foreach ($arSocNetFeaturesSettings as $feature_id => $arFeature) {
                 if (array_key_exists("subscribe_events", $arFeature) && array_key_exists($arFields["EVENT_ID"], $arFeature["subscribe_events"])) {
                     $bFound = true;
                     break;
                 }
             }
             if (!$bFound && CSocNetLogTools::FindLogCommentEventByID($arFields["EVENT_ID"])) {
                 $bFound = true;
             }
             if (!$bFound) {
                 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_LE_ERROR_NO_FEATURE_ID"), "ERROR_NO_FEATURE");
                 return false;
             }
         }
     }
     if (is_set($arFields, "SITE_ID") && $arFields["SITE_ID"] != false) {
         $dbResult = CSite::GetByID($arFields["SITE_ID"]);
         if (!$dbResult->Fetch()) {
             $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $arFields["SITE_ID"], GetMessage("SONET_LE_ERROR_NO_SITE")), "ERROR_NO_SITE");
             return false;
         }
     }
     if ((is_set($arFields, "MAIL_EVENT") || $ACTION == "ADD") && $arFields["MAIL_EVENT"] != "Y" && $arFields["MAIL_EVENT"] != "N") {
         $arFields["MAIL_EVENT"] = "N";
     }
     if (is_set($arFields, "MAIL_EVENT") && $arFields["MAIL_EVENT"] == "Y") {
         $arFields["TRANSPORT"] = "M";
     }
     return True;
 }