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/rospirotorg.ru/bitrix/modules/socialnetwork/lib/component/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/socialnetwork/lib/component/workgroupform.php
<?php

namespace Bitrix\Socialnetwork\Component;

use Bitrix\Intranet\Internals\ThemeTable;
use Bitrix\Main\Config\Option;
use Bitrix\Main\Loader;
use Bitrix\Socialnetwork\UserToGroupTable;
use Bitrix\Intranet\Integration\Templates\Bitrix24\ThemePicker;

class WorkgroupForm extends \CBitrixComponent
{
	protected function prepareData(): array
	{
		$result = [
			'preset' => (!empty($_GET['preset']) ? $_GET['preset'] : false),
			'bVarsFromForm' => false,
			'templateEditMode' => 'N',
			'destinationContextOwner' => 'GROUP_INVITE_OWNER',
			'destinationContextModerators' => 'GROUP_INVITE_MODERATORS',
			'destinationContextUsers' => 'GROUP_INVITE',
			'isCurrentUserAdmin' => \CSocNetUser::isCurrentUserModuleAdmin(),
		];

		$this->processGroupProperties($result);
		$this->processParams($result);
		$this->processRequest($result);
		$this->getThemePickerData($result);

		return $result;
	}

	protected function processParams(array &$result = []): void
	{
		if (empty($this->arParams['TAB']))
		{
			return;
		}

		$result['TAB'] = strtolower($this->arParams['TAB']);
	}

	protected function processRequest(array &$result = []): void
	{
		$request = \Bitrix\Main\Context::getCurrent()->getRequest();

		$result['IS_IFRAME'] = ($request->get('IFRAME') === 'Y' || $this->arParams['IFRAME'] === 'Y');
		$result['IS_POPUP'] = ($request->get('POPUP') === 'Y');

		if (in_array($request->get('CALLBACK'), [ 'REFRESH', 'GROUP' ]))
		{
			$result['CALLBACK'] = $request->get('CALLBACK');
		}

		if (!empty($request->getPost('TAB')))
		{
			$result['TAB'] = $request->getPost('TAB');
		}
		elseif (!empty($request->get('tab')))
		{
			$result['TAB'] = $request->get('tab');
		}
	}

	protected function getThemePickerData(array &$result = []): void
	{
		global $USER;

		$groupId = (isset($this->arParams['GROUP_ID']) ? (int)$this->arParams['GROUP_ID'] : 0);

		if (
			(SITE_TEMPLATE_ID !== 'bitrix24' && SITE_TEMPLATE_ID !== 'air')
			|| !Loader::includeModule('intranet')
		)
		{
			return;
		}

		$result['showThemePicker'] = (
			$result['IS_IFRAME']
			&& (empty($result['TAB']) || $result['TAB'] === 'edit')
			&& ($this->arParams['THEME_ENTITY_TYPE'] ?? null) === 'SONET_GROUP'
		);

		$result['themePickerData'] = [];

		if (!$result['showThemePicker'])
		{
			return;
		}

		if ($groupId > 0)
		{
			$themePicker = new ThemePicker(SITE_TEMPLATE_ID, false, $USER->getId(), ThemePicker::ENTITY_TYPE_SONET_GROUP, $groupId);
			$themeId = $themePicker->getCurrentThemeId();
			$themeUserId = false;
			if ($themeId)
			{
				$res = ThemeTable::getList([
					'filter' => [
						'=ENTITY_TYPE' => $themePicker->getEntityType(),
						'ENTITY_ID' => $themePicker->getEntityId(),
						'=CONTEXT' => $themePicker->getContext(),
					],
					'select' => [ 'USER_ID' ],
				]);
				if (
					($themeFields = $res->fetch())
					&& (int)$themeFields['USER_ID'] > 0
				)
				{
					$themeUserId = (int)$themeFields['USER_ID'];
				}
			}
			$result['themePickerData'] = $themePicker->getTheme($themeId, $themeUserId);
		}
		elseif ($themePicker = new ThemePicker(SITE_TEMPLATE_ID))
		{
			$themesList = $themePicker->getPatternThemes();
			$result['themePickerData'] = $themesList ? $themesList[array_rand($themesList)] : null;
		}
	}

