createdAt = new \DateTimeImmutable('now'); } /** * Get id. * * @return int Model id * * @since 1.0.0 */ public function getId() : int { return $this->id; } /** * Set the successor item * * @return void * * @since 1.0.0 */ public function setSuccessor(int $successor) : void { $this->successor = $successor; } /** * Get the successor item * * @return int * * @since 1.0.0 */ public function getSuccessor() : int { return $this->successor; } /** * Add item l11n * * @param ItemL11n $l11n Item localization * * @return void * * @since 1.0.0 */ public function addL11n(ItemL11n $l11n) : void { $this->l11n[] = $l11n; } /** * Get l11n * * @param string $type Localization type * * @return ItemL11n * * @since 1.0.0 */ public function getL11n(string $type) : ItemL11n { foreach ($this->l11n as $l11n) { if ($l11n->getType()->title === $type) { return $l11n; } } return new NullItemL11n(); } /** * Add media to item * * @param int|Media $media Media * * @return void * * @since 1.0.0 */ public function addFile($media) : void { $this->files[] = $media; } /** * Get media file by type * * @param string $type Media type * * @return Media * * @since 1.0.0 */ public function getFileByType(string $type) : Media { foreach ($this->files as $file) { if ($file->type === $type) { return $file; } } return new NullMedia(); } /** * Get all media files by type * * @param string $type Media type * * @return Media[] * * @since 1.0.0 */ public function getFilesByType(string $type) : array { $files = []; foreach ($this->files as $file) { if ($file->type === $type) { $files[] = $file; } } return $files; } }