Passed
Push — master ( 3e6a67...c159eb )
by Henri
01:13
created

HelperTrait::initData()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 2
nc 2
nop 0
1
<?php
2
3
namespace HnrAzevedo\Viewer;
4
5
use Exception;
6
7
trait HelperTrait{
8
    use CheckTrait;
9
10
    protected function getOB(string $require, array $data = []): string
11
    {
12
        foreach($data as $variable => $value){
13
            $$variable = $value;
14
        }
15
16
        if(!file_exists($require)){
17
            throw new Exception("Impotation file does not exist:{$require} .");
18
        }
19
        
20
        $this->initData();
21
22
        $_SESSION['data'] = (!empty($data)) ? array_merge($data,$_SESSION['data']) : $_SESSION['data'];
23
24
        ob_start();
25
        require($require);
26
        $response = ob_get_contents();
27
        ob_end_clean();
28
29
        $response = explode(PHP_EOL,$response);
30
        foreach($response as $index => $value){
31
            $response[$index] = ltrim($value);
32
        }
33
        
34
        return implode('',$response);
35
    }
36
37
    protected function initData()
38
    {
39
        $_SESSION['data'] = (empty($_SESSION['data'])) ? null : $_SESSION['data'];
40
    }
41
42
    protected function getVars(string $buffer,string $prefix = null, ?array $values = null): string
43
    {
44
        $this->initData();
45
46
        $vars = (is_null($values)) ? $_SESSION['data'] : $values;
47
48
        return (is_null($vars)) ? $buffer : $this->replace_vars($buffer, $vars, $prefix);
49
    }
50
51
    protected function replace_vars($buffer, $vars, $prefix): string
52
    {
53
        foreach ($vars as $key => $value) {
54
            switch(gettype($value)){
55
                case 'array':
56
                    $buffer = $this->replace_Array($buffer, $value, $prefix, $key);
57
                    break;
58
                case 'object':
59
                    $buffer = $this->replace_Object($buffer, $value, $prefix, $key);
60
                    break;
61
                default:
62
                    $buffer = $this->replace_value($buffer, $value, $prefix, $key);
63
                    break;
64
            }
65
        }
66
67
        return $buffer;
68
    }
69
70
    protected function replace_value(string $buffer, $value, ?string $prefix, string $key): string
71
    {
72
        if(gettype($value)!=='array' && gettype($value)!=='object'){
73
            while(strstr($buffer,'{{'.$prefix.$key.'}}')){
74
                $buffer = str_replace('{{'.$prefix.$key.'}}', $value ,$buffer);
75
            }
76
        }
77
        return $buffer;
78
    }
79
80
    protected function replace_Object(string $buffer, object $obj, string $prefix, string $key): string
81
    {
82
        foreach($obj->get_object_vars() as $field => $val){
83
            
84
            $buffer = $this->replace_value($buffer, $val, $key.'.'.$field.'.' , $field);
85
86
            while(strstr($buffer,'{{'.$prefix.$key.'.'.$field.'}}')){
87
                $buffer = str_replace('{{'.$prefix.$key.'.'.$field.'}}',$val ,$buffer);
88
            }
89
        }
90
        return $buffer;
91
    }
92
93
    protected function replace_Array(string $buffer, array $array, ?string $prefix = '', ?string $key = ''): string
94
    {
95
        foreach($array as $field => $val){
96
            $buffer = $this->replace_value($buffer, $val, $key.'.'.$field.'.' , $field);
97
98
            while(strstr($buffer,'{{'.$prefix.$key.'.'.$field.'}}')){
99
                $buffer = str_replace('{{'.$prefix.$key.'.'.$field.'}}',$val,$buffer);
100
            }
101
        }
102
        return $buffer;
103
    }
104
105
    protected function removeComments(string $buffer): string
106
    {
107
        while(strstr($buffer,'<!--')){
108
            $comment = substr(
109
                $buffer,
110
                strpos($buffer,'<!--'),
111
                strpos(strstr($buffer,'<!--'),'-->')+3
112
            );
113
            $buffer = str_replace($comment,'',$buffer);
114
        }
115
        return $buffer;
116
    }
117
118
    protected function saveData(): bool
119
    {   
120
        if(session_status() !== PHP_SESSION_ACTIVE){
121
            return false;
122
        }
123
        unset($_SESSION['data']);
124
125
        if(!empty($_SESSION['save'])){
126
            foreach ($_SESSION['save'] as $key => $value) {
127
                $_SESSION['data'][$key] = $value;
128
            }
129
        }
130
        return true;
131
    }
132
133
}