offering = $offering; // DateTimes $this->sessions = $sessions; } public function getOffering(): AdventInterface { return $this->offering; } /** * @param AdventInterface $offering * @return Adapter */ public function setOffering(AdventInterface $offering): Adapter { $this->offering = $offering; return $this; } /** * @return mixed[] */ public function getSessions(): array { return $this->sessions; } /** * @param mixed[] $sessions * @return Adapter */ public function setSessions(array $sessions): Adapter { $this->sessions = $sessions; return $this; } /** * @return OfferingOption[] */ public function available(): array { $options = $this->all(); $available = []; foreach ($options as $key => $option) { if ($option->isAvailable()) { $available[$key] = $option; } } return apply_filters('DayTidy/F__DayTidy/Options/Adapter__available/available', $available, $options); } /** * @return OfferingOption[] */ public function all(): array { // Options $raw = $this->offering->meta_get('daytidy_offering_options', []); // Create Instances $options = array_map(fn($t) => new OfferingOption($this->offering, $t, $this->sessions), $raw); return apply_filters('DayTidy/F__DayTidy/Options/Adapter__all/options', $options, $raw); } /** * @param int $option_id * @return OfferingOption|null */ public function get(int $option_id): ?OfferingOption { // Options $raw = $this->offering->meta_get('daytidy_offering_options', []); $data = []; foreach ($raw as $t) { if (isset($t['id']) && (int) $t['id'] === $option_id) { $data = $t; break; } } return count($data) ? new OfferingOption($this->offering, $data, $this->sessions) : null; } }