	protected function processGroupProperties(array &$result = []): void
	{
		global $USER_FIELD_MANAGER;

		$result['GROUP_PROPERTIES'] = $USER_FIELD_MANAGER->getUserFields('SONET_GROUP', 0, LANGUAGE_ID);

		foreach ($result['GROUP_PROPERTIES'] as $field => $userFieldFata)
		{
			if (
				!empty($userFieldFata['EDIT_IN_LIST'])
				&& $userFieldFata['EDIT_IN_LIST'] === 'N'
				&& (
					empty($userFieldFata['MANDATORY'])
					|| $userFieldFata['MANDATORY'] !== 'Y'
				)
			)
			{
				unset($result['GROUP_PROPERTIES'][$field]);
				continue;
			}

			$result['GROUP_PROPERTIES'][$field]['EDIT_FORM_LABEL'] = (
				(string)$userFieldFata['EDIT_FORM_LABEL'] !== ''
					? $userFieldFata['EDIT_FORM_LABEL']
					: $userFieldFata['FIELD_NAME']
			);
			$result['GROUP_PROPERTIES'][$field]['EDIT_FORM_LABEL'] = htmlspecialcharsEx($result['GROUP_PROPERTIES'][$field]['EDIT_FORM_LABEL']);
			$result['GROUP_PROPERTIES'][$field]['~EDIT_FORM_LABEL'] = $result['GROUP_PROPERTIES'][$field]['EDIT_FORM_LABEL'];
		}
	}

	public static function processWorkgroupData(&$groupId, &$groupPropertiesList = [], &$groupData = [], $tab = false): void
	{
		global $USER;

		$currentUserId = (int)$USER->getId();
		$currentAdmin = \CSocNetUser::isCurrentUserModuleAdmin();
		$groupFields = \CSocNetGroup::getById($groupId);

		$canUpdate = \Bitrix\Socialnetwork\Helper\Workgroup\Access::canUpdate([
			'groupId' => $groupId,
		]);

		$groupPerms = \Bitrix\Socialnetwork\Helper\Workgroup::getPermissions([
			'groupId' => $groupId,
		]);

		if (
			$groupFields
			&& (
				(
					$tab === 'edit'
					&& $canUpdate
				)
				|| (
					$tab === 'invite'
					&& (
						$currentAdmin
						|| $groupPerms['UserCanInitiate']
						|| $groupPerms['UserCanModifyGroup']
					)
				)
			)
		)
		{
			$groupData['NAME'] = $groupFields['NAME'];
			$groupData['DESCRIPTION'] = $groupFields["DESCRIPTION"];
			$groupData['IMAGE_ID_DEL'] = 'N';
			$groupData['SUBJECT_ID'] = $groupFields['SUBJECT_ID'];
			$groupData['VISIBLE'] = $groupFields['VISIBLE'];
			$groupData['OPENED'] = $groupFields['OPENED'];
			$groupData['CLOSED'] = $groupFields['CLOSED'];
			$groupData['PROJECT'] = ($groupFields['PROJECT'] === 'Y' ? 'Y' : 'N');
			$groupData['PROJECT_DATE_START'] = ($groupData['PROJECT'] === 'Y' ? $groupFields['PROJECT_DATE_START'] : false);
			$groupData['PROJECT_DATE_FINISH'] = ($groupData['PROJECT'] === 'Y' ? $groupFields['PROJECT_DATE_FINISH'] : false);
			$groupData['KEYWORDS'] = $groupFields['KEYWORDS'];
			$groupData['OWNER_ID'] = $groupFields['OWNER_ID'];
			$groupData['INITIATE_PERMS'] = $groupFields['INITIATE_PERMS'];
			$groupData['SPAM_PERMS'] = $groupFields['SPAM_PERMS'];
			$groupData['IMAGE_ID'] = $groupFields['IMAGE_ID'];
			$groupData['IMAGE_ID_FILE'] = \CFile::getFileArray($groupFields['IMAGE_ID']);
			$groupData['IMAGE_ID_IMG'] = '<img src="' . ($groupData['IMAGE_ID_FILE'] != false ? $groupData['IMAGE_ID_FILE']['SRC'] : '/bitrix/images/1.gif') . '" height="60" class="sonet-group-create-popup-image" id="sonet_group_create_popup_image" border="0">';
			$groupData['MODERATOR_IDS'] = [];
			$groupData['LANDING'] = ($groupFields['LANDING'] === 'Y' ? 'Y' : 'N');
			$groupData['SCRUM_OWNER_ID'] = ($groupFields['SCRUM_OWNER_ID'] ?: null);
			$groupData['SCRUM_MASTER_ID'] = ($groupFields['SCRUM_MASTER_ID'] ?: null);
			$groupData['SCRUM_SPRINT_DURATION'] = ($groupFields['SCRUM_SPRINT_DURATION'] ?: null);
			$groupData['SCRUM_TASK_RESPONSIBLE'] = ($groupFields['SCRUM_TASK_RESPONSIBLE'] ?: null);
			$groupData['AVATAR_TYPE'] = (string)($groupFields['AVATAR_TYPE'] ?? '');

			foreach (array_keys($groupPropertiesList) as $field)
			{
				if (!isset($groupFields[$field]))
				{
					continue;
				}

				$groupPropertiesList[$field]['VALUE'] = $groupFields['~' . $field];
				$groupPropertiesList[$field]['ENTITY_VALUE_ID'] = $groupFields['ID'];
			}

			$groupData['IS_EXTRANET_GROUP'] = (
				Loader::includeModule('extranet')
				&& \CExtranet::isExtranetSocNetGroup($groupId)
					? 'Y'
					: 'N'
			);

			$res = UserToGroupTable::getList([
				'filter' => [
					'=ROLE' => UserToGroupTable::ROLE_MODERATOR,
					'GROUP_ID' => $groupId,
				],
				'select' => [ 'USER_ID' ]
			]);
			while ($relation = $res->fetch())
			{
				$groupData['MODERATOR_IDS'][] = (int)$relation['USER_ID'];
			}
		}
		else
		{
			$groupData['VISIBLE'] = 'Y';
			$groupData['IS_EXTRANET_GROUP'] = 'N';
			$groupId = 0;
		}
	}

