2020-08-14 13:36:36 +02:00
< ? php
/***************************************
* Description : Priprava Xml kode za klasicne tabele
*
*
* Autor : Patrik Pucer
* Datum : 10 / 2018
*****************************************/
2020-12-07 09:43:59 +01:00
define ( " VARGRP_ELEMENT_TYPE_GRID " , " Grid " );
define ( " VARGRP_ELEMENT_TYPE_MULTIRESP " , " multipleResp " );
define ( " VARFORMAT_ELEMENT_TYPE_GRID " , " numeric " );
2020-08-14 13:36:36 +02:00
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
//}
}
}
}