public static function CheckFields($ACTION, &$arFields, $ID = 0) { static $arSiteWorkgroupsPage; global $DB, $arSocNetAllowedEntityTypes, $arSocNetAllowedSubscribeEntityTypes, $arSocNetFeaturesSettings, $arSocNetLogEvents; if (!$arSiteWorkgroupsPage && IsModuleInstalled("extranet") && $arFields["ENTITY_TYPE"] == SONET_ENTITY_GROUP) { $rsSite = CSite::GetList($by="sort", $order="desc", Array("ACTIVE" => "Y")); while($arSite = $rsSite->Fetch()) $arSiteWorkgroupsPage[$arSite["ID"]] = COption::GetOptionString("socialnetwork", "workgroup_page", $arSite["DIR"]."workgroups/", $arSite["ID"]); } if ($ACTION != "ADD" && IntVal($ID) <= 0) { $GLOBALS["APPLICATION"]->ThrowException("System error 870164", "ERROR"); return false; } $newEntityType = ""; if ((is_set($arFields, "ENTITY_TYPE") || $ACTION=="ADD") && StrLen($arFields["ENTITY_TYPE"]) <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_EMPTY_ENTITY_TYPE"), "EMPTY_ENTITY_TYPE"); return false; } elseif (is_set($arFields, "ENTITY_TYPE")) { if (!in_array($arFields["ENTITY_TYPE"], $arSocNetAllowedSubscribeEntityTypes)) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_ERROR_NO_ENTITY_TYPE"), "ERROR_NO_ENTITY_TYPE"); return false; } $newEntityType = $arFields["ENTITY_TYPE"]; } if ((is_set($arFields, "ENTITY_ID") || $ACTION=="ADD") && IntVal($arFields["ENTITY_ID"]) <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_EMPTY_ENTITY_ID"), "EMPTY_ENTITY_ID"); return false; } elseif (is_set($arFields, "ENTITY_ID")) { if (StrLen($newEntityType) <= 0 && $ID > 0) { $arRe = CAllSocNetLog::GetByID($ID); if ($arRe) $newEntityType = $arRe["ENTITY_TYPE"]; } if (StrLen($newEntityType) <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_ERROR_CALC_ENTITY_TYPE"), "ERROR_CALC_ENTITY_TYPE"); return false; } if ($newEntityType == SONET_ENTITY_GROUP) { $arResult = CSocNetGroup::GetByID($arFields["ENTITY_ID"]); if ($arResult == false) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_ERROR_NO_ENTITY_ID"), "ERROR_NO_ENTITY_ID"); return false; } } elseif ($newEntityType == SONET_ENTITY_USER) { $dbResult = CUser::GetByID($arFields["ENTITY_ID"]); if (!$dbResult->Fetch()) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_ERROR_NO_ENTITY_ID"), "ERROR_NO_ENTITY_ID"); return false; } } } if ( $ACTION == "ADD" && ( !is_set($arFields, "SITE_ID") || ( (is_array($arFields["SITE_ID"]) && count($arFields["SITE_ID"]) <= 0) || (!is_array($arFields["SITE_ID"]) && StrLen($arFields["SITE_ID"]) <= 0) ) ) ) { if ($newEntityType == SONET_ENTITY_GROUP) { $arSites = array(); $rsGroupSite = CSocNetGroup::GetSite($arFields["ENTITY_ID"]); while($arGroupSite = $rsGroupSite->Fetch()) $arSites[] = $arGroupSite["LID"]; $arFields["SITE_ID"] = $arSites; } else $arFields["SITE_ID"] = array(SITE_ID); } if ((is_set($arFields, "EVENT_ID") || $ACTION=="ADD") && StrLen($arFields["EVENT_ID"]) <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_EMPTY_EVENT_ID"), "EMPTY_EVENT_ID"); return false; } elseif (is_set($arFields, "EVENT_ID")) { $arFields["EVENT_ID"] = strtolower($arFields["EVENT_ID"]); $arEvent = CSocNetLogTools::FindLogEventByID($arFields["EVENT_ID"], $arFields["ENTITY_TYPE"]); if (!$arEvent) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_ERROR_NO_FEATURE_ID"), "ERROR_NO_FEATURE"); return false; } } if (is_set($arFields, "USER_ID")) { $dbResult = CUser::GetByID($arFields["USER_ID"]); if (!$dbResult->Fetch()) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_ERROR_NO_USER_ID"), "ERROR_NO_USER_ID"); return false; } } if (is_set($arFields, "LOG_DATE") && (!$DB->IsDate($arFields["LOG_DATE"], false, LANG, "FULL"))) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_EMPTY_DATE_CREATE"), "EMPTY_LOG_DATE"); return false; } if ((is_set($arFields, "TITLE") || $ACTION=="ADD") && StrLen($arFields["TITLE"]) <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GL_EMPTY_TITLE"), "EMPTY_TITLE"); return false; } if (!$GLOBALS["USER_FIELD_MANAGER"]->CheckFields("SONET_LOG", $ID, $arFields)) return false; if (is_set($arFields["URL"]) && is_array($arSiteWorkgroupsPage)) foreach($arSiteWorkgroupsPage as $groups_page) if (strpos($arFields["URL"], $groups_page) === 0) $arFields["URL"] = "#GROUPS_PATH#".substr($arFields["URL"], strlen($groups_page), strlen($arFields["URL"])-strlen($groups_page)); return True; }
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; }