summaryrefslogtreecommitdiffstats
path: root/admin/survey/export/xmlClasses/Vprasanja/MultiGridXml.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/export/xmlClasses/Vprasanja/MultiGridXml.php')
-rw-r--r--admin/survey/export/xmlClasses/Vprasanja/MultiGridXml.php395
1 files changed, 395 insertions, 0 deletions
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