%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.log.rss/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/socialnetwork.log.rss/component.php |
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if (!CModule::IncludeModule("socialnetwork")) { ShowError(GetMessage("SONET_MODULE_NOT_INSTALL")); return; } if (strLen($arParams["EVENTS_VAR"]) <= 0) $arParams["EVENTS_VAR"] = "events"; $arParams["LOG_DATE_DAYS"] = IntVal($arParams["LOG_DATE_DAYS"]); if ($arParams["LOG_DATE_DAYS"] <= 0) $arParams["LOG_DATE_DAYS"] = 7; $arParams["EVENT_ID"] = false; if (array_key_exists($arParams["EVENTS_VAR"], $_REQUEST) && strlen(trim($_REQUEST[$arParams["EVENTS_VAR"]])) > 0) { $arParams["EVENT_ID"] = trim($_REQUEST[$arParams["EVENTS_VAR"]]); $arParams["EVENT_ID"] = explode("|", $arParams["EVENT_ID"]); foreach($arParams["EVENT_ID"] as $feature_id) { if ($feature_id == "blog") { $arParams["EVENT_ID"][] = "blog_post"; $arParams["EVENT_ID"][] = "blog_comment"; $arParams["EVENT_ID"][] = "blog_post_micro"; break; } } } else $arParams["EVENT_ID"] = false; $arParams['NAME_TEMPLATE'] = $arParams['NAME_TEMPLATE'] ? $arParams['NAME_TEMPLATE'] : CSite::GetNameFormat(); $arParams["NAME_TEMPLATE"] = str_replace( array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"] ); $bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false; $arResult["RSS_TTL"] = (isset($arParams["RSS_TTL"]) && intval($arParams["RSS_TTL"]) > 0 ? $arParams["RSS_TTL"] : "60"); $bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin(); if (!function_exists("__RSSCheckServerName")) { function __RSSCheckServerName($url, $server_name) { $protocol = (CMain::IsHTTPS() ? "https://" : "http://"); $result = strlen($url) > 0 && strpos($url, $protocol) !== 0 ? $protocol.$server_name.$url : $url; return $result; } } if(strlen($arResult["SERVER_NAME"])<=0 && defined("SITE_SERVER_NAME")) $arResult["SERVER_NAME"] = SITE_SERVER_NAME; if(strlen($arResult["SERVER_NAME"])<=0 && defined("SITE_SERVER_NAME")) { $rsSite = CSite::GetList(($b="sort"), ($o="asc"), array("LID" => SITE_ID)); if($arSite = $rsSite->Fetch()) $arResult["SERVER_NAME"] = $arSite["SERVER_NAME"]; } if(strlen($arResult["SERVER_NAME"])<=0) $arResult["SERVER_NAME"] = COption::GetOptionString("main", "server_name", "www.bitrixsoft.com"); if ($arParams["ENTITY_TYPE"] == SONET_ENTITY_GROUP) { $arGroup = CSocNetGroup::GetByID($arParams["ENTITY_ID"]); $arCurrentUserPerms = CSocNetUserToGroup::InitUserPerms($GLOBALS["USER"]->GetID(), $arGroup, $bCurrentUserIsAdmin); if (!$arCurrentUserPerms || !$arCurrentUserPerms["UserCanViewGroup"]) { $APPLICATION->RestartBuffer(); $arResult["NAME"] = GetMessage("SONET_LOG_RSS_ERROR"); $arResult["Events"] = array( array( "LOG_DATE" => date("r"), "TITLE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_GROUP_NO_PERMS_TITLE")), "MESSAGE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_GROUP_NO_PERMS_MESSAGE")), "URL" => "", ) ); $this->IncludeComponentTemplate(); $r = $APPLICATION->EndBufferContentMan(); echo $r; die(); } if (intval($arGroup["IMAGE_ID"]) <= 0) $arGroup["IMAGE_ID"] = COption::GetOptionInt("socialnetwork", "default_group_picture", false, SITE_ID); $arResult["PICTURE"] = CSocNetTools::InitImage($arGroup["IMAGE_ID"], 100, "/bitrix/images/socialnetwork/nopic_group_100.gif", 100, "", false); $arResult["PICTURE"]["FILE"]["SRC"] = __RSSCheckServerName($arResult["PICTURE"]["FILE"]["SRC"], $arResult["SERVER_NAME"]); $arResult["NAME"] = $arGroup["NAME"]; $arResult["DESCRIPTION"] = $arGroup["DESCRIPTION"]; $arResult["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arParams["ENTITY_ID"])); $arResult["URL"] = htmlspecialcharsbx(__RSSCheckServerName($arResult["URL"], $arResult["SERVER_NAME"])); } else { $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arParams["ENTITY_ID"], "viewprofile", $bCurrentUserIsAdmin); if (!$canViewProfile) { $APPLICATION->RestartBuffer(); $arResult["NAME"] = GetMessage("SONET_LOG_RSS_ERROR"); $arResult["Events"] = array( array( "LOG_DATE" => date("r"), "TITLE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_USER_NO_PERMS_TITLE")), "MESSAGE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_USER_NO_PERMS_MESSAGE")), "URL" => "", ) ); $this->IncludeComponentTemplate(); $r = $APPLICATION->EndBufferContentMan(); echo $r; die(); } $rsUser = CUser::GetByID($arParams["ENTITY_ID"]); if ($arUser = $rsUser->GetNext()) { if (intval($arUser["PERSONAL_PHOTO"]) <= 0) { switch ($arUser["PERSONAL_GENDER"]) { case "M": $suffix = "male"; break; case "F": $suffix = "female"; break; default: $suffix = "unknown"; } $arUser["PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, SITE_ID); } $arResult["PICTURE"] = CSocNetTools::InitImage($arUser["PERSONAL_PHOTO"], 100, "/bitrix/images/socialnetwork/nopic_user_100.gif", 100, "", false); $arResult["PICTURE"]["FILE"]["SRC"] = __RSSCheckServerName($arResult["PICTURE"]["FILE"]["SRC"], $arResult["SERVER_NAME"]); $arResult["NAME"] = CUser::FormatName($arParams['NAME_TEMPLATE'], $arUser, $bUseLogin); $arResult["DESCRIPTION"] = ""; $arResult["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arParams["ENTITY_ID"])); $arResult["URL"] = __RSSCheckServerName($arResult["URL"], $arResult["SERVER_NAME"]); } } if ($arResult["NAME"]) { $APPLICATION->RestartBuffer(); header("Content-Type: text/xml; charset=".LANG_CHARSET); header("Pragma: no-cache"); $arFilter["ENTITY_TYPE"] = Trim($arParams["ENTITY_TYPE"]); $arFilter["ENTITY_ID"] = intval($arParams["ENTITY_ID"]); $arFilter["EVENT_ID"] = array(); if ($arParams["EVENT_ID"]) $arFilter["EVENT_ID"] = $arParams["EVENT_ID"]; if (!is_array($arFilter["EVENT_ID"]) && strlen(trim($arFilter["EVENT_ID"])) > 0) $arFilter["EVENT_ID"] = array($arFilter["EVENT_ID"]); foreach($arFilter["EVENT_ID"] as $i => $feature) { if ($feature == "all") { unset($arFilter["EVENT_ID"]); break; } } if ( array_key_exists("ENTITY_TYPE", $arFilter) && strlen($arFilter["ENTITY_TYPE"]) > 0 && array_key_exists("ENTITY_ID", $arFilter) && intval($arFilter["ENTITY_ID"]) > 0 ) { $arFeatures = CSocNetFeatures::GetActiveFeatures($arFilter["ENTITY_TYPE"], $arFilter["ENTITY_ID"]); $arFeatures[] = "system"; if (in_array("blog", $arFeatures)) { $arFeatures[] = "blog_post"; $arFeatures[] = "blog_comment"; $arFeatures[] = "blog_post_micro"; } if (!array_key_exists("EVENT_ID", $arFilter) || empty($arFilter["EVENT_ID"])) { $arFilter["EVENT_ID"] = array("system"); foreach($arFeatures as $feature_id) { if ($feature_id == "blog") { $arFilter["EVENT_ID"][] = "blog_post"; $arFilter["EVENT_ID"][] = "blog_comment"; $arFilter["EVENT_ID"][] = "blog_post_micro"; } $arFilter["EVENT_ID"][] = $feature_id; } } else { foreach($arFilter["EVENT_ID"] as $key => $feature_id) { if (!in_array($feature_id, array_merge($arFeatures, array("system")))) unset($arFilter["EVENT_ID"][$key]); } } } if ($arParams["LOG_DATE_DAYS"] > 0) { $arrAdd = array( "DD" => -($arParams["LOG_DATE_DAYS"]), "MM" => 0, "YYYY" => 0, "HH" => 0, "MI" => 0, "SS" => 0, ); $stmp = AddToTimeStamp($arrAdd, time()); $arFilter[">=LOG_DATE"] = ConvertTimeStamp($stmp, "FULL"); } if (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite()) $arFilter["SITE_ID"] = SITE_ID; else $arFilter["SITE_ID"] = array(SITE_ID, false); $arResult["Events"] = array(); CTimeZone::Disable(); $dbEvents = CSocNetLog::GetList(array("LOG_DATE"=>"DESC"), $arFilter, false, false, array(), array("USER_ID" => ($bCurrentUserIsAdmin ? "A" : $GLOBALS["USER"]->GetID()))); CTimeZone::Enable(); while ($arEvents = $dbEvents->GetNext()) { if ($arEvents["ENTITY_TYPE"] == SONET_ENTITY_GROUP) $path2Entity = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arEvents["ENTITY_ID"])); else $path2Entity = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arEvents["ENTITY_ID"])); $arDateTmp = ParseDateTime($arEvents["LOG_DATE"], CSite::GetDateFormat('FULL')); $day = IntVal($arDateTmp["DD"]); $month = IntVal($arDateTmp["MM"]); $year = IntVal($arDateTmp["YYYY"]); $dateFormated = $day.' '.ToLower(GetMessage('MONTH_'.$month.'_S')).' '.$year; $timeFormated = $arDateTmp["HH"].':'.$arDateTmp["MI"].':'.$arDateTmp["SS"]; $arEvents["MESSAGE_FORMAT"] = htmlspecialcharsback($arEvents["MESSAGE"]); if (StrLen($arEvents["CALLBACK_FUNC"]) > 0) { if (StrLen($arEvents["MODULE_ID"]) > 0) CModule::IncludeModule($arEvents["MODULE_ID"]); $arEvents["MESSAGE_FORMAT"] = call_user_func($arEvents["CALLBACK_FUNC"], $arEvents); } if ($arEvents["EVENT_ID"] == "system" || $arEvents["EVENT_ID"] == "system_friends" || $arEvents["EVENT_ID"] == "system_groups") { $arEvents["TITLE_TEMPLATE"] = ""; $arEvents["URL"] = ""; switch ($arEvents["TITLE"]) { case "join": list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_JOIN1"), GetMessage("SONET_C73_TITLE_JOIN2"), $arParams, $bCurrentUserIsAdmin, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; case "unjoin": list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_UNJOIN1"), GetMessage("SONET_C73_TITLE_UNJOIN2"), $arParams, $bCurrentUserIsAdmin, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; case "moderate": list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_MODERATE1"), GetMessage("SONET_C73_TITLE_MODERATE2"), $arParams, $bCurrentUserIsAdmin, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; case "unmoderate": list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_UNMODERATE1"), GetMessage("SONET_C73_TITLE_UNMODERATE2"), $arParams, $bCurrentUserIsAdmin, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; case "owner": list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_OWNER1"), GetMessage("SONET_C73_TITLE_OWNER1"), $arParams, $bCurrentUserIsAdmin, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; case "friend": list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_FRIEND1"), GetMessage("SONET_C73_TITLE_FRIEND1"), $arParams, $bCurrentUserIsAdmin, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; case "unfriend": list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_UNFRIEND1"), GetMessage("SONET_C73_TITLE_UNFRIEND1"), $arParams, $bCurrentUserIsAdmin, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; case "group": list($titleTmp, $messageTmp) = CSocNetLog::InitGroupsTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_GROUP1"), GetMessage("SONET_C73_TITLE_GROUP1"), $arParams, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; case "ungroup": list($titleTmp, $messageTmp) = CSocNetLog::InitGroupsTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_UNGROUP1"), GetMessage("SONET_C73_TITLE_UNGROUP1"), $arParams, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; case "exclude_user": list($titleTmp, $messageTmp) = CSocNetLog::InitGroupsTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_EXCLUDE_USER1"), GetMessage("SONET_C73_TITLE_EXCLUDE_USER1"), $arParams, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; case "exclude_group": list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_EXCLUDE_GROUP1"), GetMessage("SONET_C73_TITLE_EXCLUDE_GROUP1"), $arParams, $bCurrentUserIsAdmin, true); $arEvents["TITLE"] = $titleTmp; $arEvents["MESSAGE_FORMAT"] = $messageTmp; break; default: continue; break; } } $protocol = (CMain::IsHTTPS() ? "https://" : "http://"); $arEvents["MESSAGE_FORMAT"] = preg_replace("#(<a\\s[^>/]*?href\\s*=\\s*)(['\"])(.+?)(\\2)#i", "\\1\\2".$protocol.$arResult["SERVER_NAME"]."\\3\\4",$arEvents["MESSAGE_FORMAT"]); $arEvents["MESSAGE_FORMAT"] = preg_replace("#(<img\\s[^>/]*?src\\s*=\\s*)(['\"])(.+?)(\\2)#i", "\\1\\2".$protocol.$arResult["SERVER_NAME"]."\\3\\4",$arEvents["MESSAGE_FORMAT"]); $arTmpUser = array( "NAME" => $arEvents["~USER_NAME"], "LAST_NAME" => $arEvents["~USER_LAST_NAME"], "SECOND_NAME" => $arEvents["~USER_SECOND_NAME"], "LOGIN" => $arEvents["~USER_LOGIN"] ); $arEvents["LOG_DATE"] = date("r", MkDateTime($GLOBALS["DB"]->FormatDate($arEvents["LOG_DATE"], CLang::GetDateFormat("FULL"), "DD.MM.YYYY H:I:S"), "d.m.Y H:i:s")); $arEvents["URL"] = __RSSCheckServerName($arEvents["URL"], $arResult["SERVER_NAME"]); $arTmpEvent = array( "ID" => $arEvents["ID"], "LOG_DATE" => $arEvents["LOG_DATE"], "TITLE_FORMAT" => CSocNetLog::MakeTitle($arEvents["TITLE_TEMPLATE"], $arEvents["TITLE"], "", true), "MESSAGE_FORMAT" => htmlspecialcharsbx($arEvents["MESSAGE_FORMAT"]), "URL" => htmlspecialcharsbx($arEvents["URL"]), ); $arResult["Events"][] = $arTmpEvent; } $this->IncludeComponentTemplate(); $r = $APPLICATION->EndBufferContentMan(); echo $r; die(); } else { ShowError(GetMessage("SONET_LOG_RSS_NO_ENTITY")); CHTTP::SetStatus("404 Not Found"); } ?>