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