ImageColumn::classes()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 5
ccs 3
cts 3
cp 1
crap 1
rs 10
1
<?php
2
3
namespace hamburgscleanest\DataTables\Models\ColumnFormatters;
4
5
use hamburgscleanest\DataTables\Interfaces\ColumnFormatter;
6
use Illuminate\Database\Eloquent\Model;
7
8
/**
9
 * Class ImageColumn
10
 * @package hamburgscleanest\DataTables\Models\ColumnFormatters
11
 */
12
class ImageColumn implements ColumnFormatter {
13
14
    /** @var string */
15
    private $_classes;
16
17
    /** @var string */
18
    private $_fallback;
19
20
    /**
21
     * ImageColumn constructor.
22
     * @param null|string $fallback
23
     * @param null|string $classes
24
     */
25 4
    public function __construct(? string $fallback = null, ? string $classes = null)
26
    {
27 4
        $this->_fallback = $fallback;
28 4
        $this->_classes = $classes;
29 4
    }
30
31
    /**
32
     * @param Model $rowModel
33
     * @param string $column
34
     * @return string
35
     */
36 4
    public function format(Model $rowModel, string $column) : string
37
    {
38 4
        if (!\file_exists($column))
39
        {
40 2
            return $this->_fallback ?? '';
41
        }
42
43 2
        return $this->_renderImage($column);
44
    }
45
46
    /**
47
     * @param string $path
48
     * @return string
49
     */
50 2
    private function _renderImage(string $path) : string
51
    {
52 2
        return '<img src="' . $path . (!empty($this->_classes) ? ('" class="' . $this->_classes) : '') . '"/>';
53
    }
54
55
    /**
56
     * Add styling to the image.
57
     *
58
     * @param string $classes
59
     * @return ImageColumn
60
     */
61 1
    public function classes(string $classes) : ImageColumn
62
    {
63 1
        $this->_classes = $classes;
64
65 1
        return $this;
66
    }
67
68
    /**
69
     * Set a fallback value which is used when the image is not found.
70
     *
71
     * @param string $fallback
72
     * @return ImageColumn
73
     */
74 1
    public function fallback(string $fallback) : ImageColumn
75
    {
76 1
        $this->_fallback = $fallback;
77
78 1
        return $this;
79
    }
80
}