File manager - Edit - /home/web/vm-3fadc827.na4u.ru/www/bitrix/modules/calendar/classes/general/calendar_planner.php
Back
<? use Bitrix\Calendar\Rooms; use \Bitrix\Calendar\Integration\Bitrix24Manager; class CCalendarPlanner { public static function Init($config = [], $initialParams = false) { self::InitJsCore($config, $initialParams); } public static function InitJsCore($config = [], $initialParams) { global $APPLICATION; \Bitrix\Main\UI\Extension::load(['ajax', 'window', 'popup', 'access', 'date', 'viewer', 'socnetlogdest']); \Bitrix\Main\UI\Extension::load(['calendar.planner']); // Config if (!$config['id']) $config['id'] = (isset($config['id']) && $config['id'] <> '') ? $config['id'] : 'bx_calendar_planner'.mb_substr(uniqid(mt_rand(), true), 0, 4); $APPLICATION->AddHeadScript('/bitrix/js/calendar/planner.js'); $APPLICATION->SetAdditionalCSS("/bitrix/js/calendar/planner.css"); $mess_lang = \Bitrix\Main\Localization\Loc::loadLanguageFile(__FILE__); ?> <div id="<?= htmlspecialcharsbx($config['id'])?>" class="calendar-planner-wrapper"></div> <script type="text/javascript"> BX.namespace('BX.Calendar'); if(typeof BX.Calendar.PlannerManager === 'undefined') { BX.Calendar.PlannerManager = { planners: {}, Get: function(id) { return BX.Calendar.PlannerManager.planners[id] || false; }, Init: function(id, config, initialParams) { if (window.CalendarPlanner) { BX.Calendar.PlannerManager.planners[id] = new window.CalendarPlanner(config, initialParams); //BX.Calendar.PlannerManager.planners[id] = new BX.Calendar.Planner(config, initialParams); } } } } BX.message(<?=CUtil::PhpToJSObject($mess_lang, false);?>); BX.ready(function() { BX.Calendar.PlannerManager.Init( '<?= CUtil::JSEscape($config['id'])?>', <?=\Bitrix\Main\Web\Json::encode($config, false);?>, <?=\Bitrix\Main\Web\Json::encode($initialParams);?> ); }); </script> <? } public static function prepareData($params = []) { $curEventId = (int)$params['entry_id']; $curUserId = (int)$params['user_id']; $hostUserId = (int)$params['host_id']; $isPlannerFeatureEnabled = Bitrix24Manager::isPlannerFeatureEnabled(); $skipEntryList = (isset($params['skipEntryList']) && is_array($params['skipEntryList'])) ? $params['skipEntryList'] : []; $resourceIdList = []; $userIds = []; $users = []; $result = [ 'users' => [], 'entries' => [], 'accessibility' => [] ]; if (isset($params['codes']) && is_array($params['codes'])) { $params['codes'] = array_unique($params['codes']); $users = CCalendar::GetDestinationUsers($params['codes'], true); } $prevUsersId = (isset($params['prevUserList']) && is_array($params['prevUserList'])) ? array_unique(array_map('intval', $params['prevUserList'])) : []; if (!empty($users)) { foreach($users as $user) { if (!in_array((int)$user['USER_ID'], $prevUsersId)) { $userIds[] = (int)$user['USER_ID']; } $status = ($hostUserId && $hostUserId === (int)$user['USER_ID'] || !$hostUserId && $curUserId == $user['USER_ID']) ? 'h' : ''; $userSettings = \Bitrix\Calendar\UserSettings::get($user['USER_ID']); $result['entries'][] = array( 'type' => 'user', 'id' => $user['USER_ID'], 'name' => CCalendar::GetUserName($user), 'status' => $status, 'url' => CCalendar::GetUserUrl($user['USER_ID']), 'avatar' => CCalendar::GetUserAvatarSrc($user), 'strictStatus' => $userSettings['denyBusyInvitation'], 'emailUser' => $user['EXTERNAL_AUTH_ID'] === 'email' ); } } elseif(isset($params['entries']) && is_array($params['entries'])) { foreach($params['entries'] as $userId) { $userIds[] = (int)$userId; } } if (isset($params['resources']) && is_array($params['resources'])) { foreach($params['resources'] as $resource) { $resourceId = intval($resource['id']); $resourceIdList[] = $resourceId; $resource['type'] = preg_replace("/[^a-zA-Z0-9_]/i", "", $resource['type']); $result['entries'][] = array( 'type' => $resource['type'], 'id' => $resourceId, 'name' => $resource['name'] ); $result['accessibility'][$resourceId] = []; } } $from = $params['date_from']; $to = $params['date_to']; if ($isPlannerFeatureEnabled) { $accessibility = CCalendar::GetAccessibilityForUsers( [ 'users' => $userIds, 'from' => $from, // date or datetime in UTC 'to' => $to, // date or datetime in UTC 'curEventId' => $curEventId, 'getFromHR' => true, 'checkPermissions' => false ] ); foreach ($accessibility as $userId => $entries) { if (empty($entries)) { continue; } $result['accessibility'][$userId] = []; foreach ($entries as $entry) { if (in_array($entry['ID'], $skipEntryList)) { continue; } $dateFrom = $entry['DATE_FROM']; $dateTo = $entry['DATE_TO']; if ($entry['DT_SKIP_TIME'] !== "Y") { $dateFrom = CCalendar::Date( CCalendar::Timestamp($entry['DATE_FROM']) - $entry['~USER_OFFSET_FROM'] ); $dateTo = CCalendar::Date( CCalendar::Timestamp($entry['DATE_TO']) - $entry['~USER_OFFSET_TO'] ); } $result['accessibility'][$userId][] = [ 'id' => $entry['ID'], 'name' => $entry['NAME'], 'dateFrom' => $dateFrom, 'dateTo' => $dateTo, 'type' => $entry['FROM_HR'] ? 'hr' : 'event' ]; } } } if (isset($params['location'])) { $location = \Bitrix\Calendar\Rooms\Util::parseLocation($params['location']); $entryLocation = \Bitrix\Calendar\Rooms\Util::parseLocation($params['entryLocation']); $roomEventId = $entryLocation['room_event_id']; if ($roomEventId && !in_array($roomEventId, $skipEntryList)) { $skipEntryList[] = $roomEventId; } if ($location['mrid']) { $mrid = 'MR_' . $location['mrid']; $entry = [ 'type' => 'room', 'id' => $mrid, 'name' => 'meeting room' ]; $roomList = Rooms\IBlockMeetingRoom::getMeetingRoomList(); foreach ($roomList as $room) { if ($room['ID'] == $location['mrid']) { $entry['name'] = $room['NAME']; $entry['url'] = $room['URL']; break; } } $result['entries'][] = $entry; $result['accessibility'][$mrid] = []; if ($isPlannerFeatureEnabled) { $meetingRoomRes = Rooms\IBlockMeetingRoom::getAccessibilityForMeetingRoom([ 'allowReserveMeeting' => true, 'id' => $location['mrid'], 'from' => $from, 'to' => $to, 'curEventId' => $roomEventId ]); foreach ($meetingRoomRes as $entry) { if (!in_array($entry['ID'], $skipEntryList)) { $result['accessibility'][$mrid][] = [ 'id' => $entry['ID'], 'dateFrom' => $entry['DT_FROM'], 'dateTo' => $entry['DT_TO'] ]; } } } } elseif ($location['room_id']) { $roomId = 'room_' . $location['room_id']; $entry = [ 'type' => 'room', 'id' => $roomId, 'roomId' => $location['room_id'], 'name' => 'meeting room' ]; $sectionList = Rooms\Manager::getRoomsList(); foreach($sectionList as $room) { if ($room['ID'] == $location['room_id']) { $entry['name'] = $room['NAME']; } } $result['entries'][] = $entry; $result['accessibility'][$roomId] = []; if ($isPlannerFeatureEnabled) { $meetingRoomRes = Rooms\AccessibilityManager::getRoomAccessibility( $location['room_id'], $from, $to ); foreach ($meetingRoomRes as $entry) { if (in_array((int)$entry['ID'], $skipEntryList)) { continue; } $dateFrom = $entry['DATE_FROM']; $dateTo = $entry['DATE_TO']; if ($entry['DT_SKIP_TIME'] !== "Y") { $dateFrom = CCalendar::Date( CCalendar::Timestamp($entry['DATE_FROM']) - $entry['~USER_OFFSET_FROM'] ); $dateTo = CCalendar::Date( CCalendar::Timestamp($entry['DATE_TO']) - $entry['~USER_OFFSET_TO'] ); } $result['accessibility'][$roomId][] = [ 'id' => $entry['ID'], 'name' => $entry['NAME'], 'dateFrom' => $dateFrom, 'dateTo' => $dateTo ]; } } } } if (!empty($resourceIdList) && $isPlannerFeatureEnabled) { $resEntries = CCalendarEvent::GetList( array( 'arFilter' => array( "FROM_LIMIT" => $from, "TO_LIMIT" => $to, "CAL_TYPE" => 'resource', "ACTIVE_SECTION" => "Y", "SECTION" => $resourceIdList ), 'parseRecursion' => true, 'setDefaultLimit' => false ) ); foreach($resEntries as $entry) { if (in_array($entry['ID'], $skipEntryList)) { continue; } $dateFrom = $entry['DATE_FROM']; $dateTo = $entry['DATE_TO']; if ($entry['DT_SKIP_TIME'] !== "Y") { $dateFrom = CCalendar::Date( CCalendar::Timestamp($entry['DATE_FROM']) - $entry['~USER_OFFSET_FROM'] ); $dateTo = CCalendar::Date( CCalendar::Timestamp($entry['DATE_TO']) - $entry['~USER_OFFSET_TO'] ); } $result['accessibility'][$entry['SECT_ID']][] = array( 'id' => $entry["ID"], 'name' => $entry["NAME"], 'dateFrom' => $dateFrom, 'dateTo' => $dateTo ); } } if ($params['initPullWatches'] === true) { \Bitrix\Calendar\Util::initPlannerPullWatches( $curUserId, $userIds ); } return $result; } private static function getUsersIdList($params = []) { } } ?>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.26 |
proxy
|
phpinfo
|
Settings