public function Execute() { if (!CModule::IncludeModule("intranet")) { return CBPActivityExecutionStatus::Closed; } $calendarIblockId = COption::GetOptionInt("intranet", 'iblock_calendar', 0); if ($calendarIblockId <= 0) { return CBPActivityExecutionStatus::Closed; } $rootActivity = $this->GetRootActivity(); $documentId = $rootActivity->GetDocumentId(); $arCalendarUser = CBPHelper::ExtractUsers($this->CalendarUser, $documentId); foreach ($arCalendarUser as $calendarUser) { $Params = array('iblockId' => $calendarIblockId, 'ownerType' => "USER", 'ownerId' => $calendarUser, 'cacheTime' => 0, 'pageUrl' => false, 'allowSuperpose' => false, 'allowResMeeting' => false, 'allowVideoMeeting' => false, 'userIblockId' => $calendarIblockId); $EC = new CEventCalendar(); $EC->Init($Params); $sectionId = $EC->GetSectionIDByOwnerId($calendarUser, 'USER', $calendarIblockId); if ($sectionId <= 0) { $sectionId = CEventCalendar::CreateSectionForOwner($calendarUser, "USER", $calendarIblockId); } $arGuestCalendars = $EC->GetCalendars(array('sectionId' => $sectionId, 'iblockId' => $calendarIblockId, 'ownerType' => 'USER', 'ownerId' => $calendarUser, 'bOwner' => true, 'forExport' => true, 'bOnlyID' => true)); $arParams = array('iblockId' => $calendarIblockId, 'ownerType' => "USER", 'ownerId' => $calendarUser, 'sectionId' => $sectionId, 'bNew' => true, 'name' => $this->CalendarName, 'desc' => $this->CalendarDesrc, 'dateFrom' => cutZeroTime($this->CalendarFrom), 'dateTo' => cutZeroTime($this->CalendarTo), 'isMeeting' => false, 'prop' => array('PERIOD_TYPE' => 'NONE', 'ACCESSIBILITY' => 'busy', 'IMPORTANCE' => 'normal', 'PRIVATE' => false), 'userId' => $calendarUser, 'userIblockId' => $calendarIblockId, 'location' => array('new' => '', 'change' => true)); if (count($arGuestCalendars) > 0) { $arParams["calendarId"] = $arGuestCalendars[0]; } $EC->SaveEvent($arParams); } if (isset($EC)) { $EC->ClearCache($EC->cachePath . 'events/' . $calendarIblockId . '/'); } return CBPActivityExecutionStatus::Closed; }
function HandleElement(&$res, $arItem, $arPeriodic = false, $bJS = false, $bSuperposed = false) { $arEvent = array('ID' => intVal($arItem['ID']), 'IBLOCK_ID' => intVal($arItem['IBLOCK_ID']), 'IBLOCK_SECTION_ID' => intVal($arItem['IBLOCK_SECTION_ID']), 'NAME' => htmlspecialcharsex($arItem['~NAME']), 'DATE_FROM' => cutZeroTime($arItem['DISPLAY_ACTIVE_FROM']), 'DATE_TO' => cutZeroTime($arItem['DISPLAY_ACTIVE_TO']), 'DETAIL_TEXT' => $arItem['DETAIL_TEXT'], 'PERIOD' => $arPeriodic, 'TIMESTAMP_X' => $arItem['TIMESTAMP_X'], 'DATE_CREATE' => $arItem['DATE_CREATE'], 'GUESTS' => $arItem['GUESTS'], 'CREATED_BY' => $arItem['CREATED_BY'], 'STATUS' => $arItem['STATUS'], 'HOST' => $arItem['HOST'], 'REMIND' => $arItem['REMIND'], 'IMPORTANCE' => $arItem['IMPORTANCE'] ? $arItem['IMPORTANCE'] : 'normal', 'ACCESSIBILITY' => $arItem['ACCESSIBILITY'], 'PRIVATE' => $arItem['PRIVATE'], 'VERSION' => $arItem['VERSION'], 'MEETING_TEXT' => htmlspecialcharsex(addslashes($arItem['MEETING_TEXT'])), 'IS_MEETING' => $arItem['IS_MEETING'], 'LOCATION' => $arItem['LOCATION']); $rsUser = CUser::GetByID($arItem['CREATED_BY']); if ($arUser = $rsUser->Fetch()) { $url = str_replace('#USER_ID#', $arUser["ID"], COption::GetOptionString('intranet', 'path_user', '/company/personal/user/#USER_ID#/')); $arEvent['CREATED_BY_NAME_LINK'] = '<a href="' . $url . '" target="_blank">' . CUser::FormatName(CSite::GetNameFormat(), $arUser) . '</a>'; } if ($bSuperposed) { $arEvent['bSuperposed'] = true; } if ($bJS) { $res .= CUtil::PhpToJSObject($arEvent) . ","; } else { $res[] = $arEvent; } }