original_string: protected static function export_user_calendar_event_data(approved_contextlist $contextlist) {
          // Calendar Events can exist at Site, Course Category, Course, Course Group, User, or Course Modules contexts.
          $eventdetails = self::get_calendar_event_details_by_contextlist($contextlist);
  
          // Multiple Calendar Events of the same eventtype and time can exist for a context, so collate them for export.
          $eventrecords = [];
          foreach ($eventdetails as $eventdetail) {
              // Create an array key based on the contextid, eventtype, and time.
              $key = $eventdetail->contextid . $eventdetail->eventtype . $eventdetail->timestart;
  
              if (array_key_exists($key, $eventrecords) === false) {
                  $eventrecords[$key] = [ $eventdetail ];
              } else {
                  $eventrecords[$key] = array_merge($eventrecords[$key], [$eventdetail]);
              }
          }
          $eventdetails->close();
  
          // Export Calendar Event data.
          foreach ($eventrecords as $eventrecord) {
              $index = (count($eventrecord) > 1) ? 1 : 0;
  
              foreach ($eventrecord as $event) {
                  // Export the events using the structure Calendar/Events/{datetime}/{eventtype}-event.json.
                  $subcontexts = [
                      get_string('calendar', 'calendar'),
                      get_string('events', 'calendar'),
                      date('c', $event->timestart)
                  ];
                  $name = $event->eventtype . '-event';
  
                  // Use name {eventtype}-event-{index}.json if multiple eventtypes and time exists at the same context.
                  if ($index != 0) {
                      $name .= '-' . $index;
                      $index++;
                  }
  
                  $eventdetails = (object) [
                      'name' => $event->name,
                      'description' => $event->description,
                      'location' => $event->location,
                      'eventtype' => $event->eventtype,
                      'timestart' => transform::datetime($event->timestart),
                      'timeduration' => $event->timeduration
                  ];
  
                  $context = \context::instance_by_id($event->contextid);
                  writer::with_context($context)->export_related_data($subcontexts, $name, $eventdetails);
              }
          }
      }
code: protected static function export_user_calendar_event_data(approved_contextlist $contextlist) {
          // Calendar Events can exist at Site, Course Category, Course, Course Group, User, or Course Modules contexts.
          $eventdetails = self::get_calendar_event_details_by_contextlist($contextlist);
  
          // Multiple Calendar Events of the same eventtype and time can exist for a context, so collate them for export.
          $eventrecords = [];
          foreach ($eventdetails as $eventdetail) {
              // Create an array key based on the contextid, eventtype, and time.
              $key = $eventdetail->contextid . $eventdetail->eventtype . $eventdetail->timestart;
  
              if (array_key_exists($key, $eventrecords) === false) {
                  $eventrecords[$key] = [ $eventdetail ];
              } else {
                  $eventrecords[$key] = array_merge($eventrecords[$key], [$eventdetail]);
              }
          }
          $eventdetails->close();
  
          // Export Calendar Event data.
          foreach ($eventrecords as $eventrecord) {
              $index = (count($eventrecord) > 1) ? 1 : 0;
  
              foreach ($eventrecord as $event) {
                  // Export the events using the structure Calendar/Events/{datetime}/{eventtype}-event.json.
                  $subcontexts = [
                      get_string('calendar', 'calendar'),
                      get_string('events', 'calendar'),
                      date('c', $event->timestart)
                  ];
                  $name = $event->eventtype . '-event';
  
                  // Use name {eventtype}-event-{index}.json if multiple eventtypes and time exists at the same context.
                  if ($index != 0) {
                      $name .= '-' . $index;
                      $index++;
                  }
  
                  $eventdetails = (object) [
                      'name' => $event->name,
                      'description' => $event->description,
                      'location' => $event->location,
                      'eventtype' => $event->eventtype,
                      'timestart' => transform::datetime($event->timestart),
                      'timeduration' => $event->timeduration
                  ];
  
                  $context = \context::instance_by_id($event->contextid);
                  writer::with_context($context)->export_related_data($subcontexts, $name, $eventdetails);
              }
          }
      }
code_tokens: protected static function export_user_calendar_event_data ( approved_contextlist $ contextlist ) { // Calendar Events can exist at Site, Course Category, Course, Course Group, User, or Course Modules contexts. $ eventdetails = self :: get_calendar_event_details_by_contextlist ( $ contextlist ) ; // Multiple Calendar Events of the same eventtype and time can exist for a context, so collate them for export. $ eventrecords = [ ] ; foreach ( $ eventdetails as $ eventdetail ) { // Create an array key based on the contextid, eventtype, and time. $ key = $ eventdetail -> contextid . $ eventdetail -> eventtype . $ eventdetail -> timestart ; if ( array_key_exists ( $ key , $ eventrecords ) === false ) { $ eventrecords [ $ key ] = [ $ eventdetail ] ; } else { $ eventrecords [ $ key ] = array_merge ( $ eventrecords [ $ key ] , [ $ eventdetail ] ) ; } } $ eventdetails -> close ( ) ; // Export Calendar Event data. foreach ( $ eventrecords as $ eventrecord ) { $ index = ( count ( $ eventrecord ) > 1 ) ? 1 : 0 ; foreach ( $ eventrecord as $ event ) { // Export the events using the structure Calendar/Events/{datetime}/{eventtype}-event.json. $ subcontexts = [ get_string ( 'calendar' , 'calendar' ) , get_string ( 'events' , 'calendar' ) , date ( 'c' , $ event -> timestart ) ] ; $ name = $ event -> eventtype . '-event' ; // Use name {eventtype}-event-{index}.json if multiple eventtypes and time exists at the same context. if ( $ index != 0 ) { $ name .= '-' . $ index ; $ index ++ ; } $ eventdetails = ( object ) [ 'name' => $ event -> name , 'description' => $ event -> description , 'location' => $ event -> location , 'eventtype' => $ event -> eventtype , 'timestart' => transform :: datetime ( $ event -> timestart ) , 'timeduration' => $ event -> timeduration ] ; $ context = \ context :: instance_by_id ( $ event -> contextid ) ; writer :: with_context ( $ context ) -> export_related_data ( $ subcontexts , $ name , $ eventdetails ) ; } } }
docstring: Helper function to export Calendar Events data by a User's contextlist.
  
  @param approved_contextlist $contextlist
  @throws \coding_exception
docstring_tokens: Helper function to export Calendar Events data by a User s contextlist .