403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/cvetdv.ru/bitrix/components/bitrix/socialnetwork.features/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/components/bitrix/socialnetwork.features/component.php
<?php

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
{
	die();
}

/** @var CBitrixComponent $this */
/** @var array $arParams */
/** @var array $arResult */
/** @var string $componentPath */
/** @var string $componentName */
/** @var string $componentTemplate */
/** @global CDatabase $DB */
/** @global CUser $USER */
/** @global CMain $APPLICATION */
/** @global CCacheManager $CACHE_MANAGER */
/** @global CUserTypeManager $USER_FIELD_MANAGER */

use Bitrix\Main\Loader;
use Bitrix\Main\ModuleManager;
use Bitrix\Socialnetwork\UserToGroupTable;
use Bitrix\Main\Localization\Loc;

global $CACHE_MANAGER, $USER_FIELD_MANAGER;

if (!CModule::IncludeModule("socialnetwork"))
{
	ShowError(GetMessage("SONET_MODULE_NOT_INSTALL"));
	return;
}

$arResult["IS_IFRAME"] = (($_REQUEST["IFRAME"] ?? null) == "Y");

$arParams["GROUP_ID"] = intval($arParams["GROUP_ID"]);
$arParams["USER_ID"] = intval($arParams["USER_ID"]);
if ($arParams["USER_ID"] <= 0)
	$arParams["USER_ID"] = $USER->GetID();
$arParams["PAGE_ID"] = Trim($arParams["PAGE_ID"]);
if ($arParams["PAGE_ID"] == '')
	$arParams["PAGE_ID"] = "user_features";

$arParams["SET_NAV_CHAIN"] = ($arParams["SET_NAV_CHAIN"] == "N" ? "N" : "Y");

$arParams["PAGE_VAR"] = $arParams["PAGE_VAR"] ?? '';
$arParams["USER_VAR"] = $arParams["USER_VAR"] ?? '';
$arParams["GROUP_VAR"] = $arParams["GROUP_VAR"] ?? '';

if ($arParams["USER_VAR"] == '')
	$arParams["USER_VAR"] = "user_id";
if ($arParams["PAGE_VAR"] == '')
	$arParams["PAGE_VAR"] = "page";
if ($arParams["GROUP_VAR"] == '')
	$arParams["GROUP_VAR"] = "group_id";

