summaryrefslogtreecommitdiffstats
path: root/admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php')
-rw-r--r--admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php132
1 files changed, 89 insertions, 43 deletions
diff --git a/admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php b/admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php
index c93ceb0..96c1557 100644
--- a/admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php
+++ b/admin/survey/export/latexclasses/Vprasanja/RazvrscanjeLatex.php
@@ -10,9 +10,9 @@
*****************************************/
-define("PIC_SIZE", "\includegraphics[width=10cm]"); //slika sirine 50mm
-define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip
-define("RADIO_BTN_SIZE", 0.13);
+if (!defined('PIC_SIZE')) define("PIC_SIZE", "\includegraphics[width=5cm]"); //slika sirine 50mm
+if (!defined('ICON_SIZE')) define("ICON_SIZE", "\includegraphics[width=0.5cm]"); //za ikone @ slikovni tip
+if (!defined('RADIO_BTN_SIZE')) define("RADIO_BTN_SIZE", 0.13);
class RazvrscanjeLatex extends LatexSurveyElement
{
@@ -27,6 +27,7 @@ class RazvrscanjeLatex extends LatexSurveyElement
private static $_instance;
protected $texBigSkip = ' \bigskip ';
protected $loop_id = null; // id trenutnega loopa ce jih imamo
+ protected $path2ImagesRadio = null;
public static function getInstance()
{
@@ -38,8 +39,11 @@ class RazvrscanjeLatex extends LatexSurveyElement
public function export($spremenljivke=null, $export_format='', $questionText='', $fillablePdf=null, $texNewLine='', $usr_id=null, $db_table=null, $export_subtype='', $preveriSpremenljivko=null, $export_data_type=null, $loop_id=null){
+ //$time_start = microtime(true);
+ global $lang, $site_path;
// Ce je spremenljivka v loopu
$this->loop_id = $loop_id;
+ $this->path2ImagesRadio = $site_path.'uploadi/editor/';
//preveri, ce je kaj v bazi
//$userDataPresent = $this->GetUsersData($db_table, $spremenljivke['id'], $spremenljivke['tip'], $usr_id);
@@ -80,7 +84,7 @@ class RazvrscanjeLatex extends LatexSurveyElement
if($userDataPresent){ //ce so prisotni podatki respondenta
//preverjanje podatkov trenutnega uporabnika ######################################################
//$sqlUserAnswer = sisplet_query("SELECT vrstni_red FROM srv_data_rating WHERE spr_id=".$spremenljivke['id']." AND usr_id='".$this->getUserId()."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id");
- $sqlUserAnswer = sisplet_query("SELECT vrstni_red FROM srv_data_rating WHERE spr_id=".$spremenljivke['id']." AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' ");
+ $sqlUserAnswer = sisplet_query("SELECT vrstni_red FROM srv_data_rating WHERE spr_id=".$spremenljivke['id']." AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' ".($loop_id !== null ? " AND loop_id='$loop_id'" : ""));
$userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
@@ -95,7 +99,7 @@ class RazvrscanjeLatex extends LatexSurveyElement
}
if($jeOdgovor==0||$tipRazvrscanja==1){ //ce ni odgovor respondenta, bo naslov na levi strani; ali je Ostevilcevanje
- array_push($navpicniOdgovori, $this->encodeText($stringTitleRow, $rowVrednost['id']) ); //filanje polja z navpicnimi odgovori (po vrsticah)
+ array_push($navpicniOdgovori, LatexDocument::encodeText($stringTitleRow, $rowVrednost['id']) ); //filanje polja z navpicnimi odgovori (po vrsticah)
}
}
//pregled vseh moznih vrednosti (kategorij) po $sqlVrednosti - konec
@@ -103,18 +107,18 @@ class RazvrscanjeLatex extends LatexSurveyElement
if($userDataPresent&&$tipRazvrscanja!=1){ //ce so prisotni podatki respondenta in ni Ostevilcevanje
#ureditev polja s podatki trenutnega uporabnika ######################################################
//$sqlOdgovoriRespondentaString = "SELECT v.naslov, v.id from srv_vrednost v, srv_data_rating r WHERE r.spr_id=v.spr_id AND r.usr_id=".$usr_id." AND r.vre_id=v.id AND r.spr_id=".$spremenljivke['id']." ORDER BY r.vrstni_red";
- $sqlOdgovoriRespondentaString = "SELECT v.naslov, v.id from srv_vrednost v, srv_data_rating r WHERE r.spr_id=v.spr_id AND r.usr_id=".$usr_id." AND r.vre_id=v.id AND r.spr_id=".$spremenljivke['id']." AND hidden='0' ORDER BY r.vrstni_red";
+ $sqlOdgovoriRespondentaString = "SELECT v.naslov, v.id from srv_vrednost v, srv_data_rating r WHERE ".($loop_id !== null ? " r.loop_id='$loop_id' AND " : "")."r.spr_id=v.spr_id AND r.usr_id=".$usr_id." AND r.vre_id=v.id AND r.spr_id=".$spremenljivke['id']." AND hidden='0' ORDER BY r.vrstni_red";
//echo $sqlOdgovoriRespondentaString."</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']);
+ $odgovorRespondenta = LatexDocument::encodeText($rowOdgovoriRespondenta['naslov'], $rowOdgovoriRespondenta['id']);
array_push($odgovoriRespondenta, $odgovorRespondenta); //filanje polja z odgovori respondenta
}
+
//pregled vseh odgovorov respondenta razvrsceni kot morajo biti
#ureditev polja s podatki trenutnega uporabnika - konec ##############################################
}
-
//izris tabel dolocenega razvrscanja
if($export_data_type==2){ //ce je kratek izpis izvoza
$tex .= $this->IzrisRazvrscanjaKratko($spremenljivke, $steviloDesnihOkvirjev, $numRowsSql, $navpicniOdgovori, $texNewLine, $texNewLineAfterTable, $export_format, 0, $tipRazvrscanja, $odgovoriRespondenta, $export_subtype);
@@ -123,6 +127,8 @@ class RazvrscanjeLatex extends LatexSurveyElement
$tex .= $this->IzrisRazvrscanjaTabele($spremenljivke, $steviloDesnihOkvirjev, $numRowsSql, $navpicniOdgovori, $texNewLine, $texNewLineAfterTable, $export_format, 0, $tipRazvrscanja, $odgovoriRespondenta, $export_subtype);
}elseif($tipRazvrscanja==1){ //ce je Ostevilcevanje
$tex .= $this->IzrisRazvrscanja($spremenljivke, $numRowsSql, $navpicniOdgovori, $odgovoriRespondenta, $texNewLine, $export_format, 0);
+ }elseif($tipRazvrscanja==3){ //ce je Image hotspot
+ $tex .= $this->IzrisRazvrscanjaImageHotSpot($spremenljivke, $export_data_type, $odgovoriRespondenta, $texNewLine);
}
}
//izris tabel dolocenega razvrscanja - konec
@@ -135,8 +141,11 @@ class RazvrscanjeLatex extends LatexSurveyElement
}else{
$tex .= $this->texBigSkip;
}
- }
-
+ }
+ //echo "latex koda: $tex";
+ /* $time_end = microtime(true);
+ $execution_time = ($time_end - $time_start);
+ echo '<b>Total Execution Time razvrščanje:</b> '.$execution_time.' sec'; */
return $tex;
}
}
@@ -154,9 +163,9 @@ class RazvrscanjeLatex extends LatexSurveyElement
$tabela .= '\setlength{\parindent}{0.1\textwidth} ';
//prva vrstica pred tabelo z odgovori
if($typeOfDocument == 'pdf'){ //ce je pdf
- $tabela .= '\begin{tabularx}{\textwidth}{l c l} '; //izris s tabelo tabularx
+ $tabela .= '\begin{xltabular}{\textwidth}{l c l} '; //izris s tabelo xltabular
$tabela .= $lang['srv_ranking_available_categories'].': & \hspace{0.1\textwidth} & '.$lang['srv_ranking_ranked_categories1'].': '.$texNewLine;
- $tabela .= '\rule{0.4\textwidth}{0.7 pt} & & \rule{0.4\textwidth}{0.4 pt} \end{tabularx} ';
+ $tabela .= '\rule{0.4\textwidth}{0.7 pt} & & \rule{0.4\textwidth}{0.4 pt} \end{xltabular} ';
}else{ //ce je rtf
$tabela .= '\begin{tabular}{l c l} '; //izris s tabelo
$tabela .= $lang['srv_ranking_available_categories'].': & & '.$lang['srv_ranking_ranked_categories1'].': '.$texNewLine;
@@ -180,7 +189,7 @@ class RazvrscanjeLatex extends LatexSurveyElement
#################################################
//zacetek tabele
- $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'tabularx', 'tabular', 1, 0.2);
+ $tabela .= $this->StartLatexTable($typeOfDocument, $parameterTabularL, 'xltabular', 'tabular', 1, 0.2);
//argumenti za leve okvirje
$textboxWidthL = 0.25;
@@ -201,17 +210,12 @@ class RazvrscanjeLatex extends LatexSurveyElement
$textboxHeightL = 0;
}
- //echo "textboxHeightL: ".$textboxHeightL."</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(array_key_exists($i-1, $navpicniOdgovori)){
+ $textL = $tableCentering.' '.$navpicniOdgovori[$i-1]; //odgovor znotraj okvirja
+ }
if($tipRazvrscanja==2){ //ce je postavitev Premikanje
$tabela .= $indeksZaStevilaL.'. '; //pred okvirjem s kategorijo odgovora dodaj stevilko s piko
@@ -222,7 +226,7 @@ class RazvrscanjeLatex extends LatexSurveyElement
//izpis latex kode za okvir z odgovorom
if($tipRazvrscanja==0||($tipRazvrscanja==2&&count($odgovoriRespondenta)==0)){ //ce je Prestavljanje ali Premikanje in ni podatkov respondenta
- if($navpicniOdgovori[$i-1]!=''){ //ce so prisotni odgovori
+ if(array_key_exists($i-1, $navpicniOdgovori)&&($navpicniOdgovori[$i-1]!='')){ //ce so prisotni odgovori
$textVOkvirju = $textL;
}
}elseif($tipRazvrscanja==2&&count($odgovoriRespondenta)!=0){ //ce je postavitev Premikanje in imamo odgovore respondenta
@@ -232,7 +236,7 @@ class RazvrscanjeLatex extends LatexSurveyElement
//echo "text V Okvirju: ".$textVOkvirju."</br>";
//izpis latex kode za okvir z odgovorom
- if($tipRazvrscanja==0&&$navpicniOdgovori[$i-1]!=''){
+ if($tipRazvrscanja==0&&(array_key_exists($i-1, $navpicniOdgovori)&&$navpicniOdgovori[$i-1]!='')){
if($typeOfDocument == 'pdf'){ //ce je pdf
$tabela .= $this->LatexTextBox($typeOfDocument, $textboxHeightL, $textboxWidthL, $textVOkvirju, $textboxAllignmentL, 0);
}else{
@@ -245,13 +249,6 @@ class RazvrscanjeLatex extends LatexSurveyElement
$tabela .= $textVOkvirju;
}
}
-/* if(($tipRazvrscanja==0&&$navpicniOdgovori[$i-1]!='')||($tipRazvrscanja==2||$tipRazvrscanja==1)){
- if($typeOfDocument == 'pdf'){ //ce je pdf
- $tabela .= $this->LatexTextBox($typeOfDocument, $textboxHeightL, $textboxWidthL, $textVOkvirju, $textboxAllignmentL, 0);
- }else{
- $tabela .= $textVOkvirju;
- }
- } */
if($typeOfDocument == 'pdf'){
$tabela .= ' \bigskip ';
@@ -271,7 +268,7 @@ class RazvrscanjeLatex extends LatexSurveyElement
$textboxAllignmentDE = 'c'; //allignment desnega okvirja, ki je empty
if($indeksZaStevilaD <= $steviloDesnihOkvirjev){ //ce se ni preseglo zeleno stevilo desnih okvirjev
$tabela .= $indeksZaStevilaD.'. ';
- $odgovorZaIzpis = $odgovoriRespondenta[$i-1];
+ $odgovorZaIzpis = isset($odgovoriRespondenta[$i-1])?$odgovoriRespondenta[$i-1]:null;
if($typeOfDocument == 'pdf'){
//echo "odgovori respondenta na desni: ".$odgovoriRespondenta[$i-1]."</br>";
if($odgovorZaIzpis){ //ce je odgovor respondenta
@@ -307,7 +304,7 @@ class RazvrscanjeLatex extends LatexSurveyElement
}
//zakljucek tabele
- $tabela .= $this->EndLatexTable($typeOfDocument, 'tabularx', 'tabular');
+ $tabela .= $this->EndLatexTable($typeOfDocument, 'xltabular', 'tabular');
#################################################
if($tipRazvrscanja==2){ //ce je postavitev Premikanje
@@ -320,8 +317,6 @@ class RazvrscanjeLatex extends LatexSurveyElement
return $tabela;
}
#funkcija, ki skrbi za izris ustreznih tabel za razvrscanje (postavitev: Prestavljanje in Premikanje) - konec ################################
-
-
#funkcija, ki skrbi za izris ustreznih tabel za razvrscanje (postavitev: Prestavljanje in Premikanje) ################################
@@ -331,18 +326,22 @@ class RazvrscanjeLatex extends LatexSurveyElement
$textboxWidth = 0.1;
$textboxHeight = '0.2cm';
$textboxAllignment = 'c'; //dummy spremenljivka
+ $odgovorRespondenta = null;
if($typeOfDocument == 'rtf'){ //ce je rtf, zacetek tabele, kjer sta dva stolpca (prazen okvir + okvir z odgovorom)
//$tex .= '\begin{tabular}{l l} '; //izris z enostolpicno tabelo
$tex .= '\begin{tabular}{c l} '; //izris z enostolpicno tabelo
}
-
for ($i = 1; $i <= $steviloVrstic; $i++){
$tex .= ' \noindent '; //da ni premika besedila v desno
//izpis latex kode za prazen okvir oz. okvirjem z ustreznim stevilskim odgovorom
//$tex .= $this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, $odgovoriRespondenta[$i-1], $textboxAllignment, 0);
- $tex .= $this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, '\\textcolor{crta}{'.$odgovoriRespondenta[$i-1].'}', $textboxAllignment, 0);
+ if(array_key_exists($i-1, $odgovoriRespondenta)){
+ $odgovorRespondenta = $odgovoriRespondenta[$i-1];
+ }
+ //$tex .= $this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, '\\textcolor{crta}{'.$odgovoriRespondenta[$i-1].'}', $textboxAllignment, 0);
+ $tex .= $this->LatexTextBox($typeOfDocument, $textboxHeight, $textboxWidth, '\\textcolor{crta}{'.$odgovorRespondenta.'}', $textboxAllignment, 0);
if($typeOfDocument == 'rtf'){ //ce je rtf
$tex .= ' & '; //meja med stolpcema tabele 1. prazen okvir (okvir s stevilskim odgovorom), 2. navpicni odgovor
@@ -369,18 +368,19 @@ class RazvrscanjeLatex extends LatexSurveyElement
$indeksZaStevila=1;
$steviloOdgovorov=count($navpicniOdgovori);
$steviloOdgovorov=count($odgovoriRespondenta);
-
$tex = '';
-
+
//izpis stevil in odgovorov
for ($i = 1; $i <= $steviloOdgovorov; $i++){
- if($tipRazvrscanja==0||$tipRazvrscanja==2){ //ce je Prestavljanje ali Premikanje
+ $navpicniOdgovor = null;
+ if(array_key_exists(($i-1), $navpicniOdgovori)){
+ $navpicniOdgovor = $navpicniOdgovori[$i-1];
+ }
+ if($tipRazvrscanja==0||$tipRazvrscanja==2||$tipRazvrscanja==3){ //ce je Prestavljanje ali Premikanje ali image hotspot
$tex .= $indeksZaStevila.'. '; //stevilka pred odgovorom
- //$tex .= $odgovoriRespondenta[$i-1]; //odgovor
$tex .= '\\textcolor{crta}{'.$odgovoriRespondenta[$i-1].'}'; //odgovor
- }elseif($tipRazvrscanja==1){ //ce je Ostevilcevanje
- $tex .= $navpicniOdgovori[$i-1].': ';
- //$tex .= $odgovoriRespondenta[$i-1]; //odgovor
+ }elseif($tipRazvrscanja==1){ //ce je Ostevilcevanje
+ $tex .=$navpicniOdgovor.': ';
$tex .= '\\textcolor{crta}{'.$odgovoriRespondenta[$i-1].'}'; //odgovor
}
$tex .= '; ';
@@ -393,5 +393,51 @@ class RazvrscanjeLatex extends LatexSurveyElement
return $tex;
}
#funkcija, ki skrbi za izris razvrscanje za kratek izpis izvoza - konec ################################
+
+ #funkcija, ki skrbi za izris razvrscanje za kratek izpis izvoza ################################
+ function IzrisRazvrscanjaImageHotSpot($spremenljivke=null, $export_data_type=null, $odgovoriRespondenta=null, $texNewLine=''){
+ global $lang;
+ $indeksZaStevila=1;
+
+ $steviloOdgovorov=count($odgovoriRespondenta);
+ $tex = '';
+ $imageName = LatexDocument::getImageName('hotspot', $spremenljivke['id'], 'hotspot_image=');
+ $imageNameTest = $this->path2ImagesRadio.$imageName.'.png'; //za preveriti, ali obstaja slikovna datoteka na strezniku
+
+ //echo("za image hot spot ne grid: ".$imageNameTest."</br>");
+ if(filesize($imageNameTest) > 0){
+ $image = PIC_SIZE."{".$this->path2ImagesRadio."".$imageName."}"; //priprave slike predefinirane dimenzije
+ }else{
+ $image = $lang['srv_pc_unavailable'];
+ }
+
+ $tex .= $image."".$texNewLine; //izris slike
+
+ //iz baze poberi imena obmocij
+ $sqlHotSpotRegions = sisplet_query("SELECT region_name FROM srv_hotspot_regions WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red");
+
+ //izris imen obmocij po $sqlHotSpotRegions
+ $tex .= $lang['srv_export_hotspot_regions_names'].': '.$texNewLine; //besedilo "Obmocja na sliki"
+ while ($rowHotSpotRegions = mysqli_fetch_assoc($sqlHotSpotRegions))
+ {
+ $tex .= $rowHotSpotRegions['region_name'].''.$texNewLine;
+ }
+
+ if(count($odgovoriRespondenta)){
+ $tex .= $lang['srv_ranking_ranked_categories1'].": ".$texNewLine;
+ //izpis odgovorov
+ for ($i = 1; $i <= $steviloOdgovorov; $i++){
+ $tex .= '\\textcolor{crta}{'.$odgovoriRespondenta[$i-1].'}'; //odgovor
+ $tex .= ' \\\\ ';
+ $indeksZaStevila++;
+ }
+ }
+
+ $tex .= ' \\\\ ';
+ $tex .= ' \\\\ ';
+
+ return $tex;
+ }
+ #funkcija, ki skrbi za izris razvrscanje za kratek izpis izvoza - konec ################################
} \ No newline at end of file