getRequest()->toArray(); if (($_REQUEST['skip_unescape'] ?? null) !== 'Y') { CUtil::decodeURIComponent(self::$request); CUtil::JSPostUnEscape(); } self::$calendar = $calendar; // Export calendar if ($action === 'export') { // We don't need to check access couse we will check security SIGN from the URL $sectId = (int)$_GET['sec_id']; if (($_GET['check'] ?? null) === 'Y') // Just for access check from calendar interface { $APPLICATION->RestartBuffer(); if (CCalendarSect::CheckSign($_GET['sign'], (int)$_GET['user'], $sectId > 0 ? $sectId : 'superposed_calendars')) { echo 'BEGIN:VCALENDAR'; } CMain::FinalActions(); die(); } if ($sectId > 0 && CCalendarSect::CheckAuthHash()) { // We don't need any warning in .ics file error_reporting(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR|E_PARSE); CCalendarSect::ReturnICal(array( 'sectId' => $sectId, 'userId' => (int)$_GET['user'], 'sign' => $_GET['sign'], 'type' => $_GET['type'], 'ownerId' => (int)$_GET['owner'] )); } else { $APPLICATION->RestartBuffer(); } } else { // Check the access $accessController = new TypeAccessController(CCalendar::GetUserId()); $typeModel = TypeModel::createFromXmlId(CCalendar::GetType()); $action = ActionDictionary::ACTION_TYPE_VIEW; if (!$accessController->check($action, $typeModel) || !check_bitrix_sessid()) { $APPLICATION->ThrowException(Loc::getMessage("EC_ACCESS_DENIED")); return false; } $APPLICATION->ShowAjaxHead(); $APPLICATION->RestartBuffer(); self::$reqId = (int)$_REQUEST['reqId']; switch ($action) { case 'set_meeting_status': self::SetStatus(); break; case 'get_planner': self::GetPlanner(); break; case 'update_planner': self::UpdatePlanner(); break; case 'get_destination_items': self::getDestinationItems(); break; } } if($ex = $APPLICATION->GetException()) { ShowError($ex->GetString()); } CMain::FinalActions(); die(); } public static function OutputJSRes($reqId = false, $res = false) { if ($res === false) { return; } if ($reqId === false) { $reqId = (int)($_REQUEST['reqId'] ?? null); } if (!$reqId) { return; } ?>