Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
MediaListTrait
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 4
156
0.00% covered (danger)
0.00%
0 / 1
 getFileByType
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
12
 getFileByTypeName
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
12
 getFilesByTypeName
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
12
 hasFileTypeName
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2/**
3 * Jingga
4 *
5 * PHP Version 8.1
6 *
7 * @package   Modules\Media\Models
8 * @copyright Dennis Eichhorn
9 * @license   OMS License 2.0
10 * @version   1.0.0
11 * @link      https://jingga.app
12 */
13declare(strict_types=1);
14
15namespace Modules\Media\Models;
16
17/**
18 * Media class.
19 *
20 * @package Modules\Media\Models
21 * @license OMS License 2.0
22 * @link    https://jingga.app
23 * @since   1.0.0
24 *
25 * @property \Modules\Media\Models\Media[] $files
26 */
27trait MediaListTrait
28{
29    /**
30     * Files.
31     *
32     * @var Media[]
33     * @since 1.0.0
34     */
35    public array $files = [];
36
37    /**
38     * Get media file by type
39     *
40     * @param int $type Media type
41     *
42     * @return Media
43     *
44     * @since 1.0.0
45     */
46    public function getFileByType(int $type) : Media
47    {
48        foreach ($this->files as $file) {
49            if ($file->hasMediaTypeId($type)) {
50                return $file;
51            }
52        }
53
54        return new NullMedia();
55    }
56
57    /**
58     * Get all media files by type name
59     *
60     * @param string $type Media type
61     *
62     * @return Media
63     *
64     * @since 1.0.0
65     */
66    public function getFileByTypeName(string $type) : Media
67    {
68        foreach ($this->files as $file) {
69            if ($file->hasMediaTypeName($type)) {
70                return $file;
71            }
72        }
73
74        return new NullMedia();
75    }
76
77    /**
78     * Get all media files by type name
79     *
80     * @param string $type Media type
81     *
82     * @return Media[]
83     *
84     * @since 1.0.0
85     */
86    public function getFilesByTypeName(string $type) : array
87    {
88        $files = [];
89        foreach ($this->files as $file) {
90            if ($file->hasMediaTypeName($type)) {
91                $files[] = $file;
92            }
93        }
94
95        return $files;
96    }
97
98    /**
99     * Check if file with a certain type name exists
100     *
101     * @param string $type Type name
102     *
103     * @return bool
104     *
105     * @since 1.0.0
106     */
107    public function hasFileTypeName(string $type) : bool
108    {
109        foreach ($this->files as $file) {
110            if ($file->hasMediaTypeName($type)) {
111                return true;
112            }
113        }
114
115        return false;
116    }
117}