• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/helper/workgroup.php
  • Класс: Bitrix\Socialnetwork\Helper\Workgroup
  • Вызов: Workgroup::getTypes
static function getTypes($params = []): array
{
	static $intranetInstalled = null;
	static $extranetInstalled = null;
	static $landingInstalled = null;

	if ($intranetInstalled === null)
	{
		$intranetInstalled = ModuleManager::isModuleInstalled('intranet');
	}

	if ($extranetInstalled === null)
	{
		$extranetInstalled = static::isExtranetInstalled();
	}

	if ($landingInstalled === null)
	{
		$landingInstalled = ModuleManager::isModuleInstalled('landing');
	}

	$currentExtranetSite = (
		!empty($params)
		&& isset($params['currentExtranetSite'])
		&& $params['currentExtranetSite']
	);

	$categoryList = [];
	if (!empty($params['category']) && is_array($params['category']))
	{
		$categoryList = $params['category'];
	}

	$entityOptions = [];
	if (!empty($params['entityOptions']) && is_array($params['entityOptions']))
	{
		$entityOptions = $params['entityOptions'];
	}

	$fullMode = (
		!empty($params)
		&& isset($params['fullMode'])
		&& $params['fullMode']
	);

	$result = [];
	$sort = 0;

	if (
		$intranetInstalled
		&& (
			empty($categoryList)
			|| in_array('projects', $categoryList, true)
		)
	)
	{
		if (!$currentExtranetSite)
		{
			if (self::checkEntityOption([ 'project', 'open', '!extranet', '!landing' ], $entityOptions))
			{
				$result['project-open'] = array(
					'SORT' => $sort += 10,
					'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_OPEN'),
					'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_OPEN_DESC'),
					'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_OPEN_DESC2'),
					'VISIBLE' => 'Y',
					'OPENED' => 'Y',
					'PROJECT' => 'Y',
					'SCRUM_PROJECT' => 'N',
					'EXTERNAL' => 'N',
					'TILE_CLASS' => 'social-group-tile-item-cover-open social-group-tile-item-icon-project-open'
				);
			}

			if (self::checkEntityOption([ 'project', '!open', '!extranet', '!landing' ], $entityOptions))
			{
				$result['project-closed'] = array(
					'SORT' => $sort += 10,
					'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED'),
					'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED_DESC'),
					'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED_DESC'),
					'VISIBLE' => 'N',
					'OPENED' => 'N',
					'PROJECT' => 'Y',
					'SCRUM_PROJECT' => 'N',
					'EXTERNAL' => 'N',
					'TILE_CLASS' => 'social-group-tile-item-cover-close social-group-tile-item-icon-project-close'
				);
			}

			if (self::checkEntityOption([ 'project', 'scrum', '!extranet', '!landing' ], $entityOptions))
			{
				$result['project-scrum'] = [
					'SORT' => $sort += 10,
					'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM2'),
					'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM_DESC2'),
					'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM_DESC2'),
					'VISIBLE' => 'N',
					'OPENED' => 'N',
					'PROJECT' => 'Y',
					'SCRUM_PROJECT' => 'Y',
					'EXTERNAL' => 'N',
					'TILE_CLASS' => 'social-group-tile-item-cover-scrum social-group-tile-item-icon-project-scrum'
				];
			}

			if (
				$fullMode
				&& self::checkEntityOption([ 'project', '!open', '!extranet', '!landing' ], $entityOptions)
			)
			{
				$result['project-closed-visible'] = array(
					'SORT' => $sort += 10,
					'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED_VISIBLE'),
					'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED_VISIBLE_DESC'),
					'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED_VISIBLE_DESC'),
					'VISIBLE' => 'Y',
					'OPENED' => 'N',
					'PROJECT' => 'Y',
					'SCRUM_PROJECT' => 'N',
					'EXTERNAL' => 'N',
					'TILE_CLASS' => ''
				);
			}
		}

		if (
			$extranetInstalled
			&& self::checkEntityOption([ 'project', 'scrum', 'extranet', '!landing' ], $entityOptions)
		)
		{
			$result['project-scrum-extranet'] = [
				'SORT' => $sort += 10,
				'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM_EXTERNAL'),
				'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM_EXTERNAL_DESC'),
				'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM_EXTERNAL_DESC'),
				'VISIBLE' => 'N',
				'OPENED' => 'N',
				'PROJECT' => 'Y',
				'SCRUM_PROJECT' => 'Y',
				'EXTERNAL' => 'Y',
				'TILE_CLASS' => 'social-group-tile-item-cover-scrum social-group-tile-item-icon-project-scrum'
			];
		}

		if (
			$extranetInstalled
			&& self::checkEntityOption([ 'project', 'extranet', '!landing' ], $entityOptions)
		)
		{
			$result['project-external'] = array(
				'SORT' => $sort += 10,
				'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_EXTERNAL'),
				'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_EXTERNAL_DESC'),
				'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_EXTERNAL_DESC'),
				'VISIBLE' => 'N',
				'OPENED' => 'N',
				'PROJECT' => 'Y',
				'SCRUM_PROJECT' => 'N',
				'EXTERNAL' => 'Y',
				'TILE_CLASS' => 'social-group-tile-item-cover-outer social-group-tile-item-icon-project-outer'
			);
		}
	}

	if (
		!$currentExtranetSite
		&& (
			empty($categoryList)
			|| in_array('groups', $categoryList)
		)
	)
	{
		if (self::checkEntityOption([ '!project', 'open', '!extranet', '!landing' ], $entityOptions))
		{
			$result['group-open'] = array(
				'SORT' => $sort += 10,
				'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_OPEN'),
				'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_OPEN_DESC'),
				'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_OPEN_DESC2'),
				'VISIBLE' => 'Y',
				'OPENED' => 'Y',
				'PROJECT' => 'N',
				'SCRUM_PROJECT' => 'N',
				'EXTERNAL' => 'N',
				'TILE_CLASS' => 'social-group-tile-item-cover-open social-group-tile-item-icon-group-open'
			);
		}

		if (self::checkEntityOption([ '!project', '!open', '!extranet', '!landing' ], $entityOptions))
		{
			$result['group-closed'] = array(
				'SORT' => $sort += 10,
				'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED'),
				'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED_DESC'),
				'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED_DESC'),
				'VISIBLE' => 'N',
				'OPENED' => 'N',
				'PROJECT' => 'N',
				'SCRUM_PROJECT' => 'N',
				'EXTERNAL' => 'N',
				'TILE_CLASS' => 'social-group-tile-item-cover-close social-group-tile-item-icon-group-close'
			);
			if ($fullMode)
			{
				$result['group-closed-visible'] = array(
					'SORT' => $sort = $sort + 10,
					'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED_VISIBLE'),
					'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED_VISIBLE_DESC'),
					'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED_VISIBLE_DESC'),
					'VISIBLE' => 'Y',
					'OPENED' => 'N',
					'PROJECT' => 'N',
					'SCRUM_PROJECT' => 'N',
					'EXTERNAL' => 'N',
					'TILE_CLASS' => ''
				);
			}
		}
	}

	if (
		$extranetInstalled
		&& self::checkEntityOption([ '!project', 'extranet', '!landing' ], $entityOptions)
	)
	{
		$result['group-external'] = array(
			'SORT' => $sort += 10,
			'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_EXTERNAL'),
			'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_EXTERNAL_DESC'),
			'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_EXTERNAL_DESC'),
			'VISIBLE' => 'N',
			'OPENED' => 'N',
			'PROJECT' => 'N',
			'SCRUM_PROJECT' => 'N',
			'EXTERNAL' => 'Y',
			'TILE_CLASS' => 'social-group-tile-item-cover-outer social-group-tile-item-icon-group-outer'
		);
	}

	if (
		$landingInstalled
		&& self::checkEntityOption([ '!project', 'landing', '!extranet' ], $entityOptions)
	)
	{
		$result['group-landing'] = array(
			'SORT' => $sort += 10,
			'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_LANDING'),
			'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_LANDING_DESC'),
			'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_LANDING_DESC'),
			'VISIBLE' => 'N',
			'OPENED' => 'N',
			'PROJECT' => 'N',
			'SCRUM_PROJECT' => 'N',
			'EXTERNAL' => 'N',
			'LANDING' => 'Y',
			'TILE_CLASS' => 'social-group-tile-item-cover-public social-group-tile-item-icon-group-public'
		);
	}

	return $result;
}