Passed
Push — master ( af8266...a48404 )
by Henri
01:10
created

HelperTrait::getImport()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 24
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
c 1
b 0
f 0
dl 0
loc 24
rs 9.7998
cc 3
nc 3
nop 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A HelperTrait::saveData() 0 13 4
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
        $_SESSION['data'] = (!empty($data)) ? $data : $_SESSION['data'];
17
18
        ob_start();
19
        require($require);
20
        $response = ob_get_contents();
21
        ob_end_clean();
22
23
        $response = explode(PHP_EOL,$response);
24
        foreach($response as $index => $value){
25
            $response[$index] = ltrim($value);
26
        }
27
        
28
        return implode('',$response);
29
    }
30
31
    protected function getVars(string $buffer,string $prefix = null, ?array $values = null): string
32
    {
33
        $_SESSION['data'] = (empty($_SESSION['data'])) ? null : $_SESSION['data'];
34
35
        $vars = (is_null($values)) ? $_SESSION['data'] : $values;
36
37
        return (is_null($vars)) ? $buffer : $this->replace_vars($buffer, $vars, $prefix);
38
    }
39
40
    protected function replace_vars($buffer, $vars, $prefix): string
41
    {
42
        foreach ($vars as $key => $value) {
43
            switch(gettype($value)){
44
                case 'array':
45
                    $buffer = $this->replace_Array($buffer, $value, $prefix, $key);
46
                    break;
47
                case 'object':
48
                    $buffer = $this->replace_Object($buffer, $value, $prefix, $key);
49
                    break;
50
                default:
51
                    $buffer = $this->replace_value($buffer, $value, $prefix, $key);
52
                    break;
53
            }
54
        }
55
56
        return $buffer;
57
    }
58
59
    protected function replace_value(string $buffer, $value, string $prefix, string $key): string
60
    {
61
        if(gettype($value)!=='array' && gettype($value)!=='object'){
62
            while(strstr($buffer,'{{'.$prefix.$key.'}}')){
63
                $buffer = str_replace('{{'.$prefix.$key.'}}', $value ,$buffer);
64
            }
65
        }
66
        return $buffer;
67
    }
68
69
    protected function replace_Object(string $buffer, object $obj, string $prefix, string $key): string
70
    {
71
        foreach($obj->get_object_vars() as $field => $val){
72
            
73
            $buffer = $this->replace_value($buffer, $val, $key.'.'.$field.'.' , $field);
74
75
            while(strstr($buffer,'{{'.$prefix.$key.'.'.$field.'}}')){
76
                $buffer = str_replace('{{'.$prefix.$key.'.'.$field.'}}',$val ,$buffer);
77
            }
78
        }
79
        return $buffer;
80
    }
81
82
    protected function replace_Array(string $buffer, array $array, ?string $prefix = '', ?string $key = ''): string
83
    {
84
        foreach($array as $field => $val){
85
            $buffer = $this->replace_value($buffer, $val, $key.'.'.$field.'.' , $field);
86
87
            while(strstr($buffer,'{{'.$prefix.$key.'.'.$field.'}}')){
88
                $buffer = str_replace('{{'.$prefix.$key.'.'.$field.'}}',$val,$buffer);
89
            }
90
        }
91
        return $buffer;
92
    }
93
94
    protected function removeComments(string $buffer): string
95
    {
96
        while(strstr($buffer,'<!--')){
97
            $comment = substr(
98
                $buffer,
99
                strpos($buffer,'<!--'),
100
                strpos(strstr($buffer,'<!--'),'-->')+3
101
            );
102
            $buffer = str_replace($comment,'',$buffer);
103
        }
104
        return $buffer;
105
    }
106
107
    protected function saveData(): bool
108
    {   
109
        if(session_status() !== PHP_SESSION_ACTIVE){
110
            return false;
111
        }
112
        unset($_SESSION['data']);
113
114
        if(!empty($_SESSION['save'])){
115
            foreach ($_SESSION['save'] as $key => $value) {
116
                $_SESSION['data'][$key] = $value;
117
            }
118
        }
119
        return true;
120
    }
121
122
}