summaryrefslogtreecommitdiffstats
path: root/admin/survey/export/xmlClasses
diff options
context:
space:
mode:
authorAnton Luka Šijanec <anton@sijanec.eu>2022-01-11 12:35:47 +0100
committerAnton Luka Šijanec <anton@sijanec.eu>2022-01-11 12:35:47 +0100
commit19985dbb8c0aa66dc4bf7905abc1148de909097d (patch)
tree2cd5a5d20d7e80fc2a51adf60d838d8a2c40999e /admin/survey/export/xmlClasses
download1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.gz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.bz2
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.lz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.xz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.zst
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.zip
Diffstat (limited to 'admin/survey/export/xmlClasses')
-rw-r--r--admin/survey/export/xmlClasses/Vprasanja/BesediloXml.php94
-rw-r--r--admin/survey/export/xmlClasses/Vprasanja/CheckboxXml.php178
-rw-r--r--admin/survey/export/xmlClasses/Vprasanja/MultiGridXml.php395
-rw-r--r--admin/survey/export/xmlClasses/Vprasanja/RadioXml.php140
-rw-r--r--admin/survey/export/xmlClasses/Vprasanja/SteviloXml.php124
-rw-r--r--admin/survey/export/xmlClasses/class.XmlDocument.php360
-rw-r--r--admin/survey/export/xmlClasses/class.XmlSurvey.php590
-rw-r--r--admin/survey/export/xmlClasses/class.XmlSurveyElement.php433
8 files changed, 2314 insertions, 0 deletions
diff --git a/admin/survey/export/xmlClasses/Vprasanja/BesediloXml.php b/admin/survey/export/xmlClasses/Vprasanja/BesediloXml.php
new file mode 100644
index 0000000..3a429cb
--- /dev/null
+++ b/admin/survey/export/xmlClasses/Vprasanja/BesediloXml.php
@@ -0,0 +1,94 @@
+<?php
+/***************************************
+ * Description: Priprava Xml kode za besedilo
+ *
+ *
+ * Autor: Patrik Pucer
+ * Datum: 10/2018
+ *****************************************/
+
+define("VARFORMAT_ELEMENT_TYPE_BESEDILO", "character");
+
+class BesediloXml extends XmlSurveyElement
+{
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+ protected $xml;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new BesediloXml();
+ }
+
+ public function export($spremenljivke=null, $db_table=null, $preveriSpremenljivko=null, $export_subtype=null, $loop_id=null, $xml=null){
+ global $lang;
+
+ // Ce je spremenljivka v loopu
+ $this->loop_id = $loop_id;
+ $this->xml = $xml;
+
+ // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta
+ $sqlVrednostiString = "SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red";
+ $sqlVrednosti = sisplet_query($sqlVrednostiString);
+
+ //$numRowsSql = mysqli_num_rows($sqlVrednosti);
+
+ //Zacetek elementa var
+ xmlwriter_start_element($this->xml, 'var');
+
+ //izpis ID in name
+ $attribute = 'ID';
+ $element = $spremenljivke['variable'];
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'name';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ //izpis ID in name - konec
+
+ //Element labl
+ if($spremenljivke['label']){ //ce je Labela pod Napredno, jo dodamo
+ $element = 'labl';
+ $text = $spremenljivke['label'];
+ $this->writeXmlElement($this->xml, $text, $element);
+ }
+ //Element labl - konec
+
+
+ //Priprava besedila vprasanja in njen izpis #################################################################
+ $rowl = $this->srv_language_spremenljivka($spremenljivke);
+ if (strip_tags($rowl['naslov']) != '') $spremenljivke['naslov'] = $rowl['naslov'];
+ if (strip_tags($rowl['info']) != '') $spremenljivke['info'] = $rowl['info'];
+
+ //Element qstn
+ xmlwriter_start_element($this->xml, 'qstn');
+ $element = 'qstnLit';
+ $text = strip_tags($spremenljivke['naslov'], '<a><img><ul><li><ol><br>');
+ $this->writeXmlElement($this->xml, $text, $element);
+ xmlwriter_end_element($this->xml);
+ //Element qstn - konec
+
+ //Priprava besedila vprasanja in njen izpis - konec #################################################################
+
+ //Element varFormat
+ xmlwriter_start_element($this->xml, 'varFormat');
+ $attribute = 'type';
+ $element = VARFORMAT_ELEMENT_TYPE_BESEDILO;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ xmlwriter_end_element($this->xml);
+ //Element varFormat - konec
+
+ //Konec elementa var
+ xmlwriter_end_element($this->xml); // var
+ }
+} \ No newline at end of file
diff --git a/admin/survey/export/xmlClasses/Vprasanja/CheckboxXml.php b/admin/survey/export/xmlClasses/Vprasanja/CheckboxXml.php
new file mode 100644
index 0000000..3864fac
--- /dev/null
+++ b/admin/survey/export/xmlClasses/Vprasanja/CheckboxXml.php
@@ -0,0 +1,178 @@
+<?php
+/***************************************
+ * Description: Priprava Xml kode za checkbox
+ *
+ *
+ * Autor: Patrik Pucer
+ * Datum: 10/2018
+ *****************************************/
+
+define("VARGRP_ELEMENT_TYPE", "multipleResp");
+define("VARFORMAT_ELEMENT_TYPE", "numeric");
+
+class CheckboxXml extends XmlSurveyElement
+{
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+ protected $xml;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new CheckboxXml();
+ }
+
+ public function export($spremenljivke=null, $db_table=null, $preveriSpremenljivko=null, $export_subtype=null, $loop_id=null, $xml=null){
+ global $lang;
+
+ // Ce je spremenljivka v loopu
+ $this->loop_id = $loop_id;
+ $this->xml = $xml;
+
+ //polja za shranjevanje podatkov za izpis
+ $qstnLits = array();
+ $varNames = array();
+ $missings = array();
+ //polja za shranjevanje podatkov za izpis - konec
+
+ // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta
+ $sqlVrednostiString = "SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red";
+ $sqlVrednosti = sisplet_query($sqlVrednostiString);
+
+ //$numRowsSql = mysqli_num_rows($sqlVrednosti);
+
+ //Pobiranje podatkov za izpis
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti ########################################################
+ while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
+ $mozenOdgovor = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ));
+
+ $varName = strip_tags($rowVrednost['variable']);
+
+ $qstnLit = strip_tags($mozenOdgovor);
+
+ if($rowVrednost['other']<0){
+ $missing = "Y";
+ }else{
+ $missing = "N";
+ }
+
+ //belezenje podatkov za kasnejsi izpis
+ $qstnLits[] = $qstnLit;
+ $varNames[] = $varName;
+ $missings[] = $missing;
+ //belezenje podatkov za kasnejsi izpis - konec
+
+ }
+ //pregled vseh moznih vrednosti (kategorij, mozni odgovori) po $sqlVrednosti - konec
+ //Pobiranje podatkov za izpis - konec
+
+ //Zacetek elementa varGrp
+/* xmlwriter_start_element($this->xml, 'varGrp');
+ $attribute = 'name';
+ $element = $spremenljivke['variable'];
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'type';
+ $element = VARGRP_ELEMENT_TYPE;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'var';
+ $element = "";
+ foreach($varNames as $key => $varName){
+ if((int)$varName==0){ //ce ni missing vrednost
+ if($key == 0){
+ $element .= $varName;
+ }else{
+ $element .= " ".$varName;
+ }
+ }
+ }
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ xmlwriter_end_element($this->xml); // varGrp */
+ //Konec elementa varGrp
+
+ foreach($varNames as $key => $varName){ //za vsak mozen odgovor
+ //if((int)$varName==0){ //ce ni missing vrednost
+ //Zacetek elementa var ###############################################################################
+ xmlwriter_start_element($this->xml, 'var');
+
+ //izpis ID in name
+ $attribute = 'ID';
+ $element = $varName;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ $attribute = 'name';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ //izpis ID in name - konec
+
+ //Element labl
+ if($spremenljivke['label']){ //ce je Labela pod Napredno, jo dodamo
+ $element = 'labl';
+ $text = $spremenljivke['label'];
+ $this->writeXmlElement($this->xml, $text, $element);
+ }
+ //Element labl - konec
+
+ //Priprava besedila vprasanja in njen izpis #################################################################
+ $rowl = $this->srv_language_spremenljivka($spremenljivke);
+ if (strip_tags($rowl['naslov']) != '') $spremenljivke['naslov'] = $rowl['naslov'];
+ if (strip_tags($rowl['info']) != '') $spremenljivke['info'] = $rowl['info'];
+ //Element qstn
+ xmlwriter_start_element($this->xml, 'qstn');
+ $element = 'preQTxt';
+ $text = strip_tags($spremenljivke['naslov'], '<a><img><ul><li><ol><br>');
+ $this->writeXmlElement($this->xml, $text, $element);
+
+ $element = 'qstnLit';
+ $text = strip_tags($qstnLits[$key], '<a><img><ul><li><ol><br>');
+ $this->writeXmlElement($this->xml, $text, $element);
+ xmlwriter_end_element($this->xml);
+ //Element qstn - konec
+ //Priprava besedila vprasanja in njen izpis - konec #################################################################
+
+ //Element catgry
+ $attribute = 'missing';
+ $missingElement = $missings[$key];
+ $catValu = [1, 0];
+ $lablCatgry = ['Izbran', 'Ni izbran'];
+ foreach($catValu as $keyCatgry => $catVal){
+ xmlwriter_start_element($this->xml, 'catgry');
+ xmlwriter_write_attribute($this->xml, $attribute, $missingElement); //zacetek missing
+ //Element catValu
+ $element = 'catValu';
+ $text = $catVal;
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element catValu - konec
+ //Element labl
+ $element = 'labl';
+ $text = $lablCatgry[$keyCatgry];
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element labl - konec
+ xmlwriter_end_attribute($this->xml); //konec missing
+ xmlwriter_end_element($this->xml);
+ }
+ //Element catgry - konec
+
+ //Element varFormat
+ xmlwriter_start_element($this->xml, 'varFormat');
+ $attribute = 'type';
+ $element = VARFORMAT_ELEMENT_TYPE;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ xmlwriter_end_element($this->xml);
+ //Element varFormat - konec
+
+ //Konec elementa var ###############################################################################
+ xmlwriter_end_element($this->xml); // var
+ //}
+ }
+ }
+} \ No newline at end of file
diff --git a/admin/survey/export/xmlClasses/Vprasanja/MultiGridXml.php b/admin/survey/export/xmlClasses/Vprasanja/MultiGridXml.php
new file mode 100644
index 0000000..8914625
--- /dev/null
+++ b/admin/survey/export/xmlClasses/Vprasanja/MultiGridXml.php
@@ -0,0 +1,395 @@
+<?php
+/***************************************
+ * Description: Priprava Xml kode za klasicne tabele
+ *
+ *
+ * Autor: Patrik Pucer
+ * Datum: 10/2018
+ *****************************************/
+
+define("VARGRP_ELEMENT_TYPE_GRID", "Grid");
+define("VARGRP_ELEMENT_TYPE_MULTIRESP", "multipleResp");
+define("VARFORMAT_ELEMENT_TYPE_GRID", "numeric");
+
+class MultiGridXml extends XmlSurveyElement
+{
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+ protected $xml;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new MultiGridXml();
+ }
+
+ public function export($spremenljivke=null, $db_table=null, $preveriSpremenljivko=null, $export_subtype=null, $loop_id=null, $xml=null){
+ global $lang;
+
+ // Ce je spremenljivka v loopu
+ $this->loop_id = $loop_id;
+ $this->xml = $xml;
+
+ //polja za shranjevanje podatkov za izpis
+ $qstnLits = array();
+ $varNames = array();
+ $missings = array();
+ $catValus = array();
+ $labls = array();
+ $varNamesDb = array(); //atribut name ob dvojni tabeli
+ //polja za shranjevanje podatkov za izpis - konec
+
+ //Pobiranje podatkov za izpis ######################################################################################################
+
+
+ //VREDNOSTI
+ // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta
+ $sqlVrednostiString = "SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red";
+ $sqlVrednosti = sisplet_query($sqlVrednostiString);
+
+ //$numRowsSql = mysqli_num_rows($sqlVrednosti);
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti
+ while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
+ $mozenOdgovor = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ));
+
+ $varName = strip_tags($rowVrednost['variable']);
+ $qstnLit = strip_tags($mozenOdgovor);
+
+ //belezenje podatkov za kasnejsi izpis
+ $varNames[] = $varName;
+ $qstnLits[] = $qstnLit;
+ //belezenje podatkov za kasnejsi izpis - konec
+ }
+ //pregled vseh moznih vrednosti (kategorij, mozni odgovori) po $sqlVrednosti - konec
+ //VREDNOSTI - Konec
+
+ //MOZNI ODGOVORI
+ $sqlMozniOdgovoriString = "SELECT naslov, variable, other FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red";
+ $sqlMozniOdgovori = sisplet_query($sqlMozniOdgovoriString);
+ while ($rowMozniOdgovori = mysqli_fetch_assoc($sqlMozniOdgovori)){
+ $labl = strip_tags($rowMozniOdgovori['naslov']);
+ if($rowMozniOdgovori['other']==0){ //ce ni missing
+ $catValu = strip_tags($rowMozniOdgovori['variable']);
+ }else{
+ $catValu = $rowMozniOdgovori['other'];
+ }
+
+ if($rowMozniOdgovori['other']<0){
+ $missing = "Y";
+ }else{
+ $missing = "N";
+ }
+
+ //belezenje podatkov za kasnejsi izpis
+ $labls[] = $labl;
+ $missings[] = $missing;
+ $catValus[] = $catValu;
+ //belezenje podatkov za kasnejsi izpis - konec
+ }
+ //MOZNI ODGOVORI - KONEC
+
+ //Pobiranje podatkov za izpis - konec ###############################################################################################
+
+ //Zacetek elementa varGrp
+/* xmlwriter_start_element($this->xml, 'varGrp');
+ $attribute = 'name';
+ $element = $spremenljivke['variable'];
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'type';
+ $element = VARGRP_ELEMENT_TYPE_GRID;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'var';
+ $element = "";
+ foreach($varNames as $key => $varName){
+ if((int)$varName==0){ //ce ni missing vrednost
+ if($key == 0){
+ $element .= $varName;
+ }elseif($key == 2&&$spremenljivke['enota']==3&&$spremenljivke['tip']==6){ //ce je index 2 in je dvojna tabela klasicne tabele, ne rabimo vec oznak spremenljivke
+ break;
+ }
+ else{
+ $element .= " ".$varName;
+ }
+ }
+ }
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ //Element labl
+ if($spremenljivke['label']){ //ce je Labela pod Napredno, jo dodamo
+ $element = 'labl';
+ $text = $spremenljivke['label'];
+ $this->writeXmlElement($this->xml, $text, $element);
+ }
+ //Element labl - konec
+
+ xmlwriter_end_element($this->xml); // varGrp */
+ //Konec elementa varGrp
+
+ //CE JE DVOJNA TABELA KLASICNE TABELE ###############################################################
+ if($spremenljivke['enota']==3&&$spremenljivke['tip']==6){ //ce je dvojna tabela klasicne tabele
+
+ //Preureditev $catValus, da se razpolovi dolzino polja
+ $startIndexCatValus = count($catValus)/2 - 1;
+ $numOfCatValus = count($catValus)/2;
+ array_splice($catValus, $startIndexCatValus, $numOfCatValus);
+ //Preureditev $catValus, da se razpolovi dolzino polja - konec
+
+ //Preureditev $labls in $qstnLits, da se doda se enkrat toliko odgovorov
+ foreach($labls as $labl){
+ $labls[] = $labl;
+ }
+ foreach($qstnLits as $qstnLit){
+ $qstnLits[] = $qstnLit;
+ }
+ //Preureditev $labls in $qstnLit, da se doda se enkrat toliko odgovorov - konec
+
+ //Zacetek elementa varGrp za prvo podtabelo
+/* xmlwriter_start_element($this->xml, 'varGrp');
+ $attribute = 'name';
+ $element = $spremenljivke['variable'].'a';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'type';
+ $element = VARGRP_ELEMENT_TYPE_GRID;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'var';
+ $element = "";
+ $char = 'a'; //za dodatno oznacevanje var
+ foreach($varNames as $key => $varName){
+ if((int)$varName==0){ //ce ni missing vrednost
+ if($key == 0){
+ //$element .= $spremenljivke['variable'].'a'.$char;
+ $elementTmp = $spremenljivke['variable'].'a'.$char;
+ $element .= $elementTmp;
+ }else{
+ //$element .= " ".$spremenljivke['variable'].'a'.$char;
+ $elementTmp = " ".$spremenljivke['variable'].'a'.$char;
+ $element .= $elementTmp;
+ }
+ $varNamesDb[] = $elementTmp;
+ }
+ $char++;
+ }
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ //Element labl
+ if($spremenljivke['grid_subtitle1']){ //ce je label za podnaslov 1
+ $element = 'labl';
+ $text = $spremenljivke['grid_subtitle1'];
+ $this->writeXmlElement($this->xml, $text, $element);
+ }
+ //Element labl - konec
+
+ xmlwriter_end_element($this->xml); // varGrp */
+ //Konec elementa varGrp za prvo podtabelo
+
+ //Zacetek elementa varGrp za drugo podtabelo
+/* xmlwriter_start_element($this->xml, 'varGrp');
+ $attribute = 'name';
+ $element = $spremenljivke['variable'].'b';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'type';
+ $element = VARGRP_ELEMENT_TYPE_GRID;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'var';
+ $element = "";
+ $char = 'a'; //za dodatno oznacevanje var
+ foreach($varNames as $key => $varName){
+ if((int)$varName==0){ //ce ni missing vrednost
+ $elementTmpDb = $spremenljivke['variable'].'b'.$char;
+ if($key == 0){
+ $element .= $elementTmpDb;
+ }else{
+ $elementTmp = " ".$elementTmpDb;
+ $element .= $elementTmp;
+ }
+ $varNamesDb[] = $elementTmpDb;
+ }
+ $char++;
+ }
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ //Element labl
+ if($spremenljivke['grid_subtitle2']){ //ce je label za podnaslov 2
+ $element = 'labl';
+ $text = $spremenljivke['grid_subtitle2'];
+ $this->writeXmlElement($this->xml, $text, $element);
+ }
+ //Element labl - konec
+
+ xmlwriter_end_element($this->xml); // varGrp */
+ //Konec elementa varGrp za drugo podtabelo
+
+ //$char = 'a'; //za dodatno oznacevanje var v naslednjih elementih
+ $varNames = $varNamesDb;
+ }
+ //CE JE DVOJNA TABELA KLASICNE TABELE - KONEC ###############################################################
+
+ if($spremenljivke['tip']==16){ //ce je multicheckbox, uredi varGrp
+
+/* for($l=0;$l<count($varNames);$l++){
+ //Preureditev $labls in $qstnLits, da je dovolj elementov v polju za izpis
+ foreach($labls as $labl){
+ $labls[] = $labl;
+ }
+ foreach($qstnLits as $qstnLit){
+ $qstnLits[] = $qstnLit;
+ }
+ //Preureditev $labls in $qstnLit, da je dovolj elementov v polju za izpis - konec
+ }
+
+ foreach($varNames as $key => $varName){ //za vsak mozen odgovor
+ //Zacetek elementa varGrp za prvo podtabelo
+ xmlwriter_start_element($this->xml, 'varGrp');
+ $attribute = 'name';
+ $element = $varName;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'type';
+ $element = VARGRP_ELEMENT_TYPE_MULTIRESP;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'var';
+ $element = "";
+ $char = 'a'; //za dodatno oznacevanje var
+ foreach($varNames as $key2 => $varName2){
+ if((int)$varName2==0){ //ce ni missing vrednost
+ $elementTmpDb = $varName.$char;
+ if($key2 == 0){
+ $element .= $elementTmpDb;
+ }else{
+ $elementTmp = " ".$elementTmpDb;
+ $element .= $elementTmp;
+ }
+ $varNamesDb[] = $elementTmpDb;
+ }
+ $char++;
+ }
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ //Element labl
+ if($spremenljivke['grid_subtitle1']){ //ce je label za podnaslov 1
+ $element = 'labl';
+ $text = $spremenljivke['grid_subtitle1'];
+ $this->writeXmlElement($this->xml, $text, $element);
+ }
+ //Element labl - konec
+
+ xmlwriter_end_element($this->xml); // varGrp
+ //Konec elementa varGrp za prvo podtabelo
+ }
+ $varNames = $varNamesDb; */
+
+ }
+
+
+ foreach($varNames as $key => $varName){ //za vsak mozen odgovor
+
+ //if((int)$varName==0){ //ce ni missing vrednost
+ //Zacetek elementa var ###############################################################################
+ xmlwriter_start_element($this->xml, 'var');
+
+ //izpis ID in name
+ $attribute = 'ID';
+ $element = $varName;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ $attribute = 'name';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ //izpis ID in name - konec
+
+ //Element labl
+ $element = 'labl';
+ $text = strip_tags($qstnLits[$key], '<a><img><ul><li><ol><br>');
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element labl - konec
+
+ //Priprava besedila vprasanja in njen izpis #################################################################
+ $rowl = $this->srv_language_spremenljivka($spremenljivke);
+ if (strip_tags($rowl['naslov']) != '') $spremenljivke['naslov'] = $rowl['naslov'];
+ if (strip_tags($rowl['info']) != '') $spremenljivke['info'] = $rowl['info'];
+ //Element qstn
+ xmlwriter_start_element($this->xml, 'qstn');
+ $element = 'preQTxt';
+ $text = strip_tags($spremenljivke['naslov'], '<a><img><ul><li><ol><br>');
+ $this->writeXmlElement($this->xml, $text, $element);
+
+ $element = 'qstnLit';
+ //$text = strip_tags($qstnLits[$key], '<a><img><ul><li><ol><br>');
+ $text = strip_tags($qstnLits[$key], '<a><img><ul><li><ol><br>');
+ $this->writeXmlElement($this->xml, $text, $element);
+ xmlwriter_end_element($this->xml);
+ //Element qstn - konec
+ //Priprava besedila vprasanja in njen izpis - konec #################################################################
+
+ //Element catgry
+ $attribute = 'missing';
+ if($spremenljivke['tip']==16){ //ce je multicheckbox,
+ //$missingElement = $missings[$key];
+/* $catValu = [1, 0];
+ $lablCatgry = ['Izbran', 'Ni izbran'];
+ foreach($catValu as $keyCatgry => $catVal){
+ xmlwriter_start_element($this->xml, 'catgry');
+ $missingElement = $missings[$keyCatgry];
+ xmlwriter_write_attribute($this->xml, $attribute, $missingElement); //zacetek missing
+ //Element catValu
+ $element = 'catValu';
+ $text = $catVal;
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element catValu - konec
+ //Element labl
+ $element = 'labl';
+ $text = $lablCatgry[$keyCatgry];
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element labl - konec
+ xmlwriter_end_attribute($this->xml); //konec missing
+ xmlwriter_end_element($this->xml);
+ } */
+ }else{
+ foreach($catValus as $keyCatgry => $catVal){
+ xmlwriter_start_element($this->xml, 'catgry');
+ $missingElement = $missings[$keyCatgry];
+ xmlwriter_write_attribute($this->xml, $attribute, $missingElement); //zacetek missing
+ //Element catValu
+ $element = 'catValu';
+ $text = $catVal;
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element catValu - konec
+ //Element labl
+ $element = 'labl';
+ $text = $labls[$keyCatgry];
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element labl - konec
+ xmlwriter_end_attribute($this->xml); //konec missing
+ xmlwriter_end_element($this->xml);
+ }
+ }
+ //Element catgry - konec
+
+ //Element varFormat
+ xmlwriter_start_element($this->xml, 'varFormat');
+ $attribute = 'type';
+ $element = VARFORMAT_ELEMENT_TYPE_GRID;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ xmlwriter_end_element($this->xml);
+ //Element varFormat - konec
+ //Konec elementa var ###############################################################################
+ xmlwriter_end_element($this->xml); // var
+ //}
+ }
+ }
+} \ No newline at end of file
diff --git a/admin/survey/export/xmlClasses/Vprasanja/RadioXml.php b/admin/survey/export/xmlClasses/Vprasanja/RadioXml.php
new file mode 100644
index 0000000..cbe5682
--- /dev/null
+++ b/admin/survey/export/xmlClasses/Vprasanja/RadioXml.php
@@ -0,0 +1,140 @@
+<?php
+/***************************************
+ * Description: Priprava Xml kode za radio
+ *
+ *
+ * Autor: Patrik Pucer
+ * Datum: 10/2018
+ *****************************************/
+
+define("VARFORMAT_ELEMENT_TYPE", "numeric");
+
+class RadioXml extends XmlSurveyElement
+{
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+ protected $xml;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new RadioXml();
+ }
+
+ public function export($spremenljivke=null, $db_table=null, $preveriSpremenljivko=null, $export_subtype=null, $loop_id=null, $xml=null){
+ global $lang;
+
+ // Ce je spremenljivka v loopu
+ $this->loop_id = $loop_id;
+ $this->xml = $xml;
+
+ // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta
+ $sqlVrednostiString = "SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red";
+ $sqlVrednosti = sisplet_query($sqlVrednostiString);
+
+ //$numRowsSql = mysqli_num_rows($sqlVrednosti);
+
+ //Zacetek elementa var
+ xmlwriter_start_element($this->xml, 'var');
+
+ //self::$spremenljivka = $spremenljivke['id'];
+ $row = Cache::srv_spremenljivka($spremenljivke['id']);
+ $this->spremenljivkaParams = new enkaParameters($row['params']);
+
+ // Ce je spremenljivka v loopu
+ $this->loop_id = $loop_id;
+
+ //izpis ID in name
+ $attribute = 'ID';
+ $element = $spremenljivke['variable'];
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'name';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ //izpis ID in name - konec
+
+ //Element labl
+ if($spremenljivke['label']){ //ce je Labela pod Naprednom jo dodamo
+ $element = 'labl';
+ $text = $spremenljivke['label'];
+ $this->writeXmlElement($this->xml, $text, $element);
+ }
+ //Element labl - konec
+
+
+ //Priprava besedila vprasanja in njen izpis #################################################################
+ $rowl = $this->srv_language_spremenljivka($spremenljivke);
+ if (strip_tags($rowl['naslov']) != '') $spremenljivke['naslov'] = $rowl['naslov'];
+ if (strip_tags($rowl['info']) != '') $spremenljivke['info'] = $rowl['info'];
+
+ //Element qstn
+ xmlwriter_start_element($this->xml, 'qstn');
+ $element = 'qstnLit';
+ $text = strip_tags($spremenljivke['naslov'], '<a><img><ul><li><ol><br>');
+ $this->writeXmlElement($this->xml, $text, $element);
+ xmlwriter_end_element($this->xml);
+ //Element qstn - konec
+
+ //Priprava besedila vprasanja in njen izpis - konec #################################################################
+
+ //Izpis moznih moznih odgovorov
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti ########################################################
+
+ while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
+ $mozenOdgovor = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ));
+
+ //if($rowVrednost['other']!=0){
+ if($rowVrednost['other']<0){
+ $missing = "Y";
+ }else{
+ $missing = "N";
+ }
+ $catValu = strip_tags($rowVrednost['variable']);
+ $labl = strip_tags($mozenOdgovor);
+
+ //Element catgry
+ xmlwriter_start_element($this->xml, 'catgry');
+ $attribute = 'missing';
+ $element = $missing;
+ xmlwriter_write_attribute($this->xml, $attribute, $element); //zacetek missing
+ //Element catValu
+ $element = 'catValu';
+ $text = $catValu;
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element catValu - konec
+ //Element labl
+ $element = 'labl';
+ $text = $labl;
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element labl - konec
+ xmlwriter_end_attribute($this->xml); //konec missing
+ xmlwriter_end_element($this->xml);
+ //Element catgry - konec
+ }
+ //pregled vseh moznih vrednosti (kategorij, mozni odgovori) po $sqlVrednosti - konec
+
+ //Element varFormat
+ xmlwriter_start_element($this->xml, 'varFormat');
+ $attribute = 'type';
+ //$element = 'numeric';
+ $element = VARFORMAT_ELEMENT_TYPE;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ xmlwriter_end_element($this->xml);
+ //Element varFormat - konec
+
+ //Izpis moznih moznih odgovorov - konec ########################################################
+
+ //Konec elementa var
+ xmlwriter_end_element($this->xml); // var
+ }
+} \ No newline at end of file
diff --git a/admin/survey/export/xmlClasses/Vprasanja/SteviloXml.php b/admin/survey/export/xmlClasses/Vprasanja/SteviloXml.php
new file mode 100644
index 0000000..b51476e
--- /dev/null
+++ b/admin/survey/export/xmlClasses/Vprasanja/SteviloXml.php
@@ -0,0 +1,124 @@
+<?php
+/***************************************
+ * Description: Priprava Xml kode za stevilo
+ *
+ *
+ * Autor: Patrik Pucer
+ * Datum: 10/2018
+ *****************************************/
+
+define("VARFORMAT_ELEMENT_TYPE_STEVILO", "numeric");
+
+class SteviloXml extends XmlSurveyElement
+{
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+ protected $xml;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new SteviloXml();
+ }
+
+ public function export($spremenljivke=null, $db_table=null, $preveriSpremenljivko=null, $export_subtype=null, $loop_id=null, $xml=null){
+ global $lang;
+
+ $this->xml = $xml;
+
+ //Priprava besedila vprasanja in njen izpis #################################################################
+ $rowl = $this->srv_language_spremenljivka($spremenljivke);
+ if (strip_tags($rowl['naslov']) != '') $spremenljivke['naslov'] = $rowl['naslov'];
+ if (strip_tags($rowl['info']) != '') $spremenljivke['info'] = $rowl['info'];
+
+ //Ureditev izbire besedila vprasanja in enote
+ // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta
+ $sqlVrednostiString = "SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red";
+ $sqlVrednosti = sisplet_query($sqlVrednostiString);
+ while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
+ $besediloEnota = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ));
+ }
+ //Ureditev izbire besedila vprasanja in enote - konec
+
+ //Zacetek elementa var
+ xmlwriter_start_element($this->xml, 'var');
+
+ //Izpis ID in name
+ $attribute = 'ID';
+ $element = $spremenljivke['variable'];
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'name';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ //Izpis ID in name - konec
+
+ if($besediloEnota!=$lang['srv_new_text']){
+ $attribute = 'measUnit';
+ $element = $besediloEnota;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ }
+
+ //Element labl
+ if($spremenljivke['label']){ //ce je Labela pod Naprednom jo dodamo
+ $element = 'labl';
+ $text = $spremenljivke['label'];
+ $this->writeXmlElement($this->xml, $text, $element);
+ }
+ //Element labl - konec
+
+ //Element qstn
+ xmlwriter_start_element($this->xml, 'qstn');
+ $element = 'qstnLit';
+ $text = strip_tags($spremenljivke['naslov'], '<a><img><ul><li><ol><br>');
+ $this->writeXmlElement($this->xml, $text, $element);
+ xmlwriter_end_element($this->xml);
+ //Element qstn - konec
+ //Priprava besedila vprasanja in njen izpis - konec #################################################################
+
+ //Element valrng / valRng
+ if($spremenljivke['vsota_min']!=$spremenljivke['vsota_limit']){ //ce je prisoten vsaj en limit, dodaj element
+ //xmlwriter_start_element($this->xml, 'valRng');
+ xmlwriter_start_element($this->xml, 'valrng');
+ xmlwriter_start_element($this->xml, 'range'); //element range
+ $attribute = 'min';
+ $element = $spremenljivke['vsota_min'];
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ if($spremenljivke['vsota_limit']>$spremenljivke['vsota_min']){
+ $attribute = 'max';
+ $element = $spremenljivke['vsota_limit'];
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ }
+ xmlwriter_end_element($this->xml); //element range - konec
+ xmlwriter_end_element($this->xml);
+ }
+ //Element valrng / valRng - konec
+
+ //Element varFormat
+ xmlwriter_start_element($this->xml, 'varFormat');
+ $attribute = 'type';
+ $element = VARFORMAT_ELEMENT_TYPE_STEVILO;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+/* if($besediloEnota!=$lang['srv_new_text']){
+ $attribute = 'measUnit';
+ $element = $besediloEnota;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ } */
+ xmlwriter_end_element($this->xml);
+ //Element varFormat - konec
+
+ //Konec elementa var
+ xmlwriter_end_element($this->xml); // var
+ }
+} \ No newline at end of file
diff --git a/admin/survey/export/xmlClasses/class.XmlDocument.php b/admin/survey/export/xmlClasses/class.XmlDocument.php
new file mode 100644
index 0000000..0ef6397
--- /dev/null
+++ b/admin/survey/export/xmlClasses/class.XmlDocument.php
@@ -0,0 +1,360 @@
+<?php
+
+/**
+ *
+ * Class ki skrbi inicializacijo xml dokumenta
+ *
+ *
+ */
+
+####################################
+
+####################################konec
+
+include('../../vendor/autoload.php');
+define("CODEBOOK_VERSION", 2.1);
+
+class XmlDocument{
+
+ var $export_type; // Tip izvoza (vprašalnik, analize...)
+ var $export_subtype; // Podtip izvoza
+ var $export_format; // Format izvoza (latex->pdf, latex->rtf, xls...)
+
+ var $anketa; // ID ankete
+ var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+
+ var $grupa = null; // trenutna grupa
+ var $usrId = null; // trenutni user
+ var $spremenljivka; // trenutna spremenljivka
+
+ //spremenljivke za Nastavitve pdf/rtf izvozov
+ var $export_font_size = 10;
+ var $export_numbering = 0;
+ var $export_show_if = 0;
+ var $export_show_intro = 0;
+ var $export_data_type = 0; // nacin izpisa vprasanlnika - kratek -> 0, dolg -> 1, zelo kratek -> 2
+ var $export_data_font_size;
+ var $export_data_numbering;
+ var $export_data_show_recnum;
+ var $export_data_show_if;
+ var $export_data_PB;
+ var $export_data_skip_empty;
+ var $export_data_skip_empty_sub;
+ var $export_data_landscape;
+ //spremenljivke za Nastavitve pdf/rtf izvozov - konec
+
+ var $head; // za shrambo tex preamble in zacetek dokumenta
+ var $tail; // za shrambo tex zakljucka dokumenta
+ var $naslovnicaUkaz; //za shrambo ukaza za izris naslovnice dokumenta
+ var $headerAndFooter; //za shrambo ukaza za izris glave in noge dokumenta
+ protected $surveyStyle; //za shrambo environmenta vprasalnika (omogoca spreminjanje velikosti besedila glede na izbrano nastavitev)
+ protected $analysisStyle; //za shrambo environmenta vprasalnika (omogoca spreminjanje velikosti besedila glede na izbrano nastavitev)
+ protected $statusStyle; //za shrambo environmenta vprasalnika (omogoca spreminjanje velikosti besedila glede na izbrano nastavitev)
+
+ protected $isAnswer = '';
+ protected $isAnswerBreakPodVprasanjem = '';
+
+ protected $xml='';
+
+ function __construct($anketa=null){
+ global $site_path, $global_user_id, $admin_type, $lang;
+ $this->anketa = $anketa;
+ }
+ ###################################### konec construct-a
+
+ public function createXmlDocument($export_type='', $export_subtype='', $export_format=''){
+ global $lang, $site_path;
+
+ // Ustvarimo ogrodje dokumenta (locena funkcija), glavo, nogo, naslovnico...
+ $this->InitDocumentVars($export_type, $export_subtype, $export_format); //pridobi vse potrebne spremenljivke za ustvarjanje ogrodja dokumenta
+
+ #spremenljivke#################################################################
+ $datumGeneriranjaIzvoza = date("d. m. Y");
+
+ $anketaUstvarjena = SurveyInfo::getInstance()->getSurveyInsertDate();
+ $dolgoImeAnkete = SurveyInfo::getSurveyColumn('naslov');
+ $kratkoImeAnkete = SurveyInfo::getSurveyColumn('akronim');
+ $steviloVprasanj = SurveyInfo::getSurveyQuestionCount();
+ $anketaSpremenjena = SurveyInfo::getSurveyEditDate();
+ $avtorAnkete = SurveyInfo::getSurveyInsertName();
+ $avtorSpremenilAnketo = SurveyInfo::getSurveyEditName();
+ $surveyId = SurveyInfo::getSurveyId();
+ $userName = SurveyInfo::getUserInsertInfo('name');
+ $userSurname = SurveyInfo::getUserInsertInfo('surname');
+ $enkaVersion = SurveyInfo::getEnkaVersion('value');
+ $datumAktivacije = SurveyInfo::getSurveyStartsDate();
+ $datumDeaktivacije = SurveyInfo::getSurveyExpireDate();
+ $firstEntryDate = SurveyInfo::getSurveyFirstEntryDate();
+ $lastEntryDate = SurveyInfo::getSurveyLastEntryDate();
+ $completedSurveys = SurveyInfo::getValidSurveysCount();
+ $partiallyCompletedSurveys = SurveyInfo::getPartiallyValidSurveysCount();
+ $emptySurveys = SurveyInfo::getInvalidSurveysCount();
+
+ $sas = new SurveyAdminSettings(0, $surveyId);
+ $skupni_cas = $sas->testiranje_cas(1);
+
+ ################################################
+ #spremenljivke################################################################# konec
+
+ $xml = xmlwriter_open_memory(); //Creating new xmlwriter using memory for string output
+ $this->xml = $xml;
+
+ //zacetek xml dokumenta
+ xmlwriter_set_indent($this->xml, 1);
+ $res = xmlwriter_set_indent_string($this->xml, ' ');
+ xmlwriter_start_document($this->xml, '1.0', 'UTF-8');
+ //zacetek xml dokumenta - konec
+
+ //Dodajanje DOCTYPE'<!DOCTYPE codeBook SYSTEM "http://www.ddialliance.org/sites/default/files/Version2-1.dtd">'
+ xmlwriter_start_dtd($this->xml, 'codeBook', null, 'http://www.ddialliance.org/sites/default/files/Version2-1.dtd');
+ xmlwriter_end_dtd($this->xml);
+ //Dodajanje DOCTYPE - konec
+
+ //Zacetek elementa codeBook
+ xmlwriter_start_element($this->xml, 'codeBook');
+ $attribute = 'version';
+ $element = CODEBOOK_VERSION;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+ //Zacetek elementa codeBook - konec
+
+ //Element stdyDscr ##################################################################
+ xmlwriter_start_element($this->xml, 'stdyDscr'); //Zacetek elementa stdyDscr
+
+ xmlwriter_start_element($this->xml, 'citation'); //Zacetek elementa citation
+
+ xmlwriter_start_element($this->xml, 'titlStmt'); //Zacetek elementa titlStmt
+ //Element titl
+ $element = 'titl';
+ $text = $dolgoImeAnkete;
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element titl - konec
+
+ //Element altTitl
+ $element = 'altTitl';
+ $text = $kratkoImeAnkete;
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element altTitl - konec
+
+ //Element IDNo
+ $element = 'IDNo';
+ $text = $surveyId;
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element IDNo - konec
+ xmlwriter_end_element($this->xml); //Zakljucek elementa titlStmt
+
+ xmlwriter_start_element($this->xml, 'rspStmt'); //Zacetek elementa rspStmt
+ //Element AuthEnty
+ $element = 'AuthEnty';
+ //$text = $userName.' '.$userSurname;
+ $text = $avtorAnkete;
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element AuthEnty - konec
+ xmlwriter_end_element($this->xml); //Zakljucek elementa rspStmt
+
+ xmlwriter_start_element($this->xml, 'prodStmt'); //Zacetek elementa prodStmt
+ xmlwriter_start_element($this->xml, 'prodDate'); //Zacetek elementa prodDate
+ $attribute = 'date';
+ $element = date('Y-m-d');
+ $writeAttribute = 1;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element, $writeAttribute);
+ xmlwriter_end_element($this->xml); //Zakljucek elementa prodDate
+
+ xmlwriter_start_element($this->xml, 'software'); //Zacetek elementa software
+ $attribute = 'version';
+ $element = $enkaVersion;
+ $writeAttribute = 0;
+ $string = 1;
+ $text = '1KA - OneClick Survey';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element, $writeAttribute, $string, $text);
+ xmlwriter_end_element($this->xml); //Zakljucek elementa software
+ xmlwriter_end_element($this->xml); //Zakljucek elementa prodStmt
+
+ xmlwriter_start_element($this->xml, 'verStmt'); //Zacetek elementa verStmt
+ xmlwriter_start_element($this->xml, 'version'); //Zacetek elementa version
+
+ //izpis type in date
+ $attribute = 'type';
+ $element = 'version';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'date';
+ $element = date('Y-m-d');
+ $writeAttribute = 1;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element, $writeAttribute);
+ xmlwriter_end_element($this->xml); //Zakljucek elementa version
+ xmlwriter_end_element($this->xml); //Zakljucek elementa verStmt
+
+ xmlwriter_end_element($this->xml); //Zakljucek elementa citation
+
+ xmlwriter_start_element($this->xml, 'stdyInfo'); //Zacetek elementa stdyInfo
+
+ xmlwriter_start_element($this->xml, 'sumDscr'); //Zacetek elementa sumDscr
+
+ xmlwriter_start_element($this->xml, 'collDate'); //Zacetek elementa collDate
+ //izpis event in date
+ $attribute = 'event';
+ $element = 'start';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'date';
+ $date = date_create($datumAktivacije);
+ $element = date_format($date, 'Y-m-d');
+ $writeAttribute = 1;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element, $writeAttribute);
+ xmlwriter_end_element($this->xml); //Zakljucek elementa collDate
+
+ xmlwriter_start_element($this->xml, 'collDate'); //Zacetek elementa collDate
+ //izpis event in date
+ $attribute = 'event';
+ $element = 'end';
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element);
+
+ $attribute = 'date';
+ $date = date_create($datumDeaktivacije);
+ $element = date_format($date, 'Y-m-d');
+ $writeAttribute = 1;
+ $this->writeXmlAttr4Element($this->xml, $attribute, $element, $writeAttribute);
+ xmlwriter_end_element($this->xml); //Zakljucek elementa collDate
+
+ //Element dataKind
+ $element = 'dataKind';
+ $text = 'survey';
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element dataKind - konec
+
+ xmlwriter_end_element($this->xml); //Zakljucek elementa sumDscr
+
+ xmlwriter_end_element($this->xml); //Zakljucek elementa stdyInfo
+
+ xmlwriter_start_element($this->xml, 'method'); //Zacetek elementa method
+
+ xmlwriter_start_element($this->xml, 'dataCol'); //Zacetek elementa dataCol
+ //Element collMode
+ $element = 'collMode';
+ $text = 'web survey';
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element collMode - konec
+
+ //Element collSitu
+ $dateFirstEntryDate = date_create($firstEntryDate);
+ $elementFirstEntryDate = date_format($dateFirstEntryDate, 'Y-m-d');
+ $dateLastEntryDate = date_create($lastEntryDate);
+ $elementLastEntryDate = date_format($dateLastEntryDate, 'Y-m-d');
+
+ $element = 'collSitu';
+ $text = '
+ Completed questionnaires: '.$completedSurveys.'
+ Partially completed questionnaires: '.$partiallyCompletedSurveys.'
+ Empty questionnaires: '.$emptySurveys.'
+ First entry: '.$elementFirstEntryDate.'
+ Last entry: '.$elementLastEntryDate.'
+ Average duration: '.$skupni_cas.' ';
+ xmlwriter_start_cdata($this->xml, $text);
+ xmlwriter_end_cdata($this->xml);
+
+ $this->writeXmlElement($this->xml, $text, $element);
+ //Element collSitu - konec
+
+ xmlwriter_end_element($this->xml); //Zakljucek elementa dataCol
+
+ xmlwriter_end_element($this->xml); //Zakljucek elementa method
+
+
+ xmlwriter_end_element($this->xml); //Zakljucek elementa stdyDscr
+ //Element stdyDscr - konec ##################################################################
+
+ //Glede na tip in podtip poklicemo ustrezen razred za izris vsebine xml porocila
+ switch ($export_type){
+ case 'survey':
+ $survey = new XmlSurvey($this->anketa, $export_format, $xml);
+ switch ($export_subtype){
+ case 'q_empty_xml':
+ $survey->displaySurvey($export_subtype, $this->export_data_type);
+ break;
+ }
+ break;
+ }
+
+ //Glede na tip in podtip poklicemo ustrezen razred za izris vsebine xml porocila - konec
+
+ //Zakljucek elementa Codebook
+ xmlwriter_end_element($this->xml);
+ //Zakljucek elementa Codebook - konec
+
+ //Zakljucek xml dokumenta
+ xmlwriter_end_document($this->xml);
+
+ $this->xml = xmlwriter_output_memory($xml); //Returns current buffer with xml
+
+ # generating xml file
+ $filename = 'export_'.$export_subtype.'_'.$surveyId.'.xml';
+
+ $fp = fopen(admin_temp($filename), "w") or
+ die ("cannot generate file $filename<br>\n");
+ fwrite($fp, $this->xml) or
+ die ("cannot send data to file<br>\n");
+ fclose($fp);
+ # generating xml file - konec
+
+ # generating xml output
+ $this->OutputXml($filename);
+ # generating xml output - konec
+
+ }
+ ###################################### konec funkcije createDocument
+
+
+ #####################################################################################################
+ //Podporne funkcije za delovanje createDocument
+ #####################################################################################################
+ function InitDocumentVars($export_type='', $export_subtype='', $export_format=''){
+ global $site_path;
+
+ $this->export_type = $export_type;
+ $this->export_subtype = $export_subtype;
+ $this->export_format = $export_format;
+
+ if($export_type == 'survey'){ //ce je format 'survey', potrebuje naslednje nastavitve
+ SurveySetting::getInstance()->Init($this->anketa);
+ }
+
+ }
+ ###################################### konec InitDocumentVars
+
+ //Funkcija za generiranje in brisanje datotek za pdf izvoz
+ function OutputXml($filename=''){
+ //priprava header za xml in forced download
+ header('Content-type: application/xml');
+ header('Content-Disposition: attachment; filename="' . $filename . '"');
+ //priprava header za xml in forced download - konec
+
+ readfile(admin_temp($filename));
+
+ //brisanje temp xml datoteke
+ unlink(admin_temp($filename));
+ //brisanje temp xml datoteke - konec
+ }
+ #############################################
+
+ function writeXmlAttr4Element($xml=null, $attribute=null, $element=null, $writeAttribute=0, $string=0, $text=''){
+ $this->xml = $xml;
+ if($writeAttribute){
+ xmlwriter_write_attribute($this->xml, $attribute, $element);
+ }else{
+ xmlwriter_start_attribute($this->xml, $attribute);
+ }
+ xmlwriter_text($this->xml, $element);
+ xmlwriter_end_attribute($this->xml);
+
+ if($string){
+ xmlwriter_text($this->xml, $text);
+ }
+ }
+
+ function writeXmlElement($xml=null, $text=null, $element=null){
+ $this->xml = $xml;
+ xmlwriter_start_element($this->xml, $element);
+ xmlwriter_text($this->xml, $text);
+ xmlwriter_end_element($this->xml);
+ }
+} \ No newline at end of file
diff --git a/admin/survey/export/xmlClasses/class.XmlSurvey.php b/admin/survey/export/xmlClasses/class.XmlSurvey.php
new file mode 100644
index 0000000..c4f7250
--- /dev/null
+++ b/admin/survey/export/xmlClasses/class.XmlSurvey.php
@@ -0,0 +1,590 @@
+<?php
+
+/**
+ *
+ * Class ki skrbi za izris vprasalnika v xml
+ *
+ *
+ */
+
+include('../../vendor/autoload.php');
+
+class XmlSurvey{
+
+ var $anketa; // ID ankete
+ var $tex; //shrani tex kodo
+ var $texNewLine = '\\\\ ';
+ var $texPageBreak = "\\pagebreak";
+ //var $texPageBreak = "\\newpage";
+ var $export_format;
+ var $export_data_show_recnum;
+ var $exportDataPageBreak=0; //vsak respondent na svoji strani
+
+ var $commentType = 1; // tip izpisa komentarjev
+
+ var $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ var $db_table = '';
+
+ protected $showIntro = 0;
+ protected $type = 0; // tip izpisa - 0->navaden, 1->iz prve strani, 2->s komentarji
+
+ protected $showIf = 0; // izpis if-ov
+
+ var $skipEmpty = 0; // izpusti vprasanja brez odgovora
+ var $skipEmptySub = 0; // izpusti podvprasanja brez odgovora
+
+ protected $recnum = 0;
+ protected $usr_id = 0;
+ protected $texBigSkip = '\bigskip';
+
+ protected $xml;
+
+ function __construct($anketa=null, $export_format='', $xml=null){
+ global $site_path, $global_user_id, $admin_type, $lang;
+
+ $this->anketa = $anketa;
+ $this->export_format = $export_format;
+ $this->xml = $xml;
+
+ $this->usr_id = $_GET['usr_id'];
+
+ if ($this->usr_id != '') {
+ $sqlR = sisplet_query("SELECT recnum FROM srv_user WHERE id = '$this->usr_id '");
+ $rowR = mysqli_fetch_array($sqlR);
+ $this->recnum = $rowR['recnum'];
+ }
+
+ //pridobitev nastavitev izvoza
+ SurveySetting::getInstance()->Init($this->anketa);
+ $this->export_data_show_recnum = SurveySetting::getInstance()->getSurveyMiscSetting('export_data_show_recnum'); //ali je potrebno pokazati recnum ob vsakem respondentu
+ $this->exportDataPageBreak = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_PB'); //ali mora vsak izpis odgovorov respondenta zaceti na svoji strani
+
+ //if ( SurveyInfo::getInstance()->SurveyInit($this->anketa['id']) && $this->init())
+ if ( SurveyInfo::getInstance()->SurveyInit($this->anketa) )
+ {
+ if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1){
+ $this->db_table = '_active';
+ }
+ }
+ else{
+ return false;
+ }
+ }
+
+ #funkcija, ki skrbi za izpis praznega vprasalnika v xml
+ public function displaySurvey($export_subtype='', $export_data_type=''){
+ global $lang;
+
+ xmlwriter_start_element($this->xml, 'dataDscr'); //Zacetek elementa dataDscr
+
+ //echo "in function: ".$export_data_type."</br>";
+ $rowA = SurveyInfo::getInstance()->getSurveyRow();
+
+ // filtriramo spremenljivke glede na profil
+ SurveyVariablesProfiles :: Init($this->anketa);
+
+ $dvp = SurveyUserSetting :: getInstance()->getSettings('default_variable_profile');
+ $_currentVariableProfile = SurveyVariablesProfiles :: checkDefaultProfile($dvp);
+
+ $tmp_svp_pv = SurveyVariablesProfiles :: getProfileVariables($_currentVariableProfile);
+
+ foreach ( $tmp_svp_pv as $vid => $variable) {
+ $tmp_svp_pv[$vid] = substr($vid, 0, strpos($vid, '_'));
+ }
+
+ $sqlGrupeString = "SELECT id FROM srv_grupa WHERE ank_id='".$this->anketa."' ORDER BY vrstni_red";
+ $sqlGrupe = sisplet_query($sqlGrupeString);
+
+ //echo "__________________________________</br>";
+ //echo "Funkcija displaySurvey user: $this->usr_id</br>";
+
+ $question = new XmlSurveyElement($this->anketa, $this->export_format, $this->usr_id, $export_subtype, $this->xml);
+
+ while ( $rowGrupe = mysqli_fetch_assoc( $sqlGrupe ) ){ // sprehodmo se skozi grupe ankete
+ $this->grupa = $rowGrupe['id'];
+
+ // Pogledamo prvo spremenljivko v grupi ce je v loopu
+ $sql = sisplet_query("SELECT * FROM srv_spremenljivka WHERE gru_id='".$this->grupa."' AND visible='1' ORDER BY vrstni_red ASC");
+ $row = mysqli_fetch_array($sql);
+
+ // ce je ima loop za parenta
+ $if_id = $this->find_parent_loop($row['id']);
+
+ // Navadne spremenljivke ki niso v loopu
+
+ $loop_id = 'IS NULL';
+ //$zaporedna = 0;
+ $sqlSpremenljivke = sisplet_query("SELECT * FROM srv_spremenljivka WHERE gru_id='".$this->grupa."' AND visible='1' ORDER BY vrstni_red ASC");
+ while ($rowSpremenljivke = mysqli_fetch_assoc($sqlSpremenljivke)){ // sprehodimo se skozi spremenljivke grupe
+ $spremenljivka = $rowSpremenljivke['id'];
+ //echo "Ni v loop-u:".$rowSpremenljivke['tip']." </br>";
+
+ $preveriSpremenljivko = $this->checkSpremenljivka($spremenljivka); //preveri ali je spremenljivka vidna (zaradi branchinga)
+
+ if ($preveriSpremenljivko){ // lahko izrišemo spremenljivke
+ // če imamo številčenje Type = 1 potem številčimo V1
+/* if (SurveyInfo::getInstance()->getSurveyCountType()){
+ $zaporedna++;
+ } */
+
+ //$stevilcenje = ( SurveyInfo::getInstance()->getSurveyCountType() ) ? ( ( SurveyInfo::getInstance()->getSurveyCountType() == 2 ) ? $rowSpremenljivke['variable'].") " : $zaporedna.") " ) : null;
+
+
+ // izpis navadnega vprasalnika #####################
+ //izpisi posamezen element praznega vprasalnika
+ $question->displaySurveyElement($rowSpremenljivke, $export_subtype, $preveriSpremenljivko, $this->loop_id);
+ // izpis navadnega vprasalnika - konec #############
+
+ //$this->pdf->Ln(LINE_BREAK);
+ }
+ }
+ }
+ xmlwriter_end_element($this->xml); //Zakljucek elementa dataDscr
+ }
+ #funkcija, ki skrbi za izpis praznega vprasalnika v xml - konec
+
+ function getGrupa() {return $this->grupa;}
+
+
+ /**
+ * @desc preveri ali je spremenljivka vidna (zaradi branchinga)
+ */
+ function checkSpremenljivka ($spremenljivka=null) {
+
+ $sql = sisplet_query("SELECT * FROM srv_spremenljivka WHERE id = '".$spremenljivka."'");
+ if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
+ $row = mysqli_fetch_array($sql);
+
+ if ($row['visible'] == 0) return false;
+
+ $sql1 = sisplet_query("SELECT * FROM srv_branching WHERE element_spr = '".$spremenljivka."'");
+ if (!$sql1) echo mysqli_error($GLOBALS['connect_db']);
+ $row1 = mysqli_fetch_array($sql1);
+
+ /*if (!$this->checkIf($row1['parent']))
+ return false;*/
+
+ return true;
+ }
+
+ /**
+ * @desc preveri ali je spremenljivka vidna (zaradi branchinga), ko je q_data ali q_data_all
+ */
+ //function checkSpremenljivkaData ($spremenljivka, $gridMultiple=false) {
+ function checkSpremenljivkaData ($spremenljivka=null, $loop_id_raw=null, $gridMultiple=false) {
+
+ $loop_id = $loop_id_raw == 'IS NULL' ? " IS NULL" : " = '".$loop_id_raw."'";
+
+ $sql = sisplet_query("SELECT * FROM srv_spremenljivka WHERE id = '".$spremenljivka."'");
+ if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
+ $row = mysqli_fetch_array($sql);
+
+ // Ce vprasanje ni vidno ali ce uporabnik nima dostopa do vprasanja
+ if ($row['visible'] == 0 || !( ($this->admin_type <= $row['dostop'] && $this->admin_type>=0) || ($this->admin_type==-1 && $row['dostop']==4) ) )
+ return false;
+ //echo "skipEmpty: $this->skipEmpty </br>";
+ // Preverjamo ce je vprasanje prazno in ce preskakujemo prazne
+ if($this->skipEmpty==1 && !$gridMultiple){
+
+ $isEmpty = true;
+ //echo "isEmpty: ".$isEmpty."</br>";
+ switch ( $row['tip'] ){
+ case 1: //radio
+ case 2: //check
+ case 3: //select -> radio
+ //$sqlUserAnswer = sisplet_query("SELECT * FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$row[id]' AND usr_id='".$this->usr_id."' AND vre_id!='-2'");
+ $sqlUserAnswerString = "SELECT * FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$row[id]' AND usr_id='".$this->usr_id."' AND vre_id>'0' AND loop_id $loop_id ";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0){
+ $isEmpty = false;
+ }
+ break;
+
+ case 6: //multigrid
+ case 16:// multicheckbox
+ case 19:// multitext
+ case 20:// multinumber
+ if($row['tip'] == 6 && $row['enota'] != 3){
+ $sqlUserAnswerString = "SELECT * FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ elseif($row['tip'] == 16 || ($row['tip'] == 6 && $row['enota'] == 3)){
+ //$sqlUserAnswer = sisplet_query("SELECT * FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->usr_id."'");
+ $sqlUserAnswerString = "SELECT * FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ else{
+ //$sqlUserAnswer = sisplet_query("SELECT * FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->usr_id."'");
+ $sqlUserAnswerString ="SELECT * FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ //echo "stevilo podatkov: ".mysqli_num_rows($sqlUserAnswer)."</br>";
+ if(mysqli_num_rows($sqlUserAnswer) > 0){
+ $isEmpty = false;
+ }
+ break;
+
+ case 7: //number
+ case 8: //datum
+ case 18: //vsota
+ case 21: //besedilo*
+ $sqlUserAnswerString = "SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='".$row['id']."' AND usr_id='".$this->usr_id."' AND loop_id $loop_id";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0)
+ $isEmpty = false;
+ break;
+
+ case 17: //ranking
+ $sqlUserAnswerString = "SELECT * FROM srv_data_rating WHERE spr_id=".$row['id']." AND usr_id='".$this->usr_id."' AND loop_id $loop_id";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0)
+ $isEmpty = false;
+ break;
+
+ case 24: //mesan multigrid
+ // loop po podskupinah gridov
+ $sqlSubGrid = sisplet_query("SELECT m.spr_id, s.tip, s.enota FROM srv_grid_multiple m, srv_spremenljivka s WHERE m.parent='".$spremenljivka."' AND m.spr_id=s.id");
+ while($rowSubGrid = mysqli_fetch_array($sqlSubGrid)){
+ if($rowSubGrid['tip'] == 6){
+ //$sqlUserAnswerString = "SELECT grd_id FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."'";
+ $sqlUserAnswerString = "SELECT grd_id FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ elseif($rowSubGrid['tip'] == 16){
+ //$sqlUserAnswerString = "SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."'";
+ $sqlUserAnswerString ="SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ else{
+ //$sqlUserAnswerString = "SELECT grd_id, text FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."'";
+ $sqlUserAnswerString = "SELECT grd_id, text FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0){
+ $isEmpty = false;
+ break;
+ }
+ }
+ break;
+
+ case 5: //nagovor
+ // Ce je nagovor v loopu, ga prikazemo
+ if($this->loop_id != null)
+ $isEmpty = false;
+ break;
+
+ case 26: //lokacija
+ //$sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_map WHERE spr_id='".$row['id']."' AND usr_id='".$this->usr_id."' ";
+ $sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_map WHERE spr_id='".$row['id']."' AND usr_id='".$this->usr_id."' AND loop_id $loop_id";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0)
+ $isEmpty = false;
+ break;
+
+ case 27: //heatmap
+ //$sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_heatmap WHERE spr_id='".$row['id']."' AND usr_id='".$this->usr_id."' ";
+ $sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_heatmap WHERE spr_id='".$row['id']."' AND usr_id='".$this->usr_id."' AND loop_id $loop_id";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0)
+ $isEmpty = false;
+ break;
+
+ default:
+ $isEmpty = false;
+ //$isEmpty = true;
+ break;
+ }
+ //echo "isEmpty na koncu: ".$isEmpty."</br>";
+ if($isEmpty == true){
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ function displayIf($if=null){
+ global $lang;
+ //echo "</br> displayIf funkcija </br> ";
+ $sql_if_string = "SELECT * FROM srv_if WHERE id = '$if'";
+ //echo "sql_if_string: ".$sql_if_string." </br>";
+ //$sql_if = sisplet_query("SELECT * FROM srv_if WHERE id = '$if'");
+ $sql_if = sisplet_query($sql_if_string);
+ $row_if = mysqli_fetch_array($sql_if);
+ //echo "tip: ".$row_if['tip']." </br>";
+ // Blok
+ if($row_if['tip'] == 1)
+ $output = strtoupper($lang['srv_block']).' ';
+ // Loop
+ elseif($row_if['tip'] == 2)
+ $output = strtoupper($lang['srv_loop']).' ';
+ // IF
+ else
+ $output = 'IF ';
+
+ $sql_if = sisplet_query("SELECT * FROM srv_if WHERE id = '$if'");
+ $row_if = mysqli_fetch_array($sql_if);
+ $output .= '('.$row_if['number'].') ';
+
+ $sql = Cache::srv_condition($if);
+
+ $bracket = 0;
+ $i = 0;
+ while ($row = mysqli_fetch_array($sql)) {
+
+ if ($i++ != 0)
+ if ($row['conjunction'] == 0)
+ $output .= ' and ';
+ else
+ $output .= ' or ';
+
+ if ($row['negation'] == 1)
+ $output .= ' NOT ';
+
+ for ($i=1; $i<=$row['left_bracket']; $i++)
+ $output .= ' ( ';
+
+ // obicajne spremenljivke
+ if ($row['spr_id'] > 0) {
+
+ $row2 = Cache::srv_spremenljivka($row['spr_id']);
+
+ // obicne spremenljivke
+ if ($row['vre_id'] == 0) {
+ $row1 = Cache::srv_spremenljivka($row['spr_id']);
+ // multigrid
+ } elseif ($row['vre_id'] > 0) {
+ $sql1 = sisplet_query("SELECT * FROM srv_vrednost WHERE id = '$row[vre_id]'");
+ $row1 = mysqli_fetch_array($sql1);
+ } else
+ $row1 = null;
+
+ $output .= $row1['variable'];
+
+ // radio, checkbox, dropdown in multigrid
+ if (($row2['tip'] <= 3 || $row2['tip'] == 6) && ($row['spr_id'] || $row['vre_id'])) {
+
+ if ($row['operator'] == 0)
+ $output .= ' = ';
+ else
+ $output .= ' != ';
+
+ $output .= '[';
+
+ // obicne spremenljivke
+ if ($row['vre_id'] == 0) {
+ $sql2 = sisplet_query("SELECT * FROM srv_condition_vre c, srv_vrednost v WHERE cond_id='$row[id]' AND c.vre_id=v.id");
+
+ $j = 0;
+ while ($row2 = mysqli_fetch_array($sql2)) {
+ if ($j++ != 0) $output .= ', ';
+ $output .= $row2['variable'];
+ }
+ // multigrid
+ } elseif ($row['vre_id'] > 0) {
+ $sql2 = sisplet_query("SELECT g.* FROM srv_condition_grid c, srv_grid g WHERE c.cond_id='$row[id]' AND c.grd_id=g.id AND g.spr_id='$row[spr_id]'");
+
+ $j = 0;
+ while ($row2 = mysqli_fetch_array($sql2)) {
+ if ($j++ != 0) $output .= ', ';
+ $output .= $row2['variable'];
+ }
+ }
+
+ $output .= ']';
+
+ // textbox in nubmer mata drugacne pogoje in opcije
+ } elseif ($row2['tip'] == 4 || $row2['tip'] == 21 || $row2['tip'] == 7 || $row2['tip'] == 22) {
+
+ if ($row['operator'] == 0)
+ $output .= ' = ';
+ elseif ($row['operator'] == 1)
+ $output .= ' <> ';
+ elseif ($row['operator'] == 2)
+ $output .= ' < ';
+ elseif ($row['operator'] == 3)
+ $output .= ' <= ';
+ elseif ($row['operator'] == 4)
+ $output .= ' > ';
+ elseif ($row['operator'] == 5)
+ $output .= ' >= ';
+
+ $output .= '\''.$row['text'].'\'';
+
+ }
+
+ // recnum
+ } elseif ($row['spr_id'] == -1) {
+
+ $output .= 'mod(recnum, '.$row['modul'].') = '.$row['ostanek'];
+
+ }
+
+ for ($i=1; $i<=$row['right_bracket']; $i++)
+ $output .= ' ) ';
+ }
+
+ if ($row_if['label'] != '') {
+ $output .= ' (';
+ $output .= ' '.$row_if['label'].' ';
+ $output .= ') ';
+ }
+ echo $output."</br>";
+/* $this->pdf->SetTextColor(0,0,150);
+ $this->pdf->setFont('','B',$this->font);
+ $this->pdf->MultiCell(90, 1, $this->encodeText($output),0,'L',0,1,0,0);
+ $this->pdf->SetTextColor(0,0,0);
+ $this->pdf->setFont('','',$this->font); */
+
+ return $output;
+ }
+
+ /* poisce, ce ima podani element parenta, ki je loop
+ *
+ */
+ function find_parent_loop ($element_spr=null, $element_if=0) {
+
+ //$sql = sisplet_query("SELECT parent FROM srv_branching WHERE element_spr = '$element_spr' AND element_if = '$element_if' AND ank_id='".$this->anketa['id']."'");
+ $sql = sisplet_query("SELECT parent FROM srv_branching WHERE element_spr = '$element_spr' AND element_if = '$element_if' AND ank_id='".$this->anketa."'");
+ if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
+ $row = mysqli_fetch_array($sql);
+
+ if ($row['parent'] == 0) return 0;
+
+ $sql = sisplet_query("SELECT id FROM srv_if WHERE id = '$row[parent]' AND tip = '2'");
+ if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
+ if (mysqli_num_rows($sql) > 0)
+ return $row['parent'];
+ else
+ return $this->find_parent_loop(0, $row['parent']);
+
+ }
+
+ /**
+ * poisce naslednjo vre_id v loopu
+ *
+ */
+ function findNextLoopId ($if_id=0) {
+ if ($if_id == 0) {
+ $sql = sisplet_query("SELECT * FROM srv_loop_data WHERE id='$this->loop_id'");
+ $row = mysqli_fetch_array($sql);
+ $if_id = $row['if_id'];
+ $loop_id = $this->loop_id;
+ } else{
+ $loop_id = 0;
+ }
+
+ $sql = sisplet_query("SELECT * FROM srv_loop WHERE if_id = '$if_id'");
+ $row = mysqli_fetch_array($sql);
+ $spr_id = $row['spr_id'];
+ $max = $row['max'];
+
+ $spr = Cache::srv_spremenljivka($spr_id);
+ //echo "spr tip: ".$spr['tip']."</br>";
+ if ($spr['tip'] == 2 || $spr['tip'] == 3 || $spr['tip'] == 9) {
+ $data_vrednost = array();
+ if($spr['tip'] == 9){
+ if($this->usr_id){
+ $sql1String = "SELECT vre_id FROM srv_data_text".$this->db_table." WHERE spr_id='$spr_id' AND usr_id='".$this->usr_id."' ";
+ }else{
+ $sql1String = "SELECT vre_id FROM srv_data_text".$this->db_table." WHERE spr_id='$spr_id' ";
+ }
+ }
+ else{
+ if($this->usr_id){
+ $sql1String = "SELECT vre_id FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$spr_id' AND usr_id='".$this->usr_id."'";
+ }else{
+ $sql1String = "SELECT vre_id FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$spr_id' ";
+ }
+ }
+ //echo $sql1String;
+ $sql1 = sisplet_query($sql1String);
+ while ($row1 = mysqli_fetch_array($sql1)) {
+ $data_vrednost[$row1['vre_id']] = 1;
+ }
+
+ $vre_id = '';
+ $i = 1;
+ //$sql = sisplet_query("SELECT * FROM srv_loop_vre WHERE if_id='$if_id'");
+
+ $sql = sisplet_query("SELECT * FROM srv_loop_vre lv, srv_vrednost v WHERE lv.if_id='$if_id' AND lv.vre_id=v.id ORDER BY v.vrstni_red ASC");
+ while ($row = mysqli_fetch_array($sql)) {
+
+ if ($row['tip'] == 0) { // izbran
+ if ( isset($data_vrednost[$row['vre_id']]) ) {
+ $vre_id .= ', '.$row['vre_id'];
+ $i++;
+ }
+ } elseif ($row['tip'] == 1) { // ni izbran
+ if ( !isset($data_vrednost[$row['vre_id']]) ) {
+ $vre_id .= ', '.$row['vre_id'];
+ $i++;
+ }
+ } elseif ($row['tip'] == 2) { // vedno
+ $vre_id .= ', '.$row['vre_id'];
+ $i++;
+ } // nikoli nimamo sploh v bazi, zato ni potrebno nic, ker se nikoli ne prikaze
+
+ if ($i > $max && $max>0) break;
+ }
+
+ $vre_id = substr($vre_id, 2);
+
+ if ($vre_id == '') return null;
+
+ $sql = sisplet_query("SELECT l.* FROM srv_loop_data l, srv_vrednost v WHERE l.if_id='$if_id' AND l.id > '$loop_id' AND l.vre_id IN ($vre_id) AND l.vre_id=v.id ORDER BY l.id ASC");
+ if (!$sql) { echo 'err56545'.mysqli_error($GLOBALS['connect_db']); die();}
+ $row = mysqli_fetch_array($sql);
+
+ if (mysqli_num_rows($sql) > 0)
+ return $row['id'];
+ else
+ return null;
+
+ // number
+ } elseif ($spr['tip'] == 7) {
+
+ //$sql1 = sisplet_query("SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id='$spr_id' AND usr_id='".$this->getUserId()."'");
+ $sql1 = sisplet_query("SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id='$spr_id' AND usr_id='".$this->user_id."'");
+ $row1 = mysqli_fetch_array($sql1);
+
+ $num = (int)$row1['text'];
+ $sql2 = sisplet_query("SELECT * FROM srv_loop_data WHERE if_id='$if_id' AND id <= '$loop_id'");
+ if (mysqli_num_rows($sql2) >= $num || (mysqli_num_rows($sql2) >= $max && $max>0))
+ return null;
+
+ $sql = sisplet_query("SELECT * FROM srv_loop_data WHERE if_id='$if_id' AND id > '$loop_id'");
+ $row = mysqli_fetch_array($sql);
+
+ if (mysqli_num_rows($sql) > 0)
+ return $row['id'];
+ else
+ return null;
+
+ }
+ }
+
+ /**
+ * @desc V podanem stringu poisce spremenljivke in jih spajpa z vrednostmi
+ */
+ function dataPiping ($text='') {
+ Common::getInstance()->Init($this->anketa);
+ echo Common::getInstance()->dataPiping($text, $this->usr_id, $this->loop_id)."</br>";
+ return Common::getInstance()->dataPiping($text, $this->usr_id, $this->loop_id);
+ }
+
+ function writeXmlAttr4Element($xml=null, $attribute=null, $element=null, $writeAttribute=0){
+ $this->xml = $xml;
+ if($writeAttribute){
+ xmlwriter_write_attribute($this->xml, $attribute, $element);
+ }else{
+ xmlwriter_start_attribute($this->xml, $attribute);
+ }
+ xmlwriter_text($this->xml, $element);
+ xmlwriter_end_attribute($this->xml);
+ }
+
+ function writeXmlElement($xml=null, $text=null, $element=null){
+ $this->xml = $xml;
+ xmlwriter_start_element($this->xml, $element);
+ xmlwriter_text($this->xml, $text);
+ xmlwriter_end_element($this->xml);
+ }
+} \ No newline at end of file
diff --git a/admin/survey/export/xmlClasses/class.XmlSurveyElement.php b/admin/survey/export/xmlClasses/class.XmlSurveyElement.php
new file mode 100644
index 0000000..630cdca
--- /dev/null
+++ b/admin/survey/export/xmlClasses/class.XmlSurveyElement.php
@@ -0,0 +1,433 @@
+<?php
+
+/**
+ *
+ * Class ki skrbi za izris posameznega vprasanja za vprašalnik
+ *
+ *
+ */
+
+include('../../vendor/autoload.php');
+
+define("MAX_STRING_LENGTH", 60);
+define("LINE_BREAK_AT", '7 cm');
+define("RADIO_BTN_SIZE", 0.13);
+define("CHCK_BTN_SIZE", 0.13);
+define("PIC_SIZE_ANS", "\includegraphics[width=3cm]"); //slika dolocene sirine
+define("DROPDOWN_SIZE", 0.8);
+
+
+class XmlSurveyElement{
+
+ public $anketa; // ID ankete
+ public static $spremenljivka;
+ public $spremenljivkaParams;
+ public $stevilcenje;
+ public $showIf = 0; // izpis if-ov
+ public $numbering = 0; // ostevillcevanje vprasanj
+ public $export_format;
+ public $questionText;
+ protected $usr_id = null; // id userja ki je odgovarjal (na katerega so vezani podatki)
+ protected $db_table = '';
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+ protected $userAnswer = array();
+ //protected $userDataPresent = array();
+ //protected $userDataPresent = 0;
+ protected $xml;
+
+
+ function __construct($anketa=null, $export_format='', $usr_id=null, $export_subtype='', $xml=null){
+ global $site_path, $global_user_id, $admin_type, $lang;
+
+ $this->anketa = $anketa;
+
+ $this->xml = $xml;
+/* $this->spremenljivka = $spremenljivka;
+ $this->stevilcenje = $stevilcenje; */
+
+ $this->numbering = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_numbering');
+
+ $this->export_format = $export_format;
+
+ //$this->usr_id = $_GET['usr_id'];
+ $this->usr_id = $usr_id;
+
+
+ if ( SurveyInfo::getInstance()->SurveyInit($anketa))
+ {
+ SurveyUserSetting::getInstance()->Init($anketa, $global_user_id);
+
+ if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1)
+ $this->db_table = '_active';
+ }
+ else{
+ return false;
+ }
+
+ }
+
+ #funkcija, ki pripravi xml za posamezene element vprasalnika glede na tip vprasanja ################################################################
+ public function displaySurveyElement($spremenljivke=null, $export_subtype='', $preveriSpremenljivko=null, $loop_id=null){
+ switch ($spremenljivke['tip']){
+ case 1: //radio
+ return RadioXml::getInstance()->export($spremenljivke, $this->db_table, $preveriSpremenljivko, $export_subtype, $loop_id, $this->xml);
+ break;
+ case 2: //check
+ return CheckboxXml::getInstance()->export($spremenljivke, $this->db_table, $preveriSpremenljivko, $export_subtype, $loop_id, $this->xml);
+ break;
+ case 3: //select -> radio
+ return RadioXml::getInstance()->export($spremenljivke, $this->db_table, $preveriSpremenljivko, $export_subtype, $loop_id, $this->xml);
+ break;
+ case 6: //multigrid
+/* case 16:// multicheckbox
+ case 19:// multitext
+ case 20:// multinumber */
+ return MultiGridXml::getInstance()->export($spremenljivke, $this->db_table, $preveriSpremenljivko, $export_subtype, $loop_id, $this->xml);
+ break;
+ case 21: //besedilo
+ return BesediloXml::getInstance()->export($spremenljivke, $this->db_table, $preveriSpremenljivko, $export_subtype, $loop_id, $this->xml);
+ break;
+ case 7: //stevilo
+ return SteviloXml::getInstance()->export($spremenljivke, $this->db_table, $preveriSpremenljivko, $export_subtype, $loop_id, $this->xml);
+ break;
+ case 8: //datum
+ //return DatumLatex::getInstance()->export($spremenljivke, $this->export_format, $this->questionText, $this->fillablePdf, $this->texNewLine, $this->getUserId(), $this->db_table, $export_subtype, $preveriSpremenljivko, $loop_id);
+ break;
+ case 17: //ranking
+ //return RazvrscanjeLatex::getInstance()->export($spremenljivke, $this->export_format, $this->questionText, $this->fillablePdf, $this->texNewLine, $this->getUserId(), $this->db_table, $export_subtype, $preveriSpremenljivko, $export_data_type, $loop_id);
+ break;
+ case 18: //vsota
+ //return VsotaLatex::getInstance()->export($spremenljivke, $this->export_format, $this->questionText, $this->fillablePdf, $this->texNewLine, $this->getUserId(), $this->db_table, $export_subtype, $preveriSpremenljivko, $loop_id);
+ break;
+ case 24: // kombinirana tabela
+ //return GridMultipleLatex::getInstance()->export($spremenljivke, $this->export_format, $this->questionText, $this->fillablePdf, $this->texNewLine, $this->getUserId(), $this->db_table, $export_subtype, $preveriSpremenljivko, $export_data_type, $loop_id);
+ break;
+ case 26: //lokacija
+ //return LokacijaLatex::getInstance()->export($spremenljivke, $this->export_format, $this->questionText, $this->fillablePdf, $this->texNewLine, $this->getUserId(), $this->db_table, $export_subtype, $preveriSpremenljivko, $loop_id);
+ break;
+ case 27: //heatmap
+ return HeatmapLatex::getInstance()->export($spremenljivke, $this->export_format, $this->questionText, $this->fillablePdf, $this->texNewLine, $this->getUserId(), $this->db_table, $export_subtype, $preveriSpremenljivko, $loop_id);
+ break;
+ case 5: //nagovor
+ //return NagovorLatex::getInstance()->export($spremenljivke, $this->export_format, $this->questionText, $this->fillablePdf, $this->texNewLine, $export_subtype, $preveriSpremenljivko, $loop_id);
+ break;
+ case 22: //kalkulacija
+ //return KalkulacijaLatex::getInstance()->export($spremenljivke, $this->export_format, $this->fillablePdf, $this->texNewLine, $export_subtype, $this->db_table, $this->getUserId(), $loop_id);
+ break;
+ case 25: //kvota
+ //return KvotaLatex::getInstance()->export($spremenljivke, $this->export_format, $this->fillablePdf, $this->texNewLine, $export_subtype, $this->db_table, $this->anketa, $this->getUserId(), $loop_id);
+ break;
+ case 9: //SN-imena
+ //return SNImenaLatex::getInstance()->export($spremenljivke, $this->export_format, $this->fillablePdf, $this->texNewLine, $export_subtype, $this->db_table, $this->anketa, $this->getUserId(), $loop_id);
+ break;
+ }
+ }
+ #funkcija, ki pripravi xml za posamezene element vprasalnika glede na tip vprasanja - konec #######################################################
+
+
+ function writeXmlAttr4Element($xml=null, $attribute=null, $element=null, $writeAttribute=0){
+ $this->xml = $xml;
+ if($writeAttribute){
+ xmlwriter_write_attribute($this->xml, $attribute, $element);
+ }else{
+ xmlwriter_start_attribute($this->xml, $attribute);
+ }
+ xmlwriter_text($this->xml, $element);
+ xmlwriter_end_attribute($this->xml);
+ }
+
+ function writeXmlElement($xml=null, $text=null, $element=null){
+ $this->xml = $xml;
+ xmlwriter_start_element($this->xml, $element);
+ xmlwriter_text($this->xml, $text);
+ xmlwriter_end_element($this->xml);
+ }
+
+ /**
+ * prevod za srv_spremenljivka
+ */
+ function srv_language_spremenljivka ($spremenljivka=null) {
+
+ if ($this->language != -1) {
+ $sqll = sisplet_query("SELECT * FROM srv_language_spremenljivka WHERE ank_id='".$this->anketa."' AND spr_id='".$spremenljivka['id']."' AND lang_id='".$this->language."'");
+ $rowl = mysqli_fetch_array($sqll);
+
+ return $rowl;
+ }
+
+ return false;
+ }
+
+ /**
+ * vrne prevod za srv_vrednost
+ *
+ * @param mixed $vrednost
+ */
+ function srv_language_vrednost ($vrednost=null) {
+
+ if ($this->language != -1) {
+ $sqll = sisplet_query("SELECT * FROM srv_language_vrednost WHERE ank_id='".$this->anketa['id']."' AND vre_id='".$vrednost."' AND lang_id='".$this->language."'");
+ $rowl = mysqli_fetch_array($sqll);
+
+ if ($rowl['naslov'] != '') return $rowl['naslov'];
+ }
+
+ return false;
+ }
+
+ /**
+ * vrne prevod za srv_grid
+ *
+ * @param mixed $vrednost
+ */
+ function srv_language_grid ($spremenljivka=null, $grid=null) {
+
+ if ($this->language != -1) {
+ $sqll = sisplet_query("SELECT * FROM srv_language_grid WHERE ank_id='".$this->anketa['id']."' AND spr_id='".$spremenljivka."' AND grd_id='".$grid."' AND lang_id='".$this->language."'");
+ $rowl = mysqli_fetch_array($sqll);
+
+ if ($rowl['naslov'] != '') return $rowl['naslov'];
+ }
+
+ return false;
+ }
+
+ #funkcija, ki skrbi za filanje obstojecega polja z odgovori z missing odgovori #############################################################
+ function AddMissingsToAnswers($vodoravniOdgovori=null, $missingOdgovori=null){
+ for($m=0;$m<count($missingOdgovori);$m++){
+ array_push($vodoravniOdgovori,$missingOdgovori[$m]);
+ }
+ return $vodoravniOdgovori;
+ }
+ #funkcija, ki skrbi za filanje obstojecega polja z odgovori z missing odgovori - konec #####################################################
+
+
+ function getUserId() {return ($this->usr_id)?$this->usr_id:false;}
+
+ #funkcija, ki skrbi za preverjanje obstoja podatkov za vprasanja, ki niso grid ali kombinirana tabela
+ function GetUsersData($db_table=null, $spremenljivkeId=null, $spremenljivkeTip=null, $usr_id=null, $loop_id_raw=null){
+ $userDataPresent = 0; //belezi, ali je odgovor respondenta prisoten in je indeks za določena polja, ki shranjujejo podatke o odgovorih respondenta
+ $loop_id = $loop_id_raw == null ? " IS NULL" : " = '".$loop_id_raw."'";
+ //echo "loop_id v GetUsersData: ".$loop_id."</br>";
+
+ // če imamo vnose, pogledamo kaj je odgovoril uporabnik
+ if( in_array($spremenljivkeTip, array(21, 7, 8, 18)) ){ //ce je tip besedilo ali stevilo ali datum ali vsota
+ //$sqlUserAnswerString ="SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivkeId."' AND usr_id='".$usr_id."' ";
+ $sqlUserAnswerString ="SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivkeId."' AND usr_id='".$usr_id."' AND loop_id $loop_id ";
+ }elseif($spremenljivkeTip==17){ //ce je razvrscanje
+ //$sqlUserAnswer = sisplet_query("SELECT vrstni_red FROM srv_data_rating WHERE spr_id=".$spremenljivke['id']." AND usr_id='".$this->getUserId()."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id");
+ //$sqlUserAnswerString = "SELECT vrstni_red FROM srv_data_rating WHERE spr_id='".$spremenljivkeId."' AND usr_id='".$usr_id."' ";
+ $sqlUserAnswerString = "SELECT vrstni_red FROM srv_data_rating WHERE spr_id='".$spremenljivkeId."' AND usr_id='$usr_id' AND loop_id $loop_id ";
+ //echo $sqlUserAnswerString."</br>";
+ }elseif($spremenljivkeTip==26){ //ce je lokacija
+ //$sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_map WHERE spr_id='".$spremenljivkeId."' AND usr_id='".$usr_id."' ";
+ $sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_map WHERE spr_id='".$spremenljivkeId."' AND usr_id='$usr_id' AND loop_id $loop_id ";
+ //echo $sqlUserAnswerString."</br>";
+ }elseif($spremenljivkeTip==27){ //ce je heatmap
+ //$sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_heatmap WHERE spr_id='".$spremenljivkeId."' AND usr_id='".$usr_id."' ";
+ $sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_heatmap WHERE spr_id='".$spremenljivkeId."' AND usr_id='$usr_id' AND loop_id $loop_id ";
+ //echo $sqlUserAnswerString."</br>";
+ }else{
+ //$sqlUserAnswerString = "SELECT vre_id FROM srv_data_vrednost".$db_table." WHERE spr_id='$spremenljivkeId' AND usr_id=$usr_id";
+ $sqlUserAnswerString = "SELECT vre_id FROM srv_data_vrednost".$db_table." WHERE spr_id='$spremenljivkeId' AND usr_id='$usr_id' AND loop_id $loop_id";
+ //echo $sqlUserAnswerString."</br>";
+ }
+
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+
+ if( in_array($spremenljivkeTip, array(21, 7, 8, 18, 17)) ){//ce je tip besedilo ali stevilo ali datum ali vsota ali razvrscanje
+ $rowAnswers = mysqli_fetch_assoc($sqlUserAnswer);
+ if($rowAnswers){ //ce je kaj v bazi
+ //echo "Nekaj je v bazi za spremenljivko".$spremenljivkeId." in usr".$usr_id."</br>";
+ $userDataPresent++;
+ }
+ }else{
+ if($sqlUserAnswer){ //ce je kaj v bazi
+ while ($rowAnswers = mysqli_fetch_assoc($sqlUserAnswer)){
+ if($spremenljivkeTip==26||$spremenljivkeTip==27){
+ //$this->userAnswer = $rowAnswers;
+ $this->userAnswer[$userDataPresent] = $rowAnswers;
+ //echo "rowAnswers: ".$this->userAnswer['address'].' za odgovore tip '.$spremenljivkeTip.' id '.$spremenljivkeId.' usr '.$usr_id.'</br>';
+ $userDataPresent++;
+ }else{
+ $this->userAnswer[$rowAnswers['vre_id']] = $rowAnswers['vre_id'];
+ //echo "rowAnswers: ".$rowAnswers['vre_id'].' za odgovore tip '.$spremenljivkeTip.' id '.$spremenljivkeId.' usr '.$usr_id.'</br>';
+ if($rowAnswers['vre_id']>0){
+ $userDataPresent++;
+ }
+ }
+ }
+ }
+ }
+ //echo "userDataPresent za tip ".$spremenljivkeTip." id".$spremenljivkeId." usr ".$usr_id." je:".$userDataPresent."</br>";
+ return $userDataPresent;
+ }
+ #funkcija, ki skrbi za preverjanje obstoja podatkov za vprasanja, ki niso grid ali kombinirana tabela - konec
+
+ #funkcija, ki skrbi za preverjanje obstoja podatkov za vprasanja z grid
+ function GetUsersDataGrid($spremenljivke=null, $db_table=null, $rowVrednost=null, $rowVsehVrednosti=null, $usr_id=null, $subtip=null, $loop_id_raw=null){
+ $loop_id = $loop_id_raw == null ? " IS NULL" : " = '".$loop_id_raw."'";
+
+ // poiščemo kaj je odgovoril uporabnik: PREVERITI, CE JE POTREBEN STAVEK Z LOOP IN KDAJ JE TO AKTUALNO
+ if(($spremenljivke['tip']==16)||($spremenljivke['tip']==6&&$spremenljivke['enota']==3)){ //ce je grid checkbox ali dvojna tabela
+ //$sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = '".$rowVsehVrednosti['id']."' AND loop_id $loop_id");
+ //$sqlString = "SELECT grd_id FROM srv_data_checkgrid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id'];
+
+ //$sqlString = "SELECT grd_id, vre_id FROM srv_data_checkgrid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id'];
+ $sqlString = "SELECT grd_id, vre_id FROM srv_data_checkgrid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id']." AND loop_id $loop_id";
+
+ //$sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id']);
+ $sqlUserAnswer = sisplet_query($sqlString);
+ //}elseif($spremenljivke['tip']==6){ //ce je grid radio
+ }elseif($spremenljivke['tip']==6){ //ce je grid radio
+ //$sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_grid".$db_table." where spr_id = '".$rowVrednost['spr_id']."' and usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND loop_id $loop_id");
+
+ //$sqlString ="SELECT grd_id FROM srv_data_grid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id'];
+
+ //$sqlString ="SELECT grd_id, vre_id FROM srv_data_grid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id'];
+ $sqlString ="SELECT grd_id, vre_id FROM srv_data_grid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id']." AND loop_id $loop_id";
+ //echo $sqlString."</br>";
+ $sqlUserAnswer = sisplet_query($sqlString);
+
+ //echo $sqlString."</br>";
+ }elseif($spremenljivke['tip']==19||$spremenljivke['tip']==20){ //ce je grid besedila ali stevil
+ $sqlString = "SELECT grd_id, text FROM srv_data_textgrid".$db_table." where spr_id = '".$rowVrednost['spr_id']."' and usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id'];
+ //$sqlUserAnswer = sisplet_query("SELECT grd_id, text FROM srv_data_textgrid".$db_table." where spr_id = '".$rowVrednost['spr_id']."' and usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id']);
+ $sqlUserAnswer = sisplet_query($sqlString);
+ }elseif($spremenljivke['tip']==24){ //ce je kombo
+ //echo "Subtip kombo vprasanja: ".$subtip."</br>";
+ if($subtip==6){ //ce je grid radio
+ //$sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_grid".$db_table." where spr_id = '".$rowVrednost['spr_id']."' and usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND loop_id $loop_id");
+ //$sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_grid".$db_table." where spr_id = '".$rowVrednost['spr_id']."' and usr_id = '".$usr_id."' AND vre_id = ".$rowVrednost['id']);
+ //$sqlString ="SELECT grd_id FROM srv_data_grid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = ".$rowVrednost['id'];
+ //$sqlString ="SELECT grd_id FROM srv_data_grid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id'];
+ $sqlString ="SELECT grd_id FROM srv_data_grid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id']." AND loop_id $loop_id";
+ //echo $sqlString."</br>";
+ $sqlUserAnswer = sisplet_query($sqlString);
+
+ //echo $sqlString."</br>";
+ }elseif($subtip==16){ //ce je grid checkbox ali dvojna tabela
+ //$sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = '".$rowVsehVrednosti['id']."' AND loop_id $loop_id");
+
+ //$sqlString = "SELECT grd_id FROM srv_data_checkgrid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id'];
+ $sqlString = "SELECT grd_id FROM srv_data_checkgrid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id']." AND loop_id $loop_id";
+ //$sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id']);
+ $sqlUserAnswer = sisplet_query($sqlString);
+ }elseif($subtip==19||$subtip==20){ //ce je grid besedila ali stevil
+ $sqlString = "SELECT grd_id, text FROM srv_data_textgrid".$db_table." where spr_id = '".$rowVrednost['spr_id']."' and usr_id = '".$usr_id."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = ".$rowVsehVrednosti['id'];
+
+ $sqlUserAnswer = sisplet_query($sqlString);
+
+ //$this->userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+ //echo "userAnswer v funkciji: ".$this->userAnswer['text'].'</br>';
+ }
+ }
+
+ //echo $sqlString."</br>";
+ //$this->userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+ //$userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+ //echo "userAnswer v funkciji: ".$this->userAnswer['grd_id'].'</br>';
+ //echo "userAnswer v funkciji: ".$userAnswer['text'].'</br>';
+ //echo "userAnswer v funkciji: ".$userAnswer['grd_id'].'</br>';
+
+ return $sqlUserAnswer;
+
+ }
+ #funkcija, ki skrbi za preverjanje obstoja podatkov za vprasanja z grid - konec
+
+ #funkcija, ki skrbi za preverjanje obstoja podatkov za vprasanja s kombinirano tabelo
+ function GetUsersDataKombinirana($spremenljivke=null, $db_table=null, $usr_id=null, $questionText=null, $loop_id_raw=null){
+ $userDataPresent = 0; //belezi, ali je odgovor respondenta prisoten in je indeks za določena polja, ki shranjujejo podatke o odgovorih respondenta
+ $userAnswerSprIds = array();
+ $userAnswerSprTip = array();
+ $userAnswerSprIdsIndex = 0;
+ $orStavek = '';
+ //$loop_id = $loop_id_raw == null ? " IS NULL" : " = '".$loop_id_raw."'";
+ $loop_id = $loop_id_raw;
+
+ #za pridobitev stevila vrstic
+ $sqlVrednostiKombo = sisplet_query("SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red");
+ $numRowsSql = mysqli_num_rows($sqlVrednostiKombo);
+ //echo $numRowsSql."</br>";
+ #za pridobitev stevila vrstic - konec
+
+ #za pridobitev stevila stolpcev
+ $sqlStVrednostiKombo = sisplet_query("SELECT count(*) FROM srv_grid g, srv_grid_multiple m WHERE m.spr_id=g.spr_id AND m.parent='".$spremenljivke['id']."'");
+ $rowStVrednost = mysqli_fetch_array($sqlStVrednostiKombo); //stevilo stolpcev
+ $numColSql = $rowStVrednost['count(*)']; //stevilo vseh stolpcev
+ //echo "stevilo stolpcev: ".$numColSql."</br>";
+ #za pridobitev stevila stolpcev - konec
+
+ $sqlSubGrid = sisplet_query("SELECT m.spr_id, s.tip FROM srv_grid_multiple m, srv_spremenljivka s WHERE m.parent='".$spremenljivke['id']."' AND m.spr_id=s.id ORDER BY m.vrstni_red"); //pridobimo spr_id in tip podvprasanj, ki sestavljajo kombinirano tabelo
+ //echo "SELECT m.spr_id, s.tip FROM srv_grid_multiple m, srv_spremenljivka s WHERE m.parent='".$spremenljivke['id']."' AND m.spr_id=s.id ORDER BY m.vrstni_red"."</br>";
+
+ while($rowSubGrid = mysqli_fetch_array($sqlSubGrid)){
+ array_push($userAnswerSprIds, $rowSubGrid['spr_id'] ); //filanje polja s spr_id podvprasanj
+ array_push($userAnswerSprTip, $rowSubGrid['tip'] ); //filanje polja s tip podvprasanj
+ if($userAnswerSprIdsIndex){
+ $orStavek .= ' OR ';
+ }
+ //$orStavek .= "spr_id='".$rowSubGrid['spr_id']."' ";
+ $orStavek .= "v.spr_id='".$rowSubGrid['spr_id']."' ";
+ $userAnswerSprIdsIndex++;
+ }
+
+ //echo $orStavek."</br>";
+ //echo count($userAnswerSprTip)."</br>";
+
+ for($i=1;$i<=$numRowsSql;$i++){
+ //$sqlVrednostiString = "SELECT id, naslov, spr_id FROM srv_vrednost WHERE (".$orStavek.") AND vrstni_red=".($i).";";
+ $sqlVrednostiString = "SELECT v.spr_id, v.naslov, s.tip, v.id FROM srv_vrednost v, srv_spremenljivka s WHERE v.spr_id=s.id AND (".$orStavek.") AND v.vrstni_red=".($i).";";
+ //echo $sqlVrednostiString."</br>";
+ $sqlVrednosti = sisplet_query($sqlVrednostiString);
+ while($rowVrednosti = mysqli_fetch_assoc($sqlVrednosti)){
+ $sqlVsehVrednostiString = "SELECT id, naslov FROM srv_grid WHERE spr_id='".$rowVrednosti['spr_id']."' ORDER BY 'vrstni_red'";
+ //echo $sqlVsehVrednostiString."</br>";
+ //echo $rowVrednosti['tip']."</br>";
+ //echo "Vrednost: ".$rowVrednosti['spr_id']."</br>";
+ $sqlVsehVrednosti = sisplet_query($sqlVsehVrednostiString);
+ while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednosti)){
+ //$sqlUserAnswer = $this->GetUsersDataGrid($spremenljivke, $db_table, $rowVrednosti, $rowVsehVrednosti, $usr_id, $rowVrednosti['tip']);
+ $sqlUserAnswer = $this->GetUsersDataGrid($spremenljivke, $db_table, $rowVrednosti, $rowVsehVrednosti, $usr_id, $rowVrednosti['tip'], $loop_id);
+ $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+ //if($userAnswer){ //ce je kaj v bazi
+ if($rowVrednosti['tip']==19||$rowVrednosti['tip']==20){
+ //$this->userAnswer[$userDataPresent] = $userAnswer['text'];
+ $userAnswers[$userDataPresent] = $userAnswer['text'];
+ }else{
+ //$this->userAnswer[$userDataPresent] = $userAnswer['grd_id'];
+ $userAnswers[$userDataPresent] = $userAnswer['grd_id'];
+ }
+ //echo $this->userAnswer[$userDataPresent]."</br>";
+ //echo $userAnswer[$userDataPresent]."</br>";
+ $userDataPresent++;
+ //}
+ }
+ }
+
+ }
+ //if($questionText){
+ //return $userDataPresent;
+ //}else{
+ //return $this->userAnswer;
+ return $userAnswers;
+ //}
+ }
+ #funkcija, ki skrbi za preverjanje obstoja podatkov za vprasanja s kombinirano tabelo - konec
+
+ #funkcija, ki skrbi za pridobitev operatorja iz stevilskega podatka ###########################################################
+ function GetOperator($operatorNum=null){
+ if ($operatorNum == 0){
+ $operator = $this->encodeText('+');
+ }elseif ($operatorNum == 1){
+ $operator = $this->encodeText('-');
+ }elseif ($operatorNum == 2){
+ $operator = $this->encodeText('*');
+ }elseif ($operatorNum == 3){
+ $operator = $this->encodeText('/');
+ }
+ return $operator;
+ }
+ #funkcija, ki skrbi za pridobitev operatorja iz stevilskega podatka - konec ###################################################
+
+} \ No newline at end of file