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."
"; 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."
"; echo "visina iz nastavitev: ".$textboxHeightOrig."
"; echo "sirina iz nastavitev: ".$textboxWidth."
"; echo "sirina izracunana: ".$textboxWidth."
"; */ //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."
"; //echo "parametri tabele: ".$parameterTabular."
"; //$textboxWidth = 30 / $steviloStolpcevTabele / 100; //povozil $textboxWidth tako, da zadeva je v skladu s prejsnjimi izvozi //echo "sirina 2: ".$textboxWidth."
"; //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."
"; }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']."
"; //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']."
"; # 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']."
"; echo "položaj besedila: ".$polozajBesedila."
"; */ 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
"; //}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
"; }elseif($postavitev==0&&$polozajBesedila==2){ //zacetek tabele $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); //echo "je vodoravno ob vprašanju spodaj
"; }elseif($postavitev==0&&$steviloOken>1){ //zacetek tabele $tex .= $this->StartLatexTable($export_format, $parameterTabular, 'tabularx', 'tabular', 1, 1); //echo "stevilo oken večje in ob vprašanju
"; } } //echo "tex koda: ".$tex."
"; // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); //pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){ # po potrebi se prevede besedilo, ki se pojavi pred textbox-om $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']."
"; }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."
"; 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."
"; //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
"; }else{ //ce je rtf } } //echo "tex koda: ".$tex." in indeks $indeksZaWhile
"; 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 }