summaryrefslogtreecommitdiffstats
path: root/main/survey/app/Controllers/VariableClass.php
blob: 93c1c69944edfe0e8ebb6b4edda08b82576c7d0e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<?php
/***************************************
 * Description: Služi kot seznam vseh globalnih spremenljivk, ki se uporabljajo v Main Survey in jih potem tudi definiramo v Controllerju
 * Autor: Robert Šmalc
 * Created date: 29.01.2016
 *****************************************/


namespace App\Controllers;


class VariableClass
{
    protected static $_configuration = array(
        'anketa' 		=> null,    // trenutna anketa
        'get' 			=> null,    // tukaj poberemo vse get parametre, ki se pošiljajo preko GET ali POST in jih dodamo v spremenljivko
        'grupa' 		=> null,    // trenutna grupa
        'spremenljivka' => null,    // trenutna spremenljivka
        'usr_id' 		=> null,    // ID trenutnega uporabnika
        'cookie_expire' => null, 	// nastavitev kdaj expira cookie, da vemo za primer brez cookie-ja, da prenasamo preko urlja
        'cookie_url' 	=> null,    // kadar cookie prenasamo po URLju, se v to spremenljivko zapise koda, ki jo dodamo vsakemu linku ($_GET)
        'printPreview' 	=> false,   // ali kliče konstruktor
        'hierarhija'    => null,    // če gre za hierarhijo potem poberemo get parametre

        /** prisilimo prikaz spremenljivke, za predogled vanalizah in mogoče še kje
         *
         * @public boolean
         */
        'forceShowSpremenljivka' => false,
        'db_table' 	=> '',
        'ime_AW' 	=> null,    // trenutno ime, ki se reseuje (socialna omrezja - alterwise)
        'loop_AW' 	=> null,
        'loop_id' 	=> null,    // vrednost po kateri loopamo, ce smo v loopu
        'lang_id' 	=> null,
        'language' 	=> '1',
        'smv' 		=> null,    // misnig vrednosti od ankete
        'mobile' 	=> 0,       // 0 - klasicna, 1 - mobilna, 2 - dlancniki
        'ismobile' 	=> 0,       // detekcija, ce je mobilna naprava

        'quick_view' 			=> false,   	// ali smo samo v predogledu ankete od uporabnika
        'user_inv_archive' 		=> 0,    		// id_arhiva vabil (če smo preko vabil)
        'displayAllPages' 		=> false,   	// ali smo v predogledu kjer izpisujemo vse strani
        'webSMSurvey'			=> '34862', 	// WebSM anketa, ki ne shranjuje nicesar in skoci na pravo stran (gru_id) glede na url
        'generateComputeJS' 	=> '',

        /**
         * @desc vrne array vseh spremenljivk vgnezdenih v podanem ifu
         */
        'getElements' => array(),
        'checkSpremenljivka' => array(),
        'checkIf' => array(),
        'getGrupa' => array(),
        'preskocena_first' => 1,        // spremenljivka, da pri preskocenih straneh ne delamo vsakic vseh querijev (ampak samo prvic)
        'cache_srv_data_grid' => '',            // ostale spremenljivke so cache, ki se v posted() polni in zapise v bazo v posted_commit()
        'cache_srv_data_vrednost' => '',
        'cache_srv_data_text' => '',
        'cache_srv_data_checkgrid' => '',
        'cache_srv_data_textgrid' => '',
        'cache_srv_data_rating' => '',
        'cache_srv_data_vrednost_cond' => '',
        'cache_srv_data_map' => '',
		'cache_srv_data_heatmap' => '',
        'cache_delete' => '',
        'lurker' => -1,
        'getOtherValue' => array(),
        'select_from_srv_spremenljivka' => array(),

        // Naknadno dodane globalne spremenljivke
        'userAutor' => false
    );

    protected $key, $value, $return;

    // Shrani novo vrednost na obstoječo spremenljivko ali doda novo spremenljivko
    public static function save($key, $value)
    {
		// Ce shranjujemo anketa_id ('anketa') jo najprej dekodiramo ce je potrebno
		if($key == 'anketa'){
			$value = self::decryptAnketaID($value);
		}

        $polje = self::izStringaVpolje($key);
        if ($polje){
            self::$_configuration[ $polje['spremenljivka'][0] ][ $polje['key'][0] ] = $value;
        } else {
            self::$_configuration[$key] = $value;
        };
    }
	
	// Popravimo id ankete ce gre za kodiranega (pri novih anketah je v url-ju kodiran id ankete da respondenti ne morejo dostopati do drugih anket)
	private static function decryptAnketaID($anketa){
		
		// Ce anketa ni numeric jo pretvorimo v originalen id
		if(!is_numeric($anketa)){
			
			$anketa_arr = str_split($anketa);
			$anketa_id = '';
			
			foreach($anketa_arr as $pos => $char){
				// Na lihih mestih pretvorimo crko nazaj v stevilko
				if($pos % 2 == 0)
					$anketa_id .= ord($char) - 97;
				else
					$anketa_id .= $char;
			}
		}
		else 
			$anketa_id = $anketa;
			
		return $anketa_id;
	}

    /************************************************
     *  Funkcija iz stringa naredi polje z id vrednostjo
     *  primer (string) 'polje[id]' uredi v (arrey) polje[id]
     * @return array()
     ************************************************/
    private static function izStringaVpolje($string)
    {
        // spremenljivka je mišljen tekst, ki je pred oklepaji
        $spremenljivka = array();
        // key je vrednost oz. id te spremenljivke, ki je med []
        $key = array();

        $t = "";
        for ($i = 0; $i < strlen($string); $i++) {
            if ($string[$i] == '[') {
                $spremenljivka[] = $t;
                $t = "";
                $t1 = "";
                $i++;
                while ($string[$i] != ']') {
                    $t1 .= $string[$i];
                    $i++;
                }
                $key[] = $t1;

            } else {
                if ($string[$i] != ']')
                    $t .= $string[$i];
                else {
                    continue;
                }

            }
        }

        // V kolikor je samo string
        if ($t != "")
            return false;

        return [
            'spremenljivka' => $spremenljivka,
            'key' => $key
        ];
    }


    // Dodamo vrednost k že obstoječi vrednosti
    public static function add($key, $value, $return = null)
    {
        self::$_configuration[$key] .= $value;

        if (!is_null($return))
            return $value;
    }

    public static function get($key)
    {
        return self::$_configuration[$key];
    }

    public static function getAll()
    {
        return self::$_configuration;
    }

    /************************************************
     * Pridobimo vse variable, ki se uporabljajo za main/survey in jih dodamo na Controller -> $this variable
     *
     * @return $this
     ************************************************/
    public function refresh()
    {
        foreach (self::$_configuration as $key => $value) {
            $this->$key = $value;
        }

        return $this;
    }


}