false); // za shrambo parametrov in sporocil var $pdf; var $currentStyle; var $db_table = ''; public static $ss = null; //SurveyStatistic class public static $sas = null; // $sas = new SurveyAdminSettings();class protected $texNewLine = '\\\\ '; protected $texBigSkip = '\bigskip'; protected $texSmallSkip = '\smallskip'; protected $horizontalLineTex = "\\hline "; //nastavitve za prikazovanje protected $seansa = '30'; protected $times = '1 month'; protected $status = 0; protected $from = ''; protected $to = ''; protected $period = 'day'; protected $user = 'all'; //nastavitve za prikazovanje - konec protected $interval; protected $data; protected $statuses; protected $sum_data; protected $texTimeEdits=''; protected $vrsticaTex = array(); protected $seanse = null; protected $timings = null; protected $interval_criteria = array(); public static $spremenljivka=null; public static $sea = null; //SurveyEditsAnalysis class /** * @desc konstruktor */ function __construct ($anketa = null, $ssData = null) { global $site_path; global $global_user_id; global $lang; //error_log(json_encode($_GET)); // preverimo ali imamo stevilko ankete if ( is_numeric($anketa) ) { $this->anketa['id'] = $anketa; //$this->anketa['podstran'] = $podstran; //pokomentirano, ker se ne uporablja nikjer in je težava s PHP8 } else { $this->pi['msg'] = "Anketa ni izbrana!"; $this->pi['canCreate'] = false; return false; } $this->sea=new SurveyEditsAnalysis($this->anketa['id']); if ($_GET['seansa'] > 0){ //if (isset ($_GET['seansa'])){ $seansa = $_GET['seansa']; }else{ $seansa = '30'; } if (isset ($_GET['time'])){ $time = $_GET['time']; }else{ $time = '1 month'; } if (isset ($_GET['status'])){ $status = $_GET['status']; }else{ $status = 0; } if (isset ($_GET['from'])){ $from = $_GET['from']; }else{ $from = ''; } if (isset ($_GET['to'])){ $to = $_GET['to']; }else{ $to = ''; } if (isset ($_GET['user'])){ $user = $_GET['user']; }else{ $user = 'all'; } if (isset ($_GET['period'])){ $period = $_GET['period']; }else{ $period = 'day'; } $this->seansa = $seansa; $this->times = $time; $this->status = $status; $this->from = $from; $this->to = $to; $this->period = $period; $this->user = $user; // Legenda statusov $this->statuses = array( -1 => $lang['srv_vsi'], 0 => $lang['srv_urejanje'], 1 => $lang['import_data'], 2 => $lang['export_analisys'], 3 => $lang['srv_reporti'], 4 => $lang['srv_podatki'], 5 => $lang['srv_inv_nav_email'], 20 => $lang['srv_hierarchy'], // Splošni podatki o hierarhiji 21 => $lang['srv_hierarchy_structure'], // Grajenje hierarhije 22 => $lang['srv_hierarchy_users'], // Urejanje uporabnikov ); // Legenda seans $this->seanse = array( 5 => $lang['srv_edits_analysis_seansa_5min'], 10 => $lang['srv_edits_analysis_seansa_10min'], 30 => $lang['srv_edits_analysis_seansa_30min'], // Grajenje hierarhije 60 => $lang['srv_edits_analysis_seansa_60min'], // Urejanje uporabnikov ); // Legenda casov $this->timings = array( 'lifetime' => $lang['srv_edits_analysis_period_lifetime'], '1 hour' => $lang['srv_diagnostics_1 hour'], '6 hour' => $lang['srv_diagnostics_6 hour'], '12 hour' => $lang['srv_diagnostics_12 hour'], '1 day' => $lang['srv_diagnostics_1 day'], '2 day' => $lang['srv_diagnostics_2 day'], '5 day' => $lang['srv_diagnostics_5 day'], '7 day' => $lang['srv_diagnostics_7 day'], '14 day' => $lang['srv_diagnostics_14 day'], '1 month' => $lang['srv_diagnostics_1 month'], '3 month' => $lang['srv_diagnostics_3 month'], '6 month' => $lang['srv_diagnostics_6 month'], '99date' => $lang['srv_diagnostics_choose_date'], ); // Legenda intervalov $this->interval_criteria = array( 'hour' => $lang['srv_statistic_period_hour_period'], 'day' => $lang['srv_statistic_period_day_period'], ); //print_r($_GET); //create iterval - SQL where statement $this->interval = $this->sea->createInterval($time, $from, $to); //get object of all edits data $this->data = $this->sea->getData($status, $this->interval); $sum_data = $this->TimeEdits($this->data['timeEdits'], $this->seansa*60, $status); $this->sum_data = $sum_data; $this->sas = new SurveyAdminSettings(0,$this->anketa['id']); //ustvarimo SurveyStatistic objekt in mu napolnimo variable $this->ss = new SurveyStatistic(); $this->ss->Init($this->anketa['id'],true); /* $this->ss->realUsersByStatus_base = $ssData[0]; $this->ss->type = $ssData[1]; $this->ss->period = $ssData[2]; */ /* intervali se več ne pošiljajo preko get, ker se polovijo iz porfila if($ssData[1] != 'undefined') $this->ss->startDate = $ssData[1]; if($ssData[2] != 'undefined') $this->ss->endDate = $ssData[2]; $this->ss->type = $ssData[3]; $this->ss->period = $ssData[4]; //$this->ss->isDefaultFilters = false; */ //if ( SurveyInfo::getInstance()->SurveyInit($this->anketa['id']) && $this->init()) if ( SurveyInfo::getInstance()->SurveyInit($this->anketa['id'])) { $this->anketa['uid'] = $global_user_id; SurveyUserSetting::getInstance()->Init($this->anketa['id'], $this->anketa['uid']); } else return false; // ce smo prisli do tu je vse ok $this->pi['canCreate'] = true; return true; } // SETTERS && GETTERS function checkCreate() { return $this->pi['canCreate']; } function getFile($fileName='') { //Close and output PDF document ob_end_clean(); $this->pdf->Output($fileName, 'I'); } public function displayEditAnalysis() { global $lang; $texEditAnalysis = ''; // imamo vnose, prikažemo statistiko //$this->ss->PrepareDateView(); //$this->ss->PrepareStatusView(); //naslov izvoza //$texEditAnalysis .= $this->returnBold($lang['srv_edits_analysis']).$this->texNewLine.$this->texNewLine; $texEditAnalysis .= '\MakeUppercase{\huge \textbf{Status - '.$lang['srv_edits_analysis'].'}}'.$this->texBigSkip.$this->texNewLine; //$texStatus .= '\begin{tableStatus}'; /*zacetek environmenta z manjsim fontom*/ $texEditAnalysis .= '\begin{tableStatus}'; /*zacetek environmenta z manjsim fontom*/ //vrstica z nastavitvami ######################### $texEditAnalysis .= $this->returnBold($lang['srv_edits_analysis_seansa']).''.$this->seanse[$this->seansa].' '.$this->returnBold($lang['status']).''.$this->statuses[$this->status].' '.$this->returnBold($lang['in']).':'.$this->timings[$this->times].''.$this->returnBold($lang['srv_diagnostics_orfrom']).' '.$this->from.' '.$this->returnBold($lang['srv_diagnostics_to']).' '.$this->to.''; $texEditAnalysis .= $this->texBigSkip.$this->texNewLine; if(is_countable($this->data) && sizeof($this->data) == 0){ $texEditAnalysis .= $lang['srv_edits_analysis_no_data']; } else{ //Akcije urejanja ######################### $texEditAnalysis .= $this->DisplayCounter(); //prostor med tabelama $texEditAnalysis .= $this->texBigSkip.$this->texBigSkip.$this->texNewLine; //Neprekinjeno urejanje ######################### $texEditAnalysis .= $this->DisplayContinu(); //prostor med tabelama //$texEditAnalysis .= $this->texBigSkip.$this->texBigSkip.$this->texNewLine; $texEditAnalysis .= $this->texBigSkip.$this->texBigSkip; //Podrobnosti urejanja ######################### $texEditAnalysis .= $this->DisplayTimeEdits(); } //$texStatus .= '\end{tableStatus}'; /*zakljucek environmenta z manjsim fontom*/ $texEditAnalysis .= '\end{tableStatus}'; /*zakljucek environmenta z manjsim fontom*/ //echo $texEditAnalysis; return $texEditAnalysis; } /** Funkcija prikaze Akcije urejanja * */ function DisplayCounter() { global $lang; global $site_url; $tex = ''; //naslov okvirja $titleText = LatexDocument::encodeText($lang['srv_edits_analysis_counter']).$this->texNewLine; $title = $this->returnBoldAndRed($titleText); if(is_countable($this->data) && sizeof($this->data) == 0) $tex .= $lang['srv_edits_analysis_no_data']; else{ $sum_data = $this->sum_data; //izpis stevila urejevalcev $tex .= $lang['srv_edits_analysis_counter_editors'].': '.sizeof($sum_data).$this->texBigSkip.$this->texNewLine; $sum_akcij = 0; $sum_time = 0; $sum_seans = 0; //Priprava parametrov za tabelo s podatki o anketi $steviloStolpcevParameterTabular = 4; $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev; $parameterTabular = ''; $export_format = 'pdf'; for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){ //ce je prvi stolpec if($i == 0){ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|'); $parameterTabular .= 'l|'; }elseif($i == $steviloOstalihStolpcev){ //$parameterTabular .= ($export_format == 'pdf' ? 'C' : 'c'); $parameterTabular .='c'; }else{ //$parameterTabular .= ($export_format == 'pdf' ? 'C|' : 'c|'); $parameterTabular .= 'c|'; } } //Priprava parametrov za tabelo s podatki o anketi - konec //zacetek latex tabele z obrobo za prvo tabelo $pdfTable = 'tabular'; $rtfTable = 'tabular'; $pdfTableWidth = 1; $rtfTableWidth = 1; $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/ //Priprava parametrov za tabelo s podatki o anketi - konec //Priprava podatkov za izpis vrstic tabele in njihov izpis $prvaVrstica = array(); $prvaVrstica[] = LatexDocument::encodeText($lang['srv_edits_analysis_counter_editor']); $prvaVrstica[] = LatexDocument::encodeText($lang['srv_edits_analysis_time_time']); $prvaVrstica[] = LatexDocument::encodeText($lang['srv_edits_analysis_num_sessions']); $prvaVrstica[] = LatexDocument::encodeText($lang['srv_edits_analysis_time_actions']); $tex .= $this->tableRow($prvaVrstica); //Izpis 1. vrstice tabele foreach ($sum_data as $key => $value) { $vrsticaPodatki = array(); $vrsticaPodatki[] = $key; $vrsticaPodatki[] = $this->sea->calculateTimeFromSeconds($value['time_sum']); $vrsticaPodatki[] = $value['st_seans_sum']; $vrsticaPodatki[] = $value['st_akcij_sum']; $tex .= $this->tableRow($vrsticaPodatki); //Izpis vrstic tabele s podatki $sum_akcij += $value['st_akcij_sum']; $sum_time += $value['time_sum']; $sum_seans += $value['st_seans_sum']; } // vsota veljavnih $vrsticaSum = array(); $vrsticaSum[] = LatexDocument::encodeText($lang['srv_edits_analysis_time_total']); $vrsticaSum[] = $this->sea->calculateTimeFromSeconds($sum_time); $vrsticaSum[] = $sum_seans; $vrsticaSum[] = $sum_akcij; $tex .= $this->tableRow($vrsticaSum); //Izpis vrstice s sumo //Priprava podatkov za izpis vrstic tabele in njihov izpis - konec //zaljucek latex tabele s podatki $tex .= "\\end{".$pdfTable."}"; //zaljucek latex tabele s podatki - konec } //izpis tabele v okvir //$texText = $this->FrameText($title.$tex); $texText = ($title.$tex); //echo $tex; return $texText; } /** Funkcija prikaze Neprekinjeno urejanje * */ function DisplayContinu() { global $lang; $tex = ''; $sum_data = $this->sum_data; //naslov okvirja $titleText = LatexDocument::encodeText($lang['srv_edits_analysis_countinu']).$this->texNewLine; $title = $this->returnBoldAndRed($titleText); //izpis nastavitev if($this->user == 'all'){ $user = $lang['srv_edits_analysis_counter_all']; }else{ foreach ($sum_data as $email => $row) { if($row['user_id'] == $this->user){ $user = $email; } } } $tex .= $lang['srv_edits_analysis_counter_editors'].': '.$user.'; '.$lang['srv_statistic_period'].': '.$this->interval_criteria[$this->period].$this->texBigSkip.$this->texNewLine; //izpis nastavitev - konec $interval_criteria = $this->period; $user_criteria = $this->user; $continu_data = $this->sea->continuEditsQuery($this->status, $this->interval, $interval_criteria, $user_criteria); $data = $continu_data; ################## $maxValue = 0; $interval_seconds = ($interval_criteria == 'day') ? 86400 : 3600; $interval_crit = ($interval_criteria == 'day') ? '' : ' H'; if ($data) { $temp_time = null; //units $zapored = 0; $results = array(); foreach ($data as $row) { if($temp_time == null){ //$format = 'Y-m-d'.$interval_crit; $temp_time = DateTime::createFromFormat('Y-m-d'.$interval_crit, $row['formatdate']); //$temp_time = DateTime::createFromFormat($format, $row['formatdate']); } else{ //calculate seconds between actions (rounded on 3600 or 86400) $interval = $this->sea->calculateTimeBetweenActions($temp_time, DateTime::createFromFormat('Y-m-d'.$interval_crit, $row['formatdate'])); //if interval between actions are 1 unit (1 hour or 1 day), add it to continued editing session if((float) $interval/$interval_seconds-$zapored < 2){ $zapored++; //set maxValue, needed for width of bars $maxValue = max($maxValue, $zapored); } //interval is more than 1 unit apart, not in continued editing session else{ //if there is continued editing session until previous action, store it to array - ignore otherwise if($zapored > 0){ array_push($results, array('time' => $temp_time, 'zapored' => $zapored)); } //restart all $temp_time = DateTime::createFromFormat('Y-m-d'.$interval_crit, $row['formatdate']); $zapored = 0; } } } //if there is continued editing session in last actions, store it to array - ignore otherwise if($zapored > 0){ //$this->ContinuRow($temp_time, $zapored, $maxValue, $value); array_push($results, array('time' => $temp_time, 'zapored' => $zapored)); } if(!$results){ //$this->echoNoData(); $tex .= LatexDocument::encodeText($lang['srv_no_data']).$this->texNewLine; } else{ //Priprava parametrov za tabelo s podatki o anketi $steviloStolpcevParameterTabular = 2; $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev; $parameterTabular = ''; $export_format = 'pdf'; //$parameterTabular = '|'; for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){ if($i == 0){ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize=.3\hsize}X' : 'l'); //fiksna sirina prvega stolpca, da sprejme datum in uro }else{ $parameterTabular .= ($export_format == 'pdf' ? 'X' : 'l'); } } $pdfTable = 'tabularx'; $rtfTable = 'tabular'; $pdfTableWidth = 1; $rtfTableWidth = 1; $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); //Priprava parametrov za tabelo s podatki o anketi - konec //Priprava podatkov za izpis vrstic tabele in izpis vrstic //reduce bars a little $maxValue *= GRAPH_REDUCE;//najvecje stevilo //draw all data and bars foreach ($results as $row) { $text = $this->ContinuRow($row['time'], $row['zapored'], $maxValue, $interval_criteria); $tex .= $this->displayLineWithGraph($text, ($row['zapored']+1), $maxValue); } //Priprava podatkov za izpis vrstic tabele in izpis vrstic - konec //zaljucek latex tabele s podatki $tex .= "\\end{".$pdfTable."}"; //zaljucek latex tabele s podatki - konec } } else{ //$this->echoNoData(); $tex .= LatexDocument::encodeText($lang['srv_no_data']).$this->texNewLine; } ################# //izpis tabele in besedila v okvir //$texText = $this->FrameText($title.$tex); $texText = ($title.$tex); return $texText; } /** * Returns time string in exact format * @param type $temp_time - the last edit * @param type $zapored - hour of continuoed editing * @param type $maxValue - max value of bars * @param type $interval_criteria - criteria for interval - continued 'day' or 'hour' */ function ContinuRow($temp_time=null, $zapored=null, $maxValue=null, $interval_criteria=null){ $s_time = ''; $time_last = clone $temp_time; //edit DateTime get starting of continued editting session by subtracting units $temp_time->modify('- '.$zapored.' '.$interval_criteria); //if hour criteria if($interval_criteria == 'hour'){ //add 1 hour because of from to view $time_last->modify('+ 1 '.$interval_criteria); $s_time = $temp_time->format('Y-m-d H:00') .' - '. $time_last->format('H:00'); } elseif($interval_criteria == 'day'){ $s_time = $temp_time->format('Y-m-d') .' - '. $time_last->format('Y-m-d'); } return $s_time; } /** Funkcija prikaze Podrobnosti urejanja * */ function DisplayTimeEdits() { global $lang; $tex = ''; $sum_data = $this->sum_data; //naslov okvirja $titleText = LatexDocument::encodeText($lang['srv_edits_analysis_editing_details']).$this->texNewLine; $title = $this->returnBoldAndRed($titleText); $tex .= $this->texTimeEdits; //izpis tabele in besedila v okvir //$texText = $this->FrameText($title.$tex); $texText = ($title.$tex); return $texText; } /*Skrajsa tekst in doda '...' na koncu*/ function snippet($text='', $length=64, $tail="..."){ $text = trim($text); $txtl = strlen($text); if($txtl > $length) { for($i=1;$text[$length-$i]!=" ";$i++) { if($i == $length) { return substr($text,0,$length) . $tail; } } $text = substr($text,0,$length-$i+1) . $tail; } return $text; } function setUserId($usrId=null) {$this->anketa['uid'] = $usrId;} function getUserId() {return ($this->anketa['uid'])?$this->anketa['uid']:false;} function formatNumber($value=null, $digit=0, $sufix="") { if ( $value <> 0 && $value != null ) $result = round($value,$digit); else $result = "0"; $result = number_format($result, $digit, ',', '.').$sufix; return $result; } #moja funkcija encodeText function encodeText($text=''){ // popravimo sumnike ce je potrebno //$text = html_entity_decode($text, ENT_NOQUOTES, 'UTF-8'); //$text = str_replace("š","š",$text); //echo "Encoding ".$text."
"; if($text == ''){ //ce ni teksta, vrni se return; } $textOrig = $text; $findme = '
'; $findmeLength = strlen($findme); $findImg = '' v tekstu $posImg = strpos($text, $findImg); $textPrej = ''; $textPotem = ''; for($i=0; $i<$numOfImgs; $i++){ $posImg = strpos($text, $findImg); $textPrej = substr($text, 0, $posImg); //tekst do img $textPotem = substr($text, $posImg); //tekst po img, z vkljuceno hmlt kodo z img $posImgEnd = strpos($textPotem, '/>'); //pozicija, kjer se konca html koda za img $textPotem = substr($textPotem, $posImgEnd+strlen('/>')); //tekst od konca html kode za img dalje $text = $textPrej.' '.PIC_SIZE_ANS."{".$this->getImageName($text, 0, '"; $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); $text = str_replace('%','\% ',$text); $text = str_replace('€','\euro',$text); $text = str_replace('^','\textasciicircum{} ',$text); //$text = str_replace('_','\_ ',$text); $text = str_replace('_','\_',$text); $text = str_replace('~','\textasciitilde{} ',$text); $text = str_replace('&','\&',$text); $text = str_replace('&','\&',$text); //$text = str_replace('<','\textless ',$text); $text = str_replace('<','\textless',$text); //$text = str_replace('>','\textgreater ',$text); $text = str_replace('>','\textgreater',$text); $text = str_replace(' ',' ',$text); //ureditev posebnih karakterjev za Latex - 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($pos === false && $posImg === false) { //v tekstu ni br in img //return $text; /* echo "encode pred strip: ".$text."
"; echo "encode po strip: ".strip_tags($text)."
"; return strip_tags($text); */ }else { //v tekstu sta prisotna br ali img $text2Return = ''; //tekst ki bo vrnjen //ureditev preureditev html kode za novo vrstico v latex, ureditev prenosa v novo vrstico if($pos !== false){ $pos = strpos($text, $findme); $numOfBr = substr_count($text, $findme); //stevilo '
' v tekstu for($i=0; $i<$numOfBr; $i++){ if($i == 0){ //ce je prvi najdeni '
' $textPrej = substr($text, 0, $pos); $textPotem = substr($text, $pos+$findmeLength); if($i == $numOfBr-1){ $text2Return .= $textPrej.' \break '.$textPotem; }else{ $text2Return .= $textPrej.' \break '; } }else{ //drugace $pos = strpos($textPotem, $findme); $textPrej = substr($textPotem, 0, $pos); $textPotem = substr($textPotem, $pos+$findmeLength); if($i == $numOfBr-1){ $text2Return .= $textPrej.' \break '.$textPotem; }else{ $text2Return .= $textPrej.' \break '; } } } $text = $text2Return; } //ureditev preureditev html kode za novo vrstico v latex, ureditev prenosa v novo vrstico - konec /* echo "encode pred strip: ".$text."
"; echo "encode po strip: ".strip_tags($text)."
"; return strip_tags($text); //vrni tekst brez html tag-ov */ } //preveri, ce je url v besedilu (http:// ... ) in uredi Latex izpis le-tega $findHttp = 'http://'; $findHttps = 'https://'; $posHttp = strpos($text, $findHttp); $posHttps = strpos($text, $findHttps); if($posHttp !== false || $posHttps !== false) { //v imamo URL naslov $space = ' '; if($posHttp !== false){ $text = substr_replace($text, $space, ($posHttp+7), 0); }elseif($posHttps !== false){ $text = substr_replace($text, $space, ($posHttps+8), 0); } } //preveri, ce je url v besedilu (http:// ... ) in uredi Latex izpis le-tega - konec return strip_tags($text); //vrni tekst brez html tag-ov } function returnBold($text=''){ $boldedText = ''; $boldedText .= '\textbf{'.$text.'}'; return $boldedText; } function returnBoldAndRed($text=''){ //$this->naslovnicaUkaz .= ' {\\textcolor{red}{'.$lang['srv_survey_non_active1'].'}} \\\\'; $tex = ''; $tex .= ' {\\textcolor{red}{'.$text.'}} '; return $tex; } #funkcija, ki skrbi za izpis latex kode za zacetek tabele ################################################################################## #argumenti 1. export_format, 2. parametri tabele, 3. tip tabele za pdf, 4. tip tabele za rtf, 5. sirina pdf tabele (delez sirine strani), 6. sirina rtf tabele (delez sirine strani) function StartLatexTable($export_format='', $parameterTabular='', $pdfTable='', $rtfTable='', $pdfTableWidth='', $rtfTableWidth=''){ $tex = ''; //$tex .= '\keepXColumns'; if($export_format == 'pdf'){ $tex .= '\begin{'.$pdfTable.'}'; if($pdfTable=='tabularx'){ //$tex .= '{'.$pdfTableWidth.'\textwidth}'; $tex .= '{\hsize}'; } $tex .= '{ '.$parameterTabular.' }'; }elseif($export_format == 'rtf'){ $tex .= '\begin{'.$rtfTable.'}'; if($rtfTable=='tabular*'){ $tex .= '{'.$pdfTableWidth.'\textwidth}'; } $tex .= '{ '.$parameterTabular.' }'; } return $tex; } #funkcija, ki skrbi za izpis latex kode za zacetek tabele - konec ########################################################################## //omogoca izpis okvirja z dolocene sirine in visine s tekstom dolocene sirine function FrameText($text=''){ $framedText = ''; //$framedText .= '\framebox('.FRAME_WIDTH.','.FRAME_HEIGTH.')[t]{ \parbox[t]{'.FRAME_TEXT_WIDTH.'\textwidth}{'.$this->texSmallSkip.$text.'} }'; $framedText .= '\framebox('.FRAME_WIDTH.','.FRAME_HEIGTH.')[t]{ \parbox[t]{'.FRAME_WIDTH.'pt}{'.$this->texSmallSkip.$text.'} }'; return $framedText; } //function tableRow($arrayText, $brezHline=0, $brezNoveVrstice=0, $nadaljevanjeVrstice=0, $steviloPodstolpcev){ function tableRow($arrayText=null, $brezHline=0, $brezNoveVrstice=0, $nadaljevanjeVrstice=0, $color='', $export_format = null, $steviloPodstolpcev = null){ $tableRow = ''; /*$linecount = $this->pdf->getNumLines(LatexDocument::encodeText($arrayText[1]), 90); $linecount == 1 ? $height = 4.7 : $height = 4.7 + ($linecount-1)*3.3;*/ $height = 1; //$height = $this->getCellHeight(LatexDocument::encodeText($arrayText[1]), 90); /* if($arrayParams['align2'] != 'C') $arrayParams['align2'] = 'L'; */ if($export_format == 'pdf'){ if($color=='blue'){ $cellBgColor = 'cyan'; }elseif($color=='red'){ $cellBgColor = 'pink'; } $cellColoring = ' \cellcolor{'.$cellBgColor.'} '; }else{ $cellColoring = ''; } for($i=0;$i"; if($color!=''){ //ce je potrebno besedilo dolocene barve $text = $cellColoring.''.$this->coloredTextLatex($color, $arrayText[$i]); }else{ $text = $arrayText[$i]; } if($i==0&&!$nadaljevanjeVrstice&&!count($steviloPodstolpcev)){ $tableRow .= $text; } elseif($i==0&&!$nadaljevanjeVrstice&&count($steviloPodstolpcev)){ $tableRow .= ' \multicolumn{'.$steviloPodstolpcev[$i].'}{c|}{ '.$text.' }'; }elseif(count($steviloPodstolpcev)){ //ce rabimo multicolumn $tableRow .= ' & \multicolumn{'.$steviloPodstolpcev[$i].'}{c|}{ '.$text.' }'; } else{ $tableRow .= ' & '.$text; } } if(!$brezNoveVrstice){ $tableRow .= $this->texNewLine; /*nova vrstica*/ } if (!$brezHline) { //dodaj se horizontal line, ce je to potrebno (po navadi vse povsod razen npr. za tabelo s st. odklonom in povprecjem) if($export_format != 'xls'){ $tableRow .= $this->horizontalLineTex; /*obroba*/ } } //echo "Vrstica tabele: ".$tableRow."
"; return $tableRow; } //funkcija, ki skrbi za izris grafa ustrezne dolzine function drawGraphLatex($graphLineLength=null, $value=null){ $texGraph = ''; $texGraph .= '\begin{tikzpicture} \fill[crtaGraf] (0,0) -- ('.$graphLineLength.',0) -- ('.$graphLineLength.','.GRAPH_LINE_WIDTH.') -- (0,'.GRAPH_LINE_WIDTH.') -- (0,0); \end{tikzpicture} '.$value; return $texGraph; } function displayLineWithGraph($text='', $value=null, $maxValue=null){ $texStatusLine = ''; $vrsticaPodatki = array(); $vrsticaPodatki[] = $text; if($value){ //ce vrednost ni nula $graphLineLength = (GRAPH_LINE_LENGTH_MAX/$maxValue)*$value; $vrsticaPodatki[] = $this->drawGraphLatex($graphLineLength, $value); }else{ $vrsticaPodatki[] = 0; } $texStatusLine .= $this->tableRow($vrsticaPodatki,1); return $texStatusLine; } function TimeEdits($data=null, $seansa=null, $status=null){ global $lang; $tex = ''; $sum_data = array(); $datetime_last = null; $datetime_start = null; $st_akcij = 0; $st_akcij_sum = 0; $st_seans_sum = 0; $time_sum = 0; $user_temp = null; $user_id = 0; $row_id = 0; $action_type = null; $action_type_sum = null; $statuses = null; if($status == -1){ $statuses = array( 0 => array("name"=>$lang['srv_urejanje'], "sum"=>0), 1 => array("name"=>$lang['import_data'], "sum"=>0), 2 => array("name"=>$lang['export_analisys'], "sum"=>0), 3 => array("name"=>$lang['srv_reporti'], "sum"=>0), 4 => array("name"=>$lang['srv_podatki'], "sum"=>0), 5 => array("name"=>$lang['srv_inv_nav_email'], "sum"=>0), //20 => array("name"=>$lang['srv_hierarchy'], "sum"=>0),// Splošni podatki o hierarhiji //21 => array("name"=>$lang['srv_hierarchy_structure'], "sum"=>0),// Grajenje hierarhije //22 => array("name"=>$lang['srv_hierarchy_users'], "sum"=>0),// Urejanje uporabnikov ); $action_type = $statuses; $action_type_sum = $statuses; } else if($status == 0){ $statuses = array(); $action_type = array(); $action_type_sum = array(); } //echo '

'.$lang["srv_edits_analysis_editing_details"].'

'; foreach ($data as $rowGrupa) { //$post = $this->convertToJSON($rowGrupa['post']); $akcija = null; if($status == -1) $akcija = $rowGrupa['status']; else if($status == 0){ $get = $this->convertToJSON($rowGrupa['get']); $akcija = $get['a']; } //zacetek risanja if(!isset($user_temp)){ $user_temp = $rowGrupa['email']; $user_id = $rowGrupa['id']; //izpis zacetka tabele za prvega urejevalca (prvi dve vrstici z naslovi) $tex .= $this->zacetekTabelePodrobnostiLatex($user_temp, $status, $user_id); //izpis zacetka tabele za prvega urejevalca (prvi dve vrstici z naslovi) - konec } //naslednji editor else if($user_temp != $rowGrupa['email']){ //Priprava podatkov za izpis vrstic tabele in izpis vrstic ///////////////////////////////////////////////////// $time_sum += (float) $this -> TimeEditsRow($datetime_start, $datetime_last, $st_akcij, $action_type, $user_id.'_'.$row_id); //Izpis posameznih vrstic foreach($this->vrsticaTex as $vrstica){ $tex .= $vrstica; } //Izpis posameznih vrstic - konec //izrisi se zadnjo vrstico prejsnjega urejevalca //izpis vrstice podatkov za Skupaj $tex .= $this -> echoTimeEditsFootRow($time_sum, $st_akcij_sum, $action_type_sum, $user_id.'_sum'); //izpis vrstice podatkov za Skupaj - konec //izrisi se zadnjo vrstico prejsnjega urejevalca - konec //Priprava podatkov za izpis vrstic tabele in izpis vrstic - konec ///////////////////////////////////////////// //zaljucek latex tabele s podatki za prvega urejevalca $tex .= $this->konecTabelePodrobnostiLatex(); //zaljucek latex tabele s podatki za prvega urejevalca - konec //prostor po tabeli $tex .= $this->texBigSkip; $tex .=$this->texNewLine; //prostor po tabeli - konec $sum_data[$user_temp]['time_sum']=$time_sum; $sum_data[$user_temp]['st_akcij_sum']=$st_akcij_sum; $sum_data[$user_temp]['st_seans_sum']=$st_seans_sum; $sum_data[$user_temp]['user_id']=$user_id; $action_type_sum = $statuses; //nova tabela - nov urejevalec $user_temp = $rowGrupa['email']; $user_id = $rowGrupa['id']; $this->vrsticaTex = array(); //resetiranje polja s kodo vrstic ostalih urejevalcev //izpis zacetka tabele za naslednje urejevalce (prvi dve vrstici z naslovi) $tex .= $this->zacetekTabelePodrobnostiLatex($user_temp, $status, $user_id); //izpis zacetka tabele za naslednje urejevalce (prvi dve vrstici z naslovi) - konec //ponastavi spremenljivke $datetime_last = null; $datetime_start = null; $st_akcij = 0; $st_akcij_sum = 0; $st_seans_sum = 0; $time_sum = 0; } //izpis vrstic //nov start seanse if(!isset($datetime_start)){ $datetime_start = new DateTime($rowGrupa['datetime']); $st_akcij++; $st_seans_sum++; $action_type = $statuses; } //se ni druge akcije else if(!isset($datetime_last)){ $temp_time = new DateTime($rowGrupa['datetime']); $interval = $this->sea->calculateTimeBetweenActions($datetime_start, $temp_time); //ce je akcija od starta v kriteriju seanse, jo dodaj k seansi if($interval <= $seansa){ $datetime_last = clone $temp_time; $st_akcij++; } //akcija je izven kriterija seanse, izpisi samo to akcijo else{ $datetime_last = clone $datetime_start; $datetime_last->add(new DateInterval('PT5S')); $time_sum += (float) $this -> TimeEditsRow($datetime_start, $datetime_last, $st_akcij, $action_type, $user_id.'_'.$row_id); $st_akcij = 1; $st_seans_sum++; $datetime_start = clone $temp_time; $datetime_last = null; $action_type = $statuses; } } //seasna ze ima vsaj dve akciji else{ $temp_time = new DateTime($rowGrupa['datetime']); $interval = $this->sea->calculateTimeBetweenActions($datetime_last, $temp_time); //ce je akcija od prejsnje v kriteriju seanse, jo dodaj k seansi if($interval <= $seansa){ $datetime_last = clone $temp_time; $st_akcij++; } //akcija je izven kriterija seanse, izpisi vse prejsnje akcije else{ $time_sum += (float) $this -> TimeEditsRow($datetime_start, $datetime_last, $st_akcij, $action_type, $user_id.'_'.$row_id); $st_akcij = 1; $st_seans_sum++; $datetime_start = clone $temp_time; $datetime_last = null; $action_type = $statuses; } } $st_akcij_sum++; $row_id++; if($status == -1){ $action_type[$akcija]['sum'] ++; $action_type_sum[$akcija]['sum'] ++; } else if($status == 0){ $action_type[$akcija] = isset($action_type[$akcija]) ? $action_type[$akcija]+1 : 1; $action_type_sum[$akcija] = isset($action_type_sum[$akcija]) ? $action_type_sum[$akcija]+1 : 1; } } //izrisi se zadnjo vrstico, ki jo ni foreach ter footer if($datetime_last == null){ $datetime_last = clone $datetime_start; $datetime_last->add(new DateInterval('PT5S')); } $time_sum += (float) $this -> TimeEditsRow($datetime_start, $datetime_last, $st_akcij, $action_type, $user_id.'_'.$row_id); //Izpis posameznih vrstic foreach($this->vrsticaTex as $vrstica){ $tex .= $vrstica; } //Izpis posameznih vrstic - konec $tex .= $this -> echoTimeEditsFootRow($time_sum, $st_akcij_sum, $action_type_sum, $user_id.'_sum'); //Priprava podatkov za izpis vrstic tabele in izpis vrstic - konec //zaljucek latex tabele s podatki $tex .= $this->konecTabelePodrobnostiLatex(); //zaljucek latex tabele s podatki - konec $this->texTimeEdits = $tex; //echo "tex: ".$tex."
"; $sum_data[$user_temp]['time_sum']=$time_sum; $sum_data[$user_temp]['st_akcij_sum']=$st_akcij_sum; $sum_data[$user_temp]['st_seans_sum']=$st_seans_sum; $sum_data[$user_temp]['user_id']=$user_id; /* echo "time_sum: ".$time_sum."
"; echo "st_akcij_sum: ".$st_akcij_sum."
"; echo "st_seans_sum: ".$st_seans_sum."
"; echo "user_id: ".$user_id."
"; echo "action_type_sum: ".$action_type_sum."
"; */ //echo ''; return $sum_data; } /** * Nastavi in izrise vrstico urejanja * * @param type $datetime_start - datetime start of editing * @param type $datetime_last - datetime end of editing * @param type $st_akcij - num ob actions during editing * @param type $action_type - string of type of action * @param type $row_id - int sequence nuber of row (unique, for this site, no need to be ID) * @return type int - calculated second of editing session */ function TimeEditsRow($datetime_start=null, $datetime_last=null, $st_akcij=null, $action_type = null, $row_id = null){ $seconds = 0; $tex = ''; //create string of actions type $action_type_string = ($action_type != null) ? $this -> createActionsTypeString($action_type, $row_id) : null; if(isset($datetime_last)){ $seconds = $this->sea->calculateTimeBetweenActions($datetime_start, $datetime_last); $this->vrsticaTex[] = $this -> echoTimeEditsRow($datetime_last->format('Y-m-d H:i:s') .' - '. $datetime_start->format('Y-m-d H:i:s'), $this->sea->calculateTimeFromSeconds($seconds), $st_akcij, $action_type_string); } //ce je samo ena akcija else{ $this->vrsticaTex[] = $this -> echoTimeEditsRow($datetime_start->format('Y-m-d H:i:s'), 0 ,1, $action_type_string); } return $seconds; } /** * Convert false JSON (with keys without quotes and no stat and end braces) * from DB to valid JSON * @param type $toJSON string to convert to JSON (with keys without * quotes and no stat and end braces) * @return type valid converted JSON */ function convertToJSON($toJSON=''){ $toJSON = preg_replace('/("(.*?)"|(\w+))(\s*:\s*(".*?"|.))/s', '"$2$3"$4', $toJSON); $toJSON = '{'.$toJSON.'}'; return json_decode($toJSON, true); } /** * Izrise vrstico urejanja * @param type $datetime - string from to editing * @param type $cas_seanse - editing time * @param type $st_akcij - num of editing actions * @param type $action_type - string of type of action */ function echoTimeEditsRow($datetime=null, $cas_seanse=null, $st_akcij=null, $action_type = null){ $tex = ''; $latexVrstica = array(); //casovni razpon urejanja $latexVrstica[] = LatexDocument::encodeText($datetime); //cas urejanja $latexVrstica[] = LatexDocument::encodeText($cas_seanse); //stevilo akcij $latexVrstica[] = LatexDocument::encodeText($st_akcij); if($action_type != null){ //vrsta akcij $latexVrstica[] = LatexDocument::encodeText($action_type.' '); } $tex .= $this->tableRow($latexVrstica); //echo $tex; return $tex; } /** * Create/convert array of action types to string for table cell * @param type $action_type - array of action types * @param type $row_id - int sequence nuber of row (unique user int and row in table) * @return string - converter array to string to put it in table cell */ function createActionsTypeString($action_type=array(), $row_id=null){ $action_type_string = ''; //urejanje - ali drug specificen status if(!isset($action_type[0]['sum'])){ global $lang; $i = 0; foreach ($action_type as $key => $at){ /* if($i == 3) $action_type_string .= ''; if($i < 3) $action_type_string .= '
'.$key.' ('.$at.')'.'
'; else $action_type_string .= '
'.$key.' ('.$at.')'.'
'; $i++; */ $action_type_string .= $key.' ('.$at.')'.'; '; } /* if($i > 3) $action_type_string .= ''; */ } //vsi statusi else{ foreach ($action_type as $at){ if($at['sum'] > 0){ if($action_type_string != '') $action_type_string .= ' '; $action_type_string .= $at['name'].' ('.$at['sum'].')'; } } } return $action_type_string; } /** * Izrise total/footer vrstico urejanja * @param type $time - seconds of editing * @param type $st_akcij - num of editing actions * @param type $action_type - string of type of actions * @param type $row_id - int sequence nuber of user (unique, for this site, no need to be ID) */ function echoTimeEditsFootRow($time=null, $st_akcij=null, $action_type = null, $row_id = 0){ global $lang; $tex = ''; $vrsticaPodatkovSkupaj = array(); //casovni razpon urejanja $vrsticaPodatkovSkupaj[] = $this->returnBold(LatexDocument::encodeText($lang['srv_edits_analysis_time_total'])); //cas urejanja $vrsticaPodatkovSkupaj[] = $this->returnBold($this->sea->calculateTimeFromSeconds($time)); //stevilo akcij $vrsticaPodatkovSkupaj[] = $this->returnBold($st_akcij); if($action_type != null){ //vrsta akcij $vrsticaPodatkovSkupaj[] = $this->returnBold(LatexDocument::encodeText($this->createActionsTypeString($action_type, $row_id))); } $tex .= $this->tableRow($vrsticaPodatkovSkupaj); //Izpis vrstic tabele s podatki o sumi return $tex; } function zacetekTabelePodrobnostiLatex($user_temp=null, $status=null, $user_id=null){ global $lang; $tex = ''; //Priprava parametrov za tabelo s podatki o anketi $steviloStolpcevParameterTabular = 4; $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev; $parameterTabular = ''; $export_format = 'pdf'; $parameterTabular = '|'; for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){ /* if($i == 0){ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize=.3\hsize}X' : 'l'); //fiksna sirina prvega stolpca, da sprejme datum in uro }else{ $parameterTabular .= ($export_format == 'pdf' ? 'X' : 'l'); } */ $parameterTabular .= ($export_format == 'pdf' ? 'C|' : 'c|'); } $pdfTable = 'tabularx'; $rtfTable = 'tabular'; $pdfTableWidth = 1; $rtfTableWidth = 1; $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); //Priprava parametrov za tabelo s podatki o anketi - konec //Priprava podatkov za izpis vrstic tabele in izpis vrstic if($export_format != 'xls'){ $tex .= $this->horizontalLineTex; } $prvaVrstica = array(); $prvaVrstica[] = ' \multicolumn{'.$steviloStolpcevParameterTabular.'}{|c|}{ '.$user_temp.' }'; $tex .= $this->tableRow($prvaVrstica); $drugaVrstica = array(); $drugaVrstica[] = LatexDocument::encodeText($lang['srv_edits_analysis_time_span']); $drugaVrstica[] = LatexDocument::encodeText($lang['srv_edits_analysis_time_time']); $drugaVrstica[] = LatexDocument::encodeText($lang['srv_edits_analysis_time_actions']); if($status < 1){ $drugaVrstica[] = LatexDocument::encodeText($lang['srv_edits_analysis_action_type']); }else{ $drugaVrstica[] = ''; } $tex .= $this->tableRow($drugaVrstica); return $tex; } function konecTabelePodrobnostiLatex(){ $tex = "\\end{tabularx}"; return $tex; } #funkcija, ki skrbi za pridobitev imena slike, ki jo je potrebno izrisati ###################################### function getImageName($text='', $sprId=null, $findme='', $vre_id=0, $img_id=0){ global $site_path, $site_url; $imageName = ''; self::$spremenljivka = $sprId; if($text == 'hotspot' && $findme == 'hotspot_image='){ $sqlParametrov = sisplet_query("SELECT params FROM srv_spremenljivka WHERE id='".$sprId."'"); $rowParametrov = mysqli_fetch_row($sqlParametrov); $text = $rowParametrov[0]; } $pos = strpos($text, $findme); //najdi pozicijo teksta v $findme //echo "text za echo: ".$text."
"; //if($pos!=''){ //ce je slika v bazi if($pos!=''||$pos==0){ //ce je slika v bazi $imageName = substr($text,$pos); //pokazi le del text od besedila $findme dalje (vkljucno z besedilom) //echo "imageName prej: ".$imageName."
"; //$findme = $site_path.'uploadi/editor/'; $findme = $site_url.'uploadi/editor/'; //$findme = 'uploadi/editor/'; //$findme = 'editor/'; //echo "findme: ".$findme."
"; $pos = strpos($imageName, $findme); //najdi pozicijo teksta v $findme //echo "najdi tole: ".$findme."
"; //echo "najdi tukaj: ".$imageName."
"; //echo "pozicija tega: ".$pos."
"; if($pos){ //ce je slika na strezniku $slikaNaStrezniku = 1; }else{//ce slike ni na strezniku $slikaNaStrezniku = 0; } //echo "ali je slika na strežniku: ".$slikaNaStrezniku."
"; if($slikaNaStrezniku==1){ //ce je slika na strezniku $findEditor = 'editor/'; $posEditor = strpos($imageName, $findEditor); //najdi pozicijo teksta v $findEditor $imageName = substr($imageName,$posEditor+7); //pokazi le del params od besedila 'editor/' dalje, brez besedila 'editor/' //echo "imagename : ".$imageName."
"; $pos = $this->getEndPosition($imageName); //najdi pozicijo konca URL slike $imageExtension = substr($imageName, $pos-3, 3); //pridobi koncnico slike (za gif je potrebno sliko pretvoriti v png, saj latex ne podpira gif) $imageName = substr($imageName, 0, $pos); //pokazi le del params od zacetka besedila do '"' oz. konca URL slike $path = $site_path.'uploadi/editor/'.$imageName; //$path = $site_url.'uploadi/editor/'.$imageName; if($imageExtension == 'gif'){ //ce je slika gif, jo je potrebno pretvoriti v png $this->convertGifToPng($path, $slikaNaStrezniku); } if($imageExtension == 'jpg' || $imageExtension == 'peg'){ //ce je slika jpg ali jpeg, jo je potrebno pretvoriti v png $this->convertJpgToPng($path, $slikaNaStrezniku, $imageExtension); } }elseif($slikaNaStrezniku==0){ //ce slike ni na strezniku //echo "vre_id: $vre_id
"; $imageName = $this->getOnlineImageName($imageName, $slikaNaStrezniku, $vre_id, $img_id); //pridobi njen URL } $imageName = substr($imageName, 0, strrpos($imageName, '.')); } //echo "imagename pred return: ".$imageName."
"; return $imageName; } #funkcija, ki skrbi za pridobitev imena slike, ki jo je potrebno izrisati - konec ############################### function getEndPosition($imageName=''){ $findme = '"'; $pos = strpos($imageName, $findme); //najdi pozicijo teksta '"' return $pos; } function convertGifToPng($path='', $slikaNaStrezniku=null){ //echo "path: ".$path."
"; $image = imagecreatefromgif($path); //pripravi sliko iz gif za pretvorbo $imageName = substr($path, 0, -3); //ime slike brez extension-a //echo $imageName."
"; $imageNamePNG = $imageName.'png'; //ime slike z ustreznim extension imagepng($image, $imageNamePNG); //pretvori pripravljeno gif sliko v png if($slikaNaStrezniku==0){ //ce slika je iz URL in ni na strezniku, GIF izbrisi unlink($imageName.'gif'); //izbrisi gif sliko } } function convertJpgToPng($path='', $slikaNaStrezniku=null, $imageExtension=''){ $image = imagecreatefromjpeg($path); //pripravi sliko iz jpg za pretvorbo $imageName = substr($path, 0, strrpos($path, '.')); //ime slike brez extension-a //echo $imageName."
"; $imageNamePNG = $imageName.'.png'; //ime slike z ustreznim extension imagepng($image, $imageNamePNG); //pretvori pripravljeno jpg sliko v png //echo "pretvorba v png: ".$imageNamePNG."
"; //echo "xtens: ".$imageExtension."
"; //$origExtension = strrchr($path, '.'); //echo "ali je slika na strežniku: ".$slikaNaStrezniku."
"; if($slikaNaStrezniku==0){ //ce slika je iz URL in ni na strezniku, izbrisi jo //echo "tukaj
"; if($imageExtension == 'jpg'){ unlink($imageName.'.'.$imageExtension); //izbrisi sliko }elseif($imageExtension == 'peg'){ unlink($imageName.'.j'.$imageExtension); //izbrisi sliko } } } #funkcija, ki skrbi za pridobitev slike, ki se nahaja nekje online in jo je potrebno izrisati, in vrne lokalno ime slike ###################################### function getOnlineImageName($imageName='', $slikaNaStrezniku=null, $vre_id=null, $img_id=0){ global $site_path; //echo "imageName v getOnlineImageName nekje vmes 1: ".$imageName."
"; $row = Cache::srv_spremenljivka(self::$spremenljivka); //echo "sprem: ".self::$spremenljivka."
"; $spremenljivkaParams = new enkaParameters($row['params']); //echo "params: ".$spremenljivkaParams->get('hotspot_image')."
"; $imageNameTmp = $spremenljivkaParams->get('hotspot_image'); //if($imageNameTmp!=''){ //ce je hotspot if($imageNameTmp!=''&&$vre_id==0){ //ce je hotspot $imageName = $imageNameTmp; } $findHttp = 'http'; $posHttp = strpos($imageName, $findHttp); $imageName = substr($imageName,$posHttp); //besedilo do zacetka http $pos = $this->getEndPosition($imageName); //najdi pozicijo konca URL slike $imageName = substr($imageName, 0, $pos); //pokazi le del params od zacetka besedila do '"' oz. konca URL slike //echo "imageName v getOnlineImageName nekje vmes 2: ".$imageName."
"; $imageExtension = substr($imageName, $pos-3, 3); //pridobi koncnico slike //echo "imageExtension: ".$imageExtension."
"; //if($imageExtension!='jpg'&&$imageExtension!='png'&&$imageExtension!='gif'&&$imageExtension!='jpeg'){ //ce ni veljavnen extension, spremeni ga v png if($imageExtension=='jpg'||$imageExtension=='gif'||$imageExtension=='jpeg'){ //ce ni veljavnen extension, spremeni ga v png //echo "spremeni extension
"; $imageExtension='png'; } if($vre_id){ //ce se pridobiva imena tmp slik iz vrednosti vprasanja //$imgFilename = self::$spremenljivka.'_'.$vre_id.'_tmpImage.'.$imageExtension; //tmp ime slike, ki je sestavljeno iz id spremenljivke+tmpImage+extension $imgFilename = self::$spremenljivka.'_'.$vre_id.'_tmpImage_'.$img_id.'.'.$imageExtension; //tmp ime slike, ki je sestavljeno iz id spremenljivke+tmpImage+extension }else{ //$imgFilename = self::$spremenljivka.'_tmpImage.'.$imageExtension; //tmp ime slike, ki je sestavljeno iz id spremenljivke+tmpImage+extension $imgFilename = self::$spremenljivka.'_tmpImage_'.$img_id.'.'.$imageExtension; //tmp ime slike, ki je sestavljeno iz id spremenljivke+tmpImage+extension } $pathDir = $site_path.'uploadi/editor/'; //pot za novo mapo, kjer se bodo shranjevale slike za trenutno anketo $path = $pathDir.$imgFilename; //pot do datoteke z imenom datoteke # ukaz za pretakanje slike if(IS_WINDOWS){ //za windows sisteme //powershell -command "& { iwr URL -OutFile 'PATH' }" $command = 'powershell -command "& { iwr \''.$imageName.'\' -OutFile \''.$path.'\' }"'; //$command = 'wget -O \''.$imageName.'\' -O '.$path.' '; }elseif(IS_LINUX){ //za linux sisteme //exec('wget URL -P PATH '); //$command = 'wget \''.$imageName.'\' -P '.$path.' '; $command = 'wget -O '.$path.' \''.$imageName.'\' '; //echo "ukaz za pobiranje: $command
"; } //echo "command: ".$command."
"; exec($command); //pretoci sliko //$path = $pathDir.$imgFilename; //pot do datoteke z imenom datoteke /* if($imageExtension == 'gif'){ //ce je slika gif, jo je potrebno pretvoriti v png, saj latex ne podpira gif $this->convertGifToPng($path, $slikaNaStrezniku); } */ //echo "imgfilename na koncu: ".$imgFilename."
"; if($imageExtension != 'png'){ //ce slika ni png, jo pretvori if($imageExtension == 'gif'){ //ce je slika gif, jo je potrebno pretvoriti v png, saj latex ne podpira gif $this->convertGifToPng($path, $slikaNaStrezniku); }else{ $this->convertJpgToPng($path, $slikaNaStrezniku, $imageExtension); } } //echo "imgfilename na koncu: ".$imgFilename."
"; return $imgFilename; } #funkcija, ki skrbi za pridobitev slike, ki se nahaja nekje online in jo je potrebno izrisati, in vrne lokalno ime slike - konec ############################### function coloredTextLatex($color='', $text=''){ $coloredText = ''; $coloredText .= '\textcolor{'.$color.'}{'.$text.'}'; return $coloredText; } } ?>