3namespace Bitrix\Calendar\Core\Mappers;
5use Bitrix\Calendar\Core;
6use Bitrix\Calendar\Internals\EO_Event;
7use Bitrix\Calendar\Internals\EventTable;
8use Bitrix\Main\ArgumentException;
10use Bitrix\Main\ObjectException;
11use Bitrix\Main\ObjectPropertyException;
12use Bitrix\Main\ORM\Data\AddResult;
13use Bitrix\Main\ORM\Query\Result;
14use Bitrix\Main\ORM\Query\Query;
15use Bitrix\Main\SystemException;
20 private const JS_DATE_FORMAT =
'D M d Y';
21 private const JS_DATE_TIME_FORMAT =
'D M d Y H:i:s';
37 $eventDM = EventTable::query()
39 ->where(
'OWNER_ID', $ownerId)
46 while (
$event = $eventDM->fetch())
89 'originalFrom' =>
$params[
'originalFrom'] ??
null,
90 'checkPermission' =>
false,
103 return $this->
getById((
int)$id);
121 'Event' => $this->prepareArrayForDelete(
$entity),
123 'checkPermissions' =>
false,
124 'bMarkDeleted' =>
true,
148 return $this->convertToArray(
$event);
170 'checkPermissions' =>
false,
171 'userId' =>
$event->getOwner() ?
$event->getOwner()->getId() :
null,
174 $id = CCalendar::SaveEvent(
$params);
183 $result->addError(
new Error(
'Error of create event'));
197 private function prepareReminders(Core\Event\Properties\RemindCollection $collection, Core\Base\Date
$start):
array
200 $collection->setEventStart(clone
$start);
201 $collection->deDuplicate();
203 foreach ($collection->getCollection() as
$reminder)
213 $remind[
'type'] = Core\Event\Properties\Remind::UNIT_DAY_BEFORE;
214 $remind[
'before'] =
$reminder->getDaysBefore();
215 $remind[
'time'] =
$reminder->getTimeOffset();
219 $remind[
'type'] = str_replace(
'minutes',
'min',
$reminder->getUnits()) ;
224 $remind[
'type'] = Core\Event\Properties\Remind::UNIT_DATES;
225 $remind[
'value'] =
$reminder->getSpecificTime();
242 $jsFormat =
$event->isFullDayEvent() ? self::JS_DATE_FORMAT : self::JS_DATE_TIME_FORMAT;
246 'ACTIVE' =>
$event->isActive() ?
'Y' :
'N',
247 'DELETED' =>
$event->isDeleted() ?
'Y' :
'N',
248 'DT_SKIP_TIME' =>
$event->isFullDayEvent() ?
'Y' :
'N',
249 'DAV_XML_ID' =>
$event->getUid(),
250 'TZ_FROM' => (string)
$event->getStartTimeZone(),
251 'TZ_TO' => (string)
$event->getEndTimeZone(),
252 'NAME' =>
$event->getName(),
253 'DATE_FROM' => (string)
$event->getStart(),
254 'DATE_TO' => (string)
$event->getEnd(),
255 'ORIGINAL_DATE_FROM' => $this->prepareOriginalDateFrom(
$event),
256 'DESCRIPTION' =>
$event->getDescription(),
257 'ACCESSIBILITY' =>
$event->getAccessibility(),
258 'PRIVATE_EVENT' =>
$event->isPrivate(),
259 'IMPORTANCE' =>
$event->getImportance(),
260 'OWNER_ID' =>
$event->getOwner()?->getId(),
261 'CREATED_BY' =>
$event->getOwner()?->getId(),
262 'CAL_TYPE' =>
$event->getCalendarType(),
263 'EVENT_TYPE' =>
$event->getSpecialLabel(),
264 'LOCATION' =>
$event->getLocation() ?
$event->getLocation()->getActualLocation() :
'',
265 'REMIND' => (
$event->getRemindCollection() &&
$event->getRemindCollection()->count())
266 ? $this->prepareReminders(
$event->getRemindCollection(),
$event->getStart())
268 'RRULE' =>
$event->isRecurrence()
269 ?
$event->getRecurringRule()?->toArray()
271 'EXDATE' =>
$event->getExcludedDateCollection()?->toString(),
272 'RECURRENCE_ID' =>
$event->getRecurrenceId(),
273 'IS_MEETING' =>
$event->isMeeting(),
274 'MEETING_STATUS' =>
$event->getMeetingStatus(),
275 'MEETING_HOST' =>
$event->getEventHost()?->getId(),
276 'MEETING' =>
$event->getMeetingDescription()?->getFields(),
277 'ATTENDEES_CODES' =>
$event->getAttendeesCollection()
278 ?
$event->getAttendeesCollection()->getFields()[
'attendeesCodesCollection']
280 'SECTIONS' =>
$event->getSection() ? [
$event->getSection()->getId()] :
null,
281 'SECTION_ID' =>
$event->getSection() ?
$event->getSection()->getId() :
null,
282 'RELATIONS' =>
$event->getRelations()?->getFields(),
283 'DATE_CREATE' =>
$event->getDateCreate()?->toString(),
284 'TIMESTAMP_X' =>
$event->getDateModified()?->toString(),
285 'VERSION' =>
$event->getVersion(),
286 'COLOR' =>
$event->getColor(),
287 'DT_LENGTH' =>
$event->getDtLength(),
288 'DATE_FROM_FORMATTED' =>
$event->getStart()->format($jsFormat),
289 'DATE_TO_FORMATTED' =>
$event->getEnd()->format($jsFormat),
304 $eventData = EventTable::query()
349 return Core\Event\EventMap::class;
364 return EventTable::getList(
$params);
374 $eventDM = EventTable::query()
375 ->where(Query::filter()
377 ->where(
'PARENT_ID', $id)
378 ->where(
'RECURRENCE_ID', $id)
380 ->where(
'OWNER_ID', $ownerId)
387 while (
$event = $eventDM->fetch())
406 $eventDM = EventTable::query()
410 if ($additionalParams)
413 if (isset($additionalParams[
'filter'])
414 && is_iterable($additionalParams[
'filter'])
417 foreach ($additionalParams[
'filter'] as
$filter)
424 if (isset($additionalParams[
'fields'])
425 && is_array($additionalParams[
'fields'])
428 $eventDM->setSelect($additionalParams[
'fields']);
432 $eventDM->setSelect([
'*']);
437 $eventDM->setSelect([
'*']);
440 $event = $eventDM->exec()->fetchObject();
457 'EXDATE' => (string)
$event->getExcludedDateCollection(),
462 array_intersect_key($eventFields, array_flip(
$fields))
508 return Core\Event\Event::class;
519 if (
$event->getOriginalDateFrom())
521 if (
$event->getStartTimeZone())
523 $event->getOriginalDateFrom()->setTimezone(
$event->getStartTimeZone()->getTimeZone());
convertToObject($objectEO)
getMapFullChainByParentId(int $id, int $ownerId, array $fields=[' *'])
updateEntity($entity, array $params=[])
convertFromArray(array $fields)
getOneEntityByFilter(array $filter)
convertToArray(Core\Event\Event $event)
deleteEntity(Core\Base\EntityInterface $entity, array $params)
getByArray(array $fields)
getEntity(int $id, ?array $additionalParams=null)
createEntity($entity, array $params=[])
getDataManagerResult(array $params)
patch(Core\Event\Event $event, array $fields)
getCollectionByIds(array $ids, int $ownerId, array $fields=[' *'])
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']