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; }
$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; } } }
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; }
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; }
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; }