public static function CheckFields(&$arFields, $currentEvent = array(), $userId = false) { if (!isset($arFields['TIMESTAMP_X'])) { $arFields['TIMESTAMP_X'] = CCalendar::Date(mktime(), true, false); } if (!$userId) { $userId = CCalendar::GetCurUserId(); } $bNew = !isset($arFields['ID']) || $arFields['ID'] <= 0; if (!isset($arFields['DATE_CREATE']) && $bNew) { $arFields['DATE_CREATE'] = $arFields['TIMESTAMP_X']; } // Skip time if (isset($arFields['SKIP_TIME'])) { $arFields['DT_SKIP_TIME'] = $arFields['SKIP_TIME'] ? 'Y' : 'N'; unset($arFields['SKIP_TIME']); } elseif (isset($arFields['DT_SKIP_TIME']) && $arFields['DT_SKIP_TIME'] != 'Y' && $arFields['DT_SKIP_TIME'] != 'N') { unset($arFields['DT_SKIP_TIME']); } unset($arFields['DT_FROM']); unset($arFields['DT_TO']); $arFields['DT_SKIP_TIME'] = $arFields['DT_SKIP_TIME'] !== 'Y' ? 'N' : 'Y'; $fromTs = CCalendar::Timestamp($arFields['DATE_FROM'], false, $arFields['DT_SKIP_TIME'] !== 'Y'); $toTs = CCalendar::Timestamp($arFields['DATE_TO'], false, $arFields['DT_SKIP_TIME'] !== 'Y'); if ($fromTs > $toTs) { $toTs = $fromTs; } $arFields['DATE_FROM'] = CCalendar::Date($fromTs); $arFields['DATE_TO'] = CCalendar::Date($toTs); if (!$fromTs) { $arFields['DATE_FROM'] = FormatDate("SHORT", time()); $fromTs = CCalendar::Timestamp($arFields['DATE_FROM'], false, false); if (!$toTs) { $arFields['DATE_TO'] = $arFields['DATE_FROM']; $toTs = $fromTs; $arFields['DT_SKIP_TIME'] = 'Y'; } } elseif (!$toTs) { $arFields['DATE_TO'] = $arFields['DATE_FROM']; $toTs = $fromTs; } if ($arFields['DT_SKIP_TIME'] !== 'Y') { $arFields['DT_SKIP_TIME'] = 'N'; if (!isset($arFields['TZ_FROM']) && isset($currentEvent['TZ_FROM'])) { $arFields['TZ_FROM'] = $currentEvent['TZ_FROM']; } if (!isset($arFields['TZ_TO']) && isset($currentEvent['TZ_TO'])) { $arFields['TZ_TO'] = $currentEvent['TZ_TO']; } if (!isset($arFields['TZ_FROM']) && !isset($arFields['TZ_TO'])) { $userTimezoneOffsetUTC = CCalendar::GetCurrentOffsetUTC($userId); $userTimezoneName = CCalendar::GetUserTimezoneName($userId); if (!$userTimezoneName) { $userTimezoneName = CCalendar::GetGoodTimezoneForOffset($userTimezoneOffsetUTC); } $arFields['TZ_FROM'] = $userTimezoneName; $arFields['TZ_TO'] = $userTimezoneName; } if (!isset($arFields['TZ_OFFSET_FROM'])) { $arFields['TZ_OFFSET_FROM'] = CCalendar::GetTimezoneOffset($arFields['TZ_FROM'], $fromTs); } if (!isset($arFields['TZ_OFFSET_TO'])) { $arFields['TZ_OFFSET_TO'] = CCalendar::GetTimezoneOffset($arFields['TZ_TO'], $toTs); } } if (!isset($arFields['TZ_OFFSET_FROM'])) { $arFields['TZ_OFFSET_FROM'] = 0; } if (!isset($arFields['TZ_OFFSET_TO'])) { $arFields['TZ_OFFSET_TO'] = 0; } if (!isset($arFields['DATE_FROM_TS_UTC'])) { $arFields['DATE_FROM_TS_UTC'] = $fromTs - $arFields['TZ_OFFSET_FROM']; } if (!isset($arFields['DATE_TO_TS_UTC'])) { $arFields['DATE_TO_TS_UTC'] = $toTs - $arFields['TZ_OFFSET_TO']; } $h24 = 60 * 60 * 24; // 24 hours if ($arFields['DT_SKIP_TIME'] == 'Y') { unset($arFields['TZ_FROM']); unset($arFields['TZ_TO']); unset($arFields['TZ_OFFSET_FROM']); unset($arFields['TZ_OFFSET_TO']); } // Event length in seconds if (!isset($arFields['DT_LENGTH']) || $arFields['DT_LENGTH'] == 0) { if ($fromTs == $toTs && date('H:i', $fromTs) == '00:00' && $arFields['DT_SKIP_TIME'] == 'Y') { $arFields['DT_LENGTH'] = $h24; } else { $arFields['DT_LENGTH'] = intVal($toTs - $fromTs); if ($arFields['DT_SKIP_TIME'] == "Y") { // We have dates without times $arFields['DT_LENGTH'] += $h24; } } } if (!$arFields['VERSION']) { $arFields['VERSION'] = 1; } // Accessibility $arFields['ACCESSIBILITY'] = trim(strtolower($arFields['ACCESSIBILITY'])); if (!in_array($arFields['ACCESSIBILITY'], array('busy', 'quest', 'free', 'absent'))) { $arFields['ACCESSIBILITY'] = 'busy'; } // Importance $arFields['IMPORTANCE'] = trim(strtolower($arFields['IMPORTANCE'])); if (!in_array($arFields['IMPORTANCE'], array('high', 'normal', 'low'))) { $arFields['IMPORTANCE'] = 'normal'; } // Color $arFields['COLOR'] = CCalendar::Color($arFields['COLOR'], false); // Section if (!is_array($arFields['SECTIONS']) && intVal($arFields['SECTIONS']) > 0) { $arFields['SECTIONS'] = array(intVal($arFields['SECTIONS'])); } // Check rrules if (is_array($arFields['RRULE']) && isset($arFields['RRULE']['FREQ']) && in_array($arFields['RRULE']['FREQ'], array('HOURLY', 'DAILY', 'MONTHLY', 'YEARLY', 'WEEKLY'))) { // Interval if (isset($arFields['RRULE']['INTERVAL']) && intVal($arFields['RRULE']['INTERVAL']) > 1) { $arFields['RRULE']['INTERVAL'] = intVal($arFields['RRULE']['INTERVAL']); } // Until date $periodTs = CCalendar::Timestamp($arFields['RRULE']['UNTIL'], false, false); if (!$periodTs) { $arFields['RRULE']['UNTIL'] = CCalendar::GetMaxDate(); $periodTs = CCalendar::Timestamp($arFields['RRULE']['UNTIL'], false, false); } $arFields['DATE_TO_TS_UTC'] = $periodTs; $arFields['RRULE']['UNTIL'] = CCalendar::Date($periodTs, false); if (isset($arFields['RRULE']['BYDAY'])) { if (is_array($arFields['RRULE']['BYDAY'])) { $BYDAY = $arFields['RRULE']['BYDAY']; } else { $BYDAY = array(); $days = array('SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'); $bydays = explode(',', $arFields['RRULE']['BYDAY']); foreach ($bydays as $day) { $day = strtoupper($day); if (in_array($day, $days)) { $BYDAY[] = $day; } } } $arFields['RRULE']['BYDAY'] = implode(',', $BYDAY); } unset($arFields['RRULE']['~UNTIL']); $arFields['RRULE'] = self::PackRRule($arFields['RRULE']); } else { $arFields['RRULE'] = ''; } $arFields['EXRULE'] = ""; $arFields['RDATE'] = ""; $arFields['EXDATE'] = ""; // Location if (!is_array($arFields['LOCATION'])) { $arFields['LOCATION'] = array("NEW" => is_string($arFields['LOCATION']) ? $arFields['LOCATION'] : ""); } // Private $arFields['PRIVATE_EVENT'] = isset($arFields['PRIVATE_EVENT']) && $arFields['PRIVATE_EVENT']; return true; }
echo htmlspecialcharsEx($event['NAME']); ?> </span></td> </tr> <tr> <td class="bx-cal-view-text-cell-l"><?php echo GetMessage('EC_DATE'); ?> :</td> <td class="bx-cal-view-text-cell-r bx-cal-view-from-to"> <span><?php echo CCalendar::GetFromToHtml($fromTs, $toTs, $event['DT_SKIP_TIME'] == 'Y', $event['DT_LENGTH']); ?> </span> <?php if ($event['DT_SKIP_TIME'] != 'Y' && (intVal($event['~USER_OFFSET_FROM']) !== 0 || intVal($event['~USER_OFFSET_TO']) !== 0 || $event['TZ_FROM'] != $event['TZ_TO'] || $event['TZ_FROM'] !== CCalendar::GetUserTimezoneName($userId))) { if ($event['TZ_FROM'] == $event['TZ_TO']) { $timezoneHint = CCalendar::GetFromToHtml(CCalendar::Timestamp($event['DATE_FROM']), CCalendar::Timestamp($event['DATE_TO']), $event['DT_SKIP_TIME'] == 'Y', $event['DT_LENGTH']); $timezoneHint .= ' (' . $event['TZ_FROM'] . ')'; } else { $timezoneHint = GetMessage('EC_VIEW_DATE_FROM_TO', array('#DATE_FROM#' => $event['DATE_FROM'] . ' (' . $event['TZ_FROM'] . ')', '#DATE_TO#' => $event['DATE_TO'] . ' (' . $event['TZ_TO'] . ')')); } ?> <span id="bxec-view-tz-hint<?php echo $id; ?> " data-bx-hint="<?php echo $timezoneHint; ?> " class="bx-cal-view-timezon-icon"></span> <?php
} $arParams['EVENT'] = CCalendarEvent::GetById($arParams['EVENT_ID']); $arParams["DESTINATION"] = is_array($arParams["DESTINATION"]) && IsModuleInstalled("socialnetwork") ? $arParams["DESTINATION"] : array(); $arParams["DESTINATION"] = array_key_exists("VALUE", $arParams["DESTINATION"]) ? $arParams["DESTINATION"]["VALUE"] : $arParams["DESTINATION"]; if (is_array($arParams["DESTINATION"]['USERS'])) { $users = array(); foreach ($arParams["DESTINATION"]['USERS'] as $key => $entry) { if ($entry['isExtranet'] == 'N') { $users[$key] = $entry; } } $arParams["DESTINATION"]['USERS'] = $users; } // Empty destination for new events if (!$arParams['EVENT_ID']) { $arParams["DESTINATION"]["SELECTED"] = array(); } $arResult['TIMEZONE_LIST'] = CCalendar::GetTimezoneList(); $userTimezoneOffsetUTC = CCalendar::GetCurrentOffsetUTC($arParams['CUR_USER']); $arParams["USER_TIMEZONE_NAME"] = CCalendar::GetUserTimezoneName($arParams['CUR_USER']); $arParams["USER_TIMEZONE_DEFAULT"] = ''; // We don't have default timezone for this offset for this user // We will ask him but we should suggest some suitable for his offset if (!$arParams["USER_TIMEZONE_NAME"]) { $arParams["USER_TIMEZONE_DEFAULT"] = CCalendar::GetGoodTimezoneForOffset($userTimezoneOffsetUTC); } $arParams["MEETING_ROOMS"] = CCalendar::GetMeetingRoomList(); if (count($arParams["MEETING_ROOMS"]) == 0) { $arParams["MEETING_ROOMS"] = false; } $this->IncludeComponentTemplate();