diff --git a/admin/survey/export/latexclasses/class.LatexSurvey.php b/admin/survey/export/latexclasses/class.LatexSurvey.php
index aaf7def36..c378f6e31 100644
--- a/admin/survey/export/latexclasses/class.LatexSurvey.php
+++ b/admin/survey/export/latexclasses/class.LatexSurvey.php
@@ -11,6 +11,7 @@
include('../../vendor/autoload.php');
define("RADIO_BTN_SIZE", 0.13);
+define("PIC_SIZE_ANS", "\includegraphics[width=3cm]"); //slika dolocene sirine
class LatexSurvey{
@@ -48,6 +49,8 @@ class LatexSurvey{
protected $path2UploadedImages;
protected $language = -1; // Katero verzijo prevoda izvazamo
+
+ public static $spremenljivka;
//function __construct($anketa, $export_format){
function __construct($anketa=null, $export_format='', $export_show_intro=null, $export_show_if=null, $export_data_skip_empty=null, $export_data_skip_empty_sub=null){
@@ -209,13 +212,11 @@ class LatexSurvey{
if(isset($_GET['language'])){
$this->language = $_GET['language'];
$prevod = 1;
- }elseif($this->language!=-1){
- $prevod = 1;
}else{
$prevod = 0;
}
//preverjanje, ali je prevod - konec
-
+
//if($this->language!=-1){ //ce je prevod ankete
if($prevod){ //ce je prevod ankete
$spr_id_uvod = -1;
@@ -223,14 +224,18 @@ class LatexSurvey{
$rowl = mysqli_fetch_array($sqll); //pridobi prevod uvoda v ustreznem jeziku
$intro = $rowl['naslov']; //prevod uvoda v ustreznem jeziku
}else{
- $intro = (SurveyInfo::getInstance()->getSurveyIntro() == '') ? $lang['srv_intro'] : SurveyInfo::getInstance()->getSurveyIntro();
- }
+ //$intro = (SurveyInfo::getInstance()->getSurveyIntro() == '') ? $lang['srv_intro'] : SurveyInfo::getInstance()->getSurveyIntro();
+ $sqlIntroString = "SELECT introduction FROM srv_anketa WHERE id=".$this->anketa." ";
+ $sqlIntro = sisplet_query($sqlIntroString);
+ $rowl = mysqli_fetch_array($sqlIntro); //pridobi besedilu uvoda
+ $intro = $rowl['introduction']; //prevod uvoda v ustreznem jeziku
+ }
$tex .= $this->encodeTextHere($intro);
if($intro){
$tex .= $this->texNewLine;
$tex .= $this->texNewLine;
}
-
+ //echo "uvod: $intro";
}
}
@@ -1217,11 +1222,34 @@ class LatexSurvey{
}
#funkcija ki skrbi za encode dolocenih spornih delov besedila v latex-u prijazno
- function encodeTextHere($text='', $vre_id=0){
+ function encodeTextHere($text='', $vre_id=0, $naslovStolpca = 0, $img_id=0){
global $site_path, $lang;
-
+ //$text = str_replace(' ','X',$text); //nadomesti presledke
//echo "Encoding ".$text."";
//echo "vre_id: ".$vre_id."";
+ //echo "ime spremenljivke ".$this->variableName."";
+
+ $text = htmlspecialchars_decode($text); //vse html special chars kot je & spremeni v ustrezne simbole (npr. &=>&)
+
+ //resevanje razbirajanja predolgih neprekinjenih besed in URL - spremenljivke za kasnejsi prilagojen izpis
+ //$numOfWords = str_word_count($text, 0);
+ $numOfSpacesPrej = substr_count($text, ' '); //stevilo presledkov v besedilu
+ $stringLength = strlen($text);
+
+ $findSpace = ' ';
+ $posSpace1 = strpos($text, $findSpace); //najdi pozicijo prvega presledka v besedilu
+ $posSpace2 = strripos($text, $findSpace); //najdi pozicijo zadnjega presledka v besedilu
+
+
+ $findHttp = 'http://';
+ $findHttps = 'https://';
+ $posHttp = strpos($text, $findHttp);
+ $posHttps = strpos($text, $findHttps);
+ $isURL = 0;
+ /* if($posHttp !== false || $posHttps !== false) { //imamo URL naslov
+ $isURL = 1;
+ } */
+ //resevanje razbirajanja predolgih neprekinjenih besed in URL - konec
$this->path2UploadedImages = $site_path.'uploadi/editor/';
if($text == ''){ //ce ni teksta, vrni se
@@ -1234,6 +1262,7 @@ class LatexSurvey{
$findImgLength = strlen($findImg);
$findUl = '
';
@@ -1241,28 +1270,140 @@ class LatexSurvey{
$pos = strpos($text, $findme);
$posImg = strpos($text, $findImg);
$posUl = strpos($text, $findUl);
+ $posOl = strpos($text, $findOl);
$posLi = strpos($text, $findLi);
$posPar = strpos($text, $findPar);
-
+ //echo "pozicija paragrafa: $posPar ";
+
+ //ureditev izrisa slike
+ if($posImg !== false){
+ $numOfImgs = substr_count($text, $findImg); //stevilo '
'); //pozicija, kjer se konca html koda za img
+ $textPotem = substr($textPotem, $posImgEnd+strlen('/>')); //tekst od konca html kode za img dalje
+
+ $imageName = $this->path2UploadedImages."".$this->getImageName($text, 0, '
";
+ //error_log("iz survey element: ".$imageNameTest);
+ //echo("iz survey element imageNameTest: ".$imageNameTest."");
+ //echo "Obstaja ? ".file_exists($imageNameTest)."";
+ //echo("iz survey element imageName: ".$imageName."");
+ //echo "velikost: ".filesize($imageNameTest)."";
+/* if(filesize($imageNameTest) > 0){
+ $text = $textPrej.' '.PIC_SIZE_ANS."{".$imageName."}".' '.$textPotem;
+ }else{
+ $image = $lang['srv_pc_unavailable'];
+ $text = $textPrej.' '.$image.' '.$textPotem;
+ } */
+ $text = '';
+ //$text = $textPrej.' ';
+
+ //if(filesize($imageNameTest) > 0){
+ if(file_exists($imageNameTest)){
+ $text .= $textPrej.' '.PIC_SIZE_ANS."{".$imageName."}";
+ }else{
+ $image = $lang['srv_pc_unavailable'];
+ $text .= $image;
+ }
+ $text .= ' '.$textPotem;
+ }
+
+ //pred ureditvijo posebnih karakterjev, odstrani del teksta s kodo za sliko, da se ne pojavijo tezave zaradi imena datoteke od slike
+ $findImgCode = '\includegraphics';
+ $posOfImgCode = strpos($text, $findImgCode);
+ //echo $posOfImgCode."";
+ $textToImgCode = substr($text, 0, $posOfImgCode); //tekst do $findImgCode
+ //echo $textToImgCode."";
+ $textFromImgCode = substr($text, $posOfImgCode); //tekst po $findImgCode
+ //echo $textFromImgCode."";
+ $findImgCodeEnd = '}';
+ //$posOfImgCodeEnd = strpos($text, $findImgCodeEnd);
+ $posOfImgCodeEnd = strpos($textFromImgCode, $findImgCodeEnd);
+ //echo $posOfImgCodeEnd."";
+ $textAfterImgCode = substr($textFromImgCode, $posOfImgCodeEnd+1); //tekst po $findImgCodeEnd
+ //echo $textAfterImgCode."";
+ $textOfImgCode = substr($text, $posOfImgCode, $posOfImgCodeEnd+1);
+ //echo $textOfImgCode."";
+
+ $text = $textToImgCode.$textAfterImgCode;
+
+ //pred ureditvijo posebnih karakterjev, odstrani del teksta s kodo za sliko, da se ne pojavijo tezave zaradi imena datoteke od slike - konec
+ }
+ //ureditev izrisa slike - konec
+
//ureditev posebnih karakterjev za Latex http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters, https://en.wikibooks.org/wiki/LaTeX/Special_Characters#Other_symbols
$text = str_replace('\\','\textbackslash{} ',$text);
//$text = str_replace('{','\{',$text);
//$text = str_replace('}','\}',$text);
$text = str_replace('$','\$ ',$text);
- $text = str_replace('#','\# ',$text);
+
+ if(substr_count($text, '#')){ //ce je stevilo # vecje od 1
+ $text = str_replace('#','\#',$text);
+ }else{
+ $text = str_replace('#','\# ',$text);
+ }
$text = str_replace('%','\% ',$text);
$text = str_replace('€','\euro',$text);
$text = str_replace('^','\textasciicircum{} ',$text);
$text = str_replace('_','\_ ',$text);
$text = str_replace('~','\textasciitilde{} ',$text);
- $text = str_replace('&','\&',$text);
+ if(strpos($text, '&')){ //ce je prisotno v besedilu &'
+ $text = str_replace('&','\& ',$text);
+ }else{
+ $text = str_replace('&','\& ',$text);
+ }
+ $text = str_replace(' ','~',$text);
//$text = str_replace('<','\textless ',$text);
- $text = str_replace('<','\textless',$text);
+ $text = str_replace('<',' \textless ',$text);
//$text = str_replace('>','\textgreater ',$text);
- $text = str_replace('>','\textgreater',$text);
+ $text = str_replace('>',' \textgreater ',$text);
//ureditev posebnih karakterjev za Latex - konec
+ //ureditev grskih crk
+ $text = str_replace('α','\textalpha ',$text); //ά
+ $text = str_replace('ά','\textalpha ',$text);
+ $text = str_replace('β','\textbeta ',$text);
+ $text = str_replace('γ','\textgamma ',$text);
+ $text = str_replace('δ','\textdelta ',$text);
+ $text = str_replace('ε','\textepsilon ',$text);
+ $text = str_replace('ζ','\textzeta ',$text);
+ $text = str_replace('η','\texteta ',$text);
+ $text = str_replace('θ','\texttheta ',$text);
+ $text = str_replace('ι','\textiota ',$text);
+ $text = str_replace('κ','\textkappa ',$text);
+ $text = str_replace('λ','\textlambda ',$text);
+ $text = str_replace('μ','\textmugreek ',$text);
+ $text = str_replace('ν','\textnu ',$text);
+ $text = str_replace('ξ','\textxi ',$text);
+ //$text = str_replace('ο','o',$text); // \textomicron ne dela
+ $text = str_replace('ο','\textgreek{ο}',$text);
+ //$text = str_replace('ς','\textvarsigma ',$text);
+ $text = str_replace('ς','\textgreek{ς}',$text);
+ $text = str_replace('π','\textpi ',$text);
+ $text = str_replace('ρ','\textrho ',$text);
+ $text = str_replace('σ','\textsigma ',$text);
+ $text = str_replace('τ','\texttau ',$text);
+ $text = str_replace('υ','\textupsilon ',$text);
+ $text = str_replace('φ','\textphi ',$text);
+ $text = str_replace('χ','\textchi ',$text);
+ $text = str_replace('ψ','\textpsi ',$text);
+ $text = str_replace('ω','\textomega ',$text);
+ $text = str_replace('ύ','\textgreek{ύ}',$text);
+ //ureditev grskih crk - konec
+
+ //ureditev ostalih posebnih crk
+ $text = str_replace('ə','\textschwa ',$text);
+ //ureditev ostalih posebnih crk - konec
+
+
//ureditev preureditve html kode ul in li v latex itemize
if($posUl !== false){
//echo "text prej: ".$text."";
@@ -1272,27 +1413,133 @@ class LatexSurvey{
//if($numOfUl!=0){
if($numOfUl!=0 && $posLi !== false){ //ce imamo ul in li
$text = str_replace('','\begin{itemize} ', $text);
- $text = str_replace('- ','\item ', $text);
- $text = str_replace('
','\end{itemize} ', $text);
+ $text = str_replace('','\item ', $text);
+ $text = str_replace('- ','\item \ ', $text);
+ $text = str_replace('
- ','\end{itemize} \ ', $text);
}
//echo "prazno v html: ".strpos($text, '\r')."";
//echo "text potem: ".$text."";
######################
}
//ureditev preureditve html kode ul in li v latex itemize - konec
-
- if($posPar !== false){ //ce je kaksen html tag
, dodaj prazno vrstico oz. break
- if($numOfUl!=0 && $posLi !== false){ //ce imamo ul in li
- $divider = ' ';
- }else{
- $divider = ' \\ \\\\ ';
- }
- //$text = str_replace('
',' ', $text);
- //$text = str_replace('
',' \break ', $text);
- //$text = str_replace('
',' \\\\ ', $text);
- $text = str_replace('
', $divider, $text);
+ //ureditev preureditve html kode ol in li v latex enumerate, ki je ostevilcen
+ if($posOl !== false){
+ //echo "text prej: ".$text."";
+ $numOfOl = substr_count($text, $findOl); //stevilo '
";
+ ######################
+ //if($numOfUl!=0){
+ if($numOfOl!=0 && $posLi !== false){ //ce imamo ol in li
+ $text = str_replace('','\begin{enumerate} ', $text);
+/* $text = str_replace('- ','\item ', $text);
+ $text = str_replace('
- ','\item \ ', $text);
+ $text = str_replace('
- ','\end{enumerate} \ ', $text);
+ }
+ //echo "prazno v html: ".strpos($text, '\r')."";
+ //echo "text potem: ".$text."";
+ ######################
}
+ //ureditev preureditve html kode ol in li v latex enumerate, ki je ostevilcen - konec
+
+ //po ureditvi posebnih karakterjev, dodati del teksta s kodo za sliko, ce je slika prisotna
+ if($posImg !== false){
+ $text = substr_replace($text, $textOfImgCode, $posOfImgCode, 0);
+ }
+ //po ureditvi posebnih karakterjev, dodati del teksta s kodo za sliko, ce je slika prisotna
+
+ if($posPar !== false){ //ce je kaksen html tag
, dodaj prazno vrstico oz. break
+ if($this->variableName=='gdpr'){
+ if($numOfUl!=0 && $posLi !== false){ //ce imamo ul in li
+ $divider = ' ';
+ }else{
+ $divider = ' \\ \\\\ ';
+ }
+ $text = str_replace('
',$divider, $text);
+ }else{
+ $text = str_replace('
',' ', $text);
+ }
+ }
+
+
+ //priprava izpisa zelo dolgega besedila brez presledkov (URL, email, ...)
+ //if($numOfSpacesPrej == 0 && ($stringLength >= MAX_STRING_LENGTH)){ //ce v besedilu ni presledkov in je besedilo daljse od max dovoljene dolzine
+ if( ($numOfSpacesPrej == 0 && ($stringLength >= MAX_STRING_LENGTH)) || ($numOfSpacesPrej == 1 && $posSpace1 == $posSpace2 && $stringLength >= MAX_STRING_LENGTH)){ //ce v besedilu ni presledkov in je besedilo daljse od max dovoljene dolzine
+ //$text = "\seqsplit{".$text."}"; //ni v redu seqsplit, ker ne dela, če so posebni znaki
+ $text = substr_replace($text, $this->texNewLine, MAX_STRING_LENGTH, 0); //dodaj na ustrezni dolzini besedila prehod v novo vrstico
+ }
+ //priprava izpisa zelo dolgega besedila brez presledkov - konec
+
+ //echo "text potem: ".$text."";
+
+ //detekcija prisotnosti e-naslova v besedilu in primerna preureditev, da pride do pravilnega izpisa
+ $findAt = '@';
+ $numOfAt = substr_count($text, $findAt); //stevilo '@' v besedilu
+
+ $posAt = strpos($text, $findAt);
+ if($posAt && $posSpace1){ //ce je prisotna afna in je prisoten presledek v besedilu
+ //echo "afna je: $posAt ";
+ //echo "Encoding: ".$text."";
+
+ //najdi prvi presledek po afni
+ //echo substr($text, $posAt) ."";
+ $posSpace1Mail = strpos(substr($text, $posAt), $findSpace); //najdi pozicijo prvega presledka v besedilu po e-naslovu
+ $posSpace1Mail = $posSpace1Mail+$posAt; //koncna pozicija, ce se gleda celotno besedilo
+ //echo $posSpace1Mail."";
+
+ //najdi prvi presledek pred afno
+ $posSpace2Mail = strripos(substr($text, 0, $posAt), $findSpace); //najdi pozicijo zadnjega presledka v besedilu pred e-naslovom
+ //echo $posSpace2Mail."";
+
+ //dodaj po e-naslovu potrebno latex kodo za zakljucek url
+ $text = substr_replace($text, '}', $posSpace1Mail, 0);
+
+ //dodaj pred e-naslovom potrebno latex kodo za url
+ //substr_replace(string_name, replacement_string, start_pos, length)
+ $text = substr_replace($text, ' \url{', $posSpace2Mail+1, 0);
+ //echo $text."";
+ }
+ //detekcija prisotnosti e-naslova v besedilu in primerna preureditev, da pride do pravilnega izpisa - konec
+
+
+ //RESEVANJE BESEDILA V CIRILICI
+ $contains_cyrillic = (bool) preg_match('/[\p{Cyrillic}]/u', $text); //ali je v besedilu cirilica?
+ if($contains_cyrillic){ // ce je cirilica v besedilu
+ $text = '\foreignlanguage{russian}{'.$text.'}';
+ }
+ //RESEVANJE BESEDILA V CIRILICI - konec
+
+
+
+ //RESEVANJE odstranitve dodatnih style tag-ov po ul, ipd. #######################################################
+ $findStyleTagFull = '