From 75160b12821f7f4299cce7f0b69c83c1502ae071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Mon, 27 May 2024 13:08:29 +0200 Subject: 2024-02-19 upstream --- .../latexclasses/Vprasanja/BesediloLatex.php | 55 +- .../export/latexclasses/Vprasanja/DatumLatex.php | 27 +- .../latexclasses/Vprasanja/GridMultipleLatex.php | 180 ++--- .../export/latexclasses/Vprasanja/HeatmapLatex.php | 59 +- .../latexclasses/Vprasanja/KalkulacijaLatex.php | 2 +- .../export/latexclasses/Vprasanja/KvotaLatex.php | 4 +- .../latexclasses/Vprasanja/LokacijaLatex.php | 4 +- .../latexclasses/Vprasanja/MultiGridLatex.php | 895 ++++++++------------- .../export/latexclasses/Vprasanja/NagovorLatex.php | 13 +- .../Vprasanja/RadioCheckboxSelectLatex.php | 231 ++++-- .../latexclasses/Vprasanja/RazvrscanjeLatex.php | 132 ++- .../export/latexclasses/Vprasanja/SNImena.php | 4 +- .../export/latexclasses/Vprasanja/SteviloLatex.php | 127 ++- .../export/latexclasses/Vprasanja/VsotaLatex.php | 41 +- 14 files changed, 830 insertions(+), 944 deletions(-) (limited to 'admin/survey/export/latexclasses/Vprasanja') diff --git a/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php b/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php index 0e68338..83fcee1 100644 --- a/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php @@ -10,8 +10,8 @@ *****************************************/ -define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm -define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip +if (!defined('PIC_SIZE')) define("PIC_SIZE", "\includegraphics[width=5cm]"); //slika sirine 50mm +if (!defined('ICON_SIZE')) define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip class BesediloLatex extends LatexSurveyElement { @@ -19,6 +19,7 @@ class BesediloLatex extends LatexSurveyElement protected $texBigSkip = '\bigskip'; protected $export_subtype; protected $path2SignatureImages; + protected $path2HeatmapImages; protected $texGapBeforeTable = '\vspace*{-\baselineskip}'; public function __construct() @@ -41,6 +42,7 @@ class BesediloLatex extends LatexSurveyElement } public function export($spremenljivke=null, $export_format='', $questionText=null, $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $anketa=null, $export_subtype='', $preveriSpremenljivko=null, $export_data_type=null, $loop_id=null){ + //$time_start = microtime(true); global $site_path; $this->path2HeatmapImages = $site_path.'main/survey/uploads/'; @@ -62,7 +64,7 @@ class BesediloLatex extends LatexSurveyElement $tex = ''; $podatekVBazi = 0; - $symbol = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0); //poberi simbol checkbox za other in missing moznosti odgovora + $symbol = $this->getAnswerSymbol($export_subtype, $export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0); //poberi simbol checkbox za other in missing moznosti odgovora //nastavitve text box-a iz baze########################## $steviloOken = $spremenljivke['text_kosov']; @@ -212,7 +214,7 @@ class BesediloLatex extends LatexSurveyElement //Ureditev dodajanja manjsega razmika med besedilom vprasanja in tabelo - konec #ZACETEK TABELE //zacetek tabele - $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); + $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'xltabular', 'tabular', 1, 1); } //echo "ni vodoravno ob vprašanju
"; @@ -220,22 +222,22 @@ class BesediloLatex extends LatexSurveyElement }elseif($postavitev==0&&$polozajBesedila==3){ // #ZACETEK TABELE //zacetek tabele - $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); + $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'xltabular', 'tabular', 1, 1); //echo "je vodoravno ob vprašanju zgoraj
"; }elseif($postavitev==0&&$polozajBesedila==2){ //zacetek tabele - $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); + $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'xltabular', 'tabular', 1, 1); //echo "je vodoravno ob vprašanju spodaj
"; }elseif($postavitev==0&&$steviloOken>1){ //zacetek tabele - $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); + $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'xltabular', 'tabular', 1, 1); //echo "stevilo oken večje in ob vprašanju
"; } } - //echo "tex koda: ".$tex."
"; + // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); - + //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ # po potrebi se prevede besedilo, ki se pojavi pred textbox-om @@ -264,7 +266,9 @@ class BesediloLatex extends LatexSurveyElement //priprava besedila za izpis $stringNaslov = $rowVrednost['naslov']; - $stringNaslov = Common::getInstance()->dataPiping($stringNaslov, $usr_id, $loop_id); + if($userAnswer){ //ce je kaj v bazi oz. se izpisujejo odgovori respondenta + $stringNaslov = Common::getInstance()->dataPiping($stringNaslov, $usr_id, $loop_id); + } //priprava besedila za izpis - konec //ce ni other ali missing @@ -281,11 +285,9 @@ class BesediloLatex extends LatexSurveyElement $besedilo .= $textSignature; //}elseif($spremenljivke['upload'] == 1){ }elseif($spremenljivke['upload']){ - //$besedilo .= $textUpload; - $besedilo .= $this->encodeText($textUpload); + $besedilo .= LatexDocument::encodeText($textUpload); }else{ - //$besedilo .= $userAnswer['text']; - $besedilo .= $this->encodeText($userAnswer['text']); + $besedilo .= LatexDocument::encodeText(isset($userAnswer['text'])?$userAnswer['text']:''); } if($export_format=='pdf'){ @@ -310,7 +312,7 @@ class BesediloLatex extends LatexSurveyElement } array_push($textBoxes, $dataTextBox); //filanje polja s praznimi text box-i - array_push($besedila, $this->encodeText($stringNaslov)); //filanje polja z besedili + array_push($besedila, LatexDocument::encodeText($stringNaslov)); //filanje polja z besedili if($okvir == 0){ if($spremenljivke['tip'] == 21){ //ce je ta novo besedilo, ki je v uporabi @@ -320,7 +322,7 @@ class BesediloLatex extends LatexSurveyElement //izpis besedila if($polozajBesedila!=0){ //ce je prisotno dodatno besedilo ob okvirju - $tex .= $this->encodeText($stringNaslov)." "; + $tex .= LatexDocument::encodeText($stringNaslov)." "; } $tex .= ' '.$dataTextBox; }elseif($spremenljivke['tip'] == 4){ //ce je ta staro besedilo, ki ni vec v uporabi vsaj 9 let (2020) @@ -338,7 +340,7 @@ class BesediloLatex extends LatexSurveyElement } //izpis besedila - $tex .= $this->encodeText($stringNaslov)." "; + $tex .= LatexDocument::encodeText($stringNaslov)." "; //izpis text box-a dolocene sirine in visine z besedilom odgovora $tex .= ' '.$dataTextBox; @@ -353,10 +355,12 @@ class BesediloLatex extends LatexSurveyElement 'vrstni_red'=>$rowVrednost['vrstni_red'], 'value'=>$text[$rowVrednost['vrstni_red']], ); */ + $vrstniRedTmp = isset($rowVrednost['vrstni_red'])?$rowVrednost['vrstni_red']:null; + echo $vrstniRedTmp; $array_others[$rowVrednost['id']] = array( - 'naslov'=>$this->encodeText($stringNaslov), - 'vrstni_red'=>$rowVrednost['vrstni_red'], - 'value'=>$text[$rowVrednost['vrstni_red']], + 'naslov'=>LatexDocument::encodeText($stringNaslov), + 'vrstni_red'=>$vrstniRedTmp, + //'value'=>$text[$vrstniRedTmp] - pokomentiral, ker ne vem, zakaj je tako, saj drugače PHP javlja warning ); } @@ -392,20 +396,20 @@ class BesediloLatex extends LatexSurveyElement if($postavitev!=0){ if($steviloOken>1){ //ce je stevilo oken vec kot 1, zakljuci tabelo //zakljucek tabele - $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); + $tex .= $this->EndLatexTable($export_format, 'xltabular', 'tabular'); #KONEC TABELE } }elseif($postavitev==0&&$polozajBesedila==3){ //zakljucek tabele - $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); + $tex .= $this->EndLatexTable($export_format, 'xltabular', 'tabular'); #KONEC TABELE }elseif($postavitev==0&&$polozajBesedila==2){ //zakljucek tabele - $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); + $tex .= $this->EndLatexTable($export_format, 'xltabular', 'tabular'); #KONEC TABELE }elseif($postavitev==0&&$steviloOken>1){ //zakljucek tabele - $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); + $tex .= $this->EndLatexTable($export_format, 'xltabular', 'tabular'); #KONEC TABELE } } @@ -453,6 +457,9 @@ class BesediloLatex extends LatexSurveyElement } //echo "tex koda: ".$tex." in indeks $indeksZaWhile
"; + /* $time_end = microtime(true); + $execution_time = ($time_end - $time_start); + echo 'Total Execution Time besedilo 1: '.$execution_time.' sec
'; */ return $tex; } diff --git a/admin/survey/export/latexclasses/Vprasanja/DatumLatex.php b/admin/survey/export/latexclasses/Vprasanja/DatumLatex.php index 7110873..006863f 100644 --- a/admin/survey/export/latexclasses/Vprasanja/DatumLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/DatumLatex.php @@ -36,6 +36,7 @@ class DatumLatex extends LatexSurveyElement public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype='', $preveriSpremenljivko=null, $loop_id=null){ + //$time_start = microtime(true); // Ce je spremenljivka v loopu $this->loop_id = $loop_id; @@ -65,19 +66,25 @@ class DatumLatex extends LatexSurveyElement //$sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id"); //$sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' "; $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' "; - //echo $sqlUserAnswerString; + //$sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND loop_id = $loop_id"; + if($loop_id){ + $sqlUserAnswerString = $sqlUserAnswerString." AND loop_id = '$loop_id'"; + } + + //echo $sqlUserAnswerString."
"; + $sqlUserAnswer = sisplet_query($sqlUserAnswerString); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); //echo "userAnswer: ".$userAnswer['text']."
"; //ureditev polja s podatki trenutnega uporabnika - konec ############################################## //ureditev besedila odgovora respondenta v doloceno barvo - $besedilo = '\\textcolor{crta}{'; - $besedilo .= $userAnswer['text']; + $besedilo = '\\textcolor{crta}{'; + $besedilo .= isset($userAnswer['text'])?$userAnswer['text']:null; $besedilo .= '}'; //ureditev besedila odgovora respondenta v doloceno barvo - konec - if($userAnswer['text']==''){ //ce ni izpisa odgovorov respondentov, priprava izpis s tabelo + if(isset($userAnswer['text'])?$userAnswer['text']:null==''){ //ce ni izpisa odgovorov respondentov, priprava izpis s tabelo $answerTextBox = $this->LatexTextBox($export_format, $textboxHeight, $textboxWidth, $besedilo, $textboxAllignment, $noBorders); //parametri tabele @@ -91,12 +98,12 @@ class DatumLatex extends LatexSurveyElement //IZRIS #ZACETEK TABELE //zacetek tabele - $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); + $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'xltabular', 'tabular', 1, 1); $tex .= $answerTextBox; //izris znotraj tabele //zakljucek tabele - $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); + $tex .= $this->EndLatexTable($export_format, 'xltabular', 'tabular'); #KONEC TABELE $tex .= $this->texBigSkip; }else{ //ce je izpis odgovorov respondentov @@ -114,11 +121,11 @@ class DatumLatex extends LatexSurveyElement $array_others[$rowVrednost['id']] = array( 'naslov'=>$rowVrednost['naslov'], 'vrstni_red'=>$rowVrednost['vrstni_red'], - 'value'=>$text[$rowVrednost['vrstni_red']], + //'value'=>$text[$rowVrednost['vrstni_red']], ); } } - $symbol = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0); //poberi simbol checkbox za other in missing moznosti odgovora + $symbol = $this->getAnswerSymbol($export_subtype, $export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0); //poberi simbol checkbox za other in missing moznosti odgovora //priprava missing-ov - konec // Izris polj drugo - ne vem... @@ -133,7 +140,9 @@ class DatumLatex extends LatexSurveyElement } //IZRIS - KONEC - + /* $time_end = microtime(true); + $execution_time = ($time_end - $time_start); + echo 'Total Execution Time datum: '.$execution_time.' sec'; */ return $tex; } } diff --git a/admin/survey/export/latexclasses/Vprasanja/GridMultipleLatex.php b/admin/survey/export/latexclasses/Vprasanja/GridMultipleLatex.php index 3b67102..96dbff8 100644 --- a/admin/survey/export/latexclasses/Vprasanja/GridMultipleLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/GridMultipleLatex.php @@ -10,9 +10,9 @@ *****************************************/ -define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm -define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip -define("RADIO_BTN_SIZE", 0.13); + if (!defined('PIC_SIZE')) define("PIC_SIZE", "\includegraphics[width=5cm]"); //slika sirine 50mm + if (!defined('ICON_SIZE')) define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip + if (!defined('RADIO_BTN_SIZE')) define("RADIO_BTN_SIZE", 0.13); class GridMultipleLatex extends LatexSurveyElement { @@ -29,6 +29,9 @@ class GridMultipleLatex extends LatexSurveyElement private static $_instance; protected $texBigSkip = '\bigskip '; protected $loop_id = null; // id trenutnega loopa ce jih imamo + protected $usr_id = null; + protected $language; + protected $prevod; public static function getInstance() { @@ -38,28 +41,40 @@ class GridMultipleLatex extends LatexSurveyElement return new GridMultipleLatex(); } - public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype='', $preveriSpremenljivko=null, $export_data_type='', $loop_id=null){ + public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype='', $preveriSpremenljivko=null, $export_data_type='', $loop_id=null, $language=null){ + //$time_start = microtime(true); // Ce je spremenljivka v loopu $this->loop_id = $loop_id; + $this->usr_id = $usr_id; + + $this->language = $language; + + //preverjanje, ali je prevod + if(isset($_GET['language'])){ + $this->language = isset($_GET['language'])?$_GET['language']:null; + $this->prevod = 1; + }else{ + $this->prevod = 0; + } + //preverjanje, ali je prevod - konec + + //echo "tip izpisa: $export_data_type
"; //$export_data_type: 1 - Razsirjen, 2 - Skrcen $presirokaTabela = 0; //preveri, ce je kaj v bazi $questionText=0; $userDataPresent=0; $izpisOdgovorov = 0; + $userAnswer = null; if($usr_id){ //ce je prisotne id uporabnika, je izpis odgovorov in je potrebno narediti naslednje stvari - //$userAnswer = $this->GetUsersDataKombinirana($spremenljivke, $db_table, $usr_id, $questionText, $this->loop_id, $export_data_type); $userAnswer = $this->GetUsersDataKombinirana($spremenljivke, $db_table, $usr_id, $presirokaTabela, $this->loop_id, $export_data_type); foreach($userAnswer as $value){ if($value!=''){ $userDataPresent=1; } - //echo "Value: ".$value."
"; } $izpisOdgovorov = 1; } - //echo "Usr_id: ".$usr_id.'
'; - //echo "Stevilo odgovorov: ".count($userAnswer).'
'; if($userDataPresent!=0||$export_subtype=='q_empty'||$export_subtype=='q_comment'||$preveriSpremenljivko){ //ce je kaj v bazi ali je prazen vprasalnik ali je potrebno pokazati tudi ne odgovorjena vprasanja @@ -82,10 +97,10 @@ class GridMultipleLatex extends LatexSurveyElement } //poizvedba vseh potrebnih podatkov dodanih moznosti v kombinirani tabeli - $sqlMultiple = sisplet_query("SELECT g.*, s.tip, s.enota, s.dostop FROM srv_grid g, srv_grid_multiple m, srv_spremenljivka s WHERE s.id=g.spr_id AND g.spr_id=m.spr_id AND m.spr_id IN (".implode($multipleSprId, ',').") ORDER BY m.vrstni_red, g.vrstni_red"); + $sqlMultiple = sisplet_query("SELECT g.*, s.tip, s.enota, s.dostop FROM srv_grid g, srv_grid_multiple m, srv_spremenljivka s WHERE s.id=g.spr_id AND g.spr_id=m.spr_id AND m.spr_id IN (".implode(',', $multipleSprId).") ORDER BY m.vrstni_red, g.vrstni_red"); //echo "SELECT g.*, s.tip, s.enota, s.dostop FROM srv_grid g, srv_grid_multiple m, srv_spremenljivka s WHERE s.id=g.spr_id AND g.spr_id=m.spr_id AND m.spr_id IN (".implode($multipleSprId, ',').") ORDER BY m.vrstni_red, g.vrstni_red"; //poizvedba podnaslovov v kombinirani tabeli - $sqlMultiplePodNaslovi = sisplet_query("SELECT naslov FROM srv_spremenljivka WHERE id IN (".implode($multipleSprId, ',').")"); + $sqlMultiplePodNaslovi = sisplet_query("SELECT naslov FROM srv_spremenljivka WHERE id IN (".implode(',', $multipleSprId).")"); //novo za kombinirano tabelo - konec $spremenljivkaParams = new enkaParameters($spremenljivke['params']); @@ -114,14 +129,14 @@ class GridMultipleLatex extends LatexSurveyElement if($usr_id){ $multipleVredIdDrugo = array(); //polje za shranjevanje vre_id, kjer je prisotna moznost Drugo: //poizvedba vrednosti polj, kjer se pojavijo polja Drugo: - $sqlMultipleVredIdZaDrugo = sisplet_query("SELECT id FROM srv_vrednost WHERE spr_id IN (".implode($multipleSprId, ',').") AND other = 1"); + $sqlMultipleVredIdZaDrugo = sisplet_query("SELECT id FROM srv_vrednost WHERE spr_id IN (".implode(',', $multipleSprId).") AND other = 1"); while ($rowsqlMultipleVredIdZaDrugo = mysqli_fetch_array($sqlMultipleVredIdZaDrugo)) { $multipleVredIdDrugo[] = $rowsqlMultipleVredIdZaDrugo['id']; } if(!empty($multipleVredIdDrugo)){ $multipleBesediloDrugo = array(); //polje za shranjevanje vnesenega besedila iz strani respondenta, kjer je prisotna moznost Drugo: - $sqlStavekMultipleBesediloDrugo = "SELECT text FROM srv_data_text_active WHERE vre_id IN (".implode($multipleVredIdDrugo, ',').") AND usr_id=".$usr_id." "; + $sqlStavekMultipleBesediloDrugo = "SELECT text FROM srv_data_text_active WHERE vre_id IN (".implode(',', $multipleVredIdDrugo).") AND usr_id=".$usr_id." "; $sqlMultipleBesediloDrugo = sisplet_query($sqlStavekMultipleBesediloDrugo); while ($rowsqlMultipleBesediloDrugo = mysqli_fetch_array($sqlMultipleBesediloDrugo)) { $multipleBesediloDrugo[] = $rowsqlMultipleBesediloDrugo['text']; @@ -133,13 +148,27 @@ class GridMultipleLatex extends LatexSurveyElement //ce je prisoten id uporabnika - ureditev belezenja vnesenega odgovora pod Drugo: - konec //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - navpicni odgovori - while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ - $stringTitleRow = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) )); + while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ + $stringTitleRow = ''; + /* $stringTitleRow = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) )); # po potrebi prevedemo naslov $naslov = $this->srv_language_vrednost($rowVrednost['id']); if ($naslov != '') { //$rowVrednost['naslov'] = $naslov; $stringTitleRow = $naslov; + } */ + + if($this->prevod){ //ce je prevod ankete + # po potrebi prevedemo naslov + $rowl = $this->srv_language_vrednost($rowVrednost['id']); + if ($rowl != '') { + $stringTitleRow = ((( $rowl['naslov'] ) ? $rowl['naslov'] : ( ( $rowl['naslov2'] ) ? $rowl['naslov2'] : $rowl['variable'] ) )); //prevod naslova v ustreznem jeziku; + } + if($stringTitleRow == ''){ //ce ni prevoda, prevzemi izvirno + $stringTitleRow = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) )); + } + }else{ + $stringTitleRow = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) )); } $besediloDrugo = ''; @@ -148,13 +177,15 @@ class GridMultipleLatex extends LatexSurveyElement if($rowVrednost['other'] && $usr_id){ //zabelezi besedilo, ki je trenuten uporabnik za trenuten odgovor zapisal pod Drugo: $besediloDrugo = $multipleBesediloDrugo[$indeksBesediloDrugo]; - $this->encodeText($besediloDrugo); + LatexDocument::encodeText($besediloDrugo); $besediloDrugo = ' \\textcolor{crta}{\footnotesize{'.$besediloDrugo.'}} '; $indeksBesediloDrugo++; //povecaj indeks za izpis vnesenega besedila v Drugo: } //ce je drugo vnesen kot odgovor in je prisoten id uporabnika - konec - - array_push($navpicniOdgovori, $this->encodeText($stringTitleRow)." ".$besediloDrugo); //filanje polja z navpicnimi odgovori (po vrsticah) + if($usr_id){ + $stringTitleRow = Common::getInstance()->dataPiping($stringTitleRow, $usr_id, $loop_id); + } + array_push($navpicniOdgovori, LatexDocument::encodeText($stringTitleRow, 0, 1)." ".$besediloDrugo); //filanje polja z navpicnimi odgovori (po vrsticah) } //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - navpicni odgovori - konec @@ -164,19 +195,19 @@ class GridMultipleLatex extends LatexSurveyElement $steviloSkupinRoletSeznamov = 0; //belezi stevilo enot z roletami ali seznamov (pomembno za pravilen izris, za presiroko tabelo) $steviloOdgovorovRoletSeznamov = 0; //belezi stevilo posameznih odgovorov, ki sestavljajo razlicne rolete ali sezname $sprIdRoletSeznamov = 0; - $sprIdRoletSeznamovTmp = 0; + $sprIdRoletSeznamovTmp = 0; //pregled vseh odgovorov po stolpcih po $sqlStolpciVrednosti - vodoravni odgovori while ($colVrednost = mysqli_fetch_assoc($sqlStolpciVrednosti)){ - - #staro, izpis naslovov stolpcev tabele z isto velikostjo pisave, kot vse ostalo - /* $stringTitleCol = $colVrednost['naslov']; - array_push($vodoravniOdgovori, $this->encodeText($stringTitleCol, 0, 1) ); //filanje polja z vodoravnimi odgovori (po stolpcih) */ - #staro - konec - - $stringTitleCol = $this->encodeText($colVrednost['naslov'], 0, 1); - $stringTitleCol = '\footnotesize{'.$stringTitleCol.'}'; //zmanjsanje pisave za naslove stolpcev tabele - array_push($vodoravniOdgovori, $stringTitleCol); //filanje polja z vodoravnimi odgovori (po stolpcih) + $stringTitleCol = ''; + $rowl = $this->srv_language_grid($colVrednost['variable'],$colVrednost['spr_id']); + if ($rowl !=null && strip_tags($rowl['naslov']) != '') $colVrednost['naslov'] = $rowl['naslov']; + $stringTitleCol = $colVrednost['naslov']; + if($usr_id){ + $stringTitleCol = Common::getInstance()->dataPiping($stringTitleCol, $usr_id, $loop_id); + } + $stringTitleCol = '\footnotesize{'.LatexDocument::encodeText($stringTitleCol, 0, 1).'}'; //zmanjsanje pisave za naslove stolpcev tabele + array_push($vodoravniOdgovori, $stringTitleCol); //filanje polja z vodoravnimi odgovori (po stolpcih) $rowMultiple = mysqli_fetch_array($sqlMultiple); array_push($vodoravniOdgovoriTip, $rowMultiple['tip']); //filanje polja s tipi spremenljivk @@ -187,38 +218,25 @@ class GridMultipleLatex extends LatexSurveyElement if(($rowMultiple['enota'] == 2 || $rowMultiple['enota'] == 6)){ $sprIdRoletSeznamov = $rowMultiple['spr_id']; } - - /* echo "enota ".$rowMultiple['enota']."
"; - echo "spr ".$rowMultiple['spr_id']."
"; */ - //if(($rowMultiple['enota'] == 2 || $rowMultiple['enota'] == 6)){ //ce je roleta ali seznam IN je izpis odgovorov + //if(($rowMultiple['enota'] == 2 || $rowMultiple['enota'] == 6)&&$izpisOdgovorov){ //ce je roleta ali seznam IN je izpis odgovorov if((($rowMultiple['enota'] == 2 || $rowMultiple['enota'] == 6)&&$izpisOdgovorov) || ($izpisOdgovorov&&$rowMultiple['tip']==6&&$export_data_type==2)){ //(ce je roleta ALI seznam IN je izpis odgovorov) ALI (je izpis odgovorov IN je radio button) if($sprIdRoletSeznamovTmp != $sprIdRoletSeznamov){ $steviloSkupinRoletSeznamov++; } $steviloOdgovorovRoletSeznamov++; - //echo "spr: $sprIdRoletSeznamov
"; } - $sprIdRoletSeznamovTmp = $sprIdRoletSeznamov; + $sprIdRoletSeznamovTmp = $sprIdRoletSeznamov; } //pregled vseh odgovorov po stolpcih po $sqlStolpciVrednosti - vodoravni odgovori - konec $vodoravniOdgovoriVsi = $vodoravniOdgovori; - /* echo "stevilo skupin rolet/seznamov ".($steviloSkupinRoletSeznamov)."
"; - echo "stevilo odgovorov v roletah ali seznamu ".($steviloOdgovorovRoletSeznamov)."
"; */ - -/* echo "vodoravniOdgovoriSprId: "; - print_r($vodoravniOdgovoriSprId); - echo "
"; - echo "Enote: "; - print_r($vodoravniOdgovoriEnota); - echo "
"; */ //ureditev polja z nadnaslovi kombinirane tabele while ($rowMultiplePodNaslovi = mysqli_fetch_array($sqlMultiplePodNaslovi)){ - array_push($podNaslovi, $this->encodeText($rowMultiplePodNaslovi['naslov'])); + array_push($podNaslovi, LatexDocument::encodeText($rowMultiplePodNaslovi['naslov'], 0, 1)); } //ureditev polja z nadnaslovi kombinirane tabele - konec @@ -228,10 +246,8 @@ class GridMultipleLatex extends LatexSurveyElement $steviloPodstolpcev = $numColSql - $steviloOdgovorovRoletSeznamov + $steviloSkupinRoletSeznamov; $mejaZaVelikeTabele = 7; $velikostTabele = $steviloPodstolpcev-1; - //echo "velikost tabele: ".($velikostTabele)."
"; + if($velikostTabele > $mejaZaVelikeTabele){ //ce imamo veliko tabelo, jo je potrebno razbiti na vec tabel, ker drugace je presiroka - //echo "tabela je prevelika, ima ".($velikostTabele)." stolpcev
"; - $presirokaTabela = 1; $steviloTabelCelih = intval($velikostTabele / $mejaZaVelikeTabele); $steviloTabelMod = $velikostTabele % $mejaZaVelikeTabele; @@ -240,11 +256,6 @@ class GridMultipleLatex extends LatexSurveyElement $delnaTabela = 1; } $steviloTabel = $steviloTabelCelih + $delnaTabela; - - //echo "stevilo podtabel celih ".($steviloTabelCelih)."
"; - //echo "stevilo podtabel mod ".($steviloTabelMod)."
"; - //echo "stevilo podtabel za izpis: ".($steviloTabel)."
"; - //echo "stevilo podatkov za izpis: ".($steviloPodatkovZaIzpis)."
"; }else{ $presirokaTabela = 0; @@ -273,11 +284,6 @@ class GridMultipleLatex extends LatexSurveyElement $valueTmp = null; foreach($vodoravniOdgovoriSprId as $value){ //parametri tabele ZA OSTALE STOLPCE+pridobitev stevila stolpcev+priprava polj in spremenljivk ############### - //echo $vodoravniOdgovoriEnota[$indeksParameterTabular-1]."
"; - //echo "value: ".$value."
"; - //echo "valueTmp: ".$valueTmp."
"; - //echo "indeksParameterTabular: ".$indeksParameterTabular."
"; - //echo "Stevilo vodoravniOdgovoriSprId: ".count($vodoravniOdgovoriSprId)."
"; if($izpisOdgovorov == 0 || ($izpisOdgovorov == 1 && $vodoravniOdgovoriEnota[$indeksParameterTabular-1]==0 && $export_data_type == 1) || ($izpisOdgovorov == 1 && $vodoravniOdgovoriEnota[$indeksParameterTabular-1]==0 && $vodoravniOdgovoriTip[$indeksParameterTabular-1]!=6 && $export_data_type == 2)){ //ce je prazen vprasalnik ALI (je izpis odgovorov IN ni roleta/seznam IN je Razsirjen izvoz) ALI (je izpis odgovorov IN ni roleta/seznam IN ni radio button IN je skrcen izvoz) if($indeksParameterTabular==1){ //ce je prvi podstolpec @@ -345,8 +351,6 @@ class GridMultipleLatex extends LatexSurveyElement $indeksVodoravniOdgovori++; } //parametri tabele ZA OSTALE STOLPCE+pridobitev stevila stolpcev+priprava polj in spremenljivk - konec ########################################## - //echo "Parametri tabel: ".$parameterTabular."
"; - //brisanje odvecnih elementov polja in ponovna indeksacija polja foreach($toDelete as $value){ unset($vodoravniOdgovoriPrva[$value]); //brisanje ustreznih elementov polja @@ -371,20 +375,17 @@ class GridMultipleLatex extends LatexSurveyElement }else{ $numColSqlPrva = $numColSql; } - //echo "stevilo stolpcev prva vrstica $numColSqlPrva
"; //dodatna priprava polj in spremenljivk, ce enota je razlicna od nula oz. izris ni klasicna tabela - konec ############################# //ureditev parametrov za tabelo, pridobitev stevila stolpcev za vsak tip dodanega vprasanja (podstolpec), priprava polj in spremenljivk, ce enota je razlicna od nula oz. izris ni klasicna tabela - konec ######## //IZRIS TABELE - $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); //zacetek tabele + $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'xltabular', 'tabular', 1, 1); //zacetek tabele #nadnaslovi nad prvo vrstico ######################################################### if($spremenljivke['grid_subtitle1']==1){ //ce so podnaslovi for($n=0;$n'; - //$tex .= ' & \multicolumn{'.$steviloPodStolpcev[$n].'}{c}{'.$podNaslovi[$n].'}'; $tex .= ' & \multicolumn{'.$steviloPodStolpcev[$n].'}{C}{'.$podNaslovi[$n].'}'; } } @@ -398,20 +399,20 @@ class GridMultipleLatex extends LatexSurveyElement $tex .= $texNewLine; - //print_r($userAnswer); - #izris vrstic tabele $fillablePdf = 0; //echo "stevilo stolpcev tabele $numColSql
"; - $tex .= $this->LatexVrsticeMultigrid($numRowsSql, $export_format, $enota, $simbolTex, $navpicniOdgovori, 0, $fillablePdf, $numColSql, $spremenljivke, $trak, $vodoravniOdgovori, $texNewLine, 0, 0, $vodoravniOdgovoriTip, $vodoravniOdgovoriEnota, $vodoravniOdgovoriSprId, $userAnswer, $export_subtype, $preveriSpremenljivko, $userDataPresent, $presirokaTabela, $export_data_type); + $tex .= $this->LatexVrsticeMultigrid($numRowsSql, $export_format, $enota, null, $navpicniOdgovori, 0, $fillablePdf, $numColSql, $spremenljivke, $trak, $vodoravniOdgovori, $texNewLine, 0, 0, $vodoravniOdgovoriTip, $vodoravniOdgovoriEnota, $vodoravniOdgovoriSprId, $userAnswer, $export_subtype, $preveriSpremenljivko, $userDataPresent, $presirokaTabela, $export_data_type, $this->usr_id, $this->loop_id); #izris vrstic tabele - konec - $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); //zakljucek tabele + $tex .= $this->EndLatexTable($export_format, 'xltabular', 'tabular'); //zakljucek tabele //IZRIS TABELE - KONEC $tex .= $this->texBigSkip; $tex .= $this->texBigSkip; - + /* $time_end = microtime(true); + $execution_time = ($time_end - $time_start); + echo 'Total Execution Time kombinirana tabela: '.$execution_time.' sec'; */ return $tex; }elseif($presirokaTabela == 1){ //ce je tabela presiroka ################################################# @@ -419,7 +420,6 @@ class GridMultipleLatex extends LatexSurveyElement //za vsako spremenljivko oz. podtabelo foreach($multipleSprId AS $sprId){ - //echo "$sprId
"; #pobiranje podatkov o odgovorih respondenta za vsako podtabelo posebej if($usr_id){ //ce je prisotne id uporabnika, je izpis odgovorov in je potrebno narediti naslednje stvari @@ -429,13 +429,10 @@ class GridMultipleLatex extends LatexSurveyElement if($value!=''){ $userDataPresent=1; } - //echo "Value: ".$value."
"; } $izpisOdgovorov = 1; } - //echo "podatek je: ".$userDataPresent."
"; - /* print_r($userAnswer); - echo "
"; */ + #pobiranje podatkov o odgovorih respondenta za vsako podtabelo posebej - konec $vodoravniOdgovoriTip = array(); @@ -452,9 +449,12 @@ class GridMultipleLatex extends LatexSurveyElement array_push($vodoravniOdgovoriTip, $rowMultiple['tip']); //filanje polja s tipi spremenljivk array_push($vodoravniOdgovoriSprId, $rowMultiple['spr_id']); //filanje polja z id spremenljivk array_push($vodoravniOdgovoriEnota, $rowMultiple['enota']); //filanje polja z enoto spremenljivk - //print_r($vodoravniOdgovoriTip); - $stringTitleCol = $this->encodeText($rowMultiple['naslov'], 0, 1); - $stringTitleCol = '\footnotesize{'.$stringTitleCol.'}'; //zmanjsanje pisave za naslove stolpcev tabele + + $stringTitleCol = $rowMultiple['naslov']; + if($usr_id){ + $stringTitleCol = Common::getInstance()->dataPiping($stringTitleCol, $usr_id, $loop_id); + } + $stringTitleCol = '\footnotesize{'.LatexDocument::encodeText($stringTitleCol, 0, 1).'}'; //zmanjsanje pisave za naslove stolpcev tabele //if(($vodoravniOdgovoriEnota[0] == 2 || $vodoravniOdgovoriEnota[0] == 6) && $izpisOdgovorov && $export_data_type == 1){ //(ce je roleta ALI seznam) IN je izpis odgovorov IN razsirjen izvoz if(($vodoravniOdgovoriEnota[0] == 2 || $vodoravniOdgovoriEnota[0] == 6) && $izpisOdgovorov && $export_data_type == 1 || ($izpisOdgovorov && $export_data_type == 2 && $vodoravniOdgovoriTip[0] == 6 )){ //(ce je roleta ALI seznam) IN je izpis odgovorov IN razsirjen izvoz ALI (je izpis odgovorov IN skrcen izvoz IN radio button) @@ -462,48 +462,25 @@ class GridMultipleLatex extends LatexSurveyElement }else{ array_push($vodoravniOdgovori, $stringTitleCol); //filanje polja z vodoravnimi odgovori (po stolpcih) } - //array_push($vodoravniOdgovori, $stringTitleCol); //filanje polja z vodoravnimi odgovori (po stolpcih) - //echo $rowMultiple['naslov']."
"; } //poizvedba podnaslovov v podtabeli kombinirane tabele $sqlMultiplePodNaslovi = sisplet_query("SELECT naslov FROM srv_spremenljivka WHERE id =".$sprId); //ureditev polja z nadnaslovi kombinirane tabele while ($rowMultiplePodNaslovi = mysqli_fetch_array($sqlMultiplePodNaslovi)){ - array_push($podNaslovi, $this->encodeText($rowMultiplePodNaslovi['naslov'])); + array_push($podNaslovi,LatexDocument::encodeText($rowMultiplePodNaslovi['naslov'], 0, 1)); } //ureditev polja z nadnaslovi kombinirane tabele - konec $enota = $vodoravniOdgovoriEnota[0]; - /* print_r($vodoravniOdgovoriTip); - echo "
"; - print_r($vodoravniOdgovoriSprId); - echo "
";*/ - /* print_r($vodoravniOdgovoriEnota); - echo "
"; */ - /* print_r($vodoravniOdgovori); - echo "
"; */ //ureditev parametrov tabele - /* echo "enota:".$vodoravniOdgovoriEnota[0]."
"; - echo "izpisOdgovorov:".$izpisOdgovorov."
"; - echo "tip:".$vodoravniOdgovoriTip[0]."
"; - echo "export_data_type:".$export_data_type."
"; */ - //if(($enota == 2 || $enota == 6) && $izpisOdgovorov && $export_data_type == 1){ //(ce je roleta ALI seznam) IN je izpis odgovorov IN razsirjen izvoz if(($enota == 2 || $enota == 6) && $izpisOdgovorov && $export_data_type == 1 || ($izpisOdgovorov && $export_data_type == 2 && $vodoravniOdgovoriTip[0] == 6 )){ //(ce je roleta ALI seznam) IN je izpis odgovorov IN razsirjen izvoz ALI (je izpis odgovorov IN skrcen izvoz IN radio button) $steviloStolpcev = 1 + 1; }else{ $steviloStolpcev = count($vodoravniOdgovoriSprId) + 1; } - //echo "stevilo stolpcev: $steviloStolpcev
"; - - /* if((($vodoravniOdgovoriEnota[0] == 2 || $vodoravniOdgovoriEnota[0] == 6)&&$izpisOdgovorov&&$export_data_type == 1) || ($izpisOdgovorov&&$export_data_type == 2&&$vodoravniOdgovoriTip[$indeksParameterTabular-1]==6)){ //(ce je roleta ali izberite iz seznama IN je izpis odgovorov IN razsirjen izvoz) ALI (je izpis odgovorov IN skrcen izvoz IN radio button) - - } */ - - - //echo "stevilo stolpcev: $steviloStolpcev
"; $parameterTabular = ''; $parameterTabular .= ($export_format == 'pdf' ? 'A' : 'l'); //leva poravnava stolpca fiksne sirine ZA PRVI STOLPEC (parameteri tabele) @@ -511,7 +488,6 @@ class GridMultipleLatex extends LatexSurveyElement for($i=1; $i<$steviloStolpcev;$i++){ $parameterTabular .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava stolpca } - //echo "parametri tabele: $parameterTabular
"; //ureditev parametrov tabele - konec @@ -522,8 +498,6 @@ class GridMultipleLatex extends LatexSurveyElement $steviloPodStolpcev = $steviloStolpcev - 1; if($spremenljivke['grid_subtitle1']==1){ //ce so podnaslovi for($n=0;$n"; - //$tex .= ' & \multicolumn{'.$steviloPodStolpcev.'}{c}{'.$podNaslovi[$n].'}'; $tex .= ' & \multicolumn{'.$steviloPodStolpcev.'}{C}{'.$podNaslovi[$n].'}'; } } @@ -540,7 +514,7 @@ class GridMultipleLatex extends LatexSurveyElement #izris vrstic tabele $fillablePdf = 0; //echo "stevilo stolpcev tabele $steviloStolpcev
"; - $tex .= $this->LatexVrsticeMultigrid($numRowsSql, $export_format, $enota, $simbolTex, $navpicniOdgovori, 0, $fillablePdf, $steviloStolpcev, $spremenljivke, $trak, $vodoravniOdgovori, $texNewLine, 0, 0, $vodoravniOdgovoriTip, $vodoravniOdgovoriEnota, $vodoravniOdgovoriSprId, $userAnswer, $export_subtype, $preveriSpremenljivko, $userDataPresent, $presirokaTabela, $export_data_type); + $tex .= $this->LatexVrsticeMultigrid($numRowsSql, $export_format, $enota, null, $navpicniOdgovori, 0, $fillablePdf, $steviloStolpcev, $spremenljivke, $trak, $vodoravniOdgovori, $texNewLine, 0, 0, $vodoravniOdgovoriTip, $vodoravniOdgovoriEnota, $vodoravniOdgovoriSprId, $userAnswer, $export_subtype, $preveriSpremenljivko, $userDataPresent, $presirokaTabela, $export_data_type, $this->usr_id, $this->loop_id); #izris vrstic tabele - konec $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); //zakljucek tabele diff --git a/admin/survey/export/latexclasses/Vprasanja/HeatmapLatex.php b/admin/survey/export/latexclasses/Vprasanja/HeatmapLatex.php index 94e86fb..f65b419 100644 --- a/admin/survey/export/latexclasses/Vprasanja/HeatmapLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/HeatmapLatex.php @@ -9,9 +9,10 @@ * Datum: 09/2017 *****************************************/ //use enkaParameters; -define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm -define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip -define("RADIO_BTN_SIZE", 0.13); + +if (!defined('PIC_SIZE')) define("PIC_SIZE", "\includegraphics[width=5cm]"); //slika sirine 50mm +if (!defined('ICON_SIZE')) define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip +if (!defined('RADIO_BTN_SIZE')) define("RADIO_BTN_SIZE", 0.13); class HeatmapLatex extends LatexSurveyElement { @@ -74,15 +75,19 @@ class HeatmapLatex extends LatexSurveyElement //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ $stringTitleRow = $rowVrednost['naslov']; //odgovori na levi strani - array_push($navpicniOdgovori, $this->encodeText($stringTitleRow) ); //filanje polja z navpicnimi odgovori (po vrsticah) + if($usr_id){ + $stringTitleRow = Common::getInstance()->dataPiping($stringTitleRow, $usr_id, $loop_id); + } + array_push($navpicniOdgovori, LatexDocument::encodeText($stringTitleRow) ); //filanje polja z navpicnimi odgovori (po vrsticah) } //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - konec //$tex .= $this->IzrisVsotaTabela($spremenljivke, $numRowsSql, $navpicniOdgovori, $texNewLine, $texNewLineAfterTable, $export_format, 0); - $imageName = $this->getImageName('hotspot', $spremenljivke['id'], 'hotspot_image='); - //echo("iz heatmap ime slike: ".$imageName."
"); + //html slike + //$imageName = ($spremenljivkaParams->get('hotspot_image') ? $spremenljivkaParams->get('hotspot_image') : ""); + $imageName = LatexDocument::getImageName('hotspot', $spremenljivke['id'], 'hotspot_image='); $path2Images = $this->path2Images; $imageNameTest = $path2Images.$imageName.'.png'; //za preveriti, ali obstaja slikovna datoteka na strezniku @@ -92,7 +97,7 @@ class HeatmapLatex extends LatexSurveyElement $imageName = $path2Images.$imageName; - if(filesize($imageNameTest) > 0){ + if(filesize(file_exists($imageNameTest)) > 0){ $image = PIC_SIZE."{".$imageName."}"; //priprave slike predefinirane dimenzije }else{ //$image = 'ni slike'; @@ -110,22 +115,29 @@ class HeatmapLatex extends LatexSurveyElement if($whileIndeks == 0){ //ce so prisotna imena obmocij, izpisi besedilo "Obmocja na sliki" $tex .= $lang['srv_export_hotspot_regions_names'].': '.$texNewLine; //izpis besedila "Obmocja na sliki" } - $tex .= $rowHotSpotRegions['region_name'].''.$texNewLine; - if($rowHotSpotRegions['region_name']){ - array_push($obmocjaNaSliki, $rowHotSpotRegions['region_name']); - //array_push($coordsObmocijNaSliki, $rowHotSpotRegions['region_coords']); - $coordsObmocijNaSliki[$rowHotSpotRegions['region_name']]=$rowHotSpotRegions['region_coords']; - $point[$rowHotSpotRegions['region_name']] = 0; + + $regionName = $rowHotSpotRegions['region_name']; + if($usr_id){ + $regionName = Common::getInstance()->dataPiping($regionName, $usr_id, $loop_id); + } + $regionName = LatexDocument::encodeText($regionName); + $tex .= $regionName.''.$texNewLine; + //echo "ime: $regionName
"; + + if($regionName){ + array_push($obmocjaNaSliki, $regionName); + $coordsObmocijNaSliki[$regionName]=$rowHotSpotRegions['region_coords']; + $point[$regionName] = 0; } $whileIndeks++; } $tex .= $texNewLine; - //ureditev missing-ov - if(count($missingOdgovori)!=0){ //ce so missing-i + //ureditev missing-ov - pokomentiranje missing-ov ob preurejanju kode za PHP8 - Patrik +/* if(count($missingOdgovori)!=0){ //ce so missing-i $vodoravniOdgovori = $this->AddMissingsToAnswers($vodoravniOdgovori, $missingOdgovori); - } + } */ //ureditev missing-ov - konec @@ -152,6 +164,7 @@ class HeatmapLatex extends LatexSurveyElement $textboxHeightOdgovori = 0; //visina okvirja z odgovorom $noBordersOdgovori = 0; $parameterTabular = 'l'; + $textboxAllignment = null; //za ureditev stevila tock v izbranih obmocjih $dataPointValue = array(); $data = array(); @@ -221,7 +234,7 @@ class HeatmapLatex extends LatexSurveyElement $point[$obmocjaNaSliki[$o]]++; } } - //echo "stevilo tock znotraj obmocja: ".$point["Besedilo"]."
"; + //echo "stevilo tock znotraj obmocja: ".$point["Besedilo"]."
"; } #pridobitev podatkov o obmocjih in podatka o prisotnosti tocke v obmocju - konec //echo $answer."
"; @@ -230,13 +243,13 @@ class HeatmapLatex extends LatexSurveyElement //zacetek tabele - $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); + $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'xltabular', 'tabular', 1, 1); //izpis latex kode za prazen okvir oz. okvir z odgovori respondenta $tex .= $this->LatexTextBox($export_format, $textboxHeightOdgovori, $textboxWidthOdgovori, $answer, $textboxAllignment, $noBordersOdgovori); //zakljucek tabele - $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); + $tex .= $this->EndLatexTable($export_format, 'xltabular', 'tabular'); //$tex .= $texNewLine; } @@ -256,13 +269,13 @@ class HeatmapLatex extends LatexSurveyElement } //zacetek tabele - $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); + $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'xltabular', 'tabular', 1, 1); //izpis latex kode za prazen okvir oz. okvir z odgovori respondenta $tex .= $this->LatexTextBox($export_format, $textboxHeightOdgovori, $textboxWidthOdgovori, $answerRegions, $textboxAllignment, $noBordersOdgovori); //zakljucek tabele - $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); + $tex .= $this->EndLatexTable($export_format, 'xltabular', 'tabular'); //$tex .= $texNewLine; } @@ -298,8 +311,8 @@ class HeatmapLatex extends LatexSurveyElement #funkcija, ki skrbi za pretvorbo stringa koordinat obmocja v polja function convertPolyString($polypoints=null){ $poly = []; - //$tmpX; - //$tmpY; + $tmpX = null; + $tmpY = null; $j = 0; $poly = explode(",", $polypoints); diff --git a/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php b/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php index d025c58..00bf512 100644 --- a/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php @@ -9,7 +9,7 @@ * Datum: 05/2018 *****************************************/ - define("NAGOVOR_LINE_WIDTH", 0.5); + if (!defined("NAGOVOR_LINE_WIDTH")) define("NAGOVOR_LINE_WIDTH", 0.5); class KalkulacijaLatex extends LatexSurveyElement { diff --git a/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php b/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php index f20eef4..41fe2a4 100644 --- a/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php @@ -9,7 +9,7 @@ * Datum: 05/2018 *****************************************/ - define("NAGOVOR_LINE_WIDTH", 0.5); + if (!defined("NAGOVOR_LINE_WIDTH")) define("NAGOVOR_LINE_WIDTH", 0.5); class KvotaLatex extends LatexSurveyElement { @@ -71,7 +71,7 @@ class KvotaLatex extends LatexSurveyElement //ime spremenljivke if($rowKvota['spr_id']>0){ //ce je spr_id vecji od 0 $rowVariableName = Cache::srv_spremenljivka($rowKvota['spr_id']); //pridobitev imena spremenljivke iz njenega id - $tex .= $lang['srv_vprasanje_tip_25'].'('.$rowVariableName['variable'].$this->encodeText('_').$rowVariableVrednostVrstniRed['vrstni_red'].')'; + $tex .= $lang['srv_vprasanje_tip_25'].'('.$rowVariableName['variable'].LatexDocument::encodeText('_').$rowVariableVrednostVrstniRed['vrstni_red'].')'; }else{ //drugace, ko je spr_id manjsi od 0, je negativne vrednosti, so zapisani statusi in tipi odgovorov switch ( $rowKvota['spr_id'] ){ case -1: diff --git a/admin/survey/export/latexclasses/Vprasanja/LokacijaLatex.php b/admin/survey/export/latexclasses/Vprasanja/LokacijaLatex.php index 90a40c1..ba2405a 100644 --- a/admin/survey/export/latexclasses/Vprasanja/LokacijaLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/LokacijaLatex.php @@ -111,13 +111,13 @@ class LokacijaLatex extends LatexSurveyElement #priprava odgovora respondenta - konec ####################################################################################### //zacetek tabele - $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); + $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'xltabular', 'tabular', 1, 1); //izpis latex kode za prazen okvir oz. okvir z odgovori respondenta $tex .= $this->LatexTextBox($export_format, $textboxHeightOdgovori, $textboxWidthOdgovori, $answer, $textboxAllignment, $noBordersOdgovori); //zakljucek tabele - $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); + $tex .= $this->EndLatexTable($export_format, 'xltabular', 'tabular'); //$tex .= $texNewLine; } } diff --git a/admin/survey/export/latexclasses/Vprasanja/MultiGridLatex.php b/admin/survey/export/latexclasses/Vprasanja/MultiGridLatex.php index 11f4be2..e7d8347 100644 --- a/admin/survey/export/latexclasses/Vprasanja/MultiGridLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/MultiGridLatex.php @@ -10,15 +10,16 @@ *****************************************/ -define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm -define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip -define("RADIO_BTN_SIZE", 0.13); -define("U_SHAPE_WIDTH_U", 4); -define("U_SHAPE_WIDTH_OKVIR", 3.62); -define("U_SHAPE_WIDTH_TEXT_U", 2.2); -define("U_SHAPE_WIDTH_TEXT_OKVIR", 1.81); -define("MAXSTEVILOSTOLPCEV", 21); //max Stevilo Stolpcev za prvo vrstico pod Drsnikom, zaradi tezav z izrisom, ce je teh vec kot toliko -define("VAS_SIZE", 0.04); //VAS_SIZE +if (!defined('PIC_SIZE')) define("PIC_SIZE", "\includegraphics[width=5cm]"); //slika sirine 50mm +if (!defined('ICON_SIZE')) define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip + +if (!defined('RADIO_BTN_SIZE')) define("RADIO_BTN_SIZE", 0.13); +if (!defined('U_SHAPE_WIDTH_U')) define("U_SHAPE_WIDTH_U", 4); +if (!defined('U_SHAPE_WIDTH_OKVIR')) define("U_SHAPE_WIDTH_OKVIR", 3.62); +if (!defined('U_SHAPE_WIDTH_TEXT_U')) define("U_SHAPE_WIDTH_TEXT_U", 2.2); +if (!defined('U_SHAPE_WIDTH_TEXT_OKVIR')) define("U_SHAPE_WIDTH_TEXT_OKVIR", 1.81); +if (!defined('MAXSTEVILOSTOLPCEV')) define("MAXSTEVILOSTOLPCEV", 21); //max Stevilo Stolpcev za prvo vrstico pod Drsnikom, zaradi tezav z izrisom, ce je teh vec kot toliko +if (!defined('VAS_SIZE')) define("VAS_SIZE", 0.04); //VAS_SIZE class MultiGridLatex extends LatexSurveyElement { @@ -40,11 +41,13 @@ class MultiGridLatex extends LatexSurveyElement protected $textRVreId = array(); //belezi vre_id navpicnih odgovorov, ki so bili izbrani in morajo biti na desni strani povleci-spusti protected $navpicniOdgovoriVreId = array(); //belezi vre_id navpicnih odgovorov protected $loop_id = null; // id trenutnega loopa ce jih imamo + protected $usr_id = null; protected $path2ImagesMulti; - + protected $language; - + protected $prevod; + public function __construct() { global $site_path; @@ -68,7 +71,9 @@ class MultiGridLatex extends LatexSurveyElement #funkcija za izvoz vprasalnika za posameznega respondenta public function exportData($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype=''){ global $lang; - //echo "exportData"; + + + // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta //$sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable, other, spr_id FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable, other, spr_id FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' AND hidden='0' ORDER BY vrstni_red"); @@ -97,7 +102,6 @@ class MultiGridLatex extends LatexSurveyElement $texNewLineAfterTable = $texNewLine." ".$texNewLine." ".$texNewLine; if($spremenljivke['enota']==10){ //ce je image hotspot $indeksZaWhile = 1; - //echo "Indeks je ena ce je hotspot
"; } $indeksDvojnaTabela1 = 1; $indeksDvojnaTabela2 = 1; @@ -110,10 +114,10 @@ class MultiGridLatex extends LatexSurveyElement while ($colVrednost = mysqli_fetch_assoc($sqlStolpciVrednosti)){ if($colVrednost['other'] != 0){ $stringMissingOdgovor = $colVrednost['naslov']; - array_push($missingOdgovori, $this->encodeText($stringMissingOdgovor) ); //filanje polja z missing odgovori + array_push($missingOdgovori, LatexDocument::encodeText($stringMissingOdgovor, 0, 1) ); //filanje polja z missing odgovori }else{ $stringTitleCol = $colVrednost['naslov']; - array_push($vodoravniOdgovori, $this->encodeText($stringTitleCol) ); //filanje polja z vodoravnimi odgovori (po stolpcih) + array_push($vodoravniOdgovori, LatexDocument::encodeText($stringTitleCol, 0, 1) ); //filanje polja z vodoravnimi odgovori (po stolpcih) } } //pregled vseh odgovorov po stolpcih po $sqlStolpciVrednosti - konec @@ -135,7 +139,7 @@ class MultiGridLatex extends LatexSurveyElement while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ $indeksZaWhile = 1; //navpicni odgovori - $stringCell_title = $this->encodeText(( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); + $stringCell_title = LatexDocument::encodeText(( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ), 0, 1 ); // še dodamo textbox če je polje other $_txt = ''; @@ -143,18 +147,10 @@ class MultiGridLatex extends LatexSurveyElement //$sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id='".$usr_id."' AND loop_id $loop_id"); $sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id=".$usr_id); $row4 = mysqli_fetch_assoc($sqlOtherText); - $_txt = ' '.$row4['text']; - //if($_txt!=' '){ - //$stringCell_title .= $_txt.':'; - //} + if(isset($row4)){ + $_txt = ' '.$row4['text']; + } } - //echo "zacetek funkcije
"; - //if($spremenljivke['enota']!=10){ //ce ni image hotspot -/* if($spremenljivke['enota']!=10&&$indeksZaWhile==1){ //ce ni image hotspot - $indeksZaWhile = 1; - echo "Indeks je ena ce ni hotspot
"; - } */ - //echo "odgovor: ".$stringCell_title."
"; $IndeksZaMissing=1; @@ -166,21 +162,15 @@ class MultiGridLatex extends LatexSurveyElement $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); if((count($missingOdgovori))&&($spremenljivke['tip']==19||$spremenljivke['tip']==20)){ //ce so missing-i - //echo "missing
"; $sqlUserAnswerMissing = $this->GetUsersDataGrid($spremenljivkeData, $db_table, $rowVrednost, $rowVsehVrednosti, $usr_id,0); $userAnswerMissing = mysqli_fetch_assoc($sqlUserAnswerMissing); - //echo "userAnswer Missing: ".$userAnswerMissing['grd_id'].'
'; } - //echo "rowVsehVrednosti['id']: ".$rowVsehVrednosti['id'].'
'; - //echo "userAnswer: ".$userAnswer['text'].'
'; - //echo "userAnswer: ".$userAnswer['grd_id'].'
'; - //echo "rowVrednost['spr_id']: ".$rowVrednost['spr_id'].'
'; - if($rowVsehVrednosti['id'] == $userAnswer['grd_id']){ //ce je podatek + if($rowVsehVrednosti['id'] == isset($userAnswer['grd_id'])){ //ce je podatek if($indeksDvojnaTabela1==1&&$spremenljivke['enota']==3&&in_array($spremenljivke['tip'], array(6, 16))){ //samo prvic izpisi nadnaslov 1, ce je dvojna tabela //naslov prvega dela grida za dvojno tabelo - $tex1 .= $this->encodeText($spremenljivke['grid_subtitle1']).$texNewLine; + $tex1 .= LatexDocument::encodeText($spremenljivke['grid_subtitle1'], 0, 1).$texNewLine; } if($spremenljivke['tip']==6||$spremenljivke['tip']==16){ if(($vNovoVrstico==1&&$spremenljivke['tip']==16)||$spremenljivke['tip']==6){ @@ -192,32 +182,24 @@ class MultiGridLatex extends LatexSurveyElement if($spremenljivke['tip']==16&&$indeksZaWhile!=1){ $tex1 .= ', '; } - $tex1 .= ' '.$this->encodeText($rowVsehVrednosti['naslov']); + $tex1 .= ' '.LatexDocument::encodeText($rowVsehVrednosti['naslov'], 0, 1); //$tex1 .= ' \\textcolor{crta}{'.$this->encodeText($rowVsehVrednosti['naslov']).'}'; } - //echo "Sprememba indeksa
"; $indeksZaWhile++; - $podatek = 1; - //echo "Zgornji: ".$indeksZaWhile."
"; - //echo "Zgornji: ".$indeksZaWhile." za ".$this->encodeText($rowVsehVrednosti['naslov'])."
"; - //echo "tex: ".$tex1."
"; + $podatek = 1; }else{ $podatek = 0; } - - //echo $this->encodeText($this->userAnswer['text']).'
'; if($spremenljivke['tip']==19||$spremenljivke['tip']==20){ //ce je grid stevilk ali besedil - //echo "Indeks missing: ".$IndeksZaMissing."
"; if(($IndeksZaMissing > ($numColSql-count($missingOdgovori)))&&(count($missingOdgovori))){ - //echo "userAnswer Missing je prisoten in njegov grd_id je: ".$userAnswerMissing['grd_id'].'
'; - $okvirZOdgovori = $this->getAnswerSymbol($export_format, $fillablePdf, 6, $spremenljivke['grids'], count($missingOdgovori), $userAnswerMissing['grd_id']); + $okvirZOdgovori = $this->getAnswerSymbol(null, $export_format, $fillablePdf, 6, $spremenljivke['grids'], count($missingOdgovori), $userAnswerMissing['grd_id']); }else{ - $okvirZOdgovori = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], count($missingOdgovori),$this->encodeText($userAnswer['text'])); + $user_answer_var = isset($userAnswer['text'])?$userAnswer['text']:''; + $okvirZOdgovori = $this->getAnswerSymbol(null, $export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], count($missingOdgovori), $user_answer_var); } //$okvirZOdgovori = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], count($missingOdgovori),$this->encodeText($userAnswer['text'])); - //echo "okvirZOdgovori: ".$okvirZOdgovori."
"; array_push($odgovoriRespondent, $okvirZOdgovori); } @@ -238,11 +220,7 @@ class MultiGridLatex extends LatexSurveyElement $tex2 = ''; $tex .= $tex1.$tex2; //zdruzitev obeh delov latex kode - //echo "tex: ".$tex." za ".$spremenljivke['variable']."
"; if($spremenljivke['tip']==19||$spremenljivke['tip']==20){ //ce je grid stevilk ali besedil - //echo "stevilo odgovorov: ".count($odgovoriRespondent)."
"; - //echo "stevilo odgovorov missing: ".count($userAnswerMissing)."
"; - //echo "stevilo odgovorov : ".count($userAnswer)."
"; return $odgovoriRespondent; }else{ return $tex; @@ -252,18 +230,23 @@ class MultiGridLatex extends LatexSurveyElement #funkcija za izvoz vprasalnika za posameznega respondenta - konec - //public function export($spremenljivke, $export_format, $questionText, $fillablePdf, $texNewLine, $export_subtype){ public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype='', $preveriSpremenljivko=null, $skipEmptySub=null, $export_data_type='', $skipEmpty=null, $loop_id=null, $language=null){ - //echo $export_data_type."
"; + $time_start = microtime(true); + $this->exportDataType = $export_data_type; global $lang; $this->language = $language; - + //preverjanje, ali je prevod + $this->prevod = $this->language?1:0; + //preverjanje, ali je prevod - konec + $this->preveriSpremenljivko = $preveriSpremenljivko; - $this->skipEmpty =$skipEmpty; + $this->skipEmpty = $skipEmpty; $this->skipEmptySub = $skipEmptySub; // Ce je spremenljivka v loopu $this->loop_id = $loop_id; + $this->usr_id = $usr_id; + // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta //$sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable, other, spr_id FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); @@ -276,9 +259,9 @@ class MultiGridLatex extends LatexSurveyElement $tex = ''; - if($export_subtype!='q_empty'&&$export_data_type!=1){ //ce ni prazen vprasalnik in izpis ni Dolg, dodaj prazno vrstico + //if($export_subtype!='q_empty'&&$export_data_type!=1){ //ce ni prazen vprasalnik in izpis ni Dolg, dodaj prazno vrstico //$tex .= '\\\\'; - } + //} $navpicniOdgovori = array(); $navpicniOdgovori = []; @@ -289,188 +272,128 @@ class MultiGridLatex extends LatexSurveyElement $missingOdgovori = array(); $missingOdgovori = []; $userAnswerData = array(); - //$textRVreId = array(); - + $indeksOdgovorovTextR = 0; $texNewLineAfterTable = $texNewLine." ".$texNewLine." ".$texNewLine; $indeksZaWhile = 1; $indeksOdgovorov = 0; - //echo "Funkcija export
"; - $nacinVnosa = $spremenljivke['ranking_k']; //nacin vnosa 0-Stevilo, 1-Drsnik + //$sqlVsehVrednsti = sisplet_query("SELECT id, naslov FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY 'vrstni_red'"); + //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ - //$prop['full'] = ( isset($userAnswer[$rowVrednost['id']]) ); - - //$stringTitleRow = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) )); - - #ce je respondent odgovarjal v drugem jeziku ######################## - $rowl = $this->srv_language_vrednost($rowVrednost['id']); - if (strip_tags($rowl['naslov']) != '') $rowVrednost['naslov'] = $rowl['naslov']; - if (strip_tags($rowl['naslov2']) != '') $rowVrednost['naslov2'] = $rowl['naslov2']; - #ce je respondent odgovarjal v drugem jeziku - konec ################ - - $stringTitleRow = $rowVrednost['naslov']; //odgovori na levi strani (za tabela diferencial) - $stringTitleRow2 = $rowVrednost['naslov2']; //odgovori na desni strani (za tabela diferencial) - - array_push($navpicniOdgovori, $this->encodeText($stringTitleRow, $rowVrednost['id']) ); //filanje polja z navpicnimi odgovori (po vrsticah) - array_push($navpicniOdgovori2, $this->encodeText($stringTitleRow2, $rowVrednost['id']) ); //filanje polja z navpicnimi odgovori2 (po vrsticah) if($spremenljivke['enota']==9){ //ce je povleci-spusti array_push($this->navpicniOdgovoriVreId, $rowVrednost['id'] ); //filanje polja z vre_id navpicnih odgovorov (po vrsticah), potrebno za povleci-spusti - //array_push($this->navpicniOdgovoriVreId, $rowVrednost['spr_id'] ); //filanje polja z vre_id navpicnih odgovorov (po vrsticah), potrebno za povleci-spusti } $indeksZaWhile++; - //echo "rowVrednost['id']: ".$rowVrednost['id'].'
'; $indeksZaWhileVsehVrednosti = 1; $indeksEnaMoznostProtiDrugi = 0; //belezi stevilo odgovorov v eni vrstici za enota=4 - $sqlVsehVrednsti = sisplet_query("SELECT id, naslov FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY 'vrstni_red'"); - //echo "začne drugi while
"; + $sqlVsehVrednsti = sisplet_query("SELECT id, naslov FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY 'vrstni_red'"); while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)){ - //$indeksZaWhile = $this->GetUsersDataGrid($spremenljivke, $this->db_table, $rowVrednost, $rowVsehVrednosti, $this->usr_id, 1); - //$sqlUserAnswer = $this->GetUsersDataGrid($spremenljivke, $db_table, $rowVrednost, $rowVsehVrednosti, $usr_id, 0); $sqlUserAnswer = $this->GetUsersDataGrid($spremenljivke, $db_table, $rowVrednost, $rowVsehVrednosti, $usr_id, 0, $this->loop_id); - $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); - //echo "userAnswer: ".$userAnswer['grd_id'].'
'; - //echo "userAnswerVreId: ".$userAnswer['vre_id'].'
'; - //echo "text: ".$userAnswer['text'].'
'; - -/* if($spremenljivke['enota']==4&&$userAnswer['grd_id']){ - $userAnswerData[$indeksOdgovorov] = $userAnswer['grd_id']; - echo "userAnswerData: ".$userAnswerData[$indeksOdgovorov].'
'; - //echo 'je 4
'; - $indeksOdgovorov++; */ if($spremenljivke['enota']==4){ //ce je ena moznost proti drugi - //echo 'je 4 '.$indeksOdgovorov.'
'; if($userAnswer['grd_id']){ //ce je podatek, ga zabelezi $userAnswerData[$indeksOdgovorov] = $userAnswer['grd_id']; - //echo "userAnswerData s podatkom: ".$userAnswerData[$indeksOdgovorov].'
'; - //echo 'je 4 '.$indeksOdgovorov.'
'; $indeksOdgovorov++; }else{ //drugace if($indeksEnaMoznostProtiDrugi>=1){ $userAnswerData[$indeksOdgovorov] = $userAnswer['grd_id']; - //echo "rabim prazno polje
"; - //echo "userAnswerData brez podatka: ".$userAnswerData[$indeksOdgovorov].'
'; - //echo 'je 4 '.$indeksOdgovorov.'
'; $indeksOdgovorov++; } - //echo "indeks se spremeni
"; $indeksEnaMoznostProtiDrugi++; } - //echo "indeksEnaMoznostProtiDrugi: ".$indeksEnaMoznostProtiDrugi.'
'; - //echo "userAnswerData: ".$userAnswerData[$indeksOdgovorov].'
'; - }elseif($spremenljivke['enota']!=4){ - $userAnswerData[$indeksOdgovorov] = $userAnswer['grd_id']; - $userAnswerDataText[$indeksOdgovorov] = $userAnswer['text']; + }elseif($spremenljivke['enota']!=4){ + $userAnswerData[$indeksOdgovorov] = isset($userAnswer['grd_id']) ? $userAnswer['grd_id'] : null; + $userAnswerDataText[$indeksOdgovorov] = isset($userAnswer['text']) ? $userAnswer['text'] : ''; if($spremenljivke['enota']==9){ //povleci spusti - $this->textRVreId[$indeksOdgovorov] = $userAnswer['vre_id']; + $this->textRVreId[$indeksOdgovorov] = isset($userAnswer['vre_id']) ? $userAnswer['vre_id'] : null; if(isset($userAnswer['vre_id'])){ //$sqlTextRString = 'SELECT naslov FROM srv_vrednost WHERE id='.$userAnswer['vre_id'].' '; - $sqlTextRString = 'SELECT naslov FROM srv_vrednost WHERE id='.$userAnswer['vre_id'].' AND hidden="0" '; - //echo $sqlTextRString."
"; + $sqlTextRString = 'SELECT naslov FROM srv_vrednost WHERE id='.(isset($userAnswer['vre_id']) ? $userAnswer['vre_id'] : null).' AND hidden="0" '; $sqlTextR = sisplet_query($sqlTextRString); $rowTextR = mysqli_fetch_assoc($sqlTextR); - //echo $rowTextR['naslov']."
"; - //echo $indeksOdgovorovTextR.'
'; - - //$this->textRArray[$indeksOdgovorovTextR] = $rowTextR['naslov']; - - //$this->textRArrayIndex[$userAnswer['grd_id']] = array($this->textRArray[$indeksOdgovorovTextR]); - //echo "this->textRArray indeks ".$userAnswer['grd_id']." ".$this->textRArrayIndex[$userAnswer['grd_id']][$indeksOdgovorovTextR].'
'; $this->textRArray[$indeksOdgovorovTextR][$userAnswer['grd_id']]=$rowTextR['naslov']; - //echo "this->textRArray: ".$this->textRArray[$indeksOdgovorovTextR][$userAnswer['grd_id']].'
'; - //echo "this->textRArray indeks ".$indeksOdgovorov." ".$textRVreId[$indeksOdgovorov].'
'; $indeksOdgovorovTextR++; } } $indeksOdgovorov++; - } - //echo "rowVrednost['spr_id']: ".$rowVrednost['spr_id'].'
'; - //echo "rowVrednost['id']: ".$rowVrednost['id'].'
'; - //echo "rowVsehVrednosti['id']: ".$rowVsehVrednosti['id'].'
'; - if($rowVsehVrednosti['id'] == $userAnswer['grd_id']){ + } + if( ($userAnswer!=null && ($rowVsehVrednosti['id'] == $userAnswer['grd_id'])) || $rowVrednost['other'] ){ $indeksZaWhileVsehVrednosti++; } if($indeksZaWhileVsehVrednosti!=1){ $userDataPresent = 1; + }else{ + $userDataPresent = 0; } - //echo "userAnswerData: ".$userAnswerData[$indeksOdgovorov].'
'; - //echo "enota: ".$spremenljivke['enota'].'
'; - //echo "indeksOdgovorov: ".$indeksOdgovorov.'
'; - //$indeksOdgovorov++; } + + #ce je respondent odgovarjal v drugem jeziku ######################## + $rowl = $this->srv_language_vrednost($rowVrednost['id']); + if ($rowl!=null && strip_tags($rowl['naslov']) != '' && !$userDataPresent) $rowVrednost['naslov'] = $rowl['naslov']; + if ($rowl!=null && strip_tags($rowl['naslov2']) != '' && !$userDataPresent) $rowVrednost['naslov2'] = $rowl['naslov2']; + #ce je respondent odgovarjal v drugem jeziku - konec ################ + + if($usr_id){ + $stringTitleRow = Common::getInstance()->dataPiping($rowVrednost['naslov'], $usr_id, $loop_id); //odgovori na levi strani (za tabela diferencial) + $stringTitleRow2 = Common::getInstance()->dataPiping($rowVrednost['naslov2'], $usr_id, $loop_id); //odgovori na desni strani (za tabela diferencial) + }else{ + $stringTitleRow = $rowVrednost['naslov']; + $stringTitleRow2 = $rowVrednost['naslov2']; + } + + array_push($navpicniOdgovori, LatexDocument::encodeText($stringTitleRow, $rowVrednost['id'], 1) ); //filanje polja z navpicnimi odgovori (po vrsticah) + array_push($navpicniOdgovori2, LatexDocument::encodeText($stringTitleRow2, $rowVrednost['id'], 1) ); //filanje polja z navpicnimi odgovori2 (po vrsticah) + } //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - konec - - /* echo "userDataPresent: ".$userDataPresent."
"; - echo "preveriSpremenljivko: ".$preveriSpremenljivko."
"; */ - + $this->userDataPresent = $userDataPresent; - if($userDataPresent!=0||$export_subtype=='q_empty'||$export_subtype=='q_comment'||$preveriSpremenljivko){ //ce je kaj v bazi ali je prazen vprasalnik ali je potrebno pokazati tudi ne odgovorjena vprasanja - //echo count($userAnswerData)." za ".$spremenljivke['id']."
"; + //if($userDataPresent!=0||$export_subtype=='q_empty'||$export_subtype=='q_comment'||$preveriSpremenljivko){ //ce je kaj v bazi ali je prazen vprasalnik ali je potrebno pokazati tudi ne odgovorjena vprasanja //pregled vseh odgovorov po stolpcih po $sqlStolpciVrednosti - while ($colVrednost = mysqli_fetch_assoc($sqlStolpciVrednosti)){ + while ($colVrednost = mysqli_fetch_assoc($sqlStolpciVrednosti)){ + #ce je respondent odgovarjal v drugem jeziku ######################## + $rowl = $this->srv_language_grid($colVrednost['id'],$spremenljivke['id']); + if ($rowl!=null && strip_tags($rowl['naslov']) != '' && !$userDataPresent) $colVrednost['naslov'] = $rowl['naslov']; + #ce je respondent odgovarjal v drugem jeziku - konec ################ if($colVrednost['other'] != 0){ $stringMissingOdgovor = $colVrednost['naslov']; - array_push($missingOdgovori, $this->encodeText($stringMissingOdgovor) ); //filanje polja z missing odgovori - }else{ - #ce je respondent odgovarjal v drugem jeziku ######################## - $rowl = $this->srv_language_grid($colVrednost['id'],$spremenljivke['id']); - if (strip_tags($rowl['naslov']) != '') $colVrednost['naslov'] = $rowl['naslov']; - #ce je respondent odgovarjal v drugem jeziku - konec ################ - + array_push($missingOdgovori, LatexDocument::encodeText($stringMissingOdgovor, 0, 1) ); //filanje polja z missing odgovori + }else{ $stringTitleCol = $colVrednost['naslov']; $stringTitleCol = str_replace('
','',$stringTitleCol); //odstranitev odvecnih
iz naslova stolpcev - array_push($vodoravniOdgovori, $this->encodeText($stringTitleCol) ); //filanje polja z vodoravnimi odgovori (po stolpcih) + if($usr_id){ + $stringTitleCol = Common::getInstance()->dataPiping($stringTitleCol, $usr_id, $loop_id); + } + array_push($vodoravniOdgovori, LatexDocument::encodeText($stringTitleCol, 0, 1) ); //filanje polja z vodoravnimi odgovori (po stolpcih) } } - //pregled vseh odgovorov po stolpcih po $sqlStolpciVrednosti - konec + //pregled vseh odgovorov po stolpcih po $sqlStolpciVrednosti - konec - if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){ //ce je dolg izvoz - //pridobitev ustreznega simbola (ali podatkov) za izris odgovorov - if($spremenljivke['tip']==6){ //grid radio - //if($spremenljivke['enota']!=11){ //ce ni VAS - if($spremenljivke['enota']!=11 && $spremenljivke['enota']!=12){ //ce ni VAS in ni slikovni tip - $symbol = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0); - //$tex .= '{\ChoiceMenu[radio,radiosymbol=\ding{108},name=myGroupOfRadiobuttons]{}{='.$stringTitle.'}}'.$stringTitle.' '.$this->texNewLine; - //echo "simbol radio grid: ".$symbol."
"; - }else{ //drugace, ce je VAS - //$symbol = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0, $spremenljivke['enota']); - //echo "simbol VAS: ".$symbol."
"; - //echo "simbol radio grid: ".$spremenljivke['enota']."
"; - } - $internalCellHeight = '1 cm'; //visina praznega okvirja @povleci-spusti - }else if($spremenljivke['tip']==16){ //grid checkbox - $symbol = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0); - $internalCellHeight = '3 cm'; //visina praznega okvirja @povleci-spusti - }else if($spremenljivke['tip']==19||$spremenljivke['tip']==20){//multi text ali multinumber + //na novo + $fillablePdf = 0; + if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){ //ce je dolg izvoz ALI ( je izvoz praznega vprasalnika ali vprasalnika s komentarji) + $internalCellHeight = '3 cm'; + if($spremenljivke['tip'] == 19 || $spremenljivke['tip'] == 20){ // ce je multitext ali multinumber + //pridobitev ustreznega simbola (ali podatkov) za izris odgovorov if($export_subtype=='q_empty'||$export_subtype=='q_comment'){ //ce je prazen vprasalnik ali vprasalnik s komentarji - $symbol = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], count($missingOdgovori), 0); - //$internalCellHeight = '3 cm'; //visina praznega okvirja @povleci-spusti + $symbol = $this->getAnswerSymbol($export_subtype, $export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], count($missingOdgovori), 0); }else{ //ce je vprasalnik s podatki $symbol = $this->exportData($spremenljivke, $export_format, $questionText, $fillablePdf, $texNewLine, $usr_id, $db_table, $export_subtype); } - } - $this->internalCellHeight = $internalCellHeight; - //pridobitev ustreznega simbola (ali podatkov) za izris odgovorov - konec - } - - $fillablePdf = 0; - if((($spremenljivke['enota']==0)&&($spremenljivke['tip']==6||$spremenljivke['tip']==16))||($spremenljivke['tip']==19||$spremenljivke['tip']==20)){ //klasicna tabela ali multitext ali multinumber - - if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){//ce je dolg izvoz ali(prazen vprasalnik ali vpr. s komentarji) - //izris tabel ustrezne postavitve - if($spremenljivke['tip']==20){ //ce je tip vprasanja stevilo + //pridobitev ustreznega simbola (ali podatkov) za izris odgovorov - konec + + if($spremenljivke['tip'] == 20){ //ce je tip vprasanja stevilo if(($nacinVnosa == 0)){ //ce je nacin vnosa Stevilo $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerDataText, $export_subtype); }else if($nacinVnosa == 1 && $export_format=='pdf'){ //ce so drsniki in je pdf @@ -478,170 +401,104 @@ class MultiGridLatex extends LatexSurveyElement }else if($nacinVnosa == 1 && $export_format=='rtf'){ //ce so drsniki in je rtf $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerDataText, $export_subtype); } - }else{ + }else{ //drugace (ce je multitext) $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); } - - }elseif($export_data_type==0||$export_data_type==2){ //ce je Skrcen izvoz - //$tex .= "Navaden ali Kratek izvoz ".$texNewLine; - //echo "export_data_type $export_data_type
"; - - $navpicniOdgovori2 = 0; - //if($spremenljivke['tip']==20){ //ce je tip vprasanja stevilo - if($spremenljivke['tip']==20 || $spremenljivke['tip']==19){ //ce je tip vprasanja multi stevilo ali multi besedilo - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerDataText, $export_subtype); - }else{ //ce je grid en in vec odgovorov - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); - //$tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerDataText, $export_subtype); + }elseif($spremenljivke['tip'] == 6 || $spremenljivke['tip'] == 16){ //klasicna tabela + //pridobitev ustreznega simbola (ali podatkov) za izris odgovorov + if($spremenljivke['tip'] == 6){ //grid radio + if($spremenljivke['enota'] != 11 && $spremenljivke['enota'] != 12){ //ce ni VAS in ni slikovni tip + $symbol = $this->getAnswerSymbol($export_subtype, $export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0); + }elseif($spremenljivke['enota'] == 11){ // ce je VAS + $symbol = $this->getAnswerSymbol($export_subtype, $export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0, $spremenljivke['enota'], 1, '', $spremenljivke['id']); + //$symbol = []; + //$symbol = array("\\includegraphics[scale=".VAS_SIZE."]{".$this->path2Images."vas1}", "\\includegraphics[scale=".VAS_SIZE."]{".$this->path2Images."vas3}", "\\includegraphics[scale=".VAS_SIZE."]{".$this->path2Images."vas4}", "\\includegraphics[scale=".VAS_SIZE."]{".$this->path2Images."vas5}", "\\includegraphics[scale=".VAS_SIZE."]{".$this->path2Images."vas7}"); + } + $internalCellHeight = '1 cm'; //visina praznega okvirja @povleci-spusti + }else if($spremenljivke['tip'] == 16){ //grid checkbox + $symbol = $this->getAnswerSymbol($export_subtype, $export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0); + $internalCellHeight = '3 cm'; //visina praznega okvirja @povleci-spusti } - } - }elseif($spremenljivke['enota']==1){ //tabela diferencial - if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){//ce je dolg izvoz ali(prazen vprasalnik ali vpr. s komentarji) - //izris tabel ustrezne postavitve - $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); - }elseif($export_data_type==0||$export_data_type==2){ //ce je Navaden ali Kratek izvoz - $navpicniOdgovori2 = 0; - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); - } - }elseif($spremenljivke['enota']==2 || $spremenljivke['enota']==6){ //roleta ali izberite s seznama - if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){//ce je dolg izvoz ali(prazen vprasalnik ali vpr. s komentarji) - //izris tabel ustrezne postavitve - $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); - }elseif($export_data_type==0||$export_data_type==2){ //ce je Navaden ali Kratek izvoz - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); - } - }elseif($spremenljivke['enota']==4){ //ena moznost proti drugi - if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){//ce je dolg izvoz ali(prazen vprasalnik ali vpr. s komentarji) - //izris tabel ustrezne postavitve - $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); - }elseif($export_data_type==0||$export_data_type==2){ //ce je Navaden ali Kratek izvoz - //$tex .= "Navaden ali Kratek izvoz ".$texNewLine; - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); - } - }elseif($spremenljivke['enota']==5){ //maxdiff - if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){//ce je dolg izvoz ali(prazen vprasalnik ali vpr. s komentarji) - //izris tabel ustrezne postavitve - $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); - }elseif($export_data_type==0||$export_data_type==2){ //ce je Navaden ali Kratek izvoz - //$tex .= "Navaden ali Kratek izvoz ".$texNewLine; - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); - } - }elseif($spremenljivke['enota']==8){ //tabela da/ne - if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){//ce je dolg izvoz ali(prazen vprasalnik ali vpr. s komentarji) - //izris tabel ustrezne postavitve - $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); - }elseif($export_data_type==0||$export_data_type==2){ //ce je Navaden ali Kratek izvoz - //$tex .= "Navaden ali Kratek izvoz ".$texNewLine; - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); - - } - }elseif($spremenljivke['enota']==10){ //image hotspot - //if($export_subtype=='q_empty'){ //ce je prazen vprasalnik - //if($export_subtype=='q_empty'||$export_subtype=='q_comment'){ //ce je prazen vprasalnik - if($export_data_type==1||$export_subtype=='q_empty'||$export_subtype=='q_comment'){ //ce je prazen vprasalnik - $imageName = $this->getImageName('hotspot', $spremenljivke['id'], 'hotspot_image='); - $imageNameTest = $this->path2ImagesMulti.$imageName.'.png'; //za preveriti, ali obstaja slikovna datoteka na strezniku - //echo("za image hot spot grid: ".$imageNameTest."
"); - if(filesize($imageNameTest) > 0){ - $image = PIC_SIZE."{".$this->path2ImagesMulti."".$imageName."}"; //priprave slike predefinirane dimenzije + //pridobitev ustreznega simbola (ali podatkov) za izris odgovorov - konec + + $enote_brez_navp_odgov_2 = array(0, 2, 6, 5, 8, 3, 11, 12); //grid en in vec odgovorov, roleta, izberite s seznama, maxdiff, tabela da/ne, dvojna tabela, VAS, slikovni tip + if( in_array($spremenljivke['enota'], $enote_brez_navp_odgov_2) ){ + $navpicniOdgovori2 = 0; + } + if($spremenljivke['enota']==10){ //image hotspot + $imageName = LatexDocument::getImageName('hotspot', $spremenljivke['id'], 'hotspot_image='); + $imageNameTest = $this->path2ImagesMulti.$imageName.'.png'; //za preveriti, ali obstaja slikovna datoteka na strezniku + if(filesize($imageNameTest) > 0){ + $image = PIC_SIZE."{".$this->path2ImagesMulti."".$imageName."}"; //priprave slike predefinirane dimenzije + }else{ + $image = $lang['srv_pc_unavailable']; + } + + $tex .= $texNewLine; //prazna vrstica po vprasanju + $tex .= $image."".$texNewLine; //izris slike + + //iz baze poberi imena obmocij + $sqlHotSpotRegions = sisplet_query("SELECT region_name FROM srv_hotspot_regions WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); + + //izris imen obmocij po $sqlHotSpotRegions + $tex .= $lang['srv_export_hotspot_regions_names'].': '.$texNewLine; + while ($rowHotSpotRegions = mysqli_fetch_assoc($sqlHotSpotRegions)) + { + $tex .= $rowHotSpotRegions['region_name'].''.$texNewLine; + } + + //ureditev missing-ov + if(count($missingOdgovori)!=0){ //ce so missing-i + $vodoravniOdgovori = $this->AddMissingsToAnswers($vodoravniOdgovori, $missingOdgovori); + } + //ureditev missing-ov - konec + + //izris moznih odgovorov + $tex .= $lang['srv_drag_drop_answers'].': '.$texNewLine; + for($i=0; $i<$numColSql; $i++){ + $tex .= $vodoravniOdgovori[$i].$texNewLine; + } + if(($export_subtype=='q_data'||$export_subtype=='q_data_all')){ //ce je izpis respodenta + $tex .= $this->texNewLine; + $tex .= $lang['srv_respondent_answer'].": ".$this->texNewLine; + $navpicniOdgovori2 = 0; + $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); + }else{ + //prostor po izpisu, ce ni odgovorov respondenta + $tex .= '\vspace{0.5 cm}'; + $tex .= $texNewLine; + } + }elseif($spremenljivke['enota'] == 9){ //povleci spusti + $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); }else{ - //$image = 'ni slike'; - $image = $lang['srv_pc_unavailable']; - } - - $tex .= $texNewLine; //prazna vrstica po vprasanju - $tex .= $image."".$texNewLine; //izris slike - - //iz baze poberi imena obmocij - $sqlHotSpotRegions = sisplet_query("SELECT region_name FROM srv_hotspot_regions WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); - - //izris imen obmocij po $sqlHotSpotRegions - $tex .= $lang['srv_export_hotspot_regions_names'].': '.$texNewLine; - while ($rowHotSpotRegions = mysqli_fetch_assoc($sqlHotSpotRegions)) - { - $tex .= $rowHotSpotRegions['region_name'].''.$texNewLine; + $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); } - - //$tex .= $texNewLine; - - //ureditev missing-ov - if(count($missingOdgovori)!=0){ //ce so missing-i - $vodoravniOdgovori = $this->AddMissingsToAnswers($vodoravniOdgovori, $missingOdgovori); - } - //ureditev missing-ov - konec - - - //izris moznih odgovorov - $tex .= $lang['srv_drag_drop_answers'].': '.$texNewLine; - for($i=0; $i<$numColSql; $i++){ - $tex .= $vodoravniOdgovori[$i].$texNewLine; - } - }/* else{ //ce je vprasalnik s podatki - $tex .= $this->exportData($spremenljivke, $export_format, $questionText, $fillablePdf, $texNewLine, $usr_id, $db_table, $export_subtype); - } */ - if(($export_data_type==1||$export_data_type==0||$export_data_type==2)&&($export_subtype=='q_data'||$export_subtype=='q_data_all')){ //ce je Dolg, Navaden ali Kratek izvoz - if($export_data_type==1){ //ce je Dolg izvoz - $tex .= $this->texNewLine; - $tex .= $lang['srv_respondent_answer'].": ".$this->texNewLine; - } - - $navpicniOdgovori2 = 0; - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); - } - - //prostor po izpisu tabele - //$tex .= $texNewLine; - //$tex .= $texNewLine; - - }elseif($spremenljivke['enota']==3){ //dvojna tabela - if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){//ce je dolg izvoz ali(prazen vprasalnik ali vpr. s komentarji) - //izris tabel ustrezne postavitve - $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); - }elseif($export_data_type==0||$export_data_type==2){ //ce je Navaden ali Kratek izvoz - $navpicniOdgovori2 = 0; - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); } - }elseif($spremenljivke['enota']==9){ //povleci spusti - - //if($export_subtype=='q_empty'||$export_subtype=='q_comment'||$preveriSpremenljivko){ - //if($export_data_type==1||$export_subtype=='q_empty'||$export_subtype=='q_comment'||$preveriSpremenljivko){ - if($export_data_type==1||$export_subtype=='q_empty'||$export_subtype=='q_comment'||($preveriSpremenljivko&&$export_data_type==1)){ - $this->exportDataType = $export_data_type; - - $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); - }elseif($export_data_type==0||$export_data_type==2){ //ce je Navaden ali Kratek izvoz - $navpicniOdgovori2 = 0; - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); - } - }elseif($spremenljivke['enota']==11){ //VAS - if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){//ce je dolg izvoz ali(prazen vprasalnik ali vpr. s komentarji) - //izris tabel ustrezne postavitve - $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); - }elseif($export_data_type==0||$export_data_type==2){ //ce je Navaden ali Kratek izvoz - $navpicniOdgovori2 = 0; - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); - } - }elseif($spremenljivke['enota']==12){ //slikovni tip - if($export_data_type==1||($export_subtype=='q_empty'||$export_subtype=='q_comment')){//ce je dolg izvoz ali(prazen vprasalnik ali vpr. s komentarji) - //izris tabel ustrezne postavitve - $tex .= $this->IzrisTabeleMultiGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $symbol, $texNewLine, $texNewLineAfterTable, $export_format, 0, $missingOdgovori, $userAnswerData, $export_subtype); - }elseif($export_data_type==0||$export_data_type==2){ //ce je Skrcen izvoz - $navpicniOdgovori2 = 0; - $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); + $this->internalCellHeight = $internalCellHeight; + }elseif($export_data_type==0||$export_data_type==2){ //ce je Skrcen izvoz + if($spremenljivke['tip'] == 20 || $spremenljivke['tip'] == 19){ //ce je tip vprasanja multi stevilo ali multi besedilo + $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, 0, $export_format, $fillablePdf, $missingOdgovori, $userAnswerDataText, $export_subtype); + }elseif($spremenljivke['tip'] == 6 || $spremenljivke['tip'] == 16){ //klasicna tabela + $enote_brez_navp_odgov_2 = array(0, 3, 9, 10, 11, 12); //grid en in vec odgovorov, dvojna tabela, povleci-spusti, image hotspot, VAS, slikovni tip + if( in_array($spremenljivke['enota'], $enote_brez_navp_odgov_2) ){ + $navpicniOdgovori2 = 0; + } + $tex .= $this->IzpisOdgovorovGrid($spremenljivke, $numColSql, $numRowsSql, $vodoravniOdgovori, $navpicniOdgovori, $navpicniOdgovori2, $export_format, $fillablePdf, $missingOdgovori, $userAnswerData, $export_subtype); } } - + //na novo - konec + + //$tex .= $texNewLine; //$tex .= $this->texBigSkip; //$tex .= $this->texBigSkip; - if($export_format == 'pdf'){ //ce je pdf - //$tex .= '\\end{absolutelynopagebreak}'; //zakljucimo environment, da med vprasanji ne bo prelomov strani - }else{ //ce je rtf - - } + $time_end = microtime(true); + $execution_time = ($time_end - $time_start); + //echo '
Total Execution Time tabele '.$execution_time.' sec za vprašanje '.strip_tags($spremenljivke['naslov']).'
'; return $tex; - } + //} + } #konec export funkcije @@ -651,8 +508,6 @@ class MultiGridLatex extends LatexSurveyElement global $lang; $skipRow = false; $izpis = ''; - - #missingi################## if(count($missingOdgovori)!=0){ //ce so missingi, jih je potrebno dodati polju z odgovori po stolpcih ($vodoravniOdgovori) for($m=0;$m $vodoravniOdgovor){ //za vsak odgovor v vrstici - echo $vodoravniOdgovor."
"; - //echo $key."
"; - } */ - // - /* foreach($data AS $key => $datum){ //za vsak odgovor v vrstici - echo "Podatek: ".$datum."
"; - //echo $key."
"; - } */ $z = $j = $i = 0; @@ -721,7 +565,6 @@ class MultiGridLatex extends LatexSurveyElement } foreach($navpicniOdgovori AS $key => $navpicniOdgovor){ //za vsak odgovor v vrstici - //echo $navpicniOdgovor.": "; #Ce imamo nastavljeno preskakovanje podvprasanj preverimo ce je kaksen odgovor v vrstici ############################### if($this->skipEmptySub == 1){ $skipRow = true; @@ -729,7 +572,6 @@ class MultiGridLatex extends LatexSurveyElement if(isset($data[$z])){ //ce je podatek $skipRow = false; } - //echo "surov podatek: ".$data[$z]."
"; } } #Ce imamo nastavljeno preskakovanje podvprasanj preverimo ce je kaksen odgovor v vrstici - konec ####################### @@ -758,8 +600,8 @@ class MultiGridLatex extends LatexSurveyElement if($spremenljivke['enota']==4){ //ce je ena proti drugi $steviloStolpcev = 1; } + $indeksOdgovor2 = 0; foreach($navpicniOdgovori AS $key => $navpicniOdgovor){ //za vsak odgovor v vrstici - //echo $navpicniOdgovor.": "; #Ce imamo nastavljeno preskakovanje podvprasanj preverimo ce je kaksen odgovor v vrstici ############################### if($this->skipEmptySub == 1){ $skipRow = true; @@ -767,25 +609,24 @@ class MultiGridLatex extends LatexSurveyElement if(isset($data[$z])){ //ce je podatek $skipRow = false; } - //echo "surov podatek: ".$data[$z]."
"; } } #Ce imamo nastavljeno preskakovanje podvprasanj preverimo ce je kaksen odgovor v vrstici - konec ####################### - $steviloSlikovnihIkon = 0; //belezi stevilo slikovnih ikon if(!$skipRow){ - //$izpis .= ' \hspace*{0.25\textwidth} '; //da je indent do 25 % sirine strani if($spremenljivke['enota']!=4){ - $izpis .= $navpicniOdgovor.": "; + if($spremenljivke['enota']==1){ //ce je diferencial + $izpis .= $navpicniOdgovor."/".$navpicniOdgovori2[$indeksOdgovor2].": "; + }else{ + $izpis .= $navpicniOdgovor.": "; + } } $odgovorPrisoten = 0; //zastavica za ureditev izpisa vejice, ko je vec odgovorov v eni vrstici for($j=$j;$j<($steviloStolpcev*($key+1));$j++){ - //echo $j.' '; - //echo "surov podatek: ".$data[$j]."
"; if($spremenljivke['enota']==4){ //ce je ena proti drugi if($data[$j]==2){ $odgovorEnaProtiDrugi = '\\textcolor{crta}{'.$navpicniOdgovori2[$key].'}'; @@ -793,74 +634,21 @@ class MultiGridLatex extends LatexSurveyElement $odgovorEnaProtiDrugi = '\\textcolor{crta}{'.$navpicniOdgovor.'}'; } $izpis .= $odgovorEnaProtiDrugi; - }/* elseif($spremenljivke['enota']==11){ //ce je VAS - //echo "surov podatek: ".$data[$j]."
"; - //echo "stevilo stolpcev VAS: ".$steviloStolpcev."
"; - //$izpis .= "smily "; - if($data[$j]){ - //$symbol = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0, $spremenljivke['enota'], $data[$j]); - //$VASNumber = $data[$j]; - ########## - switch ($steviloStolpcev) { - case 1: - $VAS = ""; - break; - case 2: - $arrayVAS = ['vas3checked', 'vas5checked']; - break; - case 3: - $arrayVAS = ['vas3checked', 'vas4checked', 'vas5checked']; - break; - case 4: - $arrayVAS = ['vas2checked', 'vas3checked', 'vas5checked', 'vas6checked']; - break; - case 5: - $arrayVAS = [ 'vas2checked', 'vas3checked', 'vas4checked', 'vas5checked', 'vas6checked']; - break; - case 6: - $arrayVAS = ['vas1checked', 'vas2checked', 'vas3checked', 'vas5checked', 'vas6checked', 'vas7checked']; - break; - case 7: - $arrayVAS = ['vas1checked', 'vas2checked', 'vas3checked', 'vas4checked', 'vas5checked', 'vas6checked', 'vas7checked']; - break; - } - - ########## - if($steviloStolpcev > 1){ - $VAS = $arrayVAS[($data[$j]-1)]; - $symbol = "\\includegraphics[scale=".VAS_SIZE."]{".$this->path2Images."".$VAS."}"; - } - - $izpis .= $symbol; - // echo "symbol za VAS odgovor: ".$symbol."
"; - } - } elseif($spremenljivke['enota']==12){ //ce je slikovni tip - if($data[$j]){ //ce je podatek - $steviloSlikovnihIkon = $data[$j]; - //echo "stevilo slikovnih ikon: ".$steviloSlikovnihIkon."
"; - //echo "_______________________
"; - } - }*/else{ + }else{ if($i==$steviloStolpcev){ $i=0; } - /* echo "tip: ".$spremenljivke['tip']."
"; - echo "enota: ".$spremenljivke['enota']."
"; */ if(isset($data[$j])){ //ce je podatek - //echo $vodoravniOdgovori[$i].", "; - //echo $data[$j].", "; if($odgovorPrisoten==0){ $odgovorPrisoten = 1; }else{ - //}elseif($odgovorPrisoten==1){ $izpis .= ", "; } - //if($spremenljivke['tip']==20){ //ce je tip vprasanja stevilo if($spremenljivke['tip']==20||$spremenljivke['enota']==11||$spremenljivke['enota']==12){ //ce je tip vprasanja stevilo ALI VAS ALI slikovni tip $izpis .= '\\textcolor{crta}{'.$data[$j].'}'; }else{ if($spremenljivke['tip']==19){ //ce je tip vprasanja besedilo - $izpis .= '\\textcolor{crta}{'.$data[$j].'}'; + $izpis .= '\\textcolor{crta}{'.LatexDocument::encodeText($data[$j]).'}'; }else{ $izpis .= '\\textcolor{crta}{'.$vodoravniOdgovori[$i].'}'; } @@ -875,20 +663,18 @@ class MultiGridLatex extends LatexSurveyElement } if($spremenljivke['enota']==12){ //ce je slikovni tip, izpisi ustrezno stevilo simbololov $prviOdgovorSlikovniTip = 1; - //echo "izpis kode: ".$izpis."
"; for($p=0; $p<$steviloSlikovnihIkon; $p++){ $izpis .= ICON_SIZE."{".$this->path2Images."".$this->getCustomRadioSymbol($spremenljivke['id'], $prviOdgovorSlikovniTip)."}"; } $izpis .= $this->texNewLine; } + $indeksOdgovor2++; } } //konec, ce ni dvojna tabela + $izpis .= '\vspace{0.5 cm}'; $izpis .= $this->texNewLine; - /* if($spremenljivke['enota']==3){ - echo $izpis; - } */ return $izpis; } #funkcija, ki skrbi za izpis odgovor za grid vprasanja - konec ######################################################################## @@ -896,19 +682,32 @@ class MultiGridLatex extends LatexSurveyElement #funkcija, ki skrbi za izris Grida radio buttonov ali checkboxov za klasicno postavitev tabele ################################ function IzrisTabeleMultiGrid($spremenljivke=null, $steviloStolpcev=null, $steviloVrstic=null, $vodoravniOdgovori=null, $navpicniOdgovori=null, $navpicniOdgovori2=null, $simbolTex=null, $texNewLine='', $texNewLineAfterTable=null, $typeOfDocument=null, $fillablePdf=null, $missingOdgovori=null, $data=null, $export_subtype=''){ global $lang; - $spremenljivkaParams = new enkaParameters($spremenljivke['params']); $isCheckBox = 0; $enota = $spremenljivke['enota']; + + //ce je prevod, naj pobere prevedene razlicice podnaslovov + $rowl1 = $this->srv_language_grid(1,$spremenljivke['id']); + if ($rowl1) { + if (strip_tags($rowl1['podnaslov']) != ''){ + $spremenljivke['grid_subtitle1'] = $rowl1['podnaslov']; + } + } + + $rowl2 = $this->srv_language_grid(2,$spremenljivke['id']); + if ($rowl2) { + if (strip_tags($rowl2['podnaslov']) != '') $spremenljivke['grid_subtitle2'] = $rowl2['podnaslov']; + } + //ce je prevod, naj pobere prevedene razlicice podnaslovov - konec + $podnaslov1 = $spremenljivke['grid_subtitle1']; //podnaslova @dvojna tabela $podnaslov2 = $spremenljivke['grid_subtitle2']; + $trak = ($spremenljivkaParams->get('diferencial_trak') ? $spremenljivkaParams->get('diferencial_trak') : 0); $customColumnLabelOption = ($spremenljivkaParams->get('custom_column_label_option') ? $spremenljivkaParams->get('custom_column_label_option') : 1); //1 - "vse" labele, 2 - "le koncne" labele, 3 - "koncne in vmesna" labele - - //$radioButtonTex = ($export_format=='pdf'?"{\Large $\ocircle$}" : "\\includegraphics[scale=".RADIO_BTN_SIZE."]{radio}"); - //ce je izbrana oblika traku, poberi potrebne parametre spremenljivke ################## + $trakStartingNumber = null; if($trak == 1){ //stevilo s katerim se zacenja trak $trakStartingNumber = ($spremenljivkaParams->get('diferencial_trak_starting_num') ? $spremenljivkaParams->get('diferencial_trak_starting_num') : 0); @@ -926,101 +725,8 @@ class MultiGridLatex extends LatexSurveyElement } //ce je izbrana oblika traku, poberi potrebne parametre spremenljivke - konec ########## - //echo "Grids: ".$spremenljivke['grids']." "; - //echo "Stevilo stolpcev: ".$steviloStolpcev." "; - - //ureditev stevila stolpcev (za parametre tabele in nadaljnji izris) glede na izbrano postavitev ################################################# - - //if(($enota == 0||$enota == 3)||$spremenljivke['tip']==19||$spremenljivke['tip']==20){ //klasika ali dvojna tabela ali je multitext ali multinumber - //if(($enota == 0||$enota == 3 || $enota == 11)||$spremenljivke['tip']==19||$spremenljivke['tip']==20){ //klasika ali dvojna tabela ali je multitext ali multinumber ali VAS - if(($enota == 0||$enota == 3 || $enota == 11 || $enota == 12)||$spremenljivke['tip']==19||$spremenljivke['tip']==20){ //klasika ali dvojna tabela ali je multitext ali multinumber ali VAS ali slikovni tip - //if($trak == 0 || $enota == 3 || ($trak == 1 && $spremenljivke['tip'] == 16)){ - if(($trak == 0 || $enota == 3 || ($trak == 1 && $spremenljivke['tip'] == 16))||($spremenljivke['tip']==19||$spremenljivke['tip']==20)){ - $steviloStolpcevParameterTabular = $steviloStolpcev = $steviloStolpcev + 1; //ker je prvi stolpec prazen, je potrebno dodati + 1 - }elseif($trak == 1 && $enota == 0 && $spremenljivke['tip'] == 6){ - $steviloStolpcevParameterTabular = $steviloStolpcev + 1; - } - }elseif($enota == 1){ //diferencial - if($trak == 0){ //ce ni na traku - //$steviloStolpcevParameterTabular = $steviloStolpcev = $steviloStolpcev + 2; //ker sta prvi in zadnji stolpec prazna, je potrebno dodati + 2 - if(count($missingOdgovori)!=0){ //ce so missingi - $steviloStolpcevParameterTabular = $steviloStolpcev + 2; //ker sta prvi in zadnji stolpec prazna, je potrebno dodati + 2 - $steviloStolpcev = $steviloStolpcev + 2 - count($missingOdgovori); - }else{ - $steviloStolpcevParameterTabular = $steviloStolpcev = $steviloStolpcev + 2; //ker sta prvi in zadnji stolpec prazna, je potrebno dodati + 2 - } - }else{ //ce je na traku - $steviloStolpcevParameterTabular = $steviloStolpcev + 2; - $steviloStolpcev = $steviloStolpcev + 2 + count($missingOdgovori); - } - }elseif($enota == 2 || $enota == 6){ //roleta ali izberite s seznama - $steviloStolpcevParameterTabular = 2; //pri roleti sta potrebna le dva stolpca - if(count($missingOdgovori)!=0){ //ce so missingi - $steviloStolpcev = $spremenljivke['grids'] + count($missingOdgovori) + 1; //+1, ker se pri izrisu indeks zacne z 1 - } - }elseif($enota == 4){ //ena moznost proti drugi - $steviloStolpcevParameterTabular = 5; - if(count($missingOdgovori)!=0){ - $steviloStolpcevParameterTabular = $steviloStolpcevParameterTabular+count($missingOdgovori); - $steviloStolpcev = $steviloStolpcev-count($missingOdgovori); - } - }elseif($enota == 5){ //maxdiff - $steviloStolpcevParameterTabular = 3; - if(count($missingOdgovori)!=0){ - $steviloStolpcevParameterTabular = $steviloStolpcevParameterTabular+count($missingOdgovori); - $steviloStolpcev = $steviloStolpcev-count($missingOdgovori); - } - }elseif($enota == 8){ //tabela da/ne - $steviloStolpcevParameterTabular = $steviloStolpcev = 3; - if(count($missingOdgovori)!=0){ - $steviloStolpcevParameterTabular = $steviloStolpcevParameterTabular+count($missingOdgovori); - $steviloStolpcev = $steviloStolpcev+count($missingOdgovori); - } - } - //echo $steviloStolpcev.'
'; - //ureditev stevila stolpcev (za parametre tabele in nadaljnji izris) glede na izbrano postavitev - konec ################################################# - - //ureditev parametrov za tabelo ################################################################################################# - $parameterTabular = ''; - for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){ - //ce je prvi stolpec in ni "ena moznost proti drugi" ALI je zadnji stolpec (pred missing-i) in je "diferencial" ali "ena moznost proti drugi" z missing-i - if( ($i == 0 && $enota != 4) || ($i == $spremenljivke['grids']+1 && $enota == 1) || (($i == $spremenljivke['grids']+2 && $enota == 4)&&(count($missingOdgovori)!=0)) ) { - //$parameterTabular .= ($typeOfDocument == 'pdf' ? 'X' : 'l'); //leva poravnava stolpca - //if($enota == 0 || $enota == 1 || $enota == 3){ //ce je "klasicna tabela" ali diferencial ali dvojna tabela - //if($enota == 0 || $enota == 1 || $enota == 3 || $enota == 11){ //ce je "klasicna tabela" ali diferencial ali dvojna tabela ali VAS - if($enota == 0 || $enota == 1 || $enota == 3 || $enota == 11 || $enota == 12){ //ce je "klasicna tabela" ali diferencial ali dvojna tabela ali VAS ali slikovni tip - if($enota == 1){ //ce je diferencial - if($i == 0){ //ce je prvi stolpec - $parameterTabular .= ($typeOfDocument == 'pdf' ? 'A' : 'l'); //leva poravnava stolpca fiksne sirine - }elseif($i == $spremenljivke['grids']+1){ //ce je zadnji stolpec - $parameterTabular .= ($typeOfDocument == 'pdf' ? 'R' : 'r'); //desna poravnava stolpca fiksne sirine - } - }else{ - $parameterTabular .= ($typeOfDocument == 'pdf' ? 'A' : 'l'); //leva poravnava stolpca fiksne sirine - } - }else{ - $parameterTabular .= ($typeOfDocument == 'pdf' ? 'X' : 'l'); //leva poravnava stolpca prilagojena sirini - } - }elseif($i == $spremenljivke['grids']+2 && $enota == 4){ //ce je zadnji stolpec in je "ena moznost proti drugi" brez missing-ov - $parameterTabular .= ($typeOfDocument == 'pdf' ? 'r' : 'r'); //desna poravnava - } - elseif($i == 0 && $enota == 4){ //ce je prvi stolpec in "ena moznost proti drugi" - //$parameterTabular .= ($typeOfDocument == 'pdf' ? 'r' : 'r'); //desna poravnava stolpca - $parameterTabular .= ($typeOfDocument == 'pdf' ? 'l' : 'l'); //leva poravnava prvega stolpca - }elseif($i == (intval($steviloStolpcev/2)) && $enota == 3){ //ce smo na sredini stolpcev in je dvojna tabela - $parameterTabular .= ($typeOfDocument == 'pdf' ? 'C|' : 'c|'); //sredinska poravnava stolpca - }elseif($i == ($steviloStolpcev) && $enota == 5){ //ce je zadnji stolpec in je maxdiff - $parameterTabular .= ($typeOfDocument == 'pdf' ? 'R' : 'r'); //desna za pdf in sredinska poravnava stolpca za rtf - }else{ - $parameterTabular .= ($typeOfDocument == 'pdf' ? 'C' : 'c'); //sredinska poravnava stolpca - } - } - //ureditev parametrov za tabelo - konec ########################################################################################## - //echo 'Param: '.$parameterTabular.' enota param: '.$enota.'
'; - //izpis tabela $tabela = ''; - //echo $enota; #IZPIS ZA POVLECI SPUSTI if($enota == 9){ //ce je povleci spusti @@ -1036,9 +742,9 @@ class MultiGridLatex extends LatexSurveyElement #pred zacetkom tabel za povleci spusti####################################################################### //prva vrstica pred tabelo z odgovori if($typeOfDocument == 'pdf'){ //ce je pdf - $tabela .= '\keepXColumns\begin{tabularx}{0.45\textwidth}{C} '; //izris s tabelo + $tabela .= '\keepXColumns\begin{xltabular}{0.45\textwidth}{C} '; //izris s tabelo $tabela .= $lang['srv_ranking_available_categories'].': '.$texNewLine; - $tabela .= '\rule{0.4\textwidth}{0.7 pt} \end{tabularx}'; + $tabela .= '\rule{0.4\textwidth}{0.7 pt} \end{xltabular}'; }else{ //ce je rtf $tabela .= '\begin{tabular}{l} '; //izris z enostolpicno tabelo $tabela .= $lang['srv_ranking_available_categories'].': '.$texNewLine; //Razpolozljive kategorije @@ -1055,7 +761,7 @@ class MultiGridLatex extends LatexSurveyElement //zacetek tabele if($typeOfDocument == 'pdf'){ //ce je pdf - $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'tabularx', 'tabular*', 0.45, 0.2); + $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'xltabular', 'tabular*', 0.45, 0.2); } //argumenti za leve okvirje @@ -1065,7 +771,6 @@ class MultiGridLatex extends LatexSurveyElement //izris notranjosti leve tabele - //if($this->exportDataType){ //ce je dolg izpis izvoza odgovorov respondenta/respondentov if($this->exportDataType&&$spremenljivke['tip']==6){ //ce je dolg izpis izvoza odgovorov respondenta/respondentov in je tabela en odgovor //najdi razlike med poljema, kjer se belezijo vre_id odgovorov iz leve in desni strani @ povleci-spusti $navpicniOdgovori = array(); @@ -1079,7 +784,7 @@ class MultiGridLatex extends LatexSurveyElement $sqlTextL = sisplet_query($sqlTextLString); $rowTextL = mysqli_fetch_assoc($sqlTextL); - array_push($navpicniOdgovori, $this->encodeText($rowTextL['naslov'])); + array_push($navpicniOdgovori, LatexDocument::encodeText($rowTextL['naslov'], 0, 1)); } } } @@ -1113,7 +818,7 @@ class MultiGridLatex extends LatexSurveyElement //zakljucek tabele if($typeOfDocument == 'pdf'){ //ce je pdf - $tabela .= $this->EndLatexTable($typeOfDocument, 'tabularx', 'tabular*'); + $tabela .= $this->EndLatexTable($typeOfDocument, 'xltabular', 'tabular*'); } #tabela s kategorijami odgovorov iz levega okvirja - konec ################################################################## @@ -1123,12 +828,11 @@ class MultiGridLatex extends LatexSurveyElement #pred zacetkom "desne" tabele za povleci spusti####################################################################### //prva vrstica pred tabelo z odgovori if($typeOfDocument == 'pdf'){ //ce je pdf - $tabela .= '\keepXColumns\begin{tabularx}{0.45\textwidth}{C} '; //izris s tabelo + $tabela .= '\keepXColumns\begin{xltabular}{0.45\textwidth}{C} '; //izris s tabelo $tabela .= $lang['srv_drag_drop_answers'].': '.$texNewLine; - $tabela .= '\rule{0.4\textwidth}{0.7 pt} \end{tabularx}'; + $tabela .= '\rule{0.4\textwidth}{0.7 pt} \end{xltabular}'; }else{ //ce je rtf $tabela .= '\begin{tabular}{l} '; //izris z enostolpicno tabelo - //$tabela .= $lang['srv_ranking_available_categories'].': '.$texNewLine; //Razpolozljive kategorije $tabela .= $lang['srv_drag_drop_answers'].': '.$texNewLine; //Razpolozljive kategorije $tabela .= '\hline \end{tabular} '; } @@ -1163,13 +867,7 @@ class MultiGridLatex extends LatexSurveyElement $texSmallSkip = ''; $textDV = $vodoravniOdgovori[$i]; //besedilo odgovora v okvirju //izpis latex kode za okvir z odgovorom - //$textRIzpis .= ' '.$textDV.' '.$this->texNewLine.' \hline'; - - //$textRIzpis .= ' '.$textDV; $textNaslovOkvir .= ' '.$textDV; - - //$tabela .= $texNewLine; - //$tabela .= '\indent '; }else{ //drugace, ce je oblika skatle (prazen okvir na vrhu+tekst spodaj) $texSmallSkip = $this->texSmallSkip; } @@ -1183,14 +881,15 @@ class MultiGridLatex extends LatexSurveyElement $jeOdgovor = 1; if(!$izpisano){ foreach($this->textRArray AS $indeksTextRArray => $textR){ - if($this->textRArray[$indeksTextRArray][$datum]){ - $textR = $this->encodeText($textR[$datum]); - $textR = $tableCentering.' '.$textR; - //$textRIzpis .= '\fbox{\parbox{0.2\textwidth}{'.$textR.'}} '.$texSmallSkip.' '.$this->texNewLine; //zacetna varianta - $textIzpis .= ' \vspace{0.5\baselineskip} '; - $textIzpis .= '\fbox{\parbox{0.2\textwidth}{'.$textR.'}} '.$texSmallSkip.' '.$this->texNewLine; - //$textRIzpis .= ' \hline \fbox{\parbox{0.2\textwidth}{'.$textR.'}} '.$texSmallSkip.' '.$this->texNewLine; - $izpisano = 1; + if(array_key_exists($datum, $this->textRArray) && array_key_exists($indeksTextRArray, $this->textRArray)){ + if(isset($this->textRArray[$indeksTextRArray][$datum])){ + //$textR = Common::getInstance()->dataPiping($textR[$datum], $this->usr_id, $this->loop_id); + $textR = LatexDocument::encodeText($textR[$datum]); + $textR = $tableCentering.' '.$textR; + $textIzpis .= ' \vspace{0.5\baselineskip} '; + $textIzpis .= '\fbox{\parbox{0.2\textwidth}{'.$textR.'}} '.$texSmallSkip.' '.$this->texNewLine; + $izpisano = 1; + } } } }else{ @@ -1227,9 +926,8 @@ class MultiGridLatex extends LatexSurveyElement //izpis latex kode za okvir (brez obrobe oz. fbox) z odgovorom //$tabela .= ' \indent \parbox{0.2\textwidth}{ '.$tableCentering.' '.$vodoravniOdgovori[$i].' } '.$texNewLine; $tabela .= ' \parbox{0.2\textwidth}{ '.$tableCentering.' '.$vodoravniOdgovori[$i].' } '.$texNewLine; - $tabela .= '\end{tabularx}'; //konec tabele, ki se je zacela pri izpisu skatle + $tabela .= '\end{xltabular}'; //konec tabele, ki se je zacela pri izpisu skatle } - //echo "TABELA TEX: ".$tabela."
"; }elseif($typeOfDocument == 'rtf'){ if($i != 0){ //ce ni prvi, dodaj prostor $tabela .= ' '.$this->texBigSkip; @@ -1244,7 +942,7 @@ class MultiGridLatex extends LatexSurveyElement if(!$izpisano){ foreach($this->textRArray AS $indeksTextRArray => $textR){ if($this->textRArray[$indeksTextRArray][$datum]){ - $textR = $this->encodeText($textR[$datum]); + $textR = LatexDocument::encodeText($textR[$datum]); $textR = $tableCentering.' '.$textR; $textRIzpis .= '\fbox{\parbox{0.2\textwidth}{'.$textR.'}} '.$this->texNewLine; $izpisano = 1; @@ -1287,16 +985,98 @@ class MultiGridLatex extends LatexSurveyElement } #IZPIS ZA POVLECI SPUSTI - KONEC - - if($enota != 9){ //ce ni povleci spusti + if($enota != 9){ //ce ni povleci spusti + //ureditev stevila stolpcev (za parametre tabele in nadaljnji izris) glede na izbrano postavitev ################################################# + + if(($enota == 0||$enota == 3 || $enota == 11 || $enota == 12)||$spremenljivke['tip']==19||$spremenljivke['tip']==20){ //klasika ali dvojna tabela ali je multitext ali multinumber ali VAS ali slikovni tip + if(($trak == 0 || $enota == 3 || ($trak == 1 && $spremenljivke['tip'] == 16))||($spremenljivke['tip']==19||$spremenljivke['tip']==20)){ + $steviloStolpcevParameterTabular = $steviloStolpcev = $steviloStolpcev + 1; //ker je prvi stolpec prazen, je potrebno dodati + 1 + if(count($missingOdgovori)!=0){ //ce so missingi + $steviloStolpcevParameterTabular = $steviloStolpcevParameterTabular + 1; + } + }elseif($trak == 1 && $enota == 0 && $spremenljivke['tip'] == 6){ + $steviloStolpcevParameterTabular = $steviloStolpcev + 1; + } + }elseif($enota == 1){ //diferencial + if($trak == 0){ //ce ni na traku + //$steviloStolpcevParameterTabular = $steviloStolpcev = $steviloStolpcev + 2; //ker sta prvi in zadnji stolpec prazna, je potrebno dodati + 2 + if(count($missingOdgovori)!=0){ //ce so missingi + $steviloStolpcevParameterTabular = $steviloStolpcev + 2; //ker sta prvi in zadnji stolpec prazna, je potrebno dodati + 2 + $steviloStolpcev = $steviloStolpcev + 2 - count($missingOdgovori); + }else{ + $steviloStolpcevParameterTabular = $steviloStolpcev = $steviloStolpcev + 2; //ker sta prvi in zadnji stolpec prazna, je potrebno dodati + 2 + } + }else{ //ce je na traku + $steviloStolpcevParameterTabular = $steviloStolpcev + 2; + $steviloStolpcev = $steviloStolpcev + 2 + count($missingOdgovori); + } + }elseif($enota == 2 || $enota == 6){ //roleta ali izberite s seznama + $steviloStolpcevParameterTabular = 2; //pri roleti sta potrebna le dva stolpca + if(count($missingOdgovori)!=0){ //ce so missingi + $steviloStolpcev = $spremenljivke['grids'] + count($missingOdgovori) + 1; //+1, ker se pri izrisu indeks zacne z 1 + } + }elseif($enota == 4){ //ena moznost proti drugi + $steviloStolpcevParameterTabular = 5; + if(count($missingOdgovori)!=0){ + $steviloStolpcevParameterTabular = $steviloStolpcevParameterTabular+count($missingOdgovori); + $steviloStolpcev = $steviloStolpcev-count($missingOdgovori); + } + }elseif($enota == 5){ //maxdiff + $steviloStolpcevParameterTabular = 3; + if(count($missingOdgovori)!=0){ + $steviloStolpcevParameterTabular = $steviloStolpcevParameterTabular+count($missingOdgovori); + $steviloStolpcev = $steviloStolpcev-count($missingOdgovori); + } + }elseif($enota == 8){ //tabela da/ne + $steviloStolpcevParameterTabular = $steviloStolpcev = 3; + if(count($missingOdgovori)!=0){ + $steviloStolpcevParameterTabular = $steviloStolpcevParameterTabular+count($missingOdgovori); + $steviloStolpcev = $steviloStolpcev+count($missingOdgovori); + } + } + //ureditev stevila stolpcev (za parametre tabele in nadaljnji izris) glede na izbrano postavitev - konec ################################################# + + //ureditev parametrov za tabelo ################################################################################################# + $parameterTabular = ''; + for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){ + //ce je prvi stolpec in ni "ena moznost proti drugi" ALI je zadnji stolpec (pred missing-i) in je "diferencial" ali "ena moznost proti drugi" z missing-i + if( ($i == 0 && $enota != 4) || ($i == $spremenljivke['grids']+1 && $enota == 1) || (($i == $spremenljivke['grids']+2 && $enota == 4)&&(count($missingOdgovori)!=0)) ) { + if($enota == 0 || $enota == 1 || $enota == 3 || $enota == 11 || $enota == 12){ //ce je "klasicna tabela" ali diferencial ali dvojna tabela ali VAS ali slikovni tip + if($enota == 1){ //ce je diferencial + if($i == 0){ //ce je prvi stolpec + $parameterTabular .= ($typeOfDocument == 'pdf' ? 'A' : 'l'); //leva poravnava stolpca fiksne sirine + }elseif($i == $spremenljivke['grids']+1){ //ce je zadnji stolpec + $parameterTabular .= ($typeOfDocument == 'pdf' ? 'R' : 'r'); //desna poravnava stolpca fiksne sirine + } + }else{ + $parameterTabular .= ($typeOfDocument == 'pdf' ? 'A' : 'l'); //leva poravnava stolpca fiksne sirine + } + }else{ + $parameterTabular .= ($typeOfDocument == 'pdf' ? 'X' : 'l'); //leva poravnava stolpca prilagojena sirini + } + }elseif($i == $spremenljivke['grids']+2 && $enota == 4){ //ce je zadnji stolpec in je "ena moznost proti drugi" brez missing-ov + $parameterTabular .= ($typeOfDocument == 'pdf' ? 'r' : 'r'); //desna poravnava + } + elseif($i == 0 && $enota == 4){ //ce je prvi stolpec in "ena moznost proti drugi" + //$parameterTabular .= ($typeOfDocument == 'pdf' ? 'r' : 'r'); //desna poravnava stolpca + $parameterTabular .= ($typeOfDocument == 'pdf' ? 'l' : 'l'); //leva poravnava prvega stolpca + }elseif($i == (intval($steviloStolpcev/2)) && $enota == 3){ //ce smo na sredini stolpcev in je dvojna tabela + $parameterTabular .= ($typeOfDocument == 'pdf' ? 'C|' : 'c|'); //sredinska poravnava stolpca + }elseif($i == ($steviloStolpcev) && $enota == 5){ //ce je zadnji stolpec in je maxdiff + $parameterTabular .= ($typeOfDocument == 'pdf' ? 'R' : 'r'); //desna za pdf in sredinska poravnava stolpca za rtf + }else{ + $parameterTabular .= ($typeOfDocument == 'pdf' ? 'C' : 'c'); //sredinska poravnava stolpca + } + } + //ureditev parametrov za tabelo - konec ########################################################################################## #ZACETEK MAIN TABELE ######################################################################### - $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabular, 'tabularx', 'tabular', 1, 1); + $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabular, 'xltabular', 'tabular', 1, 1); #nad prvo vrstico, ampak se vedno v tabeli - naslovi trakov, podnaslovi dvojne tabele ################################################ if( ($enota == 3) && ($podnaslov1 || $podnaslov2) ){ //ce je dvojna tabela in sta prisotna podnaslova $tabela .= ' & \multicolumn{'.intval($steviloStolpcev/2).'}{c}{'.$podnaslov1.'} & \multicolumn{'.intval($steviloStolpcev/2).'}{c}{'.$podnaslov2.'} '.$texNewLine; - //$tabela .= ' & \multicolumn{'.intval($steviloStolpcev/2).'}{c}{'.$podnaslov1.'} & \multicolumn{'.intval($steviloStolpcev/2).'}{c}{'.$podnaslov2.'} '; + //$tabela .= ' & \multicolumn{'.intval($steviloStolpcev/2).'}{c}{'.$podnaslov1.'} & \multicolumn{'.intval($steviloStolpcev/2).'}{c}{'.$podnaslov2.'} '; }elseif($trak == 1 && $spremenljivke['tip'] == 6 && ($enota == 0 || $enota == 1)){ //ce imamo obliko traku, uredi nadnaslove traka if($spremenljivke['grids']%$trakNumOfTitles == 0){ //ce je stevilo stolpcev deljivo s trenutnim izbranim stevilom nadnaslovov for($i=0; $i<$trakNumOfTitles; $i++){ @@ -1351,7 +1131,6 @@ class MultiGridLatex extends LatexSurveyElement if($enota == 1){ //ce je diferencial tabela $tabela .= ' & '; } - //echo $tabela; //missingi if(count($missingOdgovori)!=0 && ($enota==0||$enota==1)){ //ce so missingi in (je klasicna tabela ali diferencial) @@ -1363,7 +1142,6 @@ class MultiGridLatex extends LatexSurveyElement } #nad prvo vrstico, ampak se vedno v tabeli - konec####################################################### - //echo $steviloStolpcev."
"; //ureditev missing-ov za tabela da/ne, klasicna ali dvojna tabela ############################# if($enota==8){ //ce je tabela da/ne @@ -1381,21 +1159,17 @@ class MultiGridLatex extends LatexSurveyElement } } } -/* for($m=0;$m'; - } */ + } //ureditev missing-ov za tabela da/ne, klasicna ali dvojna tabela - konec ##################### + #prva vrstica tabele #################################################################################### $tabela .= $this->LatexPrvaVrsticaMultiGrid($steviloStolpcev, $enota, $trak, $customColumnLabelOption, $spremenljivke, $vodoravniOdgovori, $missingOdgovori); #prva vrstica tabele - konec ################################################################################## - - if($enota!=2 && $enota!=6){ //ce ni roleta in izberite s seznama in ena moznost proti drugi + if(($enota!=2 && $enota!=6)||($enota==2&&$spremenljivke['tip']==19)){ //ce ni roleta in izberite s seznama in ena moznost proti drugi $tabela .= $texNewLine; //skok v drugo vrstico, kjer se zacnejo navpicni odgovori } - - //echo "koda za tabelo: ".$tabela."
"; //preureditev stevila stolpcev za pravilen izris#################################### if($enota == 1){ //ce je diferencial tabela @@ -1412,11 +1186,7 @@ class MultiGridLatex extends LatexSurveyElement if(($enota == 0) && count($missingOdgovori)!=0){ //ce je klasicna tabela in so missingi //$steviloStolpcev = $steviloStolpcev + count($missingOdgovori); - } - - //echo $steviloStolpcev.'
'; - //echo $spremenljivke['grids'].'
'; - + } //preureditev stevila stolpcev za pravilen izris - konec ############################ //ureditev missing-ov za roleta in izberite iz seznama ############################## @@ -1426,23 +1196,18 @@ class MultiGridLatex extends LatexSurveyElement } } //ureditev missing-ov za roleta in izberite iz seznama - konec ###################### - - #izris vrstic tabele - $trakStartingNumberTmp = null; - //$tabela .= $this->LatexVrsticeMultigrid($steviloVrstic, $typeOfDocument, $enota, $simbolTex, $navpicniOdgovori, $trakStartingNumberTmp, $fillablePdf, $steviloStolpcev, $spremenljivke, $trak, $vodoravniOdgovori, $texNewLine, $navpicniOdgovori2, $missingOdgovori, 0, 0, 0, $data, $export_subtype); - $tabela .= $this->LatexVrsticeMultigrid($steviloVrstic, $typeOfDocument, $enota, $simbolTex, $navpicniOdgovori, $trakStartingNumberTmp, $fillablePdf, $steviloStolpcev, $spremenljivke, $trak, $vodoravniOdgovori, $texNewLine, $navpicniOdgovori2, $missingOdgovori, 0, 0, 0, $data, $export_subtype, $this->preveriSpremenljivko, $this->userDataPresent); + #izris vrstic tabele + $tabela .= $this->LatexVrsticeMultigrid($steviloVrstic, $typeOfDocument, $enota, $simbolTex, $navpicniOdgovori, $trakStartingNumber, $fillablePdf, $steviloStolpcev, $spremenljivke, $trak, $vodoravniOdgovori, $texNewLine, $navpicniOdgovori2, $missingOdgovori, 0, 0, 0, $data, $export_subtype, $this->preveriSpremenljivko, $this->userDataPresent, null, $this->exportDataType, null, null, $this->skipEmpty, $this->skipEmptySub); #izris vrstic tabele - konec -/* if($enota==12||$enota==11){ - echo "tabela tex: ".$tabela."
"; - } */ - $tabela .= $this->EndLatexTable($typeOfDocument, 'tabularx', 'tabular'); //zakljucek tabele + $tabela .= $this->EndLatexTable($typeOfDocument, 'xltabular', 'tabular'); //zakljucek tabele //$tabela .= $texNewLineAfterTable; #KONEC MAIN TABELE ######################################################################### } //prostor po izpisu tabele - $tabela .= $this->texBigSkip; - $tabela .= $this->texBigSkip; + //$tabela .= $this->texBigSkip; + //$tabela .= $this->texBigSkip; + $tabela .= '\vspace{1 cm}'; //izpis tabela - konec @@ -1552,10 +1317,9 @@ class MultiGridLatex extends LatexSurveyElement } } //ureditev parametrov za tabelo - konec - //echo "parameterTabularLabelePrvaPod: ".$parameterTabularLabelePrvaPod."
"; //zacetek tabele - $tex .= ($export_format == 'pdf' ? '{ \begin{tabularx}{1\textwidth}{'.$parameterTabularLabelePrvaPod.'}' : '\begin{tabular}{'.$parameterTabularLabelePrvaPod.'}'); + $tex .= ($export_format == 'pdf' ? '{ \begin{xltabular}{1\textwidth}{'.$parameterTabularLabelePrvaPod.'}' : '\begin{tabular}{'.$parameterTabularLabelePrvaPod.'}'); //prva vrstica, ce so opisne labele #IZRIS OPISNIH LABEL NAD DRSNIKOM ################################################# @@ -1571,13 +1335,13 @@ class MultiGridLatex extends LatexSurveyElement $tex .= ' & '; //labela na levi strani - $tex .= $this->encodeText($MinLabel); + $tex .= LatexDocument::encodeText($MinLabel, 0, 1); //vmesni prazni stolpci $steviloPraznihStolpcev = $steviloStolpcevPrvaVrstica - 2 + 1; for($p=0; $p<$steviloPraznihStolpcev; $p++){ if($p==$steviloPraznihStolpcev-2){ //ce je pred-zadnji stolpec - $tex .= '\multicolumn{2}{c}{'.$this->encodeText($MaxLabel).'}'; //labela na desni v zadnji dveh desnih stolpcih + $tex .= '\multicolumn{2}{c}{'.LatexDocument::encodeText($MaxLabel, 0, 1).'}'; //labela na desni v zadnji dveh desnih stolpcih }elseif($p==$steviloPraznihStolpcev-1){ //ce je zadnji stolpec }else{ //drugace @@ -1587,7 +1351,6 @@ class MultiGridLatex extends LatexSurveyElement } //labela na desni strani - //$tex .= $this->encodeText($MaxLabel); //v novo vrstico po izrisu opisnih label $tex .= $this->texNewLine; @@ -1607,7 +1370,6 @@ class MultiGridLatex extends LatexSurveyElement #IZRIS MOZNIH ODGOVOROV - KONEC $tex .= ' & '; - //echo $userAnswer[$key]."
"; if($export_format == 'pdf'){ //ce je pdf, pokazi drsnike tudi graficno #IZRIS DRSNIKA {dolzina}{pozicija bunkice}#################################### $steviloStolpcevZaSlider = $steviloStolpcevPrvaVrstica - 1; @@ -1694,8 +1456,7 @@ class MultiGridLatex extends LatexSurveyElement } //konec tabele - $tex .= ($export_format == 'pdf' ? "\\end{tabularx} }" : "\\end{tabular} \\noindent"); - //echo $tex; + $tex .= ($export_format == 'pdf' ? "\\end{xltabular} }" : "\\end{tabular} \\noindent"); ################# izpis s samo eno tabelo, saj zaradi ltablex, to ni vec mozno - konec #Konec tabele za izris odgovora in drsnika - konec ################################################################################# @@ -1758,9 +1519,9 @@ class MultiGridLatex extends LatexSurveyElement ############################################################################################################# //se ena tabela, da naredimo dovolj prostora na koncu vprasanja - $tex .= ($export_format == 'pdf' ? '\begin{tabularx}{0.9\textwidth}{X}' : ''); + $tex .= ($export_format == 'pdf' ? '\begin{xltabular}{0.9\textwidth}{X}' : ''); $tex .= $this->texNewLine; - $tex .= ($export_format == 'pdf' ? '\end{tabularx}' : ''); + $tex .= ($export_format == 'pdf' ? '\end{xltabular}' : ''); return $tex; } diff --git a/admin/survey/export/latexclasses/Vprasanja/NagovorLatex.php b/admin/survey/export/latexclasses/Vprasanja/NagovorLatex.php index 23ffe0e..be21419 100644 --- a/admin/survey/export/latexclasses/Vprasanja/NagovorLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/NagovorLatex.php @@ -9,12 +9,14 @@ * Datum: 09/2017 *****************************************/ - define("NAGOVOR_LINE_WIDTH", 0.5); + if (!defined("NAGOVOR_LINE_WIDTH")) define("NAGOVOR_LINE_WIDTH", 0.5); class NagovorLatex extends LatexSurveyElement { var $internalCellHeight; protected $texBigSkip = '\bigskip'; + protected $db_table = ''; + protected $usr_id = null; public function __construct() { @@ -42,12 +44,8 @@ class NagovorLatex extends LatexSurveyElement $this->loop_id = $loop_id; //preveri, ce je kaj v bazi - //$userDataPresent = $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id); - $userDataPresent = $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id, $this->loop_id); - //echo "userDataPresent za spremenljivko".$spremenljivke['id']." je: ".$userDataPresent."
"; - - //if($userDataPresent||$export_subtype=='q_empty'){ //ce je kaj v bazi ali je prazen vprasalnik - if($userDataPresent||$export_subtype=='q_empty'||$export_subtype=='q_comment'||$preveriSpremenljivko){ //ce je kaj v bazi ali je prazen vprasalnik ali je potrebno pokazati tudi ne odgovorjena vprasanja + $tex = ''; + if($export_subtype=='q_empty'||$export_subtype=='q_comment'||$preveriSpremenljivko){ //ce je kaj v bazi ali je prazen vprasalnik ali je potrebno pokazati tudi ne odgovorjena vprasanja global $lang; $spremenljivkaParams = new enkaParameters($spremenljivke['params']); @@ -66,7 +64,6 @@ class NagovorLatex extends LatexSurveyElement }else{ //ce je rtf } - return $tex; } } diff --git a/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php b/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php index 51b5ddb..df4228f 100644 --- a/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php @@ -11,8 +11,8 @@ //namespace Export\Latexclasses\Vprasanja; -define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm -define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip +if (!defined('PIC_SIZE')) define("PIC_SIZE", "\includegraphics[width=5cm]"); //slika sirine 50mm +if (!defined('ICON_SIZE')) define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip class RadioCheckboxSelectLatex extends LatexSurveyElement { @@ -40,6 +40,7 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement } public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $preveriSpremenljivko=null, $export_data_type=null, $export_subtype=null, $loop_id=null, $language=null){ + //$time_start = microtime(true); global $lang, $site_path; $this->language = $language; @@ -47,7 +48,7 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement //preverjanje, ali je prevod if(isset($_GET['language'])){ - $this->language = $_GET['language']; + $this->language = isset($_GET['language'])?$_GET['language']:null; $this->prevod = 1; }else{ $this->prevod = 0; @@ -73,6 +74,7 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement $indeksOdgovorov = 0; $oznakaVprasanja = $this->UrediOznakoVprasanja($spremenljivke['id']); //uredi oznako vprasanja, ker ne sme biti stevilska $prviOdgovorSlikovniTip = 0; + $vizualnaSkalaNumber = null; if ($usr_id){ $userDataPresent = $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id, $this->loop_id); //zgenerira podatke z odgovori respondenta v $this->userAnswer, zabelezi, ce so podatki prisotni @@ -91,24 +93,24 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement #ce je respondent odgovarjal v drugem jeziku ######################## $rowl = $this->srv_language_vrednost($rowVrednost['id']); - if (strip_tags($rowl['naslov']) != '') $rowVrednost['naslov'] = $rowl['naslov']; - if (strip_tags($rowl['naslov2']) != '') $rowVrednost['naslov2'] = $rowl['naslov2']; + if ($rowl!=null && strip_tags($rowl['naslov']) != '') $rowVrednost['naslov'] = $rowl['naslov']; + if ($rowl!=null && strip_tags($rowl['naslov2']) != '') $rowVrednost['naslov2'] = $rowl['naslov2']; #ce je respondent odgovarjal v drugem jeziku - konec ################ - $stringTitle = ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ); - $stringTitle = Common::getInstance()->dataPiping($stringTitle, $usr_id, $loop_id); - $stringTitle = '\\textcolor{crta}{'.$this->encodeText($stringTitle).'}'; - - //echo $stringTitle."za indeks: ".$indeksZaWhile."
"; - //stetje stevila vrstic - //$stetje_vrstic = $this->pdf->getNumLines($stringTitle, 180*$expand_width); - // še dodamo textbox če je polj other + $stringTitle = ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ); + if($usr_id){ + $stringTitle = Common::getInstance()->dataPiping($stringTitle, $usr_id, $loop_id); + } + $stringTitle = '\\textcolor{crta}{'.LatexDocument::encodeText($stringTitle, 0, 0, $indeksZaWhile).'}'; //encodeText($text='', $vre_id=0, $no_br = 0, $img_id=0, $variable_name = '') + + // še dodamo textbox če je polje other $_txt = ''; if ( $rowVrednost['other'] == 1 && $usr_id ){ //$sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id"); - $sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id=".$usr_id); - $row4 = mysqli_fetch_assoc($sqlOtherText); - $_txt = ' \\textcolor{crta}{'.$row4['text'].'}'; + $sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id=".$usr_id . + ($loop_id !== null ? " AND loop_id='$loop_id'" : "")); + $row4 = mysqli_fetch_assoc($sqlOtherText); + $_txt = ' \\textcolor{crta}{'.LatexDocument::encodeText($row4['text']).'}'; } //$tex .= ' '.$stringTitle.$_txt.','; if($indeksZaWhile==1){ @@ -150,7 +152,7 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement #za ureditev preloma odgovorov, ce so odgovori ob vprasanju - najprej je potrebno zabeleziti dolzino besedila vprasanja if($spremenljivke['orientation']==0 && $export_format == 'pdf'){ //vodoravno ob vprasanju, ce je pdf - $tex .= '\settowidth{\questionLength}{'.$this->encodeText($questionText).'}'; //v definirano dolzino shranimo trenutno dolzino teksta vprasanja + $tex .= '\settowidth{\questionLength}{'.LatexDocument::encodeText($questionText).'}'; //v definirano dolzino shranimo trenutno dolzino teksta vprasanja $tex .= '\addtolength{\questionTotalLength}{\questionLength}'; //celotni dolzini dodamo dolzino vprasanja //ce je opomba prisotna, daj spremenljivko na 2 @@ -163,40 +165,35 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement #za ureditev preloma odgovorov, ce so odgovori ob vprasanju - konec if($spremenljivke['orientation']==7){ //navpicno - tekst levo - //$tex .= '\begin{tabular}{l l}'.$texNewLine; if($export_format == 'pdf'){ - $tex .= '\begin{tabularx}{.5\textwidth}{l l}'; + $tex .= '\begin{xltabular}{.5\textwidth}{l l}'; }else{ $tex .= '\begin{tabular}{l l}'.$texNewLine; //za omogociti izris odgovorov v tabeli } }elseif($spremenljivke['orientation']==8){ //ce je "povleci-spusti" - $tex .= '\setlength{\parindent}{0.1\textwidth} '; + $tex .= '\setlength{\parindent}{0.04\textwidth} '; //prva vrstica pred tabelo z odgovori if($export_format == 'pdf'){ //ce je pdf $tex .= '\begin{tabular}{l c l} '; //izris z vecstolpicno tabelo - //$tex .= '\begin{tabularx}{.5\textwidth}{l c l} '; //izris z vecstolpicno tabelo $tex .= $lang['srv_ranking_available_categories'].': & \hspace{0.1\textwidth} & '.$lang['srv_drag_drop_answers'].': '.$texNewLine; - $tex .= '\rule{0.4\textwidth}{0.4 pt} & & \rule{0.4\textwidth}{0.4 pt} \end{tabular} '.$texBigSkip; + $tex .= '\rule{0.4\textwidth}{0.4 pt} & & \rule{0.4\textwidth}{0.4 pt} \end{tabular} '; $tex .= $texNewLine; }else{ //ce je rtf $tex .= '\begin{tabular}{l} '; //izris z enostolpicno tabelo $tex .= $lang['srv_ranking_available_categories'].': '.$texNewLine; //Rapolozljive kategorije - //$tex .= '\hline \end{tabular} '.$texBigSkip; $tex .= '\hline \end{tabular} '; } //prva vrstica pred tabelo z odgovori - konec if($export_format == 'pdf'){ //ce je pdf //$tex .= '\begin{tabular}{c c c} '; //izris s tabelo - $tex .= '\begin{tabularx}{.5\textwidth}{c c c} '; //izris s tabelo + $tex .= '\begin{xltabular}{.5\textwidth}{c c c} '; //izris s tabelo } }elseif($spremenljivke['orientation']==10){ //image hot-spot - $imageName = $this->getImageName('hotspot', $spremenljivke['id'], 'hotspot_image='); + $imageName = LatexDocument::getImageName('hotspot', $spremenljivke['id'], 'hotspot_image='); $imageNameTest = $this->path2ImagesRadio.$imageName.'.png'; //za preveriti, ali obstaja slikovna datoteka na strezniku - //error_log("za image hot spot ne grid: ".$imageNameTest); - //echo("za image hot spot ne grid: ".$imageNameTest."
"); if(filesize($imageNameTest) > 0){ $image = PIC_SIZE."{".$this->path2ImagesRadio."".$imageName."}"; //priprave slike predefinirane dimenzije }else{ @@ -220,14 +217,15 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement $tex .= $texNewLine.$lang['srv_export_hotspot_chosen_regions_names'].': '.$texNewLine; //besedilo "Izbrana obmocja na sliki" while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ if( isset($this->userAnswer[$rowVrednost['id']]) ){ //ce je podatek prisoten - $stringTitle = ($this->encodeText(( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) )); - // še dodamo textbox če je polj other + $stringTitle = (LatexDocument::encodeText(( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ), 0, 0, 0, '', 1 )); + // še dodamo textbox če je polje other $_txt = ''; if ( $rowVrednost['other'] == 1 && $usr_id ){ //$sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id"); - $sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id=".$usr_id); + $sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id=".$usr_id . + ($loop_id !== null ? " AND loop_id='$loop_id'" : "")); $row4 = mysqli_fetch_assoc($sqlOtherText); - $_txt = ' '.$row4['text']; + $_txt = ' '.LatexDocument::encodeText($row4['text']); } $tex .= $stringTitle.$_txt.$texNewLine; } @@ -236,30 +234,26 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement }elseif($spremenljivke['orientation']==9 || $spremenljivke['orientation']==11){ //ce je "slikovni tip" ali VAS if($spremenljivke['orientation']==11){ //ce je VAS $spremenljivkaParams = new enkaParameters($spremenljivke['params']); - $vizualnaSkalaNumber = $spremenljivkaParams->get('vizualnaSkalaNumber'); + $vizualnaSkalaNumber = ($spremenljivkaParams->get('vizualnaSkalaNumber') ? $spremenljivkaParams->get('vizualnaSkalaNumber') : '5'); $numRowsSql = $vizualnaSkalaNumber; } - //echo "stevilo zadev: ".$numRowsSql."
"; if($spremenljivke['orientation']==9){ $mejaVAS = 20; }elseif($spremenljivke['orientation']==11){ $mejaVAS = 8; $numRowsSql = mysqli_num_rows($sqlVrednosti); } - //if($numRowsSql<20){ //ce je manj kot x slikovnih tipov, izpisemo s tabelo, drugace simbol in zraven število if($numRowsSql<$mejaVAS){ //ce je manj kot x slikovnih tipov, izpisemo s tabelo, drugace simbol in zraven število $tableParamsSlikovniTip = ''; for($i=0; $i<$numRowsSql;$i++){ $tableParamsSlikovniTip .= ' c '; } - $tex .= '\begin{tabular}{'.$tableParamsSlikovniTip.'} '; //izris s tabelo + $tex .= '\\\\ \begin{tabular}{'.$tableParamsSlikovniTip.'} '; //izris s tabelo } - //echo "parametri tabele: ".$tableParamsSlikovniTip."
"; } if($spremenljivke['orientation']!=10){ //ce ni image hot-spot - //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ $prop['full'] = ( isset($userAnswer[$rowVrednost['id']]) ); @@ -267,57 +261,132 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement if($this->prevod){ //ce je prevod ankete $rowl = $this->srv_language_vrednost($rowVrednost['id']); //pridobi prevod naslova v ustreznem jeziku $stringTitle = ((( $rowl['naslov'] ) ? $rowl['naslov'] : ( ( $rowl['naslov2'] ) ? $rowl['naslov2'] : $rowl['variable'] ) )); //prevod naslova v ustreznem jeziku + if($stringTitle == ''){ //ce ni prevoda, prevzemi izvirno + $stringTitle = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) )); + } }else{ $stringTitle = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) )); } - $stringTitle = Common::getInstance()->dataPiping($stringTitle, $usr_id, $loop_id); - - //echo "naslov: $stringTitle
"; - //echo "jezik: ".$this->language."
"; - if ( $spremenljivke['tip'] == 1 || $spremenljivke['tip'] == 3 ){ - $symbol = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, $this->userAnswer[$rowVrednost['id']], $spremenljivke['orientation'], $indeksZaWhile, $vizualnaSkalaNumber); - //$tex .= '{\ChoiceMenu[radio,radiosymbol=\ding{108},name=myGroupOfRadiobuttons]{}{='.$stringTitle.'}}'.$stringTitle.' '.$this->texNewLine; - $internalCellHeight = '0.3 cm'; //visina praznega okvirja @povleci-spusti - }else if ( $spremenljivke['tip'] == 2 ){ - $symbol = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, $this->userAnswer[$rowVrednost['id']]); - $internalCellHeight = '3 cm'; //visina praznega okvirja @povleci-spusti + if($usr_id){ + $stringTitle = Common::getInstance()->dataPiping($stringTitle, $usr_id, $loop_id); + } + + $userAnswerTmp = isset($this->userAnswer[$rowVrednost['id']])?$this->userAnswer[$rowVrednost['id']]:null; + + if ( $spremenljivke['tip'] == 1 || $spremenljivke['tip'] == 3 ){ + $symbol = $this->getAnswerSymbol($export_subtype, $export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, $userAnswerTmp, $spremenljivke['orientation'], $indeksZaWhile, $vizualnaSkalaNumber); + $internalCellHeight = 1; //visina praznega okvirja @povleci-spusti + + }else if ( $spremenljivke['tip'] == 2 ){ + $symbol = $this->getAnswerSymbol($export_subtype, $export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, $userAnswerTmp); + $internalCellHeight = 3; //visina praznega okvirja @povleci-spusti } - if($spremenljivke['orientation']==1&&$spremenljivke['tip'] != 3){ //navpicno - $tex .= $symbol.' '.$this->encodeText($stringTitle, $rowVrednost['id']).' '.$texNewLine; - //$test = $symbol.' '.$this->encodeText($stringTitle, $rowVrednost['id']).' '.$texNewLine; - //echo "tukaj! $test
"; - }elseif($spremenljivke['orientation']==7){ //navpicno - tekst levo - $text = $this->encodeText($stringTitle, $rowVrednost['id']).' & '.$symbol.' '.$texNewLine; + if($spremenljivke['orientation'] == 1 && $spremenljivke['tip'] != 3){ //navpicno + $tex .= $symbol.' '.LatexDocument::encodeText($stringTitle, $rowVrednost['id'], 0, 0, '', 1).' '; + if($rowVrednost['other'] == 1){ //ce je odgovor Drugo:, izpisi se tabelo za drugo + $tex .= '\begin{tabular}{c} '; //izris s tabelo brez obrob + if(isset($this->userAnswer[$rowVrednost['id']])){ + $sqlOtheText1 = "SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id=".$usr_id . + ($loop_id !== null ? " AND loop_id='$loop_id'" : ""); + $sqlOtherText = sisplet_query($sqlOtheText1); + $row4 = mysqli_fetch_assoc($sqlOtherText); + $tex .= '\fbox{\parbox{0.2\textwidth}{ '.LatexDocument::encodeText($row4['text']).' }} '; + }else{ + $tex .= '\fbox{\parbox{0.2\textwidth}{ \hphantom{\hspace{0.2\textwidth}} }} '; + } + $tex .= ' \end{tabular}'; //za zakljuciti izris odgovorov v tabeli + } + $tex .= $texNewLine; + }elseif($spremenljivke['orientation'] == 7){ //navpicno - tekst levo + + $text = LatexDocument::encodeText($stringTitle,$rowVrednost['id'], 0, 0, '', 1).' & '.$symbol.' '.$texNewLine; $textLength = strlen($text); if($textLength > MAX_STRING_LENGTH){ $tex .= '\vspace{2 mm}'; - $tex .= '\parbox{'.LINE_BREAK_AT.'}{'.$this->encodeText($stringTitle, $rowVrednost['id']).'} & '.$symbol.' '.$texNewLine; //tekst odgovora razbij pri LINE_BREAK_AT (5 cm) in zraven dodaj ustrezni simbol + $tex .= '\parbox{'.LINE_BREAK_AT.'}{'.LatexDocument::encodeText($stringTitle, $rowVrednost['id'], 0, 0, '', 1).'} & '.$symbol.' '.$texNewLine; //tekst odgovora razbij pri LINE_BREAK_AT (5 cm) in zraven dodaj ustrezni simbol }else{ - $tex .= $text; - } + $tex .= LatexDocument::encodeText($stringTitle, $rowVrednost['id'], 0, 0, '', 1).' & '; + if($rowVrednost['other'] == 1){ //ce je odgovor Drugo:, izpisi se tabelo za drugo + $tex .= '\begin{tabular}{c} '; //izris s tabelo brez obrob + if(isset($this->userAnswer[$rowVrednost['id']])){ + $sqlOtheText1 = "SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id=".$usr_id . + ($loop_id !== null ? " AND loop_id='$loop_id'" : ""); + $sqlOtherText = sisplet_query($sqlOtheText1); + $row4 = mysqli_fetch_assoc($sqlOtherText); + $tex .= '\fbox{\parbox{0.2\textwidth}{ '.LatexDocument::encodeText($row4['text']).' }} '; + }else{ + $tex .= '\fbox{\parbox{0.2\textwidth}{ \hphantom{\hspace{0.2\textwidth}} }} '; + } + $tex .= ' \end{tabular}'; //za zakljuciti izris odgovorov v tabeli + } + $tex .= $symbol.' '.$texNewLine; + } }elseif($spremenljivke['orientation']==0){ //vodoravno ob vprasanju - $tex .= ' '.$symbol.' '.$this->encodeText($stringTitle, $rowVrednost['id']).' '; + $tex .= ' '.$symbol.' '.LatexDocument::encodeText($stringTitle, $rowVrednost['id'], 0, 0, '', 1).' '; + if($rowVrednost['other'] == 1){ //ce je odgovor Drugo:, izpisi se tabelo za drugo + $tex .= '\begin{tabular}{c} '; //izris s tabelo brez obrob + if(isset($this->userAnswer[$rowVrednost['id']])){ + $sqlOtheText1 = "SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id=".$usr_id . + ($loop_id !== null ? " AND loop_id='$loop_id'" : ""); + $sqlOtherText = sisplet_query($sqlOtheText1); + $row4 = mysqli_fetch_assoc($sqlOtherText); + $tex .= '\fbox{\parbox{0.2\textwidth}{ '.LatexDocument::encodeText($row4['text']).' }} '; + }else{ + $tex .= '\fbox{\parbox{0.2\textwidth}{ \hphantom{\hspace{0.2\textwidth}} }} '; + } + $tex .= ' \end{tabular}'; //za zakljuciti izris odgovorov v tabeli + } }elseif($spremenljivke['orientation']==2){ //vodoravno pod vprasanjem - $tex .= ' '.$symbol.' '.$this->encodeText($stringTitle, $rowVrednost['id']).' '; - }elseif(($spremenljivke['tip'] == 3&&$spremenljivke['orientation']==1)||$spremenljivke['orientation']==6){ //roleta ali izberite s seznama - if($export_data_type==1&&isset($this->userAnswer[$rowVrednost['id']])){ //ce je dolg izvoz in je podatek za odgovor - $tex .= ' \textbf{'.$this->encodeText($stringTitle, $rowVrednost['id']).'} '.$texNewLine; + $tex .= ' '.$symbol.' '.LatexDocument::encodeText($stringTitle, $rowVrednost['id'], 0, 0, '', 1).' '; + if($rowVrednost['other'] == 1){ //ce je odgovor Drugo:, izpisi se tabelo za drugo + $tex .= '\begin{tabular}{c} '; //izris s tabelo brez obrob + if(isset($this->userAnswer[$rowVrednost['id']])){ + $sqlOtheText1 = "SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id=".$usr_id . + ($loop_id !== null ? " AND loop_id='$loop_id'" : ""); + $sqlOtherText = sisplet_query($sqlOtheText1); + $row4 = mysqli_fetch_assoc($sqlOtherText); + $tex .= '\fbox{\parbox{0.2\textwidth}{ '.LatexDocument::encodeText($row4['text']).' }} '; + }else{ + $tex .= '\fbox{\parbox{0.2\textwidth}{ \hphantom{\hspace{0.2\textwidth}} }} '; + } + $tex .= ' \end{tabular}'; //za zakljuciti izris odgovorov v tabeli + } + }elseif(($spremenljivke['tip'] == 3 && $spremenljivke['orientation'] == 1) || $spremenljivke['orientation'] == 6){ //roleta ali izberite s seznama + if($export_data_type == 1 && isset($this->userAnswer[$rowVrednost['id']])){ //ce je dolg izvoz in je podatek za odgovor + $tex .= ' \textbf{'.LatexDocument::encodeText($stringTitle, $rowVrednost['id'], 0, 0, '', 1).' }'; }else{ - $tex .= $this->encodeText($stringTitle, $rowVrednost['id']).' '.$texNewLine; - } + $tex .= LatexDocument::encodeText($stringTitle, $rowVrednost['id'], 0, 0, '', 1).' '; + } + if($rowVrednost['other'] == 1){ //ce je odgovor Drugo:, izpisi se tabelo za drugo + $tex .= '\begin{tabular}{c} '; //izris s tabelo brez obrob + if(isset($this->userAnswer[$rowVrednost['id']])){ + $sqlOtheText1 = "SELECT * FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id=".$usr_id . + ($loop_id !== null ? " AND loop_id='$loop_id'" : ""); + $sqlOtherText = sisplet_query($sqlOtheText1); + $row4 = mysqli_fetch_assoc($sqlOtherText); + $tex .= '\fbox{\parbox{0.2\textwidth}{ '.LatexDocument::encodeText($row4['text']).' }} '; + }else{ + $tex .= '\fbox{\parbox{0.2\textwidth}{ \hphantom{\hspace{0.2\textwidth}} }} '; + } + $tex .= ' \end{tabular}'; //za zakljuciti izris odgovorov v tabeli + if($export_data_type==1&&isset($this->userAnswer[$rowVrednost['id']])){ //ce je dolg izvoz in je podatek za odgovor + $tex .= '}'; + } + + } + $tex .= $texNewLine; }elseif($spremenljivke['orientation']==8){ //povleci-spusti - if(isset($this->userAnswer[$rowVrednost['id']])){ - $textR = $this->encodeText($stringTitle, $rowVrednost['id']); + $textR = LatexDocument::encodeText($stringTitle, $rowVrednost['id']); $textRArray[$indeksZaWhile] = $textR; //rabimo kasneje, za izpis rtf desne strani vprasanja, ce izpisujemo odgovore respondenta $textL = ''; }else{ - $textL = $this->encodeText($stringTitle, $rowVrednost['id']); + $textL = LatexDocument::encodeText($stringTitle, $rowVrednost['id']); $textR = ''; } - + if($export_format == 'pdf'){ //ce je pdf if($textL){ @@ -327,7 +396,8 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement } if($indeksZaWhile == 1&&($export_subtype=='q_empty')){ - $tex .= '& \hspace{1.2 cm} \multirow{'.$numRowsSql.'}{*}{\fbox{\parbox[t]['.$internalCellHeight.']{0.2\textwidth}{ \hphantom{\hspace{0.2\textwidth}}} } } '; //v prvi vrstici izrisi prazen okvir, ki se razpotegne skozi vse vrstice + $visinaOkvirja = $internalCellHeight; //$visinaOkvirja = $internalCellHeight*$numRowsSql; + $tex .= '& \hspace{1.2 cm} \multirow{'.$numRowsSql.'}{*}{\fbox{\parbox[t]['.$visinaOkvirja.' cm]{0.2\textwidth}{ \hphantom{\hspace{0.2\textwidth}}} } } '; //v prvi vrstici izrisi prazen okvir, ki se razpotegne skozi vse vrstice }elseif($export_subtype=='q_empty'){ $tex .= '& '; //izrisi potrebno praznino za multirow okvir iz prve vrstice }else{ @@ -373,22 +443,21 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement $prviOdgovorSlikovniTip = 1; } - }elseif($spremenljivke['orientation']==11){ //ce je VAS - //$tex .= ' '.$symbol.' '.$this->encodeText($stringTitle, $rowVrednost['id']).' '; + }elseif($spremenljivke['orientation'] == 11){ //ce je VAS if($indeksZaWhile == 1){ - if($numRowsSql<=7){ //ce je manj kot 7 slikovnih tipov, izpisemo s tabelo, drugace simbol in zraven število - $tex .= ' '.$symbol; + if($numRowsSql<=7){ //ce je manj kot 7 VAS, izpisemo s tabelo, drugace simbol in zraven število + $tex .= ' '.$symbol[$indeksZaWhile-1]; } }else{ - if($numRowsSql<=7){ //ce je manj kot 7 slikovnih tipov, izpisemo s tabelo, drugace simbol in zraven število - $tex .= ' & '.$symbol; + if($numRowsSql<=7){ //ce je manj kot 7 VAS, izpisemo s tabelo, drugace simbol in zraven število + $tex .= ' & '.$symbol[$indeksZaWhile-1]; } } if($numRowsSql>7){ $tex .= ' ('.$indeksZaWhile.') '; } }else{ //ce ni urejenega izrisa naj bo default oz. navpicno - $tex .= $symbol.' '.$this->encodeText($stringTitle, $rowVrednost['id']).' '.$texNewLine; + $tex .= $symbol.' '.LatexDocument::encodeText($stringTitle, $rowVrednost['id'], 0, 0, '', 1).' '.$texNewLine; } $oznakaOdgovora++; @@ -407,7 +476,7 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement $tex .= ' & ('.$i.')'; } } - $tex .= ' \end{tabular}'; //zakljuci izris odgovorov v tabeli za "slikovni tip" + $tex .= ' \end{tabular}'.$texBigSkip; //zakljuci izris odgovorov v tabeli za "slikovni tip" } //$tex .= $texNewLine; $tex .= $texNewLine; @@ -415,10 +484,10 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement if($export_format == 'pdf'|| $spremenljivke['orientation']==7){ //ce je pdf //if($spremenljivke['orientation']==7 && $export_format == 'pdf'){ if($export_format == 'pdf'){ - $tex .= '\end{tabularx}'; //za zakljuciti izrisa odgovorov v tabeli//tabularx + $tex .= '\end{xltabular}'; //za zakljuciti izrisa odgovorov v tabeli//tabularx $tex .= $this->texBigSkip; $tex .= $this->texBigSkip; - $tex .= ' \noindent '; + //$tex .= ' \noindent '; }else{ $tex .= ' \end{tabular}'; //za zakljuciti izris odgovorov v tabeli $tex .= $texNewLine; @@ -483,6 +552,10 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement //$tex .= '\\end{absolutelynopagebreak}'; //zakljucimo environment, da med vprasanji ne bo prelomov strani } + /* $time_end = microtime(true); + $execution_time = ($time_end - $time_start); + echo 'Total Execution Time radio: '.floatval($execution_time).' sec
'; */ + return $tex; } } \ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php b/admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php index c93ceb0..96c1557 100644 --- a/admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php @@ -10,9 +10,9 @@ *****************************************/ -define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm -define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip -define("RADIO_BTN_SIZE", 0.13); +if (!defined('PIC_SIZE')) define("PIC_SIZE", "\includegraphics[width=5cm]"); //slika sirine 50mm +if (!defined('ICON_SIZE')) define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip +if (!defined('RADIO_BTN_SIZE')) define("RADIO_BTN_SIZE", 0.13); class RazvrscanjeLatex extends LatexSurveyElement { @@ -27,6 +27,7 @@ class RazvrscanjeLatex extends LatexSurveyElement private static $_instance; protected $texBigSkip = ' \bigskip '; protected $loop_id = null; // id trenutnega loopa ce jih imamo + protected $path2ImagesRadio = null; public static function getInstance() { @@ -38,8 +39,11 @@ class RazvrscanjeLatex extends LatexSurveyElement public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype='', $preveriSpremenljivko=null, $export_data_type=null, $loop_id=null){ + //$time_start = microtime(true); + global $lang, $site_path; // Ce je spremenljivka v loopu $this->loop_id = $loop_id; + $this->path2ImagesRadio = $site_path.'uploadi/editor/'; //preveri, ce je kaj v bazi //$userDataPresent = $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id); @@ -80,7 +84,7 @@ class RazvrscanjeLatex extends LatexSurveyElement if($userDataPresent){ //ce so prisotni podatki respondenta //preverjanje podatkov trenutnega uporabnika ###################################################### //$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"); - $sqlUserAnswer = sisplet_query("SELECT vrstni_red FROM srv_data_rating WHERE spr_id=".$spremenljivke['id']." AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' "); + $sqlUserAnswer = sisplet_query("SELECT vrstni_red FROM srv_data_rating WHERE spr_id=".$spremenljivke['id']." AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' ".($loop_id !== null ? " AND loop_id='$loop_id'" : "")); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); @@ -95,7 +99,7 @@ class RazvrscanjeLatex extends LatexSurveyElement } if($jeOdgovor==0||$tipRazvrscanja==1){ //ce ni odgovor respondenta, bo naslov na levi strani; ali je Ostevilcevanje - array_push($navpicniOdgovori, $this->encodeText($stringTitleRow, $rowVrednost['id']) ); //filanje polja z navpicnimi odgovori (po vrsticah) + array_push($navpicniOdgovori, LatexDocument::encodeText($stringTitleRow, $rowVrednost['id']) ); //filanje polja z navpicnimi odgovori (po vrsticah) } } //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - konec @@ -103,18 +107,18 @@ class RazvrscanjeLatex extends LatexSurveyElement if($userDataPresent&&$tipRazvrscanja!=1){ //ce so prisotni podatki respondenta in ni Ostevilcevanje #ureditev polja s podatki trenutnega uporabnika ###################################################### //$sqlOdgovoriRespondentaString = "SELECT v.naslov, v.id from srv_vrednost v, srv_data_rating r WHERE r.spr_id=v.spr_id AND r.usr_id=".$usr_id." AND r.vre_id=v.id AND r.spr_id=".$spremenljivke['id']." ORDER BY r.vrstni_red"; - $sqlOdgovoriRespondentaString = "SELECT v.naslov, v.id from srv_vrednost v, srv_data_rating r WHERE r.spr_id=v.spr_id AND r.usr_id=".$usr_id." AND r.vre_id=v.id AND r.spr_id=".$spremenljivke['id']." AND hidden='0' ORDER BY r.vrstni_red"; + $sqlOdgovoriRespondentaString = "SELECT v.naslov, v.id from srv_vrednost v, srv_data_rating r WHERE ".($loop_id !== null ? " r.loop_id='$loop_id' AND " : "")."r.spr_id=v.spr_id AND r.usr_id=".$usr_id." AND r.vre_id=v.id AND r.spr_id=".$spremenljivke['id']." AND hidden='0' ORDER BY r.vrstni_red"; //echo $sqlOdgovoriRespondentaString."
"; $sqlOdgovoriRespondenta = sisplet_query($sqlOdgovoriRespondentaString); //pregled vseh odgovorov respondenta razvrsceni kot morajo biti while ($rowOdgovoriRespondenta = mysqli_fetch_assoc($sqlOdgovoriRespondenta)){ - $odgovorRespondenta = $this->encodeText($rowOdgovoriRespondenta['naslov'], $rowOdgovoriRespondenta['id']); + $odgovorRespondenta = LatexDocument::encodeText($rowOdgovoriRespondenta['naslov'], $rowOdgovoriRespondenta['id']); array_push($odgovoriRespondenta, $odgovorRespondenta); //filanje polja z odgovori respondenta } + //pregled vseh odgovorov respondenta razvrsceni kot morajo biti #ureditev polja s podatki trenutnega uporabnika - konec ############################################## } - //izris tabel dolocenega razvrscanja if($export_data_type==2){ //ce je kratek izpis izvoza $tex .= $this->IzrisRazvrscanjaKratko($spremenljivke, $steviloDesnihOkvirjev, $numRowsSql, $navpicniOdgovori, $texNewLine, $texNewLineAfterTable, $export_format, 0, $tipRazvrscanja, $odgovoriRespondenta, $export_subtype); @@ -123,6 +127,8 @@ class RazvrscanjeLatex extends LatexSurveyElement $tex .= $this->IzrisRazvrscanjaTabele($spremenljivke, $steviloDesnihOkvirjev, $numRowsSql, $navpicniOdgovori, $texNewLine, $texNewLineAfterTable, $export_format, 0, $tipRazvrscanja, $odgovoriRespondenta, $export_subtype); }elseif($tipRazvrscanja==1){ //ce je Ostevilcevanje $tex .= $this->IzrisRazvrscanja($spremenljivke, $numRowsSql, $navpicniOdgovori, $odgovoriRespondenta, $texNewLine, $export_format, 0); + }elseif($tipRazvrscanja==3){ //ce je Image hotspot + $tex .= $this->IzrisRazvrscanjaImageHotSpot($spremenljivke, $export_data_type, $odgovoriRespondenta, $texNewLine); } } //izris tabel dolocenega razvrscanja - konec @@ -135,8 +141,11 @@ class RazvrscanjeLatex extends LatexSurveyElement }else{ $tex .= $this->texBigSkip; } - } - + } + //echo "latex koda: $tex"; + /* $time_end = microtime(true); + $execution_time = ($time_end - $time_start); + echo 'Total Execution Time razvrščanje: '.$execution_time.' sec'; */ return $tex; } } @@ -154,9 +163,9 @@ class RazvrscanjeLatex extends LatexSurveyElement $tabela .= '\setlength{\parindent}{0.1\textwidth} '; //prva vrstica pred tabelo z odgovori if($typeOfDocument == 'pdf'){ //ce je pdf - $tabela .= '\begin{tabularx}{\textwidth}{l c l} '; //izris s tabelo tabularx + $tabela .= '\begin{xltabular}{\textwidth}{l c l} '; //izris s tabelo xltabular $tabela .= $lang['srv_ranking_available_categories'].': & \hspace{0.1\textwidth} & '.$lang['srv_ranking_ranked_categories1'].': '.$texNewLine; - $tabela .= '\rule{0.4\textwidth}{0.7 pt} & & \rule{0.4\textwidth}{0.4 pt} \end{tabularx} '; + $tabela .= '\rule{0.4\textwidth}{0.7 pt} & & \rule{0.4\textwidth}{0.4 pt} \end{xltabular} '; }else{ //ce je rtf $tabela .= '\begin{tabular}{l c l} '; //izris s tabelo $tabela .= $lang['srv_ranking_available_categories'].': & & '.$lang['srv_ranking_ranked_categories1'].': '.$texNewLine; @@ -180,7 +189,7 @@ class RazvrscanjeLatex extends LatexSurveyElement ################################################# //zacetek tabele - $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'tabularx', 'tabular', 1, 0.2); + $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'xltabular', 'tabular', 1, 0.2); //argumenti za leve okvirje $textboxWidthL = 0.25; @@ -201,17 +210,12 @@ class RazvrscanjeLatex extends LatexSurveyElement $textboxHeightL = 0; } - //echo "textboxHeightL: ".$textboxHeightL."
"; -/* echo "odgovori respondenta: ".count($odgovoriRespondenta)."
"; - echo "navpični odgovori: ".count($navpicniOdgovori)."
"; - echo "stevilo Odgovorov: ".$steviloOdgovorov."
"; - echo "stevilo desnih okvirjev: ".$steviloDesnihOkvirjev."
"; */ //izris notranjosti tabele for ($i = 1; $i <= $steviloOdgovorov; $i++){ - - $textL = $tableCentering.' '.$navpicniOdgovori[$i-1]; //odgovor znotraj okvirja - + if(array_key_exists($i-1, $navpicniOdgovori)){ + $textL = $tableCentering.' '.$navpicniOdgovori[$i-1]; //odgovor znotraj okvirja + } if($tipRazvrscanja==2){ //ce je postavitev Premikanje $tabela .= $indeksZaStevilaL.'. '; //pred okvirjem s kategorijo odgovora dodaj stevilko s piko @@ -222,7 +226,7 @@ class RazvrscanjeLatex extends LatexSurveyElement //izpis latex kode za okvir z odgovorom if($tipRazvrscanja==0||($tipRazvrscanja==2&&count($odgovoriRespondenta)==0)){ //ce je Prestavljanje ali Premikanje in ni podatkov respondenta - if($navpicniOdgovori[$i-1]!=''){ //ce so prisotni odgovori + if(array_key_exists($i-1, $navpicniOdgovori)&&($navpicniOdgovori[$i-1]!='')){ //ce so prisotni odgovori $textVOkvirju = $textL; } }elseif($tipRazvrscanja==2&&count($odgovoriRespondenta)!=0){ //ce je postavitev Premikanje in imamo odgovore respondenta @@ -232,7 +236,7 @@ class RazvrscanjeLatex extends LatexSurveyElement //echo "text V Okvirju: ".$textVOkvirju."
"; //izpis latex kode za okvir z odgovorom - if($tipRazvrscanja==0&&$navpicniOdgovori[$i-1]!=''){ + if($tipRazvrscanja==0&&(array_key_exists($i-1, $navpicniOdgovori)&&$navpicniOdgovori[$i-1]!='')){ if($typeOfDocument == 'pdf'){ //ce je pdf $tabela .= $this->LatexTextBox($typeOfDocument, $textboxHeightL, $textboxWidthL, $textVOkvirju, $textboxAllignmentL, 0); }else{ @@ -245,13 +249,6 @@ class RazvrscanjeLatex extends LatexSurveyElement $tabela .= $textVOkvirju; } } -/* if(($tipRazvrscanja==0&&$navpicniOdgovori[$i-1]!='')||($tipRazvrscanja==2||$tipRazvrscanja==1)){ - if($typeOfDocument == 'pdf'){ //ce je pdf - $tabela .= $this->LatexTextBox($typeOfDocument, $textboxHeightL, $textboxWidthL, $textVOkvirju, $textboxAllignmentL, 0); - }else{ - $tabela .= $textVOkvirju; - } - } */ if($typeOfDocument == 'pdf'){ $tabela .= ' \bigskip '; @@ -271,7 +268,7 @@ class RazvrscanjeLatex extends LatexSurveyElement $textboxAllignmentDE = 'c'; //allignment desnega okvirja, ki je empty if($indeksZaStevilaD <= $steviloDesnihOkvirjev){ //ce se ni preseglo zeleno stevilo desnih okvirjev $tabela .= $indeksZaStevilaD.'. '; - $odgovorZaIzpis = $odgovoriRespondenta[$i-1]; + $odgovorZaIzpis = isset($odgovoriRespondenta[$i-1])?$odgovoriRespondenta[$i-1]:null; if($typeOfDocument == 'pdf'){ //echo "odgovori respondenta na desni: ".$odgovoriRespondenta[$i-1]."
"; if($odgovorZaIzpis){ //ce je odgovor respondenta @@ -307,7 +304,7 @@ class RazvrscanjeLatex extends LatexSurveyElement } //zakljucek tabele - $tabela .= $this->EndLatexTable($typeOfDocument, 'tabularx', 'tabular'); + $tabela .= $this->EndLatexTable($typeOfDocument, 'xltabular', 'tabular'); ################################################# if($tipRazvrscanja==2){ //ce je postavitev Premikanje @@ -320,8 +317,6 @@ class RazvrscanjeLatex extends LatexSurveyElement return $tabela; } #funkcija, ki skrbi za izris ustreznih tabel za razvrscanje (postavitev: Prestavljanje in Premikanje) - konec ################################ - - #funkcija, ki skrbi za izris ustreznih tabel za razvrscanje (postavitev: Prestavljanje in Premikanje) ################################ @@ -331,18 +326,22 @@ class RazvrscanjeLatex extends LatexSurveyElement $textboxWidth = 0.1; $textboxHeight = '0.2cm'; $textboxAllignment = 'c'; //dummy spremenljivka + $odgovorRespondenta = null; if($typeOfDocument == 'rtf'){ //ce je rtf, zacetek tabele, kjer sta dva stolpca (prazen okvir + okvir z odgovorom) //$tex .= '\begin{tabular}{l l} '; //izris z enostolpicno tabelo $tex .= '\begin{tabular}{c l} '; //izris z enostolpicno tabelo } - for ($i = 1; $i <= $steviloVrstic; $i++){ $tex .= ' \noindent '; //da ni premika besedila v desno //izpis latex kode za prazen okvir oz. okvirjem z ustreznim stevilskim odgovorom //$tex .= $this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, $odgovoriRespondenta[$i-1], $textboxAllignment, 0); - $tex .= $this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, '\\textcolor{crta}{'.$odgovoriRespondenta[$i-1].'}', $textboxAllignment, 0); + if(array_key_exists($i-1, $odgovoriRespondenta)){ + $odgovorRespondenta = $odgovoriRespondenta[$i-1]; + } + //$tex .= $this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, '\\textcolor{crta}{'.$odgovoriRespondenta[$i-1].'}', $textboxAllignment, 0); + $tex .= $this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, '\\textcolor{crta}{'.$odgovorRespondenta.'}', $textboxAllignment, 0); if($typeOfDocument == 'rtf'){ //ce je rtf $tex .= ' & '; //meja med stolpcema tabele 1. prazen okvir (okvir s stevilskim odgovorom), 2. navpicni odgovor @@ -369,18 +368,19 @@ class RazvrscanjeLatex extends LatexSurveyElement $indeksZaStevila=1; $steviloOdgovorov=count($navpicniOdgovori); $steviloOdgovorov=count($odgovoriRespondenta); - $tex = ''; - + //izpis stevil in odgovorov for ($i = 1; $i <= $steviloOdgovorov; $i++){ - if($tipRazvrscanja==0||$tipRazvrscanja==2){ //ce je Prestavljanje ali Premikanje + $navpicniOdgovor = null; + if(array_key_exists(($i-1), $navpicniOdgovori)){ + $navpicniOdgovor = $navpicniOdgovori[$i-1]; + } + if($tipRazvrscanja==0||$tipRazvrscanja==2||$tipRazvrscanja==3){ //ce je Prestavljanje ali Premikanje ali image hotspot $tex .= $indeksZaStevila.'. '; //stevilka pred odgovorom - //$tex .= $odgovoriRespondenta[$i-1]; //odgovor $tex .= '\\textcolor{crta}{'.$odgovoriRespondenta[$i-1].'}'; //odgovor - }elseif($tipRazvrscanja==1){ //ce je Ostevilcevanje - $tex .= $navpicniOdgovori[$i-1].': '; - //$tex .= $odgovoriRespondenta[$i-1]; //odgovor + }elseif($tipRazvrscanja==1){ //ce je Ostevilcevanje + $tex .=$navpicniOdgovor.': '; $tex .= '\\textcolor{crta}{'.$odgovoriRespondenta[$i-1].'}'; //odgovor } $tex .= '; '; @@ -393,5 +393,51 @@ class RazvrscanjeLatex extends LatexSurveyElement return $tex; } #funkcija, ki skrbi za izris razvrscanje za kratek izpis izvoza - konec ################################ + + #funkcija, ki skrbi za izris razvrscanje za kratek izpis izvoza ################################ + function IzrisRazvrscanjaImageHotSpot($spremenljivke=null, $export_data_type=null, $odgovoriRespondenta=null, $texNewLine=''){ + global $lang; + $indeksZaStevila=1; + + $steviloOdgovorov=count($odgovoriRespondenta); + $tex = ''; + $imageName = LatexDocument::getImageName('hotspot', $spremenljivke['id'], 'hotspot_image='); + $imageNameTest = $this->path2ImagesRadio.$imageName.'.png'; //za preveriti, ali obstaja slikovna datoteka na strezniku + + //echo("za image hot spot ne grid: ".$imageNameTest."
"); + if(filesize($imageNameTest) > 0){ + $image = PIC_SIZE."{".$this->path2ImagesRadio."".$imageName."}"; //priprave slike predefinirane dimenzije + }else{ + $image = $lang['srv_pc_unavailable']; + } + + $tex .= $image."".$texNewLine; //izris slike + + //iz baze poberi imena obmocij + $sqlHotSpotRegions = sisplet_query("SELECT region_name FROM srv_hotspot_regions WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); + + //izris imen obmocij po $sqlHotSpotRegions + $tex .= $lang['srv_export_hotspot_regions_names'].': '.$texNewLine; //besedilo "Obmocja na sliki" + while ($rowHotSpotRegions = mysqli_fetch_assoc($sqlHotSpotRegions)) + { + $tex .= $rowHotSpotRegions['region_name'].''.$texNewLine; + } + + if(count($odgovoriRespondenta)){ + $tex .= $lang['srv_ranking_ranked_categories1'].": ".$texNewLine; + //izpis odgovorov + for ($i = 1; $i <= $steviloOdgovorov; $i++){ + $tex .= '\\textcolor{crta}{'.$odgovoriRespondenta[$i-1].'}'; //odgovor + $tex .= ' \\\\ '; + $indeksZaStevila++; + } + } + + $tex .= ' \\\\ '; + $tex .= ' \\\\ '; + + return $tex; + } + #funkcija, ki skrbi za izris razvrscanje za kratek izpis izvoza - konec ################################ } \ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/SNImena.php b/admin/survey/export/latexclasses/Vprasanja/SNImena.php index e7d7ef1..bf7ae8c 100644 --- a/admin/survey/export/latexclasses/Vprasanja/SNImena.php +++ b/admin/survey/export/latexclasses/Vprasanja/SNImena.php @@ -9,7 +9,7 @@ * Datum: 05/2018 *****************************************/ - define("NAGOVOR_LINE_WIDTH", 0.5); + if (!defined("NAGOVOR_LINE_WIDTH")) define("NAGOVOR_LINE_WIDTH", 0.5); class SNImenaLatex extends LatexSurveyElement { @@ -60,7 +60,7 @@ class SNImenaLatex extends LatexSurveyElement $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND loop_id $loop_id "; $sqlUserAnswer = sisplet_query($sqlUserAnswerString); while($userAnswer = mysqli_fetch_array($sqlUserAnswer)){ - array_push($textVOkvirju, $this->encodeText($userAnswer['text'])); + array_push($textVOkvirju, LatexDocument::encodeText($userAnswer['text'])); } $steviloOkvirjev=count($textVOkvirju); } diff --git a/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php b/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php index b6def64..539148e 100644 --- a/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php @@ -10,9 +10,9 @@ *****************************************/ -define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm -define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip -define("MAXSTEVILOSTOLPCEV", 21); //max Stevilo Stolpcev za prvo vrstico pod Drsnikom, zaradi tezav z izrisom, ce je teh vec kot toliko +if (!defined('PIC_SIZE')) define("PIC_SIZE", "\includegraphics[width=5cm]"); //slika sirine 50mm +if (!defined('ICON_SIZE')) define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip +if (!defined('MAXSTEVILOSTOLPCEV')) define("MAXSTEVILOSTOLPCEV", 21); //max Stevilo Stolpcev za prvo vrstico pod Drsnikom, zaradi tezav z izrisom, ce je teh vec kot toliko class SteviloLatex extends LatexSurveyElement { @@ -39,9 +39,10 @@ class SteviloLatex extends LatexSurveyElement } public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype=null, $preveriSpremenljivko=null, $export_data_type=null, $loop_id=null){ + //$time_start = microtime(true); // Ce je spremenljivka v loopu $this->loop_id = $loop_id; - + //preveri, ce je kaj v bazi //$userDataPresent = $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id); $userDataPresent = $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id, $this->loop_id); @@ -57,7 +58,7 @@ class SteviloLatex extends LatexSurveyElement $tex = ''; - $symbol = $this->getAnswerSymbol($export_format, $fillablePdf, 2, 10, 0, 0); //poberi simbol checkbox za other in missing moznosti odgovora + $symbol = $this->getAnswerSymbol($export_subtype, $export_format, $fillablePdf, 2, 10, 0, 0); //poberi simbol checkbox za other in missing moznosti odgovora //nastavitve iz baze ########################## $steviloOken = $spremenljivke['size']; //stevilo oken @@ -102,10 +103,11 @@ class SteviloLatex extends LatexSurveyElement /* if($postavitev!=0){ $tex .= $texNewLine; } */ - + //ureditev polja s podatki trenutnega uporabnika ###################################################### //$sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id"); - $sqlUserAnswer = sisplet_query("SELECT text, text2 FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' "); + $sqlUserAnswer = sisplet_query("SELECT text, text2 FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."'" . + ($loop_id !== null ? " AND loop_id='$loop_id'" : "")); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); //echo "userAnswer: ".$userAnswer['text']."
"; //ureditev polja s podatki trenutnega uporabnika - konec ############################################## @@ -152,12 +154,16 @@ class SteviloLatex extends LatexSurveyElement //echo "parametri tabele: ".$parameterTabular."
"; //ureditev parametrov za tabelo - konec###################### - if($userAnswer['text']){ - $okvir = 0; - }elseif($userAnswer['text'] == ''){ //ce nimamo odgovora - $okvir = 1; //rabimo okvir + if(isset($userAnswer['text'])){ + if($userAnswer['text']){ + $okvir = 0; + }elseif($userAnswer['text'] == ''){ //ce nimamo odgovora + $okvir = 1; //rabimo okvir + } + }else{ + $okvir = 1; } - + #ZACETEK TABELE //zacetek tabele if($polozajEnota!=0){ //ce je prisotno besedilo za enoto @@ -169,7 +175,8 @@ class SteviloLatex extends LatexSurveyElement } $izpisStevilk = 0; //belezi, ali se je stevilo ali stevila ze izpisalo - + $txtTmp = []; //polje, ki belezi vnesene odgovore okvirjev + //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ # po potrebi se prevede besedilo, ki se pojavi pred textbox-om @@ -181,11 +188,10 @@ class SteviloLatex extends LatexSurveyElement //ce ni other ali missing if( (int)$rowVrednost['other'] == 0 && $rowVrednost['naslov']){ //in se ni se izpisalo stevila - - $drugoStevilo = $userAnswer['text2']; //belezi drugo mozno stevilo + + $drugoStevilo = isset($userAnswer['text2'])?$userAnswer['text2']:null; //belezi drugo mozno stevilo if($izpisStevilk == 0 && $okvir == 0){ //ce ni bilo se izpisano nobeno stevilo in ne rabimo tabele za izpis - $txtTmp = []; if($export_format=='pdf'){ if($polozajEnota==0){ //ce ni besedila za enoto, rabimo odstavek za pravilen izpis $txtTmp1 = " \par { "; @@ -219,10 +225,9 @@ class SteviloLatex extends LatexSurveyElement array_push($txtTmp, $txtTmp2); //filanje polja z besedili } } - if($okvir == 1){ //ce rabimo okvir, izpisi - //$dataTextBox = $this->LatexTextBox($export_format, $textboxHeight, $textboxWidth, $txtTmp, $textboxAllignment, 0); if($polozajEnota==0){ //ce ni besedila za enoto, rabimo odstavek za pravilen izpis + $dataTextBox = ""; if($steviloOken>1){ $dataTextBox = " \par { "; } @@ -241,28 +246,27 @@ class SteviloLatex extends LatexSurveyElement } - - if($polozajEnota==0){ //ce polozaja besedila enote je na NE + if($polozajEnota==0){ //ce polozaj besedila enote je na NE if($indeksZaWhile!=1){ - //if($okvir == 1){ //ce rabimo prazen okvir, izpisi if($okvir == 1 && $textboxWidth<0.49){ //ce rabimo prazen okvir, izpisi $tex .= ' & '; //skoci v nov stolpec }else{ - $tex .= ' \\\\ '; //pojdi v novo vrstico + //$tex .= ' \\\\ '; //pojdi v novo vrstico + $tex .= ' & '; //pojdi v nov stolpec } } if($okvir == 1){ //ce rabimo prazen okvir, izpisi //izpis praznega text box-a dolocene sirine in visine - //$tex .= ' & '.$dataTextBox; $tex .= ' '.$dataTextBox; }else{ //ce je podatek ob levi enoti - //$tex .= ' & '.$txtTmp[$indeksZaWhile-1]; - $tex .= ' '.$txtTmp[$indeksZaWhile-1]; + $tmp_indeks = $indeksZaWhile-1; + if (array_key_exists($tmp_indeks , $txtTmp)) { + $tex .= ' '.$txtTmp[$indeksZaWhile-1]; + } } } - //if($polozajEnota==1){ //ce je polozaj besedila enote na LEVI elseif($polozajEnota==1){ //ce je polozaj besedila enote na LEVI if($indeksZaWhile!=1){ if($okvir == 1 && $textboxWidth<0.30){ //ce rabimo prazen okvir in je njegova sirina manjsa od 30, izpisi @@ -274,8 +278,10 @@ class SteviloLatex extends LatexSurveyElement //izpis besedila enote $stringEnota = $rowVrednost['naslov']; - $stringEnota = Common::getInstance()->dataPiping($stringEnota, $usr_id, $loop_id); - $tex .= $this->encodeText($stringEnota); + if($usr_id){ + $stringEnota = Common::getInstance()->dataPiping($stringEnota, $usr_id, $loop_id); + } + $tex .= LatexDocument::encodeText($stringEnota); if($okvir == 1){ //ce rabimo prazen okvir, izpisi //izpis praznega text box-a dolocene sirine in visine @@ -288,8 +294,6 @@ class SteviloLatex extends LatexSurveyElement $tex .= ' & '.$txtTmp[$indeksZaWhile-1]; } - //echo "tex koda: ".$tex."
"; - }elseif($polozajEnota==2){ //ce je polozaj besedila enote na DESNI //if($indeksZaWhile!=1&&$export_format=='rtf'){//ce je drugi okvir in je rtf if($indeksZaWhile!=1){//ce je drugi okvir @@ -320,8 +324,10 @@ class SteviloLatex extends LatexSurveyElement } $stringEnota = $rowVrednost['naslov']; - $stringEnota = Common::getInstance()->dataPiping($stringEnota, $usr_id, $loop_id); - $tex .= ' '.$this->encodeText($stringEnota); + if($usr_id){ + $stringEnota = Common::getInstance()->dataPiping($stringEnota, $usr_id, $loop_id); + } + $tex .= ' '.LatexDocument::encodeText($stringEnota); if($indeksZaWhile==1&&$export_format=='pdf'){ //ce je prvi okvir in je pdf //$tex .= ' \hspace{0.5cm} '; //dodaj še nekaj prostora, za prvim okvirjem, da bo dovolj prostora @@ -336,11 +342,14 @@ class SteviloLatex extends LatexSurveyElement } elseif((int)$rowVrednost['other'] != 0) { //drugace, ce imamo missinge ali podobne, jih zabelezi v polju - // imamo polje drugo - ne vem, zavrnil... + $rowVrednostNaslov= array_key_exists('naslov', $rowVrednost)?$rowVrednost['naslov']:null; + $rowVrednostVrstni_red= array_key_exists('vrstni_red', $rowVrednost)?$rowVrednost['vrstni_red']:null; + + // imamo polje drugo - ne vem, zavrnil... $array_others[$rowVrednost['id']] = array( - 'naslov'=>$rowVrednost['naslov'], - 'vrstni_red'=>$rowVrednost['vrstni_red'], - 'value'=>$text[$rowVrednost['vrstni_red']], + 'naslov'=>$rowVrednostNaslov, + 'vrstni_red'=>$rowVrednostVrstni_red, + //'value'=>$text[$rowVrednost['vrstni_red']], //- pokomentiral, ker ne vem, zakaj je tako, saj drugače PHP javlja warning ); } @@ -373,13 +382,6 @@ class SteviloLatex extends LatexSurveyElement #KONEC TABELE } //echo "tex koda: ".$tex."
"; - -/* $tex .= $this->texNewLine; - $tex .= $this->texNewLine; - if($okvir == 1){ //ce je prazen vprasalnik, dodaj se dve prazni vrstici - $tex .= $this->texNewLine; - $tex .= $this->texNewLine; - } */ }elseif($nacinVnosa==1&&$export_format=='pdf'){ //ce je drsnik in je izvoz v pdf @@ -446,7 +448,7 @@ class SteviloLatex extends LatexSurveyElement $array_others[$rowVrednost['id']] = array( 'naslov'=>$rowVrednost['naslov'], 'vrstni_red'=>$rowVrednost['vrstni_red'], - 'value'=>$text[$rowVrednost['vrstni_red']], + //'value'=>$text[$rowVrednost['vrstni_red']], // - pokomentiral, ker ne vem, zakaj je tako, saj drugače PHP javlja warning ); } } @@ -461,6 +463,7 @@ class SteviloLatex extends LatexSurveyElement for($i=1; $i<=$slider_NumofDescrLabels; $i++){ $slider_CustomDescriptiveLabelsTmp = ($spremenljivkaParams->get('slider_Labela_opisna_'.$i) ? $spremenljivkaParams->get('slider_Labela_opisna_'.$i) : ''); $slider_CustomDescriptiveLabelsTmp = preg_replace("/\s| /",' ',$slider_CustomDescriptiveLabelsTmp); //za odstranitev morebitnih presledkov, ki lahko delajo tezave pri polju za drsnik + $slider_CustomDescriptiveLabels = ''; if($i == 1){ $slider_CustomDescriptiveLabels = $slider_CustomDescriptiveLabelsTmp; }else{ @@ -479,14 +482,14 @@ class SteviloLatex extends LatexSurveyElement $parameterTabularLabeleNad = 'lR'; //leva (l) pa desna poravnava, ki se prilagaja (R) //zacetek tabele - $tex .= ($export_format == 'pdf' ? '\keepXColumns \begin{tabularx}{0.9\textwidth}{'.$parameterTabularLabeleNad.'}' : '\begin{tabular*}{3 cm}{c}'); + $tex .= ($export_format == 'pdf' ? '\keepXColumns \begin{xltabular}{0.9\textwidth}{'.$parameterTabularLabeleNad.'}' : '\begin{tabular*}{3 cm}{c}'); //vrstice in stolpci v tabeli - $tex .= $this->encodeText($MinLabel).' & '.$this->encodeText($MaxLabel); //izpis naslovov label v eni vrstici + $tex .= LatexDocument::encodeText($MinLabel).' & '.LatexDocument::encodeText($MaxLabel); //izpis naslovov label v eni vrstici //vrstice in stolpci v tabeli - konec //konec tabele - $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular*} \\noindent"); + $tex .= ($export_format == 'pdf' ? "\\end{xltabular}" : "\\end{tabular*} \\noindent"); //$tex .= $texNewLine; //v novo vrstico po izrisu label $tex .= '\par'; //odstavek @@ -538,7 +541,7 @@ class SteviloLatex extends LatexSurveyElement //zacetek tabele //$tex .= ($export_format == 'pdf' ? '\begin{tabularx}{0.9\textwidth}{'.$parameterTabularLabelePrvaPod.'}' : '\begin{tabular}{'.$parameterTabularLabelePrvaPod.'}'); - $tex .= ($export_format == 'pdf' ? '\keepXColumns \begin{tabularx}{0.9\textwidth}{'.$parameterTabularLabelePrvaPod.'}' : '\begin{tabular}{'.$parameterTabularLabelePrvaPod.'}'); + $tex .= ($export_format == 'pdf' ? '\keepXColumns \begin{xltabular}{0.9\textwidth}{'.$parameterTabularLabelePrvaPod.'}' : '\begin{tabular}{'.$parameterTabularLabelePrvaPod.'}'); // \keepXColumns //izris vrstice in stolpcev v tabeli for($i=0; $i<$steviloStolpcevPrvaVrstica; $i++){ @@ -563,6 +566,7 @@ class SteviloLatex extends LatexSurveyElement } }else{ //za vse ostale stolpce med prvi in zadnjim if($slider_VmesneNumLabel&&$steviloStolpcevPrvaVrsticaOrig<=MAXSTEVILOSTOLPCEV){ //ce so vmesne labele stevilske in je stevilo stolpcev manjsi od maximalnega dovoljenega za ustrezen izris + $vmesnoStevilo=0; if($i==1){ $vmesnoStevilo=$slider_MinNumLabel+$slider_handle_step; }else{ @@ -578,7 +582,7 @@ class SteviloLatex extends LatexSurveyElement //izris vrstice in stolpcev v tabeli - konec //konec tabele - $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular} \\noindent"); + $tex .= ($export_format == 'pdf' ? "\\end{xltabular}" : "\\end{tabular} \\noindent"); #IZRIS PRVE VRSTICE POD DRSNIKOM - KONEC ###################################### //echo $tex; @@ -588,6 +592,7 @@ class SteviloLatex extends LatexSurveyElement //ureditev parametrov za tabeli $parameterTabularLabeleDrugaPod=''; $prazniStolpciZaGraficneOznake = ''; + $parameterTabularLabeleTretjaPod = ''; for($i=0; $i<$slider_StevLabelPodrocij; $i++){ $parameterTabularLabeleDrugaPod .= ($export_format == 'pdf' ? '|C|' : '|c|'); //sredinska poravnava $parameterTabularLabeleTretjaPod .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava @@ -599,19 +604,19 @@ class SteviloLatex extends LatexSurveyElement //ureditev parametrov za tabeli - konec //zacetek tabele z graficnimi oznakami - $tex .= ($export_format == 'pdf' ? '\begin{tabularx}{0.9\textwidth}{'.$parameterTabularLabeleDrugaPod.'}' : '\begin{tabular}{'.$parameterTabularLabeleDrugaPod.'}'); + $tex .= ($export_format == 'pdf' ? '\begin{xltabular}{0.9\textwidth}{'.$parameterTabularLabeleDrugaPod.'}' : '\begin{tabular}{'.$parameterTabularLabeleDrugaPod.'}'); //izris prazne vrstice z graficnimi oznakami label (crta horizontal) $tex .= $prazniStolpciZaGraficneOznake; //izris prazne vrstice z graficnimi oznakami label (crta horizontal) - konec //konec tabele z graficnimi oznakami - $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular} \\noindent"); + $tex .= ($export_format == 'pdf' ? "\\end{xltabular}" : "\\end{tabular} \\noindent"); $tex .= $texNewLine; //zacetek tabele z naslovi label - $tex .= ($export_format == 'pdf' ? '\begin{tabularx}{0.9\textwidth}{'.$parameterTabularLabeleTretjaPod.'}' : '\begin{tabular}{'.$parameterTabularLabeleTretjaPod.'}'); + $tex .= ($export_format == 'pdf' ? '\begin{xltabular}{0.9\textwidth}{'.$parameterTabularLabeleTretjaPod.'}' : '\begin{tabular}{'.$parameterTabularLabeleTretjaPod.'}'); //izris naslovov label $slider_Labela_podrocja = []; //polje, ki hrani vpisane naslove labele podrocij @@ -628,7 +633,7 @@ class SteviloLatex extends LatexSurveyElement //izris naslovov label - konec //konec tabele z naslovi label - $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular} \\noindent"); + $tex .= ($export_format == 'pdf' ? "\\end{xltabular}" : "\\end{tabular} \\noindent"); } #IZRIS DRUGE VRSTICE POD DRSNIKOM - LABELE PODROCIJ ########################### //echo $tex; @@ -653,7 +658,6 @@ class SteviloLatex extends LatexSurveyElement } if($nacinVnosa==1){ //ce je drsnik - //if($export_data_type==1||$export_data_type==0){ //ce je dolg ali navaden izpis izvoza, ko se izrisuje drsnik if(($export_data_type==1||$export_data_type==0)&&(count($array_others)==0)){ //ce je dolg ALI navaden izpis izvoza IN ni missing, ko se izrisuje drsnik $tex .= $this->texBigSkip; $tex .= $this->texBigSkip." "; @@ -669,18 +673,9 @@ class SteviloLatex extends LatexSurveyElement //$tex .= $this->texNewLine; } } - - -/* $tex .= $texNewLine; - $tex .= $texNewLine; */ - /* $tex .= $this->texBigSkip; - $tex .= $this->texBigSkip." "; */ - - if($export_format == 'pdf'){ //ce je pdf - //$tex .= '\\end{absolutelynopagebreak}'; //zakljucimo environment, da med vprasanji ne bo prelomov strani - }else{ //ce je rtf - - } + /* $time_end = microtime(true); + $execution_time = ($time_end - $time_start); + echo 'Total Execution Time število: '.$execution_time.' sec
'; */ return $tex; } diff --git a/admin/survey/export/latexclasses/Vprasanja/VsotaLatex.php b/admin/survey/export/latexclasses/Vprasanja/VsotaLatex.php index 3cd5a14..88e3aa7 100644 --- a/admin/survey/export/latexclasses/Vprasanja/VsotaLatex.php +++ b/admin/survey/export/latexclasses/Vprasanja/VsotaLatex.php @@ -10,9 +10,9 @@ *****************************************/ -define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm -define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip -define("RADIO_BTN_SIZE", 0.13); +if (!defined('PIC_SIZE')) define("PIC_SIZE", "\includegraphics[width=5cm]"); //slika sirine 50mm +if (!defined('ICON_SIZE')) define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip +if (!defined('RADIO_BTN_SIZE')) define("RADIO_BTN_SIZE", 0.13); class VsotaLatex extends LatexSurveyElement { @@ -27,6 +27,7 @@ class VsotaLatex extends LatexSurveyElement private static $_instance; protected $texBigSkip = ' \bigskip '; protected $loop_id = null; // id trenutnega loopa ce jih imamo + protected $usr_id = null; public static function getInstance() { @@ -38,9 +39,10 @@ class VsotaLatex extends LatexSurveyElement public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype=null, $preveriSpremenljivko=null, $loop_id=null){ + //$time_start = microtime(true); // Ce je spremenljivka v loopu $this->loop_id = $loop_id; - + $this->usr_id = $usr_id; //preveri, ce je kaj v bazi //$userDataPresent = $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id); $userDataPresent = $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id, $this->loop_id); @@ -72,17 +74,21 @@ class VsotaLatex extends LatexSurveyElement //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ $stringTitleRow = $rowVrednost['naslov']; //odgovori na levi strani - array_push($navpicniOdgovori, $this->encodeText($stringTitleRow) ); //filanje polja z navpicnimi odgovori (po vrsticah) + if($usr_id){ + $stringTitleRow = Common::getInstance()->dataPiping($stringTitleRow, $usr_id, $loop_id); + } + $stringTitleRow = LatexDocument::encodeText($stringTitleRow); + array_push($navpicniOdgovori, $stringTitleRow ); //filanje polja z navpicnimi odgovori (po vrsticah) //ureditev polja s podatki trenutnega uporabnika ###################################################### //$sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id"); - $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' "); + $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' ".($loop_id !== null ? " AND loop_id='$loop_id'" : "")); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); - //echo "userAnswer: ".$userAnswer['text']." za vre_id: ".$rowVrednost['id']."
"; - array_push($odgovoriRespondenta, '\\textcolor{crta}{'.$userAnswer['text'].'}' ); //filanje polja z odgovori respondenta + $texUserAnswer = isset($userAnswer['text'])?$userAnswer['text']:null; + array_push($odgovoriRespondenta, '\\textcolor{crta}{'.$texUserAnswer.'}' ); //filanje polja z odgovori respondenta //ureditev polja s podatki trenutnega uporabnika - konec ############################################## - $vsota += $userAnswer['text']; //izracun sprotne vsote + $vsota += isset($userAnswer['text'])?$userAnswer['text']:null; //izracun sprotne vsote } //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - konec @@ -105,7 +111,9 @@ class VsotaLatex extends LatexSurveyElement }else{ //ce je rtf } - + /* $time_end = microtime(true); + $execution_time = ($time_end - $time_start); + echo 'Total Execution Time vsota: '.$execution_time.' sec
'; */ return $tex; } } @@ -119,14 +127,18 @@ class VsotaLatex extends LatexSurveyElement $parameterTabularL = 'rl'; //parametri za tabelo - $textVsota = $this->encodeText($spremenljivke['vsota']); + $textVsota = $spremenljivke['vsota']; + if($this->usr_id){ + $textVsota = Common::getInstance()->dataPiping($textVsota, $this->usr_id, $this->loop_id); + } + $textVsota = LatexDocument::encodeText($textVsota); if($textVsota==''){ $textVsota = $lang['srv_vsota_text']; } //zacetek tabele - $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'tabularx', 'tabular*', 0.45, 0.2); + $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'xltabular', 'tabular*', 0.45, 0.2); //argumenti za leve okvirje $textboxWidthL = 0.2; @@ -153,11 +165,10 @@ class VsotaLatex extends LatexSurveyElement } //besedilo in okvir pod crto, kjer je prikazana koncna vsota - $tabela .= $textVsota.' & '.$this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, $odgovoriRespondenta[$i-1], $textboxAllignment, $noBorders); - //$tabela .= $lang['srv_vsota_text'].' & '.$this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, $odgovoriRespondenta[$i-1], $textboxAllignment, $noBorders); + $tabela .= $textVsota.' & '.$this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, isset($odgovoriRespondenta[$i-1])?$odgovoriRespondenta[$i-1]:null, $textboxAllignment, $noBorders); //zakljucek tabele - $tabela .= $this->EndLatexTable($typeOfDocument, 'tabularx', 'tabular*'); + $tabela .= $this->EndLatexTable($typeOfDocument, 'xltabular', 'tabular*'); //izpis kode tabela - konec -- cgit v1.2.3