meta_get('daytidy_freq', RepeatTypes::CUSTOM); // Custom Frequency if ($frequency === RepeatTypes::CUSTOM) { $custom_sessions = $entity->meta_get('daytidy_sessions', []); foreach ($custom_sessions as $session) { $sessions[] = [ 'start' => new DateTime($session['start'], $entity->getTimeZone()), 'end' => new DateTime($session['end'], $entity->getTimeZone()), ]; } // Convert PHP DateTime[] to Session[] return (new Custom($entity))->collection($sessions); } // Recurring Offering // Get Recurrence $recurrence = self::recurrence($entity); // Auto Populate Start Date if (!$start) $start = $entity->meta_get('daytidy_schedule_start', Carbon::now()->format('Y-m-d H:i:s')); // Sessions $sessions = $recurrence->getSessionsAfter($start, false, $maximum); // Convert PHP DateTime[] to Session[] return (new Recurring($entity))->collection($sessions); } /** * Get Recurrence by RFC * * @param AdventInterface $entity * @return Recurrence<\DateTime> */ public static function recurrence(AdventInterface $entity) { // RFC Rule $rule = $entity->meta_get('daytidy_recurrence_rule', ''); // Recurrence return Factory::recurrenceByRFCString($rule); } }