function opigno_ilt_opigno_ilt_presave in Opigno Instructor-led Trainings 3.x
Same name and namespace in other branches
- 8 opigno_ilt.module \opigno_ilt_opigno_ilt_presave()
Implements hook_ENTITY_TYPE_presave().
Updates a calendar event related to a instructor-led training.
File
- ./opigno_ilt.module, line 265 
- Contains opigno_ilt.module.
Code
function opigno_ilt_opigno_ilt_presave(EntityInterface $entity) {
  /** @var \Drupal\opigno_ilt\ILTInterface $entity */
  /** @var \Drupal\opigno_calendar_event\Entity\CalendarEvent $calendar_event */
  $calendar_event = $entity
    ->getCalendarEvent();
  if (!isset($calendar_event)) {
    $calendar_event = CalendarEvent::create([
      'type' => 'ilt_calendar_event',
    ]);
  }
  $calendar_event
    ->set('title', $entity
    ->getTitle());
  $calendar_event
    ->set('uid', $entity
    ->getOwnerId());
  // Set date.
  $start_date = $entity
    ->getStartDate();
  $end_date = $entity
    ->getEndDate();
  $date = [
    'value' => _opigno_ilt_datetime_to_iso($start_date),
    'end_value' => _opigno_ilt_datetime_to_iso($end_date),
  ];
  $calendar_event
    ->set('date_daterange', $date);
  // Set members.
  $members = $entity
    ->getMembersIds();
  if (empty($members)) {
    $training = $entity
      ->getTraining();
    if (isset($training)) {
      $members = array_map(function ($member) {
        /** @var \Drupal\group\GroupMembership $member */
        return $member
          ->getUser()
          ->id();
      }, $training
        ->getMembers());
    }
  }
  $calendar_event
    ->set('field_calendar_event_members', $members);
  $calendar_event
    ->save();
  $entity
    ->setCalendarEvent($calendar_event);
}