setSong($song); $this->station = $station; } public function getStation(): Station { return $this->station; } public function getPlaylist(): ?StationPlaylist { return $this->playlist; } public function setPlaylist(StationPlaylist $playlist = null): void { $this->playlist = $playlist; } public function getMedia(): ?StationMedia { return $this->media; } public function setMedia(?StationMedia $media = null): void { $this->media = $media; if (null !== $media) { $this->setDuration($media->getCalculatedLength()); } } public function getRequest(): ?StationRequest { return $this->request; } public function setRequest(?StationRequest $request): void { $this->request = $request; } public function getAutodjCustomUri(): ?string { return $this->autodj_custom_uri; } public function setAutodjCustomUri(?string $autodj_custom_uri): void { $this->autodj_custom_uri = $autodj_custom_uri; } public function getTimestampCued(): int { return $this->timestamp_cued; } public function setTimestampCued(int $timestamp_cued): void { $this->timestamp_cued = $timestamp_cued; } public function getDuration(): ?int { return $this->duration; } public function setDuration(?int $duration): void { $this->duration = $duration; } public function getSentToAutodj(): bool { return $this->sent_to_autodj; } public function setSentToAutodj(bool $newValue = true): void { if ($newValue) { $this->setTimestampCued(time()); } $this->sent_to_autodj = $newValue; } /** * @return string[]|null */ public function getLog(): ?array { return $this->log; } public function setLog(?array $log): void { $this->log = $log; } /** * @return bool Whether the record should be shown in APIs (i.e. is not a jingle) */ public function showInApis(): bool { if ($this->playlist instanceof StationPlaylist) { return !$this->playlist->getIsJingle(); } return true; } public function __toString(): string { return (null !== $this->media) ? (string)$this->media : (string)(new Song($this)); } public static function fromMedia(Station $station, StationMedia $media): self { $sq = new self($station, $media); $sq->setMedia($media); return $sq; } public static function fromRequest(StationRequest $request): self { $sq = new self($request->getStation(), $request->getTrack()); $sq->setRequest($request); $sq->setMedia($request->getTrack()); return $sq; } }