$arParams["PATH_TO_USER"] = trim($arParams["PATH_TO_USER"]);
if ($arParams["PATH_TO_USER"] == '')
	$arParams["PATH_TO_USER"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#");

$arParams["PATH_TO_GROUP"] = trim($arParams["PATH_TO_GROUP"]);
if ($arParams["PATH_TO_GROUP"] == '')
	$arParams["PATH_TO_GROUP"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=group&".$arParams["GROUP_VAR"]."=#group_id#");

if (($arParams["NAME_TEMPLATE"] ?? null) == '')
	$arParams["NAME_TEMPLATE"] = CSite::GetNameFormat();
$bUseLogin = (($arParams['SHOW_LOGIN'] ?? null) != "N" ? true : false);

$arResult["FatalError"] = "";

$arResult["arSocNetFeaturesSettings"] = CSocNetAllowed::GetAllowedFeatures();

if (!$USER->IsAuthorized())
{
	$arResult["NEED_AUTH"] = "Y";
}
else
{
	$arResult['tasksLimitExceeded'] = (
		Loader::includeModule('tasks')
		&& Bitrix\Tasks\Util\Restriction\Bitrix24Restriction\Limit\TaskLimit::isLimitExceeded()
	);

	$isBitrix24 = ModuleManager::isModuleInstalled('tasks') && Loader::includeModule('bitrix24');
	$arResult['featuresPageLimited'] = $arResult['tasksLimitExceeded'] && (!$isBitrix24 || !\Bitrix\Bitrix24\Feature::isFeatureEnabled('socialnetwork_projects_access_permissions'));

	if (
		$arParams["PAGE_ID"] == "user_features"
		&& $arParams["USER_ID"] <= 0
	)
	{
		$arResult["FatalError"] = GetMessage("SONET_C3_NO_USER_ID").".";
	}
	elseif (
		$arParams["PAGE_ID"] == "group_features"
		&& $arParams["GROUP_ID"] <= 0
	)
	{
		$arResult["FatalError"] = GetMessage("SONET_C3_NO_GROUP_ID").".";
	}

	if ($arResult["FatalError"] == '')
	{
		$tasksLimited = $arResult['tasksLimitExceeded'] && (!$isBitrix24 || !\Bitrix\Bitrix24\Feature::isFeatureEnabled('socialnetwork_project_tasks_perms'));

		if ($arParams["PAGE_ID"] === 'group_features')
		{
			$arGroup = CSocNetGroup::GetByID($arParams["GROUP_ID"]);

			if (!\Bitrix\Socialnetwork\Helper\Workgroup::getEditFeaturesAvailability())
			{
				$arResult["FatalError"] = GetMessage("SONET_C3_PERMS").".";
			}
			elseif ($arGroup)
			{
				$group = \Bitrix\Socialnetwork\Item\Workgroup::getById($arParams['GROUP_ID']);
				$arGroup['isScrumProject'] = ($group && $group->isScrumProject());

				$arResult["CurrentUserPerms"] = \Bitrix\Socialnetwork\Helper\Workgroup::getPermissions([
					'groupId' => $arParams['GROUP_ID'],
				]);
				$arResult['InitiatePermsList'] = \Bitrix\Socialnetwork\Item\Workgroup::getInitiatePermOptionsList([
					'project' => ($arGroup['PROJECT'] === 'Y'),
					'scrum' => $arGroup['isScrumProject'],
				]);

				$arResult['SpamPermsList'] = \Bitrix\Socialnetwork\Item\Workgroup::getSpamPermOptionsList();

				if ($arResult["CurrentUserPerms"]["UserCanModifyGroup"])
				{
					$arResult["Group"] = $arGroup;
					$arResult["Features"] = array();

					$arFeaturesTmp = array();
					$dbResultTmp = CSocNetFeatures::GetList(
						array(),
						array("ENTITY_ID" => $arResult["Group"]["ID"], "ENTITY_TYPE" => SONET_ENTITY_GROUP)
					);
					while ($arResultTmp = $dbResultTmp->GetNext())
					{
						$arFeaturesTmp[$arResultTmp["FEATURE"]] = $arResultTmp;
					}

					foreach ($arResult["arSocNetFeaturesSettings"] as $feature => $arFeature)
					{
						if (
							!is_array($arFeature["allowed"])
							|| !in_array(SONET_ENTITY_GROUP, $arFeature["allowed"])
						)
						{
							continue;
						}

						$arResult["Features"][$feature] = array(
							"FeatureName" => $arFeaturesTmp[$feature]["FEATURE_NAME"] ?? null,
							"Active" => (array_key_exists($feature, $arFeaturesTmp) ? ($arFeaturesTmp[$feature]["ACTIVE"] == "Y") : true),
							"Operations" => array(),
						);

						if (
							$feature == 'calendar'
							&& (
								!IsModuleInstalled("intranet")
								|| COption::GetOptionString("intranet", "calendar_2", "N") == "Y"
							)
							&& CModule::IncludeModule("calendar")
						)
						{
							$arResult["Features"][$feature]['note'] = GetMessage('SONET_CALENDAR_ACCESS_NOTE');
							continue;
						}

						if ($feature == 'files')
						{
							$arResult["Features"][$feature]['note'] = GetMessage("SONET_WEBDAV_RIGHS_NOTE2");
							continue;
						}

						if ($feature === 'tasks')
						{
							if ($arGroup['isScrumProject'])
							{
								$arResult["Features"][$feature]['note'] = Loc::getMessage('SONET_TASKS_SCRUM_ACCESS_NOTE');
								continue;
							}

							if ($tasksLimited)
							{
								$arResult["Features"][$feature]['limit'] = 'limit_tasks_access_permissions';
							}

						}

						if (
							$feature == "blog"
							&& $arParams["PAGE_ID"] != "group_features"
						)
						{
							$arResult["Features"][$feature]["Active"] = true;
						}


						foreach ($arFeature["operations"] as $op => $arOp)
						{
							$arResult["Features"][$feature]["Operations"][$op] = CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_GROUP, $arResult["Group"]["ID"], $feature, $op);
						}
					}
				}
				else
				{
					$arResult["FatalError"] = GetMessage("SONET_C3_PERMS").".";
				}
			}
			else
			{
				$arResult["FatalError"] = GetMessage("SONET_C3_NO_GROUP").".";
			}
		}
		else
		{
			$dbUser = CUser::GetByID($arParams["USER_ID"]);
			$arResult["User"] = $dbUser->GetNext();

			if (is_array($arResult["User"]))
			{
				$arResult["User"]["NAME_FORMATTED"] = CUser::FormatName($arParams['NAME_TEMPLATE'], $arResult['User'], $bUseLogin);

				CSocNetUserPerms::InitUserPerms($USER->GetID(), $arResult["User"]["ID"], CSocNetUser::IsCurrentUserModuleAdmin());

				$arResult["CurrentUserPerms"] = CSocNetUserPerms::InitUserPerms($USER->GetID(), $arResult["User"]["ID"], CSocNetUser::IsCurrentUserModuleAdmin());
				if ($arResult["CurrentUserPerms"]["Operations"]["modifyuser"])
				{
					$arResult["Features"] = array();

					$arFeaturesTmp = array();
					$dbResultTmp = CSocNetFeatures::GetList(
						array(),
						array("ENTITY_ID" => $arResult["User"]["ID"], "ENTITY_TYPE" => SONET_ENTITY_USER)
					);
					while ($arResultTmp = $dbResultTmp->GetNext())
						$arFeaturesTmp[$arResultTmp["FEATURE"]] = $arResultTmp;

					foreach ($arResult["arSocNetFeaturesSettings"] as $feature => $arFeature)
					{
						if (!is_array($arFeature["allowed"]) || !in_array(SONET_ENTITY_USER, $arFeature["allowed"]))
							continue;

						$arResult["Features"][$feature] = array(
							"FeatureName" => $arFeaturesTmp[$feature]["FEATURE_NAME"],
							"Active" => (array_key_exists($feature, $arFeaturesTmp) ? ($arFeaturesTmp[$feature]["ACTIVE"] == "Y") : true),
							"Operations" => array(),
						);

						if ($feature == 'files')
						{
							$arResult["Features"][$feature]['note'] = GetMessage("SONET_WEBDAV_RIGHS_NOTE2");
							continue;
						}

						if (
							$feature == 'calendar'
							&& (
								!IsModuleInstalled("intranet")
								|| COption::GetOptionString("intranet", "calendar_2", "N") == "Y"
							)
							&& CModule::IncludeModule("calendar"))
						{
							$arResult["Features"][$feature]['note'] = GetMessage('SONET_CALENDAR_ACCESS_NOTE');
							continue;
						}

						if($feature == "blog" && $arParams["PAGE_ID"] != "group_features")
							$arResult["Features"][$feature]["Active"] = true;

						if (is_array($arFeature["operations"]))
							foreach ($arFeature["operations"] as $op => $arOp)
							{
								if(!($feature == "blog" && !array_key_exists(SONET_ENTITY_USER, $arOp)))
									$arResult["Features"][$feature]["Operations"][$op] = CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_USER, $arResult["User"]["ID"], $feature, $op);
							}
					}
				}
				else
					$arResult["FatalError"] = GetMessage("SONET_C3_PERMS").".";
			}
			else
				$arResult["FatalError"] = GetMessage("SONET_P_USER_NO_USER").".";
		}
	}

	if ($arResult["FatalError"] == '')
	{
		$arResult["Urls"]["User"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arParams["USER_ID"]));
		$arResult["Urls"]["Group"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arParams["GROUP_ID"]));

		$strTitleFormatted = "";

		if (
			$arParams["PAGE_ID"] != "group_features"
			&& (
				$arParams["SET_TITLE"] == "Y"
				|| $arParams["SET_NAV_CHAIN"] != "N")
		)
		{
			$arParams["TITLE_NAME_TEMPLATE"] = str_replace(
				array("#NOBR#", "#/NOBR#"),
				array("", ""),
				$arParams["NAME_TEMPLATE"]
			);

			$arTmpUser = array(
				'NAME' => $arResult["User"]["~NAME"],
				'LAST_NAME' => $arResult["User"]["~LAST_NAME"],
				'SECOND_NAME' => $arResult["User"]["~SECOND_NAME"],
				'LOGIN' => $arResult["User"]["~LOGIN"],
			);
			$strTitleFormatted = CUser::FormatName($arParams['TITLE_NAME_TEMPLATE'], $arTmpUser, $bUseLogin);
		}
		elseif($arParams["PAGE_ID"] == "group_features")
		{
			$strTitleFormatted = $arResult["Group"]["NAME"];
		}

		if ($arParams["PAGE_ID"] === "group_features")
		{
			if ($arResult['Group']['isScrumProject'])
			{
				$pageTitle = Loc::getMessage('SONET_C3_GROUP_SETTINGS_SCRUM');
			}
			elseif ($arResult['Group']['PROJECT'] === 'Y')
			{
				$pageTitle = Loc::getMessage('SONET_C3_GROUP_SETTINGS_PROJECT');
			}
			else
			{
				$pageTitle = Loc::getMessage('SONET_C3_GROUP_SETTINGS');
			}
		}
		else
		{
			$pageTitle = Loc::getMessage('SONET_C3_USER_SETTINGS');
		}

		if ($arParams["SET_TITLE"] === "Y")
		{
			if ($arResult['IS_IFRAME'])
			{
				$APPLICATION->SetTitle($pageTitle);
				$APPLICATION->SetPageProperty("PageSubtitle", $strTitleFormatted);
			}
			else
			{
				$APPLICATION->SetTitle($strTitleFormatted.": ".$pageTitle);
			}
		}

		if ($arParams["SET_NAV_CHAIN"] != "N")
		{
			$APPLICATION->AddChainItem($strTitleFormatted, ($arParams["PAGE_ID"] == "group_features" ? $arResult["Urls"]["Group"] : $arResult["Urls"]["User"]));
			$APPLICATION->AddChainItem($pageTitle);
		}

		$arResult["ShowForm"] = "Input";

		if (
			$_SERVER["REQUEST_METHOD"] == "POST"
			&& !empty($_POST["save"])
			&& check_bitrix_sessid()
		)
		{
			$errorMessage = "";

			if ($arParams['PAGE_ID'] === "group_features")
			{
				$updateFields = [];

				if (
					(string) ($_POST['GROUP_SPAM_PERMS'] ?? null) !== ''
					&& in_array((string)$_POST['GROUP_SPAM_PERMS'], array_merge(UserToGroupTable::getRolesMember(), [ SONET_ROLES_ALL ]), true)
				)
				{
					$updateFields['SPAM_PERMS'] = (string)$_POST['GROUP_SPAM_PERMS'];
				}

				if (
					(string)$_POST['GROUP_INITIATE_PERMS'] !== ''
					&& in_array($_POST['GROUP_INITIATE_PERMS'], UserToGroupTable::getRolesMember())
				)
				{
					$updateFields['INITIATE_PERMS'] = $_POST['GROUP_INITIATE_PERMS'];
				}

				if (!empty($updateFields))
				{
					$updateFields['=DATE_UPDATE'] = \CDatabase::CurrentTimeFunction();
					CSocNetGroup::update($arResult['Group']['ID'], $updateFields);
				}
			}

			foreach ($arResult["Features"] as $feature => $arFeature)
			{
				if (
					$feature == "blog"
					&& $arParams["PAGE_ID"] != "group_features"
				)
				{
					$_REQUEST["blog_active"] = "Y";
				}

				if (
					$feature === 'tasks'
					&& (
						$tasksLimited
						|| (
							isset($arGroup)
							&& $arGroup['isScrumProject']
						)
					)
				)
				{
					continue;
				}

				$idTmp = CSocNetFeatures::setFeature(
					($arParams["PAGE_ID"] == "group_features" ? SONET_ENTITY_GROUP : SONET_ENTITY_USER),
					($arParams["PAGE_ID"] == "group_features" ? $arResult["Group"]["ID"] : $arResult["User"]["ID"]),
					$feature,
					(($_REQUEST[$feature."_active"] ?? null) == "Y"),
					(($_REQUEST[$feature."_name"] ?? '') <> '' ? $_REQUEST[$feature."_name"] : false)
				);

				if (
					$idTmp
					&& ($_REQUEST[$feature."_active"] ?? null) == "Y"
					&& (
						!array_key_exists("hide_operations_settings", $arResult["arSocNetFeaturesSettings"][$feature])
						|| !$arResult["arSocNetFeaturesSettings"][$feature]["hide_operations_settings"]
					)
				)
				{
					foreach ($arFeature["Operations"] as $operation => $perm)
					{
						if (
							!array_key_exists("restricted", $arResult["arSocNetFeaturesSettings"][$feature]["operations"][$operation])
							|| !in_array($key ?? null, $arResult["arSocNetFeaturesSettings"][$feature]["operations"][$operation]["restricted"][($arParams["PAGE_ID"] == "group_features" ? SONET_ENTITY_GROUP : SONET_ENTITY_USER)])
						)
						{
							$id1Tmp = CSocNetFeaturesPerms::SetPerm(
								$idTmp,
								$operation,
								$_REQUEST[$feature."_".$operation."_perm"]
							);
							if (!$id1Tmp && $e = $APPLICATION->GetException())
								$errorMessage .= $e->GetString();
						}
					}
				}
				elseif ($e = $APPLICATION->GetException())
				{
					$errorMessage .= $e->GetString();
				}
			}

			if (isset($_REQUEST["ajax_request"]) && $_REQUEST["ajax_request"] == "Y")
			{
				$APPLICATION->RestartBuffer();
				echo CUtil::PhpToJsObject(array(
					'MESSAGE' => ($errorMessage <> '' ? 'ERROR' : 'SUCCESS'),
					'ERROR_MESSAGE' => ($errorMessage <> '' ? $errorMessage : ''),
					'URL' => (
						$errorMessage <> ''
							? ''
							: (
								$arParams["PAGE_ID"] == "group_features"
									? $arResult["Urls"]["Group"]
									: $arResult["Urls"]["User"]
							)
					)
				));
				require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
				die();
			}
			else
			{
				if ($errorMessage <> '')
				{
					$arResult["ErrorMessage"] = $errorMessage;
				}
				else
				{
					if (!empty($_REQUEST['backurl']))
					{
						LocalRedirect($_REQUEST['backurl']);
					}
					else
					{
						if ($arParams["PAGE_ID"] == "group_features")
						{
							LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arParams["GROUP_ID"])));
						}
						else
						{
							LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arParams["USER_ID"])));
						}
					}
				}
			}
		}

		if ($arResult["ShowForm"] === "Input")
		{
			if ($arParams['PAGE_ID'] === "group_features")
			{
				$arResult['ENTITY_TYPE'] = SONET_ENTITY_GROUP;

				$ownerValue = Loc::getMessage('SONET_C3_PVG_OWNER');
				$moderatorsValue = Loc::getMessage('SONET_C3_PVG_MOD');
				$userValue = Loc::getMessage('SONET_C3_PVG_USER');

				$suffix = '';

				if ($arResult['Group']['isScrumProject'])
				{
					$ownerValue = Loc::getMessage('SONET_C3_PVG_OWNER_SCRUM2');
					$moderatorsValue = Loc::getMessage('SONET_C3_PVG_MOD_SCRUM2');
					$userValue = Loc::getMessage('SONET_C3_PVG_USER_SCRUM');
				}
				elseif ($arResult['Group']['PROJECT'] === 'Y')
				{
					$ownerValue = Loc::getMessage('SONET_C3_PVG_OWNER_PROJECT');
					$moderatorsValue = Loc::getMessage('SONET_C3_PVG_MOD_PROJECT');
					$userValue = Loc::getMessage('SONET_C3_PVG_USER_PROJECT');
				}


				$arResult['PermsVar'] = [
					UserToGroupTable::ROLE_OWNER => $ownerValue,
					UserToGroupTable::ROLE_MODERATOR => $moderatorsValue,
					UserToGroupTable::ROLE_USER => $userValue,
					SONET_ROLES_AUTHORIZED => Loc::getMessage('SONET_C3_PVG_AUTHORIZED')
				];

				if (!ModuleManager::isModuleInstalled('bitrix24'))
				{
					$arResult['PermsVar'][SONET_ROLES_ALL] = Loc::getMessage('SONET_C3_PVG_ALL');
				}
			}
			else
			{
				$arResult["ENTITY_TYPE"] = SONET_ENTITY_USER;
				$arResult["PermsVar"] = array(
					SONET_RELATIONS_TYPE_NONE => GetMessage("SONET_C3_PVU_NONE")
				);
				if (CSocNetUser::IsFriendsAllowed())
				{
					$arResult["PermsVar"][SONET_RELATIONS_TYPE_FRIENDS] = GetMessage("SONET_C3_PVU_FR");
				}
				$arResult["PermsVar"][SONET_RELATIONS_TYPE_AUTHORIZED] = GetMessage("SONET_C3_PVU_AUTHORIZED");
				if (!ModuleManager::isModuleInstalled('bitrix24'))
				{
					$arResult["PermsVar"][SONET_RELATIONS_TYPE_ALL] = GetMessage("SONET_C3_PVU_ALL");
				}
			}
		}
	}
}

$this->IncludeComponentTemplate();

Youez - 2016 - github.com/yon3zu
LinuXploit