• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/controller/leftmenu.php
  • Класс: BitrixIntranetControllerLeftMenu
  • Вызов: LeftMenu::setPresetAction
public function setPresetAction()
{
	global $USER;

	if (
		!isset($_POST['preset'])
		|| !in_array($_POST['preset'], array('social', 'crm', 'tasks', 'sites'))
		|| !isset($_POST['mode'])
	)
	{
		$this->addError(new Error(Loc::getMessage('INTRANET_LEFT_MENU_PRESET_ERROR')));
		return null;
	}

	$res = [];

	if ($_POST['mode'] == 'global' && $this->isCurrentUserAdmin())
	{
		Option::set('intranet', 'left_menu_preset', $_POST['preset'], false, SITE_ID);

		$event = new Event(
			'intranet',
			'onAfterChangeLeftMenuPreset',
			[
				'SITE_ID' => SITE_ID,
				'VALUE' => $_POST['preset'],
			]
		);
		EventManager::getInstance()->send($event);
	}
	else
	{
		CUserOptions::SetOption('intranet', 'left_menu_preset_' . SITE_ID, $_POST['preset']);

		CUserOptions::DeleteOption('intranet', 'left_menu_first_page_' . SITE_ID);
		//	CUserOptions::DeleteOption('intranet', 'left_menu_self_items_'.$siteID);
		//	CUserOptions::DeleteOption('intranet', 'left_menu_standard_items_'.$siteID);
		CUserOptions::DeleteOption('intranet', $this->getItemsSortOptionName());
	}

	$firstPageUrl = SITE_DIR . 'stream/';
	switch ($_POST['preset'])
	{
		case 'tasks':
			$firstPageUrl = SITE_DIR . 'company/personal/user/'
				. ($_POST['mode'] == 'global' ? '#USER_ID#' : $USER->GetID()) . '/tasks/'
			;
			break;

		case 'crm':
			if (Loader::includeModule('crm'))
			{
				$firstPageUrl = BitrixCrmSettingsEntityViewSettings::getDefaultPageUrl();
			}

			break;

		case 'sites':
			$firstPageUrl = SITE_DIR . 'sites/';
			break;
	}

	if ($firstPageUrl)
	{
		if ($_POST['mode'] == 'global' && $this->isCurrentUserAdmin())
		{
			Option::set('intranet', 'left_menu_first_page', $firstPageUrl, false, SITE_ID);
		}
		else
		{
			CUserOptions::SetOption('intranet', 'left_menu_first_page_' . SITE_ID, $firstPageUrl);
		}

		$res['url'] = str_replace('#USER_ID#', $USER->GetID(), $firstPageUrl);
	}

	if($_POST['mode'] === 'global' && ModuleManager::isModuleInstalled('bitrix24'))
	{
		$_SESSION['B24_SHOW_DEMO_LICENSE_HINT'] = 1;
	}

	$showPresetPopup = Option::get('intranet', 'show_menu_preset_popup', 'N') == 'Y';
	if ($showPresetPopup)
	{
		Option::set('intranet', 'show_menu_preset_popup', 'N');
	}

	return $res;
}