	public static function processWorkgroupFeatures($groupId, &$featuresList): void
	{
		$result = [];

		if ((int)$groupId > 0)
		{
			$res = \CSocNetFeatures::getList(
				[],
				[
					'ENTITY_ID' => $groupId,
					'ENTITY_TYPE' => SONET_ENTITY_GROUP,
				]
			);
			while ($featureFields = $res->GetNext())
			{
				$result[$featureFields['FEATURE']] = $featureFields;
			}
		}

		$allowedFeaturesList = \CSocNetAllowed::getAllowedFeatures();

		$sampleKeysList = [
			'tasks' => 1,
			'calendar' => 2,
			'files' => 3,
			'chat' => 4,
			'forum' => 5,
			'microblog' => 6,
			'blog' => 7,
			'photo' => 8,
			'group_lists' => 9,
			'wiki' => 10,
			'content_search' => 11,
			'marketplace' => 12,
		];

		uksort($allowedFeaturesList, static function($a, $b) use ($sampleKeysList) {

			$valA = ($sampleKeysList[$a] ?? 100);
			$valB = ($sampleKeysList[$b] ?? 100);

			if ($valA > $valB)
			{
				return 1;
			}

			if ($valA < $valB)
			{
				return -1;
			}

			return 0;
		});

		foreach ($allowedFeaturesList as $feature => $featureData)
		{
			if (
				!is_array($featureData['allowed'])
				|| !in_array(SONET_ENTITY_GROUP, $featureData['allowed'], true)
			)
			{
				continue;
			}

			if ((int)$groupId === 0)
			{
				$result[$feature]['ACTIVE'] = (
					$feature === 'chat'
						? \CUserOptions::getOption('socialnetwork', 'default_chat_create_default', 'Y')
						: Option::get('socialnetwork', 'default_' . $feature . '_create_default', 'Y', SITE_ID)
				);
			}

			$featuresList[$feature] = [
				'FeatureName' => (
					isset($result[$feature])
						? ($result[$feature]['FEATURE_NAME'] ?? '')
						: false
				),
				'Active' => (!isset($result[$feature]) || $result[$feature]['ACTIVE'] === 'Y')
			];
		}
	}

}

Youez - 2016 - github.com/yon3zu
LinuXploit