193 lines
6.4 KiB
PHP
193 lines
6.4 KiB
PHP
![]() |
<?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;
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|