<?php declare(strict_types=1); namespace OCA\GPodderSync\Core\EpisodeAction; class EpisodeActionReader { private array $requiredProperties = ['podcast', 'episode', 'action', 'timestamp']; /** * @param array $episodeActionsArray [] * @return EpisodeAction[] */ public function fromArray(array $episodeActionsArray): array { $episodeActions = []; foreach ($episodeActionsArray as $episodeAction) { if ($this->hasRequiredProperties($episodeAction) === false) { continue; } $episodeActions[] = new EpisodeAction( $episodeAction["podcast"], $episodeAction["episode"], strtoupper($episodeAction["action"]), $episodeAction["timestamp"], $episodeAction["started"] ?? -1, $episodeAction["position"] ?? -1, $episodeAction["total"] ?? -1, $episodeAction["guid"] ?? null, null ); } return $episodeActions; } /** * @param array $episodeAction * @return bool */ private function hasRequiredProperties(array $episodeAction): bool { return (count(array_intersect($this->requiredProperties, array_keys($episodeAction))) === count($this->requiredProperties)); } }