diff options
author | Anton Luka Šijanec <anton@sijanec.eu> | 2022-01-11 12:35:47 +0100 |
---|---|---|
committer | Anton Luka Šijanec <anton@sijanec.eu> | 2022-01-11 12:35:47 +0100 |
commit | 19985dbb8c0aa66dc4bf7905abc1148de909097d (patch) | |
tree | 2cd5a5d20d7e80fc2a51adf60d838d8a2c40999e /admin/survey/export/latexclasses/Vprasanja | |
download | 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.gz 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.bz2 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.lz 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.xz 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.zst 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.zip |
Diffstat (limited to 'admin/survey/export/latexclasses/Vprasanja')
14 files changed, 5608 insertions, 0 deletions
diff --git a/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php b/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php new file mode 100644 index 0000000..0e68338 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php @@ -0,0 +1,475 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za Besedilo
+ *
+ * Vprašanje je prisotno:
+ * tip 21 z vsemi orientacijami
+ *
+ * Autor: Patrik Pucer
+ * Datum: 07-08/2017
+ *****************************************/
+
+
+define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm
+define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip
+
+class BesediloLatex extends LatexSurveyElement
+{
+ var $internalCellHeight;
+ protected $texBigSkip = '\bigskip';
+ protected $export_subtype;
+ protected $path2SignatureImages;
+ protected $texGapBeforeTable = '\vspace*{-\baselineskip}';
+
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new BesediloLatex();
+ }
+
+ 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){
+ global $site_path;
+ $this->path2HeatmapImages = $site_path.'main/survey/uploads/';
+
+ // Ce je spremenljivka v loopu
+ $this->loop_id = $loop_id;
+ $this->export_subtype=$export_subtype;
+
+ //preveri, ce je kaj v bazi
+ $userDataPresent = $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id, $this->loop_id);
+ //echo "userDataPresent za spremenljivko".$spremenljivke['id']." je: ".$userDataPresent."</br>";
+ 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
+ global $lang;
+ global $site_url;
+ // 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");
+ $numRowsSql = mysqli_num_rows($sqlVrednosti);
+ $spremenljivkaParams = new enkaParameters($spremenljivke['params']);
+
+ $tex = '';
+ $podatekVBazi = 0;
+
+ $symbol = $this->getAnswerSymbol($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'];
+ $postavitev = $spremenljivke['orientation'];
+
+ $polozajBesedila = $spremenljivke['text_orientation']; //polozaj besedila pred text box-om
+
+ $textboxHeightOrig = ($spremenljivkaParams->get('taSize') ? $spremenljivkaParams->get('taSize') : 1);
+ $textboxHeight = ($textboxHeightOrig*0.3).'cm';
+
+ $textboxWidth = ($spremenljivkaParams->get('taWidth') ? $spremenljivkaParams->get('taWidth') : -1);
+ if($textboxWidth == -1){ //ce je vrednost -1, je default t.j. 30 oz. 0.30 sirine
+ $textboxWidth = 0.30;
+ }else{ //drugace, izracunaj sirino
+ $textboxWidth = $textboxWidth/100; //pretvorimo sirino v odstotke oz. decimalke
+ }
+ //$textboxWidth = $textboxWidth / $steviloOken; //ce je vec oken, se sirina text box-a ustrezno/proporcionalno zmanjsa
+ $textboxWidth = $textboxWidth / ($steviloOken*1.1); //ce je vec oken, se sirina text box-a ustrezno/proporcionalno zmanjsa
+ $textboxWidth = (string)$textboxWidth; //pretvorimo stevilo (decimalke) v string
+
+ /* echo "steviloOken: ".$steviloOken."</br>";
+ echo "visina iz nastavitev: ".$textboxHeightOrig."</br>";
+ echo "sirina iz nastavitev: ".$textboxWidth."</br>";
+ echo "sirina izracunana: ".$textboxWidth."</br>"; */
+ //textboxWidth se rocno povozi pod "ureditev parametrov za tabelo"
+
+ //nastavitve text box-a iz baze - konec####################
+
+ $array_others = array(); //polje za drugo, missing, ...
+ $besedila = array(); //polje, ki hrani besedila, ki pridejo poleg text box-ov
+ $besedila = [];
+ $textBoxes = array(); //polje, ki hrani latex za prazne text box-e
+ $textBoxes = [];
+ $textboxAllignment = 'c'; //poravnava textboxa z besedilom
+
+ $oznakaOdgovora = 'a';
+ $indeksZaWhile = 1;
+ $oznakaVprasanja = $this->UrediOznakoVprasanja($spremenljivke['id']); //uredi oznako vprasanja, ker ne sme biti stevilska
+
+ //ureditev parametrov za tabelo#############################
+ $parameterTabular = '';
+ if($steviloOken == 1){ //ce je samo en okvir za vnos besedila
+ if($polozajBesedila==0 || $polozajBesedila!=1){ //ce ni besedila ali besedilo ni SPREDAJ
+ $steviloStolpcevTabele = $steviloOken;
+ }elseif($polozajBesedila==1){ //ce je besedilo SPREDAJ
+ $steviloStolpcevTabele = $steviloOken*2;
+ }
+ }else{ //ce je vec okvirjev za vnos besedila, se ignorira nastavitev za besedilo SPREDAJ, saj se bo prineslo na ZGORAJ
+ if($polozajBesedila==1){
+ $polozajBesedila=3;
+ }
+ $steviloStolpcevTabele = $steviloOken;
+ }
+
+ for($i = 0; $i < $steviloStolpcevTabele; $i++){
+ if($polozajBesedila==1 && $i%2==0){ //ce je polozaj besedila SPREDAJ in je stolpec za besedilo
+ if($userDataPresent){
+ $parameterTabular .= ($export_format == 'pdf' ? 'X' : 'l'); //desna poravnava stolpca
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? 'R' : 'l'); //desna poravnava stolpca
+ }
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? 'X' : 'l'); //leva poravnava stolpca
+ }
+ }
+ //echo "stevilo oken: ".$steviloOken."</br>";
+ //echo "parametri tabele: ".$parameterTabular."</br>";
+
+ //$textboxWidth = 30 / $steviloStolpcevTabele / 100; //povozil $textboxWidth tako, da zadeva je v skladu s prejsnjimi izvozi
+ //echo "sirina 2: ".$textboxWidth."</br>";
+
+ //ureditev parametrov za tabelo - konec######################
+ //if(0){
+ //if($steviloOken == 1 && $polozajBesedila == 0){ //ce imamo samo en kos besedila brez pripisanega texta
+ //ureditev polja s podatki trenutnega uporabnika ######################################################
+ $rowVrednost = mysqli_fetch_array($sqlVrednosti);
+
+ if($spremenljivke['tip'] == 21){ //ce je ta novo besedilo, ki je v uporabi
+ $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' ";
+ if($loop_id){ //ce je prisoten se loop_id, je tega potrebno dodati sql stavku
+ $sqlUserAnswerString .= " AND loop_id=$loop_id";
+ }
+ //echo $sqlUserAnswerString."</br>";
+ }elseif($spremenljivke['tip'] == 4){ //ce je ta staro besedilo, ki ni vec v uporabi vsaj 9 let (2020)
+ //$sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ");
+ $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ";
+ if($loop_id){ //ce je prisoten se loop_id, je tega potrebno dodati sql stavku
+ $sqlUserAnswerString .= " AND loop_id=$loop_id";
+ }
+ }
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+ //echo "userAnswer: ".$userAnswer['text']."</br>";
+ //ureditev polja s podatki trenutnega uporabnika - konec ##############################################
+
+ if($userAnswer){ //ce je kaj v bazi oz. se izpisujejo odgovori respondenta
+ $podatekVBazi = 1;
+ //print_r($spremenljivke);
+
+ // imamo upload vprašanje
+ if ($spremenljivke['upload']){
+ //echo "Je upload za ".$spremenljivke['id']."</br>";
+ # imena datotek
+ if($userAnswer['text'] != ''){
+ $textUpload = (''.$site_url.'main/survey/download.php?anketa='.$anketa.'&code='.$userAnswer['text'].' ');
+ }else{
+ $tex .= '';
+ }
+ }
+ // imamo signature vprašanje
+ elseif($spremenljivke['signature'] == 1){
+ $imageName = $usr_id.'_'.$spremenljivke['id'].'_'.$anketa.'.png'; //ime slike
+ $image = PIC_SIZE."{".$this->path2HeatmapImages."".$imageName."}"; //priprave slike predefinirane dimenzije
+ $tex .= $image."".$texNewLine; //izris slike
+
+ //$tex .= $lang['srv_signature_name'].' '.$userAnswer['text'].$texNewLine;
+ $textSignature = $lang['srv_signature_name'].' '.$userAnswer['text'];
+ }
+ else{
+ //$tex .= $userAnswer['text'];
+ //$textboxHeight = 0;
+ }
+
+ if($export_data_type==2){ //ce je izpis skrcen in je prazen vprasalnik
+ $okvir = 0;
+ $izpisanoBesediloPoStarem = 0;
+ }elseif($export_data_type==1){ //ce je izpis razsirjen
+ $okvir = 1; //rabimo okvir
+ //$okvir = 0; //ne rabimo okvir
+ }
+ }else{ //ce je prazen vprasalnik
+ $okvir = 1; //rabimo okvir
+ }
+
+ //}else{
+
+ /* echo "postavitev besedila: ".$postavitev." ".$spremenljivke['id']."</br>";
+ echo "položaj besedila: ".$polozajBesedila."</br>"; */
+ if($okvir == 1){
+
+
+
+ if(($postavitev!=0)){ //ce ni vodoravno ob vprasanju, uporabi za izpis tabelo
+ if($steviloOken>1){ //ce je stevilo oken vec kot 1, zacni novo tabelo
+ //Ureditev dodajanja manjsega razmika med besedilom vprasanja in tabelo
+ $tex .= $this->texGapBeforeTable;
+ //Ureditev dodajanja manjsega razmika med besedilom vprasanja in tabelo - konec
+ #ZACETEK TABELE
+ //zacetek tabele
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1);
+ }
+
+ //echo "ni vodoravno ob vprašanju </br>";
+ //}elseif($postavitev==0&&($polozajBesedila!=0&&$polozajBesedila!=1)){ //ce je vodoravno ob vprasanju in ni dodatnega besedila ali ni besedila pred okvirjem, uporabi za izpis tabelo
+ }elseif($postavitev==0&&$polozajBesedila==3){ //
+ #ZACETEK TABELE
+ //zacetek tabele
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1);
+ //echo "je vodoravno ob vprašanju zgoraj</br>";
+ }elseif($postavitev==0&&$polozajBesedila==2){
+ //zacetek tabele
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1);
+ //echo "je vodoravno ob vprašanju spodaj</br>";
+ }elseif($postavitev==0&&$steviloOken>1){
+ //zacetek tabele
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1);
+ //echo "stevilo oken večje in ob vprašanju </br>";
+ }
+ }
+ //echo "tex koda: ".$tex."</br>";
+ // 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
+ $naslov = $this->srv_language_vrednost($rowVrednost['id']);
+ if ($naslov != '') {
+ $rowVrednost['naslov'] = $naslov;
+ }
+
+
+ //ureditev polja s podatki trenutnega uporabnika ######################################################
+ if($spremenljivke['tip'] == 21){ //ce je ta novo besedilo, ki je v uporabi
+ $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' ";
+ if($loop_id){ //ce je prisoten se loop_id, je tega potrebno dodati sql stavku
+ $sqlUserAnswerString .= " AND loop_id=$loop_id";
+ }
+ //echo "userAnswer: ".$userAnswer['text']."</br>";
+ }elseif($spremenljivke['tip'] == 4){ //ce je ta staro besedilo, ki ni vec v uporabi vsaj 9 let (2020)
+ $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ";
+ if($loop_id){ //ce je prisoten se loop_id, je tega potrebno dodati sql stavku
+ $sqlUserAnswerString .= " AND loop_id=$loop_id";
+ }
+ }
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+ //ureditev polja s podatki trenutnega uporabnika - konec ##############################################
+
+ //priprava besedila za izpis
+ $stringNaslov = $rowVrednost['naslov'];
+ $stringNaslov = Common::getInstance()->dataPiping($stringNaslov, $usr_id, $loop_id);
+ //priprava besedila za izpis - konec
+
+ //ce ni other ali missing
+ if( (int)$rowVrednost['other'] == 0 ){
+
+
+ //ureditev besedila odgovora respondenta v doloceno barvo
+ if($export_format=='pdf'){
+ $besedilo = '\\textcolor{crta}{';
+ }else{
+ $besedilo = '';
+ }
+ if($spremenljivke['signature'] == 1){
+ $besedilo .= $textSignature;
+ //}elseif($spremenljivke['upload'] == 1){
+ }elseif($spremenljivke['upload']){
+ //$besedilo .= $textUpload;
+ $besedilo .= $this->encodeText($textUpload);
+ }else{
+ //$besedilo .= $userAnswer['text'];
+ $besedilo .= $this->encodeText($userAnswer['text']);
+ }
+
+ if($export_format=='pdf'){
+ $besedilo .= '}';
+ }
+ //ureditev besedila odgovora respondenta v doloceno barvo - konec
+
+ //priprava latex kode za text box dolocene sirine in visine glede na export format z ustreznim besedilom odgovora
+
+ if($okvir == 1){ //ce rabimo okvir, izpisi
+ if($podatekVBazi && $export_format == 'pdf'){ //ce je podatek v bazi in je pdf oz. se izpisuje odgovore respondenta
+ $dataTextBox = $besedilo; //izpis besedila brez okvirja
+ }else{
+ //echo "Pos: ".$postavitev."</br>";
+ if(($postavitev!=0)){ //ce ni vodoravno ob vprasanju
+ $tex .= ' \\\\ '; //skoci v novo vrstico
+ }
+ $dataTextBox = $this->LatexTextBox($export_format, $textboxHeight, $textboxWidth, $besedilo, $textboxAllignment, 0); //izpisi okvir
+ }
+ }else{
+ $dataTextBox = $besedilo; //izpis besedila brez okvirja
+ }
+
+ array_push($textBoxes, $dataTextBox); //filanje polja s praznimi text box-i
+ array_push($besedila, $this->encodeText($stringNaslov)); //filanje polja z besedili
+
+ if($okvir == 0){
+ if($spremenljivke['tip'] == 21){ //ce je ta novo besedilo, ki je v uporabi
+ if($indeksZaWhile!=1){
+ $tex .= ' \\\\ '; //skoci v novo vrstico
+ }
+
+ //izpis besedila
+ if($polozajBesedila!=0){ //ce je prisotno dodatno besedilo ob okvirju
+ $tex .= $this->encodeText($stringNaslov)." ";
+ }
+ $tex .= ' '.$dataTextBox;
+ }elseif($spremenljivke['tip'] == 4){ //ce je ta staro besedilo, ki ni vec v uporabi vsaj 9 let (2020)
+ if($izpisanoBesediloPoStarem == 0){
+ $tex .= $dataTextBox;
+ $izpisanoBesediloPoStarem = 1;
+ }
+ }
+
+ }elseif($okvir == 1){
+ //if($polozajBesedila==1){ //ce je polozaj besedila SPREDAJ
+ if($polozajBesedila==1 && $steviloOken==1){ //ce je polozaj besedila SPREDAJ in je samo 1 okvir za vnos besedila
+ if($indeksZaWhile!=1){
+ $tex .= ' '; //skoci v nov stolpec
+ }
+
+ //izpis besedila
+ $tex .= $this->encodeText($stringNaslov)." ";
+
+ //izpis text box-a dolocene sirine in visine z besedilom odgovora
+ $tex .= ' '.$dataTextBox;
+
+ }
+ }
+ }
+ else { //drugace, ce imamo missinge ali podobne, jih zabelezi v polju
+ // imamo polje drugo - ne vem, zavrnil...
+ /* $array_others[$rowVrednost['id']] = array(
+ 'naslov'=>$rowVrednost['naslov'],
+ 'vrstni_red'=>$rowVrednost['vrstni_red'],
+ 'value'=>$text[$rowVrednost['vrstni_red']],
+ ); */
+ $array_others[$rowVrednost['id']] = array(
+ 'naslov'=>$this->encodeText($stringNaslov),
+ 'vrstni_red'=>$rowVrednost['vrstni_red'],
+ 'value'=>$text[$rowVrednost['vrstni_red']],
+ );
+
+ }
+ $oznakaOdgovora++;
+ $indeksZaWhile++;
+ }
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - konec
+
+ if($okvir == 1){
+ //ureditev polozaja besedila poleg text box-a ZGORAJ
+ if($polozajBesedila!=0 && $polozajBesedila==3){ //ce je prisotno besedilo in ni pod text box-om
+ $tex .= $this->izrisVrsticePoStolpcih($steviloStolpcevTabele, $besedila);
+ $tex .= $texNewLine; //dodaj po izpisu besedil še skok v novo vrstico
+ }
+ //ureditev polozaja besedila poleg text box-a ZGORAJ - konec
+
+ if($polozajBesedila!=1){ //ce ni polozaj besedila SPREDAJ
+ //izpis praznih text box-ov dolocene sirine in visine
+ $tex .= $this->izrisVrsticePoStolpcih($steviloStolpcevTabele, $textBoxes);
+ //izpis praznih text box-ov dolocene sirine in visine - konec
+ }
+
+ //ureditev polozaja besedila poleg text box-a SPODAJ
+ if($polozajBesedila!=0 && $polozajBesedila==2){ //ce je prisotno besedilo in ni pod text box-om
+ $tex .= $texNewLine; //dodaj po izpisu besedil še skok v novo vrstico
+ $tex .= $this->izrisVrsticePoStolpcih($steviloStolpcevTabele, $besedila);
+ }
+ //ureditev polozaja besedila poleg text box-a SPODAJ
+ }
+
+
+ if($okvir == 1){
+ if($postavitev!=0){
+ if($steviloOken>1){ //ce je stevilo oken vec kot 1, zakljuci tabelo
+ //zakljucek tabele
+ $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular');
+ #KONEC TABELE
+ }
+ }elseif($postavitev==0&&$polozajBesedila==3){
+ //zakljucek tabele
+ $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular');
+ #KONEC TABELE
+ }elseif($postavitev==0&&$polozajBesedila==2){
+ //zakljucek tabele
+ $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular');
+ #KONEC TABELE
+ }elseif($postavitev==0&&$steviloOken>1){
+ //zakljucek tabele
+ $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular');
+ #KONEC TABELE
+ }
+ }
+ //}
+
+ //$tex .= ' \vspace{0.3cm} ';
+
+ // Izris polj drugo - ne vem...
+ if (count($array_others) > 0) {
+ $tex .= $texNewLine;
+ foreach ($array_others AS $oKey => $other) {
+ $tex .= $symbol.' '.$other['naslov'].' ';
+ if($postavitev!=0){
+ $tex .= $texNewLine;
+ }
+ }
+ }
+
+
+ if(($postavitev==0)){ //ce je vodoravno ob vprasanju
+ $tex .= ' \par } '; //zakljuci odstavek
+ }
+
+ //echo "izpisani podatek: ".$podatekVBazi."</br>";
+ //if($podatekVBazi==1&&$export_data_type==2){ //ce je podatek v bazi in je izpis skrcen
+ if($podatekVBazi==1){ //ce je podatek v bazi
+ if($export_data_type==2 || $steviloOken == 1){ //ce je izpis skrcen ali je stevilo oken 1
+ $tex .= " \ "; //da ni tezave z "there is no line here to end"
+ $tex .= $texNewLine;
+ $tex .= $texNewLine;
+ }
+ }else{
+ $tex .= $this->texBigSkip;
+ $tex .= $this->texBigSkip." \ ";
+ $tex .= $texNewLine." ";
+ }
+
+
+ if($export_format == 'pdf'){ //ce je pdf
+ //$tex .= '\\end{absolutelynopagebreak}'; //zakljucimo environment, da med vprasanji ne bo prelomov strani
+ //echo "tex koda: ".$tex." in indeks $indeksZaWhile</br>";
+ }else{ //ce je rtf
+
+ }
+
+ }
+ //echo "tex koda: ".$tex." in indeks $indeksZaWhile</br>";
+ return $tex;
+ }
+
+ #funkcija, ki skrbi za izris vrstice tabele po stolpcih
+ function izrisVrsticePoStolpcih($steviloStolpcevTabele=null, $array=[]){
+ $tex = '';
+ for($i=0;$i<$steviloStolpcevTabele;$i++){
+ if($i!=0){ //ce ni prvi stolpec
+ $tex .= ' & '; //dodaj oznako za prehod v nov stolpec
+ //$tex .= ' \\\\ '; //dodaj oznako za prehod v novo vrstico
+ }
+ $tex .= $array[$i];
+ }
+ return $tex;
+ }
+
+
+ #funkcija, ki skrbi za izris - konec
+
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/DatumLatex.php b/admin/survey/export/latexclasses/Vprasanja/DatumLatex.php new file mode 100644 index 0000000..7110873 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/DatumLatex.php @@ -0,0 +1,140 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za datum
+ *
+ * Vprašanje je prisotno:
+ * tip 8
+ *
+ * Autor: Patrik Pucer
+ * Datum: 08/2017
+ *****************************************/
+
+
+class DatumLatex extends LatexSurveyElement
+{
+ var $internalCellHeight;
+ protected $texBigSkip = '\bigskip ';
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new DatumLatex();
+ }
+
+
+ public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype='', $preveriSpremenljivko=null, $loop_id=null){
+ // 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, $this->loop_id);
+ //echo "userDataPresent za spremenljivko".$spremenljivke['id']." je: ".$userDataPresent."</br>";
+
+ 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
+ global $lang;
+
+ // 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");
+ $numRowsSql = mysqli_num_rows($sqlVrednosti);
+ $spremenljivkaParams = new enkaParameters($spremenljivke['params']);
+
+ $array_others = array(); //polje za drugo, missing, ...
+
+ $tex = '';
+ $textboxWidth = '0.15'; //sirina okvirja z odgovorom
+ $textboxHeight = '0.3cm'; //visina okvirja z odgovorom
+ $noBorders = 0;
+
+ //priprava latex kode za text box dolocene sirine in visine glede na export format brez besedila
+ $textboxAllignment = 'c';
+ //ureditev polja s podatki trenutnega uporabnika ######################################################
+ $rowVrednost = mysqli_fetch_array($sqlVrednosti);
+ //$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;
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+ //echo "userAnswer: ".$userAnswer['text']."</br>";
+ //ureditev polja s podatki trenutnega uporabnika - konec ##############################################
+
+ //ureditev besedila odgovora respondenta v doloceno barvo
+ $besedilo = '\\textcolor{crta}{';
+ $besedilo .= $userAnswer['text'];
+ $besedilo .= '}';
+ //ureditev besedila odgovora respondenta v doloceno barvo - konec
+
+ if($userAnswer['text']==''){ //ce ni izpisa odgovorov respondentov, priprava izpis s tabelo
+ $answerTextBox = $this->LatexTextBox($export_format, $textboxHeight, $textboxWidth, $besedilo, $textboxAllignment, $noBorders);
+
+ //parametri tabele
+ //$parameterTabular = 'l';
+ if($export_format == 'pdf'){ //ce je pdf
+ $parameterTabular = 'X';
+ }else{ //ce je rtf
+ $parameterTabular = 'l';
+ }
+
+ //IZRIS
+ #ZACETEK TABELE
+ //zacetek tabele
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1);
+
+ $tex .= $answerTextBox; //izris znotraj tabele
+
+ //zakljucek tabele
+ $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular');
+ #KONEC TABELE
+ $tex .= $this->texBigSkip;
+ }else{ //ce je izpis odgovorov respondentov
+ $tex .= $this->texNewLine;
+ $tex .= $besedilo;
+ //$tex .= " \ "; //da ni tezave z "there is no line here to end"
+ $tex .= $texNewLine;
+ $tex .= $texNewLine;
+ }
+
+ //priprava missing-ov
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti
+ while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
+ if((int)$rowVrednost['other']!=0){ //ce so missing ali drugo
+ $array_others[$rowVrednost['id']] = array(
+ 'naslov'=>$rowVrednost['naslov'],
+ 'vrstni_red'=>$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
+ //priprava missing-ov - konec
+
+ // Izris polj drugo - ne vem...
+ if (count($array_others) > 0) {
+ $tex .= ' \vspace{0.3cm} '; //prostor med okvirjem in missing
+ $tex .= $texNewLine;
+ foreach ($array_others AS $oKey => $other) {
+ $tex .= $symbol.' '.$other['naslov'].' ';
+ $tex .= $texNewLine;
+ }
+ $tex .= $texNewLine;
+ }
+
+ //IZRIS - KONEC
+
+ return $tex;
+ }
+ }
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/GridMultipleLatex.php b/admin/survey/export/latexclasses/Vprasanja/GridMultipleLatex.php new file mode 100644 index 0000000..3b67102 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/GridMultipleLatex.php @@ -0,0 +1,559 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za kombinirana tabela oz. GridMultiple
+ *
+ * Vprašanje je prisotno:
+ * tip 24
+ *
+ * Autor: Patrik Pucer
+ * Datum: 09/2017
+ *****************************************/
+
+
+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);
+
+class GridMultipleLatex extends LatexSurveyElement
+{
+ var $internalCellHeight;
+
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $texBigSkip = '\bigskip ';
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ 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){
+ // Ce je spremenljivka v loopu
+ $this->loop_id = $loop_id;
+ //echo "<b>tip izpisa: $export_data_type</b> </br>"; //$export_data_type: 1 - Razsirjen, 2 - Skrcen
+ $presirokaTabela = 0;
+ //preveri, ce je kaj v bazi
+ $questionText=0;
+ $userDataPresent=0;
+ $izpisOdgovorov = 0;
+ 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."</br>";
+ }
+ $izpisOdgovorov = 1;
+ }
+ //echo "Usr_id: ".$usr_id.'</br>';
+ //echo "Stevilo odgovorov: ".count($userAnswer).'</br>';
+
+
+ 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
+ global $lang;
+
+ // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta
+ //echo "SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' AND hidden='0' ORDER BY vrstni_red"."</br>";
+ $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' AND hidden='0' ORDER BY vrstni_red");
+ $numRowsSql = mysqli_num_rows($sqlVrednosti); //za filanje navpicnih odgovorov
+ //echo "SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red";
+ //novo za kombinirano tabelo
+ $sqlStVrednosti = sisplet_query("SELECT count(*) FROM srv_grid g, srv_grid_multiple m WHERE m.spr_id=g.spr_id AND m.parent='".$spremenljivke['id']."'");
+ $rowStVrednost = mysqli_fetch_array($sqlStVrednosti); //stevilo stolpcev
+ $numColSql = $rowStVrednost['count(*)'] + 1; //stevilo vseh stolpcev upostevajoc prvega z navpicnimi odgovori
+
+ $sqlMultipleSprId = sisplet_query("SELECT spr_id FROM srv_grid_multiple WHERE parent='".$spremenljivke['id']."' ORDER BY vrstni_red"); //poizvedba spr_id dodanih moznosti v kombinirani tabeli
+ $multipleSprId = array(); //polje za shranjevanje spr_id dodanih moznosti v kombinirano tabelo
+ while ($rowMultipleSprId = mysqli_fetch_array($sqlMultipleSprId)) {
+ $multipleSprId[] = $rowMultipleSprId['spr_id'];
+ }
+
+ //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");
+ //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, ',').")");
+ //novo za kombinirano tabelo - konec
+
+ $spremenljivkaParams = new enkaParameters($spremenljivke['params']);
+ $isCheckBox = 0;
+ $enota = $spremenljivke['enota'];
+ $enotaNiNula = $enotaNiNulaTmp = 0;
+ $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
+
+ $tex = '';
+ $navpicniOdgovori = array(); //shranjuje odgovore po vrsticah
+ $vodoravniOdgovori = array(); //shranjuje odgovore po stolpcih
+ $vodoravniOdgovoriVsi = array();
+ $vodoravniOdgovoriTip = array();
+ $vodoravniOdgovoriSprId = array();
+ $vodoravniOdgovoriEnota = array();
+ $podNaslovi = array();
+ $missingOdgovori = array();
+
+ $texNewLineAfterTable = $texNewLine." ".$texNewLine." ".$texNewLine;
+
+ $oznakaVprasanja = $this->UrediOznakoVprasanja($spremenljivke['id']); //uredi oznako vprasanja, ker ne sme biti stevilska
+
+
+ //ce je prisoten id uporabnika - ureditev belezenja vnesenega odgovora pod Drugo:
+ 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");
+ 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." ";
+ $sqlMultipleBesediloDrugo = sisplet_query($sqlStavekMultipleBesediloDrugo);
+ while ($rowsqlMultipleBesediloDrugo = mysqli_fetch_array($sqlMultipleBesediloDrugo)) {
+ $multipleBesediloDrugo[] = $rowsqlMultipleBesediloDrugo['text'];
+ }
+ }
+
+ $indeksBesediloDrugo = 0; //definiranje indeksa za izpis vnesenega besedila v Drugo:
+ }
+ //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'] ) ));
+ # po potrebi prevedemo naslov
+ $naslov = $this->srv_language_vrednost($rowVrednost['id']);
+ if ($naslov != '') {
+ //$rowVrednost['naslov'] = $naslov;
+ $stringTitleRow = $naslov;
+ }
+
+ $besediloDrugo = '';
+
+ //ce je drugo vnesen kot odgovor in je prisoten id uporabnika
+ if($rowVrednost['other'] && $usr_id){
+ //zabelezi besedilo, ki je trenuten uporabnik za trenuten odgovor zapisal pod Drugo:
+ $besediloDrugo = $multipleBesediloDrugo[$indeksBesediloDrugo];
+ $this->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)
+ }
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - navpicni odgovori - konec
+
+
+ $sqlStolpciVrednosti = sisplet_query("SELECT g.spr_id, g.naslov, g.variable FROM srv_grid g, srv_grid_multiple m WHERE m.parent='".$spremenljivke['id']."' AND g.spr_id=m.spr_id");
+
+ $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;
+
+ //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)
+
+ $rowMultiple = mysqli_fetch_array($sqlMultiple);
+ 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
+
+ //$sprIdRoletSeznamov = $rowMultiple['spr_id'];
+ if(($rowMultiple['enota'] == 2 || $rowMultiple['enota'] == 6)){
+ $sprIdRoletSeznamov = $rowMultiple['spr_id'];
+ }
+
+ /* echo "enota ".$rowMultiple['enota']."</br>";
+ echo "spr ".$rowMultiple['spr_id']."</br>"; */
+ //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 </br>";
+ }
+
+ $sprIdRoletSeznamovTmp = $sprIdRoletSeznamov;
+ }
+ //pregled vseh odgovorov po stolpcih po $sqlStolpciVrednosti - vodoravni odgovori - konec
+
+
+ $vodoravniOdgovoriVsi = $vodoravniOdgovori;
+ /* echo "stevilo skupin rolet/seznamov ".($steviloSkupinRoletSeznamov)." </br>";
+ echo "stevilo odgovorov v roletah ali seznamu ".($steviloOdgovorovRoletSeznamov)." </br>"; */
+
+/* echo "vodoravniOdgovoriSprId: ";
+ print_r($vodoravniOdgovoriSprId);
+ echo "</br>";
+ echo "Enote: ";
+ print_r($vodoravniOdgovoriEnota);
+ echo "</br>"; */
+
+ //ureditev polja z nadnaslovi kombinirane tabele
+ while ($rowMultiplePodNaslovi = mysqli_fetch_array($sqlMultiplePodNaslovi)){
+ array_push($podNaslovi, $this->encodeText($rowMultiplePodNaslovi['naslov']));
+ }
+ //ureditev polja z nadnaslovi kombinirane tabele - konec
+
+ //za ureditev presirokih tabele
+ //$steviloPodstolpcev = $numColSql;
+ $steviloPodatkovZaIzpis = $numColSql-1;
+ $steviloPodstolpcev = $numColSql - $steviloOdgovorovRoletSeznamov + $steviloSkupinRoletSeznamov;
+ $mejaZaVelikeTabele = 7;
+ $velikostTabele = $steviloPodstolpcev-1;
+ //echo "<b>velikost tabele: </b>".($velikostTabele)." </br>";
+ 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</br>";
+
+ $presirokaTabela = 1;
+ $steviloTabelCelih = intval($velikostTabele / $mejaZaVelikeTabele);
+ $steviloTabelMod = $velikostTabele % $mejaZaVelikeTabele;
+ $delnaTabela = 0;
+ if($steviloTabelMod != 0){
+ $delnaTabela = 1;
+ }
+ $steviloTabel = $steviloTabelCelih + $delnaTabela;
+
+ //echo "stevilo podtabel celih ".($steviloTabelCelih)." </br>";
+ //echo "stevilo podtabel mod ".($steviloTabelMod)." </br>";
+ //echo "stevilo podtabel za izpis: ".($steviloTabel)." </br>";
+ //echo "stevilo podatkov za izpis: ".($steviloPodatkovZaIzpis)." </br>";
+
+ }else{
+ $presirokaTabela = 0;
+ }
+ //za ureditev presirokih tabele - konec
+
+
+ if($presirokaTabela == 0){ //ce tabela ni presiroka #################################################
+
+
+ //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########
+ $parameterTabular = '';
+ $parameterTabular .= ($export_format == 'pdf' ? 'A' : 'l'); //leva poravnava stolpca fiksne sirine ZA PRVI STOLPEC (parameteri tabele)
+ $indeksParameterTabular=1;
+
+ $indeksPodStolpci=0;
+ $steviloPodStolpcev = array();
+
+ //za preureditev polj, ko imamo seznam ali roleto
+ $indeksVodoravniOdgovori = 0;
+ $vodoravniOdgovoriPrva = $vodoravniOdgovori; //hrani preurejene vodoravne odgovore za prvo vrstico
+ $splice=0;
+ $toDelete = array(); //polje, ki hrani, katere dele polja je potrebno odstraniti, ce imamo seznam ali roleto
+ //za preureditev polj, ko imamo seznam ali roleto - konec
+
+ $valueTmp = null;
+
+ foreach($vodoravniOdgovoriSprId as $value){ //parametri tabele ZA OSTALE STOLPCE+pridobitev stevila stolpcev+priprava polj in spremenljivk ###############
+ //echo $vodoravniOdgovoriEnota[$indeksParameterTabular-1]."</br>";
+ //echo "value: ".$value."</br>";
+ //echo "valueTmp: ".$valueTmp."</br>";
+ //echo "indeksParameterTabular: ".$indeksParameterTabular."</br>";
+ //echo "Stevilo vodoravniOdgovoriSprId: ".count($vodoravniOdgovoriSprId)."</br>";
+
+ 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
+ $parameterTabular .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava stolpca
+
+ $steviloPodStolpcev[$indeksPodStolpci] = 0;
+ $steviloPodStolpcev[$indeksPodStolpci]++;
+ }else{ //ce so ostali podstolpci
+ //if($value!=$valueTmp&&$indeksParameterTabular!=count($vodoravniOdgovoriSprId)){
+ if($value!=$valueTmp){
+ $parameterTabular .= ($export_format == 'pdf' ? '|C' : '|c'); //sredinska poravnava stolpca z locilom
+ //echo "Sprememba </br>";
+ $indeksPodStolpci++;
+ $steviloPodStolpcev[$indeksPodStolpci] = 0;
+ $steviloPodStolpcev[$indeksPodStolpci]++;
+ }elseif($indeksParameterTabular==count($vodoravniOdgovoriSprId)){
+ $parameterTabular .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava stolpca
+
+ $steviloPodStolpcev[$indeksPodStolpci]++;
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava stolpca
+
+ $steviloPodStolpcev[$indeksPodStolpci]++;
+ }
+ }
+ }
+
+ if(($vodoravniOdgovoriEnota[$indeksParameterTabular-1]!=0&&$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 "tabela ni presiroka </br>";
+ while($enotaNiNulaTmp==0){ //omejimo zanko le na en prehod
+ if($indeksParameterTabular==1){ //ce je prvi podstolpec
+ $parameterTabular .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava stolpca
+
+ $steviloPodStolpcev[$indeksPodStolpci] = 0;
+ $steviloPodStolpcev[$indeksPodStolpci]++;
+
+ if($splice==0){
+ array_splice($vodoravniOdgovoriPrva, $indeksVodoravniOdgovori, 1, ''); //na mesto vodoravnega odgovora dodaj prazen tekst
+ $splice=1;
+ }
+ }else{ //ce so ostali podstolpci
+ if($value!=$valueTmp){ //ce je sprememba spremenljivke
+ $parameterTabular .= ($export_format == 'pdf' ? '|C' : '|c'); //sredinska poravnava stolpca z locilom
+
+ //echo "</br> sprememba spremenljivke iz $valueTmp v $value ".'</br>';
+
+ $indeksPodStolpci++;
+ $steviloPodStolpcev[$indeksPodStolpci] = 0;
+ $steviloPodStolpcev[$indeksPodStolpci]++;
+
+ array_splice($vodoravniOdgovoriPrva, $indeksVodoravniOdgovori, 1, ''); //na mesto vodoravnega odgovora dodaj prazen tekst
+ $splice=1;
+ }else{ //ce ni spremembe spremenljivke
+ array_push($toDelete, $indeksVodoravniOdgovori); //zabelezi indeks elementa polja, ki ga je potrebno izbrisati, da bo stevilo stolpec ustrezno
+ }
+ }
+ $enotaNiNulaTmp = 1;
+ }
+ $enotaNiNulaTmp = 0;
+ $enotaNiNula = 1;
+ } //ce je roleta ali izberite iz seznama in je izpis odgovorov - konec#####################################
+
+ $valueTmp = $value;
+ $indeksParameterTabular++;
+ $indeksVodoravniOdgovori++;
+ } //parametri tabele ZA OSTALE STOLPCE+pridobitev stevila stolpcev+priprava polj in spremenljivk - konec ##########################################
+
+ //echo "Parametri tabel: ".$parameterTabular."</br>";
+
+ //brisanje odvecnih elementov polja in ponovna indeksacija polja
+ foreach($toDelete as $value){
+ unset($vodoravniOdgovoriPrva[$value]); //brisanje ustreznih elementov polja
+ unset($vodoravniOdgovoriEnota[$value]);
+ unset($vodoravniOdgovoriTip[$value]);
+ }
+ $vodoravniOdgovoriPrva = array_values($vodoravniOdgovoriPrva); // reindeksiranje polja za naslovno vrstico tabele
+ $vodoravniOdgovoriEnota = array_values($vodoravniOdgovoriEnota); // reindeksiranje polja za enote vprasanja
+ $vodoravniOdgovoriTip = array_values($vodoravniOdgovoriTip); // reindeksiranje polja za tip vprasanja
+ //brisanje odvecnih elementov polja in ponovna indeksacija polja - konec
+
+ //dodatna priprava polj in spremenljivk, ce enota je razlicna od nula oz. izris ni klasicna tabela #####################################
+
+ if($enotaNiNula==1&&$izpisOdgovorov){ //ce ni klasicna tabela IN je izpis odgovorov
+ $steviloPravihStolpcev = 0;
+ foreach($steviloPodStolpcev as $value){
+ $steviloPravihStolpcev = $steviloPravihStolpcev + $value;
+ }
+
+ $numColSqlPrva = $steviloPravihStolpcev+1; //stevilo stolpcev z vodoravnimi odgovori+stolpec z navpicnimi odgovori
+
+ }else{
+ $numColSqlPrva = $numColSql;
+ }
+ //echo "stevilo stolpcev prva vrstica $numColSqlPrva </br>";
+ //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
+
+ #nadnaslovi nad prvo vrstico #########################################################
+ if($spremenljivke['grid_subtitle1']==1){ //ce so podnaslovi
+ for($n=0;$n<count($podNaslovi);$n++){
+ //echo $podNaslovi[$n].'</br>';
+ //$tex .= ' & \multicolumn{'.$steviloPodStolpcev[$n].'}{c}{'.$podNaslovi[$n].'}';
+ $tex .= ' & \multicolumn{'.$steviloPodStolpcev[$n].'}{C}{'.$podNaslovi[$n].'}';
+ }
+ }
+ $tex .= $texNewLine;
+ #nadnaslovi nad prvo vrstico - konec #########################################################
+
+ #prva vrstica tabele ####################################################################################
+ //izris prve vrstice tabele
+ $tex .= $this->LatexPrvaVrsticaMultiGrid($numColSqlPrva, $enota, $trak, $customColumnLabelOption, $spremenljivke, $vodoravniOdgovoriPrva, 0);
+ #prva vrstica tabele - konec ##################################################################################
+
+ $tex .= $texNewLine;
+
+ //print_r($userAnswer);
+
+ #izris vrstic tabele
+ $fillablePdf = 0;
+ //echo "stevilo stolpcev tabele $numColSql </br>";
+ $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);
+ #izris vrstic tabele - konec
+
+ $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); //zakljucek tabele
+ //IZRIS TABELE - KONEC
+
+ $tex .= $this->texBigSkip;
+ $tex .= $this->texBigSkip;
+
+ return $tex;
+
+ }elseif($presirokaTabela == 1){ //ce je tabela presiroka #################################################
+
+
+ //za vsako spremenljivko oz. podtabelo
+ foreach($multipleSprId AS $sprId){
+ //echo "$sprId</br>";
+
+ #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
+ $spremenljivke['id'] = $sprId;
+ $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."</br>";
+ }
+ $izpisOdgovorov = 1;
+ }
+ //echo "podatek je: ".$userDataPresent."</br>";
+ /* print_r($userAnswer);
+ echo "</br>"; */
+ #pobiranje podatkov o odgovorih respondenta za vsako podtabelo posebej - konec
+
+ $vodoravniOdgovoriTip = array();
+ $vodoravniOdgovoriSprId = array();
+ $vodoravniOdgovoriEnota = array();
+ $vodoravniOdgovori = array();
+ $podNaslovi = array();
+ //poizvedba vseh potrebnih podatkov dodanih moznosti v podtabeli kombinirane tabele
+ $sqlStavekPodTabele = "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 = ".$sprId." ORDER BY m.vrstni_red, g.vrstni_red";
+ //echo "$sqlStavekPodTabele</br>";
+ $sqlPodTabele = sisplet_query($sqlStavekPodTabele);
+
+ while($rowMultiple = mysqli_fetch_array($sqlPodTabele)){
+ 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
+
+ //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)
+
+ }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']."</br>";
+ }
+
+ //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']));
+ }
+ //ureditev polja z nadnaslovi kombinirane tabele - konec
+
+
+ $enota = $vodoravniOdgovoriEnota[0];
+ /* print_r($vodoravniOdgovoriTip);
+ echo "</br>";
+ print_r($vodoravniOdgovoriSprId);
+ echo "</br>";*/
+ /* print_r($vodoravniOdgovoriEnota);
+ echo "</br>"; */
+ /* print_r($vodoravniOdgovori);
+ echo "</br>"; */
+
+ //ureditev parametrov tabele
+ /* echo "enota:".$vodoravniOdgovoriEnota[0]."</br>";
+ echo "izpisOdgovorov:".$izpisOdgovorov."</br>";
+ echo "tip:".$vodoravniOdgovoriTip[0]."</br>";
+ echo "export_data_type:".$export_data_type."</br>"; */
+ //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</br>";
+
+ /* 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</br>";
+
+ $parameterTabular = '';
+ $parameterTabular .= ($export_format == 'pdf' ? 'A' : 'l'); //leva poravnava stolpca fiksne sirine ZA PRVI STOLPEC (parameteri tabele)
+
+ for($i=1; $i<$steviloStolpcev;$i++){
+ $parameterTabular .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava stolpca
+ }
+ //echo "parametri tabele: $parameterTabular </br>";
+ //ureditev parametrov tabele - konec
+
+
+ //IZRIS TABELE
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); //zacetek tabele
+
+ #nadnaslovi nad prvo vrstico #########################################################
+ $steviloPodStolpcev = $steviloStolpcev - 1;
+ if($spremenljivke['grid_subtitle1']==1){ //ce so podnaslovi
+ for($n=0;$n<count($podNaslovi);$n++){
+ //echo "podnaslov za sprem ".$vodoravniOdgovoriSprId[0]." je: ".$podNaslovi[$n]." število stolpcev pa $steviloPodStolpcev</br>";
+ //$tex .= ' & \multicolumn{'.$steviloPodStolpcev.'}{c}{'.$podNaslovi[$n].'}';
+ $tex .= ' & \multicolumn{'.$steviloPodStolpcev.'}{C}{'.$podNaslovi[$n].'}';
+ }
+ }
+ $tex .= $texNewLine;
+ #nadnaslovi nad prvo vrstico - konec #########################################################
+
+ #prva vrstica tabele ####################################################################################
+ //izris prve vrstice tabele
+ $tex .= $this->LatexPrvaVrsticaMultiGrid($steviloStolpcev, $enota, $trak, $customColumnLabelOption, $spremenljivke, $vodoravniOdgovori, 0);
+ #prva vrstica tabele - konec ##################################################################################
+
+ $tex .= $texNewLine;
+
+ #izris vrstic tabele
+ $fillablePdf = 0;
+ //echo "stevilo stolpcev tabele $steviloStolpcev </br>";
+ $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);
+ #izris vrstic tabele - konec
+
+ $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular'); //zakljucek tabele
+ //IZRIS TABELE - KONEC
+
+ $tex .= $this->texBigSkip;
+ $tex .= $this->texBigSkip;
+
+
+ }
+
+ return $tex;
+ }
+ }
+ }
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/HeatmapLatex.php b/admin/survey/export/latexclasses/Vprasanja/HeatmapLatex.php new file mode 100644 index 0000000..94e86fb --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/HeatmapLatex.php @@ -0,0 +1,337 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za Heatmap
+ *
+ * Vprašanje je prisotno:
+ * tip 27
+ *
+ * Autor: Patrik Pucer
+ * 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);
+
+class HeatmapLatex extends LatexSurveyElement
+{
+ protected $polyX = array();
+ protected $polyY = array();
+ protected $path2Images;
+
+ public function __construct()
+ {
+ global $site_path;
+ $this->path2Images = $site_path.'uploadi/editor/';
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $texBigSkip = '\bigskip';
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new HeatmapLatex();
+ }
+
+
+ public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype='', $preveriSpremenljivko=null, $loop_id=null){
+ // 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);
+ //echo "userDataPresent za spremenljivko".$spremenljivke['id']." je: ".$userDataPresent."</br>";
+
+ 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
+ global $lang;
+
+ // 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");
+ $numRowsSql = mysqli_num_rows($sqlVrednosti);
+
+ $tex = '';
+ $point = array();
+ //nastavitve iz baze ##########################
+ $spremenljivkaParams = new enkaParameters($spremenljivke['params']);
+ //nastavitve iz baze - konec ####################
+
+ $navpicniOdgovori = array();
+ $navpicniOdgovori = [];
+ $obmocjaNaSliki = array();
+ $coordsObmocijNaSliki = array();
+
+ $texNewLineAfterTable = $texNewLine." ".$texNewLine." ".$texNewLine;
+
+ //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)
+ }
+ //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."</br>");
+ $path2Images = $this->path2Images;
+
+ $imageNameTest = $path2Images.$imageName.'.png'; //za preveriti, ali obstaja slikovna datoteka na strezniku
+
+ //error_log("iz heatmap: ".$imageNameTest);
+ //echo("iz heatmap: ".$imageNameTest."</br>");
+
+ $imageName = $path2Images.$imageName;
+
+ if(filesize($imageNameTest) > 0){
+ $image = PIC_SIZE."{".$imageName."}"; //priprave slike predefinirane dimenzije
+ }else{
+ //$image = 'ni slike';
+ $image = $lang['srv_pc_unavailable'];
+ }
+
+ $tex .= $image."".$texNewLine; //izris slike
+
+ //iz baze poberi imena obmocij
+ $sqlHotSpotRegions = sisplet_query("SELECT region_name, region_coords FROM srv_hotspot_regions WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red");
+
+ //izris imen obmocij po $sqlHotSpotRegions
+ $whileIndeks = 0;
+ while ($rowHotSpotRegions = mysqli_fetch_assoc($sqlHotSpotRegions)){
+ 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;
+ }
+ $whileIndeks++;
+ }
+
+ $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;
+ } */
+
+
+ if($userDataPresent){ //ce je kaj v bazi, je potrebno izrisati tabelo s koordinatami in naslovom
+
+ #pobiranje parametrov heatmap
+ $sql = sisplet_query("SELECT params FROM srv_spremenljivka WHERE id = '".$spremenljivke['id']."'");
+ $row = mysqli_fetch_assoc($sql);
+ $spremenljivkaParams = new enkaParameters($row['params']);
+ //html slike
+ $hotspot_image = ($spremenljivkaParams->get('hotspot_image') ? $spremenljivkaParams->get('hotspot_image') : "");
+ //stevilo dovoljenih klikov
+ $heatmap_num_clicks = ($spremenljivkaParams->get('heatmap_num_clicks') ? $spremenljivkaParams->get('heatmap_num_clicks') : 1);
+ #pobiranje parametrov heatmap - konec
+
+ $textboxWidthOdgovori = '1'; //sirina okvirja z odgovorom
+ $textboxHeightOdgovori = 0; //visina okvirja z odgovorom
+ $noBordersOdgovori = 0;
+ $parameterTabular = 'l';
+ //za ureditev stevila tock v izbranih obmocjih
+ $dataPointValue = array();
+ $data = array();
+ $numOfAnswers=count($this->userAnswer);
+ //za ureditev stevila tock v izbranih obmocjih - konec
+ //echo "stevilo odgovorov: ".count($this->userAnswer)."</br>";
+
+ #sporocilo o stevilu moznih klikov
+ $tex .= $lang['srv_vprasanje_heatmap_num_clicks'].": ";
+ //$tex .= $lang['srv_vprasanje_heatmap_num_clicks'].": ".$texNewLine;
+ if($export_format == 'pdf'){
+ $tex .= '\\textcolor{crta}{'.$numOfAnswers.'/'.$heatmap_num_clicks.'}'.$texNewLine;
+ }else if($export_format == 'rtf'){
+ $tex .= ' '.$numOfAnswers.'/'.$heatmap_num_clicks.' '.$texNewLine.$texNewLine;
+ }
+
+
+ #sporocilo o stevilu moznih klikov - konec
+
+ #sporocilo o koordinatah klikov
+ $tex .= $lang['srv_analiza_heatmap_clicked_coords'].": ";
+
+
+ for($i=0; $i<count($this->userAnswer);$i++){ //sprehodi se po tockah
+
+ //echo "rowAnswers: ".$this->userAnswer[$i]['address'].' za odgovore tip '.$spremenljivke['tip'].' id '.$spremenljivke['id'].' usr '.$usr_id.'</br>';
+ #priprava odgovora respondenta #######################################################################################
+ if($export_format == 'pdf'){
+ $answer = "\\textcolor{crta}{".$this->userAnswer[$i]['lat'].", ".$this->userAnswer[$i]['lng']."}";
+ }else if($export_format == 'rtf'){
+ $answer = " ".$this->userAnswer[$i]['lat'].", ".$this->userAnswer[$i]['lng']." ";
+ }
+ $lat = $this->userAnswer[$i]['lat'];
+ $lng = $this->userAnswer[$i]['lng'];
+ if($this->userAnswer[$i]['address']){ //ce je prisoten tudi podatek o naslovu, ga dodaj
+ if($export_format == 'pdf'){
+ $answer .= ", \\textcolor{crta}{".$this->userAnswer[$i]['address']."}";
+ }else if($export_format == 'rtf'){
+ $answer .= ", ".$this->userAnswer[$i]['address']." ";
+ }
+ }
+ if($this->userAnswer[$i]['text']&&!is_numeric($this->userAnswer[$i]['text'])){ //ce je prisoten tudi podatek 'text' (kjer je po navadi odgovor na podvprasanje) in ta ni stevilo, ga dodaj
+ $answer .= $texNewLine;
+ $answer .= $lang['srv_export_marker_podvpr_answer'].": \\textcolor{crta}{".$this->userAnswer[$i]['text']."}";
+ }
+
+ #pridobitev podatkov o obmocjih in podatka o prisotnosti tocke v obmocju
+ if(count($obmocjaNaSliki)!=0){ //ce imamo obmocja na sliki
+ $izpisiObmocij = 0;
+ for($o=0; $o<count($obmocjaNaSliki);$o++){
+
+ $this->polyX = array();
+ $this->polyY = array();
+
+ //pretvori koordinate obmocja
+ $this->convertPolyString($coordsObmocijNaSliki[$obmocjaNaSliki[$o]]);
+
+ //preveri, ce je trenutna tocka v trenutnem obmocju
+ $inside=$this->insidePoly($this->polyX, $this->polyY, $lat, $lng);
+
+ if($inside&&$izpisiObmocij==0){
+ $answer .= " v ".$obmocjaNaSliki[$o];
+ $izpisiObmocij = 1;
+ $point[$obmocjaNaSliki[$o]]++;
+ }elseif($inside&&$izpisiObmocij!=0){
+ $answer .= ", ".$obmocjaNaSliki[$o];
+ $point[$obmocjaNaSliki[$o]]++;
+ }
+ }
+ //echo "stevilo tock znotraj obmocja: ".$point["Besedilo"]."</br>";
+ }
+ #pridobitev podatkov o obmocjih in podatka o prisotnosti tocke v obmocju - konec
+ //echo $answer."</br>";
+
+ #priprava odgovora respondenta - konec ##############################################################################
+
+
+ //zacetek tabele
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', '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 .= $texNewLine;
+ }
+
+ if(count($obmocjaNaSliki)!=0){ //ce imamo obmocja na sliki
+ //$tex .= '\par {';
+ //$tex .= $texNewLine.$lang['srv_export_respondent_data_heatmap_regions_number'].": ".$texNewLine;
+ $tex .= $lang['srv_export_respondent_data_heatmap_regions_number'].": ";
+ //$tex .= '\par }';
+ for($o=0; $o<count($obmocjaNaSliki);$o++){
+ //echo "stevilo tock znotraj obmocja: ".$obmocjaNaSliki[$o]." je ".$point[$obmocjaNaSliki[$o]]."</br>";
+ //srv_export_respondent_data_heatmap_regions_number
+
+ if($export_format == 'pdf'){
+ $answerRegions = $obmocjaNaSliki[$o].": \\textcolor{crta}{".$point[$obmocjaNaSliki[$o]]."}";
+ }else if($export_format == 'rtf'){
+ $answerRegions = $obmocjaNaSliki[$o].": ".$point[$obmocjaNaSliki[$o]]."";
+ }
+
+ //zacetek tabele
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', '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 .= $texNewLine;
+ }
+
+ }
+/* if($point){ //ce je kaksna tocka v obmocju, izpisi tabelo
+ //zacetek tabele
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1);
+
+ //izpis latex kode za prazen okvir oz. okvir z odgovori respondenta
+ $tex .= $this->LatexTextBox($export_format, $textboxHeightOdgovori, $textboxWidthOdgovori, ': '.$point, $textboxAllignment, $noBordersOdgovori);
+
+ //zakljucek tabele
+ $tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular');
+ $tex .= $texNewLine;
+ } */
+ }
+
+ $tex .= $this->texBigSkip;
+ $tex .= $this->texBigSkip;
+/* $tex .= $texNewLine;
+ $tex .= $texNewLine; */
+ if($export_format == 'pdf'){ //ce je pdf
+ //$tex .= '\\end{absolutelynopagebreak}'; //zakljucimo environment, da med vprasanji ne bo prelomov strani
+ }else{ //ce je rtf
+
+ }
+
+ return $tex;
+ }
+ }
+
+
+ #funkcija, ki skrbi za pretvorbo stringa koordinat obmocja v polja
+ function convertPolyString($polypoints=null){
+ $poly = [];
+ //$tmpX;
+ //$tmpY;
+ $j = 0;
+
+ $poly = explode(",", $polypoints);
+ //echo count($poly);
+
+ for($i=0; $i<count($poly); $i++){
+ if($i == 0 || $i%2 == 0){
+ $tmpX = (int)$poly[$i];
+ //echo "x: ".$tmpX."</br>";
+ }else{
+ $tmpY = (int)$poly[$i];
+ //echo "y: ".$tmpY."</br>";
+ array_push($this->polyX, $tmpX);
+ array_push($this->polyY, $tmpY);
+ }
+ }
+ //echo ("dolzina polja za x je: ".count($this->polyX));
+ //echo ("dolzina polja za y je: ".count($this->polyY));
+ }
+ #funkcija, ki skrbi za pretvorbo stringa koordinat obmocja v polja - konec
+
+ #funkcija, ki preveri, ali je dolocena tocka v notranjosti dolocenega obmocja
+ function insidePoly($polyX=null, $polyY=null, $pointx=null, $pointy=null) {
+ //echo("Za poly: je x: ".$pointx." y: ".$pointy."</br>");
+ $inside = false;
+ for ($i = 0, $j = count($polyX) - 1; $i < count($polyX); $j = $i++) {
+ //echo $polyX[$i]." ".$polyY[$i]."</br>";
+ if((($polyY[$i] > $pointy) != ($polyY[$j] > $pointy)) && ($pointx < ($polyX[$j]-$polyX[$i]) * ($pointy-$polyY[$i]) / ($polyY[$j]-$polyY[$i]) + $polyX[$i]) ) $inside = !$inside;
+ }
+ //echo "inside je: ".$inside."</br>";
+ return $inside;
+ }
+ #funkcija, ki preveri, ali je dolocena tocka v notranjosti dolocenega obmocja - konec
+
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php b/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php new file mode 100644 index 0000000..d025c58 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php @@ -0,0 +1,121 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za Kalkulacija
+ *
+ * Vprašanje je prisotno:
+ * tip 22
+ *
+ * Autor: Patrik Pucer
+ * Datum: 05/2018
+ *****************************************/
+
+ define("NAGOVOR_LINE_WIDTH", 0.5);
+
+class KalkulacijaLatex extends LatexSurveyElement
+{
+ protected $texBigSkip = '\bigskip';
+
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new KalkulacijaLatex();
+ }
+
+
+ public function export($spremenljivke=null, $export_format='', $fillablePdf=null, $texNewLine='', $export_subtype='', $db_table=null, $usr_id=null){
+
+ global $lang;
+ $tex = '';
+
+ $tex .= $spremenljivke['variable'];
+ $tex .= ' = ';
+
+ //pridobi potrebne podatke za izpis kalkulacije
+ $sqlKalkulacijaString = 'SELECT spr_id, vre_id, grd_id, operator, number, left_bracket, right_bracket, vrstni_red FROM srv_calculation WHERE cnd_id =-'.$spremenljivke['id'].' ORDER BY vrstni_red';
+ //echo $sqlKalkulacijaString."</br>";
+ $sqlKalkulacija = sisplet_query($sqlKalkulacijaString);
+
+ while ($rowKalkulacija = mysqli_fetch_assoc($sqlKalkulacija)){
+
+ if($export_subtype=='q_empty'||$export_subtype=='q_comment'){ //ce je prazen vprasalnik ali je prazen vprasalnik s komentarji
+
+ //operator
+ if($rowKalkulacija['vrstni_red']!=1){
+ $tex .= ' '.$this->GetOperator($rowKalkulacija['operator']).' ';
+ }
+
+
+ //levi oklepaj
+ //if($rowKalkulacija['left_bracket']!=0){
+ for ($i = 1; $i <= $rowKalkulacija['left_bracket']; $i++){
+ $tex .= '(';
+ }
+ //}
+
+ //ime spremenljivke
+ if($rowKalkulacija['vre_id']){ //ce potrebujemo poleg imena spremenljivke (Q1, Q2, ...) se podoznako (a, b, c, ...)
+ $sqlVariableVrednostVrstniRedString = 'SELECT variable FROM srv_vrednost WHERE id ='.$rowKalkulacija['vre_id'].' ';
+ $sqlVariableVrednostVrstniRed = sisplet_query($sqlVariableVrednostVrstniRedString);
+ $rowVariableVrednostVrstniRed = mysqli_fetch_assoc($sqlVariableVrednostVrstniRed);
+ $imeSpremenljivke = $rowVariableVrednostVrstniRed['variable'];
+ }else{
+ if($rowKalkulacija['spr_id']>0){
+ $rowVariableName = Cache::srv_spremenljivka($rowKalkulacija['spr_id']); //pridobitev imena spremenljivke iz njenega id
+ $imeSpremenljivke = $rowVariableName['variable'];
+ }else{
+ $imeSpremenljivke = $rowKalkulacija['number'];
+ }
+ }
+ $tex .= $imeSpremenljivke;
+ //echo "ime variable:".$imeSpremenljivke."</br>";
+ //ime spremenljivke - konec
+
+
+ //desni oklepaj
+ //if($rowKalkulacija['right_bracket']!=0){
+ for ($i = 1; $i <= $rowKalkulacija['right_bracket']; $i++){
+ //$tex .= $rowKalkulacija['right_bracket'];
+ $tex .= ')';
+ }
+
+ //echo $tex."</br>";
+ }
+ }
+
+ if($export_subtype=='q_data'||$export_subtype=='q_data_all'){
+ $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ $userAnswer = mysqli_fetch_array($sqlUserAnswer);
+ $tex .= $userAnswer['text'];
+ }
+
+ //pridobi potrebne podatke za izpis kalkulacije - konec
+
+ //echo $tex."</br>";
+
+/* $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
+
+ }
+
+ return $tex;
+ }
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php b/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php new file mode 100644 index 0000000..f20eef4 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php @@ -0,0 +1,145 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za Kvota
+ *
+ * Vprašanje je prisotno:
+ * tip 25
+ *
+ * Autor: Patrik Pucer
+ * Datum: 05/2018
+ *****************************************/
+
+ define("NAGOVOR_LINE_WIDTH", 0.5);
+
+class KvotaLatex extends LatexSurveyElement
+{
+ protected $texBigSkip = '\bigskip';
+
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new KvotaLatex();
+ }
+
+
+ public function export($spremenljivke=null, $export_format='', $fillablePdf=null, $texNewLine='', $export_subtype='', $db_table=null, $anketa=null, $usr_id=null){
+
+ global $lang;
+ $tex = '';
+
+ $tex .= $spremenljivke['variable'];
+ $tex .= ' = ';
+
+ //pridobi potrebne podatke za izpis kvote spr_id vre_id grd_id operator value left_bracket right_bracket vrstni_red
+ $sqlKvotaString = 'SELECT spr_id, vre_id, grd_id, operator, value, left_bracket, right_bracket, vrstni_red FROM srv_quota WHERE cnd_id =-'.$spremenljivke['id'].' ORDER BY vrstni_red';
+ //echo $sqlKvotaString."</br>";
+ $sqlKvota = sisplet_query($sqlKvotaString);
+
+ while ($rowKvota = mysqli_fetch_assoc($sqlKvota)){
+
+ if($export_subtype=='q_empty'||$export_subtype=='q_comment'){ //ce je kaj v bazi ali je prazen vprasalnik ali je potrebno pokazati tudi ne odgovorjena vprasanja
+
+ //operator
+ if($rowKvota['vrstni_red']!=1){
+ $tex .= ' '.$this->GetOperator($rowKvota['operator']).' ';
+ //$tex .= $this->GetOperator($rowKvota['operator']);
+ }
+
+ //levi oklepaj
+ for ($i = 1; $i <= $rowKvota['left_bracket']; $i++){
+ $tex .= '(';
+ }
+
+ //vrstni red vrednosti spremenljivke
+ $sqlVariableVrednostVrstniRedString = 'SELECT vrstni_red FROM srv_vrednost WHERE id ='.$rowKvota['vre_id'].' ';
+ $sqlVariableVrednostVrstniRed = sisplet_query($sqlVariableVrednostVrstniRedString);
+ $rowVariableVrednostVrstniRed = mysqli_fetch_assoc($sqlVariableVrednostVrstniRed);
+ //echo $rowVariableVrednostVrstniRed['vrstni_red']."</br>";
+
+ //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'].')';
+ }else{ //drugace, ko je spr_id manjsi od 0, je negativne vrednosti, so zapisani statusi in tipi odgovorov
+ switch ( $rowKvota['spr_id'] ){
+ case -1:
+ // Kvota po statusu
+ $tex .= $lang['srv_vprasanje_tip_25'].'('.$lang['srv_quota_status_1'].')';
+ break;
+ case -2:
+ // Kvota po statusu
+ $tex .= $lang['srv_vprasanje_tip_25'].'('.$lang['srv_quota_status_2'].')';
+ break;
+ case -3:
+ // Kvota po statusu
+ $tex .= $lang['srv_vprasanje_tip_25'].'('.$lang['srv_quota_status_3'].')';
+ break;
+ case -4:
+ // Kvota po statusu
+ $tex .= $lang['srv_vprasanje_tip_25'].'('.$lang['srv_quota_status_4'].')';
+ break;
+ case -5:
+ // Kvota po statusu
+ $tex .= $lang['srv_vprasanje_tip_25'].'('.$lang['srv_quota_status_5'].')';
+ break;
+ case -6:
+ // Kvota po statusu
+ $tex .= $lang['srv_vprasanje_tip_25'].'('.$lang['srv_quota_status_6'].')';
+ break;
+ case -7:
+ // Kvota po ustreznih odgovorih
+ $tex .= $lang['srv_vprasanje_tip_25'].'('.$lang['srv_quota_status_7'].')';
+ break;
+ case -8:
+ // Kvota po vseh odgovorih
+ $tex .= $lang['srv_vprasanje_tip_25'].'('.$lang['srv_quota_status_8'].')';
+ break;
+ }
+ }
+
+ //desni oklepaj
+ for ($i = 1; $i <= $rowKvota['right_bracket']; $i++){
+ $tex .= ')';
+ }
+ //echo $rowKvota['spr_id']."</br>";
+ }
+ }
+
+ /*izpis odgovorov respondentov*/
+ if($export_subtype=='q_data'||$export_subtype=='q_data_all'){ //ce je izpis odgovorov respondentov
+ $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ $userAnswer = mysqli_fetch_array($sqlUserAnswer);
+ $tex .= $userAnswer['text'];
+ }
+ /*izpis odgovorov respondentov - konec*/
+
+ //pridobi potrebne podatke za izpis kalkulacije - konec
+
+ //echo $tex."</br>";
+
+ $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
+
+ }
+ //echo $tex."</br>";
+ return $tex;
+ }
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/LokacijaLatex.php b/admin/survey/export/latexclasses/Vprasanja/LokacijaLatex.php new file mode 100644 index 0000000..90a40c1 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/LokacijaLatex.php @@ -0,0 +1,142 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za lokacija
+ *
+ * Vprašanje je prisotno:
+ * tip 26
+ *
+ * Autor: Patrik Pucer
+ * Datum: 08/2017
+ *****************************************/
+
+
+class LokacijaLatex extends LatexSurveyElement
+{
+ var $internalCellHeight;
+
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $texBigSkip = '\bigskip';
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new LokacijaLatex();
+ }
+
+
+ public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype='', $preveriSpremenljivko=null, $loop_id=null){
+ // Ce je spremenljivka v loopu
+ $this->loop_id = $loop_id;
+
+ //za podtip izberi lokacijo je treba preverjat posebej, ker se vrstica pri userju vedno kreira ampak brez odgovora
+ if($spremenljivke['enota'] == 3){
+ $loop_id_s = $loop_id == null ? " IS NULL" : " = '".$loop_id."'";
+ //ne sme biti negativna stevilka (ker je lahko neodgovor)
+ $qu = "SELECT count(*) as cnt FROM srv_data_map WHERE spr_id='".$spremenljivke['id']."' AND usr_id='$usr_id' AND loop_id $loop_id_s AND (text NOT REGEXP '^[+\-]?[0-9]+$' OR text>=0);";
+ $sql = sisplet_query($qu, 'obj');
+ $userDataPresent = $sql->cnt;
+ //da se kreira $this->userAnswer
+ $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id, $this->loop_id);
+ }
+ else{
+ //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."</br>";
+ }
+
+ 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
+ global $lang;
+
+ $tex = '';
+
+ $textboxWidth = '1'; //sirina okvirja z odgovorom
+ $textboxHeight = '5cm'; //visina okvirja z odgovorom
+ $odgovorLokacija = "Google Maps"; //odgovor
+ $noBorders = 0;
+
+ //priprava latex kode za text box dolocene sirine in visine glede na export format z besedilom
+ $textboxAllignment = 't';
+ //$answerTextBox = $this->LatexTextBox($export_format, $textboxHeight, $textboxWidth, $odgovorLokacija, $textboxAllignment, $noBorders);
+ $answerTextBox = $odgovorLokacija;
+
+ //$tex .= $answerTextBox; //izris okvirja z odgovorom
+ //parametri tabele
+ $parameterTabular = 'l';
+
+ //IZRIS
+ #ZACETEK TABELE
+ //zacetek tabele
+ //$tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1);
+
+ $tex .= $answerTextBox;
+
+ //zakljucek tabele
+ //$tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular');
+ #KONEC TABELE
+
+ //$tex .= $texNewLine;
+
+ if($userDataPresent){ //ce je kaj v bazi, je potrebno izrisati tabelo s koordinatami in naslovom
+ $textboxWidthOdgovori = '1'; //sirina okvirja z odgovorom
+ $textboxHeightOdgovori = 0; //visina okvirja z odgovorom
+ $noBordersOdgovori = 0;
+ //echo "stevilo odgovorov: ".count($this->userAnswer)."</br>";
+
+ for($i=0; $i<count($this->userAnswer);$i++){
+ //v primeru, da imamo izberi lokacijo (podtip 3) in brez texta, pomeni, da nimamo odgovora, zato ignoriraj
+ if(!($spremenljivke['enota'] == 3 && ($this->userAnswer[$i]['text'] == "" || $this->userAnswer[$i]['text'] < 0))){
+ //echo "rowAnswers: ".$this->userAnswer[$i]['address'].' za odgovore tip '.$spremenljivke['tip'].' id '.$spremenljivke['id'].' usr '.$usr_id.'</br>';
+ #priprava odgovora respondenta #######################################################################################
+ $answer = "\\textcolor{crta}{".$this->userAnswer[$i]['lat'].", ".$this->userAnswer[$i]['lng']."}";
+ if($this->userAnswer[$i]['address']){ //ce je prisoten tudi podatek o naslovu, ga dodaj
+ $answer .= ", \\textcolor{crta}{".$this->userAnswer[$i]['address']."}";
+ }
+ if($this->userAnswer[$i]['text']&&(/*!is_numeric($this->userAnswer[$i]['text']) ||*/ $this->userAnswer[$i]['text'] >= 0)){ //ce je prisoten tudi podatek 'text' (kjer je po navadi odgovor na podvprasanje), ga dodaj
+ $answer .= $texNewLine;
+ $answer .= $lang['srv_export_marker_podvpr_answer'].": \\textcolor{crta}{".$this->userAnswer[$i]['text']."}";
+ }
+ //echo $answer;
+ #priprava odgovora respondenta - konec #######################################################################################
+
+ //zacetek tabele
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', '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 .= $texNewLine;
+ }
+ }
+ }
+
+ if($export_subtype=='q_empty'){
+ $tex .= $texNewLine;
+ $tex .= $texNewLine;
+ }else{
+ $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
+
+ }
+ return $tex;
+ }
+ }
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/MultiGridLatex.php b/admin/survey/export/latexclasses/Vprasanja/MultiGridLatex.php new file mode 100644 index 0000000..11f4be2 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/MultiGridLatex.php @@ -0,0 +1,1768 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za MultiGrid
+ *
+ * Vprašanje je prisotno:
+ * tip 6, 16, 19, 20 z vsemi orientacijami
+ *
+ * Autor: Patrik Pucer
+ * Datum: 07-08/2017
+ *****************************************/
+
+
+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
+
+class MultiGridLatex extends LatexSurveyElement
+{
+ var $internalCellHeight;
+ protected $preveriSpremenljivko;
+ protected $skipEmpty;
+ protected $skipEmptySub;
+ protected $userDataPresent;
+ protected $texBigSkip = '\bigskip ';
+ protected $texSmallSkip = '\smallskip ';
+ public $texNewLine = '\\\\ ';
+ protected $exportDataType;
+
+ protected $textL = '';
+ protected $textR = '';
+ protected $textRArray = array();
+ protected $textRArrayIndex = array();
+
+ 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 $path2ImagesMulti;
+
+ protected $language;
+
+ public function __construct()
+ {
+ global $site_path;
+ //parent::getGlobalVariables();
+ $this->path2ImagesMulti = $site_path.'uploadi/editor/';
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new MultiGridLatex();
+ }
+
+ #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");
+ $numRowsSql = mysqli_num_rows($sqlVrednosti);
+
+ $sqlStolpciVrednosti = sisplet_query("SELECT id, naslov, vrstni_red, variable, other, part FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY id");
+ $numColSql = mysqli_num_rows($sqlStolpciVrednosti);
+
+ $tex = '';
+ $tex1 = '';
+
+ $navpicniOdgovori = array();
+ $navpicniOdgovori = [];
+ $navpicniOdgovori2 = array();
+ $navpicniOdgovori2 = [];
+ $vodoravniOdgovori = array();
+ $vodoravniOdgovori = [];
+ $missingOdgovori = array();
+ $missingOdgovori = [];
+
+ $odgovoriRespondent = array();
+ $odgovoriRespondent = [];
+ $odgovoriRespondentTmp = array();
+
+
+ $texNewLineAfterTable = $texNewLine." ".$texNewLine." ".$texNewLine;
+ if($spremenljivke['enota']==10){ //ce je image hotspot
+ $indeksZaWhile = 1;
+ //echo "Indeks je ena ce je hotspot </br>";
+ }
+ $indeksDvojnaTabela1 = 1;
+ $indeksDvojnaTabela2 = 1;
+
+ $IndeksZaMissing = 1;
+
+
+
+ //pregled vseh odgovorov po stolpcih po $sqlStolpciVrednosti
+ while ($colVrednost = mysqli_fetch_assoc($sqlStolpciVrednosti)){
+ if($colVrednost['other'] != 0){
+ $stringMissingOdgovor = $colVrednost['naslov'];
+ array_push($missingOdgovori, $this->encodeText($stringMissingOdgovor) ); //filanje polja z missing odgovori
+ }else{
+ $stringTitleCol = $colVrednost['naslov'];
+ array_push($vodoravniOdgovori, $this->encodeText($stringTitleCol) ); //filanje polja z vodoravnimi odgovori (po stolpcih)
+ }
+ }
+ //pregled vseh odgovorov po stolpcih po $sqlStolpciVrednosti - konec
+
+ #potrebno urediti za prikazovanje podatkov, ce je missing v multi text ali multi number
+ if($spremenljivke['tip']==19||$spremenljivke['tip']==20){ //ce je grid stevilk ali besedil
+ if(count($missingOdgovori)){ //ce so missing-i
+ $spremenljivkeData = array(); //pripravi polja, ki omogoca pobiranje podatkov za missing
+ $spremenljivkeData['tip'] = 6;
+ $spremenljivkeData['enota'] = 0;
+ }
+ }
+ #potrebno urediti za prikazovanje podatkov, ce je missing v multi text ali multi number - konec
+
+ $indeksZaWhile = 1;
+ $vNovoVrstico = 1;
+
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti
+ while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
+ $indeksZaWhile = 1;
+ //navpicni odgovori
+ $stringCell_title = $this->encodeText(( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) );
+
+ // še dodamo textbox če je polje other
+ $_txt = '';
+ if ( $rowVrednost['other'] == 1 ){
+ //$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.':';
+ //}
+ }
+ //echo "zacetek funkcije </br>";
+ //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 </br>";
+ } */
+ //echo "odgovor: ".$stringCell_title." </br>";
+
+ $IndeksZaMissing=1;
+
+ $sqlVsehVrednsti = sisplet_query("SELECT id, naslov, other FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY 'vrstni_red'");
+
+ while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)){
+
+ $sqlUserAnswer = $this->GetUsersDataGrid($spremenljivke, $db_table, $rowVrednost, $rowVsehVrednosti, $usr_id,0);
+ $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+
+ if((count($missingOdgovori))&&($spremenljivke['tip']==19||$spremenljivke['tip']==20)){ //ce so missing-i
+ //echo "missing</br>";
+ $sqlUserAnswerMissing = $this->GetUsersDataGrid($spremenljivkeData, $db_table, $rowVrednost, $rowVsehVrednosti, $usr_id,0);
+ $userAnswerMissing = mysqli_fetch_assoc($sqlUserAnswerMissing);
+ //echo "userAnswer Missing: ".$userAnswerMissing['grd_id'].'</br>';
+ }
+ //echo "rowVsehVrednosti['id']: ".$rowVsehVrednosti['id'].'</br>';
+ //echo "userAnswer: ".$userAnswer['text'].'</br>';
+ //echo "userAnswer: ".$userAnswer['grd_id'].'</br>';
+ //echo "rowVrednost['spr_id']: ".$rowVrednost['spr_id'].'</br>';
+
+ if($rowVsehVrednosti['id'] == $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;
+ }
+ if($spremenljivke['tip']==6||$spremenljivke['tip']==16){
+ if(($vNovoVrstico==1&&$spremenljivke['tip']==16)||$spremenljivke['tip']==6){
+ $tex1 .= $texNewLine;
+ $stringCell_title .= $_txt.':';
+ $tex1 .= $stringCell_title.' ';
+ $vNovoVrstico=0;
+ }
+ if($spremenljivke['tip']==16&&$indeksZaWhile!=1){
+ $tex1 .= ', ';
+ }
+ $tex1 .= ' '.$this->encodeText($rowVsehVrednosti['naslov']);
+ //$tex1 .= ' \\textcolor{crta}{'.$this->encodeText($rowVsehVrednosti['naslov']).'}';
+ }
+ //echo "Sprememba indeksa </br>";
+ $indeksZaWhile++;
+ $podatek = 1;
+ //echo "Zgornji: ".$indeksZaWhile."</br>";
+ //echo "Zgornji: ".$indeksZaWhile." za ".$this->encodeText($rowVsehVrednosti['naslov'])."</br>";
+ //echo "tex: ".$tex1."</br>";
+ }else{
+ $podatek = 0;
+ }
+
+ //echo $this->encodeText($this->userAnswer['text']).'</br>';
+ if($spremenljivke['tip']==19||$spremenljivke['tip']==20){ //ce je grid stevilk ali besedil
+
+ //echo "Indeks missing: ".$IndeksZaMissing."</br>";
+ if(($IndeksZaMissing > ($numColSql-count($missingOdgovori)))&&(count($missingOdgovori))){
+ //echo "userAnswer Missing je prisoten in njegov grd_id je: ".$userAnswerMissing['grd_id'].'</br>';
+ $okvirZOdgovori = $this->getAnswerSymbol($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']));
+ }
+
+ //$okvirZOdgovori = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], count($missingOdgovori),$this->encodeText($userAnswer['text']));
+ //echo "okvirZOdgovori: ".$okvirZOdgovori."</br>";
+ array_push($odgovoriRespondent, $okvirZOdgovori);
+
+ }
+ $indeksDvojnaTabela1++;
+ $IndeksZaMissing++;
+ //if(($indeksZaWhile!=1)&&in_array($spremenljivke['tip'], array(6, 16))){
+ //if($podatek==1&&in_array($spremenljivke['tip'], array(6, 16))&&$vNovoVrstico){
+ //if(($podatek==1&&$spremenljivke['tip']==6)||($indeksZaWhile==1&&$spremenljivke['tip']==16)){
+ //if(($podatek==1&&$spremenljivke['tip']==6)||($podatek==1&&$indeksZaWhileOuter==1&&$spremenljivke['tip']==16)){
+ //$tex1 .= $texNewLine;
+ //$vNovoVrstico=0;
+ //}
+ }
+ //$tex .= $texNewLine;
+ $vNovoVrstico=1;
+ }
+
+ $tex2 = '';
+
+ $tex .= $tex1.$tex2; //zdruzitev obeh delov latex kode
+ //echo "tex: ".$tex." za ".$spremenljivke['variable']."</br>";
+ if($spremenljivke['tip']==19||$spremenljivke['tip']==20){ //ce je grid stevilk ali besedil
+ //echo "stevilo odgovorov: ".count($odgovoriRespondent)."</br>";
+ //echo "stevilo odgovorov missing: ".count($userAnswerMissing)."</br>";
+ //echo "stevilo odgovorov : ".count($userAnswer)."</br>";
+ return $odgovoriRespondent;
+ }else{
+ return $tex;
+ }
+
+ }
+ #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."</br>";
+ global $lang;
+
+ $this->language = $language;
+
+ $this->preveriSpremenljivko = $preveriSpremenljivko;
+ $this->skipEmpty =$skipEmpty;
+ $this->skipEmptySub = $skipEmptySub;
+ // Ce je spremenljivka v loopu
+ $this->loop_id = $loop_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");
+ $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");
+ $numRowsSql = mysqli_num_rows($sqlVrednosti);
+
+ $sqlStolpciVrednosti = sisplet_query("SELECT id, naslov, vrstni_red, variable, other, part FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY id");
+ //$sqlStolpciVrednosti = sisplet_query("SELECT id, naslov, vrstni_red, variable, other, part FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY 'vrstni_red'");
+ $numColSql = mysqli_num_rows($sqlStolpciVrednosti);
+
+ $tex = '';
+
+ if($export_subtype!='q_empty'&&$export_data_type!=1){ //ce ni prazen vprasalnik in izpis ni Dolg, dodaj prazno vrstico
+ //$tex .= '\\\\';
+ }
+
+ $navpicniOdgovori = array();
+ $navpicniOdgovori = [];
+ $navpicniOdgovori2 = array();
+ $navpicniOdgovori2 = [];
+ $vodoravniOdgovori = array();
+ $vodoravniOdgovori = [];
+ $missingOdgovori = array();
+ $missingOdgovori = [];
+ $userAnswerData = array();
+ //$textRVreId = array();
+
+ $indeksOdgovorovTextR = 0;
+
+ $texNewLineAfterTable = $texNewLine." ".$texNewLine." ".$texNewLine;
+
+ $indeksZaWhile = 1;
+ $indeksOdgovorov = 0;
+ //echo "Funkcija export </br>";
+
+ $nacinVnosa = $spremenljivke['ranking_k']; //nacin vnosa 0-Stevilo, 1-Drsnik
+
+ //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'].'</br>';
+ $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 </br>";
+ 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'].'</br>';
+ //echo "userAnswerVreId: ".$userAnswer['vre_id'].'</br>';
+ //echo "text: ".$userAnswer['text'].'</br>';
+
+/* if($spremenljivke['enota']==4&&$userAnswer['grd_id']){
+ $userAnswerData[$indeksOdgovorov] = $userAnswer['grd_id'];
+ echo "userAnswerData: ".$userAnswerData[$indeksOdgovorov].'</br>';
+ //echo 'je 4 </br>';
+ $indeksOdgovorov++; */
+ if($spremenljivke['enota']==4){ //ce je ena moznost proti drugi
+ //echo 'je 4 '.$indeksOdgovorov.'</br>';
+ if($userAnswer['grd_id']){ //ce je podatek, ga zabelezi
+ $userAnswerData[$indeksOdgovorov] = $userAnswer['grd_id'];
+ //echo "userAnswerData s podatkom: ".$userAnswerData[$indeksOdgovorov].'</br>';
+ //echo 'je 4 '.$indeksOdgovorov.'</br>';
+ $indeksOdgovorov++;
+ }else{ //drugace
+ if($indeksEnaMoznostProtiDrugi>=1){
+ $userAnswerData[$indeksOdgovorov] = $userAnswer['grd_id'];
+ //echo "rabim prazno polje </br>";
+ //echo "userAnswerData brez podatka: ".$userAnswerData[$indeksOdgovorov].'</br>';
+ //echo 'je 4 '.$indeksOdgovorov.'</br>';
+ $indeksOdgovorov++;
+ }
+ //echo "indeks se spremeni </br>";
+ $indeksEnaMoznostProtiDrugi++;
+ }
+ //echo "indeksEnaMoznostProtiDrugi: ".$indeksEnaMoznostProtiDrugi.'</br>';
+ //echo "userAnswerData: ".$userAnswerData[$indeksOdgovorov].'</br>';
+ }elseif($spremenljivke['enota']!=4){
+ $userAnswerData[$indeksOdgovorov] = $userAnswer['grd_id'];
+ $userAnswerDataText[$indeksOdgovorov] = $userAnswer['text'];
+ if($spremenljivke['enota']==9){ //povleci spusti
+ $this->textRVreId[$indeksOdgovorov] = $userAnswer['vre_id'];
+ 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."</br>";
+ $sqlTextR = sisplet_query($sqlTextRString);
+ $rowTextR = mysqli_fetch_assoc($sqlTextR);
+ //echo $rowTextR['naslov']."</br>";
+ //echo $indeksOdgovorovTextR.'</br>';
+
+ //$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].'</br>';
+
+ $this->textRArray[$indeksOdgovorovTextR][$userAnswer['grd_id']]=$rowTextR['naslov'];
+ //echo "this->textRArray: ".$this->textRArray[$indeksOdgovorovTextR][$userAnswer['grd_id']].'</br>';
+ //echo "this->textRArray indeks ".$indeksOdgovorov." ".$textRVreId[$indeksOdgovorov].'</br>';
+ $indeksOdgovorovTextR++;
+ }
+ }
+
+ $indeksOdgovorov++;
+ }
+ //echo "rowVrednost['spr_id']: ".$rowVrednost['spr_id'].'</br>';
+ //echo "rowVrednost['id']: ".$rowVrednost['id'].'</br>';
+ //echo "rowVsehVrednosti['id']: ".$rowVsehVrednosti['id'].'</br>';
+ if($rowVsehVrednosti['id'] == $userAnswer['grd_id']){
+ $indeksZaWhileVsehVrednosti++;
+ }
+ if($indeksZaWhileVsehVrednosti!=1){
+ $userDataPresent = 1;
+ }
+ //echo "userAnswerData: ".$userAnswerData[$indeksOdgovorov].'</br>';
+ //echo "enota: ".$spremenljivke['enota'].'</br>';
+ //echo "indeksOdgovorov: ".$indeksOdgovorov.'</br>';
+ //$indeksOdgovorov++;
+ }
+ }
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - konec
+
+ /* echo "userDataPresent: ".$userDataPresent."</br>";
+ echo "preveriSpremenljivko: ".$preveriSpremenljivko."</br>"; */
+
+ $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']."</br>";
+ //pregled vseh odgovorov po stolpcih po $sqlStolpciVrednosti
+ while ($colVrednost = mysqli_fetch_assoc($sqlStolpciVrednosti)){
+ 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 ################
+
+ $stringTitleCol = $colVrednost['naslov'];
+ $stringTitleCol = str_replace('<br />','',$stringTitleCol); //odstranitev odvecnih </br> iz naslova stolpcev
+ array_push($vodoravniOdgovori, $this->encodeText($stringTitleCol) ); //filanje polja z vodoravnimi odgovori (po stolpcih)
+ }
+ }
+ //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."</br>";
+ }else{ //drugace, ce je VAS
+ //$symbol = $this->getAnswerSymbol($export_format, $fillablePdf, $spremenljivke['tip'], $spremenljivke['grids'], 0, 0, $spremenljivke['enota']);
+ //echo "simbol VAS: ".$symbol."</br>";
+ //echo "simbol radio grid: ".$spremenljivke['enota']."</br>";
+ }
+ $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
+ 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
+ }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
+ 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
+ $tex .= $this->IzrisGridDrsnikov($spremenljivke, $navpicniOdgovori, $export_format, $export_subtype, $missingOdgovori, $userAnswerDataText);
+ }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{
+ $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 </br>";
+
+ $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['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."</br>");
+ if(filesize($imageNameTest) > 0){
+ $image = PIC_SIZE."{".$this->path2ImagesMulti."".$imageName."}"; //priprave slike predefinirane dimenzije
+ }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 .= $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);
+ }
+ }
+
+ //$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
+
+ }
+ return $tex;
+ }
+ }
+ #konec export funkcije
+
+
+ #funkcija, ki skrbi za izpis odgovor za grid vprasanja ########################################################################
+ function IzpisOdgovorovGrid($spremenljivke=null, $steviloStolpcev=null, $steviloVrstic=null, $vodoravniOdgovori=null, $navpicniOdgovori=null, $navpicniOdgovori2=null, $export_format='', $fillablePdf=null, $missingOdgovori=null, $data=null, $export_subtype=''){
+ 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<count($missingOdgovori);$m++){
+ array_push($vodoravniOdgovori, $missingOdgovori[$m]);
+ }
+ }
+ #missingi - konec###########
+
+ // TODO: Zanke, ki ne izpisujejo ničesar
+ /* foreach($vodoravniOdgovori AS $key => $vodoravniOdgovor){ //za vsak odgovor v vrstici
+ echo $vodoravniOdgovor."</br>";
+ //echo $key."</br>";
+ } */
+ //
+ /* foreach($data AS $key => $datum){ //za vsak odgovor v vrstici
+ echo "Podatek: ".$datum."</br>";
+ //echo $key."</br>";
+ } */
+
+ $z = $j = $i = 0;
+
+ if($spremenljivke['enota']==3){ //dvojna tabela
+ //ureditev podnaslovov za izpis
+ $podnaslovi = array();
+ $podnaslov1 = $spremenljivke['grid_subtitle1']; //podnaslova @dvojna tabela
+ $podnaslov2 = $spremenljivke['grid_subtitle2'];
+
+ array_push($podnaslovi,$podnaslov1);
+ array_push($podnaslovi,$podnaslov2);
+
+
+ #priprava razdeljenih podatkov za izpis odgovorov respondenta za dvojna tabela
+ $odgovoriLevo = array();
+ $odgovoriDesno = array();
+ $preklopPolj = 0;
+
+ $steviloPodatkovVPaketu = $steviloStolpcev/2;
+
+ for($iP=0; $iP < count($data); ($iP++)){
+ $paket = array_slice($data, $iP, $steviloPodatkovVPaketu);
+ if($preklopPolj == 0){
+ $odgovoriLevo = array_merge($odgovoriLevo, $paket);
+ $preklopPolj = 1;
+ }else{
+ $odgovoriDesno = array_merge($odgovoriDesno, $paket);
+ $preklopPolj = 0;
+ }
+ $iP = $iP + $steviloPodatkovVPaketu - 1;
+ }
+
+ $steviloStolpcev = $steviloStolpcev/2;
+ #priprava razdeljenih podatkov za izpis odgovorov respondenta za dvojna tabela - konec
+
+ foreach($podnaslovi AS $indeksPodnaslov => $podnaslov){ //za vsak odgovor v vrstici
+ $j=0; //indeks za podatke
+ $i=0; //indeks za odgovore po stolpcih - vodoravniOdgovori
+ $z=0; //indeks za preverjanje preskakovanja manjkajocih podvprasanj
+ $izpis .= '\textbf{'.$podnaslov.'}: '.$this->texNewLine; //izpis podnaslova
+
+ if($indeksPodnaslov == 0){ //ce je leva tabela
+ $data = array();
+ $data = array_merge($data, $odgovoriLevo);
+ }elseif($indeksPodnaslov == 1){ //ce je desna tabela
+ $data = array();
+ $data = array_merge($data, $odgovoriDesno);
+ }
+
+ 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;
+ for($z=$z;$z<($steviloStolpcev*($key+1));$z++){
+ if(isset($data[$z])){ //ce je podatek
+ $skipRow = false;
+ }
+ //echo "surov podatek: ".$data[$z]."</br>";
+ }
+ }
+ #Ce imamo nastavljeno preskakovanje podvprasanj preverimo ce je kaksen odgovor v vrstici - konec #######################
+
+ $steviloSlikovnihIkon = 0; //belezi stevilo slikovnih ikon
+
+ if(!$skipRow){
+ if($spremenljivke['enota']!=4){
+ $izpis .= $navpicniOdgovor.": ";
+ }
+ for($j=$j;$j<($steviloStolpcev*($key+1));$j++){
+ if($i==$steviloStolpcev){
+ $i=0;
+ }
+ if(isset($data[$j])){ //ce je podatek
+ $izpis .= '\\textcolor{crta}{'.$vodoravniOdgovori[$i].'}';
+ }
+ $i++;
+ }
+ $izpis .= $this->texNewLine;
+ }
+ }
+ }
+
+ }else{ //ce ni dvojna tabela
+ if($spremenljivke['enota']==4){ //ce je ena proti drugi
+ $steviloStolpcev = 1;
+ }
+ 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;
+ for($z=$z;$z<($steviloStolpcev*($key+1));$z++){
+ if(isset($data[$z])){ //ce je podatek
+ $skipRow = false;
+ }
+ //echo "surov podatek: ".$data[$z]."</br>";
+ }
+ }
+ #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.": ";
+ }
+ $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]."</br>";
+ if($spremenljivke['enota']==4){ //ce je ena proti drugi
+ if($data[$j]==2){
+ $odgovorEnaProtiDrugi = '\\textcolor{crta}{'.$navpicniOdgovori2[$key].'}';
+ }else{
+ $odgovorEnaProtiDrugi = '\\textcolor{crta}{'.$navpicniOdgovor.'}';
+ }
+ $izpis .= $odgovorEnaProtiDrugi;
+ }/* elseif($spremenljivke['enota']==11){ //ce je VAS
+ //echo "surov podatek: ".$data[$j]."</br>";
+ //echo "stevilo stolpcev VAS: ".$steviloStolpcev."</br>";
+ //$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."</br>";
+ }
+ } elseif($spremenljivke['enota']==12){ //ce je slikovni tip
+ if($data[$j]){ //ce je podatek
+ $steviloSlikovnihIkon = $data[$j];
+ //echo "stevilo slikovnih ikon: ".$steviloSlikovnihIkon."</br>";
+ //echo "_______________________</br>";
+ }
+ }*/else{
+ if($i==$steviloStolpcev){
+ $i=0;
+ }
+ /* echo "tip: ".$spremenljivke['tip']."</br>";
+ echo "enota: ".$spremenljivke['enota']."</br>"; */
+ 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].'}';
+ }else{
+ $izpis .= '\\textcolor{crta}{'.$vodoravniOdgovori[$i].'}';
+ }
+ }
+ }
+ $i++;
+ }
+ }
+ if($spremenljivke['enota']!=12){ //ce ni slikovni tip, dodaj novo vrstico
+ $izpis .= $this->texNewLine;
+ }
+ }
+ if($spremenljivke['enota']==12){ //ce je slikovni tip, izpisi ustrezno stevilo simbololov
+ $prviOdgovorSlikovniTip = 1;
+ //echo "izpis kode: ".$izpis."</br>";
+ for($p=0; $p<$steviloSlikovnihIkon; $p++){
+ $izpis .= ICON_SIZE."{".$this->path2Images."".$this->getCustomRadioSymbol($spremenljivke['id'], $prviOdgovorSlikovniTip)."}";
+ }
+ $izpis .= $this->texNewLine;
+
+ }
+ }
+ } //konec, ce ni dvojna tabela
+
+ $izpis .= $this->texNewLine;
+ /* if($spremenljivke['enota']==3){
+ echo $izpis;
+ } */
+ return $izpis;
+ }
+ #funkcija, ki skrbi za izpis odgovor za grid vprasanja - konec ########################################################################
+
+ #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'];
+ $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 ##################
+ if($trak == 1){
+ //stevilo s katerim se zacenja trak
+ $trakStartingNumber = ($spremenljivkaParams->get('diferencial_trak_starting_num') ? $spremenljivkaParams->get('diferencial_trak_starting_num') : 0);
+
+ //stevilo naslovov nad trakom
+ $trakNumOfTitles = ($spremenljivkaParams->get('trak_num_of_titles') ? $spremenljivkaParams->get('trak_num_of_titles') : 0);
+
+ //polje za naslove nad trakom
+ $trakTitles = [];
+
+ //naslovi nad trakom
+ for($i=0; $i<$trakNumOfTitles; $i++){
+ $trakTitles[$i] = ($spremenljivkaParams->get('trak_nadnaslov_'.($i+1)) ? $spremenljivkaParams->get('trak_nadnaslov_'.($i+1)) : '');
+ }
+ }
+ //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.'</br>';
+ //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.'</br>';
+
+ //izpis tabela
+ $tabela = '';
+ //echo $enota;
+
+ #IZPIS ZA POVLECI SPUSTI
+ if($enota == 9){ //ce je povleci spusti
+ //za pridobitev informacij o obliki odgovorov na desni strani (0 - okvir, 1 - skatla)
+ $display_drag_and_drop_new_look = ($spremenljivkaParams->get('display_drag_and_drop_new_look') ? $spremenljivkaParams->get('display_drag_and_drop_new_look') : 0);
+
+ //ureditev missing-ov
+ if(count($missingOdgovori)!=0){ //ce so missing-i
+ $vodoravniOdgovori = $this->AddMissingsToAnswers($vodoravniOdgovori, $missingOdgovori);
+ }
+ //ureditev missing-ov - konec
+
+ #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 .= $lang['srv_ranking_available_categories'].': '.$texNewLine;
+ $tabela .= '\rule{0.4\textwidth}{0.7 pt} \end{tabularx}';
+ }else{ //ce je rtf
+ $tabela .= '\begin{tabular}{l} '; //izris z enostolpicno tabelo
+ $tabela .= $lang['srv_ranking_available_categories'].': '.$texNewLine; //Razpolozljive kategorije
+ $tabela .= '\hline \end{tabular} ';
+ }
+ //prva vrstica pred tabelo z odgovori - konec
+
+ #pred zacetkom tabel za povleci spusti - konec ###############################################################
+
+ #tabela s kategorijami odgovorov iz levega okvirja ###########################################################
+ $tableCentering = ($typeOfDocument == 'pdf' ? ' \centering ' : '');
+
+ $parameterTabularL = 'C'; //parameter za levo tabelo
+
+ //zacetek tabele
+ if($typeOfDocument == 'pdf'){ //ce je pdf
+ $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'tabularx', 'tabular*', 0.45, 0.2);
+ }
+
+ //argumenti za leve okvirje
+ $textboxWidthL = 0.2;
+ $textboxHeightL = 0; //ker mora biti prilagojena visina tekstu damo na 0
+ $textboxAllignmentL = 'c';
+
+
+ //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();
+ $diffArray = array_merge(array_diff($this->navpicniOdgovoriVreId, $this->textRVreId), array_diff($this->textRVreId, $this->navpicniOdgovoriVreId));
+ if(count($diffArray)){ //ce je kaksna razlika oz. se je premaknilo odgovore iz leve v desno stran povleci-spusti
+ foreach($diffArray AS $diff){
+ if($diff){
+ // iz baze preberemo naslove odgovorov za levo stran povleci-spusti
+ //$sqlTextLString = "SELECT naslov FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' AND id='".$diff."' ORDER BY vrstni_red";
+ $sqlTextLString = "SELECT naslov FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' AND id='".$diff."' AND hidden='0' ORDER BY vrstni_red";
+
+ $sqlTextL = sisplet_query($sqlTextLString);
+ $rowTextL = mysqli_fetch_assoc($sqlTextL);
+ array_push($navpicniOdgovori, $this->encodeText($rowTextL['naslov']));
+ }
+ }
+ }
+
+ $steviloVrstic = count($navpicniOdgovori);
+ if($steviloVrstic==0){ //ce ni odgovorov na levi strani povleci-spusti
+ $tabela .= ' \hspace{0.05\textwidth}'; //dodaj nekaj praznega prostora, da bo leva stran poravnana pravilno
+ }
+ }
+
+ for ($i = 1; $i <= $steviloVrstic; $i++){
+
+ $textL = $tableCentering.' '.$navpicniOdgovori[$i-1]; //odgovor znotraj okvirja
+
+ //$tabela .= ' \indent '; //da je okvir premaknjen proti sredini stolpca
+
+ if($typeOfDocument == 'rtf'){ //ce je rtf
+ $tabela .= '\begin{tabular}{c} '; //izris s tabelo brez obrob
+ //$tabela .= '\begin{tabular}{|c|} \hline'; //izris s tabelo z obrobama levo desno in zgoraj
+ }
+ //izpis latex kode za okvir z odgovorom
+ $tabela .= $this->LatexTextBox($typeOfDocument, $textboxHeightL, $textboxWidthL, $textL, $textboxAllignmentL, 0);
+
+ if($typeOfDocument == 'rtf'){ //ce je rtf
+ $tabela .= ' \end{tabular}'; //za zakljuciti izris v tabeli
+ }else{ //ce je pdf
+ $tabela .= ' '.$this->texBigSkip;
+ $tabela .= $texNewLine;
+ }
+ }
+
+ //zakljucek tabele
+ if($typeOfDocument == 'pdf'){ //ce je pdf
+ $tabela .= $this->EndLatexTable($typeOfDocument, 'tabularx', 'tabular*');
+ }
+ #tabela s kategorijami odgovorov iz levega okvirja - konec ##################################################################
+
+ //prostor med tabelama, ki sta sedaj ena pod drugo
+ $tabela .= ' '.$this->texBigSkip;
+
+ #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 .= $lang['srv_drag_drop_answers'].': '.$texNewLine;
+ $tabela .= '\rule{0.4\textwidth}{0.7 pt} \end{tabularx}';
+ }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} ';
+ }
+ //prva vrstica pred tabelo z odgovori - konec
+
+ #pred zacetkom "desne" tabele za povleci spusti - konec ###############################################################
+
+ #tabela s kategorijami odgovorov iz desnega okvirja ########################################################################
+
+ $parameterTabularD = 'c'; //parameter za desno tabelo
+
+ //argumenti za desne okvirje
+ $textboxWidthDV = $textboxWidthDE = 0.2; //sirina okvirja z vsebino in empty
+ $textboxHeightDV = 0; //ker mora biti prilagojena visina tekstu damo na 0
+ $textboxAllignmentDV = 'c';
+ $textboxAllignmentDE = 't'; //allignment desnega okvirja, ki je empty
+ $uShapeHeight = 1.5;
+ if($steviloStolpcev > 9){ //ce je stevilo desnih okvirjev vec kot 9, je potrebno visino okvirja zmanjsati
+ $this->internalCellHeight = '0.3 cm';
+ }
+
+ for ($i = 0; $i < $steviloStolpcev; $i++){
+ $jeOdgovor = 0;
+ $izpisano = 0;
+ $textRIzpis = '';
+ $textIzpis = '';
+ $textNaslovOkvir = '';
+
+ if($typeOfDocument == 'pdf'){ //ce je pdf
+
+ if($display_drag_and_drop_new_look == 0){ //ce je oblika okvirja (tekst na vrhu+(prazen okvir spodaj oz. okvir z odgovori))
+ $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;
+ }
+
+ if($this->exportDataType){ //ce je dolg izpis izvoza odgovorov respondenta/respondentov
+ $textNaslovOkvir = $textNaslovOkvir.$this->texNewLine;
+
+ foreach($data AS $key => $datum){
+ if(isset($data[$key])){ //ce je izpis latex kode za skatlo z besedilom odgovora
+ if(($i+1)==$datum){ //ce v se nahaja odgovor v tej skatli
+ $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;
+ }
+ }
+ }else{
+ //$uShapeHeight=$uShapeHeight+1.5; //
+ $uShapeHeight=$uShapeHeight+0.5; //ureditev visine skatle
+ }
+ }
+ }
+ }
+
+ }
+
+ if(!$jeOdgovor){ //ce ni odgovora
+
+ if($display_drag_and_drop_new_look == 0){ //ce je oblika okvirja, izrisi prazen okvir
+ $tabela .= $this->LatexTextGridOfBoxes($typeOfDocument, $uShapeHeight, U_SHAPE_WIDTH_TEXT_U, $textNaslovOkvir, $jeOdgovor);
+ //textNaslovOkvir
+ }else{ //drugace, ce je skatla, izrisi prazno skatlo
+ //izpis latex kode za skatlo
+ $tabela .= $this->LatexUShape($typeOfDocument, $this->internalCellHeight, U_SHAPE_WIDTH_U, '');
+ //$tabela .= $texNewLine;
+ }
+ }else{ //drugace, izpisi odgovore
+ if($display_drag_and_drop_new_look == 0){ //ce je oblika okvirja
+ $tabela .= $this->LatexTextGridOfBoxes($typeOfDocument, $uShapeHeight, U_SHAPE_WIDTH_TEXT_OKVIR, $textNaslovOkvir, $jeOdgovor, $textIzpis);
+ }else{ //drugace, ce je skatla
+ $tabela .= $this->LatexTextInUShape($typeOfDocument, $uShapeHeight, U_SHAPE_WIDTH_TEXT_U, $textIzpis);
+ }
+ }
+
+ $uShapeHeight = 1.5;
+ //$tabela .= $texNewLine;
+ if($display_drag_and_drop_new_look == 1){ //ce je skatla
+ //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
+ }
+ //echo "TABELA TEX: ".$tabela."</br>";
+ }elseif($typeOfDocument == 'rtf'){
+ if($i != 0){ //ce ni prvi, dodaj prostor
+ $tabela .= ' '.$this->texBigSkip;
+ }
+
+ $tabela .= '\begin{tabular}{c} '; //izris s tabelo brez obrob
+ if($this->exportDataType){ //ce je dolg izpis izvoza odgovorov respondenta/respondentov
+ foreach($data AS $key => $datum){
+ if(isset($data[$key])){ //ce je izpis latex kode za skatlo z besedilom odgovora
+ if(($i+1)==$datum){ //ce v se nahaja odgovor v tej skatli
+ $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.'}} '.$this->texNewLine;
+ $izpisano = 1;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if($display_drag_and_drop_new_look == 0){ //ce je oblika okvirja (tekst na vrhu+(prazen okvir spodaj oz. okvir z odgovori))
+ //izpis latex kode za okvir (brez obrobe oz. fbox) z odgovorom
+ $tabela .= ' \parbox{0.2\textwidth}{ '.$tableCentering.' '.$vodoravniOdgovori[$i].' } '.$texNewLine;
+ if($jeOdgovor){ //ce je odgovor, dodaj crto
+ $tabela .= '\rule{40mm}{.1pt} '.$texNewLine;
+ }
+ }
+
+ if(!$jeOdgovor){ //ce ni odgovora
+ //izpis latex kode za okvir brez besedila
+ $tabela .= $this->LatexTextBox($typeOfDocument, 0, $textboxWidthDE, '', $textboxAllignmentDE, 0);
+ $tabela .= $texNewLine;
+ }else{ //drugace, izpisi odgovore
+ $tabela .= $textRIzpis;
+ }
+
+ if($display_drag_and_drop_new_look == 1){ //ce je skatla (prazen okvir na vrhu+tekst spodaj)
+ //izpis latex kode za okvir (brez obrobe oz. fbox) z odgovorom
+ if($jeOdgovor){ //ce je odgovor, dodaj crto
+ $tabela .= '\rule{40mm}{.1pt} '.$texNewLine;
+ }
+ $tabela .= ' \parbox{0.2\textwidth}{ '.$tableCentering.' '.$vodoravniOdgovori[$i].' } '.$texNewLine;
+ }
+ $tabela .= ' \end{tabular}'; //za zakljuciti izris v tabeli
+ }
+ }
+ #tabela s kategorijami odgovorov iz desnega okvirja - konec ##########################################################################
+
+ }
+ #IZPIS ZA POVLECI SPUSTI - KONEC
+
+
+ if($enota != 9){ //ce ni povleci spusti
+
+ #ZACETEK MAIN TABELE #########################################################################
+ $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabular, 'tabularx', '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.'} ';
+ }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++){
+ $trakTitles[$i] = ($spremenljivkaParams->get('trak_nadnaslov_'.($i+1)) ? $spremenljivkaParams->get('trak_nadnaslov_'.($i+1)) : '');
+ if($i==0){ //ce je prvi stolpec nadnaslovov
+ $tabela .= ' & \multicolumn{'.intval($spremenljivke['grids']/$trakNumOfTitles).'}{l}{'.$trakTitles[$i].'}';
+
+ }elseif( $i==($trakNumOfTitles-1) ){ //ce je zadnji stolpec nadnaslovov
+ $tabela .= ' & \multicolumn{'.intval($spremenljivke['grids']/$trakNumOfTitles).'}{r}{'.$trakTitles[$i].'}';
+ }else{
+ $tabela .= ' & \multicolumn{'.intval($spremenljivke['grids']/$trakNumOfTitles).'}{c}{'.$trakTitles[$i].'}';
+ }
+ }
+ }elseif($spremenljivke['grids']%$trakNumOfTitles == 2){ //ce po deljenju ostane 2
+ for($i=0; $i<$trakNumOfTitles; $i++){
+ $trakTitles[$i] = ($spremenljivkaParams->get('trak_nadnaslov_'.($i+1)) ? $spremenljivkaParams->get('trak_nadnaslov_'.($i+1)) : '');
+ if($i != 0 && $i != ($trakNumOfTitles-1) ){
+ $multiColParameter = intval($spremenljivke['grids']/$trakNumOfTitles);
+ }else{
+ $multiColParameter = 1 + intval($spremenljivke['grids']/$trakNumOfTitles);
+ }
+ if($i==0){ //ce je prvi stolpec nadnaslovov
+ $tabela .= ' & \multicolumn{'.$multiColParameter.'}{l}{'.$trakTitles[$i].'}';
+ }elseif( $i==($trakNumOfTitles-1) ){ //ce je zadnji stolpec nadnaslovov
+ $tabela .= ' & \multicolumn{'.$multiColParameter.'}{r}{'.$trakTitles[$i].'}';
+ }else{
+ $tabela .= ' & \multicolumn{'.$multiColParameter.'}{c}{'.$trakTitles[$i].'}';
+ }
+ }
+ }else if($trakNumOfTitles == 2){ //ce sta izbrana samo dva nadnaslova
+ if($spremenljivke['grids']%$trakNumOfTitles == 0){
+ for($i=0; $i<$trakNumOfTitles; $i++){
+ $trakTitles[$i] = ($spremenljivkaParams->get('trak_nadnaslov_'.($i+1)) ? $spremenljivkaParams->get('trak_nadnaslov_'.($i+1)) : '');
+ if($i==0){ //ce je prvi stolpec nadnaslovov
+ $tabela .= ' & \multicolumn{'.intval($spremenljivke['grids']/$trakNumOfTitles).'}{l}{'.$trakTitles[$i].'}';
+ }elseif( $i==($trakNumOfTitles-1) ){ //ce je zadnji stolpec nadnaslovov
+ $tabela .= ' & \multicolumn{'.intval($spremenljivke['grids']/$trakNumOfTitles).'}{r}{'.$trakTitles[$i].'}';
+ }else{
+ $tabela .= ' & \multicolumn{'.intval($spremenljivke['grids']/$trakNumOfTitles).'}{c}{'.$trakTitles[$i].'}';
+ }
+ }
+ }else{
+ for($i=0; $i<$trakNumOfTitles; $i++){
+ if($i==0){ //ce je prvi stolpec nadnaslovov
+ $tabela .= ' & \multicolumn{'.intval($spremenljivke['grids']/$trakNumOfTitles + 0.5).'}{l}{'.$trakTitles[$i].'}';
+ }else{
+ $tabela .= ' & \multicolumn{'.intval($spremenljivke['grids']/$trakNumOfTitles - 0.5).'}{r}{'.$trakTitles[$i].'}';
+ }
+ }
+ }
+ }
+ 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)
+ for($m=0;$m<count($missingOdgovori);$m++){
+ $tabela .= " & ".$missingOdgovori[$m];
+ }
+ }
+ //missingi - konec
+ }
+ #nad prvo vrstico, ampak se vedno v tabeli - konec#######################################################
+
+ //echo $steviloStolpcev."</br>";
+
+ //ureditev missing-ov za tabela da/ne, klasicna ali dvojna tabela #############################
+ if($enota==8){ //ce je tabela da/ne
+ if(count($missingOdgovori)!=0){ //ce so missing-i
+ $vodoravniOdgovori = $this->AddMissingsToAnswers($vodoravniOdgovori, $missingOdgovori);
+ }
+ }elseif($enota==0 || $enota==3){ //ce je klasicna ali dvojna tabela
+ if(count($missingOdgovori)!=0){ //ce so missing-i
+ if($enota==0){ //ce je klasicna tabela
+ $vodoravniOdgovori = $this->AddMissingsToAnswers($vodoravniOdgovori, $missingOdgovori);
+ }elseif($enota==3){ //ce je dvojna tabela
+ for($m=0;$m<count($missingOdgovori);$m++){
+ $start = $spremenljivke['grids']+($spremenljivke['grids']+1)*$m;
+ array_splice($vodoravniOdgovori,$start,0,$missingOdgovori[$m]); //v trenutno polje z vodoravnimi odgovori dodaj na dolocenem mestu se missinge
+ }
+ }
+ }
+/* for($m=0;$m<count($vodoravniOdgovori);$m++){
+ echo $vodoravniOdgovori[$m].'</br>';
+ } */
+ }
+ //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
+ $tabela .= $texNewLine; //skok v drugo vrstico, kjer se zacnejo navpicni odgovori
+ }
+
+ //echo "koda za tabelo: ".$tabela."</br>";
+ //preureditev stevila stolpcev za pravilen izris####################################
+
+ if($enota == 1){ //ce je diferencial tabela
+ if($trak == 0){ //ce ni na traku
+ $steviloStolpcev = $steviloStolpcev - 1 + count($missingOdgovori);
+ }else{ //ce je na traku
+ $steviloStolpcev = $steviloStolpcev - count($missingOdgovori);
+ }
+ }
+
+ if($enota == 0 && $trak == 1 && $spremenljivke['tip'] == 6){ //ce je klasicna tabela na traku in je tabela en odgovor
+ $steviloStolpcev = $steviloStolpcev + 1; // +1, ker se ob izrisu zacne z indeksom 1
+ }
+
+ if(($enota == 0) && count($missingOdgovori)!=0){ //ce je klasicna tabela in so missingi
+ //$steviloStolpcev = $steviloStolpcev + count($missingOdgovori);
+ }
+
+ //echo $steviloStolpcev.'</br>';
+ //echo $spremenljivke['grids'].'</br>';
+
+ //preureditev stevila stolpcev za pravilen izris - konec ############################
+
+ //ureditev missing-ov za roleta in izberite iz seznama ##############################
+ if($enota == 2 || $enota == 6){ //roleta ali izberite s seznama
+ if(count($missingOdgovori)!=0){ //ce so missing-i
+ $vodoravniOdgovori = $this->AddMissingsToAnswers($vodoravniOdgovori, $missingOdgovori);
+ }
+ }
+ //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 - konec
+/* if($enota==12||$enota==11){
+ echo "tabela tex: ".$tabela."</br>";
+ } */
+ $tabela .= $this->EndLatexTable($typeOfDocument, 'tabularx', 'tabular'); //zakljucek tabele
+ //$tabela .= $texNewLineAfterTable;
+ #KONEC MAIN TABELE #########################################################################
+ }
+
+ //prostor po izpisu tabele
+ $tabela .= $this->texBigSkip;
+ $tabela .= $this->texBigSkip;
+
+
+ //izpis tabela - konec
+ return $tabela;
+ }
+ #funkcija, ki skrbi za izris Grida radio buttonov ali checkboxov - konec ################################
+
+ #funkcija, ki skrbi za izris Grida drsnikov ################################
+ function IzrisGridDrsnikov($spremenljivke=null, $navpicniOdgovori=null, $export_format='', $export_subtype='', $missingOdgovori=null, $userAnswer=null){
+ global $lang;
+ $tex = '';
+ #############################################################################################################
+ $spremenljivkaParams = new enkaParameters($spremenljivke['params']);
+ #nastavitve iz baze za drsnik ##################################################################
+ $slider_handle = ($spremenljivkaParams->get('slider_handle') ? $spremenljivkaParams->get('slider_handle') : 0); //0-je rocaj, 1-ni rocaja
+
+ $slider_window_number = ($spremenljivkaParams->get('slider_window_number') ? $spremenljivkaParams->get('slider_window_number') : 0);
+
+ $slider_nakazi_odgovore = ($spremenljivkaParams->get('slider_nakazi_odgovore') ? $spremenljivkaParams->get('slider_nakazi_odgovore') : 0); //za checkbox
+
+ $slider_MinMaxNumLabelNew = ($spremenljivkaParams->get('slider_MinMaxNumLabelNew') ? $spremenljivkaParams->get('slider_MinMaxNumLabelNew') : 0); //Prikaži labele za Min in Max: 0-prikazi, 1-skrij
+
+ $slider_MinMaxLabel = ($spremenljivkaParams->get('slider_MinMaxLabel') ? $spremenljivkaParams->get('slider_MinMaxLabel') : 0); //ali sta prisotni labeli nad drsnikom oz. nad min in max vrednostjo
+ $MinLabel = ($spremenljivkaParams->get('MinLabel') ? $spremenljivkaParams->get('MinLabel') : $lang['srv_new_text']); //labela na minumumu
+ $MaxLabel = ($spremenljivkaParams->get('MaxLabel') ? $spremenljivkaParams->get('MaxLabel') : $lang['srv_new_text']); //labela na maksimumu
+
+ $slider_VmesneNumLabel = ($spremenljivkaParams->get('slider_VmesneNumLabel') ? $spremenljivkaParams->get('slider_VmesneNumLabel') : 0); //ali naj drsnika prikazuje stevilske labele med maksimumom in minimumom na spodnji strani drsnika
+ $slider_VmesneDescrLabel = ($spremenljivkaParams->get('slider_VmesneDescrLabel') ? $spremenljivkaParams->get('slider_VmesneDescrLabel') : 0); //ali naj drsnika prikazuje opisne labele med maksimumom in minimumom na spodnji strani drsnika
+
+ $slider_VmesneCrtice = ($spremenljivkaParams->get('slider_VmesneCrtice') ? $spremenljivkaParams->get('slider_VmesneCrtice') : 0); //ali imamo vmesen crtice na drsniku, za izris izvoza se bo to ignoriralo
+
+ $slider_handle_step = ($spremenljivkaParams->get('slider_handle_step') ? $spremenljivkaParams->get('slider_handle_step') : 1); //korak drsnika
+
+ $slider_MinLabel = ($spremenljivkaParams->get('slider_MinLabel') ? $spremenljivkaParams->get('slider_MinLabel') : "Minimum");
+ $slider_MaxLabel = ($spremenljivkaParams->get('slider_MaxLabel') ? $spremenljivkaParams->get('slider_MaxLabel') : "Maximum");
+
+ //vnesena minimum pa maksimum drsnika
+ $slider_MinNumLabel = ($spremenljivkaParams->get('slider_MinNumLabel') ? $spremenljivkaParams->get('slider_MinNumLabel') : 0);
+ $slider_MaxNumLabel = ($spremenljivkaParams->get('slider_MaxNumLabel') ? $spremenljivkaParams->get('slider_MaxNumLabel') : 100);
+
+
+ $slider_NumofDescrLabels = ($spremenljivkaParams->get('slider_NumofDescrLabels') ? $spremenljivkaParams->get('slider_NumofDescrLabels') : 5); //stevilo opisnih label
+ $slider_DescriptiveLabel_defaults = ($spremenljivkaParams->get('slider_DescriptiveLabel_defaults') ? $spremenljivkaParams->get('slider_DescriptiveLabel_defaults') : 0);
+ $slider_DescriptiveLabel_defaults_naslov1 = ($spremenljivkaParams->get('slider_DescriptiveLabel_defaults_naslov1') ? $spremenljivkaParams->get('slider_DescriptiveLabel_defaults_naslov1') : 0); //besedilo/string z naslovi opisnih vmesnih label
+
+ //spremenljivke za labele podrocij
+ $slider_labele_podrocij = ($spremenljivkaParams->get('slider_labele_podrocij') ? $spremenljivkaParams->get('slider_labele_podrocij') : 0); //za checkbox
+ $slider_StevLabelPodrocij = ($spremenljivkaParams->get('slider_StevLabelPodrocij') ? $spremenljivkaParams->get('slider_StevLabelPodrocij') : 3);
+ //$slider_table_td_width = 100 / $slider_StevLabelPodrocij; //spremenljivka za razporeditev sirine sliderja po podrocjih
+ //spremenljivke za labele podrocij - konec
+ #nastavitve iz baze za drsnik - konec ##################################################################
+
+ //pridobitev naslovov opisnih vmesnih label za kasnejsi izris ##########################################
+ if($slider_VmesneDescrLabel){ //ce je potrebno izrisati vmesne opisne labele pod drsnikom
+ $descriptiveLabels = [];
+ if($slider_DescriptiveLabel_defaults!=0){ //ce so prednalozene opisne labele
+ $descriptiveLabels = explode(';',$slider_DescriptiveLabel_defaults_naslov1);
+ }else{ //ce so custom opisne labele
+ $slider_CustomDescriptiveLabels = '';
+ 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
+ if($i == 1){
+ $slider_CustomDescriptiveLabels = $slider_CustomDescriptiveLabelsTmp;
+ }else{
+ $slider_CustomDescriptiveLabels .= "; ".$slider_CustomDescriptiveLabelsTmp;
+ }
+ }
+ $descriptiveLabels = explode(';', $slider_CustomDescriptiveLabels);
+ }
+ }
+ //pridobitev naslovov opisnih vmesnih label za kasnejsi izris - konec ##################################
+
+
+ #IZRIS ODGOVORA IN DRSNIKA V GRID ############################################################################################
+
+ foreach($navpicniOdgovori AS $key => $navpicniOdgovor){ //za vsak odgovor v vrstici
+
+ ################# izpis s samo eno tabelo, saj zaradi ltablex, to ni vec mozno
+ //ureditev parametrov za tabelo
+ $steviloStolpcevPrvaVrstica = $steviloStolpcevPrvaVrsticaOrig = ceil(($slider_MaxNumLabel-$slider_MinNumLabel+1)/$slider_handle_step);//zaokrozi navzgor izracun stevila stolpcev prve vrstice
+
+ //zaradi tezav pri izrisu vmesnih stevilk, ce je teh vec kot 21 (MAXSTEVILOSTOLPCEV), je potrebno programsko omejiti stevilo stolpcev prve vrstice
+ if($steviloStolpcevPrvaVrstica>MAXSTEVILOSTOLPCEV){
+ $steviloStolpcevPrvaVrstica = MAXSTEVILOSTOLPCEV;
+ }
+
+ $parameterTabularLabelePrvaPod='';
+ if($slider_VmesneDescrLabel){ //ce je potrebno izrisati vmesne opisne labele
+ $steviloStolpcevPrvaVrstica = $slider_NumofDescrLabels;
+ }
+
+ //dodamo se en stolpec za prvi stolpec
+ //$steviloStolpcevPrvaVrstica = $steviloStolpcevPrvaVrstica + 1;
+ $steviloStolpcevPrvaVrstica = $steviloStolpcevPrvaVrstica + 1 + 1;
+
+ for($i=0; $i<$steviloStolpcevPrvaVrstica; $i++){
+ if($i==0){ //ce je prvi stolpec
+ //$parameterTabularLabelePrvaPod .= ($export_format == 'pdf' ? 'X' : 'l'); //leva poravnava stolpca prilagojena sirini
+ $parameterTabularLabelePrvaPod .= ($export_format == 'pdf' ? 'A' : 'l'); //leva poravnava stolpca dolocen sirine
+ }elseif($i==1){ //ce je drugi stolpec
+ $parameterTabularLabelePrvaPod .= ($export_format == 'pdf' ? 'X' : 'l'); //leva poravnava stolpca prilagojena sirini
+ }elseif($i==$steviloStolpcevPrvaVrstica-1){ //ce je zadnji stolpec
+ $parameterTabularLabelePrvaPod .= ($export_format == 'pdf' ? 'R' : 'l'); //desna prilagojena poravnava stolpca
+ }else{ //za vse ostale stolpce med tretjim in zadnjim
+ $parameterTabularLabelePrvaPod .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava
+ }
+ }
+ //ureditev parametrov za tabelo - konec
+ //echo "parameterTabularLabelePrvaPod: ".$parameterTabularLabelePrvaPod."</br>";
+
+ //zacetek tabele
+ $tex .= ($export_format == 'pdf' ? '{ \begin{tabularx}{1\textwidth}{'.$parameterTabularLabelePrvaPod.'}' : '\begin{tabular}{'.$parameterTabularLabelePrvaPod.'}');
+
+ //prva vrstica, ce so opisne labele
+ #IZRIS OPISNIH LABEL NAD DRSNIKOM #################################################
+ if($slider_MinMaxLabel){
+
+ #Ureditev preklopa barve vrstice \rowcolor[gray]{.9}
+ if($key%2 == 0 && $export_format == 'pdf'){
+ $tex .= ' \rowcolor[gray]{.9} ';
+ }
+ #Ureditev preklopa barve vrstice - konec
+
+ //prvi prazen stolpec
+ $tex .= ' & ';
+
+ //labela na levi strani
+ $tex .= $this->encodeText($MinLabel);
+
+ //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
+ }elseif($p==$steviloPraznihStolpcev-1){ //ce je zadnji stolpec
+
+ }else{ //drugace
+ $tex .= ' & ';
+ }
+
+ }
+
+ //labela na desni strani
+ //$tex .= $this->encodeText($MaxLabel);
+
+ //v novo vrstico po izrisu opisnih label
+ $tex .= $this->texNewLine;
+ }
+ #IZRIS OPISNIH LABEL NAD DRSNIKOM - KONEC #########################################
+ //prva vrstica, ce so opisne labele - konec
+
+ //druga vrstica, ce so opisne labele
+ #Ureditev preklopa barve vrstice \rowcolor[gray]{.9}
+ if($key%2 == 0 && $export_format == 'pdf'){
+ $tex .= ' \rowcolor[gray]{.9} ';
+ }
+ #Ureditev preklopa barve vrstice - konec
+
+ #IZRIS MOZNIH ODGOVOROV
+ $tex .= $navpicniOdgovor;
+ #IZRIS MOZNIH ODGOVOROV - KONEC
+
+ $tex .= ' & ';
+ //echo $userAnswer[$key]."</br>";
+ if($export_format == 'pdf'){ //ce je pdf, pokazi drsnike tudi graficno
+ #IZRIS DRSNIKA {dolzina}{pozicija bunkice}####################################
+ $steviloStolpcevZaSlider = $steviloStolpcevPrvaVrstica - 1;
+ if($slider_handle==0){ //ce je rocaj na drsniku
+ if($export_subtype=='q_data'||$export_subtype=='q_data_all'){
+ $pozicijaBunkice = $userAnswer[$key]/$slider_MaxNumLabel;
+ }elseif($export_subtype=='q_empty'||$export_subtype=='q_comment'){
+ $pozicijaBunkice=0.5;
+ }
+ $tex .= '\multicolumn{'.$steviloStolpcevZaSlider.'}{c}{ \circleSLIDER{0.7\textwidth}{'.$pozicijaBunkice.'}}'; //drsnik z rocajem
+ }else{ //drugace, ce ni rocaja
+ $tex .= '\multicolumn{'.$steviloStolpcevZaSlider.'}{c}{ \emptySLIDER{0.7\textwidth} }'; //drsnik brez rocaja
+ }
+ $tex .= $this->texNewLine; //v novo vrstico po izrisu drsnika
+ #IZRIS DRSNIKA {dolzina}{pozicija bunkice} - KONEC ###########################
+ //druga vrstica, ce so opisne labele - konec
+
+ //tretja vrstica
+ #IZRIS PRVE VRSTICE POD DRSNIKOM ##############################################
+ #Ureditev preklopa barve vrstice \rowcolor[gray]{.9}
+ if($key%2 == 0 && $export_format == 'pdf'){
+ $tex .= ' \rowcolor[gray]{.9} ';
+ }
+ #Ureditev preklopa barve vrstice - konec
+
+ //za prazen prvi stolpec
+ if($userAnswer[$key]){ //ce je prisoten odgovor
+ $tex .= $lang['srv_analiza_frekvence_titleAnswer'].': \\textcolor{crta}{'.$userAnswer[$key].'} ';
+ }
+ $tex .= ' & ';
+
+ //izris vrstice in stolpcev v tabeli
+ $steviloStolpcevPrvaVrstica = $steviloStolpcevPrvaVrstica - 1;
+ for($i=0; $i<$steviloStolpcevPrvaVrstica; $i++){
+ if($slider_VmesneDescrLabel){//ce je potrebno izrisati vmesne opisne labele ###################
+ if($i==$steviloStolpcevPrvaVrstica-1){ //ce je zadnji stolpec
+ $tex .= $descriptiveLabels[$i];
+ }else{
+ $tex .= $descriptiveLabels[$i].' & ';
+ }
+ }else{//ce je potrebno izrisati vmesne stevilske labele #######################################
+ if($i==0){ //ce je prvi stolpec
+ if($slider_MinMaxNumLabelNew==0){
+ $tex .= $slider_MinNumLabel.' & ';
+ }else{
+ $tex .= ' & ';
+ }
+ }//elseif($i==$steviloStolpcevPrvaVrstica-1){ //ce je zadnji stolpec
+ elseif($i==$steviloStolpcevPrvaVrstica-2){ //ce je pred-zadnji stolpec
+ if($slider_MinMaxNumLabelNew==0){
+ //$tex .= $slider_MaxNumLabel;
+ $tex .= '\multicolumn{2}{c}{'.$slider_MaxNumLabel.'}';
+ }
+ }elseif($i==$steviloStolpcevPrvaVrstica-1){ //ce je zadnji stolpec
+
+ }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 = null;
+ if($i==1){
+ $vmesnoStevilo=$slider_MinNumLabel+$slider_handle_step;
+ }else{
+ $vmesnoStevilo=$vmesnoStevilo+$slider_handle_step;
+ }
+ }else{
+ $vmesnoStevilo='';
+ }
+ $tex .= $vmesnoStevilo.' & ';
+ }
+ }
+ }
+ //izris vrstice in stolpcev v tabeli - konec
+
+ $tex .= $this->texNewLine; //v novo vrstico po izrisu prve vrstice pod drsnikom
+ #IZRIS PRVE VRSTICE POD DRSNIKOM - KONEC ######################################
+ //tretja vrstica - konec
+
+ }else{ //ce je rtf, napisi le, da je drsnik na tem mestu in stevilko odgovora, ce je izpis podatkov
+ if($export_subtype=='q_data'||$export_subtype=='q_data_all'){
+ //$tex .= $lang['srv_number_insert_1'].": ".$userAnswer[$key];
+ $tex .= $userAnswer[$key];
+ }elseif($export_subtype=='q_empty'||$export_subtype=='q_comment'){
+ $tex .= $lang['srv_number_insert_1'];
+ }
+ }
+
+ //konec tabele
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx} }" : "\\end{tabular} \\noindent");
+ //echo $tex;
+ ################# izpis s samo eno tabelo, saj zaradi ltablex, to ni vec mozno - konec
+
+ #Konec tabele za izris odgovora in drsnika - konec #################################################################################
+
+ } //konec foreach
+ #IZRIS ODGOVORA IN DRSNIKA V GRID - KONEC ############################################################################################
+
+ #ZA ENKRAT TEGA NE POTREBUJEMO, SAJ V GRIDU TEGA TRENUTNO NI
+ /* #IZRIS DRUGE VRSTICE POD DRSNIKOM - LABELE PODROCIJ ###########################
+ if($slider_labele_podrocij){ //ce imamo vklopljene labele podrocij
+ $tex .= $texNewLine;
+ //ureditev parametrov za tabeli
+ $parameterTabularLabeleDrugaPod='';
+ $prazniStolpciZaGraficneOznake = '';
+ for($i=0; $i<$slider_StevLabelPodrocij; $i++){
+ $parameterTabularLabeleDrugaPod .= ($export_format == 'pdf' ? '|C|' : '|c|'); //sredinska poravnava
+ $parameterTabularLabeleTretjaPod .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava
+ if($i!=0){
+ $prazniStolpciZaGraficneOznake .= ' & ';
+ }
+ }
+ $prazniStolpciZaGraficneOznake .= $texNewLine.'\hline';
+ //ureditev parametrov za tabeli - konec
+
+ //zacetek tabele z graficnimi oznakami
+ $tex .= ($export_format == 'pdf' ? '\begin{tabularx}{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 .= $texNewLine;
+
+ //zacetek tabele z naslovi label
+ $tex .= ($export_format == 'pdf' ? '\begin{tabularx}{0.9\textwidth}{'.$parameterTabularLabeleTretjaPod.'}' : '\begin{tabular}{'.parameterTabularLabeleTretjaPod.'}');
+
+ //izris naslovov label
+ $slider_Labela_podrocja = []; //polje, ki hrani vpisane naslove labele podrocij
+ for ($i = 1; $i <= $slider_StevLabelPodrocij; $i++) { //priprava polja z naslovi
+ $slider_Labela_podrocja[$i] = ($spremenljivkaParams->get('slider_Labela_podrocja_' . $i . '') ? $spremenljivkaParams->get('slider_Labela_podrocja_' . $i . '') : $lang['srv_new_text']);
+
+ if($i==1){ //ce je prvi stolpec
+ $tex .= $slider_Labela_podrocja[$i];
+ }else{
+ $tex .= ' & '.$slider_Labela_podrocja[$i];
+ }
+
+ }
+ //izris naslovov label - konec
+
+ //konec tabele z naslovi label
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular} \\noindent");
+ }
+ #IZRIS DRUGE VRSTICE POD DRSNIKOM - LABELE PODROCIJ ########################### */
+ #ZA ENKRAT TEGA NE POTREBUJEMO, SAJ V GRIDU TEGA TRENUTNO NI ##################
+
+ #############################################################################################################
+
+ //se ena tabela, da naredimo dovolj prostora na koncu vprasanja
+ $tex .= ($export_format == 'pdf' ? '\begin{tabularx}{0.9\textwidth}{X}' : '');
+ $tex .= $this->texNewLine;
+ $tex .= ($export_format == 'pdf' ? '\end{tabularx}' : '');
+
+ return $tex;
+ }
+ #funkcija, ki skrbi za izris Grida drsnikov - konec ################################
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/NagovorLatex.php b/admin/survey/export/latexclasses/Vprasanja/NagovorLatex.php new file mode 100644 index 0000000..23ffe0e --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/NagovorLatex.php @@ -0,0 +1,73 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za nagovor
+ *
+ * Vprašanje je prisotno:
+ * tip 5
+ *
+ * Autor: Patrik Pucer
+ * Datum: 09/2017
+ *****************************************/
+
+ define("NAGOVOR_LINE_WIDTH", 0.5);
+
+class NagovorLatex extends LatexSurveyElement
+{
+ var $internalCellHeight;
+ protected $texBigSkip = '\bigskip';
+
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new NagovorLatex();
+ }
+
+
+ public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $export_subtype='', $preveriSpremenljivko=null, $loop_id=null){
+
+ // 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);
+ //echo "userDataPresent za spremenljivko".$spremenljivke['id']." je: ".$userDataPresent."</br>";
+
+ //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
+ global $lang;
+
+ $spremenljivkaParams = new enkaParameters($spremenljivke['params']);
+ $nagovorLine = ($spremenljivkaParams->get('nagovorLine') ? $spremenljivkaParams->get('nagovorLine') : 0); //0-Privzeto, 1-Ne, 2-Da
+
+ if($nagovorLine!=1){ //CE NI NE
+ $tex .= '\rule{\textwidth}{'.NAGOVOR_LINE_WIDTH.'pt}'; //narisi crto pod tekstom
+ }
+
+/* $tex .= $texNewLine;
+ $tex .= $texNewLine; */
+ $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
+
+ }
+
+ return $tex;
+ }
+ }
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php b/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php new file mode 100644 index 0000000..51b5ddb --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php @@ -0,0 +1,488 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za radio, checkbox, select
+ *
+ * Vprašanje je prisotno:
+ * tip 1, 2, 3 z vsemi orientacijami
+ *
+ * Autor: Patrik Pucer
+ * Datum: 06-07/2017
+ *****************************************/
+
+//namespace Export\Latexclasses\Vprasanja;
+
+define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm
+define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip
+
+class RadioCheckboxSelectLatex extends LatexSurveyElement
+{
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $texBigSkip = ' \bigskip ';
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+ protected $path2ImagesRadio;
+ protected $language;
+ protected $prevod;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new RadioCheckboxSelectLatex();
+ }
+
+ 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){
+ global $lang, $site_path;
+
+ $this->language = $language;
+ $this->path2ImagesRadio = $site_path.'uploadi/editor/';
+
+ //preverjanje, ali je prevod
+ if(isset($_GET['language'])){
+ $this->language = $_GET['language'];
+ $this->prevod = 1;
+ }else{
+ $this->prevod = 0;
+ }
+ //preverjanje, ali je prevod - konec
+
+ // Ce je spremenljivka v loopu
+ $this->loop_id = $loop_id;
+
+ //echo "exportData za user: ".$usr_id." in language ".$language."</br>";
+ //echo "__________________________________</br>";
+
+ $texBigSkip = ' \bigskip ';
+ $userAnswerData = array(); //belezi podatke respondenta
+ $textRArray = array(); //belezi odgovore respondenta, ki se nahajajo v desnem delu vprasanja
+ // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta
+ //echo "SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' AND hidden='0' ORDER BY vrstni_red";
+ $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' AND hidden='0' ORDER BY vrstni_red");
+ $numRowsSql = mysqli_num_rows($sqlVrednosti);
+ $tex = '';
+ $oznakaOdgovora = 'a';
+ $indeksZaWhile = 1;
+ $indeksOdgovorov = 0;
+ $oznakaVprasanja = $this->UrediOznakoVprasanja($spremenljivke['id']); //uredi oznako vprasanja, ker ne sme biti stevilska
+ $prviOdgovorSlikovniTip = 0;
+
+ 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
+ }
+
+ //echo "test: ".$userDataPresent."</br>";
+
+ #izpis izvoza kratek ali zelo kratek ###############################################################################
+ if($export_subtype=='q_data'||$export_subtype=='q_data_all'){ //ce je izvoz odgovorov respondenta/respodentov
+ //if(($userDataPresent!=0||$preveriSpremenljivko)&&($export_data_type==0||$export_data_type==2)){ //ce (so podatki prisotni ali je potrebno pokazati tudi ne odgovorjena vprasanja) in (je tip izvoza kratek ali zelo kratek)
+ if($userDataPresent!=0||$preveriSpremenljivko){ //ce (so podatki prisotni ali je potrebno pokazati tudi ne odgovorjena vprasanja)
+ $prviOdgovorSlikovniTip = 1;
+ if($export_data_type==0||$export_data_type==2){ //ce je tip izvoza kratek ali zelo kratek
+ while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
+ if( isset($this->userAnswer[$rowVrednost['id']]) ){ //ce je podatek prisoten
+
+ #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 ################
+
+ $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."</br>";
+ //stetje stevila vrstic
+ //$stetje_vrstic = $this->pdf->getNumLines($stringTitle, 180*$expand_width);
+ // še dodamo textbox če je polj 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'].'}';
+ }
+ //$tex .= ' '.$stringTitle.$_txt.',';
+ if($indeksZaWhile==1){
+ //$tex .= ' '.$stringTitle.$_txt.' ';
+ $tex .= $stringTitle.$_txt;
+ }else{
+ //$tex .= ', '.$stringTitle.$_txt;
+ $tex .= ', \\\\'.$stringTitle.$_txt;
+ }
+ $indeksZaWhile++;
+ }
+
+ $indeksOdgovorov++;
+ }
+ //echo "končni tex: ".$tex."</br>";
+ }
+ }
+ }
+ #izpis izvoza kratek ali zelo kratek - konec ###########################################################################
+
+
+ #izpis praznega vprasalnika ali dolgega izvoza (vprasalnika z odgovori respondenta) ##################################################
+ if($export_subtype=='q_empty'||$export_data_type==1||$export_subtype=='q_comment'){ //ce je izpis praznega vprasalnika ali dolgega izvoza
+ /* echo "orientacija: ".$spremenljivke['orientation']."</br>";
+ echo "tip: ".$spremenljivke['tip']."</br>"; */
+ if($spremenljivke['orientation']==5){ //ce je postavitev Potrditev
+ if($export_format == 'pdf'){ //ce je pdf
+ $tex .= $this->texBigSkip;
+ $tex .= '\\end{absolutelynopagebreak}'; //zakljucimo environment, da med vprasanji ne bo prelomov strani
+ }else{ //ce je rtf
+ //if($spremenljivke['orientation']==0 || $spremenljivke['orientation']==2){ //ce sta vodoravni orientaciji
+ //$tex .= $texNewLine; //dodaj na koncu vprasanja prazno vrstico
+ $tex .= $this->texBigSkip;
+ //}
+ }
+ //echo "tukaj";
+ return $tex;
+ }
+
+ #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 .= '\addtolength{\questionTotalLength}{\questionLength}'; //celotni dolzini dodamo dolzino vprasanja
+
+ //ce je opomba prisotna, daj spremenljivko na 2
+ if($spremenljivke['info'] != ''){
+ $tex .= '\setcounter{opomba}{2}';
+ }else{
+ $tex .= '\setcounter{opomba}{0}';
+ }
+ }
+ #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}';
+ }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} ';
+ //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 .= $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
+ }
+
+ }elseif($spremenljivke['orientation']==10){ //image hot-spot
+
+ $imageName = $this->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."</br>");
+ if(filesize($imageNameTest) > 0){
+ $image = PIC_SIZE."{".$this->path2ImagesRadio."".$imageName."}"; //priprave slike predefinirane dimenzije
+ }else{
+ //$image = 'ni slike';
+ $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($export_data_type==1){ //ce je dolg izvoz, pokazi katera obmocja so bila izbrana
+ $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
+ $_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 = ' '.$row4['text'];
+ }
+ $tex .= $stringTitle.$_txt.$texNewLine;
+ }
+ }
+ }
+ }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');
+ $numRowsSql = $vizualnaSkalaNumber;
+ }
+
+ //echo "stevilo zadev: ".$numRowsSql."</br>";
+ 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
+ }
+ //echo "parametri tabele: ".$tableParamsSlikovniTip."</br>";
+ }
+
+ 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']]) );
+
+ 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
+ }else{
+ $stringTitle = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ));
+ }
+
+ $stringTitle = Common::getInstance()->dataPiping($stringTitle, $usr_id, $loop_id);
+
+ //echo "naslov: $stringTitle</br>";
+ //echo "jezik: ".$this->language."</br>";
+ 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($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 </br>";
+ }elseif($spremenljivke['orientation']==7){ //navpicno - tekst levo
+ $text = $this->encodeText($stringTitle, $rowVrednost['id']).' & '.$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
+ }else{
+ $tex .= $text;
+ }
+ }elseif($spremenljivke['orientation']==0){ //vodoravno ob vprasanju
+ $tex .= ' '.$symbol.' '.$this->encodeText($stringTitle, $rowVrednost['id']).' ';
+ }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;
+ }else{
+ $tex .= $this->encodeText($stringTitle, $rowVrednost['id']).' '.$texNewLine;
+ }
+ }elseif($spremenljivke['orientation']==8){ //povleci-spusti
+
+ if(isset($this->userAnswer[$rowVrednost['id']])){
+ $textR = $this->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']);
+ $textR = '';
+ }
+
+ if($export_format == 'pdf'){ //ce je pdf
+
+ if($textL){
+ $tex .= '\indent \fbox{\parbox{0.2\textwidth}{ \centering '.$textL.' }} & \hspace{0.2\textwidth} '; //prva dva stolpca
+ }else{
+ $tex .= '\indent \hspace{0.2\textwidth} ';
+ }
+
+ 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
+ }elseif($export_subtype=='q_empty'){
+ $tex .= '& '; //izrisi potrebno praznino za multirow okvir iz prve vrstice
+ }else{
+ if($textR){
+ $tex .= ' & \hspace{0.3\textwidth} & \fbox{\parbox{0.2\textwidth}{ \centering '.$textR.' }} '; //izpisi okvir z odgovorom, ce je ta prisoten
+ }else{
+ $tex .= '& '; //izpisi neviden okvir
+ }
+ }
+ $tex .= $texBigSkip;
+ $tex .= $texNewLine;
+ }else{ //ce je rtf, uredi izvoz leve strani vprasanja
+ if((!isset($this->userAnswer[$rowVrednost['id']])&&$export_data_type==1)||$export_subtype=='q_empty'){ //ce je podatek in je dolg izvoz ali je izvoz praznega vprasalnika
+ $tex .= '\begin{tabular}{c} '; //izris s tabelo brez obrob
+ //$tex .= '\begin{tabular}{|c|} \hline'; //izris s tabelo z obrobama levo desno in zgoraj
+ //$tex .= '\fbox{\parbox{0.2\textwidth}{ '.$this->encodeText($stringTitle).' }} ';
+ $tex .= '\fbox{\parbox{0.2\textwidth}{ '.$textL.' }} ';
+ $tex .= ' \end{tabular}'; //za zakljuciti izris odgovorov v tabeli
+ }
+ }
+
+ }elseif($spremenljivke['orientation']==9){ //ce je "slikovni tip"
+ /* if($numRowsSql>=20){
+ $tex .= '| ';
+ } */
+ if($indeksZaWhile == 1){
+ $tex .= ICON_SIZE."{".$this->path2Images."".$this->getCustomRadioSymbol($spremenljivke['id'], $prviOdgovorSlikovniTip)."}";
+ }else{
+ if($numRowsSql<20){ //ce je manj kot 20 slikovnih tipov, izpisemo s tabelo, drugace simbol in zraven število
+ $tex .= ' & ';
+ }
+ $tex .= ICON_SIZE."{".$this->path2Images."".$this->getCustomRadioSymbol($spremenljivke['id'], $prviOdgovorSlikovniTip)."}";
+ //$tex .= ' & '.ICON_SIZE."{".$this->path2Images."".$this->getCustomRadioSymbol($spremenljivke['id'], $prviOdgovorSlikovniTip)."}";
+ }
+ if($numRowsSql>=20){
+ $tex .= ' ('.$indeksZaWhile.') ';
+ //$tex .= ' ('.$indeksZaWhile.')| ';
+ }
+
+ if(isset($this->userAnswer[$rowVrednost['id']])&&$export_data_type==1){
+ $prviOdgovorSlikovniTip = 0;
+ }elseif($export_data_type==1&&$prviOdgovorSlikovniTip==1){
+ $prviOdgovorSlikovniTip = 1;
+ }
+
+ }elseif($spremenljivke['orientation']==11){ //ce je VAS
+ //$tex .= ' '.$symbol.' '.$this->encodeText($stringTitle, $rowVrednost['id']).' ';
+ if($indeksZaWhile == 1){
+ if($numRowsSql<=7){ //ce je manj kot 7 slikovnih tipov, izpisemo s tabelo, drugace simbol in zraven število
+ $tex .= ' '.$symbol;
+ }
+ }else{
+ if($numRowsSql<=7){ //ce je manj kot 7 slikovnih tipov, izpisemo s tabelo, drugace simbol in zraven število
+ $tex .= ' & '.$symbol;
+ }
+ }
+ if($numRowsSql>7){
+ $tex .= ' ('.$indeksZaWhile.') ';
+ }
+ }else{ //ce ni urejenega izrisa naj bo default oz. navpicno
+ $tex .= $symbol.' '.$this->encodeText($stringTitle, $rowVrednost['id']).' '.$texNewLine;
+ }
+
+ $oznakaOdgovora++;
+ $indeksZaWhile++;
+ }
+ //pregled vseh moznih vrednosti (kategorij, mozni odgovori) po $sqlVrednosti - konec
+ }
+
+ if($spremenljivke['orientation']==9 || $spremenljivke['orientation']==11){ //ce je "slikovni tip" ali VAS - izrisi se spodnjo vrstico odgovorov s stevilkami v oklepaju
+ //if($numRowsSql<20){ //ce je manj kot 20 slikovnih tipov, izpisemo s tabelo, drugace simbol in zraven število
+ if($numRowsSql<$mejaVAS){ //ce je manj kot 20 slikovnih tipov, izpisemo s tabelo, drugace simbol in zraven število
+ for($i=1;$i<=$numRowsSql;$i++){
+ if($i==1){
+ $tex .= ' \\\\ ('.$i.')';
+ }else{
+ $tex .= ' & ('.$i.')';
+ }
+ }
+ $tex .= ' \end{tabular}'; //zakljuci izris odgovorov v tabeli za "slikovni tip"
+ }
+ //$tex .= $texNewLine;
+ $tex .= $texNewLine;
+ }elseif($spremenljivke['orientation']==8 || $spremenljivke['orientation']==7 ){ //ce je "povleci-spusti" ali "navpicno - tekst levo"
+ 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 .= $this->texBigSkip;
+ $tex .= $this->texBigSkip;
+ $tex .= ' \noindent ';
+ }else{
+ $tex .= ' \end{tabular}'; //za zakljuciti izris odgovorov v tabeli
+ $tex .= $texNewLine;
+ $tex .= $texNewLine;
+ }
+
+ }elseif($export_format == 'rtf'&&$spremenljivke['orientation']==8){ //ce je rtf in povleci-spusti, uredi izvoz desne strani vprasanja
+ //izpis opisnega teksta za Odgovori:
+ $tex .= '\begin{tabular}{l} '; //izris z enostolpicno tabelo
+ $tex .= $lang['srv_drag_drop_answers'].': '.$texNewLine; //Odgovori:
+ //$tex .= '\hline \end{tabular} '.$texBigSkip;
+ $tex .= '\hline \end{tabular} ';
+ //izpis opisnega teksta za Odgovori: - konec
+
+ if($export_data_type==1){ //ce je dolg izvoz, podatkov respondenta
+ foreach($textRArray as $odgovor){
+ //izpis okvirja z odgovorom respondenta
+ $tex .= '\begin{tabular}{c} '; //izris z enostolpicno tabelo brez obrob
+ //$tex .= '\begin{tabular}{|c|} \hline'; //izris z enostolpicno tabelo z obrabama levo desno in zgoraj
+
+ $tex .= $odgovor.$texNewLine;
+
+ $tex .= '\end{tabular} ';
+ //izpis okvirja z odgovorom respondenta - konec
+ }
+
+ }else{ //ce je izvoz praznega vprasalnika
+ //izpis praznega okvirja
+ $tex .= '\begin{tabular}{c} '; //izris z enostolpicno tabelo brez obrob
+ //$tex .= '\begin{tabular}{|c|} \hline'; //izris z enostolpicno tabelo z obrabama levo desno in zgoraj
+ //$tex .= ' opsasa '.$texNewLine;
+ $tex .= $texBigSkip;
+ $tex .= '\end{tabular} '.$texBigSkip;
+ //izpis praznega okvirja - konec
+ }
+
+ }
+ //$tex .= $texBigSkip;
+ }
+
+ if(($spremenljivke['orientation']==0||$spremenljivke['orientation']==2)){ //(ce je vodoravno ob vprasanju ali pod vprasanjem)
+ $tex .= $texNewLine;
+ }
+
+ }
+ #izpis praznega vprasalnika ali dolgega izvoza (vprasalnika z odgovori respondenta) - konec ####################################
+
+/* $tex .= $texNewLine;
+ $tex .= $texNewLine; */
+
+ if(($spremenljivke['orientation'] == 7 || $spremenljivke['orientation'] == 8) && $export_data_type==2){ //ce (je tekst na levi ALI povleci spusti) IN je skrcen izpis
+ $tex .= $texNewLine;
+ $tex .= $texNewLine;
+ }
+
+ if( !in_array($spremenljivke['orientation'], array(7, 8)) ){
+ $tex .= $this->texBigSkip;
+ $tex .= $texNewLine;
+ }
+
+ if($export_format == 'pdf'){ //ce je pdf
+ //$tex .= '\\end{absolutelynopagebreak}'; //zakljucimo environment, da med vprasanji ne bo prelomov strani
+ }
+
+ 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 new file mode 100644 index 0000000..c93ceb0 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php @@ -0,0 +1,397 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za Razvrscanje
+ *
+ * Vprašanje je prisotno:
+ * tip 17
+ *
+ * Autor: Patrik Pucer
+ * Datum: 08-09/2017
+ *****************************************/
+
+
+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);
+
+class RazvrscanjeLatex extends LatexSurveyElement
+{
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $texBigSkip = ' \bigskip ';
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new RazvrscanjeLatex();
+ }
+
+
+ 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){
+ // 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);
+
+ 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
+ global $lang;
+
+ // 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");
+ $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' AND hidden='0' ORDER BY vrstni_red");
+ $numRowsSql = mysqli_num_rows($sqlVrednosti);
+
+ $tex = '';
+
+ //nastavitve iz baze ##########################
+ $spremenljivkaParams = new enkaParameters($spremenljivke['params']);
+ $tipRazvrscanja = $spremenljivke['design']; //0-Prestavljanje, 1-Ostevilcevanje, 2-Premikanje
+ $steviloDesnihOkvirjev = $spremenljivke['ranking_k']; //nastavitev Moznosti: 0-Vsi, 1....
+ if($steviloDesnihOkvirjev==0){ //ce je 0, je stevilo desnih okvirjev enako stevilo vnesenih odgovorov na levi strani
+ $steviloDesnihOkvirjev=$numRowsSql;
+ }
+ //nastavitve iz baze - konec ####################
+
+ $navpicniOdgovori = array();
+ $navpicniOdgovori = [];
+
+ $odgovoriRespondenta = array();
+ $odgovoriRespondenta = [];
+
+ $texNewLineAfterTable = $texNewLine." ".$texNewLine." ".$texNewLine;
+
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti
+ while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
+ $jeOdgovor = 0; //belezi, ali je trenutna vrednost odgovora, odgovor respondenta ali ne
+ $stringTitleRow = $rowVrednost['naslov']; //odgovori na levi strani
+
+ 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']."' ");
+
+ $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+
+ if($userAnswer){ //ce je kaj v bazi
+ if($tipRazvrscanja==1){ //ce je Ostevilcevanje
+ $odgovorRespondenta = $userAnswer['vrstni_red'];
+ array_push($odgovoriRespondenta, $odgovorRespondenta); //filanje polja z odgovori respondenta (stevilke)
+ }
+ $jeOdgovor = 1;
+ }
+ //preverjanje podatkov trenutnega uporabnika - konec ##############################################
+ }
+
+ 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)
+ }
+ }
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - konec
+
+ 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";
+ //echo $sqlOdgovoriRespondentaString."</br>";
+ $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']);
+ 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);
+ }elseif($export_data_type==0||$export_data_type==1){ //ce je navaden ali dolg izpis izvoza
+ if($tipRazvrscanja==0||$tipRazvrscanja==2){ //ce je Prestavljanje ali Premikanje
+ $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);
+ }
+ }
+ //izris tabel dolocenega razvrscanja - konec
+
+
+ if($export_data_type!=2){ //ce ni skrcen izpis izvoza
+ if($tipRazvrscanja==1){ //ce je Ostevilcevanje
+ $tex .= $this->texNewLine;
+ $tex .= $this->texNewLine;
+ }else{
+ $tex .= $this->texBigSkip;
+ }
+ }
+
+ return $tex;
+ }
+ }
+
+
+ #funkcija, ki skrbi za izris ustreznih tabel za razvrscanje (postavitev: Prestavljanje in Premikanje) ################################
+ function IzrisRazvrscanjaTabele($spremenljivke=null, $steviloDesnihOkvirjev=null, $steviloVrstic=null, $navpicniOdgovori=null, $texNewLine='', $texNewLineAfterTable=null, $typeOfDocument=null, $fillablePdf=null, $tipRazvrscanja=null, $odgovoriRespondenta=null, $export_subtype=null){
+ global $lang;
+
+ //izpis kode tabela
+ $tabela = '';
+
+ if($tipRazvrscanja==0){ //ce je postavitev Prestavljanje
+ #pred zacetkom tabel s kategorijami #######################################################################
+ $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 .= $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} ';
+ }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;
+ $tabela .= '\rule{0.4\textwidth}{0.7 pt} & & \rule{0.4\textwidth}{0.4 pt} \end{tabular} ';
+ }
+ //prva vrstica pred tabelo z odgovori - konec
+ #pred zacetkom tabel s kategorijami - konec ###############################################################
+
+ $parameterTabularL = 'ccc'; //parameter za celotno tabelo z levimi in desnimi okvirji odgovorov za Prestavljanje
+ }
+
+
+ $tableCentering = ($typeOfDocument == 'pdf' ? ' \centering ' : '');
+
+ if($tipRazvrscanja==2){ //ce je postavitev Premikanje
+ $parameterTabularL = 'c'; //parameter za celotno tabelo z levimi in desnimi okvirji odgovorov za Premikanje
+ if($typeOfDocument == 'pdf'){
+ $tabela .= '\begin{center}'; //naj bo tabela na sredini lista, zacetek obmocja za center
+ }
+ }
+
+ #################################################
+ //zacetek tabele
+ $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'tabularx', 'tabular', 1, 0.2);
+
+ //argumenti za leve okvirje
+ $textboxWidthL = 0.25;
+ $textboxAllignmentL = 'c';
+ $indeksZaStevilaL=1;
+ $indeksZaStevilaD=1;
+
+ //if($tipRazvrscanja==0||($tipRazvrscanja==2&&count($odgovoriRespondenta)==0)){ //ce je Prestavljanje ali Premikanje in ni podatkov respondenta
+ if(($tipRazvrscanja==2&&count($odgovoriRespondenta)==0)){ //Premikanje in ni podatkov respondenta
+ $steviloOdgovorov=count($navpicniOdgovori);
+ $textboxHeightL = 0;
+ }elseif($tipRazvrscanja==2&&count($odgovoriRespondenta)!=0){ //ce je postavitev Premikanje in imamo odgovore respondenta
+ $steviloOdgovorov=count($odgovoriRespondenta);
+ $textboxHeightL = 0; //ker mora biti prilagojena visina tekstu damo na 0
+ }elseif($tipRazvrscanja==0){ //ce je Prestavljanje
+ //$steviloOdgovorov=count($navpicniOdgovori)+$steviloDesnihOkvirjev;
+ $steviloOdgovorov=$steviloDesnihOkvirjev;
+ $textboxHeightL = 0;
+ }
+
+ //echo "textboxHeightL: ".$textboxHeightL."</br>";
+/* echo "odgovori respondenta: ".count($odgovoriRespondenta)."</br>";
+ echo "navpični odgovori: ".count($navpicniOdgovori)."</br>";
+ echo "stevilo Odgovorov: ".$steviloOdgovorov."</br>";
+ echo "stevilo desnih okvirjev: ".$steviloDesnihOkvirjev."</br>"; */
+
+ //izris notranjosti tabele
+ for ($i = 1; $i <= $steviloOdgovorov; $i++){
+
+ $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
+
+ }elseif($tipRazvrscanja==0&&$typeOfDocument == 'rtf'){
+ //$tabela .= '\begin{tabular}{c} '; //izris s tabelo brez obrob
+ }
+
+ //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
+ $textVOkvirju = $textL;
+ }
+ }elseif($tipRazvrscanja==2&&count($odgovoriRespondenta)!=0){ //ce je postavitev Premikanje in imamo odgovore respondenta
+ $textVOkvirju = $odgovoriRespondenta[$i-1];
+ }
+
+ //echo "text V Okvirju: ".$textVOkvirju."</br>";
+
+ //izpis latex kode za okvir z odgovorom
+ if($tipRazvrscanja==0&&$navpicniOdgovori[$i-1]!=''){
+ if($typeOfDocument == 'pdf'){ //ce je pdf
+ $tabela .= $this->LatexTextBox($typeOfDocument, $textboxHeightL, $textboxWidthL, $textVOkvirju, $textboxAllignmentL, 0);
+ }else{
+ $tabela .= $textVOkvirju;
+ }
+ }elseif($tipRazvrscanja==2||$tipRazvrscanja==1){
+ if($typeOfDocument == 'pdf'){ //ce je pdf
+ $tabela .= $this->LatexTextBox($typeOfDocument, $textboxHeightL, $textboxWidthL, $textVOkvirju, $textboxAllignmentL, 0);
+ }else{
+ $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 ';
+ }
+
+ if($tipRazvrscanja==2){ //ce je Premikanje
+ $tabela .= $texNewLine;
+ }
+
+ ################
+ if($tipRazvrscanja==0){ //ce je postavitev Prestavljanje
+ //prazen prostor med levim delom in desnim delom
+ $tabela .= '& \hspace{0.2\textwidth} &';
+
+ //desni del vprasanja
+ $textboxWidthDE = 0.25; //sirina okvirja z vsebino in empty
+ $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];
+ if($typeOfDocument == 'pdf'){
+ //echo "odgovori respondenta na desni: ".$odgovoriRespondenta[$i-1]."</br>";
+ if($odgovorZaIzpis){ //ce je odgovor respondenta
+ $textboxHeight = 0; //ker mora biti prilagojena visina tekstu damo na 0
+ }else{
+ $textboxHeight = '0.3cm';
+ }
+ //izpis latex kode za okvir brez besedila oz. z odgovorom respondenta
+ $tabela .= $this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidthDE, $odgovorZaIzpis, $textboxAllignmentDE, 0);
+ $tabela .= $texNewLine;
+ }elseif($typeOfDocument == 'rtf'){
+ //izpis latex kode za okvir brez besedila oz. z odgovorom respondenta
+ $tabela .= $this->LatexTextBox($typeOfDocument, 0, $textboxWidthDE, $odgovorZaIzpis, $textboxAllignmentDE, 0);
+ $tabela .= $texNewLine;
+ }
+
+ $indeksZaStevilaD++;
+ }else{ //ce se je preseglo stevilo zelenih okvirjev na desni strani, izpisi prazno celico
+ $tabela .= ' '.$texNewLine;
+ }
+ }
+ ################
+ $indeksZaStevilaL++;
+
+ }
+
+ //$tabela .= ' \bigskip ';
+
+
+ //if(count($navpicniOdgovori)==0){ //ce ni odgovorov na desni strani, uredi prazen neviden okvir
+ if(count($navpicniOdgovori)==0 && $typeOfDocument == 'pdf'){ //ce ni odgovorov na desni strani, uredi prazen neviden okvir
+ $tabela .= $this->LatexTextBox($typeOfDocument, $textboxHeightL, $textboxWidthL, '', $textboxAllignmentL, 1);
+ }
+
+ //zakljucek tabele
+ $tabela .= $this->EndLatexTable($typeOfDocument, 'tabularx', 'tabular');
+ #################################################
+
+ if($tipRazvrscanja==2){ //ce je postavitev Premikanje
+ if($typeOfDocument == 'pdf'){
+ $tabela .= '\end{center}'; //naj bo tabela na sredini lista, konec obmocja za center
+ }
+ }
+ //izpis kode tabela - konec
+
+ 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) ################################
+
+ #funkcija, ki skrbi za izris razvrscanja (postavitev: Ostevilcevanje) ################################
+ function IzrisRazvrscanja($spremenljivke=null, $steviloVrstic=null, $navpicniOdgovori=null, $odgovoriRespondenta=null, $texNewLine='', $typeOfDocument=null, $fillablePdf=null){
+ $tex = '';
+ $textboxWidth = 0.1;
+ $textboxHeight = '0.2cm';
+ $textboxAllignment = 'c'; //dummy spremenljivka
+
+ 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($typeOfDocument == 'rtf'){ //ce je rtf
+ $tex .= ' & '; //meja med stolpcema tabele 1. prazen okvir (okvir s stevilskim odgovorom), 2. navpicni odgovor
+ }
+
+ //odgovor ob praznem okvirju
+ $tex .= ' '.$navpicniOdgovori[$i-1];
+
+ //v novo vrstico
+ $tex .= $texNewLine;
+ }
+
+ if($typeOfDocument == 'rtf'){ // ce je rtf, zakljuci tabelo s stolpcema
+ $tex .= ' \end{tabular} ';
+ }
+ return $tex;
+ }
+ #funkcija, ki skrbi za izris razvrscanja (postavitev: Ostevilcevanje) - konec ################################
+
+ #funkcija, ki skrbi za izris razvrscanje za kratek izpis izvoza ################################
+ function IzrisRazvrscanjaKratko($spremenljivke=null, $steviloDesnihOkvirjev=null, $steviloVrstic=null, $navpicniOdgovori=null, $texNewLine='', $texNewLineAfterTable=null, $typeOfDocument=null, $fillablePdf=null, $tipRazvrscanja=null, $odgovoriRespondenta=null, $export_subtype=null){
+ global $lang;
+
+ $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
+ $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
+ $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 new file mode 100644 index 0000000..e7d7ef1 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/SNImena.php @@ -0,0 +1,94 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za SNImena
+ *
+ * Vprašanje je prisotno:
+ * tip 9, 10, 11, 14, 12, 15, 13
+ *
+ * Autor: Patrik Pucer
+ * Datum: 05/2018
+ *****************************************/
+
+ define("NAGOVOR_LINE_WIDTH", 0.5);
+
+class SNImenaLatex extends LatexSurveyElement
+{
+ protected $texBigSkip = '\bigskip';
+
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new SNImenaLatex();
+ }
+
+
+ public function export($spremenljivke=null, $export_format='', $fillablePdf=null, $texNewLine='', $export_subtype='', $db_table=null, $anketa=null, $usr_id=null, $loop_id_raw=null){
+
+ global $lang;
+ $tex = '';
+ $textboxHeightL = 0; //ker mora biti prilagojena visina tekstu damo na 0
+ $textboxWidthL = 0.25;
+ $textboxAllignmentL = 'l';
+ $noBorders = 0;
+ $textVOkvirju = array();
+
+ // Ce je spremenljivka v loopu
+ //$this->loop_id = $loop_id;
+ $loop_id = $loop_id_raw == null ? " IS NULL" : " = '".$loop_id_raw."'";
+
+
+ if($export_subtype=='q_empty'||$export_subtype=='q_comment'){ //ce je prazen vprasalnik ali komentarji
+ $steviloOkvirjev = 5;
+ for($i=0; $i<$steviloOkvirjev;$i++){
+ array_push($textVOkvirju, '');
+ }
+ }elseif($export_subtype=='q_data'||$export_subtype=='q_data_all'){
+ if ($usr_id){
+ $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']));
+ }
+ $steviloOkvirjev=count($textVOkvirju);
+ }
+ }
+
+ foreach($textVOkvirju AS $textOkvir){
+ //izpis latex kode za okvir z odgovorom
+ if($export_format == 'pdf'){ //ce je pdf
+ $textOkvir = '\\textcolor{crta}{'.$textOkvir.'}';
+ $tex .= $this->LatexTextBox($export_format, $textboxHeightL, $textboxWidthL, $textOkvir, $textboxAllignmentL, $noBorders);
+ $tex .= $texNewLine;
+ }elseif($export_format == 'rtf'){
+ $tex .= '\begin{tabular}{l} '; //izris s tabelo brez obrob
+ //izpis latex kode za okvir brez besedila oz. z odgovorom respondenta
+ $tex .= $this->LatexTextBox($export_format, $textboxHeightL, $textboxWidthL, $textOkvir, $textboxAllignmentL, $noBorders);
+ $tex .= ' \end{tabular}'; //za zakljuciti izris v tabeli
+ }
+ }
+
+ $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
+
+ }
+ return $tex;
+ }
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php b/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php new file mode 100644 index 0000000..b6def64 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php @@ -0,0 +1,702 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za Število
+ *
+ * Vprašanje je prisotno:
+ * tip 7 z vsemi nacini vnosa (Stevilo, Drsnik) in postavitev (Vodoravno ob vprasanju in Vodoravno pod vprasanjem)
+ *
+ * Autor: Patrik Pucer
+ * Datum: 08/2017
+ *****************************************/
+
+
+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
+
+class SteviloLatex extends LatexSurveyElement
+{
+ var $internalCellHeight;
+ protected $texBigSkip = '\bigskip';
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new SteviloLatex();
+ }
+
+ 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){
+ // 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);
+ //echo "userDataPresent za spremenljivko".$spremenljivke['id']." je: ".$userDataPresent."</br>";
+
+ 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
+ global $lang;
+
+ // 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");
+ $numRowsSql = mysqli_num_rows($sqlVrednosti);
+ $spremenljivkaParams = new enkaParameters($spremenljivke['params']);
+
+ $tex = '';
+
+ $symbol = $this->getAnswerSymbol($export_format, $fillablePdf, 2, 10, 0, 0); //poberi simbol checkbox za other in missing moznosti odgovora
+
+ //nastavitve iz baze ##########################
+ $steviloOken = $spremenljivke['size']; //stevilo oken
+ $postavitev = $spremenljivke['orientation']; //0-vodoravno ob vprasanju, 1-vodoravno pod vprasanjem
+ $polozajEnota = $spremenljivke['enota']; //polozaj enote 0-Ne, 1-Na levi, 2-Na desni
+ $nacinVnosa = $spremenljivke['ranking_k']; //nacin vnosa 0-Stevilo, 1-Drsnik
+
+
+ $textboxHeightOrig = ($spremenljivkaParams->get('taSize') ? $spremenljivkaParams->get('taSize') : 1);
+ $textboxHeight = ($textboxHeightOrig*0.3).'cm';
+
+ $textboxWidth = ($spremenljivkaParams->get('taWidth') ? $spremenljivkaParams->get('taWidth') : -1);
+ if($textboxWidth == -1){ //ce je vrednost -1, je default t.j. 30 oz. 0.30 sirine
+ $textboxWidth = 0.30;
+ }else{ //drugace, izracunaj sirino
+ $textboxWidth = $textboxWidth/100; //pretvorimo sirino v odstotke oz. decimalke
+ }
+
+ if($textboxWidth == 1){ //ce je sirina 100, jo zmanjsaj za 5%
+ $textboxWidth = $textboxWidth*0.95;
+ }
+
+ $textboxWidth = (string)$textboxWidth; //pretvorimo stevilo (decimalke) v string
+ //echo "sirina: ".$textboxWidth."</br>";
+ //textboxWidth se rocno povozi pod "ureditev parametrov za tabelo" - NE VEC, ker se hoce sirino okvirja tako kot je nastavljena v nastavitvah
+
+ //nastavitve iz baze - konec ####################
+
+ $array_others = array(); //polje za drugo, missing, ...
+ $besedilaEnote = array(); //polje, ki hrani besedila enot
+ $besedilaEnote = [];
+ $textBoxes = array(); //polje, ki hrani latex za prazne text box-e
+ $textBoxes = [];
+ $textboxAllignment = 'c'; //poravnava textboxa s stevilom
+
+ $oznakaOdgovora = 'a';
+ $indeksZaWhile = 1;
+ $oznakaVprasanja = $this->UrediOznakoVprasanja($spremenljivke['id']); //uredi oznako vprasanja, ker ne sme biti stevilska
+
+ $okvirVNovoVrstico = 0;
+
+ /* 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."' ");
+ $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+ //echo "userAnswer: ".$userAnswer['text']."</br>";
+ //ureditev polja s podatki trenutnega uporabnika - konec ##############################################
+
+
+
+ if(($nacinVnosa==0) || ($nacinVnosa==1&&$export_format=='rtf')){ //ce je nacin vnosa Stevilo ali je Drsnik in je izvoz v rtf
+
+ if($polozajEnota!=0){ //ce je izpis z besedilom enote
+ $tex .= $texNewLine;
+ }
+
+ //ureditev parametrov za tabelo#############################
+ $parameterTabular = '';
+ if($polozajEnota==0){ //ce ni besedila za enoto
+ $steviloStolpcevTabele = $steviloOken;
+ }else{ //ce je besedilo enote na LEVI ali DESNI
+ $steviloStolpcevTabele = $steviloOken*2;
+ }
+ for($i = 0; $i < $steviloStolpcevTabele; $i++){
+ //echo "i%2: ".($i%2)."</br>";
+ if($polozajEnota==1 && $i%2==0){ //ce je polozaj besedila enote na LEVI in je stolpec za besedilo
+ //$parameterTabular .= ($export_format == 'pdf' ? 'r' : 'l'); //desna poravnava stolpca ali leva, ce je rtf
+ //$parameterTabular .= ($export_format == 'pdf' ? '>{\hsize=0.3\hsize}r' : 'l'); //desna poravnava stolpca fiksne dimenzije ali leva, ce je rtf
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\raggedleft}p{0.2\textwidth}' : 'l'); //desna poravnava stolpca fiksne dimenzije ali leva, ce je rtf
+ }elseif($polozajEnota==2 && $i%2==1){ //ce je polozaj besedila enote na DESNI in je stolpec za besedilo
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\raggedright\arraybackslash}p{0.2\textwidth}' : 'l'); //leva poravnava stolpca fiksne dimenzije ali leva, ce je rtf
+ }else{
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X' : 'l'); //leva poravnava stolpca
+/* if($textboxWidth<0.80){ //ce je urejeni okvir manjsi od 80, naj bo sirina ta ki je bila nastavljen
+ $parameterTabular .= ($export_format == 'pdf' ? 'p{'.$textboxWidth.'\textwidth}' : 'l'); //leva poravnava stolpca
+ }else{ //drugace, ce je okvri vecji od 80, naj bo sirina fiksna na 75
+ $parameterTabular .= ($export_format == 'pdf' ? 'p{0.75\textwidth}' : 'l'); //leva poravnava stolpca
+ $textboxWidth = 0.75;
+ } */
+
+ if($textboxWidth>=0.80){ //ce je urejeni okvir vecji od 80, naj oznaci, saj moramo prenesti okvirje v novo vrstico
+ $okvirVNovoVrstico = 1;
+ }
+ $parameterTabular .= ($export_format == 'pdf' ? 'p{'.$textboxWidth.'\textwidth}' : 'l'); //stolpec z nastavljeno sirino okvirja, rtf: leva poravnava
+
+ }
+ }
+ //echo "parametri tabele: ".$parameterTabular."</br>";
+ //ureditev parametrov za tabelo - konec######################
+
+ if($userAnswer['text']){
+ $okvir = 0;
+ }elseif($userAnswer['text'] == ''){ //ce nimamo odgovora
+ $okvir = 1; //rabimo okvir
+ }
+
+ #ZACETEK TABELE
+ //zacetek tabele
+ if($polozajEnota!=0){ //ce je prisotno besedilo za enoto
+ //$tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular',1, 1);
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabular', 'tabular',1, 1);
+ }elseif($polozajEnota==0&&$steviloOken>1){ //ce ni prisotno besedilo za enoto in je vec oken
+ //$tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular',1, 1);
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabular', 'tabular',1, 1);
+ }
+
+ $izpisStevilk = 0; //belezi, ali se je stevilo ali stevila ze izpisalo
+
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti
+ while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
+ # po potrebi se prevede besedilo, ki se pojavi pred textbox-om
+ $naslov = $this->srv_language_vrednost($rowVrednost['id']);
+ if ($naslov != '') {
+ $rowVrednost['naslov'] = $naslov;
+ }
+
+ //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
+
+ 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 { ";
+ $txtTmp1 .= ' \\textcolor{crta}{'.$userAnswer['text'].'}';
+ }else{
+ $txtTmp1 = ' \\textcolor{crta}{'.$userAnswer['text'].'}';
+ }
+ if($polozajEnota==0){ //ce ni besedila za enoto
+ //$txtTmp1 .= " \par } ";
+ $txtTmp1 .= " } ";
+ }
+ }elseif($export_format == 'rtf'){
+ $txtTmp1 = $userAnswer['text']; //prvo stevilo
+ }
+ array_push($txtTmp, $txtTmp1); //filanje polja z besedili
+ if($drugoStevilo){ //ce je se drugo stevilo
+ if($export_format=='pdf'){
+ if($polozajEnota==0){ //ce ni besedila za enoto, rabimo odstavek za pravilen izpis
+ $txtTmp2 = " \par { ";
+ $txtTmp2 .= ' \\textcolor{crta}{'.$drugoStevilo.'}';
+ }else{
+ $txtTmp2 = ' \\textcolor{crta}{'.$drugoStevilo.'}';
+ }
+ if($polozajEnota==0){ //ce ni besedila za enoto
+ //$txtTmp2 .= " \par } ";
+ $txtTmp2 .= " } ";
+ }
+ }elseif($export_format == 'rtf'){
+ $txtTmp2 = $drugoStevilo;
+ }
+ 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
+ if($steviloOken>1){
+ $dataTextBox = " \par { ";
+ }
+ $dataTextBox .= $this->LatexTextBox($export_format, $textboxHeight, $textboxWidth, $txtTmp, $textboxAllignment, 0);
+ }else{
+ $dataTextBox = $this->LatexTextBox($export_format, $textboxHeight, $textboxWidth, $txtTmp, $textboxAllignment, 0);
+ }
+
+ if($polozajEnota==0){ //ce ni besedila za enoto
+ if($steviloOken>1){
+ //$dataTextBox .= " \par } ";
+ $dataTextBox .= " } ";
+ }
+ }
+ array_push($textBoxes, $dataTextBox);
+
+ }
+
+
+ if($polozajEnota==0){ //ce polozaja 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
+ }
+ }
+
+ 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];
+ }
+
+ }
+ //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
+ $tex .= ' & '; //skoci v nov stolpec
+ }else{
+ $tex .= ' \\\\ '; //pojdi v novo vrstico
+ }
+ }
+
+ //izpis besedila enote
+ $stringEnota = $rowVrednost['naslov'];
+ $stringEnota = Common::getInstance()->dataPiping($stringEnota, $usr_id, $loop_id);
+ $tex .= $this->encodeText($stringEnota);
+
+ if($okvir == 1){ //ce rabimo prazen okvir, izpisi
+ //izpis praznega text box-a dolocene sirine in visine
+ if($okvirVNovoVrstico){ //v novo vrstico, ce je predolg
+ $tex .= ' \\\\ '.$dataTextBox;
+ }else{
+ $tex .= ' & '.$dataTextBox;
+ }
+ }else{ //ce je podatek ob levi enoti
+ $tex .= ' & '.$txtTmp[$indeksZaWhile-1];
+ }
+
+ //echo "tex koda: ".$tex."</br>";
+
+ }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
+ //if($okvir == 1){ //ce rabimo prazen okvir, izpisi
+ //if($okvir == 1&& $textboxWidth<0.49){ //ce rabimo prazen okvir in je njegova sirina manjsa od 49, izpisi
+ if($okvir == 1&& $textboxWidth<=0.25){ //ce rabimo prazen okvir in je njegova sirina manjsa od 25, izpisi
+ $tex .= ' & '; //skoci v nov stolpec
+ }else{
+ $tex .= ' \\\\ '; //pojdi v novo vrstico
+ }
+ }
+
+ if($okvir == 1){ //ce rabimo prazen okvir, izpisi
+ //izpis praznega text box-a dolocene sirine in visine
+ $tex .= $dataTextBox;
+ }else{
+ if($indeksZaWhile!=1){
+ $tex .= ' \\\\ '; //pojdi v novo vrstico
+ }
+ $tex .= $txtTmp[$indeksZaWhile-1].' ';
+ }
+
+ //izpis besedila enote
+ if($okvirVNovoVrstico){ //v novo vrstico, ce je predolg
+ $tex .= ' \\\\ '; //pojdi v novo vrstico
+ }else{
+ $tex .= ' & '; //v nov stolpec tabele
+ }
+
+ $stringEnota = $rowVrednost['naslov'];
+ $stringEnota = Common::getInstance()->dataPiping($stringEnota, $usr_id, $loop_id);
+ $tex .= ' '.$this->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
+ }
+
+ //echo "tex koda za na desni: ".$tex."</br>";
+ }
+
+ if($drugoStevilo){
+ $izpisStevilk=1;
+ }
+
+ }
+ elseif((int)$rowVrednost['other'] != 0) { //drugace, ce imamo missinge ali podobne, jih zabelezi v polju
+ // imamo polje drugo - ne vem, zavrnil...
+ $array_others[$rowVrednost['id']] = array(
+ 'naslov'=>$rowVrednost['naslov'],
+ 'vrstni_red'=>$rowVrednost['vrstni_red'],
+ 'value'=>$text[$rowVrednost['vrstni_red']],
+ );
+
+ }
+ $oznakaOdgovora++;
+ $indeksZaWhile++;
+ }
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - konec
+
+
+/* if($polozajEnota==0){ //ce polozaja besedila enote je na NE
+ //$tex .= $texNewLine;
+ if($okvir == 1){
+ //izpis praznih text box-ov dolocene sirine in visine
+ $tex .= $this->izrisVrsticePoStolpcih($steviloStolpcevTabele, $textBoxes);
+ //izpis praznih text box-ov dolocene sirine in visine - konec
+ }else{
+ $tex .= $this->izrisVrsticePoStolpcih($steviloStolpcevTabele, $txtTmp);
+ }
+ } */
+
+ if($polozajEnota!=0){ //ce polozaja besedila enote ni na NE
+ //zakljucek tabele
+ //$tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular');
+ $tex .= $this->EndLatexTable($export_format, 'tabular', 'tabular');
+ #KONEC TABELE
+ }elseif($polozajEnota==0&&$steviloOken>1){
+ //zakljucek tabele
+ //$tex .= $this->EndLatexTable($export_format, 'tabularx', 'tabular');
+ $tex .= $this->EndLatexTable($export_format, 'tabular', 'tabular');
+ #KONEC TABELE
+ }
+ //echo "tex koda: ".$tex."</br>";
+
+/* $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
+
+ if($export_data_type==2){ //ce je kratek izpis izvoza
+ if($export_subtype=='q_data'||$export_subtype=='q_data_all'){
+ $tex .= $texNewLine; //gremo v novo vrstico, da je odgovor pod vprasanjem
+ //$tex .= '\\textcolor{crta}{'.$userAnswer['text'].'}'.$texNewLine; //izpis odgovora
+ $tex .= '\\textcolor{crta}{'.$userAnswer['text'].'}'; //izpis odgovora
+ }
+ }
+
+ if($export_data_type==1||$export_data_type==0){ //ce je dolg ali navaden izpis izvoza, izrisi drsnik
+
+ if($export_subtype=='q_data'||$export_subtype=='q_data_all'){
+ $tex .= $lang['srv_number_answer'].': \\textcolor{crta}{'.$userAnswer['text'].'}'.$texNewLine; //izpis odgovora
+ }
+
+ //zakljucek odstavka, da bo lahko drsnik sredinsko poravnan
+ $tex .= '\par'; //odstavek
+
+ #nastavitve iz baze za drsnik ##################################################################
+ $slider_handle = ($spremenljivkaParams->get('slider_handle') ? $spremenljivkaParams->get('slider_handle') : 0); //0-je rocaj, 1-ni rocaja
+
+ $slider_window_number = ($spremenljivkaParams->get('slider_window_number') ? $spremenljivkaParams->get('slider_window_number') : 0);
+
+ $slider_nakazi_odgovore = ($spremenljivkaParams->get('slider_nakazi_odgovore') ? $spremenljivkaParams->get('slider_nakazi_odgovore') : 0); //za checkbox
+
+ $slider_MinMaxNumLabelNew = ($spremenljivkaParams->get('slider_MinMaxNumLabelNew') ? $spremenljivkaParams->get('slider_MinMaxNumLabelNew') : 0); //Prikaži labele za Min in Max: 0-prikazi, 1-skrij
+
+ $slider_MinMaxLabel = ($spremenljivkaParams->get('slider_MinMaxLabel') ? $spremenljivkaParams->get('slider_MinMaxLabel') : 0); //ali sta prisotni labeli nad drsnikom oz. nad min in max vrednostjo
+ $MinLabel = ($spremenljivkaParams->get('MinLabel') ? $spremenljivkaParams->get('MinLabel') : $lang['srv_new_text']); //labela na minumumu
+ $MaxLabel = ($spremenljivkaParams->get('MaxLabel') ? $spremenljivkaParams->get('MaxLabel') : $lang['srv_new_text']); //labela na maksimumu
+
+ $slider_VmesneNumLabel = ($spremenljivkaParams->get('slider_VmesneNumLabel') ? $spremenljivkaParams->get('slider_VmesneNumLabel') : 0); //ali naj drsnika prikazuje stevilske labele med maksimumom in minimumom na spodnji strani drsnika
+ $slider_VmesneDescrLabel = ($spremenljivkaParams->get('slider_VmesneDescrLabel') ? $spremenljivkaParams->get('slider_VmesneDescrLabel') : 0); //ali naj drsnika prikazuje opisne labele med maksimumom in minimumom na spodnji strani drsnika
+
+ $slider_VmesneCrtice = ($spremenljivkaParams->get('slider_VmesneCrtice') ? $spremenljivkaParams->get('slider_VmesneCrtice') : 0); //ali imamo vmesen crtice na drsniku, za izris izvoza se bo to ignoriralo
+
+ $slider_handle_step = ($spremenljivkaParams->get('slider_handle_step') ? $spremenljivkaParams->get('slider_handle_step') : 1); //korak drsnika
+
+ $slider_MinLabel = ($spremenljivkaParams->get('slider_MinLabel') ? $spremenljivkaParams->get('slider_MinLabel') : "Minimum");
+ $slider_MaxLabel = ($spremenljivkaParams->get('slider_MaxLabel') ? $spremenljivkaParams->get('slider_MaxLabel') : "Maximum");
+
+ //vnesena minimum pa maksimum drsnika
+ $slider_MinNumLabel = ($spremenljivkaParams->get('slider_MinNumLabel') ? $spremenljivkaParams->get('slider_MinNumLabel') : 0);
+ $slider_MaxNumLabel = ($spremenljivkaParams->get('slider_MaxNumLabel') ? $spremenljivkaParams->get('slider_MaxNumLabel') : 100);
+
+
+ $slider_NumofDescrLabels = ($spremenljivkaParams->get('slider_NumofDescrLabels') ? $spremenljivkaParams->get('slider_NumofDescrLabels') : 5); //stevilo opisnih label
+ $slider_DescriptiveLabel_defaults = ($spremenljivkaParams->get('slider_DescriptiveLabel_defaults') ? $spremenljivkaParams->get('slider_DescriptiveLabel_defaults') : 0);
+ $slider_DescriptiveLabel_defaults_naslov1 = ($spremenljivkaParams->get('slider_DescriptiveLabel_defaults_naslov1') ? $spremenljivkaParams->get('slider_DescriptiveLabel_defaults_naslov1') : 0); //besedilo/string z naslovi opisnih vmesnih label
+
+ //spremenljivke za labele podrocij
+ $slider_labele_podrocij = ($spremenljivkaParams->get('slider_labele_podrocij') ? $spremenljivkaParams->get('slider_labele_podrocij') : 0); //za checkbox
+ $slider_StevLabelPodrocij = ($spremenljivkaParams->get('slider_StevLabelPodrocij') ? $spremenljivkaParams->get('slider_StevLabelPodrocij') : 3);
+ //$slider_table_td_width = 100 / $slider_StevLabelPodrocij; //spremenljivka za razporeditev sirine sliderja po podrocjih
+ //spremenljivke za labele podrocij - konec
+ #nastavitve iz baze za drsnik - konec ##################################################################
+
+ //pridobitev missing-ov za njihov izris ###############################################################
+ while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
+ if( (int)$rowVrednost['other']!=0 ){ //ce imamo missinge ali podobne, jih zabelezi v polju
+ // imamo polje drugo - ne vem, zavrnil...
+ $array_others[$rowVrednost['id']] = array(
+ 'naslov'=>$rowVrednost['naslov'],
+ 'vrstni_red'=>$rowVrednost['vrstni_red'],
+ 'value'=>$text[$rowVrednost['vrstni_red']],
+ );
+ }
+ }
+ //pridobitev missing-ov za njihov izris - konec ########################################################
+
+ //pridobitev naslovov opisnih vmesnih label za kasnejsi izris ##########################################
+ if($slider_VmesneDescrLabel){ //ce je potrebno izrisati vmesne opisne labele pod drsnikom
+ $descriptiveLabels = [];
+ if($slider_DescriptiveLabel_defaults!=0){ //ce so prednalozene opisne labele
+ $descriptiveLabels = explode(';',$slider_DescriptiveLabel_defaults_naslov1);
+ }else{ //ce so custom opisne labele
+ 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
+ if($i == 1){
+ $slider_CustomDescriptiveLabels = $slider_CustomDescriptiveLabelsTmp;
+ }else{
+ $slider_CustomDescriptiveLabels .= "; ".$slider_CustomDescriptiveLabelsTmp;
+ }
+ }
+ $descriptiveLabels = explode(';', $slider_CustomDescriptiveLabels);
+ }
+ }
+ //pridobitev naslovov opisnih vmesnih label za kasnejsi izris - konec ##################################
+
+
+ #IZRIS OPISNIH LABEL NAD DRSNIKOM #################################################
+ if($slider_MinMaxLabel){
+ //parametri tabele
+ $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}');
+
+ //vrstice in stolpci v tabeli
+ $tex .= $this->encodeText($MinLabel).' & '.$this->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 .= $texNewLine; //v novo vrstico po izrisu label
+ $tex .= '\par'; //odstavek
+ }
+ #IZRIS OPISNIH LABEL NAD DRSNIKOM - KONEC #########################################
+
+ #IZRIS DRSNIKA {dolzina}{pozicija bunkice}####################################
+ if($slider_handle==0){ //ce je rocaj na drsniku
+
+ if($export_subtype=='q_data'||$export_subtype=='q_data_all'){
+ $pozicijaBunkice = $userAnswer['text']/$slider_MaxNumLabel;
+ }elseif($export_subtype=='q_empty'||$export_subtype=='q_comment'){
+ $pozicijaBunkice=0.5;
+ }
+ //echo "pozicija bunkice na drsniku: ".$pozicijaBunkice."</br>";
+ //$tex .= '\noindent \circleSLIDER{0.9\textwidth}{'.$pozicijaBunkice.'}'; //drsnik z rocajem
+ $tex .= '{\centering \circleSLIDER{0.85\textwidth}{'.$pozicijaBunkice.'} \par}'; //drsnik z rocajem
+
+ }else{ //drugace, ce ni rocaja
+ //$tex .= '\noindent \emptySLIDER{0.9\textwidth}'; //drsnik brez rocaja
+ $tex .= '{\centering \emptySLIDER{0.85\textwidth} \par}'; //drsnik brez rocaja
+ }
+ #IZRIS DRSNIKA {dolzina}{pozicija bunkice} - KONEC ###########################
+
+ #IZRIS PRVE VRSTICE POD DRSNIKOM ##############################################
+ //ureditev parametrov za tabelo
+ $steviloStolpcevPrvaVrstica = $steviloStolpcevPrvaVrsticaOrig = ceil(($slider_MaxNumLabel-$slider_MinNumLabel+1)/$slider_handle_step);//zaokrozi navzgor izracun stevila stolpcev prve vrstice
+
+ //zaradi tezav pri izrisu vmesnih stevilk, ce je teh vec kot 21 (MAXSTEVILOSTOLPCEV), je potrebno programsko omejiti stevilo stolpcev prve vrstice
+ if($steviloStolpcevPrvaVrstica>MAXSTEVILOSTOLPCEV){
+ $steviloStolpcevPrvaVrstica = MAXSTEVILOSTOLPCEV;
+ }
+
+ $parameterTabularLabelePrvaPod='';
+ if($slider_VmesneDescrLabel){ //ce je potrebno izrisati vmesne opisne labele
+ $steviloStolpcevPrvaVrstica = $slider_NumofDescrLabels;
+ }
+
+ for($i=0; $i<$steviloStolpcevPrvaVrstica; $i++){
+ if($i==0){ //ce je prvi stolpec
+ $parameterTabularLabelePrvaPod .= ($export_format == 'pdf' ? 'X' : 'l'); //leva poravnava stolpca prilagojena sirini
+ }elseif($i==$steviloStolpcevPrvaVrstica-1){ //ce je zadnji stolpec
+ $parameterTabularLabelePrvaPod .= ($export_format == 'pdf' ? 'R' : 'l'); //desna prilagojena poravnava stolpca
+ }else{ //za vse ostale stolpce med prvi in zadnjim
+ $parameterTabularLabelePrvaPod .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava
+ }
+ }
+ //ureditev parametrov za tabelo - konec
+
+ //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.'}');
+ // \keepXColumns
+ //izris vrstice in stolpcev v tabeli
+ for($i=0; $i<$steviloStolpcevPrvaVrstica; $i++){
+ //if($slider_VmesneDescrLabel&&$slider_DescriptiveLabel_defaults!=0){//ce je potrebno izrisati vmesne opisne labele ###################
+ if($slider_VmesneDescrLabel){//ce je potrebno izrisati vmesne opisne labele ###################
+ if($i==$steviloStolpcevPrvaVrstica-1){ //ce je zadnji stolpec
+ $tex .= $descriptiveLabels[$i];
+ }else{
+ $tex .= $descriptiveLabels[$i].' & ';
+ }
+ }else{//ce je potrebno izrisati vmesne stevilske labele #######################################
+ if($i==0){ //ce je prvi stolpec
+ if($slider_MinMaxNumLabelNew==0){
+ $tex .= $slider_MinNumLabel.' & ';
+ }else{
+ $tex .= ' & ';
+ }
+ }
+ elseif($i==$steviloStolpcevPrvaVrstica-1){ //ce je zadnji stolpec
+ if($slider_MinMaxNumLabelNew==0){
+ $tex .= $slider_MaxNumLabel;
+ }
+ }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
+ if($i==1){
+ $vmesnoStevilo=$slider_MinNumLabel+$slider_handle_step;
+ }else{
+ $vmesnoStevilo=$vmesnoStevilo+$slider_handle_step;
+ }
+ }else{
+ $vmesnoStevilo='';
+ }
+ $tex .= $vmesnoStevilo.' & ';
+ }
+ }
+ }
+ //izris vrstice in stolpcev v tabeli - konec
+
+ //konec tabele
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular} \\noindent");
+ #IZRIS PRVE VRSTICE POD DRSNIKOM - KONEC ######################################
+ //echo $tex;
+
+ #IZRIS DRUGE VRSTICE POD DRSNIKOM - LABELE PODROCIJ ###########################
+ if($slider_labele_podrocij){ //ce imamo vklopljene labele podrocij
+ $tex .= $texNewLine;
+ //ureditev parametrov za tabeli
+ $parameterTabularLabeleDrugaPod='';
+ $prazniStolpciZaGraficneOznake = '';
+ for($i=0; $i<$slider_StevLabelPodrocij; $i++){
+ $parameterTabularLabeleDrugaPod .= ($export_format == 'pdf' ? '|C|' : '|c|'); //sredinska poravnava
+ $parameterTabularLabeleTretjaPod .= ($export_format == 'pdf' ? 'C' : 'c'); //sredinska poravnava
+ if($i!=0){
+ $prazniStolpciZaGraficneOznake .= ' & ';
+ }
+ }
+ $prazniStolpciZaGraficneOznake .= $texNewLine.'\hline';
+ //ureditev parametrov za tabeli - konec
+
+ //zacetek tabele z graficnimi oznakami
+ $tex .= ($export_format == 'pdf' ? '\begin{tabularx}{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 .= $texNewLine;
+
+ //zacetek tabele z naslovi label
+ $tex .= ($export_format == 'pdf' ? '\begin{tabularx}{0.9\textwidth}{'.$parameterTabularLabeleTretjaPod.'}' : '\begin{tabular}{'.$parameterTabularLabeleTretjaPod.'}');
+
+ //izris naslovov label
+ $slider_Labela_podrocja = []; //polje, ki hrani vpisane naslove labele podrocij
+ for ($i = 1; $i <= $slider_StevLabelPodrocij; $i++) { //priprava polja z naslovi
+ $slider_Labela_podrocja[$i] = ($spremenljivkaParams->get('slider_Labela_podrocja_' . $i . '') ? $spremenljivkaParams->get('slider_Labela_podrocja_' . $i . '') : $lang['srv_new_text']);
+
+ if($i==1){ //ce je prvi stolpec
+ $tex .= $slider_Labela_podrocja[$i];
+ }else{
+ $tex .= ' & '.$slider_Labela_podrocja[$i];
+ }
+
+ }
+ //izris naslovov label - konec
+
+ //konec tabele z naslovi label
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular} \\noindent");
+ }
+ #IZRIS DRUGE VRSTICE POD DRSNIKOM - LABELE PODROCIJ ###########################
+ //echo $tex;
+
+ }
+ }
+ //$tex .= ' \vspace{0.3cm} ';
+
+ // Izris polj drugo - ne vem...
+ if (count($array_others) > 0) {
+ if($export_data_type==2||$nacinVnosa==0){ //ce je skrcen izpis izvoza ALI je stevilo
+ $tex .= $texNewLine;
+ }
+ //$tex .= $texNewLine;
+ foreach ($array_others AS $oKey => $other) {
+ $tex .= $symbol.' '.$other['naslov'].' ';
+ if($postavitev!=0){
+ //if($postavitev!=0&&$nacinVnosa!=1){ //ce je 0-vodoravno ob vprasanju IN ni drsnik
+ //$tex .= $texNewLine;
+ }
+ }
+ }
+
+ 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." ";
+ }elseif($export_data_type==2 || count($array_others) > 0){ //ce je skrcen izpis izvoza ALI so missingi
+ $tex .= $this->texNewLine;
+ $tex .= $this->texNewLine;
+ }
+ }else{
+ $tex .= $this->texNewLine;
+ $tex .= $this->texNewLine;
+ if($okvir == 1){ //ce je prazen vprasalnik, dodaj se dve prazni vrstici
+ $tex .= $this->texNewLine;
+ //$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
+
+ }
+ return $tex;
+ }
+
+ }
+
+ #funkcija, ki skrbi za izris vrstice tabele po stolpcih
+ function izrisVrsticePoStolpcih($steviloStolpcevTabele=null, $array=null){
+ $tex = '';
+ for($i=0;$i<$steviloStolpcevTabele;$i++){
+ if($i!=0){ //ce ni prvi stolpec
+ $tex .= ' & '; //dodaj oznako za prehod v nov stolpec
+ }
+ $tex .= $array[$i];
+ }
+ return $tex;
+ }
+ #funkcija, ki skrbi za izris vrstice tabele po stolpcih - konec
+
+}
\ No newline at end of file diff --git a/admin/survey/export/latexclasses/Vprasanja/VsotaLatex.php b/admin/survey/export/latexclasses/Vprasanja/VsotaLatex.php new file mode 100644 index 0000000..3cd5a14 --- /dev/null +++ b/admin/survey/export/latexclasses/Vprasanja/VsotaLatex.php @@ -0,0 +1,167 @@ +<?php
+/***************************************
+ * Description: Priprava Latex kode za Vsota
+ *
+ * Vprašanje je prisotno:
+ * tip 18
+ *
+ * Autor: Patrik Pucer
+ * Datum: 09/2017
+ *****************************************/
+
+
+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);
+
+class VsotaLatex extends LatexSurveyElement
+{
+ public function __construct()
+ {
+ //parent::getGlobalVariables();
+ }
+
+ /************************************************
+ * Get instance
+ ************************************************/
+ private static $_instance;
+ protected $texBigSkip = ' \bigskip ';
+ protected $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ public static function getInstance()
+ {
+ if (self::$_instance)
+ return self::$_instance;
+
+ return new VsotaLatex();
+ }
+
+
+ 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){
+ // 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);
+ //echo "userDataPresent za spremenljivko".$spremenljivke['id']." je: ".$userDataPresent."</br>";
+
+ 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
+ global $lang;
+
+ // 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']."' AND hidden='0' ORDER BY vrstni_red");
+ $numRowsSql = mysqli_num_rows($sqlVrednosti);
+
+ $tex = '';
+
+ //nastavitve iz baze ##########################
+ $spremenljivkaParams = new enkaParameters($spremenljivke['params']);
+ //nastavitve iz baze - konec ####################
+
+ $navpicniOdgovori = array();
+ $navpicniOdgovori = [];
+
+ $odgovoriRespondenta = array();
+ $odgovoriRespondenta = [];
+
+ $texNewLineAfterTable = $texNewLine." ".$texNewLine." ".$texNewLine;
+
+ $vsota = 0;
+
+ //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)
+
+ //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']."' ");
+ $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
+ //echo "userAnswer: ".$userAnswer['text']." za vre_id: ".$rowVrednost['id']."</br>";
+ array_push($odgovoriRespondenta, '\\textcolor{crta}{'.$userAnswer['text'].'}' ); //filanje polja z odgovori respondenta
+ //ureditev polja s podatki trenutnega uporabnika - konec ##############################################
+
+ $vsota += $userAnswer['text']; //izracun sprotne vsote
+ }
+ //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - konec
+
+ if($userDataPresent){
+ //array_push($odgovoriRespondenta, $vsota ); //filanje polja z vsoto
+ array_push($odgovoriRespondenta, '\\textcolor{crta}{'.$vsota.'}' ); //filanje polja z vsoto
+ }
+
+
+ $tex .= $this->IzrisVsotaTabela($spremenljivke, $numRowsSql, $navpicniOdgovori, $odgovoriRespondenta, $texNewLine, $texNewLineAfterTable, $export_format, 0, $userDataPresent);
+
+/* $tex .= ' \break ';
+ $tex .= ' \break '; */
+ $tex .= $this->texBigSkip;
+ $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
+
+ }
+
+ return $tex;
+ }
+ }
+
+ #funkcija, ki skrbi za izris vsote v tabeli ################################
+ function IzrisVsotaTabela($spremenljivke=null, $steviloVrstic=null, $navpicniOdgovori=null, $odgovoriRespondenta=null, $texNewLine='', $texNewLineAfterTable=null, $typeOfDocument=null, $fillablePdf=null, $userDataPresent=null){
+ global $lang;
+
+ //izpis kode tabela
+ $tabela = '';
+
+ $parameterTabularL = 'rl'; //parametri za tabelo
+
+ $textVsota = $this->encodeText($spremenljivke['vsota']);
+
+ if($textVsota==''){
+ $textVsota = $lang['srv_vsota_text'];
+ }
+
+ //zacetek tabele
+ $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'tabularx', 'tabular*', 0.45, 0.2);
+
+ //argumenti za leve okvirje
+ $textboxWidthL = 0.2;
+ $textboxHeightL = 0; //ker mora biti prilagojena visina tekstu damo na 0
+ $textboxAllignment = 'c';
+ //$textboxAllignment = 'l';
+ $textboxWidth = 0.1;
+ $textboxHeight = '0.2cm';
+ $noBorders = 0;
+
+ for ($i = 1; $i <= $steviloVrstic; $i++){
+
+ $tabela .= ' '.$navpicniOdgovori[$i-1]; //odgovor pred okvirjem
+
+ //izpis latex kode za prazen okvir oz. okvir z odgovori respondenta
+ $tabela .= ' & '.$this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, $odgovoriRespondenta[$i-1], $textboxAllignment, $noBorders);
+ //izpis latex kode za okvir z odgovorom oz. okvir z odgovori respondenta
+
+ $tabela .= $texNewLine;
+
+ if($i==$steviloVrstic){
+ $tabela .= ' \hline ';
+ }
+ }
+
+ //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);
+
+ //zakljucek tabele
+ $tabela .= $this->EndLatexTable($typeOfDocument, 'tabularx', 'tabular*');
+
+ //izpis kode tabela - konec
+
+ return $tabela;
+ }
+ #funkcija, ki skrbi za izris vsote v tabeli - konec ################################
+}
\ No newline at end of file |