Passed
Push — master ( 62919d...1f65fa )
by Iman
04:23
created

ValueCalculator::calculate()   B

Complexity

Conditions 6
Paths 32

Size

Total Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
nc 32
nop 3
dl 0
loc 26
rs 8.8817
c 0
b 0
f 0
1
<?php
2
3
namespace Crocodicstudio\Crudbooster\CBCoreModule\Index;
4
5
class ValueCalculator
6
{
7
    /**
8
     * @param $col
9
     * @param $row
10
     * @param $title
11
     * @return string
12
     */
13
    public function calculate($col, $row, $title)
14
    {
15
        $value = $row->{$col['field']};
16
        $label = $col['label'];
17
18
        if (isset($col['image'])) {
19
            $value = $this->image($value, $label, $title);
20
        }
21
22
        if (isset($col['download'])) {
23
            $value = $this->download($value);
24
        }
25
26
        if (isset($col['str_limit'])) {
27
            $value = $this->str_limit($col['str_limit'], $value);
28
        }
29
30
        if ($col['nl2br'] ?? false) {
31
            $value = nl2br($value);
32
        }
33
34
        if (isset($col['callback'])) {
35
            $value = call_user_func($col['callback'], $row);
36
        }
37
38
        return $this->includeLabels($value);
39
    }
40
41
    /**
42
     * @param $value
43
     * @return string
44
     */
45
    private function download($value)
46
    {
47
        $url = (strpos($value, 'http://')) ? $value : asset($value).'?download=1';
48
        if (! $value) {
49
            return " - ";
50
        }
51
        return "<a class='btn btn-xs btn-primary' href='$url' target='_blank' title='Download File'><i class='fa fa-download'>".cbTrans('button_download_file')."</i></a>";
52
    }
53
54
    /**
55
     * @param $value
56
     * @param $label
57
     * @param $title
58
     * @return string
59
     */
60
    private function image($value, $label, $title)
61
    {
62
        if ($value == '') {
63
            return "<a  data-lightbox='roadtrip' title='$label: $title' href='".asset('vendor/crudbooster/avatar.jpg')."'><img width='40px' height='40px' src='".asset('vendor/crudbooster/avatar.jpg')."'/></a>";
64
        }
65
        $pic = (strpos($value, 'http://') !== false) ? $value : asset($value);
66
        return "<a data-lightbox='roadtrip' title='$label: $title' href='$pic'><img width='40px' height='40px' src='$pic'/></a>";
67
    }
68
69
    /**
70
     * @param $col
71
     * @param $value
72
     * @return string
73
     */
74
    private function str_limit($limit, $value)
75
    {
76
        return str_limit(trim(strip_tags($value)), $limit);
77
    }
78
79
    /**
80
     * @param $value
81
     * @return string
82
     */
83
    private function includeLabels($value)
84
    {
85
        $datavalue = @unserialize($value);
86
        if (!$datavalue) {
87
            return $value;
88
        }
89
        $preValue = [];
90
        foreach ($datavalue as $d) {
91
            if ($d['label']) {
92
                $preValue[] = $d['label'];
93
            }
94
        }
95
        if (!empty($preValue)) {
96
            $value = implode(", ", $preValue);
97
        }
98
99
        return $value;
100
    }
101
}