summaryrefslogtreecommitdiffstats
path: root/admin/survey/export/latexclasses/Analize
diff options
context:
space:
mode:
authorAnton Luka Šijanec <anton@sijanec.eu>2022-01-11 12:35:47 +0100
committerAnton Luka Šijanec <anton@sijanec.eu>2022-01-11 12:35:47 +0100
commit19985dbb8c0aa66dc4bf7905abc1148de909097d (patch)
tree2cd5a5d20d7e80fc2a51adf60d838d8a2c40999e /admin/survey/export/latexclasses/Analize
download1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.gz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.bz2
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.lz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.xz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.zst
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.zip
Diffstat (limited to 'admin/survey/export/latexclasses/Analize')
-rw-r--r--admin/survey/export/latexclasses/Analize/AnalizaBreak.php1343
-rw-r--r--admin/survey/export/latexclasses/Analize/AnalizaCReport.php1337
-rw-r--r--admin/survey/export/latexclasses/Analize/AnalizaCharts.php293
-rw-r--r--admin/survey/export/latexclasses/Analize/AnalizaCrosstab.php1320
-rw-r--r--admin/survey/export/latexclasses/Analize/AnalizaDesc.php319
-rw-r--r--admin/survey/export/latexclasses/Analize/AnalizaFreq.php384
-rw-r--r--admin/survey/export/latexclasses/Analize/AnalizaMean.php371
-rw-r--r--admin/survey/export/latexclasses/Analize/AnalizaMultiCrosstab.php1909
-rw-r--r--admin/survey/export/latexclasses/Analize/AnalizaSums.php2984
-rw-r--r--admin/survey/export/latexclasses/Analize/AnalizaTTest.php413
10 files changed, 10673 insertions, 0 deletions
diff --git a/admin/survey/export/latexclasses/Analize/AnalizaBreak.php b/admin/survey/export/latexclasses/Analize/AnalizaBreak.php
new file mode 100644
index 0000000..3317de4
--- /dev/null
+++ b/admin/survey/export/latexclasses/Analize/AnalizaBreak.php
@@ -0,0 +1,1343 @@
+<?php
+
+ global $site_path;
+
+ include_once('../../function.php');
+ include_once('../survey/definition.php');
+
+
+ define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
+ define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
+
+ define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
+ define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
+
+ define("M_ANALIZA_DESCRIPTOR", "descriptor");
+ define("M_ANALIZA_FREQUENCY", "frequency");
+
+ define("FNT_FREESERIF", "freeserif");
+ define("FNT_FREESANS", "freesans");
+ define("FNT_HELVETICA", "helvetica");
+
+ define("FNT_MAIN_TEXT", FNT_FREESANS);
+ define("FNT_QUESTION_TEXT", FNT_FREESANS);
+ define("FNT_HEADER_TEXT", FNT_FREESANS);
+
+ define("FNT_MAIN_SIZE", 10);
+ define("FNT_QUESTION_SIZE", 9);
+ define("FNT_HEADER_SIZE", 10);
+
+ define("RADIO_BTN_SIZE", 3);
+ define("CHCK_BTN_SIZE", 3);
+ define("LINE_BREAK", 6);
+
+ define ('PDF_MARGIN_HEADER', 8);
+ define ('PDF_MARGIN_FOOTER', 12);
+ define ('PDF_MARGIN_TOP', 18);
+ define ('PDF_MARGIN_BOTTOM', 18);
+ define ('PDF_MARGIN_LEFT', 15);
+ define ('PDF_MARGIN_RIGHT', 15);
+
+
+/** Class za generacijo latex
+ *
+ *
+ *
+ */
+class AnalizaBreak extends LatexAnalysisElement {
+
+ var $anketa;// = array(); // trenutna anketa
+
+ var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+ var $pdf;
+ var $currentStyle;
+ var $db_table = '';
+
+ public $breakClass = null; // break class
+ public $crosstabClass = null; // crosstab class
+
+ var $spr = 0; // spremenljivka za katero delamo razbitje
+ var $seq; // sekvenca
+
+ var $break_percent; // opcija za odstotke
+
+ public $break_charts = 0; // ali prikazujemo graf ali tabelo
+
+ var $sessionData; // podatki ki so bili prej v sessionu - za nastavitve, ki se prenasajo v izvoze...
+
+ protected $texNewLine = '\\\\ ';
+ protected $export_format;
+ protected $horizontalLineTex = "\\hline ";
+ protected $texBigSkip = '\bigskip';
+ protected $spaceBetweenTables = ' \newline \vspace*{1 cm} \newline';
+
+
+ /**
+ * @desc konstruktor
+ */
+ function __construct ($anketa = null, $podstran = 'break'){
+ global $site_path;
+ global $global_user_id;
+ // preverimo ali imamo stevilko ankete
+ //if ( is_numeric($anketa) ){
+ if ( is_numeric($anketa['id']) ){
+ //$this->anketa['id'] = $anketa;
+ $this->anketa = $anketa;
+ $this->anketa['podstran'] = $podstran;
+ }
+ else
+ {
+ $this->pi['msg'] = "Anketa ni izbrana!";
+ $this->pi['canCreate'] = false;
+ return false;
+ }
+ $_GET['a'] = A_ANALYSIS;
+
+ // preberemo nastavitve iz baze (prej v sessionu)
+ SurveyUserSession::Init($this->anketa['id']);
+ $this->sessionData = SurveyUserSession::getData();
+
+ #############################################
+/* // ustvarimo break objekt
+ $this->breakClass = new SurveyBreak($this->anketa['id']);
+ $this->spr = $this->sessionData['break']['spr'];
+ # poiščemo sekvenco
+ $this->seq = $this->sessionData['break']['seq'];
+
+ $this->break_percent = (isset($this->sessionData['break']['break_percent']) && $this->sessionData['break']['break_percent'] == false) ? false : true; */
+ #############################################
+
+ //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');
+ }
+
+
+/* function encodeText($text)
+ { // popravimo sumnike ce je potrebno
+ $text = html_entity_decode($text, ENT_NOQUOTES, 'UTF-8');
+ $text = str_replace(array("&scaron;","&#353;","&#269;"),array("š","š","č"),$text);
+ return strip_tags($text);
+ } */
+
+
+ function displayBreak($forSpr=null, $forSeq=null, $frequencys=null, $breakClass=null, $break_charts=null, $export_format='') {
+
+ $this->breakClass = $breakClass;
+ $this->break_charts = $break_charts;
+ $this->seq = $forSeq;
+ $this->spr = $forSpr;
+ $this->export_format = $export_format;
+
+ $tabela = '';
+
+ // če ne uporabljamo privzetega časovnega profila izpišemo opozorilo
+ //SurveyTimeProfiles :: printIsDefaultProfile(false);
+
+ // če imamo filter ifov ga izpišemo
+ //SurveyConditionProfiles:: getConditionString();
+
+ // če imamo filter spremenljivk ga izpišemo
+ //SurveyVariablesProfiles:: getProfileString(true);
+ //SurveyDataSettingProfiles :: getVariableTypeNote();
+
+ // če rekodiranje
+ //$SR = new SurveyRecoding($this->anketa);
+ //$SR -> getProfileString();
+
+ // filtriranje po spremenljivkah
+ $_FILTRED_VARIABLES = SurveyVariablesProfiles::getProfileVariables(SurveyVariablesProfiles::checkDefaultProfile(), true);
+
+ foreach ($this->breakClass->_HEADERS AS $skey => $spremenljivka) {
+ $spremenljivka['id'] = $skey;
+ $tip = $spremenljivka['tip'];
+
+ if ( is_numeric($tip)
+ && $tip != 4 #text
+ && $tip != 5 #label
+ && $tip != 8 #datum
+ && $tip != 9 #SN-imena
+ && $tip != 19 #multitext
+ && $tip != 21 #besedilo*
+ && ( count($_FILTRED_VARIABLES) == 0 || (count($_FILTRED_VARIABLES) > 0 && isset($_FILTRED_VARIABLES[$skey]) ))
+ ) {
+
+ $tabela .= $this->displayBreakSpremenljivka($forSpr,$frequencys,$spremenljivka);
+ } else if ( is_numeric($tip)
+ && (
+ $tip == 4 #text
+ || $tip == 19 #multitext
+ || $tip == 21 #besedilo*
+ || $tip == 20 #multi numer*
+ ) && ( count($_FILTRED_VARIABLES) == 0 || (count($_FILTRED_VARIABLES) > 0 && isset($_FILTRED_VARIABLES[$skey]) ) )
+ ) {
+ $tabela .= $this->displayBreakSpremenljivka($forSpr,$frequencys,$spremenljivka);
+ }
+ }
+ return $tabela;
+ }
+
+ function displayBreakSpremenljivka($forSpr=null,$frequencys=null,$spremenljivka=null) {
+ $tip = $spremenljivka['tip'];
+ $skala = $spremenljivka['skala'];
+ $tabela = '';
+
+ if ($forSpr != $spremenljivka['id']) {
+ switch ($tip) {
+ # radio, dropdown
+ case 1:
+ case 3:
+ $tabela .= $this->displayCrosstabs($forSpr,$frequencys,$spremenljivka);
+ break;
+ #multigrid
+ case 6:
+ if ($skala == 0) {
+ $tabela .= $this->displayBreakTableMgrid($forSpr,$frequencys,$spremenljivka);
+ } else {
+ $tabela .= $this->displayCrosstabs($forSpr,$frequencys,$spremenljivka);
+ }
+ break;
+ # checkbox
+ case 2:
+ $tabela .= $this->displayCrosstabs($forSpr,$frequencys,$spremenljivka);
+ break;
+ #number
+ case 7:
+ #ranking
+ case 17:
+ #vsota
+ case 18:
+ #multinumber
+ case 20:
+ $tabela .= $this->displayBreakTableNumber($forSpr,$frequencys,$spremenljivka);
+ break ;
+ case 19:
+ $tabela .= $this->displayBreakTableText($forSpr,$frequencys,$spremenljivka);
+ break ;
+ #multicheck
+ case 16:
+ $tabela .= $this->displayCrosstabs($forSpr,$frequencys,$spremenljivka);
+ break;
+ case 4:
+ case 21:
+ # po novem besedilo izpisujemo v klasični tabeli
+ $tabela .= $this->displayBreakTableText($forSpr,$frequencys,$spremenljivka);
+ break;
+ default:
+ $tabela .= $this->displayCrosstabs($forSpr,$frequencys,$spremenljivka);
+ break;
+ }
+ }
+ return $tabela;
+ }
+
+ function displayBreakTableMgrid($forSpr=null,$frequencys=null,$spremenljivka=null, $creport=false, $ank_id=null, $export_format=null) {
+ global $lang;
+ $tabela = '';
+ $brezHline = $this->getBrezHline($this->export_format);
+ if($creport){
+ $breakClass = new SurveyBreak($ank_id);
+ $this->breakClass = $breakClass;
+ $this->export_format = $export_format;
+ }
+ //echo "displayBreakTableMgrid funckija</br>";
+ //echo "tip vprašanja: ".$spremenljivka['tip']."</br>";
+ // Ce izrisujemo graf//
+ if($this->break_charts == 1){
+ $tabela .= $this->displayChart($forSpr,$frequencys,$spremenljivka,$type = 'mgrid');
+ }
+ // Ce izrisujemo tabelo
+ else{
+
+ $keysCount = count($frequencys);
+ $sequences = explode('_',$spremenljivka['sequences']);
+ $forSpremenljivka = $this->breakClass->_HEADERS[$forSpr];
+ $tip = $spremenljivka['tip'];
+
+ # izračunamo povprečja za posamezne sekvence
+ $means = array();
+ foreach ($frequencys AS $fkey => $fkeyFrequency) {
+ foreach ($sequences AS $sequence) {
+ $means[$fkey][$sequence] = $this->breakClass->getMeansFromKey($frequencys[$fkey][$sequence]);
+ }
+ }
+
+ if ($tip != 16 && $tip != 20) {
+ if ($tip == 1 || $tip == 3) {
+ if (count($spremenljivka['options']) < 15) {
+ $rowspan = 2;
+ $colspan = count($spremenljivka['options'])+1;
+ } else {
+ $rowspan = 1;
+ $colspan = 1;
+ }
+ } else {
+ $rowspan = 2;
+ $colspan = count($sequences);
+ }
+
+ $singleWidth = floor(200 / $colspan);
+
+ $steviloPodstolpcev = $colspan;
+
+ #preverjanje velikosti tabele
+ $mejaZaVelikeTabele = 5;
+ $velikostTabele = $steviloPodstolpcev;
+ 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 ".($steviloTabel)." </br>"; */
+ }else{
+ $presirokaTabela = 0;
+ }
+ #preverjanje velikosti tabele - konec
+
+ if($presirokaTabela == 0){ //ce tabela ni presiroka
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = $steviloPodstolpcev+1;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ //echo "steviloOstalihStolpcev v funkciji: ".$steviloOstalihStolpcev."</br>";
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ //echo "tukaj";
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($this->export_format == 'pdf' ? 'P|' : 'l|');
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ //$parameterTabular .= ($this->export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($this->export_format == 'pdf' ? 'C|' : 'c|');
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'X|' : 'l|');
+ }
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tabela .= $this->StartLatexTable($this->export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ if($this->export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ // PRVA VRSTICA
+ $prvaVrstica = array();
+ $prvaVrstica[] = $this->encodeText($forSpremenljivka['naslov'].' ('.$forSpremenljivka['variable'].')');
+ //$prvaVrstica[] = $this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].')');
+ //$prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{c|}{'.$this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].')').'}';
+ //$prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{>{\hsize=\dimexpr '.($steviloPodstolpcev).'\hsize + '.($steviloPodstolpcev).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($this->snippet($spremenljivka['naslov']).' ('.$this->snippet($spremenljivka['variable']).')').'}';
+ if($this->export_format == 'pdf'){
+ $prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{>{\hsize=\dimexpr '.($steviloPodstolpcev).'\hsize + '.($steviloPodstolpcev).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($this->snippet($spremenljivka['naslov']).' ('.$this->snippet($spremenljivka['variable']).')').'}';
+ }elseif($this->export_format == 'rtf'){
+ $prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{c|}{'.$this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].')').'}';
+ }
+
+
+ // DRUGA IN TRETJA VRSTICA
+ $drugaVrstica = array();
+ $drugaVrstica[]='';
+ $tretjaVrstica = array();
+ $tretjaVrstica[] = '';
+ //echo "tip: ".$tip."</br>";
+
+ if ($tip != 1 && $tip != 3) {
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ $text = $this->encodeText($variable['naslov'].' ('.$variable['variable'].')');
+ $drugaVrstica[]=$text;
+ $tretjaVrstica[] = $this->encodeText($lang['srv_analiza_crosstab_average']);
+ }
+ }
+ }
+ else if (count($spremenljivka['options']) < 15) {
+ //echo "options :".count($spremenljivka['options'])."</br>";
+ foreach ($spremenljivka['options'] AS $okey => $option) {
+ //$this->pdf->MultiCell($singleWidth, $height, $this->encodeText($option.' ('.$okey.')'), 1, 'C', 0, 0, 0 ,0, true);
+ $text = $this->encodeText($option.' ('.$okey.')');
+ $drugaVrstica[]=$text;
+ $tretjaVrstica[] = $this->encodeText($lang['srv_analiza_crosstab_average']);
+ }
+ //$this->pdf->MultiCell($singleWidth, $height, 'povprečje', 1, 'C', 0, 1, 0 ,0, true);
+ }
+
+ //Izpis vrstic tabele ##################
+ $tabela .= $this->tableRow($prvaVrstica,1); //izpis prve vrstice
+ if($this->export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloStolpcevParameterTabular."}"; //izpis prekinjene horizontalne crte
+ }
+
+ $tabela .= $this->tableRow($drugaVrstica,1); //izpis druge vrstice
+ if($this->export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloStolpcevParameterTabular."}"; //izpis prekinjene horizontalne crte
+ }
+
+ $tabela .= $this->tableRow($tretjaVrstica, $brezHline); //izpis tretje vrstice
+
+ // VRSTICE S PODATKI
+ foreach ($frequencys AS $fkey => $fkeyFrequency) {
+ $podatkiVrstica = array();
+ $podatkiVrstica[]=$this->encodeText($forSpremenljivka['options'][$fkey]); //naslov horizontalne vrstice
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ if ($variable['other'] != 1) {
+ $sequence = $variable['sequence'];
+ if (($tip == 1 || $tip == 3) && count($spremenljivka['options']) < 15) {
+ foreach ($spremenljivka['options'] AS $okey => $option) {
+ //$this->pdf->MultiCell($singleWidth, $height, $this->encodeText($frequencys[$fkey][$sequence]['valid'][$okey]['cnt']), 1, 'C', 0, 0, 0 ,0, true);
+ $podatkiVrstica[]=$this->encodeText($frequencys[$fkey][$sequence]['valid'][$okey]['cnt']);
+ //echo "podatkiVrstica 1 :".$this->encodeText($frequencys[$fkey][$sequence]['valid'][$okey]['cnt'])."</br>";
+ }
+ }
+ $podatkiVrstica[]=$this->formatNumber($means[$fkey][$sequence],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ //echo "podatki v vrstici: ".$this->formatNumber($means[$fkey][$sequence],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'')."</br>";
+ }
+ }
+ }
+ $tabela .= $this->tableRow($podatkiVrstica, $brezHline); //izpis vrstice s podatki
+ }
+ //Izpis vrstic tabele - konec ##################
+
+ /*zakljucek latex tabele*/
+ $tabela .= ($this->export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ /*zaljucek latex tabele - konec */
+ //echo "tabela :".$tabela."</br>";
+ }elseif($presirokaTabela == 1){ //ce tabela je presiroka
+ $izpisaneCeleTabele = 0;
+ $indeksPodatkov = 0;
+ $indeksPodatkovOld = 0;
+ $indeksPodatkov1 = 0;
+ $indeksPodatkovOld1 = 0;
+ for($p=0; $p<$steviloTabel; $p++){ //ustvarjanje podtabel
+ $indeksPodatkov1 = $indeksPodatkov;
+ $indeksPodatkovOld1 = $indeksPodatkovOld;
+ //Priprava parametrov za tabelo
+ if($izpisaneCeleTabele < $steviloTabelCelih){
+ $steviloStolpcevParameterTabular = $mejaZaVelikeTabele+1;
+ $steviloPodstolpcev = $steviloStolpcevParameterTabular;
+ }else{
+ $steviloStolpcevParameterTabular = $steviloTabelMod+1;
+ $steviloPodstolpcev = $steviloStolpcevParameterTabular;
+ }
+ $izpisaneCeleTabele++; //vecanje indeksa za belezenja stevila izpisaih celih tabel, takih, ki so velike 5 + 1 stolpcev
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ //echo "steviloOstalihStolpcev v funkciji: ".$steviloOstalihStolpcev."</br>";
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ //echo "tukaj";
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($this->export_format == 'pdf' ? 'P|' : 'l|');
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ //$parameterTabular .= ($this->export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($this->export_format == 'pdf' ? 'C|' : 'c|');
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'X|' : 'l|');
+ }
+ }
+ //echo "parametri za tabelo: ".$parameterTabular."</br>";
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tabela .= $this->StartLatexTable($this->export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ if($this->export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ // PRVA VRSTICA
+ $prvaVrstica = array();
+ $prvaVrstica[] = $this->encodeText($forSpremenljivka['naslov'].' ('.$forSpremenljivka['variable'].')');
+ if($this->export_format == 'pdf'){
+ $prvaVrstica[] = '\multicolumn{'.($steviloPodstolpcev-1).'}{>{\hsize=\dimexpr '.($steviloPodstolpcev).'\hsize + '.($steviloPodstolpcev).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($this->snippet($spremenljivka['naslov']).' ('.$this->snippet($spremenljivka['variable']).')').'}';
+ }elseif($this->export_format == 'rtf'){
+ $prvaVrstica[] = '\multicolumn{'.($steviloPodstolpcev-1).'}{c|}{'.$this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].')').'}';
+ }
+
+ // DRUGA IN TRETJA VRSTICA
+ $drugaVrstica = array();
+ $drugaVrstica[]='';
+ $tretjaVrstica = array();
+ $tretjaVrstica[] = '';
+ //echo "tip: ".$tip."</br>";
+ //echo "indeks podatkov prej: ".$indeksPodatkov."</br>";
+
+ if ($tip != 1 && $tip != 3) {
+ for($s=$indeksPodatkov; $s<($steviloPodstolpcev-1+$indeksPodatkovOld); $s++){
+ $grid = $spremenljivka['grids'][$s];
+ $text = $this->encodeText($grid['variables'][0]['naslov'].' ('.$grid['variables'][0]['variable'].')');
+ //echo "grid podatek: ".$text."</br>";
+ $drugaVrstica[] = $text;
+ $tretjaVrstica[] = $this->encodeText($lang['srv_analiza_crosstab_average']);
+ $indeksPodatkov = $s;
+ }
+ $indeksPodatkov = $indeksPodatkov + 1;
+ $indeksPodatkovOld = $indeksPodatkov;
+ }
+ else if (count($spremenljivka['options']) < 15) { //TO-DO: preureditev foreach v for, sem naredil isto kot v starih izvozih, vendar ne razumem, kdaj se to sprozi
+ //echo "options :".count($spremenljivka['options'])."</br>";
+ //echo "znotraj </br>";
+ foreach ($spremenljivka['options'] AS $okey => $option) {
+ //$this->pdf->MultiCell($singleWidth, $height, $this->encodeText($option.' ('.$okey.')'), 1, 'C', 0, 0, 0 ,0, true);
+ $text = $this->encodeText($option.' ('.$okey.')');
+ $drugaVrstica[]=$text;
+ $tretjaVrstica[] = $this->encodeText($lang['srv_analiza_crosstab_average']);
+ }
+ //$this->pdf->MultiCell($singleWidth, $height, 'povprečje', 1, 'C', 0, 1, 0 ,0, true);
+ }
+
+ //Izpis vrstic tabele ##################
+ $tabela .= $this->tableRow($prvaVrstica,1); //izpis prve vrstice
+ if($this->export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloStolpcevParameterTabular."}"; //izpis prekinjene horizontalne crte
+ }
+
+ $tabela .= $this->tableRow($drugaVrstica,1); //izpis druge vrstice
+ if($this->export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloStolpcevParameterTabular."}"; //izpis prekinjene horizontalne crte
+ }
+
+ $tabela .= $this->tableRow($tretjaVrstica, $brezHline); //izpis tretje vrstice
+ //echo "tabela: ".$tabela."</br>";
+
+ // VRSTICE S PODATKI
+ //print_r($frequencys);
+ //echo "vrstice: ".count($frequencys)."</br>";
+ //foreach ($frequencys AS $fkey => $fkeyFrequency) {
+ $steviloVrsticSPodatki = count($frequencys);
+
+ for($fkey=1; $fkey<=($steviloVrsticSPodatki); $fkey++){ //izpis vsake vrstice posebej
+ //echo "indeks freq: ".$fkey."</br>";
+ $podatkiVrstica = array();
+ $podatkiVrstica[] = $this->encodeText($forSpremenljivka['options'][$fkey]); //naslov horizontalne vrstice
+ //echo "debug text: ".$this->encodeText($forSpremenljivka['options'][$fkey])."</br>";
+
+ //foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ for($s1=$indeksPodatkov1; $s1<($steviloPodstolpcev-1+$indeksPodatkovOld1); $s1++){
+ $grid = $spremenljivka['grids'][$s1];
+ $variable = $grid['variables'][0];
+ if ($variable['other'] != 1) {
+ $sequence = $variable['sequence'];
+ //echo "sdvsdv </br>";
+ /* if (($tip == 1 || $tip == 3) && count($spremenljivka['options']) < 15) {
+ foreach ($spremenljivka['options'] AS $okey => $option) {
+ $podatkiVrstica[] = $this->encodeText($frequencys[$fkey][$sequence]['valid'][$okey]['cnt']);
+ //echo "podatki Vrstica 1 :".$this->encodeText($frequencys[$fkey][$sequence]['valid'][$okey]['cnt'])."</br>";
+ }
+ } */
+ $podatkiVrstica[] = $this->formatNumber($means[$fkey][$sequence],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+
+ //echo "podatki v vrstici: ".$this->formatNumber($means[$fkey][$sequence],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'')."</br>";
+ }
+ }
+ //print_r($podatkiVrstica);
+ $tabela .= $this->tableRow($podatkiVrstica, $brezHline); //izpis vrstice s podatki
+ //echo "indeks podatkov: ".$indeksPodatkov1."</br>";
+ //echo "limit for zanke ".(5+$indeksPodatkovOld)." </br>";
+ //echo "konec vrstice </br>";
+ }
+ //Izpis vrstic tabele - konec ##################
+
+ /*zakljucek latex tabele*/
+ $tabela .= ($this->export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ /*zaljucek latex tabele - konec */
+ //echo "tabela :".$tabela."</br>";
+
+ }
+
+
+ }
+ }else
+ {
+ $rowspan = 2;
+ $colspan = $spremenljivka['grids'][0]['cnt_vars'];
+ $singleWidth = floor(200 / $colspan);
+ //echo "colspan spodaj: ".$colspan."</br>";
+
+ # za multicheck razdelimo na grupe - skupine
+ foreach ($frequencys AS $fkey => $frequency) {
+
+/* $this->pdf->setFont('','B','6');
+ $this->pdf->MultiCell(200, 5, $this->encodeText('Tabela za: ('.$forSpremenljivka['variable'].') = '.$forSpremenljivka['options'][$fkey]), 0, 'L', 0, 1, 0 ,0, true); */
+
+
+ $text = $spremenljivka['naslov'].' ('.$spremenljivka['variable'].')';
+ $height = $this->getCellHeight($text, 260);
+ //$this->pdf->MultiCell(260, $height, $this->encodeText($text), 1, 'C', 0, 1, 0 ,0, true);
+
+ //$this->pdf->setFont('','','6');
+
+
+ foreach ($spremenljivka['grids'][0]['variables'] AS $vkey => $variable) {
+ //$height = ($this->getCellHeight($variable['naslov'], $singleWidth) > $height) ? $this->getCellHeight($variable['naslov'], $singleWidth) : $height;
+ }
+
+ //$this->pdf->MultiCell(60, $height, '', 1, 'C', 0, 0, 0 ,0, true);
+ foreach ($spremenljivka['grids'][0]['variables'] AS $vkey => $variable) {
+ //$this->pdf->MultiCell($singleWidth, $height, $this->encodeText($variable['naslov']), 1, 'C', 0, 0, 0 ,0, true);
+ }
+ //$this->pdf->MultiCell(1, $height,'', 0, 'C', 0, 1, 0 ,0, true);
+
+
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+
+ $text = '('.$grid['variable'].') '.$grid['naslov'];
+/* $height = $this->getCellHeight($text, 60);
+ $this->pdf->MultiCell(60, $height, $this->encodeText($text), 1, 'C', 0, 0, 0 ,0, true); */
+
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ $sequence = $variable['sequence'];
+
+ //$this->pdf->MultiCell($singleWidth, $height, self::formatNumber($means[$fkey][$sequence],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),''), 1, 'C', 0, 0, 0 ,0, true);
+ }
+ //$this->pdf->MultiCell(1, $height,'', 0, 'C', 0, 1, 0 ,0, true);
+ }
+ //$this->pdf->ln(10);
+ }
+ }
+ }
+ return $tabela;
+ }
+
+ function displayBreakTableNumber($forSpr=null,$frequencys=null,$spremenljivka=null, $creport=false, $ank_id=null, $export_format=null) {
+ global $lang;
+ $tabela = '';
+ $brezHline = $this->getBrezHline($this->export_format);
+
+ if($creport){
+ $breakClass = new SurveyBreak($ank_id);
+ $this->breakClass = $breakClass;
+ }
+ $keysCount = count($frequencys);
+ $sequences = explode('_',$spremenljivka['sequences']);
+ $forSpremenljivka = $this->breakClass->_HEADERS[$forSpr];
+ $tip = $spremenljivka['tip'];
+
+ # izračunamo povprečja za posamezne sekvence
+ $means = array();
+ $totalMeans = array();
+ $totalFreq = array();
+ foreach ($frequencys AS $fkey => $fkeyFrequency) {
+ foreach ($sequences AS $sequence) {
+ $means[$fkey][$sequence] = $this->breakClass->getMeansFromKey($frequencys[$fkey][$sequence]);
+ }
+ }
+
+ // Ce izrisujemo graf
+ if($this->break_charts == 1){
+
+ // Number, vsota, ranking graf
+ if($tip != 20 ){
+ //$this->displayChart($forSpr,$frequencys,$spremenljivka,$type = 'number');
+ $tabela .= $this->displayChart($forSpr,$frequencys,$spremenljivka,$type = 'number');
+ }
+
+ // Multinumber graf
+ else{
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+
+ // Izrisujemo samo 1 graf v creportu
+ if($_GET['m'] == 'analysis_creport'){
+
+ if($spremenljivka['break_sub_table']['key'] == $gkey){
+ //$this->displayChart($forSpr,$frequencys,$spremenljivka,$type = 'number');
+ $tabela .= $this->displayChart($forSpr,$frequencys,$spremenljivka,$type = 'number');
+ }
+ }
+
+ // Izrisujemo vse zaporedne grafe
+ else{
+ $spremenljivka['break_sub_table']['key'] = $gkey;
+ $spremenljivka['break_sub_table']['sequence'] = $grid['variables'][0]['sequence'];
+ $tabela .= $this->displayChart($forSpr,$frequencys,$spremenljivka,$type = 'number');
+ }
+ }
+ }
+ }
+
+ // Izrisujemo tabelo
+ else{
+ # za multi number naredimo po skupinah
+ if ($tip != 20) {
+
+ $rowspan = 3;
+ $colspan = count($sequences);
+ $singleWidth = floor(200 / $colspan);
+
+ //Priprava podatkov za prve 3 vrstice tabele
+ // DRUGA VRSTICA prva, ker potrebujemo stevilo elementov v drugi vrstici, da pripravimo izpis prve vrstice in tabele
+ $drugaVrstica = array();
+ $drugaVrstica[] = '';
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ $drugaVrstica[] = $this->encodeText($variable['naslov'].' ('.$variable['variable'].')');
+ }
+ }
+
+ // PRVA VRSTICA
+ $prvaVrstica = array();
+ $prvaVrstica[] = $this->encodeText($forSpremenljivka['naslov'].' ('.$forSpremenljivka['variable'].')');
+ //$prvaVrstica[] = $this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].')'); //\multicolumn{".$steviloVmesnihStolpcevPodvrstic."}{X|}
+ $steviloPodstolpcev = count($drugaVrstica) - 1;
+ //$prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{c|}{'.$this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].')').'}';
+ //$prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}
+ //{>{\hsize=\dimexpr '.($steviloPodstolpcev).'\hsize + '.($steviloPodstolpcev).'\tabcolsep + \arrayrulewidth}X|}
+ //{'.$this->encodeText($this->snippet($spremenljivka['naslov']).'('.$this->snippet($spremenljivka['variable']).')').'}';
+ if($this->export_format == 'pdf'){
+ $prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}
+ {>{\hsize=\dimexpr '.($steviloPodstolpcev).'\hsize + '.($steviloPodstolpcev).'\tabcolsep + \arrayrulewidth}X|}
+ {'.$this->encodeText($this->snippet($spremenljivka['naslov']).'('.$this->snippet($spremenljivka['variable']).')').'}';
+ }elseif($this->export_format == 'rtf'){
+ $prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{c|}{'.$this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].')').'}';
+ }
+
+ // TRETJA VRSTICA
+ $tretjaVrstica = array();
+ $tretjaVrstica[] = '';
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ $tretjaVrstica[] = $this->encodeText($lang['srv_analiza_crosstab_average']);
+ }
+ }
+
+ //Priprava podatkov za prve 3 vrstice tabele - konec
+
+ //Priprava parametrov za tabelo
+ //$steviloStolpcevParameterTabular = 2;
+ $steviloStolpcevParameterTabular = count($drugaVrstica);
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($this->export_format == 'pdf' ? 'P|' : 'l|');
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ //$parameterTabular .= ($this->export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($this->export_format == 'pdf' ? 'C|' : 'c|');
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'X|' : 'l|');
+ }
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tabela .= $this->StartLatexTable($this->export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ if($this->export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+
+ //Izpis vrstic tabele
+ $tabela .= $this->tableRow($prvaVrstica,1); //izpis prve vrstice
+ if($this->export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloStolpcevParameterTabular."}"; //izpis prekinjene horizontalne crte
+ }
+
+ $tabela .= $this->tableRow($drugaVrstica,1); //izpis druge vrstice
+ if($this->export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloStolpcevParameterTabular."}"; //izpis prekinjene horizontalne crte
+ }
+
+ $tabela .= $this->tableRow($tretjaVrstica, $brezHline); //izpis tretje vrstice
+
+ //VRSTICE S PODATKI - priprava in izpis podatkov
+ foreach ($frequencys AS $fkey => $fkeyFrequency) {
+ $podatkiVrstica = array();
+ $podatkiVrstica[]=$this->encodeText($forSpremenljivka['options'][$fkey]);
+
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ if ($variable['other'] != 1) {
+ $sequence = $variable['sequence'];
+ $podatkiVrstica[]=$this->formatNumber($means[$fkey][$sequence]);
+ $totalMeans[$sequence] += ($this->breakClass->getMeansFromKey($fkeyFrequency[$sequence])*(int)$frequencys[$fkey][$sequence]['validCnt']);
+ $totalFreq[$sequence]+= (int)$frequencys[$fkey][$sequence]['validCnt'];
+ }
+ }
+ }
+
+ $tabela .= $this->tableRow($podatkiVrstica, $brezHline); //izpis vrstice s podatki
+ }
+ //VRSTICE S PODATKI - priprava in izpis podatkov - konec
+
+ // dodamo še skupno sumo in povprečje
+ $sumaVrstica = array();
+ $sumaVrstica[]=$this->encodeText($lang['srv_analiza_crosstab_skupaj']);
+
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ foreach ($grid['variables'] AS $vkey => $variable) {
+
+ $sequence = $variable['sequence'];
+ if ($variable['other'] != 1) {
+ #povprečja
+ $totalMean = $totalFreq[$sequence] > 0 ? $totalMeans[$sequence] / $totalFreq[$sequence] : 0;
+ $sumaVrstica[]=$this->formatNumber($totalMean ,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ }
+ }
+ }
+
+ $tabela .= $this->tableRow($sumaVrstica, $brezHline); //izpis vrstice s sumo
+
+ //Izpis vrstic tabele - konec
+
+ /*zakljucek latex tabele*/
+ $tabela .= ($this->export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ /*zaljucek latex tabele - konec */
+ }
+
+ else {
+ $rowspan = 3;
+ $colspan = count($spremenljivka['grids'][0]['variables']);
+ $steviloPodstolpcev = $colspan;
+ $singleWidth = floor(200 / $colspan);
+ # za multinumber razdelimo na grupe - skupine
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+
+ //izpis opisnega besedila pred tabelo
+ $tabela .= $this->encodeText('Tabela za: '.$spremenljivka['naslov'].' ('.$spremenljivka['variable'].') = '.$grid['naslov'].' ('.$grid['variable'].')');
+ //$tabela .= $this->texNewLine;
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = $steviloPodstolpcev+1;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($this->export_format == 'pdf' ? 'P|' : 'l|');
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ //$parameterTabular .= ($this->export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'X|' : 'l|');
+ }
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tabela .= $this->StartLatexTable($this->export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ if($this->export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ // PRVA VRSTICA
+ $prvaVrstica = array();
+ $prvaVrstica[] = $this->encodeText($forSpremenljivka['naslov'].' ('.$forSpremenljivka['variable'].')');
+ //$prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{c|}{'.$this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].') - '.$grid['naslov'].' ('.$grid['variable'].')').'}';
+ //$prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{>{\hsize=\dimexpr '.($steviloPodstolpcev).'\hsize + '.($steviloPodstolpcev).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($this->snippet($spremenljivka['naslov']).' ('.$this->snippet($spremenljivka['variable']).') - '.$grid['naslov'].' ('.$grid['variable'].')').'}';
+ if($this->export_format == 'pdf'){
+ $prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{>{\hsize=\dimexpr '.($steviloPodstolpcev).'\hsize + '.($steviloPodstolpcev).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($this->snippet($spremenljivka['naslov']).' ('.$this->snippet($spremenljivka['variable']).') - '.$grid['naslov'].' ('.$grid['variable'].')').'}';
+ }elseif($this->export_format == 'rtf'){
+ $prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{c|}{'.$this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].') - '.$grid['naslov'].' ('.$grid['variable'].')').'}';
+ }
+
+ // DRUGA VRSTICA
+ $drugaVrstica = array();
+ $drugaVrstica[]='';
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ $text = $this->encodeText($variable['naslov'].' ('.$variable['variable'].')');
+ $drugaVrstica[]=$text;
+ }
+
+ // TRETJA VRSTICA
+ $tretjaVrstica = array();
+ $tretjaVrstica[] = '';
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ $tretjaVrstica[] = $this->encodeText($lang['srv_analiza_crosstab_average']);
+ }
+
+ //Izpis vrstic tabele
+ $tabela .= $this->tableRow($prvaVrstica,1); //izpis prve vrstice
+ if($this->export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloStolpcevParameterTabular."}"; //izpis prekinjene horizontalne crte
+ }
+
+ $tabela .= $this->tableRow($drugaVrstica,1); //izpis druge vrstice
+ if($this->export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloStolpcevParameterTabular."}"; //izpis prekinjene horizontalne crte
+ }
+
+ $tabela .= $this->tableRow($tretjaVrstica, $brezHline); //izpis tretje vrstice
+
+ // VRSTICE Z VSEBINO
+ foreach ($forSpremenljivka['options'] AS $okey => $option) {
+ $podatkiVrstica = array();
+ $podatkiVrstica[]=$this->encodeText($option);
+ //$height = $this->getCellHeight($option, 60);
+ //$this->pdf->MultiCell(60, $height, $this->encodeText($option), 1, 'C', 0, 0, 0 ,0, true);
+
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ $sequence = $variable['sequence'];
+ #povprečje
+ //$this->pdf->MultiCell($singleWidth, $height, self::formatNumber($means[$okey][$sequence],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),''), 1, 'C', 0, 0, 0 ,0, true);
+ $podatkiVrstica[]=$this->formatNumber($means[$okey][$sequence],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+
+ $totalMeans[$sequence] += ($means[$okey][$sequence]*(int)$frequencys[$okey][$sequence]['validCnt']);
+ $totalFreq[$sequence]+= (int)$frequencys[$okey][$sequence]['validCnt'];
+ }
+
+ $tabela .= $this->tableRow($podatkiVrstica, $brezHline); //izpis vrstice s podatki
+ }
+
+ // dodamo še skupno sumo in povprečje
+ $sumaVrstica = array();
+ $sumaVrstica[]=$this->encodeText($lang['srv_analiza_crosstab_skupaj']);
+
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ $sequence = $variable['sequence'];
+ if ($variable['other'] != 1) {
+ #povprečja
+ $totalMean = $totalFreq[$sequence] > 0 ? $totalMeans[$sequence] / $totalFreq[$sequence] : 0;
+ $sumaVrstica[]=$this->formatNumber($totalMean ,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+
+ }
+ }
+ $tabela .= $this->tableRow($sumaVrstica, $brezHline); //izpis vrstice s sumo
+
+ //Izpis vrstic tabele - konec
+
+ /*zakljucek latex tabele*/
+ $tabela .= ($this->export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ /*zaljucek latex tabele - konec */
+ }
+ }
+ }
+ return $tabela;
+ }
+
+ function displayBreakTableText($forSpr=null,$frequencys=null,$spremenljivka=null, $creport=false, $ank_id=null, $export_format=null) {
+ global $lang;
+ $tabela = '';
+ $brezHline = $this->getBrezHline($this->export_format);
+ if($creport){
+ $breakClass = new SurveyBreak($ank_id);
+ $this->breakClass = $breakClass;
+ }
+ $keysCount = count($frequencys);
+ $sequences = explode('_',$spremenljivka['sequences']);
+ $forSpremenljivka = $this->breakClass->_HEADERS[$forSpr];
+ $tip = $spremenljivka['tip'];
+
+ # izračunamo povprečja za posamezne sekvence
+ $texts = array();
+ $forSequences = array();
+ foreach ($frequencys AS $fkey => $fkeyFrequency) {
+ foreach ($sequences AS $sequence) {
+ $texts[$fkey][$sequence] = $this->breakClass->getTextFromKey($fkeyFrequency[$sequence]);
+ }
+ }
+
+ $rowspan = 2;
+ $colspan = count($spremenljivka['grids'][0]['variables']);
+
+ $steviloPodstolpcev = $colspan;
+
+ $singleWidth = floor(200 / $colspan);
+
+
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+
+ //izpis opisnega besedila pred tabelo
+ $tabela .= $this->encodeText('Tabela za: '.$spremenljivka['naslov'].' ('.$spremenljivka['variable'].') = '.$grid['naslov'].' ('.$grid['variable'].')');
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = $steviloPodstolpcev+1;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($this->export_format == 'pdf' ? 'P|' : 'l|');
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ //$parameterTabular .= ($this->export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($this->export_format == 'pdf' ? 'C|' : 'c|');
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'X|' : 'l|');
+
+ }
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tabela .= $this->StartLatexTable($this->export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($this->export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ // PRVA VRSTICA
+ $prvaVrstica = array();
+ $prvaVrstica[] = $this->encodeText($forSpremenljivka['naslov'].' ('.$forSpremenljivka['variable'].')');
+ //$prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{c|}{'.$this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].') - '.$grid['naslov'].' ('.$grid['variable'].')').'}';
+ //$prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{>{\hsize=\dimexpr '.($steviloPodstolpcev).'\hsize + '.($steviloPodstolpcev).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($this->snippet($spremenljivka['naslov']).' ('.$this->snippet($spremenljivka['variable']).') - '.$this->snippet($grid['naslov']).' ('.$this->snippet($grid['variable']).')').'}';
+ if($this->export_format == 'pdf'){
+ $prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{>{\hsize=\dimexpr '.($steviloPodstolpcev).'\hsize + '.($steviloPodstolpcev).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($this->snippet($spremenljivka['naslov']).' ('.$this->snippet($spremenljivka['variable']).') - '.$this->snippet($grid['naslov']).' ('.$this->snippet($grid['variable']).')').'}';
+ }elseif($this->export_format == 'rtf'){
+ $prvaVrstica[] = '\multicolumn{'.$steviloPodstolpcev.'}{c|}{'.$this->encodeText($spremenljivka['naslov'].' ('.$spremenljivka['variable'].') - '.$grid['naslov'].' ('.$grid['variable'].')').'}';
+ }
+
+ // DRUGA VRSTICA
+ $drugaVrstica = array();
+ $drugaVrstica[]='';
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ $text = $this->encodeText($variable['naslov'].' ('.$variable['variable'].')');
+ $drugaVrstica[]=$text;
+ }
+
+ //Izpis vrstic tabele
+ $tabela .= $this->tableRow($prvaVrstica,1); //izpis prve vrstice
+ if($this->export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloStolpcevParameterTabular."}"; //izpis prekinjene horizontalne crte
+ }
+
+ $tabela .= $this->tableRow($drugaVrstica, $brezHline); //izpis druge vrstice
+
+
+ // VRSTICE Z VSEBINO
+ foreach ($forSpremenljivka['options'] AS $okey => $option) {
+ $podatkiVrstica = array();
+ $podatkiVrstica[]=$this->encodeText($option);
+
+ // Izrisemo vrstico
+ //$this->pdf->MultiCell(60, $height, $this->encodeText($option), 1, 'C', 0, 0, 0 ,0, true);
+ foreach ($grid['variables'] AS $vkey => $variable) {
+ $sequence = $variable['sequence'];
+ if (count($texts[$okey][$sequence]) > 0) {
+ $text = "";
+ foreach ($texts[$okey][$sequence] AS $ky => $units) {
+ //$text .= $units['text']."\n";
+ $text .= $units['text']."; ";
+ }
+ $text = substr($text,0,-2);
+ $podatkiVrstica[]=$this->encodeText($text);
+ //$this->pdf->MultiCell($singleWidth, $height, $this->encodeText($text), 1, 'C', 0, 0, 0 ,0, true);
+ }
+ else{
+ //$this->pdf->MultiCell($singleWidth, $height, '', 1, 'C', 0, 0, 0 ,0, true);
+ $podatkiVrstica[]='';
+ }
+ }
+ $tabela .= $this->tableRow($podatkiVrstica, $brezHline); //izpis vrstice s podatki
+ }
+ //Izpis vrstic tabele - konec
+
+ /*zakljucek latex tabele*/
+ $tabela .= ($this->export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ /*zaljucek latex tabele - konec */
+ }
+ return $tabela;
+ }
+
+ function displayCrosstabs($forSpr=null,$frequencys=null,$spremenljivka=null) {
+ global $lang;
+ $tabela = '';
+ //echo "funkcija displayCrosstabs </br>";
+ //print_r($spremenljivka['grids'] );
+ //ustvarimo crosstab objekt
+ $this->crosstabClass = new SurveyCrosstabs();
+ $this->crosstabClass->Init($this->anketa['id']);
+
+ $spr1 = $this->spr;
+ $seq1 = $this->seq;
+ $grd1 = 'undefined';
+
+ foreach ($this->breakClass->_HEADERS[$spr1]['grids'] AS $gid => $grid) {
+ foreach ($grid['variables'] AS $vkey => $vrednost) {
+ if ($vrednost['sequence'] == $seq1) {
+ $grd1 = $gid;
+ }
+ }
+ }
+
+ $spr2 = $spremenljivka['id'];
+ //echo "spremenljivka, ki jo gledam: ".$spremenljivka['tip']." </br>";
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ if (($spremenljivka['tip'] == 16 || $spremenljivka['tip'] == 6) && $this->break_charts != 1) {
+
+ $text = 'Tabela za: '.$spremenljivka['naslov'].' ('.$spremenljivka['variable'].') = '.$grid['naslov'];
+
+ if ($spremenljivka['tip'] != 6) {
+ $text .= ' ('.$grid['variable'].')';
+ }
+ $tabela .= $this->encodeText($text);
+ }
+
+ $seq2 = $grid['variables'][0]['sequence'];
+ $grd2 = $gid;
+
+ $this->crosstabClass->setVariables($seq2,$spr2,$grd2,$seq1,$spr1,$grd1);
+
+ if($this->break_charts == 1){
+ $this->crosstabClass->fromBreak = false;
+ $tabela .= $this->displayChart($forSpr,$frequencys,$spremenljivka,$type = 'crosstab');
+ }
+ else{
+ $tabela .= $this->displayCrosstabsTable();
+ }
+ }
+ return $tabela;
+ }
+
+
+ function displayCrosstabsTable() {
+ global $lang;
+ $tabela = '';
+ $crosstab = new AnalizaCrosstab($this->anketa);
+ $tabela .= $crosstab->showCrosstabsTable($this->crosstabClass, $this->export_format);
+ return $tabela;
+ }
+
+ function displayChart($forSpr=null,$frequencys=null,$spremenljivka=null,$type=null){
+ global $lang;
+ $texImg = '';
+ // Zgeneriramo id vsake tabele (glede na izbrani spremenljivki za generiranje)
+ if($type == 'crosstab'){
+ $chartID = implode('_', $this->crosstabClass->variabla1[0]);
+ $chartID .= '_'.$this->crosstabClass->variabla2[0]['seq'].'_'.$this->crosstabClass->variabla2[0]['spr'].'_undefined';
+ $chartID .= '_counter_0'/*.$this->crosstabClass->counter*/;
+
+ $settings = $this->sessionData['crosstab_charts'][$chartID];
+ }
+ else{
+ if($spremenljivka['tip'] == 20){
+ // Preberemo za kateri grid izrisujemo tabelo
+ $gkey = $spremenljivka['break_sub_table']['key'];
+
+ $spr1 = $this->sessionData['break']['seq'].'-'. $this->sessionData['break']['spr'].'-undefined';
+ $spr2 = $spremenljivka['grids'][$gkey]['variables'][0]['sequence'].'-'.$spremenljivka['id'].'-undefined';
+ }
+ else{
+ $spr1 = $this->sessionData['break']['seq'].'-'. $this->sessionData['break']['spr'].'-undefined';
+ $spr2 = $spremenljivka['grids'][0]['variables'][0]['sequence'].'-'.$spremenljivka['id'].'-undefined';
+ }
+
+ $chartID = $spr1.'_'.$spr2;
+
+ $settings = $this->sessionData['break_charts'][$chartID];
+ }
+
+ $imgName = $settings['name'];
+ if($imgName){
+ copy('pChart/Cache/'.$imgName,'pChart/Cache/'.$imgName.'.png');
+ }
+
+ // Naslov posameznega grafa
+ $title = $spremenljivka['naslov'] . ' ('.$spremenljivka['variable'].')';
+ if($spremenljivka['tip'] == 20){
+ $grid = $spremenljivka['grids'][$gkey];
+ $subtitle = $grid['naslov'] . ' ('.$grid['variable'].')';
+ }
+ elseif($spremenljivka['tip'] == 16 || $spremenljivka['tip'] == 6){
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ if($this->crosstabClass->variabla1[0]['seq'] == $grid['variables'][0]['sequence']){
+ $subtitle = $grid['naslov'];
+ if ($spremenljivka['tip'] != 6) {
+ $subtitle .= ' ('.$grid['variable'].')';
+ }
+ break;
+ }
+ }
+ }
+
+ $boldedTitle = $this->returnBold($this->encodeText($title)).$this->texNewLine; //vrni boldan naslov in skoci v novo vrstico
+ $boldedSubTitle = '';
+ if($spremenljivka['tip'] == 20 || $spremenljivka['tip'] == 16 || $spremenljivka['tip'] == 6){
+ $boldedSubTitle = $this->returnBold($this->encodeText($subtitle)).$this->texNewLine; //vrni boldan naslov in skoci v novo vrstico
+ }
+
+ if($imgName){
+ $texImageOnly = " \\includegraphics[scale=0.75]{".$imgName."} "; //latex za sliko
+ }else{
+ $texImageOnly = $lang['srv_export_no_chart'];
+ }
+
+ $texImage .= $this->returnCentered($boldedTitle.$boldedSubTitle.$texImageOnly); //vrni sredinsko poravnana naslov in slika
+
+ return $texImage;
+ }
+
+
+ /*
+ prikazemo posamezno celico s podatki
+ $data - vsebina (array)
+ $width - sirina celice
+ $numRows - stevilo vrstic (1, 2 ali 3)
+ frekvence - da ali ne
+ $numColumnPercent - stevilo stolpcev pri procentih (1, 2 ali 3)
+ $numColumnResidual - stevilo stolpcev pri procentih (1, 2, 3 ali 4)
+ */
+ function displayCell($data=null, $width=null, $numRows=null, $frekvence=null, $numColumnPercent=null, $numColumnResidual=null){
+
+ $height = ($numRows == 1 ? 8 : 5);
+ $fullHeight = ($height == 8 ? $height : $numRows*$height);
+ $i=0;
+
+ //preberemo pozicijo - zacetek celice
+ $y = $this->pdf->GetY();
+ $x = $this->pdf->GetX();
+
+ $this->pdf->setDrawColor(170, 170, 170);
+
+ //izrisemo frekvence
+ if($frekvence == 1){
+ $this->pdf->MultiCell($width, $height, $this->encodeText($data[$i]), 1, 'C', 0, 1, 0 ,0, true);
+ $i++;
+ }
+
+ if($numColumnPercent > 0){
+
+ $this->pdf->setX($x);
+ $singleWidth = round($width/$numColumnPercent);
+
+ for($j=1; $j<$numColumnPercent; $j++){
+ $this->pdf->MultiCell($singleWidth, $height, $this->encodeText($data[$i]), 1, 'C', 0, 0, 0 ,0, true);
+ $i++;
+ }
+ $this->pdf->MultiCell($width - (($numColumnPercent-1)*$singleWidth), $height, $this->encodeText($data[$i]), 1, 'C', 0, 1, 0 ,0, true);
+ $i++;
+ }
+
+ if($numColumnResidual > 0){
+
+ $this->pdf->setX($x);
+ $singleWidth = round($width/$numColumnResidual);
+
+ for($j=1; $j<$numColumnResidual; $j++){
+ $this->pdf->MultiCell($singleWidth, $height, $this->encodeText($data[$i]), 1, 'C', 0, 0, 0 ,0, true);
+ $i++;
+ }
+ $this->pdf->MultiCell($width - (($numColumnResidual-1)*$singleWidth), $height, $this->encodeText($data[$i]), 1, 'C', 0, 1, 0 ,0, true);
+ $i++;
+ }
+
+ //zaradi preglednosti narisemo okvir celotne celice
+ $this->pdf->setDrawColor(0, 0, 0, 255);
+ $this->pdf->SetXY($x, $y);
+ $this->pdf->MultiCell($width, $fullHeight, '', 1, 'C', 0, 1, 0 ,0, true);
+
+ //na koncu nastavimo pozicijo na pravo mesto
+ $this->pdf->SetXY($x+$width, $y);
+ }
+
+
+
+ /*Skrajsa tekst in doda '...' na koncu*/
+ function snippet($text=null,$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 drawLine()
+ {
+ $cy = $this->pdf->getY();
+ $this->pdf->Line(15, $cy , 195, $cy , $this->currentStyle);
+ }
+
+ function setUserId($usrId=null) {$this->anketa['uid'] = $usrId;}
+ function getUserId() {return ($this->anketa['uid'])?$this->anketa['uid']:false;}
+
+/* function formatNumber($value,$digit=0,$sufix="")
+ {
+ if ( $value <> 0 && $value != null )
+ $result = round($value,$digit);
+ else
+ $result = "0";
+ $result = number_format($result, $digit, ',', '.').$sufix;
+
+ return $result;
+ } */
+
+ function getCellHeight($string=null, $width=null){
+
+ $this->pdf->startTransaction();
+ // get the number of lines calling you method
+ $linecount = $this->pdf->MultiCell($width, 0, $string, 0, 'L', 0, 0, '', '', true, 0, false, true, 0);
+ // restore previous object
+ $this->pdf = $this->pdf->rollbackTransaction();
+
+ $height = ($linecount <= 1) ? 4.7 : $linecount * ($this->pdf->getFontSize() * $this->pdf->getCellHeightRatio()) + 2;
+
+ return $height;
+ }
+}
+
+?> \ No newline at end of file
diff --git a/admin/survey/export/latexclasses/Analize/AnalizaCReport.php b/admin/survey/export/latexclasses/Analize/AnalizaCReport.php
new file mode 100644
index 0000000..03291c7
--- /dev/null
+++ b/admin/survey/export/latexclasses/Analize/AnalizaCReport.php
@@ -0,0 +1,1337 @@
+<?php
+
+ global $site_path;
+
+ include_once('../../function.php');
+ include_once('../survey/definition.php');
+/* include_once('../exportclases/class.pdfIzvozAnalizaFunctions.php');
+ require_once('../exportclases/class.enka.pdf.php'); */
+
+ define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
+ define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
+
+ define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
+ define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
+
+ define("M_ANALIZA_DESCRIPTOR", "descriptor");
+ define("M_ANALIZA_FREQUENCY", "frequency");
+
+ define("FNT_FREESERIF", "freeserif");
+ define("FNT_FREESANS", "freesans");
+ define("FNT_HELVETICA", "helvetica");
+
+ define("FNT_MAIN_TEXT", FNT_FREESANS);
+ define("FNT_QUESTION_TEXT", FNT_FREESANS);
+ define("FNT_HEADER_TEXT", FNT_FREESANS);
+
+ define("FNT_MAIN_SIZE", 10);
+ define("FNT_QUESTION_SIZE", 9);
+ define("FNT_HEADER_SIZE", 10);
+
+ define("RADIO_BTN_SIZE", 3);
+ define("CHCK_BTN_SIZE", 3);
+ define("LINE_BREAK", 6);
+
+ define ('PDF_MARGIN_HEADER', 8);
+ define ('PDF_MARGIN_FOOTER', 12);
+ define ('PDF_MARGIN_TOP', 18);
+ define ('PDF_MARGIN_BOTTOM', 18);
+ define ('PDF_MARGIN_LEFT', 15);
+ define ('PDF_MARGIN_RIGHT', 15);
+
+
+/** Class za generacijo pdf-a
+ *
+ * @desc: po novem je potrebno form elemente generirati ro�no kot slike
+ *
+ */
+class AnalizaCReport extends LatexAnalysisElement{
+
+ protected $ank_id; // trenuten id ankete
+ protected $ank; //trenutna anketa
+ protected $usr_id; // user
+
+ protected $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+ protected $pdf;
+ protected $currentStyle;
+ protected $db_table = '';
+
+ private $headFileName = null; # pot do header fajla
+ private $dataFileName = null; # pot do data fajla
+ protected $dataFileStatus = null; # status data datoteke
+ private $CID = null; # class za inkrementalno dodajanje fajlov
+
+ public $crosstabVars = array();
+ public $meanData1;
+ public $meanData2;
+
+ protected $creportProfile = 0; // Izbran profil porocila
+
+ protected $sessionData; // podatki ki so bili prej v sessionu - za nastavitve, ki se prenasajo v izvoze...
+
+ protected $export_format;
+
+ protected $texNewLine = '\\\\ ';
+ protected $horizontalLineTex = "\\hline ";
+
+
+ /**
+ * @desc konstruktor
+ */
+ function __construct ($anketa = null, $export_format='')
+ {
+ global $site_path;
+ global $global_user_id;
+
+ // preverimo ali imamo stevilko ankete
+ if ( is_numeric($anketa['id']) ){
+ $this->ank_id = $anketa['id'];
+ $this->ank = $anketa;
+ $this->export_format = $export_format;
+
+
+ // Nastavimo pravi profil porocila
+ $this->creportProfile = SurveyUserSetting :: getInstance()->getSettings('default_creport_profile');
+ $this->creportProfile = isset($this->creportProfile) ? $this->creportProfile : 0;
+
+ // Testiramo kako je obrnjen dokument (ce vsebuje crosstabe, means ali ttest je lanscape)
+ $orientation = ($this->landscapeTest()) ? 'L' : 'P';
+
+ // TODO: Če jih bomo mogoče potrebovali
+ //SurveyConditionProfiles :: Init($this->ank_id, $global_user_id);
+ //SurveyTimeProfiles :: Init($this->ank_id, $global_user_id);
+ //SurveyDataSettingProfiles :: Init($this->ank_id);
+
+
+
+ // preberemo nastavitve iz baze (prej v sessionu)
+ SurveyUserSession::Init($this->ank_id);
+ $this->sessionData = SurveyUserSession::getData();
+ }
+ else
+ {
+ $this->pi['msg'] = "Anketa ni izbrana!";
+ $this->pi['canCreate'] = false;
+ return false;
+ }
+ $_GET['a'] = A_ANALYSIS;
+
+ //if ( SurveyInfo::getInstance()->SurveyInit($this->ank_id) && $this->init())
+ if ( SurveyInfo::getInstance()->SurveyInit($this->ank_id) )
+ {
+ $this->usr_id = $global_user_id;
+ SurveyUserSetting::getInstance()->Init($this->ank_id, $this->usr_id);
+ }
+ else
+ return false;
+
+ // ce smo prisli do tu je vse ok
+ $this->pi['canCreate'] = true;
+
+ return true;
+ }
+
+
+ public function getDataFileStatus() {
+ return $this->dataFileStatus;
+ }
+
+ public function getCreportProfile() {
+ return $this->creportProfile;
+ }
+
+ // SETTERS && GETTERS
+
+ function checkCreate()
+ {
+ return $this->pi['canCreate'];
+ }
+
+
+ // Izpisemo sumarnik element
+ function displaySum($element=null){
+ $sumLatex = '';
+ $spid = $element['spr1'];
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+
+ # preverjamo ali je meta
+ if (($spremenljivka['tip'] != 'm')
+ && (!isset($_spid) || (isset($_spid) && $_spid == $spid))
+ && (($global_user_id === 0 || $global_user_id === null) || in_array($spremenljivka['tip'], SurveyAnalysis::$_FILTRED_TYPES ) )) {
+
+ # ali imamo sfiltrirano spremenljivko
+ //if (isset(SurveyAnalysis::$_FILTRED_VARIABLES[$spid])) {
+
+ //pdfIzvozAnalizaFunctions::init($this->ank_id, $this, $from='sums');
+ $sums = new AnalizaSums($this->ank);
+
+ # prikazujemo v odvisnosti od kategorije spremenljivke
+ switch ($spremenljivka['tip']) {
+ case 1:
+ # radio - prikaže navpično
+ //pdfIzvozAnalizaFunctions::sumVertical($spid,'sums');
+ $sumLatex .= $sums->sumVertical($spid, 'sums', $this->export_format);
+ break;
+
+ case 2:
+ #checkbox če je dihotomna:
+ //pdfIzvozAnalizaFunctions::sumVerticalCheckbox($spid,'sums');
+ $sumLatex .= $sums->sumVerticalCheckbox($spid, 'sums', $this->export_format);
+ break;
+
+ case 3:
+ # dropdown - prikjaže navpično
+ //pdfIzvozAnalizaFunctions::sumVertical($spid,'sums');
+ $sumLatex .= $sums->sumVertical($spid, 'sums', $this->export_format);
+ break;
+
+ case 6:
+ # multigrid
+ //pdfIzvozAnalizaFunctions::sumHorizontal($spid,'sums');
+ $sumLatex .= $sums->sumHorizontal($spid, 'sums', $this->export_format);
+ break;
+
+ case 16:
+ #multicheckbox če je dihotomna:
+ //pdfIzvozAnalizaFunctions::sumMultiHorizontalCheckbox($spid,'sums');
+ $sumLatex .= $sums->sumMultiHorizontalCheckbox($spid, 'sums', $this->export_format);
+ break;
+
+ case 17:
+ #razvrščanje če je ordinalna
+ //pdfIzvozAnalizaFunctions::sumHorizontal($spid,'sums');
+ $sumLatex .= $sums->sumHorizontal($spid, 'sums', $this->export_format);
+ break;
+
+ case 4: # text
+ case 8: # datum
+ //pdfIzvozAnalizaFunctions::sumTextVertical($spid,'sums');
+ $sumLatex .= $sums->sumTextVertical($spid, 'sums', $this->export_format);
+ break;
+
+ case 21: # besedilo*
+ # varabla tipa »besedilo« je v sumarniku IDENTIČNA kot v FREKVENCAH.
+ if ($spremenljivka['cnt_all'] == 1) {
+ // če je enodimenzionalna prikažemo kot frekvence
+ // predvsem zaradi vprašanj tipa: language, email...
+ //pdfIzvozAnalizaFunctions::sumTextVertical($spid,'sums');
+ $sumLatex .= $sums->sumTextVertical($spid, 'sums', $this->export_format);
+ } else {
+ //pdfIzvozAnalizaFunctions::sumMultiText($spid,'sums');
+ $sumLatex .= $sums->sumMultiText($spid, 'sums', $this->export_format);
+ }
+ break;
+
+ case 19: # multitext
+ //pdfIzvozAnalizaFunctions::sumMultiText($spid,'sums');
+ $sumLatex .= $sums->sumMultiText($spid, 'sums', $this->export_format);
+ break;
+
+ case 7:
+ case 18:
+ case 22:
+ # variabla tipa »število« je v sumarniku identična kot v DESCRIPTIVES.
+ //pdfIzvozAnalizaFunctions::sumNumberVertical($spid,'sums');
+ $sumLatex .= $sums->sumNumberVertical($spid, 'sums', $this->export_format);
+ break;
+
+ case 20:
+ # variabla tipa »število« je v sumarniku identična kot v DESCRIPTIVES.
+ //pdfIzvozAnalizaFunctions::sumMultiNumber($spid,'sums');
+ $sumLatex .= $sums->sumMultiNumber($spid, 'sums', $this->export_format);
+ break;
+
+ case 5:
+ # nagovor
+ //pdfIzvozAnalizaFunctions::sumNagovor($spid,'sums');
+ $sumLatex .= $sums->sumNagovor($spid, 'sums', $this->export_format);
+ break;
+ }
+
+ //}
+
+ } // end if $spremenljivka['tip'] != 'm'
+ return $sumLatex;
+ }
+
+ // Izpisemo frekvence element
+ function displayFreq($element=null){
+ $freqLatex = '';
+ $spid = $element['spr1'];
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+
+ # preverjamo ali je meta
+ if (($spremenljivka['tip'] != 'm')
+ && (!isset($_spid) || (isset($_spid) && $_spid == $spid))
+ && (($global_user_id === 0 || $global_user_id === null) || in_array($spremenljivka['tip'], SurveyAnalysis::$_FILTRED_TYPES ) )) {
+
+ # ali imamo sfiltrirano spremenljivko
+ //if (isset(SurveyAnalysis::$_FILTRED_VARIABLES[$spid])) {
+
+ //pdfIzvozAnalizaFunctions::init($this->ank_id, $this, $from='freq');
+
+ # prikazujemo v odvisnosti od kategorije spremenljivke
+ switch ($spremenljivka['tip']) {
+ case 1: # radio - prikjaže navpično
+ case 2: #checkbox če je dihotomna:
+ case 3: # dropdown - prikjaže navpično
+ case 6: # multigrid
+ case 4: # text
+ case 7:# variabla tipa »število«
+ case 8: # datum
+ case 16: #multicheckbox če je dihotomna:
+ case 17: #razvrščanje če je ordinalna
+ case 18: # vsota
+ case 19: # multitext
+ case 20: # multi number
+ case 21: # besedilo*
+ case 22: # kalkulacija
+ $freq = new AnalizaFreq($this->ank);
+ $freqLatex .= $freq->frequencyVertical($spid, $this->export_format);
+ break;
+ case 5:
+ # nagovor
+ $sums = new AnalizaSums($this->ank);
+ $freqLatex .= $sums->sumNagovor($spid, 'sums', $this->export_format);
+ break;
+ }
+ //}
+
+ } // end if $spremenljivka['tip'] != 'm'
+ return $freqLatex;
+ }
+
+ // Izpisemo opisne stat element
+ function displayDesc($element=null){
+ global $lang;
+ $descLatex = '';
+
+ # polovimo frekvence
+ SurveyAnalysis::getDescriptives();
+
+ $spid = $element['spr1'];
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 8;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($this->export_format == 'pdf' ? 'P|' : 'l|');
+ }else{
+ $parameterTabular .= ($this->export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $descLatex .= $this->StartLatexTable($this->export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ if($this->export_format != 'xls'){
+ $descLatex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /*prva vrstica tabele*/
+
+ /*priprava polja z naslovi stolpcev*/
+ $text = array();
+
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_variable']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_variable_text1']);
+
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_m']);
+ $text[] = $this->encodeText($lang['srv_analiza_num_units']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_povprecje1']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_odklon']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_min']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_max']);
+ /*priprava polja z naslovi stolpcev - konec*/
+
+ $descLatex .= $this->tableRow($text);
+ /*prva vrstica tabele - konec*/
+
+
+ /* preverjamo ali je meta*/
+ if ($spremenljivka['tip'] != 'm'
+ && ( count(SurveyAnalysis::$_FILTRED_VARIABLES) == 0 || (count(SurveyAnalysis::$_FILTRED_VARIABLES) > 0 && isset(SurveyAnalysis::$_FILTRED_VARIABLES[$spid]) ))
+ && in_array($spremenljivka['tip'], SurveyAnalysis::$_FILTRED_TYPES)
+ && ($this->spremenljivka == $spid || $this->spremenljivka == null) ) {
+
+ $show_enota = false;
+ /* preverimo ali imamo samo eno variablo in če iammo enoto*/
+ if ((int)$spremenljivka['enota'] != 0 || $spremenljivka['cnt_all'] > 1 ) {
+ $show_enota = true;
+ }
+
+ /* izpišemo glavno vrstico z podatki*/
+ $_sequence = null;
+ /* za enodimenzijske tipe izpišemo podatke kar v osnovni vrstici*/
+ if (!$show_enota) {
+ $variable = $spremenljivka['grids'][0]['variables'][0];
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ $descLatex .= $this->displayDescriptivesSpremenljivkaRow($spid, $spremenljivka,$show_enota,$_sequence);
+ } else {
+ if ($spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 3) {
+ $variable = $spremenljivka['grids'][0]['variables'][0];
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ $show_enota = false;
+ }
+ $descLatex .= $this->displayDescriptivesSpremenljivkaRow($spid, $spremenljivka,$show_enota,$_sequence);
+ /*zloopamo skozi variable*/
+ $_sequence = null;
+ $grd_cnt=0;
+ if (count($spremenljivka['grids']) > 0)
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+
+ if (count($spremenljivka['grids']) > 1 && $grd_cnt !== 0 && $spremenljivka['tip'] != 6) {
+ $grid['new_grid'] = true;
+ }
+ $grd_cnt++;
+ /* dodamo dodatne vrstice z albelami grida*/
+ if (count ($grid['variables']) > 0)
+ foreach ($grid['variables'] AS $vid => $variable ){
+ /* dodamo ostale vrstice*/
+ $do_show = ($variable['other'] !=1 && ($spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 3 || $spremenljivka['tip'] == 5 || $spremenljivka['tip'] == 8 ))
+ ? false
+ : true;
+ if ($do_show) {
+ $descLatex .= $this->displayDescriptivesVariablaRow($spremenljivka,$grid,$variable,$_css);
+
+ }
+ $grid['new_grid'] = false;
+ }
+ }
+ } //else: if (!$show_enota)
+ } // end if $spremenljivka['tip'] != 'm'
+
+ /*zakljucek latex tabele*/
+ $descLatex .= ($this->export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ /*zaljucek latex tabele - konec */
+ //echo "</br> Tex celotne tabele: ".$descLatex."</br>";
+ return $descLatex;
+ }
+
+ // Izpisemo graf element
+ function displayChart($element=null){
+
+ $chart = '';
+ $spid = $element['spr1'];
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+
+ # preverjamo ali je meta
+ if (($spremenljivka['tip'] != 'm'
+ && in_array($spremenljivka['tip'], SurveyAnalysis::$_FILTRED_TYPES ))
+ && (!isset($_spid) || (isset($_spid) && $_spid == $spid))) {
+ # ali imamo sfiltrirano spremenljivko
+ //if ($vars_count == 0 || ($vars_count > 0 && isset(SurveyAnalysis::$_FILTRED_VARIABLES[$spid]) ) ) {
+
+ //$this->pdf->SetFillColor(250, 250, 250);
+
+ // Ce imamo radio tip in manj kot 5 variabel po defaultu prikazemo piechart
+ $vars = count($spremenljivka['options']);
+ $type = 0;
+ if( ($spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 3) && $vars < 5 )
+ $type = 2;
+
+ //ce imamo nominalno spremenljivko ali ce je samo 1 variabla nimamo povprecij
+ if($spremenljivka['tip'] == 6 && ($spremenljivka['cnt_all'] == 1 || $spremenljivka['skala'] == 1) && $type == 0 )
+ $type = 2;
+
+ //pdfIzvozAnalizaFunctions::init($this->ank_id, $this, $from='charts');
+
+ if($spremenljivka['tip'] == 4 || $spremenljivka['tip'] == 19 || $spremenljivka['tip'] == 21 || $spremenljivka['tip'] == 22){
+ // ce imamo vklopljeno nastavitev prikaz tabel med grafi (default)
+/* if($spremenljivka['tip'] == 19)
+ //pdfIzvozAnalizaFunctions::sumMultiText($spid, 'sums');
+ else
+ //pdfIzvozAnalizaFunctions::frequencyVertical($spid); */
+ }
+ elseif( in_array($spremenljivka['tip'],array(1,2,3,6,7,8,16,17,18,20)) ){
+ // Prikazemo posamezen graf
+ //pdfIzvozAnalizaFunctions::displayChart($spid, $type);
+ $chart .= $this->displayChartsInLatex($spid, $type, $fromCharts=false, $this->ank, $from='charts', $this, $this->export_format);
+
+ }
+ //}
+
+ } // end if $spremenljivka['tip'] != 'm'
+ return $chart;
+ }
+
+ // Izpisemo crosstab tabelo
+ function displayCrosstab($element=null){
+ global $lang;
+ $crosstabTex = '';
+ // Napolnimo podatke crosstabu
+ $crossData1 = explode("-", $element['spr1']);
+ $crossData2 = explode("-", $element['spr2']);
+
+ $crosstabClass = new SurveyCrosstabs();
+ $crosstabClass->Init($this->ank_id);
+ $crosstabClass->setVariables($crossData1[0],$crossData1[1],$crossData1[2],$crossData2[0],$crossData2[1],$crossData2[2]);
+
+ $crosstab = new AnalizaCrosstab($this->ank);
+ $crosstabTex .= $crosstab->showCrosstabsTable($crosstabClass, $this->export_format, $creport=true);
+
+ return $crosstabTex;
+ }
+
+ // Izpisemo crosstab graf
+ function displayCrosstabChart($element=null){
+
+ $crosstabChartTex = '';
+ // Napolnimo podatke crosstabu
+ //$crossData1 = explode("-", $element['spr2']);
+ $crossData1 = explode("-", $element['spr1']);
+ //$crossData2 = explode("-", $element['spr1']);
+ $crossData2 = explode("-", $element['spr2']);
+
+ //ustvarimo crosstab objekt in mu napolnimo variable (var1, var2, checkboxi)
+ $this->crosstabClass = new SurveyCrosstabs();
+ $this->crosstabClass->Init($this->ank_id);
+
+
+ for($i=0; $i<sizeof($crossData1)/3; $i++){
+ $index = $i * 3;
+ $this->crossData1[$i] = array($crossData1[$index],$crossData1[$index+1],$crossData1[$index+2]);
+ }
+ for($i=0; $i<sizeof($crossData2)/3; $i++){
+ $index = $i * 3;
+ $this->crossData2[$i] = array($crossData2[$index],$crossData2[$index+1],$crossData2[$index+2]);
+ }
+
+ $this->crosstabClass->_LOOPS = SurveyZankaProfiles::getFiltersForLoops();
+ if (count($this->crosstabClass->_LOOPS) > 0) {
+ # če mamo zanke
+ foreach ( $this->crosstabClass->_LOOPS AS $loop) {
+ $this->crosstabClass->_CURRENT_LOOP = $loop;
+ }
+ } else {
+ // loopamo cez vse izbrane variable in izrisemo vse tabele
+ $this->counter = 0;
+ for($j=0; $j<sizeof($this->crossData2); $j++){
+ for($i=0; $i<sizeof($this->crossData1); $i++){
+ $this->crosstabClass->setVariables($this->crossData2[$j][0],$this->crossData2[$j][1],$this->crossData2[$j][2],$this->crossData1[$i][0],$this->crossData1[$i][1],$this->crossData1[$i][2]);
+ //$this->counter++;
+ }
+ }
+ }
+
+ $crossTabChart = new AnalizaCrosstab($this->ank, $this->crosstabClass, $this->counter);
+
+ $crosstabChartTex .= $crossTabChart->displayCrosstabChart();
+
+ return $crosstabChartTex;
+ }
+
+ // Izpisemo mean tabelo
+ function displayMean($element=null){
+ $meanTex = '';
+ // ustvarimo means objekt
+ $meansClass = new SurveyMeans($this->ank_id);
+
+ // Napolnimo podatke crosstabu
+ $meanData1 = explode("-", $element['spr2']);
+ $meanData2 = explode("-", $element['spr1']);
+
+ $v_first = array('seq' => $meanData1[0], 'spr' => $meanData1[1], 'grd' => $meanData1[2]);
+ $v_second = array('seq' => $meanData2[0], 'spr' => $meanData2[1], 'grd' => $meanData2[2]);
+
+ $_means[0] = $meansClass->createMeans($v_first, $v_second);
+
+ $mean = new AnalizaMean($this->ank);
+
+ $meanTex .= $mean->displayMeansTable($_means, $meansClass, $this->export_format);
+
+ return $meanTex;
+ }
+
+ // Izpisemo mean graf
+ function displayMeanChart($element=null){
+ $meanChartTex = '';
+ // ustvarimo means objekt
+ $meansClass = new SurveyMeans($this->ank_id);
+
+ // Napolnimo podatke crosstabu
+ $meanData1 = explode("-", $element['spr2']);
+ $meanData2 = explode("-", $element['spr1']);
+
+ $v_first = array('seq' => $meanData1[0], 'spr' => $meanData1[1], 'grd' => $meanData1[2]);
+ $v_second = array('seq' => $meanData2[0], 'spr' => $meanData2[1], 'grd' => $meanData2[2]);
+
+ $this->meanData2[0] = $v_first;
+ $this->meanData1[0] = $v_second;
+
+ $_means[0] = $meansClass->createMeans($v_first, $v_second);
+
+ $mean = new AnalizaMean($this->ank);
+ $meanChartTex .= $mean->displayChart(0, $this->meanData1, $this->meanData2, $this->sessionData);
+
+ return $meanChartTex;
+
+ }
+
+ // Izpisemo ttest tabelo
+ function displayTTest($element=null){
+ $tTestTex = '';
+ // ustvarimo ttest objekt
+ $ttestClass = new SurveyTTest($this->ank_id);
+
+ // Nastavimo session da lahko pravilno izrisemo tabelo/graf
+ $ttestData1 = explode("-", $element['spr1']);
+ $ttestData2 = explode("-", $element['spr2']);
+
+ $dataArray = array();
+
+ $dataArray['spr2'] = $ttestData1[1];
+ $dataArray['grid2'] = $ttestData1[2];
+ $dataArray['seq2'] = $ttestData1[0];
+ $dataArray['label2'] = strip_tags($this->getTTestLabel($element['spr1'], $ttestClass));
+
+ $dataArray['sub_conditions'][0] = $ttestData1[3];
+ $dataArray['sub_conditions'][1] = $ttestData1[4];
+
+ $dataArray['variabla'][0]['seq'] = $ttestData2[0];
+ $dataArray['variabla'][0]['spr'] = $ttestData2[1];
+ $dataArray['variabla'][0]['grd'] = $ttestData2[2];
+
+ // Shranimo spremenjene nastavitve v bazo
+ SurveyUserSession::Init($this->ank_id);
+ $sessionData = SurveyUserSession::getData('ttest');
+ $sessionData = $dataArray;
+ SurveyUserSession::saveData($sessionData, 'ttest');
+ //print_r($sessionData);
+ // ustvarimo ttest objekt
+ $ttestClass = new SurveyTTest($this->ank_id);
+
+ if (count($this->sessionData['ttest']['sub_conditions']) > 1 ) {
+ $tTest = new AnalizaTTest($this->ank);
+ $variables1 = $ttestClass->getSelectedVariables();
+ if (count($variables1) > 0) {
+ foreach ($variables1 AS $v_first) {
+ $ttest = null;
+ $ttest = $ttestClass->createTTest($v_first, $this->sessionData['ttest']['sub_conditions']);
+ $tTestTex .= $tTest->displayTTestTable($ttest, $ttestClass, $this->export_format, $this->sessionData);
+ }
+ }
+ }
+
+ return $tTestTex;
+ }
+
+ // Izpisemo ttest graf
+ function displayTTestChart($element=null){
+ $tTestChartTex = '';
+
+ // ustvarimo ttest objekt
+ $ttestClass = new SurveyTTest($this->ank_id);
+
+ // Nastavimo session da lahko pravilno izrisemo tabelo/graf
+ $ttestData1 = explode("-", $element['spr1']);
+ $ttestData2 = explode("-", $element['spr2']);
+
+ $dataArray = array();
+
+ $dataArray['spr2'] = $ttestData1[1];
+ $dataArray['grid2'] = $ttestData1[2];
+ $dataArray['seq2'] = $ttestData1[0];
+ $dataArray['label2'] = strip_tags($this->getTTestLabel($element['spr1'], $ttestClass));
+
+ $dataArray['sub_conditions'][0] = $ttestData1[3];
+ $dataArray['sub_conditions'][1] = $ttestData1[4];
+
+ $dataArray['variabla'][0]['seq'] = $ttestData2[0];
+ $dataArray['variabla'][0]['spr'] = $ttestData2[1];
+ $dataArray['variabla'][0]['grd'] = $ttestData2[2];
+
+ // Shranimo spremenjene nastavitve v bazo
+ SurveyUserSession::Init($this->ank_id);
+ $sessionData = SurveyUserSession::getData('ttest');
+ $sessionData = $dataArray;
+ SurveyUserSession::saveData($sessionData, 'ttest');
+
+ // ustvarimo ttest objekt
+ $ttestClass = new SurveyTTest($this->ank_id);
+
+ if (count($this->sessionData['ttest']['sub_conditions']) > 1 ) {
+ $tTest = new AnalizaTTest($this->ank);
+ $variables1 = $ttestClass->getSelectedVariables();
+ if (count($variables1) > 0) {
+ foreach ($variables1 AS $v_first) {
+ $tTestChartTex .= $tTest->displayChart($this->sessionData, $ttestClass, $this->ank, $creport=true);
+ }
+ }
+ }
+ return $tTestChartTex;
+ }
+
+ // Izpisemo break tabelo
+ function displayBreak($element=null){
+ global $lang;
+ $breakTex = '';
+
+ // Napolnimo podatke breaku
+ $breakData1 = explode("-", $element['spr1']);
+ $breakData2 = explode("-", $element['spr2']);
+
+ $breakClass = new SurveyBreak($this->ank_id);
+
+ $forSpr = $breakData1[1];
+ $_spr_data = $breakClass->_HEADERS[$forSpr];
+
+ # poiščemo sekvenco
+ $sekvenca = $breakData1[0];
+
+ # poiščemo opcije
+ $opcije = $_spr_data['options'];
+
+ if ((int)$_spr_data['tip'] != 2) {
+ $seqences[] = $sekvenca;
+ $options = $opcije;
+ } else {
+ # za checkboxe imamo več sekvenc
+ $seqences = explode('_',$_spr_data['sequences']);
+ $options[1] = $opcije[1];
+ }
+
+ # za vsako opcijo posebej izračunamo povprečja za vse spremenljivke
+ /*$frequencys = array();
+ if (count($seqences) > 0) {
+ foreach ($seqences as $seq) {
+
+ if (count($options) > 0) {
+ foreach ($options as $oKey => $option) {
+ # zloopamo skozi variable
+ $oKeyfrequencys = $breakClass->getAllFrequencys($oKey, $seq, $forSpr);
+ if ($oKeyfrequencys != null) {
+ $frequencys[$seq][$oKey] = $oKeyfrequencys;
+ }
+ }
+ }
+ }
+ }*/
+ $frequencys = null;
+ if (count($options) > 0) {
+ foreach ($options as $okey => $option) {
+
+ # zloopamo skozi variable
+ $okeyfrequencys = $breakClass->getAllFrequencys($okey, $sekvenca, $forSpr);
+ if ($okeyfrequencys != null) {
+ if ($frequencys == null) {
+ $frequencys = array();
+ }
+ $frequencys[$okey] = $okeyfrequencys;
+ }
+ }
+ }
+
+ $spremenljivka = $breakClass->_HEADERS[$breakData2[1]];
+ $spremenljivka['id'] = $breakData2[1];
+
+ $tip = $spremenljivka['tip'];
+ $skala = $spremenljivka['skala'];
+
+ // Izrisujemo tabelo ki ni crosstab
+ if( ($tip == 6 && $skala == 0) || in_array($tip, array(4,7,17,18,19,20,21)) ){
+ $break = new AnalizaBreak($this->ank);
+
+ if($tip == 6 && $skala == 0){
+ $breakTex .= $break->displayBreakTableMgrid($forSpr,$frequencys, $spremenljivka, $creport=true, $this->ank_id, $this->export_format);
+ }
+ elseif($tip == 4 || $tip == 19 || $tip == 21){
+ // Nastavimo se katero podtabelo izrisemo (sekvenca odvisne spr)
+ $spremenljivka['break_sub_table']['sequence'] = $breakData2[0];
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ if($spremenljivka['break_sub_table']['sequence'] == $grid['variables'][0]['sequence']){
+ $spremenljivka['break_sub_table']['key'] = $gkey;
+ break;
+ }
+ }
+
+ $breakTex .= $break->displayBreakTableText($forSpr,$frequencys,$spremenljivka, $creport=true, $this->ank_id, $this->export_format);
+ }
+ else{
+ // Nastavimo se katero podtabelo izrisemo (sekvenca odvisne spr)
+ $spremenljivka['break_sub_table']['sequence'] = $breakData2[0];
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ if($spremenljivka['break_sub_table']['sequence'] == $grid['variables'][0]['sequence']){
+ $spremenljivka['break_sub_table']['key'] = $gkey;
+ break;
+ }
+ }
+ $breakTex .= $break->displayBreakTableNumber($forSpr,$frequencys,$spremenljivka, $creport=true, $this->ank_id, $this->export_format);
+ }
+ }
+
+ // Izrisujemo crosstab
+ else{
+ $breakTex .= $this->displayCrosstab($element);
+ }
+ return $breakTex;
+ }
+
+ // Izpisemo break graf
+ function displayBreakChart($element=null){
+ $breakChartTex = '';
+ // Napolnimo podatke breaku
+ $breakData1 = explode("-", $element['spr1']);
+ $breakData2 = explode("-", $element['spr2']);
+
+ $breakClass = new SurveyBreak($this->ank_id);
+
+ $forSpr = $breakData1[1];
+ $_spr_data = $breakClass->_HEADERS[$forSpr];
+
+ # poiščemo sekvenco
+ $sekvenca = $breakData1[0];
+
+ # poiščemo opcije
+ $opcije = $_spr_data['options'];
+
+ if ((int)$_spr_data['tip'] != 2) {
+ $seqences[] = $sekvenca;
+ $options = $opcije;
+ } else {
+ # za checkboxe imamo več sekvenc
+ $seqences = explode('_',$_spr_data['sequences']);
+ $options[1] = $opcije[1];
+ }
+
+ $frequencys = null;
+ if (count($options) > 0) {
+ foreach ($options as $okey => $option) {
+
+ # zloopamo skozi variable
+ $okeyfrequencys = $breakClass->getAllFrequencys($okey, $sekvenca, $forSpr);
+ if ($okeyfrequencys != null) {
+ if ($frequencys == null) {
+ $frequencys = array();
+ }
+ $frequencys[$okey] = $okeyfrequencys;
+ }
+ }
+ }
+
+ $spremenljivka = $breakClass->_HEADERS[$breakData2[1]];
+ $spremenljivka['id'] = $breakData2[1];
+
+ $tip = $spremenljivka['tip'];
+ $skala = $spremenljivka['skala'];
+
+ $break = new AnalizaBreak($this->ank); //definiranje razreda AnalizaBreak
+
+ // Pri textovnih tipih vedno izrisemo tabelo
+ if($tip == 4 || $tip == 21 || $tip == 19){
+ // Nastavimo se katero podtabelo izrisemo (sekvenca odvisne spr)
+ $spremenljivka['break_sub_table']['sequence'] = $breakData2[0];
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ if($spremenljivka['break_sub_table']['sequence'] == $grid['variables'][0]['sequence']){
+ $spremenljivka['break_sub_table']['key'] = $gkey;
+ break;
+ }
+ }
+
+ //pdfIzvozAnalizaFunctions::init($this->ank_id, $this, $from='break', $breakClass);
+ //pdfIzvozAnalizaFunctions::displayBreakTableText($forSpr,$frequencys,$spremenljivka);
+ $breakChartTex .= $break->displayBreakTableText($forSpr,$frequencys,$spremenljivka, $creport=true, $this->ank_id, $this->export_format);
+ }
+
+ // Izrisujemo graf ki ni crosstab
+ elseif( ($tip == 6 && $skala == 0) || in_array($tip, array(7,17,18,20)) ){
+
+ //pdfIzvozAnalizaFunctions::init($this->ank_id, $this, $from='break', $breakClass);
+
+ if($tip == 6 && $skala == 0){
+ //pdfIzvozAnalizaFunctions::displayBreakChart($forSpr,$frequencys,$spremenljivka);
+ $breakChartTex .= $break->displayChart($forSpr,$frequencys,$spremenljivka, $type='creport');
+ }
+ else{
+ // Nastavimo se katero podtabelo izrisemo (sekvenca odvisne spr)
+ $spremenljivka['break_sub_table']['sequence'] = $breakData2[0];
+ foreach ($spremenljivka['grids'] AS $gkey => $grid) {
+ if($spremenljivka['break_sub_table']['sequence'] == $grid['variables'][0]['sequence']){
+ $spremenljivka['break_sub_table']['key'] = $gkey;
+ break;
+ }
+ }
+ //pdfIzvozAnalizaFunctions::displayBreakChart($forSpr,$frequencys,$spremenljivka);
+ $breakChartTex .= $break->displayChart($forSpr,$frequencys,$spremenljivka, $type='creport');
+ }
+ }
+ // Izrisujemo crosstab
+ else{
+ $breakChartTex .= $this->displayCrosstabChart($element);
+ }
+
+ return $breakChartTex;
+ }
+
+ // Izpisemo element z besedilom
+ function displayText($text=''){
+ global $lang;
+ $texTitle = '';
+ $texTitle .= $this->encodeText($text).$this->texNewLine;
+ return $texTitle;
+ }
+
+
+ // Izpisemo naslov elementa
+ function displayTitle($element=null){
+ global $lang;
+ $texTitle = '';
+ // sumarnik
+ if($element['type'] == '1'){
+ $spr = SurveyAnalysis::$_HEADERS[$element['spr1']];
+
+ if($element['spr1'] == '')
+ $title = $lang['srv_select_spr'];
+ else
+ $title = $spr['variable'].' - '.$spr['naslov'];
+
+ $subtitle = ' ('.$lang['srv_sumarnik'].')';
+ }
+
+ // freq
+ elseif($element['type'] == '2'){
+ $spr = SurveyAnalysis::$_HEADERS[$element['spr1']];
+
+ if($element['spr1'] == '')
+ $title = $lang['srv_select_spr'];
+ else
+ $title = $spr['variable'].' - '.$spr['naslov'];
+
+ $subtitle = ' ('.$lang['srv_frequency'].')';
+ }
+
+ // desc
+ elseif($element['type'] == '3'){
+ $spr = SurveyAnalysis::$_HEADERS[$element['spr1']];
+
+ if($element['spr1'] == '')
+ $title = $lang['srv_select_spr'];
+ else
+ $title = $spr['variable'].' - '.$spr['naslov'];
+
+ $subtitle = ' ('.$lang['srv_descriptor'].')';
+ }
+
+ // chart
+ elseif($element['type'] == '4'){
+ $spr = SurveyAnalysis::$_HEADERS[$element['spr1']];
+
+ if($element['spr1'] == '')
+ $title = $lang['srv_select_spr'];
+ else
+ $title = $spr['variable'].' - '.$spr['naslov'];
+
+ $subtitle = ' ('.$lang['srv_chart'].')';
+ }
+
+ // crosstab
+ elseif($element['type'] == '5'){
+
+ // Napolnimo podatke crosstabu
+ $crossData1 = explode("-", $element['spr1']);
+ $crossData2 = explode("-", $element['spr2']);
+
+ $crosstabClass = new SurveyCrosstabs();
+ $crosstabClass->Init($this->ank_id);
+
+ $crosstabClass->setVariables($crossData1[0],$crossData1[1],$crossData1[2],$crossData2[0],$crossData2[1],$crossData2[2]);
+
+ // Naslov
+ if($element['spr1'] == '' || $element['spr2'] == '')
+ $title = $lang['srv_select_spr'];
+ else{
+ $show_variables_values = true;
+
+ $spr1 = $crosstabClass->_HEADERS[$crossData1[1]];
+ $spr2 = $crosstabClass->_HEADERS[$crossData2[1]];
+
+ # za multicheckboxe popravimo naslov, na podtip
+ $sub_q1 = null;
+ $sub_q2 = null;
+ if ($spr1['tip'] == '6' || $spr1['tip'] == '7' || $spr1['tip'] == '16' || $spr1['tip'] == '17' || $spr1['tip'] == '18' || $spr1['tip'] == '19' || $spr1['tip'] == '20' || $spr1['tip'] == '21' ) {
+ foreach ($spr1['grids'] AS $grid) {
+ foreach ($grid['variables'] AS $variable) {
+ if ($variable['sequence'] == $v_first['seq']) {
+ $sub_q1 .= strip_tags($spr1['naslov']);
+ if ($show_variables_values == true ) {
+ $sub_q1 .= ' ('.strip_tags($spr1['variable']).')';
+ }
+ if ($spr1['tip'] == '16') {
+ $sub_q1 .= '<br />'. strip_tags($grid1['naslov']) . ($show_variables_values == true ? ' (' . strip_tags($grid1['variable']) . ')' : '');
+ } else {
+ $sub_q1 .= '<br />' . strip_tags($variable['naslov']) . ($show_variables_values == true ? ' (' . strip_tags($variable['variable']) . ')' : '');
+ }
+ }
+ }
+ }
+ }
+ if ($sub_q1 == null) {
+ $sub_q1 .= strip_tags($spr1['naslov']);
+ $sub_q1 .= ($show_variables_values == true ? '&nbsp;('.strip_tags($spr1['variable']).')' : '');
+ }
+ if ($spr2['tip'] == '6' || $spr2['tip'] == '7' || $spr2['tip'] == '16' || $spr2['tip'] == '17' || $spr2['tip'] == '18' || $spr2['tip'] == '19' || $spr2['tip'] == '20' || $spr2['tip'] == '21') {
+ foreach ($spr2['grids'] AS $grid) {
+ foreach ($grid['variables'] AS $variable) {
+ if ($variable['sequence'] == $v_second['seq']) {
+ $sub_q2 .= strip_tags($spr2['naslov']);
+ if ($show_variables_values == true) {
+ $sub_q2 .= ' ('.strip_tags($spr2['variable']).')';
+ }
+ if ($spr2['tip'] == '16') {
+ $sub_q2.= '<br />' . strip_tags($grid2['naslov']) . ($show_variables_values == true ? ' (' . strip_tags($grid2['variable']) . ')' : '');
+ } else {
+ $sub_q2.= '<br />' . strip_tags($variable['naslov']) . ($show_variables_values == true ? ' (' . strip_tags($variable['variable']) . ')' : '');
+ }
+ }
+ }
+ }
+ }
+ if ($sub_q2 == null) {
+ $sub_q2 .= strip_tags($spr2['naslov']);
+ $sub_q2 .= ($show_variables_values == true ? ' ('.strip_tags($spr2['variable']).')' : '');
+ }
+
+ $title = $sub_q1 . ' / ' . $sub_q2;
+ }
+
+ $subtitle = ' ('.$lang['srv_crosstabs']. ($element['sub_type'] == 1 ? ' - '.$lang['srv_chart'] : '') .')';
+ }
+
+ // mean
+ elseif($element['type'] == '6'){
+
+ // ustvarimo means objekt
+ $meansClass = new SurveyMeans($this->ank_id);
+
+ // Napolnimo podatke crosstabu
+ $meanData1 = explode("-", $element['spr2']);
+ $meanData2 = explode("-", $element['spr1']);
+
+ $v_first = array('seq' => $meanData1[0], 'spr' => $meanData1[1], 'grd' => $meanData1[2]);
+ $v_second = array('seq' => $meanData2[0], 'spr' => $meanData2[1], 'grd' => $meanData2[2]);
+
+ $means[0] = $meansClass->createMeans($v_first, $v_second);
+
+ // Nastavimo variable (potrebno za grafe
+ $meansClass->variabla1[0] = $v_second;
+ $meansClass->variabla2[0] = $v_first;
+
+ // Naslov
+ if($element['spr1'] == '' || $element['spr2'] == ''){
+ $title = $lang['srv_select_spr'];
+ }
+ else{
+ $label2 = strip_tags($meansClass->getSpremenljivkaTitle($means[0]['v1']));
+ $label1 = strip_tags($meansClass->getSpremenljivkaTitle($means[0]['v2']));
+
+ $title = $label1 . ' / ' . $label2;
+ }
+
+ $subtitle = ' ('.$lang['srv_means']. ($element['sub_type'] == 1 ? ' - '.$lang['srv_chart'] : '') .')';
+ }
+
+ // ttest
+ elseif($element['type'] == '7'){
+
+ // ustvarimo ttest objekt
+ $ttestClass = new SurveyTTest($this->ank_id);
+
+ // Naslov
+ if($element['spr1'] == '' || $element['spr2'] == ''){
+ $title = $lang['srv_select_spr'];
+ }
+ else{
+ $label2 = strip_tags($this->getTTestLabel($element['spr2'], $ttestClass));
+ $label1 = strip_tags($this->getTTestLabel($element['spr1'], $ttestClass));
+
+ $title = $label1 . ' / ' . $label2;
+ }
+
+ $subtitle = ' ('.$lang['srv_ttest']. ($element['sub_type'] == 1 ? ' - '.$lang['srv_chart'] : '') .')';
+ }
+
+ // break
+ elseif($element['type'] == '9'){
+
+ // ustvarimo ttest objekt
+ $breakClass = new SurveyBreak($this->ank_id);
+
+ $breakData1 = explode("-", $element['spr1']);
+ $breakData2 = explode("-", $element['spr2']);
+
+
+ $label1 = '';
+ $variables = $breakClass->getVariableList(2);
+ foreach ($variables as $variable) {
+
+ if($breakData1[0] == $variable['sequence']){
+ $label1 = ( (int)$variable['sub'] == 0 ? '' : ( (int)$variable['sub'] == 1 ? '&nbsp;&nbsp;' : '&nbsp;&nbsp;&nbsp;&nbsp;' )) . $variable['variableNaslov'];
+ $label1 = (strlen($label1) > 60) ? substr($label1, 0, 57).'...' : $label1;
+
+ break;
+ }
+ }
+
+ $label2 = '';
+ $variables = $this->getBreakDependentVariableList($breakClass);
+ foreach ($variables as $variable) {
+
+ if($breakData2[0] == $variable['sequence']){
+ //$label2 = $variable['variableNaslov'];
+ $label2 = (strlen($variable['variableNaslov']) > 60) ? substr($variable['variableNaslov'], 0, 57).'...' : $variable['variableNaslov'];
+
+ break;
+ }
+ }
+
+ $title = $label1 . ' / ' . $label2;
+ $subtitle = '('.$lang['srv_break']. ($element['sub_type'] == 1 ? ' - '.$lang['srv_chart'] : '') .')';
+ }
+
+
+ //TODO: Potrebno je v LATEX določiti ali je stran obrnjena landscape
+ $width = $this->landscapeTest() ? 270 : 165;
+
+ $boldedTitle = $this->returnBold($this->encodeText($this->encodeText($title . $subtitle)));
+ $texTitle .= $this->returnCentered($boldedTitle);
+
+ return $texTitle;
+ }
+
+ function getTTestLabel($spr=null, $ttestClass=null){
+
+ $data = explode("-", $spr);
+
+ $spid = $data[1];
+ $seq = $data[0];
+ $grid = $data[2];
+
+ $spr_data = $ttestClass->_HEADERS[$spid];
+ if ($grid == 'undefined') {
+
+ # imamp lahko več variabel
+ foreach ($spr_data['grids'] as $gkey => $grid ) {
+
+ foreach ($grid['variables'] as $vkey => $variable) {
+ $sequence = $variable['sequence'];
+ if ($sequence == $seq) {
+ $sprLabel = '('.$variable['variable'].') '. $variable['naslov'];
+ }
+ }
+ }
+ } else {
+ # imamo subgrid
+ $sprLabel = '('.$spr_data['grids'][$grid]['variable'].') '. $spr_data['grids'][$grid]['naslov'];
+ }
+
+ return $sprLabel;
+ }
+
+ /** funkcija vrne seznam primern variabel za break
+ *
+ */
+ function getBreakDependentVariableList($breakClass=null) {
+
+ $variablesList = array();
+
+ # zloopamo skozi header in dodamo variable (potrebujemo posamezne sekvence)
+ foreach ($breakClass->_HEADERS AS $skey => $spremenljivka) {
+
+ $tip = $spremenljivka['tip'];
+
+ $_dropdown_condition = (is_numeric($tip) && $tip != 5 && $tip != 8 && $tip != 9) ? true : false;
+ if ($_dropdown_condition) {
+
+ $cnt_all = (int)$spremenljivka['cnt_all'];
+ if ( $cnt_all == '1' || in_array($tip, array(1,2,3,4,7,17,18,21,22)) || ($tip == 6 && $spremenljivka['enota'] == 2) ) {
+
+ # pri tipu radio ali select dodamo tisto variablo ki ni polje "drugo"
+ if ($tip == 1 || $tip == 3 ) {
+ if (count($spremenljivka['grids']) == 1 ) {
+ # če imamo samo en grid ( lahko je več variabel zaradi polja drugo.
+ $grid = $spremenljivka['grids'][0];
+ if (count ($grid['variables']) > 0) {
+ foreach ($grid['variables'] AS $vid => $variable ){
+ if ($variable['other'] != 1) {
+ # imampo samo eno sekvenco grids[0]variables[0]
+ $variablesList[] = array(
+ 'tip'=>$tip,
+ 'spr_id'=>$skey,
+ 'sequence'=>$spremenljivka['grids'][0]['variables'][$vid]['sequence'],
+ 'variableNaslov'=>'('.$spremenljivka['variable'].')&nbsp;'.strip_tags($spremenljivka['naslov']),
+ 'canChoose'=>true,
+ 'sub'=>0);
+
+ }
+ }
+ }
+ }
+ }
+
+ else {
+ # imampo samo eno sekvenco grids[0]variables[0]
+ $variablesList[] = array(
+ 'tip'=>$tip,
+ 'spr_id'=>$skey,
+ 'sequence'=>$spremenljivka['grids'][0]['variables'][0]['sequence'],
+ 'variableNaslov'=>'('.$spremenljivka['variable'].')&nbsp;'.strip_tags($spremenljivka['naslov']),
+ 'canChoose'=>true,
+ 'sub'=>0);
+ }
+ }
+ else if ($cnt_all > 1){
+ # imamo več skupin ali podskupin, zato zlopamo skozi gride in variable
+ if (count($spremenljivka['grids']) > 0 ) {
+ $variablesList[] = array(
+ 'tip'=>$tip,
+
+ 'variableNaslov'=>'('.$spremenljivka['variable'].')&nbsp;'.strip_tags($spremenljivka['naslov']),
+ 'canChoose'=>false,
+ 'sub'=>0);
+ # ali imamo en grid, ali več (tabele
+ if (count($spremenljivka['grids']) == 1 ) {
+ # če imamo samo en grid ( lahko je več variabel zaradi polja drugo.
+ $grid = $spremenljivka['grids'][0];
+ if (count ($grid['variables']) > 0) {
+ foreach ($grid['variables'] AS $vid => $variable ){
+ if ($variable['other'] != 1) {
+ $variablesList[] = array(
+ 'tip'=>$tip,
+ 'spr_id'=>$skey,
+ 'sequence'=>$variable['sequence'],
+ 'variableNaslov'=>'('.$variable['variable'].')&nbsp;'.strip_tags($variable['naslov']),
+ 'canChoose'=>true,
+ 'sub'=>1);
+ }
+ }
+ }
+
+ } elseif($tip == 6) {
+ # imamo več gridov - tabele
+ foreach($spremenljivka['grids'] AS $gid => $grid) {
+ $sub = 0;
+ if ($grid['variable'] != '') {
+ $sub++;
+ $variablesList[] = array(
+ 'tip'=>$tip,
+ 'variableNaslov'=>'('.$grid['variable'].')&nbsp;'.strip_tags($grid['naslov']),
+ 'canChoose'=>false,
+ 'sub'=>$sub);
+ }
+ if (count ($grid['variables']) > 0) {
+ $sub++;
+ foreach ($grid['variables'] AS $vid => $variable ){
+ if ($variable['other'] != 1) {
+ $variablesList[] = array(
+ 'tip'=>$tip,
+ 'spr_id'=>$skey,
+ 'sequence'=>$variable['sequence'],
+ 'variableNaslov'=>'('.$variable['variable'].')&nbsp;'.strip_tags($variable['naslov']),
+ 'canChoose'=>true,
+ 'sub'=>$sub);
+ }
+ }
+ }
+ }
+ } else {
+ foreach($spremenljivka['grids'] AS $gid => $grid) {
+ $sub = 0;
+ if ($grid['variable'] != '') {
+ $sub++;
+ $variablesList[] = array(
+ 'tip'=>$tip,
+ 'spr_id'=>$skey,
+ 'grd_id'=>$gid,
+ 'sequence'=>$grid['variables'][0]['sequence'],
+ 'variableNaslov'=>'('.$grid['variable'].')&nbsp;'.strip_tags($grid['naslov']),
+ 'canChoose'=>true,
+ 'sub'=>1);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return $variablesList;
+ }
+
+
+ // Izpisemo komentar elementa
+ function displayComment($text=''){
+ global $lang;
+ $texTitle = '';
+
+ if($text != ''){
+ $texTitle .= $this->encodeText($text).$this->texNewLine;
+ }
+ return $texTitle;
+ }
+
+
+ /*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 drawLine()
+ {
+ $cy = $this->pdf->getY();
+ $this->pdf->Line(15, $cy , 195, $cy , $this->currentStyle);
+ }
+
+ 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;
+ }
+
+
+ // Ce imamo v porocilu tabelo crosstab ali ttest ali means imamo landscape orientacijo
+ function landscapeTest(){
+ global $global_user_id;
+
+ $sql = sisplet_query("SELECT * FROM srv_custom_report WHERE ank_id='$this->ank_id' AND usr_id='$global_user_id' AND profile='$this->creportProfile' AND sub_type='0' AND (type='5' OR type='6' OR type='7' OR type='9')");
+
+ if(mysqli_num_rows($sql) > 0)
+ return true;
+ else
+ return false;
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/admin/survey/export/latexclasses/Analize/AnalizaCharts.php b/admin/survey/export/latexclasses/Analize/AnalizaCharts.php
new file mode 100644
index 0000000..bd632fa
--- /dev/null
+++ b/admin/survey/export/latexclasses/Analize/AnalizaCharts.php
@@ -0,0 +1,293 @@
+<?php
+
+ global $site_path;
+
+ include_once('../../function.php');
+ include_once('../survey/definition.php');
+/* include_once('../exportclases/class.pdfIzvozAnalizaSums.php');
+ include_once('../exportclases/class.pdfIzvozAnalizaFrekvenca.php');
+ include_once('../exportclases/class.pdfIzvozAnalizaFunctions.php');
+ require_once('../exportclases/class.enka.pdf.php'); */
+
+ define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
+ define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
+
+ define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
+ define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
+
+ define("M_ANALIZA_DESCRIPTOR", "descriptor");
+ define("M_ANALIZA_FREQUENCY", "frequency");
+
+ define("FNT_FREESERIF", "freeserif");
+ define("FNT_FREESANS", "freesans");
+ define("FNT_HELVETICA", "helvetica");
+
+ define("FNT_MAIN_TEXT", FNT_FREESANS);
+ define("FNT_QUESTION_TEXT", FNT_FREESANS);
+ define("FNT_HEADER_TEXT", FNT_FREESANS);
+
+ define("FNT_MAIN_SIZE", 10);
+ define("FNT_QUESTION_SIZE", 9);
+ define("FNT_HEADER_SIZE", 10);
+
+ define("RADIO_BTN_SIZE", 3);
+ define("CHCK_BTN_SIZE", 3);
+ define("LINE_BREAK", 6);
+
+ define ('PDF_MARGIN_HEADER', 8);
+ define ('PDF_MARGIN_FOOTER', 12);
+ define ('PDF_MARGIN_TOP', 18);
+ define ('PDF_MARGIN_BOTTOM', 18);
+ define ('PDF_MARGIN_LEFT', 15);
+ define ('PDF_MARGIN_RIGHT', 15);
+
+/**
+ * @desc Class za generacijo latex
+ */
+class AnalizaCharts extends LatexAnalysisElement {
+
+ var $anketa; // trenutna anketa
+ var $spremenljivka; // trenutna spremenljivka
+
+ var $headFileName = null; // pot do header fajla
+
+ var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+ var $pdf;
+ var $currentStyle;
+
+ var $skin;
+ var $numbering;
+ var $frontpage;
+
+ var $sessionData; // podatki ki so bili prej v sessionu - za nastavitve, ki se prenasajo v izvoze...
+
+ var $current_loop = 'undefined';
+
+ protected $export_format;
+
+
+ /**
+ * @desc konstruktor
+ */
+ function __construct ($anketa = null, $export_format='', $sprID = null, $loop = null){
+ global $site_path;
+ global $global_user_id;
+
+ // preverimo ali imamo stevilko ankete
+ if ( is_numeric($anketa['id']) ){
+
+ $this->anketa = $anketa;
+ $this->spremenljivka = $sprID;
+ $this->export_format = $export_format;
+
+ SurveyChart::Init($this->anketa['id']);
+
+ // Poskrbimo za datoteko s podatki
+ $SDF = SurveyDataFile::get_instance();
+ $SDF->init($this->anketa['id']);
+ $SDF->prepareFiles();
+
+ $this->headFileName = $SDF->getHeaderFileName();
+
+ // preberemo nastavitve iz baze (prej v sessionu)
+ SurveyUserSession::Init($this->anketa['id']);
+ $this->sessionData = SurveyUserSession::getData('charts');
+ }
+ else{
+ $this->pi['msg'] = "Anketa ni izbrana!";
+ $this->pi['canCreate'] = false;
+ return false;
+ }
+
+
+ if ( SurveyInfo::getInstance()->SurveyInit($this->anketa['id']) ){
+ SurveyUserSetting::getInstance()->Init($this->anketa['id'], $global_user_id);
+
+ $this->skin = SurveyUserSetting :: getInstance()->getSettings('default_chart_profile_skin');
+ $this->numbering = SurveyDataSettingProfiles :: getSetting('chartNumbering');
+ $this->frontpage = SurveyDataSettingProfiles :: getSetting('chartFP');
+ }
+ 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');
+ }
+
+ function displayCharts(){
+ global $site_path;
+ global $lang;
+
+ $chart = '';
+ #preberemo HEADERS iz datoteke
+ SurveyAnalysis::$_HEADERS = unserialize(file_get_contents($this->headFileName));
+
+ # polovimo frekvence
+ SurveyAnalysis::getFrequencys();
+
+ #odstranimo sistemske variable
+ SurveyAnalysis::removeSystemVariables();
+
+ $vars_count = count(SurveyAnalysis::$_FILTRED_VARIABLES);
+
+ foreach (SurveyAnalysis::$_HEADERS AS $spid => $spremenljivka) {
+ // preverjamo ali je meta
+ if (($spremenljivka['tip'] != 'm'
+ && in_array($spremenljivka['tip'], SurveyAnalysis::$_FILTRED_TYPES ))
+ && (!isset($_spid) || (isset($_spid) && $_spid == $spid))
+ && ($this->spremenljivka == $spid || $this->spremenljivka == null) ) {
+
+ // ali imamo sfiltrirano spremenljivko
+ if ($vars_count == 0 || ($vars_count > 0 && isset(SurveyAnalysis::$_FILTRED_VARIABLES[$spid]) ) ) {
+
+ // Ce imamo radio tip in manj kot 5 variabel po defaultu prikazemo piechart
+ $vars = count($spremenljivka['options']);
+ $type = 0;
+ if( ($spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 3) && $vars < 5 )
+ $type = 2;
+
+ //ce imamo nominalno spremenljivko ali ce je samo 1 variabla nimamo povprecij
+ if($spremenljivka['tip'] == 6 && ($spremenljivka['cnt_all'] == 1 || $spremenljivka['skala'] == 1) && $type == 0 )
+ $type = 2;
+
+
+ if($spremenljivka['tip'] == 4 || $spremenljivka['tip'] == 19 || $spremenljivka['tip'] == 21 || $spremenljivka['tip'] == 22){
+
+ $hideEmpty = SurveyDataSettingProfiles :: getSetting('hideEmpty');
+
+ // ce imamo vklopljeno nastavitev prikaz tabel med grafi (default)
+ if($spremenljivka['tip'] == 19){
+
+ $_answers = SurveyAnalysis::getAnswers($spremenljivka,10);
+
+ // Preverimo ce je prazna in ne izpisujemo praznih
+ if($_answers['validCnt'] != 0 || $hideEmpty != 1){
+ //izpis naslova/podnaslova tabele
+ $stevilcenje = ($exportClass->numbering == 1 ? $spremenljivka['variable'].' - ' : '');
+ $title = $stevilcenje . $spremenljivka['naslov'];
+ $boldedTitle = $this->returnBold($this->encodeText($title)).$this->texNewLine; //vrni boldan naslov in skoci v novo vrstico
+ if($spremenljivka['tip'] == 2){
+ $boldedSubTitle = $lang['srv_info_checkbox'];
+ }
+
+ $chart .= $this->returnCentered($boldedTitle.$boldedSubTitle, $this->export_format); //vrni sredinsko poravnana naslov in podnaslova
+ //izpis naslova/podnaslova tabele - konec
+
+ $sums = new AnalizaSums($this->anketa);
+ $chart .= $sums->sumMultiText($spid, 'sums', $this->export_format);
+ }
+ }
+ else{
+ $emptyData = false;
+ if($hideEmpty == 1){
+
+ $emptyData = true;
+ if (count($spremenljivka['grids']) > 0){
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+
+ $_variables_count = count($grid['variables']);
+
+ if ($_variables_count > 0 )
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+
+ if(SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt'] > 0)
+ $emptyData = false;
+ }
+ }
+ }
+ }
+
+ // Preverimo ce je prazna in ne izpisujemo praznih
+ if($emptyData == false || $hideEmpty != 1){
+ //pdfIzvozAnalizaFunctions::frequencyVertical($spid, $displayTitle=true);
+ //izpis naslova/podnaslova tabele
+ $stevilcenje = ($exportClass->numbering == 1 ? $spremenljivka['variable'].' - ' : '');
+ $title = $stevilcenje . $spremenljivka['naslov'];
+ $boldedTitle = $this->returnBold($this->encodeText($title)).$this->texNewLine; //vrni boldan naslov in skoci v novo vrstico
+ if($spremenljivka['tip'] == 2){
+ $boldedSubTitle = $lang['srv_info_checkbox'];
+ }
+ $chart .= $this->returnCentered($boldedTitle.$boldedSubTitle, $this->export_format); //vrni sredinsko poravnana naslov in podnaslova
+ //izpis naslova/podnaslova tabele - konec
+
+ $freq = new AnalizaFreq($this->anketa);
+ $chart .= $freq->frequencyVertical($spid, $this->export_format);
+ }
+ }
+ }
+ elseif( in_array($spremenljivka['tip'],array(1,2,3,6,7,8,16,17,18,20)) ){
+ // Prikazemo posamezen graf
+ $chart .= $this->displayChartsInLatex($spid, $type, $fromCharts=true, $this->anketa, $from='charts', $this, $this->export_format);
+ }
+ }
+
+ } // end if $spremenljivka['tip'] != 'm'
+
+ } // end foreach self::$_HEADERS
+ return $chart;
+ }
+
+ function setUserId($usrId=null) {$this->anketa['uid'] = $usrId;}
+ function getUserId() {return ($this->anketa['uid'])?$this->anketa['uid']:false;}
+
+ // vrnemo string za prvi in zadnji vnos
+ function getEntryDates(){
+ global $lang;
+
+ $prvi_vnos_date = SurveyInfo::getSurveyFirstEntryDate();
+ $prvi_vnos_time = SurveyInfo::getSurveyFirstEntryTime();
+ $zadnji_vnos_date = SurveyInfo::getSurveyLastEntryDate();
+ $zadnji_vnos_time = SurveyInfo::getSurveyLastEntryTime();
+
+ if ($prvi_vnos_date != null) {
+ $first = $this->dateFormat($prvi_vnos_date,'j.n.y');
+ $first .= $prvi_vnos_time != null ? (SurveyInfo::$dateTimeSeperator .$this->dateFormat($prvi_vnos_time,'G:i')) : '';
+ }
+ if ($zadnji_vnos_date != null) {
+ $last = $this->dateFormat($zadnji_vnos_date,'j.n.y');
+ $last .= $zadnji_vnos_time != null ? (SurveyInfo::$dateTimeSeperator .$this->dateFormat($zadnji_vnos_time,'G:i')) : '';
+ }
+
+ $text = $lang['srv_setting_collectdata_datetime'].$first.' '.$lang['s_to'].' '.$last;
+
+ return $text;
+ }
+
+ function dateFormat($input=null, $format=null) {
+ if ($input != '..') {
+ return date($format,strtotime($input));
+ } else {
+ return '';
+ }
+ }
+
+ 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;
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/admin/survey/export/latexclasses/Analize/AnalizaCrosstab.php b/admin/survey/export/latexclasses/Analize/AnalizaCrosstab.php
new file mode 100644
index 0000000..7defd7f
--- /dev/null
+++ b/admin/survey/export/latexclasses/Analize/AnalizaCrosstab.php
@@ -0,0 +1,1320 @@
+<?php
+
+ global $site_path;
+
+ include_once('../../function.php');
+ include_once('../survey/definition.php');
+/* include_once('../exportclases/class.pdfIzvozAnalizaFrekvenca.php');
+ include_once('../exportclases/class.pdfIzvozAnalizaFunctions.php');
+ require_once('../exportclases/class.enka.pdf.php'); */
+
+ define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
+ define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
+
+ define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
+ define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
+
+ define("M_ANALIZA_DESCRIPTOR", "descriptor");
+ define("M_ANALIZA_FREQUENCY", "frequency");
+
+ define("FNT_FREESERIF", "freeserif");
+ define("FNT_FREESANS", "freesans");
+ define("FNT_HELVETICA", "helvetica");
+
+ define("FNT_MAIN_TEXT", FNT_FREESANS);
+ define("FNT_QUESTION_TEXT", FNT_FREESANS);
+ define("FNT_HEADER_TEXT", FNT_FREESANS);
+
+ define("FNT_MAIN_SIZE", 10);
+ define("FNT_QUESTION_SIZE", 9);
+ define("FNT_HEADER_SIZE", 10);
+
+ define("RADIO_BTN_SIZE", 3);
+ define("CHCK_BTN_SIZE", 3);
+ define("LINE_BREAK", 6);
+
+ define ('PDF_MARGIN_HEADER', 8);
+ define ('PDF_MARGIN_FOOTER', 12);
+ define ('PDF_MARGIN_TOP', 18);
+ define ('PDF_MARGIN_BOTTOM', 18);
+ define ('PDF_MARGIN_LEFT', 15);
+ define ('PDF_MARGIN_RIGHT', 15);
+
+/**
+ * @desc Class za generacijo izvoza v Latex
+ */
+
+class AnalizaCrosstab extends LatexAnalysisElement{
+
+ var $anketa; // trenutna anketa (array)
+ var $spremenljivka; // trenutna spremenljivka
+
+ private $headFileName = null; # pot do header fajla
+ private $dataFileName = null; # pot do data fajla
+ private $dataFileStatus = null; # status data datoteke
+ private $CID = null; # class za inkrementalno dodajanje fajlov
+
+ var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+ var $pdf;
+ protected $tex;
+ var $currentStyle;
+
+ var $current_loop = 'undefined';
+
+ static public $_FILTRED_OTHER = array(); # filter za polja drugo
+
+ protected $texNewLine = '\\\\ ';
+ protected $export_format;
+ protected $horizontalLineTex = "\\hline ";
+ protected $show_valid_percent;
+ protected $texBigSkip = '\bigskip';
+ protected $spaceBetweenTables = ' \newline \vspace*{1 cm} \newline';
+
+ public $crosstabClass = null; //crosstab class
+
+ protected $sessionData;
+ protected $counter;
+
+ /**
+ * @desc konstruktor
+ */
+ function __construct ($anketa = null, $crosstabClass=null, $counter=null, $sprID = null, $loop = null)
+ {
+ global $site_path;
+ global $global_user_id;
+
+ // preverimo ali imamo stevilko ankete
+ //if ( is_numeric($anketa) )
+ if ( is_numeric($anketa['id']) )
+ {
+ $this->anketa = $anketa;
+ $this->spremenljivka = $sprID;
+ $this->counter = $counter;
+ $this->crosstabClass = $crosstabClass;
+
+
+ // preberemo nastavitve iz baze (prej v sessionu)
+ SurveyUserSession::Init($this->anketa['id']);
+ $this->sessionData = SurveyUserSession::getData('crosstab_charts');
+ //print_r($this->sessionData);
+ //echo "sessionData: ".$this->sessionData[name]."</br>";
+ //$hideAllSystem = SurveyDataSettingProfiles :: getSetting('hideAllSystem');
+ /* $hideAllSystem = SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT');
+ echo "hideAllSystem: ".$hideAllSystem."</br>"; */
+ //SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT')
+ }
+ else
+ {
+ $this->pi['msg'] = "Anketa ni izbrana!";
+ $this->pi['canCreate'] = false;
+ return 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');
+ }
+
+
+ function init()
+ {
+ global $lang;
+
+ // array used to define the language and charset of the pdf file to be generated
+ $language_meta = Array();
+ $language_meta['a_meta_charset'] = 'UTF-8';
+ $language_meta['a_meta_dir'] = 'ltr';
+ $language_meta['a_meta_language'] = 'sl';
+ $language_meta['w_page'] = $lang['page'];
+
+ //set some language-dependent strings
+ $this->pdf->setLanguageArray($language_meta);
+
+ //set margins
+ $this->pdf->setPrintHeaderFirstPage(true);
+ $this->pdf->setPrintFooterFirstPage(true);
+ $this->pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
+ $this->pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
+ $this->pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
+
+ // set header and footer fonts
+ $this->pdf->setHeaderFont(Array(FNT_HEADER_TEXT, "I", FNT_HEADER_SIZE));
+ $this->pdf->setFooterFont(Array(FNT_HEADER_TEXT, 'I', FNT_HEADER_SIZE));
+
+
+ // set document information
+ $this->pdf->SetAuthor('An Order Form');
+ $this->pdf->SetTitle('An Order');
+ $this->pdf->SetSubject('An Order');
+
+ // set default header data
+ $this->pdf->SetHeaderData(null, null, "www.1ka.si", $this->encodeText(SurveyInfo::getInstance()->getSurveyAkronim()));
+
+ //set auto page breaks
+ $this->pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
+
+ $this->pdf->SetFont(FNT_MAIN_TEXT, '', FNT_MAIN_SIZE);
+ //set image scale factor
+ $this->pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
+ return true;
+ }
+
+ public function showCrosstabsTable($crosstabClass=null, $export_format='', $creport=false) {
+ global $lang;
+ $tabela = '';
+ $this->crosstabClass = $crosstabClass;
+
+ if ($this->crosstabClass->getSelectedVariables(1) !== null && $this->crosstabClass->getSelectedVariables(2) !== null) {
+ if($creport){
+ $variables2 = $this->crosstabClass->getSelectedVariables(1);
+ $variables1 = $this->crosstabClass->getSelectedVariables(2);
+ }else{
+ $variables1 = $this->crosstabClass->getSelectedVariables(1);
+ $variables2 = $this->crosstabClass->getSelectedVariables(2);
+ }
+
+ $stevec = 0;
+
+ foreach ($variables1 AS $v_first) {
+ foreach ($variables2 AS $v_second) {
+
+ $crosstabs = null;
+ $crosstabs_value = null;
+
+ $crosstabs = $this->crosstabClass->createCrostabulation($v_first, $v_second);
+ $crosstabs_value = $crosstabs['crosstab'];
+
+ # podatki spremenljivk
+ $spr1 = $this->crosstabClass->_HEADERS[$v_first['spr']];
+ $spr2 = $this->crosstabClass->_HEADERS[$v_second['spr']];
+
+ /* print_r($crosstabClass);
+ echo "</br>"; */
+
+ $grid1 = $spr1['grids'][$v_first['grd']];
+ $grid2 = $spr2['grids'][$v_second['grd']];
+
+ #število vrstic in število kolon
+ $cols = count($crosstabs['options1']);
+ $rows = count($crosstabs['options2']);
+
+ # ali prikazujemo vrednosti variable pri spremenljivkah
+ $show_variables_values = $this->crosstabClass->doValues;
+
+ # nastavitve oblike
+ if (($this->crosstabClass->crossChk1 || $this->crosstabClass->crossChk2 || $this->crosstabClass->crossChk3) && ($this->crosstabClass->crossChkEC || $this->crosstabClass->crossChkRE || $this->crosstabClass->crossChkSR || $this->crosstabClass->crossChkAR)) {
+ # dodamo procente in residuale
+ $rowSpan = 3;
+ $numColumnPercent = $this->crosstabClass->crossChk1 + $this->crosstabClass->crossChk2 + $this->crosstabClass->crossChk3;
+ $numColumnResidual = $this->crosstabClass->crossChkEC + $this->crosstabClass->crossChkRE + $this->crosstabClass->crossChkSR + $this->crosstabClass->crossChkAR;
+ $tblColumn = max($numColumnPercent,$numColumnResidual);
+ } else if ($this->crosstabClass->crossChk1 || $this->crosstabClass->crossChk2 || $this->crosstabClass->crossChk3) {
+ # imamo samo procente
+ $rowSpan = 2;
+ $numColumnPercent = $this->crosstabClass->crossChk1 + $this->crosstabClass->crossChk2 + $this->crosstabClass->crossChk3;
+ $numColumnResidual = 0;
+ $tblColumn = $numColumnPercent;
+ } else if ($this->crosstabClass->crossChkEC || $this->crosstabClass->crossChkRE || $this->crosstabClass->crossChkSR || $this->crosstabClass->crossChkAR) {
+ # imamo samo residuale
+ $rowSpan = 2;
+ $numColumnPercent = 0;
+ $numColumnResidual = $this->crosstabClass->crossChkEC + $this->crosstabClass->crossChkRE + $this->crosstabClass->crossChkSR + $this->crosstabClass->crossChkAR;
+ $tblColumn = $numColumnResidual;
+ } else {
+ #prikazujemo samo podatke
+ $rowSpan = 1;
+ $numColumnPercent = 0;
+ $numColumnResidual = 0;
+ $tblColumn = 1;
+ }
+
+
+ # izrišemo tabelo
+
+ # najprej izrišemo naslovne vrstice
+ # za multicheckboxe popravimo naslov, na podtip
+ $sub_q1 = null;
+ if ($spr1['tip'] == '6' || $spr1['tip'] == '16' || $spr1['tip'] == '17' || $spr1['tip'] == '19' || $spr1['tip'] == '20') {
+ foreach ($spr1['grids'] AS $grid) {
+ foreach ($grid['variables'] AS $variable) {
+ if ($variable['sequence'] == $v_first['seq']) {
+ $sub_q1 = strip_tags($spr1['naslov']);
+ if ($show_variables_values == true ) {
+ $sub_q1 .= '&nbsp;('.strip_tags($spr1['variable']).')';
+ }
+ if ($spr1['tip'] == '16') {
+ $sub_q1 .= ', ' . strip_tags($grid1['naslov']) . ($show_variables_values == true ? '&nbsp;(' . strip_tags($grid1['variable']) . ')' : '');
+ } else {
+ $sub_q1 .= ', ' . strip_tags($variable['naslov']) . ($show_variables_values == true ? '&nbsp;(' . strip_tags($variable['variable']) . ')' : '');
+ }
+ }
+ }
+ }
+ }
+ if ($sub_q1 == null) {
+ $sub_q1 .= strip_tags($spr1['naslov']);
+ $sub_q1 .= ($show_variables_values == true ? '&nbsp;('.strip_tags($spr1['variable']).')' : '');
+ }
+
+ $sub_q2 = null;
+ if ($spr2['tip'] == '6' || $spr2['tip'] == '16' || $spr2['tip'] == '17' || $spr2['tip'] == '19' || $spr2['tip'] == '20') {
+ foreach ($spr2['grids'] AS $grid) {
+ foreach ($grid['variables'] AS $variable) {
+ if ($variable['sequence'] == $v_second['seq']) {
+ $sub_q2 = strip_tags($spr2['naslov']);
+ if ($show_variables_values == true) {
+ $sub_q2 .= '&nbsp;('.strip_tags($spr2['variable']).')';
+ }
+ if ($spr2['tip'] == '16') {
+ $sub_q2.= ', ' . strip_tags($grid2['naslov']) . ($show_variables_values == true ? '&nbsp;(' . strip_tags($grid2['variable']) . ')' : '');
+ } else {
+ $sub_q2.= ', ' . strip_tags($variable['naslov']) . ($show_variables_values == true ? '&nbsp;(' . strip_tags($variable['variable']) . ')' : '');
+ }
+ }
+ }
+ }
+ }
+ if ($sub_q2 == null) {
+ $sub_q2 .= strip_tags($spr2['naslov']);
+ $sub_q2 .= ($show_variables_values == true ? '&nbsp;('.strip_tags($spr2['variable']).')' : '');
+ }
+
+ $this->crosstabVars = array($sub_q1, $sub_q2);
+
+ //pridobitev stevila dodatnih podatkov v vsaki vmesni vrstici oz. stolpcu
+ $steviloVmesnihVrstic = $this->crosstabClass->crossChk0 +
+ ($this->crosstabClass->crossChk1||$this->crosstabClass->crossChk2||$this->crosstabClass->crossChk3) +
+ ($this->crosstabClass->crossChkEC||$this->crosstabClass->crossChkRE||$this->crosstabClass->crossChkSR||$this->crosstabClass->crossChkAR);
+
+ $steviloVmesnihStolpcevPodvrstica2 = $this->crosstabClass->crossChk1 +
+ $this->crosstabClass->crossChk2 +
+ $this->crosstabClass->crossChk3;
+
+ $steviloVmesnihStolpcevPodvrstica3 = $this->crosstabClass->crossChkEC +
+ $this->crosstabClass->crossChkRE +
+ $this->crosstabClass->crossChkSR +
+ $this->crosstabClass->crossChkAR;
+
+ //echo "steviloVmesnihVrstic: ".$steviloVmesnihVrstic."</br>";
+ //echo "steviloVmesnihStolpcevPodvrstica2: ".$steviloVmesnihStolpcevPodvrstica2."</br>";
+ //echo "steviloVmesnihStolpcevPodvrstica3: ".$steviloVmesnihStolpcevPodvrstica3."</br>";
+
+ $podVrstice = 0;
+
+ //if($steviloVmesnihStolpcevPodvrstica2||$steviloVmesnihStolpcevPodvrstica3){
+ if($steviloVmesnihStolpcevPodvrstica2&&$steviloVmesnihStolpcevPodvrstica3){
+ //echo "1 </br>";
+ if($steviloVmesnihStolpcevPodvrstica2 >= $steviloVmesnihStolpcevPodvrstica3){
+ $steviloVmesnihStolpcevPodvrstic = $steviloVmesnihStolpcevPodvrstica2;
+ //}else{
+ }elseif(0 < $steviloVmesnihStolpcevPodvrstica2 && $steviloVmesnihStolpcevPodvrstica2 < $steviloVmesnihStolpcevPodvrstica3){
+ $steviloVmesnihStolpcevPodvrstic = $steviloVmesnihStolpcevPodvrstica3;
+ }
+ //eksperiment
+ $steviloVmesnihStolpcevPodvrstic = $steviloVmesnihStolpcevPodvrstica2*$steviloVmesnihStolpcevPodvrstica3;
+ $podVrstice = 1;
+ }elseif($steviloVmesnihStolpcevPodvrstica2){
+ //echo "2 </br>";
+ $steviloVmesnihStolpcevPodvrstic = $steviloVmesnihStolpcevPodvrstica2;
+ $podVrstice = 1;
+ }elseif($steviloVmesnihStolpcevPodvrstica3){
+ //echo "3 </br>";
+ $steviloVmesnihStolpcevPodvrstic = $steviloVmesnihStolpcevPodvrstica3;
+ $podVrstice = 1;
+ }else{
+ //echo "4 </br>";
+ $steviloVmesnihStolpcevPodvrstic = 1;
+ }
+ //echo "steviloVmesnihStolpcevPodvrstic: ".$steviloVmesnihStolpcevPodvrstic."</br>";
+ //echo "Podvrstice: ".$podVrstice."</br>";
+ //pridobitev stevila dodatnih podatkov v vsaki vmesni vrstici oz. stolpcu - konec
+
+ //za ureditev prepoznavanja presirokih tabele
+ $mejaZaVelikeTabele = 8;
+ $velikostTabele = $cols*$steviloVmesnihStolpcevPodvrstic + 1 + $steviloVmesnihStolpcevPodvrstic; //surova velikost tabele, da prepoznamo, ce je presiroka ali ne
+ //echo "<b>velikost tabele: </b>".($velikostTabele)." podatkov je : $cols </br>";
+
+ if($velikostTabele > $mejaZaVelikeTabele){ //ce imamo veliko tabelo, jo je potrebno razbiti na vec tabel, ker drugace je presiroka
+ //echo "tabela je presiroka, ima ".($velikostTabele)." stolpcev</br>";
+ $presirokaTabela = 1;
+
+ $steviloTabelCelih = intval($velikostTabele / $mejaZaVelikeTabele);
+ $steviloTabelMod = $velikostTabele % $mejaZaVelikeTabele;
+ $delnaTabela = 0;
+ if($steviloTabelMod != 0){
+ $delnaTabela = 1;
+ }
+ $steviloTabel = $steviloTabelCelih + $delnaTabela;
+
+ if($delnaTabela){ //ce je delna tabela, manjsa od velikosti mejnih stolpcev (8)
+ $steviloStolpcevDelnaTabela = $velikostTabele - $steviloTabelCelih*$mejaZaVelikeTabele;
+ }
+
+ /* echo "stevilo podtabel celih ".($steviloTabelCelih)." </br>";
+ echo "stevilo podtabel mod ".($steviloTabelMod)." </br>";
+ echo "stevilo stolpcev delna podtabela ".($steviloStolpcevDelnaTabela)." </br>";
+ echo "stevilo podtabel za izpis: ".($steviloTabel)." </br>"; */
+
+
+
+ $cols = array();
+ $crosstabsOptions1All = array();
+ //$crosstabsOptions1 = array();
+
+ //$crosstabs['options1']
+ //print_r($crosstabs['options1']);
+ //print_r(array_chunk($crosstabs['options1'], $mejaZaVelikeTabele, true));
+
+ //priprava polja s stevilom stolpcev za vsako podtabelo
+ //echo "stevilo vseh podatkov: ".count($crosstabs['options1'])."</br>";
+ $crosstabsOptions1All = array_chunk($crosstabs['options1'], $mejaZaVelikeTabele, true);
+ //print_r($crosstabsOptions1All);
+
+ for($tab=0; $tab<$steviloTabel; $tab++){
+ if($tab != ($steviloTabel-1)){ //ce ni zadnja podtabela
+ $cols[$tab] = $mejaZaVelikeTabele;
+ }else{
+ if($delnaTabela){
+ $cols[$tab] = $steviloStolpcevDelnaTabela - 1;
+ }else{
+ $cols[$tab] = $mejaZaVelikeTabele;
+ }
+ }
+ }
+
+ /* foreach($crosstabsOptions1All as $crosstabsOptions1Index => $crosstabsOptions1){
+ if($crosstabsOptions1Index != (count($crosstabsOptions1All)-1)){ //ce ni zadnja podtabela
+ $cols[$crosstabsOptions1Index] = $mejaZaVelikeTabele;
+ }else{
+ if($delnaTabela){
+ $cols[$crosstabsOptions1Index] = $steviloStolpcevDelnaTabela;
+ }else{
+ $cols[$crosstabsOptions1Index] = $mejaZaVelikeTabele;
+ }
+ }
+ } */
+ //priprava polja s stevilom stolpcev za vsako podtabelo - konec
+
+ //priprava polja s stevilom stolpcev za vsako podtabelo
+ //echo "stevilo vseh podatkov: ".count($crosstabs['options1'])."</br>";
+ /* $crosstabsOptions1All = array_chunk($crosstabs['options1'], $mejaZaVelikeTabele, true);
+ //print_r($crosstabsOptions1All);
+
+ $steviloVsehStolpcev = 0;
+
+ foreach($crosstabsOptions1All as $crosstabsOptions1Index => $crosstabsOptions1){ //TOLE JE POTREBNO PREUREDITI, SAJ SE POJAVI TEŽAVA, KO PODATKA NI IN JE STOLPEC S SUMAMI (recimo)
+ if($crosstabsOptions1Index != (count($crosstabsOptions1All)-1)){ //ce ni zadnja podtabela
+ $cols[$crosstabsOptions1Index] = count($crosstabsOptions1All[$crosstabsOptions1Index]);
+ $steviloVsehStolpcev = $steviloVsehStolpcev + (count($crosstabsOptions1All[$crosstabsOptions1Index]) + 1);
+ }else{
+ if($delnaTabela){
+ //$cols[$crosstabsOptions1Index] = count($crosstabsOptions1All[$crosstabsOptions1Index]) + 1;
+ $cols[$crosstabsOptions1Index] = count($crosstabsOptions1All[$crosstabsOptions1Index]);
+ }else{
+ //$cols[$crosstabsOptions1Index] = count($crosstabsOptions1All[$crosstabsOptions1Index]) + 1;
+ $cols[$crosstabsOptions1Index] = count($crosstabsOptions1All[$crosstabsOptions1Index]);
+ }
+ $steviloVsehStolpcev = $steviloVsehStolpcev + (count($crosstabsOptions1All[$crosstabsOptions1Index]) + 2);
+ }
+ } */
+ //priprava polja s stevilom stolpcev za vsako podtabelo - konec
+ //echo "steviloVsehStolpcev: $steviloVsehStolpcev </br>";
+
+ }else{
+ $presirokaTabela = 0;
+ }
+ //za ureditev prepoznavanja presirokih tabele - konec
+
+
+ if($presirokaTabela == 0){ //ce ni presiroka tabela
+
+ if($stevec == 0){
+ //Priprava parametrov za tabelo
+
+ $steviloStolpcevParameterTabular = $cols*$steviloVmesnihStolpcevPodvrstic + 1 + $steviloVmesnihStolpcevPodvrstic;
+
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ $parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ //$parameterTabular .= ($export_format == 'pdf' ? ' >{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ $parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'c|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/ //pred spremembo je bilo to
+ }
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+ //echo "Parametri tabele: $parameterTabular </br>";
+ $tabela .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+ }
+
+ //prva vrstica ######################################################################################
+ /*prvi in zadnji stolpec prve vrstice prazna, ostali pa z ustreznim besedilom*/
+ $steviloMultiCol1 = $cols * $steviloVmesnihStolpcevPodvrstic;
+
+ ##########
+ $steviloTabColSep = ($steviloMultiCol1-1)*2;
+ $steviloArrayrulewidth = ($steviloMultiCol1-1);
+
+ if($export_format=='pdf'){
+ //$tabela .= " & \multicolumn{".$steviloMultiCol1."}{>{\hsize=\dimexpr".$steviloMultiCol1."\hsize+".$steviloTabColSep."\\tabcolsep+".$steviloArrayrulewidth."\arrayrulewidth\\relax}C|}{".$this->encodeText($sub_q1)."} "; //prvi (prazen) in stolpec z besedilom
+ $tabela .= " & \multicolumn{".$steviloMultiCol1."}{>{\hsize=\dimexpr".$steviloMultiCol1."\hsize+".$steviloTabColSep."\\tabcolsep+".$steviloArrayrulewidth."\arrayrulewidth\\relax}c|}{".$this->encodeText($sub_q1)."} "; //prvi (prazen) in stolpec z besedilom
+ }elseif($export_format=='rtf'){
+ $tabela .= " & \multicolumn{".$steviloMultiCol1."}{c|}{".$this->encodeText($sub_q1)."} "; //prvi (prazen) in stolpec z besedilom
+ }
+
+ ###########
+
+ if($cols!=0){
+ if($steviloVmesnihStolpcevPodvrstic==1){
+ $tabela .= " & "; //zadnji stolpec
+ }else{
+ if($export_format=='xls'){
+ $tabela .= " & \multicolumn{".$steviloVmesnihStolpcevPodvrstic."}{c|}{}"; //zadnji stolpec
+ }else{
+ $tabela .= " & \multicolumn{".$steviloVmesnihStolpcevPodvrstic."}{X|}{}"; //zadnji stolpec
+ //$tabela .= " & \multicolumn{".$steviloVmesnihStolpcevPodvrstic."}{C|}{}"; //zadnji stolpec
+ }
+ }
+ }
+
+
+
+ $tabela .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //prva vrstica - konec ##############################################################################
+
+ // druga vrstica ####################################################################################
+ $tabela .= $this->encodeText($sub_q2); //prvi stolpec 2. vrstice
+ //echo "testiram, kjer ssem: ".$this->encodeText($sub_q2)."</br>";
+ //echo "testiram, kjer ssem: ".$steviloTabColSep."</br>";
+ $drugaVrstica = array();
+ if (count($crosstabs['options1']) > 0 ) { //stolpci (izkljucno) med prvim in zadnjim
+ foreach ($crosstabs['options1'] as $ckey1 =>$crossVariabla) {
+ #ime variable
+ $text = $crossVariabla['naslov'];
+ # če ni tekstovni odgovor dodamo key
+ if ($crossVariabla['type'] != 't') {
+ $text .= ' ( '.$ckey1.' )';
+ }
+ $tabela .= $this->MultiColCellLatex($steviloVmesnihStolpcevPodvrstic, $this->encodeText($text));
+ }
+ }
+ //echo "test: ".$podVrstice."</br>";
+ if($podVrstice){ //ce je potrebno multicol prikazovanje
+ //spremenljivke za pravilno sirino
+ $colNum = $steviloVmesnihStolpcevPodvrstic;
+ $colNum2 = $steviloVmesnihStolpcevPodvrstic/$steviloVmesnihStolpcevPodvrstica2; //stevilo podstolpcev za 2. podvrstico
+ $colNum3 = $steviloVmesnihStolpcevPodvrstic/$steviloVmesnihStolpcevPodvrstica3; //stevilo podstolpcev za 3. podvrstico
+ //spremenljivke za pravilno sirino - konec
+
+ $tabela .= $this->MultiColCellLatex($colNum, $this->encodeText($lang['srv_analiza_crosstab_skupaj'])); //izpis naslova zadnjega stolpca 2. vestice
+ }else{
+ $tabela .= " & ";
+ $tabela .= $this->encodeText($lang['srv_analiza_crosstab_skupaj']); //izpis naslova zadnjega stolpca 2. vestice
+ }
+
+ $tabela .= $this->texNewLine; /*nova vrstica*/
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ // druga vrstica - konec #########################################################################
+
+ //izpis vmesnih vrstic tabele ####################################################################
+ if (count($crosstabs['options2']) > 0) {
+
+ //POSAMEZNA VMESNA VRSTICA
+ foreach ($crosstabs['options2'] as $ckey2 =>$crossVariabla2) {
+ //priprava besedila za prvo celico 1. stolpca
+ $text = $crossVariabla2['naslov'];
+ if($export_format != 'xls'){
+ $text = $this->snippet($this->encodeText($text), 25);
+ }
+ if ($crossVariabla2['type'] !== 't') {
+ $text .= ' ('.$ckey2.')';
+ }
+ //priprava besedila za prvo celico 1. stolpca - konec
+
+ //izpis prve celice 1. stolpca
+ if($export_format != 'xls'){
+ $tabela .= $this->MultiRowCellLatex($steviloVmesnihVrstic, $this->encodeText($text));
+ }else{
+ $tabela .= $text;
+ }
+
+ $tabela1 = ''; //za belezenje 1. vrstice s frekvencami
+ $tabela2 = ''; //za belezenje 2. vrstice z odstotki
+ $tabela3 = ''; //za belezenje 3. vrstice z residuali
+
+ foreach ($crosstabs['options1'] as $ckey1 => $crossVariabla1) {
+
+ if ($this->crosstabClass->crossChk0) {
+ # frekvence crostabov
+ $crossChk0 = ((int)$crosstabs_value[$ckey1][$ckey2] > 0) ? $crosstabs_value[$ckey1][$ckey2] : 0;
+ $tabela1 .= $this->DisplayLatexCells($crossChk0, $podVrstice, $colNum);
+ }
+ if ($this->crosstabClass->crossChk1) {
+ #procent vrstica
+ $crossChk1 = $this->encodeText($this->formatNumber($this->crosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$ckey2], $crosstabs_value[$ckey1][$ckey2]), 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk1, $podVrstice, $colNum2);
+ }
+ if ($this->crosstabClass->crossChk2) {
+ #procent stolpec
+ $crossChk2 = $this->encodeText($this->formatNumber($this->crosstabClass->getCrossTabPercentage($crosstabs['sumaStolpec'][$ckey1], $crosstabs_value[$ckey1][$ckey2]), 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk2, $podVrstice, $colNum2);
+ }
+ if ($this->crosstabClass->crossChk3) {
+ #procent skupni
+ $crossChk3 = $this->encodeText($this->formatNumber($this->crosstabClass->getCrossTabPercentage($crosstabs['sumaSkupna'], $crosstabs_value[$ckey1][$ckey2]), 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk3, $podVrstice, $colNum2);
+ }
+
+ # residuali
+ if ($this->crosstabClass->crossChkEC) {
+ $crossChkEC = $this->encodeText($this->formatNumber($crosstabs['exC'][$ckey1][$ckey2], 3, ''));
+ $tabela3 .= $this->DisplayLatexCells($crossChkEC, $podVrstice, $colNum3);
+ }
+ if ($this->crosstabClass->crossChkRE) {
+ $crossChkRE = $this->encodeText($this->formatNumber($crosstabs['res'][$ckey1][$ckey2], 3, ''));
+ $tabela3 .= $this->DisplayLatexCells($crossChkRE, $podVrstice, $colNum3);
+ }
+ if ($this->crosstabClass->crossChkSR) {
+ $crossChkSR = $this->encodeText($this->formatNumber($crosstabs['stR'][$ckey1][$ckey2], 3, ''));
+ $tabela3 .= $this->DisplayLatexCells($crossChkSR, $podVrstice, $colNum3);
+ }
+ if ($this->crosstabClass->crossChkAR) {
+ $crossChkAR = $this->encodeText($this->formatNumber($crosstabs['adR'][$ckey1][$ckey2], 3, ''));
+ $tabela3 .= $this->DisplayLatexCells($crossChkAR, $podVrstice, $colNum3);
+ }
+ }
+
+ //se zadnji stolpec - vedno risemo
+ if ($this->crosstabClass->crossChk0) {
+ # suma po vrsticah
+ $crossChk0 = (int)$crosstabs['sumaVrstica'][$ckey2];
+ $tabela1 .= $this->DisplayLatexCells($crossChk0, $podVrstice, $colNum, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk1 || $this->crosstabClass->crossChk2 || $this->crosstabClass->crossChk3) {
+ # suma po vrsticah v procentih
+ if ($this->crosstabClass->crossChk1) {
+ $crossChk1 = $this->encodeText($this->formatNumber(100, 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk1, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk2) {
+ $crossChk2 = $this->encodeText($this->formatNumber( ($crosstabs['sumaSkupna'] > 0 ? (100 * $crosstabs['sumaVrstica'][$ckey2] / $crosstabs['sumaSkupna']) : 0), 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk2, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk3) {
+ $crossChk3 = $this->encodeText($this->formatNumber( ($crosstabs['sumaSkupna'] > 0 ? (100 * $crosstabs['sumaVrstica'][$ckey2] / $crosstabs['sumaSkupna']) : 0), 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk3, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ }
+
+ $tabela .= $tabela1; //izpis 1. vrstice s freq
+ $tabela .= $this->texNewLine;
+
+ if($steviloVmesnihVrstic > 1){ //ce je potrebno multirow prikazovanje
+ if($tabela2!=''){ //ce je 2. podvrstica
+ if($export_format != 'xls'){
+ $tabela .= ' \cline{2-'.$steviloStolpcevParameterTabular.'}'; //je potrebno urediti prvi stolpec tako, da ni crt med celicami
+ }
+ $tabela .= $tabela2; //izpis 2. vrstice z odstotki
+ $tabela .= $this->texNewLine;
+
+ }
+ if($tabela3!=''){ //ce je 3. podvrstica
+ if($export_format != 'xls'){
+ $tabela .= ' \cline{2-'.$steviloStolpcevParameterTabular.'}'; //je potrebno urediti prvi stolpec tako, da ni crt med celicami
+ }
+ $tabela .= $tabela3; //izpis 3. vrstice z residuali
+ $tabela .= $this->MultiColCellLatex($colNum, ''); //pri residualih je zadnja celica v zadnjem stolpcu prazna
+ $tabela .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex;
+ }
+ }else{
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex;
+ }
+ }
+ }else{
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex;
+ }
+ }
+ }
+ }
+ //izpis vmesnih vrstic tabele - konec ##################################################################################
+
+
+ // skupni sestevki po stolpcih - ZADNJA VRSTICA ########################################################################
+
+ //izpis celice v prvem stolpcu
+ if($export_format != 'xls'){
+ $tabela .= $this->MultiRowCellLatex($steviloVmesnihVrstic, $this->encodeText($lang['srv_analiza_crosstab_skupaj']), $tabela2, $tabela3, $cols);
+ }else{
+ $tabela .= $this->encodeText($lang['srv_analiza_crosstab_skupaj']);
+ }
+ //izpis celice v prvem stolpcu - konec
+
+ if (count($crosstabs['options1']) > 0){
+ $tabelaZadnja1 = ''; //belezi kodo za 1. podvrstico zadnje vrstice
+ $tabelaZadnja2 = ''; //belezi kodo za 2. podvrstico zadnje vrstice
+ foreach ($crosstabs['options1'] as $ckey1 => $crossVariabla1) {
+
+ # prikazujemo eno od treh možnosti
+ if ($this->crosstabClass->crossChk0) {
+ # suma po stolpcih
+ $crossChk0 = (int)$crosstabs['sumaStolpec'][$ckey1];
+ $tabelaZadnja1 .= $this->DisplayLatexCells($crossChk0, $podVrstice, $colNum, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk1 || $this->crosstabClass->crossChk2 || $this->crosstabClass->crossChk3) {
+ # suma po stolpcih v procentih
+ if ($this->crosstabClass->crossChk1) {
+ $crossChk1 = $this->encodeText($this->formatNumber( ($crosstabs['sumaSkupna'] > 0 ? (100 * $crosstabs['sumaStolpec'][$ckey1] / $crosstabs['sumaSkupna']) : 0), 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk1, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk2) {
+ $crossChk2 = $this->encodeText($this->formatNumber(100, 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk2, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk3){
+ $crossChk3 = $this->encodeText($this->formatNumber( ($crosstabs['sumaSkupna'] > 0 ? (100 * $crosstabs['sumaStolpec'][$ckey1] / $crosstabs['sumaSkupna']) : 0), 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk3, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ }
+ }
+
+ # zadnja celica z skupno sumo
+ if ($this->crosstabClass->crossChk0) {
+ # skupna suma
+ $crossChk0 = (int)$crosstabs['sumaSkupna'];
+ $tabelaZadnja1 .= $this->DisplayLatexCells($crossChk0, $podVrstice, $colNum, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk1 || $this->crosstabClass->crossChk2 || $this->crosstabClass->crossChk3) {
+ # suma po stolpcih v procentih
+ if ($this->crosstabClass->crossChk1) {
+ $crossChk1 = $this->encodeText($this->formatNumber(100, 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk1, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk2) {
+ $crossChk2 = $this->encodeText($this->formatNumber(100, 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk2, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk3) {
+ $crossChk3 = $this->encodeText($this->formatNumber(100, 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk3, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ }
+ }
+
+ $tabela .= $tabelaZadnja1; //izpis 1. podvrstice s freq
+ $tabela .= $this->texNewLine;
+
+ if($steviloVmesnihVrstic > 1 && $tabela2!=''){ //ce je potrebno multicol prikazovanje
+ if($export_format != 'xls'){
+ $tabela .= ' \cline{2-'.$steviloStolpcevParameterTabular.'}'; //je potrebno urediti prvi stolpec tako, da ni crt med celicami
+ }
+ }else{
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex;
+ }
+ }
+
+ if($steviloVmesnihVrstic > 1 && $tabela2!=''){ //ce je potrebno multirow prikazovanje
+ $tabela .= $tabelaZadnja2; //izpis 2. vrstice z odstotki
+ $tabela .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex;
+ }
+ }
+ // skupni sestevki po stolpcih - ZADNJA VRSTICA - konec #############################################################################
+
+ $stevec++;
+ }elseif($presirokaTabela == 1){ //ce je tabela presiroka
+ //print_r($cols);
+
+ //echo "<b>velikost tabele: </b>".($velikostTabele)." podatkov je : $cols </br>";
+ //echo $velikostTabele % 2;
+ //potrebno za ureditev zadnje podtabele s Skupaj
+ if($velikostTabele % 2){
+ $niSodo = 1;
+ //$steviloTabel = $steviloTabel - 1;
+ }else{
+ $niSodo = 0;
+ }
+ //echo "stevilo podtabel za izpis, če ni sodo: ".($steviloTabel)." </br>";
+ //potrebno za ureditev predzadnje podtabele - konec
+
+ if($steviloVmesnihStolpcevPodvrstic>1){
+ $crosstabsOptions1All = array_chunk($crosstabs['options1'], 2, true);
+ }
+
+
+ //izpis vsake podtabele posebej
+ for($t=0; $t<$steviloTabel; $t++){
+ $stevec = 0;
+ if($stevec == 0){
+
+ //Priprava parametrov za tabelo
+
+ //$steviloStolpcevParameterTabular = $cols[$t]*$steviloVmesnihStolpcevPodvrstic + 1 + $steviloVmesnihStolpcevPodvrstic;
+ //$steviloStolpcevParameterTabular = $cols[$t]*$steviloVmesnihStolpcevPodvrstic + $steviloVmesnihStolpcevPodvrstic;
+ //$steviloStolpcevParameterTabular = $cols[$t]*$steviloVmesnihStolpcevPodvrstic + 1;
+
+ if($this->crosstabClass->crossChkEC || $this->crosstabClass->crossChkRE || $this->crosstabClass->crossChkSR || $this->crosstabClass->crossChkAR){ //ce je potrebno izpisati tudi reziduale
+ $reziduali = 1;
+ }
+
+ if($t != ($steviloTabel-1)){ //ce ni zadnja podtabela
+ $steviloStolpcevParameterTabular = $mejaZaVelikeTabele + 1;
+ }else{
+ if($delnaTabela){
+ //echo "residuali: ".$this->crosstabClass->crossChkEC." ".$this->crosstabClass->crossChkRE." ".$this->crosstabClass->crossChkSR." ".$this->crosstabClass->crossChkAR."</br>";
+ if($this->crosstabClass->crossChkEC || $this->crosstabClass->crossChkRE || $this->crosstabClass->crossChkSR || $this->crosstabClass->crossChkAR){ //ce je potrebno izpisati tudi reziduale
+ //$reziduali = 1;
+ $steviloStolpcevParameterTabular = $steviloStolpcevDelnaTabela + 1;
+ }else{
+ $steviloStolpcevParameterTabular = $steviloStolpcevDelnaTabela;
+ }
+ /* echo "steviloStolpcevDelnaTabela: $steviloStolpcevDelnaTabela </br>";
+ echo "steviloStolpcevParameterTabular1: $steviloStolpcevParameterTabular </br>"; */
+ //$steviloStolpcevParameterTabular++;
+ }else{
+ $steviloStolpcevParameterTabular = $mejaZaVelikeTabele + 1;
+ }
+ }
+
+ if($steviloStolpcevParameterTabular <= 2){
+ $steviloStolpcevParameterTabular++;
+ }
+ //echo "steviloStolpcevParameterTabular2: $steviloStolpcevParameterTabular </br>";
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ if($t != ($steviloTabel-1)){//ce ni zadnja podtabela
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ $parameterTabular .= ($export_format == 'pdf' ? 'Y|' : 'l|');
+ }else{
+ //$parameterTabular .= ($export_format == 'pdf' ? ' >{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ $parameterTabular .= ($export_format == 'pdf' ? 'Y|' : 'c|');
+ }
+ }else{ //ce je zadnja podtabela
+ $parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+ //echo "Parametri tabele $t: $parameterTabular s številom stolpcev $cols[$t] </br>";
+ $tabela .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+ }
+
+ //prva vrstica ######################################################################################
+ /*prvi in zadnji stolpec prve vrstice prazna, ostali pa z ustreznim besedilom*/
+
+ //$steviloMultiCol1 = $cols[$t] * $steviloVmesnihStolpcevPodvrstic;
+ if($t == ($steviloTabel-1)){ //ce je zadnja podtabela
+ //$steviloMultiCol1 = ($cols[$t]-1) * $steviloVmesnihStolpcevPodvrstic;
+ $steviloMultiCol1 = ($steviloStolpcevParameterTabular - 2);
+ }else{
+ //$steviloMultiCol1 = $cols[$t] * $steviloVmesnihStolpcevPodvrstic;
+ $steviloMultiCol1 = $steviloStolpcevParameterTabular - 1;
+ }
+
+
+ if($reziduali &&($t == ($steviloTabel-1))){ //ce so reziduali in je zadnja podtabela
+ $steviloMultiCol1 = 0;
+ $steviloVmesnihStolpcevPodvrstic=1;
+ }
+ //echo "steviloMultiCol1: ".$steviloMultiCol1." $reziduali</br>";
+ ##########
+
+ if($steviloMultiCol1){
+ $steviloTabColSep = ($steviloMultiCol1-1)*2;
+ $steviloArrayrulewidth = ($steviloMultiCol1-1);
+ if($export_format=='pdf'){
+ //$tabela .= " & \multicolumn{".$steviloMultiCol1."}{>{\hsize=\dimexpr".$steviloMultiCol1."\hsize+".$steviloTabColSep."\\tabcolsep+".$steviloArrayrulewidth."\arrayrulewidth\\relax}C|}{".$this->encodeText($sub_q1)."} "; //prvi (prazen) in stolpec z besedilom
+ $tabela .= " & \multicolumn{".$steviloMultiCol1."}{>{\hsize=\dimexpr".$steviloMultiCol1."\hsize+".$steviloTabColSep."\\tabcolsep+".$steviloArrayrulewidth."\arrayrulewidth\\relax}c|}{".$this->encodeText($sub_q1)."} "; //prvi (prazen) in stolpec z besedilom
+ }elseif($export_format=='rtf'){
+ $tabela .= " & \multicolumn{".$steviloMultiCol1."}{c|}{".$this->encodeText($sub_q1)."} "; //prvi (prazen) in stolpec z besedilom
+ }
+ }else{
+ $tabela .= " & ".$this->encodeText($sub_q1)." ";
+ }
+ ###########
+ //echo "testiram, kjer ssem: ".$this->encodeText($sub_q1)."</br>";
+
+ if($cols[$t]!=0 &&($t == ($steviloTabel-1))){
+ if($steviloVmesnihStolpcevPodvrstic==1){
+ $tabela .= " & "; //zadnji stolpec
+ }else{
+ if($export_format=='xls'){
+ $tabela .= " & \multicolumn{".$steviloVmesnihStolpcevPodvrstic."}{c|}{}"; //zadnji stolpec
+ }else{
+ //$tabela .= " & \multicolumn{".$steviloVmesnihStolpcevPodvrstic."}{X|}{}"; //zadnji stolpec
+ $tabela .= " & \multicolumn{".$steviloVmesnihStolpcevPodvrstic."}{Y|}{}"; //zadnji stolpec
+ }
+ }
+ }
+
+ if($reziduali &&($t == ($steviloTabel-1))){ //ce so reziduali in je zadnja podtabela
+ $tabela .= " & "; //zadnji stolpec
+ }
+
+ $tabela .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //prva vrstica - konec ##############################################################################
+ //echo "$tabela</br>";
+
+ // druga vrstica ####################################################################################
+ $tabela .= $this->encodeText($sub_q2); //prvi stolpec 2. vrstice
+ //echo "testiram, kjer ssem: ".$this->encodeText($sub_q2)."</br>";
+ //echo "testiram, kjer ssem: ".$steviloTabColSep."</br>";
+ $drugaVrstica = array();
+
+ //echo count($crosstabsOptions1All[$t])."</br>";
+ //if (count($crosstabs['options1']) > 0 ) { //stolpci (izkljucno) med prvim in zadnjim
+ if (count($crosstabsOptions1All[$t]) > 0 ) { //stolpci (izkljucno) med prvim in zadnjim
+ foreach ($crosstabsOptions1All[$t] as $ckey1 =>$crossVariabla) {
+ #ime variable
+ $text = $crossVariabla['naslov'];
+ # če ni tekstovni odgovor dodamo key
+ if ($crossVariabla['type'] != 't') {
+ $text .= ' ( '.$ckey1.' )';
+ }
+ $tabela .= $this->MultiColCellLatex($steviloVmesnihStolpcevPodvrstic, $this->encodeText($text));
+ //echo "steviloVmesnihStolpcevPodvrstic $t: $steviloVmesnihStolpcevPodvrstic</br>";
+ //echo $this->encodeText($text)."</br>";
+ }
+ if($niSodo && $t == ($steviloTabel-2) && $reziduali){ //ce ni sodo in je predzadnja podtabela in so reziduali, dodaj se vse potrebno za prazen stolpec
+ //if($niSodo && $t == ($steviloTabel-2)){ //ce ni sodo in je predzadnja podtabela, dodaj se vse potrebno za prazen stolpec
+ $tabela .= $this->MultiColCellLatex($steviloVmesnihStolpcevPodvrstic, '');
+ }
+ }else{
+ $tabela .= $this->MultiColCellLatex($steviloVmesnihStolpcevPodvrstic, '');
+ }
+ //echo "test: ".$podVrstice."</br>";
+ if($podVrstice){ //ce je potrebno multicol prikazovanje
+ //spremenljivke za pravilno sirino
+ $colNum = $steviloVmesnihStolpcevPodvrstic;
+ $colNum2 = $steviloVmesnihStolpcevPodvrstic/$steviloVmesnihStolpcevPodvrstica2; //stevilo podstolpcev za 2. podvrstico
+ $colNum3 = $steviloVmesnihStolpcevPodvrstic/$steviloVmesnihStolpcevPodvrstica3; //stevilo podstolpcev za 3. podvrstico
+ //spremenljivke za pravilno sirino - konec
+ if($t == ($steviloTabel-1)){ //ce je zadnji stolpec v podtabeli
+ $tabela .= $this->MultiColCellLatex($colNum, $this->encodeText($lang['srv_analiza_crosstab_skupaj'])); //izpis naslova zadnjega stolpca 2. vrstice
+ }
+
+ //}else{
+ }elseif(($t == ($steviloTabel-1))){ //ce je zadnja podtabela
+ //}elseif(($t == ($steviloTabel-1)) && $niSodo == 1){
+ $tabela .= " & ";
+ $tabela .= $this->encodeText($lang['srv_analiza_crosstab_skupaj']); //izpis naslova zadnjega stolpca 2. vrstice
+ }
+
+ $tabela .= $this->texNewLine; /*nova vrstica*/
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ // druga vrstica - konec #########################################################################
+
+
+ //izpis vmesnih vrstic tabele ####################################################################
+ //echo count($crosstabs['options2'])."</br>";
+ //if (count($crosstabs['options2']) > 0) {
+ if (count($crosstabs['options2']) > 0) {
+
+ //POSAMEZNA VMESNA VRSTICA
+ foreach ($crosstabs['options2'] as $ckey2 =>$crossVariabla2) {
+ //priprava besedila za prvo celico 1. stolpca
+ $text = $crossVariabla2['naslov'];
+ if($export_format != 'xls'){
+ $text = $this->snippet($this->encodeText($text), 25);
+ }
+ if ($crossVariabla2['type'] !== 't') {
+ $text .= ' ('.$ckey2.')';
+ }
+ //priprava besedila za prvo celico 1. stolpca - konec
+
+ //izpis prve celice 1. stolpca
+ if($export_format != 'xls'){
+ $tabela .= $this->MultiRowCellLatex($steviloVmesnihVrstic, $this->encodeText($text));
+ }else{
+ $tabela .= $text;
+ }
+
+ $tabela1 = ''; //za belezenje 1. vrstice s frekvencami
+ $tabela2 = ''; //za belezenje 2. vrstice z odstotki
+ $tabela3 = ''; //za belezenje 3. vrstice z residuali
+
+ //foreach ($crosstabs['options1'] as $ckey1 => $crossVariabla1) {
+ foreach ($crosstabsOptions1All[$t] as $ckey1 => $crossVariabla1) {
+
+ if ($this->crosstabClass->crossChk0) {
+ # frekvence crostabov
+ $crossChk0 = ((int)$crosstabs_value[$ckey1][$ckey2] > 0) ? $crosstabs_value[$ckey1][$ckey2] : 0;
+ $tabela1 .= $this->DisplayLatexCells($crossChk0, $podVrstice, $colNum);
+ /* if($niSodo && $t == ($steviloTabel-2)){ //ce ni sodo in je predzadnja podtabela, dodaj se vse potrebno za prazen stolpec
+ $tabela1 .= $this->MultiColCellLatex($steviloVmesnihStolpcevPodvrstic, '');
+ } */
+
+ }
+ if ($this->crosstabClass->crossChk1) {
+ #procent vrstica
+ $crossChk1 = $this->encodeText($this->formatNumber($this->crosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$ckey2], $crosstabs_value[$ckey1][$ckey2]), 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk1, $podVrstice, $colNum2);
+ }
+ if ($this->crosstabClass->crossChk2) {
+ #procent stolpec
+ $crossChk2 = $this->encodeText($this->formatNumber($this->crosstabClass->getCrossTabPercentage($crosstabs['sumaStolpec'][$ckey1], $crosstabs_value[$ckey1][$ckey2]), 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk2, $podVrstice, $colNum2);
+ }
+ if ($this->crosstabClass->crossChk3) {
+ #procent skupni
+ $crossChk3 = $this->encodeText($this->formatNumber($this->crosstabClass->getCrossTabPercentage($crosstabs['sumaSkupna'], $crosstabs_value[$ckey1][$ckey2]), 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk3, $podVrstice, $colNum2);
+ }
+
+ # residuali
+ if ($this->crosstabClass->crossChkEC) {
+ $crossChkEC = $this->encodeText($this->formatNumber($crosstabs['exC'][$ckey1][$ckey2], 3, ''));
+ $tabela3 .= $this->DisplayLatexCells($crossChkEC, $podVrstice, $colNum3);
+ }
+ if ($this->crosstabClass->crossChkRE) {
+ $crossChkRE = $this->encodeText($this->formatNumber($crosstabs['res'][$ckey1][$ckey2], 3, ''));
+ $tabela3 .= $this->DisplayLatexCells($crossChkRE, $podVrstice, $colNum3);
+ }
+ if ($this->crosstabClass->crossChkSR) {
+ $crossChkSR = $this->encodeText($this->formatNumber($crosstabs['stR'][$ckey1][$ckey2], 3, ''));
+ $tabela3 .= $this->DisplayLatexCells($crossChkSR, $podVrstice, $colNum3);
+ }
+ if ($this->crosstabClass->crossChkAR) {
+ $crossChkAR = $this->encodeText($this->formatNumber($crosstabs['adR'][$ckey1][$ckey2], 3, ''));
+ $tabela3 .= $this->DisplayLatexCells($crossChkAR, $podVrstice, $colNum3);
+ }
+ //echo "tabela 3: $tabela3 </br>";
+ }
+
+ //if($niSodo && $t == ($steviloTabel-2)){ //ce ni sodo in je predzadnja podtabela, dodaj se vse potrebno za prazen stolpec
+ if($niSodo && $t == ($steviloTabel-2) && $reziduali){ //ce ni sodo in je predzadnja podtabela in je potrebno izpisati reziduale, dodaj se vse potrebno za prazen stolpec
+ $tabela1 .= $this->MultiColCellLatex($steviloVmesnihStolpcevPodvrstic, '');
+ }
+
+ if(!$crosstabsOptions1All[$t]){
+ if($tabela1){
+ //$tabela1 .= ' & ';
+ }
+ if($tabela2!=''){
+ //$tabela2 .= ' & ';
+ }
+ if($tabela3!=''){
+ //$tabela3 .= ' & ';
+ }
+ }
+
+
+ //se zadnji stolpec - risemo, ko je zadnja tabela
+ if($t == ($steviloTabel-1)){
+ if ($this->crosstabClass->crossChk0) {
+ # suma po vrsticah
+ $crossChk0 = (int)$crosstabs['sumaVrstica'][$ckey2];
+ if(!$crosstabsOptions1All[$t]){
+ $tabela1 .= ' & ';
+ }
+ $tabela1 .= $this->DisplayLatexCells($crossChk0, $podVrstice, $colNum, $steviloVmesnihStolpcevPodvrstic, $niSodo);
+ }
+ if ($this->crosstabClass->crossChk1 || $this->crosstabClass->crossChk2 || $this->crosstabClass->crossChk3) {
+ if(!$crosstabsOptions1All[$t]){
+ $tabela2 .= ' & ';
+ }
+ # suma po vrsticah v procentih
+ if ($this->crosstabClass->crossChk1) {
+ $crossChk1 = $this->encodeText($this->formatNumber(100, 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk1, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic, $niSodo);
+ }
+ if ($this->crosstabClass->crossChk2) {
+ $crossChk2 = $this->encodeText($this->formatNumber( ($crosstabs['sumaSkupna'] > 0 ? (100 * $crosstabs['sumaVrstica'][$ckey2] / $crosstabs['sumaSkupna']) : 0), 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk2, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic, $niSodo);
+ }
+ if ($this->crosstabClass->crossChk3) {
+ $crossChk3 = $this->encodeText($this->formatNumber( ($crosstabs['sumaSkupna'] > 0 ? (100 * $crosstabs['sumaVrstica'][$ckey2] / $crosstabs['sumaSkupna']) : 0), 2, '%'));
+ $tabela2 .= $this->DisplayLatexCells($crossChk3, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic, $niSodo);
+ }
+ }
+ }
+
+ $tabela .= $tabela1; //izpis 1. vrstice s freq
+
+ $tabela .= $this->texNewLine;
+ //echo "steviloStolpcevParameterTabular: $steviloStolpcevParameterTabular </br>";
+ if($steviloVmesnihVrstic > 1){ //ce je potrebno multirow prikazovanje
+ if($tabela2!=''){ //ce je 2. podvrstica
+ if($export_format != 'xls'){
+ $tabela .= ' \cline{2-'.$steviloStolpcevParameterTabular.'}'; //je potrebno urediti prvi stolpec tako, da ni crt med celicami
+ }
+
+
+ if($niSodo && $t == ($steviloTabel-2) && $reziduali){ //ce ni sodo in je predzadnja podtabela in so reziduali, dodaj se vse potrebno za prazen stolpec
+ //if($niSodo && $t == ($steviloTabel-2)){ //ce ni sodo in je predzadnja podtabela, dodaj se vse potrebno za prazen stolpec
+ $tabela2 .= $this->MultiColCellLatex($steviloVmesnihStolpcevPodvrstic, '');
+ }
+
+ $tabela .= $tabela2; //izpis 2. vrstice z odstotki
+
+ $tabela .= $this->texNewLine;
+
+ }
+ if($tabela3!=''){ //ce je 3. podvrstica
+ if($export_format != 'xls'){
+ $tabela .= ' \cline{2-'.$steviloStolpcevParameterTabular.'}'; //je potrebno urediti prvi stolpec tako, da ni crt med celicami
+ }
+
+ if($niSodo && $t == ($steviloTabel-2) && $reziduali){ //ce ni sodo in je predzadnja podtabela, dodaj se vse potrebno za prazen stolpec
+ //if($niSodo && $t == ($steviloTabel-2)){ //ce ni sodo in je predzadnja podtabela, dodaj se vse potrebno za prazen stolpec
+ $tabela3 .= $this->MultiColCellLatex($steviloVmesnihStolpcevPodvrstic, '');
+ }
+
+ $tabela .= $tabela3; //izpis 3. vrstice z residuali
+
+ if($t == ($steviloTabel-1)){ //ce je zadnja podtabela
+ $tabela .= $this->MultiColCellLatex($colNum, ''); //pri residualih je zadnja celica v zadnjem stolpcu prazna
+ }
+ $tabela .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex;
+ }
+ }else{
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex;
+ }
+ }
+ }else{
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex;
+ }
+ }
+ }
+ }
+ //izpis vmesnih vrstic tabele - konec ##################################################################################
+
+ //echo "tabela 2: $tabela2 </br>";
+ //echo "tabela 3: $tabela3 </br>";
+
+ // skupni sestevki po stolpcih - ZADNJA VRSTICA ########################################################################
+
+ //izpis celice v prvem stolpcu
+ if($export_format != 'xls'){
+ $tabela .= $this->MultiRowCellLatex($steviloVmesnihVrstic, $this->encodeText($lang['srv_analiza_crosstab_skupaj']), $tabela2, $tabela3, $cols[$t]);
+ }else{
+ $tabela .= $this->encodeText($lang['srv_analiza_crosstab_skupaj']);
+ }
+ //izpis celice v prvem stolpcu - konec
+
+ //if (count($crosstabs['options1']) > 0){
+ //if (count($crosstabsOptions1All[$t]) > 0){
+ //
+ $tabelaZadnja1 = ''; //belezi kodo za 1. podvrstico zadnje vrstice
+ $tabelaZadnja2 = ''; //belezi kodo za 2. podvrstico zadnje vrstice
+ //foreach ($crosstabs['options1'] as $ckey1 => $crossVariabla1) {
+ foreach ($crosstabsOptions1All[$t] as $ckey1 => $crossVariabla1) {
+
+ # prikazujemo eno od treh možnosti
+ if ($this->crosstabClass->crossChk0) {
+ # suma po stolpcih
+ $crossChk0 = (int)$crosstabs['sumaStolpec'][$ckey1];
+ $tabelaZadnja1 .= $this->DisplayLatexCells($crossChk0, $podVrstice, $colNum, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk1 || $this->crosstabClass->crossChk2 || $this->crosstabClass->crossChk3) {
+ # suma po stolpcih v procentih
+ if ($this->crosstabClass->crossChk1) {
+ $crossChk1 = $this->encodeText($this->formatNumber( ($crosstabs['sumaSkupna'] > 0 ? (100 * $crosstabs['sumaStolpec'][$ckey1] / $crosstabs['sumaSkupna']) : 0), 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk1, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk2) {
+ $crossChk2 = $this->encodeText($this->formatNumber(100, 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk2, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk3){
+ $crossChk3 = $this->encodeText($this->formatNumber( ($crosstabs['sumaSkupna'] > 0 ? (100 * $crosstabs['sumaStolpec'][$ckey1] / $crosstabs['sumaSkupna']) : 0), 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk3, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ }
+ }
+
+ # zadnja celica z skupno sumo
+ if($t == ($steviloTabel-1)){
+ if ($this->crosstabClass->crossChk0) {
+ # skupna suma
+ $crossChk0 = (int)$crosstabs['sumaSkupna'];
+
+ //echo "numr: ".$crosstabsOptions1All[$t]."</br>";
+ //if (!$crosstabsOptions1All[$t]){
+ /* if (!$crosstabsOptions1All[$t] && $reziduali == 0){
+ $tabelaZadnja1 .= " & ";
+ } */
+ $tabelaZadnja1 .= $this->DisplayLatexCells($crossChk0, $podVrstice, $colNum, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk1 || $this->crosstabClass->crossChk2 || $this->crosstabClass->crossChk3) {
+ # suma po stolpcih v procentih
+ if (!$crosstabsOptions1All[$t]){
+ $tabelaZadnja2 .= " & ";
+ }
+ if ($this->crosstabClass->crossChk1) {
+ $crossChk1 = $this->encodeText($this->formatNumber(100, 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk1, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk2) {
+ $crossChk2 = $this->encodeText($this->formatNumber(100, 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk2, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ if ($this->crosstabClass->crossChk3) {
+ $crossChk3 = $this->encodeText($this->formatNumber(100, 2, '%'));
+ $tabelaZadnja2 .= $this->DisplayLatexCells($crossChk3, $podVrstice, $colNum2, $steviloVmesnihStolpcevPodvrstic);
+ }
+ }
+ }
+ //}
+ /* echo "tabelaZadnja1: $tabelaZadnja1</br>";
+ echo "tabelaZadnja2: $tabelaZadnja2</br>"; */
+
+ $tabela .= $tabelaZadnja1; //izpis 1. podvrstice s freq
+ if($niSodo && $t == ($steviloTabel-2) && $reziduali){ //ce ni sodo in je predzadnja podtabela in reziduali, dodaj se vse potrebno za prazen stolpec
+ //if($niSodo && $t == ($steviloTabel-2)){ //ce ni sodo in je predzadnja podtabela, dodaj se vse potrebno za prazen stolpec
+ $tabela .= $this->MultiColCellLatex($steviloVmesnihStolpcevPodvrstic, '');
+ }
+ $tabela .= $this->texNewLine;
+
+ if($steviloVmesnihVrstic > 1 && $tabela2!=''){ //ce je potrebno multicol prikazovanje
+ if($export_format != 'xls'){
+ $tabela .= ' \cline{2-'.$steviloStolpcevParameterTabular.'}'; //je potrebno urediti prvi stolpec tako, da ni crt med celicami
+ }
+ }else{
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex;
+ }
+ }
+ //echo "ni sodo $niSodo </br>";
+ if($steviloVmesnihVrstic > 1 && $tabela2!=''){ //ce je potrebno multirow prikazovanje
+ $tabela .= $tabelaZadnja2; //izpis 2. vrstice z odstotki
+ if($niSodo && $t == ($steviloTabel-2) && $reziduali){ //ce ni sodo in je predzadnja podtabela, dodaj se vse potrebno za prazen stolpec
+ //if($niSodo && $t == ($steviloTabel-2)){ //ce ni sodo in je predzadnja podtabela, dodaj se vse potrebno za prazen stolpec
+ $tabela .= $this->MultiColCellLatex($steviloVmesnihStolpcevPodvrstic, '');
+ }
+ $tabela .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex;
+ }
+ }
+ // skupni sestevki po stolpcih - ZADNJA VRSTICA - konec #############################################################################
+
+ $stevec++;
+ $tabela .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ }
+ }
+ }
+ }
+
+ /*zakljucek latex tabele*/
+ if($presirokaTabela == 0){ //ce ni presiroka tabela
+ $tabela .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ }
+ /*zaljucek latex tabele - konec */
+
+ //echo "showChart: ".$this->sessionData['showChart']."</br>";
+ // Izris grafa (ce je vklopljena nastavitev)
+ if($this->sessionData['showChart'] == '1' && $creport == false){
+ $tabela .= $this->displayCrosstabChart();
+ }
+ }
+ //echo "</br> Tex celotne tabele: ".$tabela."</br>";
+ return $tabela;
+ }
+
+ function displayCrosstabChart(){
+ global $lang;
+ $chart = '';
+
+ // Zgeneriramo id vsake tabele (glede na izbrani spremenljivki za generiranje)
+ $chartID = implode('_', $this->crosstabClass->variabla1[0]).'_'.implode('_', $this->crosstabClass->variabla2[0]);
+ $chartID .= '_counter_'.$this->counter;
+
+ $settings = $this->sessionData[$chartID];
+ $imgName = $settings['name'];
+
+ // Naslov posameznega grafa
+ if($settings['type'] == 1 || $settings['type'] == 4){
+ $title = $this->crosstabVars[0].'/'.$this->crosstabVars[1];
+ }
+ else{
+ $title = $this->crosstabVars[0];
+ }
+
+ $boldedTitle = $this->returnBold($this->encodeText($title)).$this->texNewLine; //vrni boldan naslov in skoci v novo vrstico
+
+ copy('pChart/Cache/'.$imgName,'pChart/Cache/'.$imgName.'.png');
+ $texImageOnly = " \\includegraphics[scale=0.75]{".$imgName."} "; //latex za sliko
+
+ $chart .= $this->returnCentered($boldedTitle.$texImageOnly); //vrni sredinsko poravnana naslov in slika
+
+ return $chart;
+ }
+
+
+}
+?> \ No newline at end of file
diff --git a/admin/survey/export/latexclasses/Analize/AnalizaDesc.php b/admin/survey/export/latexclasses/Analize/AnalizaDesc.php
new file mode 100644
index 0000000..8433e9b
--- /dev/null
+++ b/admin/survey/export/latexclasses/Analize/AnalizaDesc.php
@@ -0,0 +1,319 @@
+<?php
+
+ global $site_path;
+
+ include_once('../../function.php');
+ include_once('../survey/definition.php');
+/* include_once('../exportclases/class.pdfIzvozAnalizaFrekvenca.php');
+ include_once('../exportclases/class.pdfIzvozAnalizaFunctions.php');
+ require_once('../exportclases/class.enka.pdf.php'); */
+
+ define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
+ define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
+
+ define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
+ define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
+
+ define("M_ANALIZA_DESCRIPTOR", "descriptor");
+ define("M_ANALIZA_FREQUENCY", "frequency");
+
+ define("FNT_FREESERIF", "freeserif");
+ define("FNT_FREESANS", "freesans");
+ define("FNT_HELVETICA", "helvetica");
+
+ define("FNT_MAIN_TEXT", FNT_FREESANS);
+ define("FNT_QUESTION_TEXT", FNT_FREESANS);
+ define("FNT_HEADER_TEXT", FNT_FREESANS);
+
+ define("FNT_MAIN_SIZE", 10);
+ define("FNT_QUESTION_SIZE", 9);
+ define("FNT_HEADER_SIZE", 10);
+
+ define("RADIO_BTN_SIZE", 3);
+ define("CHCK_BTN_SIZE", 3);
+ define("LINE_BREAK", 6);
+
+ define ('PDF_MARGIN_HEADER', 8);
+ define ('PDF_MARGIN_FOOTER', 12);
+ define ('PDF_MARGIN_TOP', 18);
+ define ('PDF_MARGIN_BOTTOM', 18);
+ define ('PDF_MARGIN_LEFT', 15);
+ define ('PDF_MARGIN_RIGHT', 15);
+
+/**
+ * @desc Class za generacijo izvoza v Latex
+ */
+
+class AnalizaDesc extends LatexAnalysisElement{
+
+ var $anketa; // trenutna anketa (array)
+ var $spremenljivka; // trenutna spremenljivka
+
+ private $headFileName = null; # pot do header fajla
+ private $dataFileName = null; # pot do data fajla
+ private $dataFileStatus = null; # status data datoteke
+ private $CID = null; # class za inkrementalno dodajanje fajlov
+
+ var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+ var $pdf;
+ protected $tex;
+ var $currentStyle;
+
+ var $current_loop = 'undefined';
+
+ static public $_FILTRED_OTHER = array(); # filter za polja drugo
+
+ protected $texNewLine = '\\\\ ';
+ protected $export_format;
+ protected $horizontalLineTex = "\\hline ";
+ protected $show_valid_percent;
+ protected $texBigSkip = '\bigskip';
+ protected $spaceBetweenTables = ' \newline \vspace*{1 cm} \newline';
+
+ /**
+ * @desc konstruktor
+ */
+ function __construct ($anketa = null, $sprID = null, $loop = null)
+ {
+ global $site_path;
+ global $global_user_id;
+
+ // preverimo ali imamo stevilko ankete
+ //if ( is_numeric($anketa) )
+ if ( is_numeric($anketa['id']) )
+ {
+ //$this->anketa['id'] = $anketa;
+ //$this->anketa['id'] = $anketa['id'];
+ $this->anketa = $anketa;
+ $this->spremenljivka = $sprID;
+
+
+ $loop = SurveyZankaProfiles :: Init($this->anketa['id'], $global_user_id);
+ $this->current_loop = ($loop != null) ? $loop : $this->current_loop;
+
+ //$hideAllSystem = SurveyDataSettingProfiles :: getSetting('hideAllSystem');
+ /* $hideAllSystem = SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT');
+ echo "hideAllSystem: ".$hideAllSystem."</br>"; */
+ //SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT')
+ }
+ else
+ {
+ $this->pi['msg'] = "Anketa ni izbrana!";
+ $this->pi['canCreate'] = false;
+ return 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');
+ }
+
+
+ function init()
+ {
+ global $lang;
+
+ // array used to define the language and charset of the pdf file to be generated
+ $language_meta = Array();
+ $language_meta['a_meta_charset'] = 'UTF-8';
+ $language_meta['a_meta_dir'] = 'ltr';
+ $language_meta['a_meta_language'] = 'sl';
+ $language_meta['w_page'] = $lang['page'];
+
+ //set some language-dependent strings
+ $this->pdf->setLanguageArray($language_meta);
+
+ //set margins
+ $this->pdf->setPrintHeaderFirstPage(true);
+ $this->pdf->setPrintFooterFirstPage(true);
+ $this->pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
+ $this->pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
+ $this->pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
+
+ // set header and footer fonts
+ $this->pdf->setHeaderFont(Array(FNT_HEADER_TEXT, "I", FNT_HEADER_SIZE));
+ $this->pdf->setFooterFont(Array(FNT_HEADER_TEXT, 'I', FNT_HEADER_SIZE));
+
+
+ // set document information
+ $this->pdf->SetAuthor('An Order Form');
+ $this->pdf->SetTitle('An Order');
+ $this->pdf->SetSubject('An Order');
+
+ // set default header data
+ $this->pdf->SetHeaderData(null, null, "www.1ka.si", $this->encodeText(SurveyInfo::getInstance()->getSurveyAkronim()));
+
+ //set auto page breaks
+ $this->pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
+
+ $this->pdf->SetFont(FNT_MAIN_TEXT, '', FNT_MAIN_SIZE);
+ //set image scale factor
+ $this->pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
+ return true;
+ }
+
+
+ //function displayTableLatex($headFileName, $spremenljivka, $spid, $export_format, $hideEmpty){
+ function displayTableLatex($headFileName=null, $spremenljivka=null, $export_format='', $hideEmpty=null){
+ global $site_path;
+ global $lang;
+ global $global_user_id;
+ //echo 'funkcija displayTableLatex</br>';
+ $this->export_format = $export_format;
+ $this->hideEmpty = $hideEmpty;
+ $tabela = '';
+
+ $this->headFileName = $headFileName;
+
+ #preberemo HEADERS iz datoteke
+ //SurveyAnalysis::$_HEADERS = unserialize(file_get_contents($this->headFileName));
+
+ # polovimo opisne podatke
+ SurveyAnalysis::getDescriptives();
+
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 8;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tabela .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /*prva vrstica tabele*/
+ /*priprava polja z naslovi stolpcev*/
+ $text = array();
+
+ $text[] = '\textbf{'.$this->encodeText($lang['srv_analiza_opisne_variable']).'}';
+ $text[] = '\textbf{'.$this->encodeText($lang['srv_analiza_opisne_variable_text1']).'}';
+
+ $text[] = '\textbf{'.$this->encodeText($lang['srv_analiza_opisne_m']).'}';
+ $text[] = '\textbf{'.$this->encodeText($lang['srv_analiza_num_units']).'}';
+ //$text[] = '\textbf{'.$this->encodeText($lang['srv_analiza_opisne_povprecje1']).'}';
+ $text[] = '\textbf{'.$this->encodeText($lang['srv_analiza_opisne_povprecje_odstotek1']).'}';
+ $text[] = '\textbf{'.$this->encodeText($lang['srv_analiza_opisne_odklon']).'}';
+ $text[] = '\textbf{'.$this->encodeText($lang['srv_analiza_opisne_min']).'}';
+ $text[] = '\textbf{'.$this->encodeText($lang['srv_analiza_opisne_max']).'}';
+ /*priprava polja z naslovi stolpcev - konec*/
+
+ $tabela .= $this->tableRow($text);
+ /*prva vrstica tabele - konec*/
+
+ # dodamo še kontrolo če kličemo iz displaySingleVar
+ if (isset($_spid) && $_spid !== null) {
+ SurveyAnalysis::$_HEADERS = array($_spid => SurveyAnalysis::$_HEADERS[$_spid]);
+ }
+
+ /*izpis ostalih vrstic*/
+ foreach (SurveyAnalysis::$_HEADERS AS $spid => $spremenljivka) {
+ /* preverjamo ali je meta*/
+ if ($spremenljivka['tip'] != 'm'
+ && ( count(SurveyAnalysis::$_FILTRED_VARIABLES) == 0 || (count(SurveyAnalysis::$_FILTRED_VARIABLES) > 0 && isset(SurveyAnalysis::$_FILTRED_VARIABLES[$spid]) ))
+ && in_array($spremenljivka['tip'], SurveyAnalysis::$_FILTRED_TYPES)
+ && ($this->spremenljivka == $spid || $this->spremenljivka == null) ) {
+
+ $show_enota = false;
+ /* preverimo ali imamo samo eno variablo in če iammo enoto*/
+ if ((int)$spremenljivka['enota'] != 0 || $spremenljivka['cnt_all'] > 1 ) {
+ $show_enota = true;
+ }
+
+ /* izpišemo glavno vrstico z podatki*/
+ $_sequence = null;
+ /* za enodimenzijske tipe izpišemo podatke kar v osnovni vrstici*/
+ if (!$show_enota) {
+// if ($spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 3
+// || $spremenljivka['tip'] == 4 || $spremenljivka['tip'] == 7 || $spremenljivka['tip'] == 8) {
+ $variable = $spremenljivka['grids'][0]['variables'][0];
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ //self::displayDescriptivesSpremenljivkaRow($spid, $spremenljivka,$show_enota,$_sequence);
+ $tabela .= $this->displayDescriptivesSpremenljivkaRow($spid, $spremenljivka,$show_enota,$_sequence);
+ } else {
+ if ($spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 3) {
+ $variable = $spremenljivka['grids'][0]['variables'][0];
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ $show_enota = false;
+ }
+ //self::displayDescriptivesSpremenljivkaRow($spid, $spremenljivka,$show_enota,$_sequence);
+ $tabela .= $this->displayDescriptivesSpremenljivkaRow($spid, $spremenljivka,$show_enota,$_sequence);
+ /*zloopamo skozi variable*/
+ $_sequence = null;
+ $grd_cnt=0;
+ if (count($spremenljivka['grids']) > 0)
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+
+ if (count($spremenljivka['grids']) > 1 && $grd_cnt !== 0 && $spremenljivka['tip'] != 6) {
+ $grid['new_grid'] = true;
+ }
+ $grd_cnt++;
+ /* dodamo dodatne vrstice z albelami grida*/
+ if (count ($grid['variables']) > 0)
+ foreach ($grid['variables'] AS $vid => $variable ){
+ /* dodamo ostale vrstice*/
+ $do_show = ($variable['other'] !=1 && ($spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 3 || $spremenljivka['tip'] == 5 || $spremenljivka['tip'] == 8 ))
+ ? false
+ : true;
+ if ($do_show) {
+ //self::displayDescriptivesVariablaRow($spremenljivka,$grid,$variable,$_css);
+ $tabela .= $this->displayDescriptivesVariablaRow($spremenljivka,$grid,$variable,$_css);
+
+ }
+ $grid['new_grid'] = false;
+
+ }
+ }
+ } //else: if (!$show_enota)
+ } // end if $spremenljivka['tip'] != 'm'
+ } // end foreach SurveyAnalysis::$_HEADERS
+
+
+ /*zakljucek latex tabele*/
+ $tabela .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ /*zaljucek latex tabele - konec */
+ //echo "</br> Tex celotne tabele: ".$tabela."</br>";
+ return $tabela;
+ }
+}
+?> \ No newline at end of file
diff --git a/admin/survey/export/latexclasses/Analize/AnalizaFreq.php b/admin/survey/export/latexclasses/Analize/AnalizaFreq.php
new file mode 100644
index 0000000..8945266
--- /dev/null
+++ b/admin/survey/export/latexclasses/Analize/AnalizaFreq.php
@@ -0,0 +1,384 @@
+<?php
+
+ global $site_path;
+
+ include_once('../../function.php');
+ include_once('../survey/definition.php');
+/* include_once('../exportclases/class.pdfIzvozAnalizaFrekvenca.php');
+ include_once('../exportclases/class.pdfIzvozAnalizaFunctions.php');
+ require_once('../exportclases/class.enka.pdf.php'); */
+
+ define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
+ define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
+
+ define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
+ define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
+
+ define("M_ANALIZA_DESCRIPTOR", "descriptor");
+ define("M_ANALIZA_FREQUENCY", "frequency");
+
+ define("FNT_FREESERIF", "freeserif");
+ define("FNT_FREESANS", "freesans");
+ define("FNT_HELVETICA", "helvetica");
+
+ define("FNT_MAIN_TEXT", FNT_FREESANS);
+ define("FNT_QUESTION_TEXT", FNT_FREESANS);
+ define("FNT_HEADER_TEXT", FNT_FREESANS);
+
+ define("FNT_MAIN_SIZE", 10);
+ define("FNT_QUESTION_SIZE", 9);
+ define("FNT_HEADER_SIZE", 10);
+
+ define("RADIO_BTN_SIZE", 3);
+ define("CHCK_BTN_SIZE", 3);
+ define("LINE_BREAK", 6);
+
+ define ('PDF_MARGIN_HEADER', 8);
+ define ('PDF_MARGIN_FOOTER', 12);
+ define ('PDF_MARGIN_TOP', 18);
+ define ('PDF_MARGIN_BOTTOM', 18);
+ define ('PDF_MARGIN_LEFT', 15);
+ define ('PDF_MARGIN_RIGHT', 15);
+
+ define ('MEJA_DOLZINA_VPRASANJA', 132);
+
+/**
+ * @desc Class za generacijo izvoza v Latex
+ */
+
+class AnalizaFreq extends LatexAnalysisElement{
+
+ var $anketa; // trenutna anketa (array)
+ var $spremenljivka; // trenutna spremenljivka
+
+ private $headFileName = null; # pot do header fajla
+
+ var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+ var $pdf;
+ protected $tex;
+ var $currentStyle;
+
+ var $current_loop = 'undefined';
+
+ static public $_FILTRED_OTHER = array(); # filter za polja drugo
+
+ protected $texNewLine = '\\\\ ';
+ protected $export_format;
+ protected $horizontalLineTex = "\\hline ";
+ protected $show_valid_percent;
+ protected $texBigSkip = '\bigskip';
+ protected $spaceBetweenTables = ' \newline \vspace*{1 cm} \newline';
+
+
+ /**
+ * @desc konstruktor
+ */
+ function __construct ($anketa = null, $sprID = null, $loop = null){
+ global $site_path;
+ global $global_user_id;
+
+ // preverimo ali imamo stevilko ankete
+ if ( is_numeric($anketa['id']) ){
+ $this->anketa = $anketa;
+ $this->spremenljivka = $sprID;
+ }
+ else{
+ $this->pi['msg'] = "Anketa ni izbrana!";
+ $this->pi['canCreate'] = false;
+
+ return false;
+ }
+
+ 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 displayTableLatex($headFileName=null, $spremenljivka=null, $spid=null, $export_format='', $hideEmpty=null){
+ global $site_path;
+ global $lang;
+ global $global_user_id;
+
+ $this->export_format = $export_format;
+ $this->hideEmpty = $hideEmpty;
+ $tabela = '';
+
+ $this->headFileName = $headFileName;
+
+ //TODO: Omenjene datoteke že generiramo v LatexAnalysis in tukaj za vsako vrstico res ni potrebe še enkrat to generirat
+ /*
+ #preberemo HEADERS iz datoteke
+ SurveyAnalysis::$_HEADERS = unserialize(file_get_contents($this->headFileName));
+
+ # polovimo frekvence
+ SurveyAnalysis::getFrequencys();
+
+ #odstranimo sistemske variable
+ SurveyAnalysis::removeSystemVariables();
+
+
+ ###
+ //SurveyMissingProfiles :: Init($spremenljivka['id'], $global_user_id);
+ */
+
+
+ ####
+
+ //TODO: Spremenljivki se nikjer ne kliče
+ //$vars_count = count(SurveyAnalysis::$_FILTRED_VARIABLES);
+ //$line_break = '';
+
+ //echo "Spr tip v Sums: ".$spremenljivka['tip']."</br>";
+
+ #prikazujemo v odvisnosti od kategorije spremenljivke
+ switch ($spremenljivka['tip']) {
+ case 1: # radio - prikjaže navpično
+ case 2: #checkbox če je dihotomna:
+ case 3: # dropdown - prikjaže navpično
+ case 6: # multigrid
+ case 4: # text
+ case 7:# variabla tipa »število«
+ case 8: # datum
+ case 16: #multicheckbox če je dihotomna:
+ case 17: #razvrščanje če je ordinalna
+ case 18: # vsota
+ case 19: # multitext
+ case 20: # multi number
+ case 21: # besedilo*
+ case 22: # kalkulacija
+ //self::frequencyVertical($spid);
+ $tabela .= self::frequencyVertical($spid, $export_format);
+ //$tabela .= $this->spaceBetweenTables;
+ break;
+ case 5:
+ # nagovor
+ //pdfIzvozAnalizaSums::sumNagovor($spid,'freq');
+ $tabela .= $this->sumNagovor($spid,'freq');
+ //$tabela .= $this->spaceBetweenTables;
+ break;
+ }
+ //echo "</br> Tex celotne tabele: ".$tabela."</br>";
+ return $tabela;
+ }
+
+
+ /** Izriše frekvence v vertikalni obliki z Latex
+ *
+ * @param unknown_type $spid
+ */
+ function frequencyVertical($spid=null, $export_format='') {
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+ # če je besedilo * in je samo ena kategorija je inline legenda false
+ $inline_legenda = (SurveyAnalysis::$_HEADERS[$spid]['cnt_all'] == 1 || in_array($spremenljivka['tip'],array(1,8) ) ) ? false: true;
+
+ # koliko zapisov prikažemo naenkrat
+ $num_show_records = SurveyAnalysis::getNumRecords();
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 6;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ //$tex .= '\keepXColumns'; //potrebno dodati pred tabelo, da se obdrzi sirina stolpca
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /*Naslovni vrstici tabele*/
+ //prva vrstica tabele
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloOstalihStolpcev."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloOstalihStolpcev."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable']).' & \multicolumn{'.$steviloOstalihStolpcev.'}{>{\hsize=\dimexpr '.($steviloOstalihStolpcev+1).'\hsize + '.($steviloOstalihStolpcev+1).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($spremenljivka['naslov']).'} '.$this->texNewLine;
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloOstalihStolpcev."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloOstalihStolpcev."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //druga vrstica
+ $tex .= self::tableHeader();
+ /*Konec naslovnih vrstic*/
+
+ $_answersOther = array();
+
+ /* dodamo opcijo kje izrisujemo legendo*/
+ $options=array('inline_legenda' => $inline_legenda, 'isTextAnswer' => false, 'isOtherAnswer' => false);
+
+ /* izpis veljavnih odgovorov*/
+ if (count($spremenljivka['grids']) > 0)
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ $_variables_count = count($grid['variables']);
+
+ # dodamo dodatne vrstice z albelami grida
+ if ($_variables_count > 0 )
+ foreach ($grid['variables'] AS $vid => $variable ){
+
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ if (($variable['text'] != true && $variable['other'] != true)
+ || (in_array($spremenljivka['tip'],array(4,8,21,22)))){
+ # dodamo ime podvariable
+ //if ($_variables_count > 1 && in_array($spremenljivka['tip'],array(2,6,7,16,17,18,19,20,21))) {
+ if ($inline_legenda) {
+ $tex .= self::outputSubVariablaVertical($spremenljivka,$variable,$grid,$spid,$options);
+ }
+
+ $maxAnswer = (SurveyDataSettingProfiles :: getSetting('numOpenAnswers') > 0) ? SurveyDataSettingProfiles :: getSetting('numOpenAnswers') : 30;
+ $counter = 0;
+ $_kumulativa = 0;
+ //SurveyAnalysis::$_FREQUENCYS[$_sequence]
+ if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'])> 0 ) {
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'] AS $vkey => $vAnswer) {
+ if ($vAnswer['cnt'] > 0 /*&& $counter < $maxAnswer*/ || true) { # izpisujemo samo tiste ki nisno 0
+ if (in_array($spremenljivka['tip'],array(4,7,8,19,20,21))) { // text, number, datum, mtext, mnumber, text*
+ $options['isTextAnswer'] = true;
+ # ali prikažemo vse odgovore ali pa samo toliko koliko je nastavljeno v TEXT_ANSWER_LIMIT
+ $options['textAnswerExceed'] = ($counter >= TEXT_ANSWER_LIMIT && count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']) > TEXT_ANSWER_LIMIT+2) ? true : false; # ali začnemo skrivati tekstovne odgovore
+ } else {
+ $options['isTextAnswer'] = false;
+ $options['textAnswerExceed'] = false;
+ }
+ //$counter = pdfIzvozAnalizaSums::outputValidAnswerVertical($counter,$vkey,$vAnswer,$_sequence,$spid,$_kumulativa,$options);
+ $tex .= $this->outputValidAnswerVertical($counter,$vkey,$vAnswer,$_sequence,$spid,$_kumulativa,$options);
+ }
+ }
+ # izpišemo sumo veljavnih
+ //$counter = pdfIzvozAnalizaSums::outputSumaValidAnswerVertical($counter,$_sequence,$spid,$options);
+ //$tex .= $this->outputSumaValidAnswerVertical($counter,$_sequence,$spid,$options);
+ $tex .= self::outputSumaValidAnswerVertical($counter,$_sequence,$spid,$options);
+ }
+ if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalid'])> 0 ) {
+ $_Z_MV = !$this->hideEmpty;
+ if($_Z_MV){ //ce je potrebno izpisati tudi manjkajoce
+ $tex .= $this->encodeText($lang['srv_anl_missing1']);
+ }
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalid'] AS $ikey => $iAnswer) {
+ if ($iAnswer['cnt'] > 0 ) { # izpisujemo samo tiste ki nisno 0
+ //$counter = pdfIzvozAnalizaSums::outputInvalidAnswerVertical($counter,$ikey,$iAnswer,$_sequence,$spid,$options);
+ $tex .= $this->outputInvalidAnswerVertical($counter,$ikey,$iAnswer,$_sequence,$spid,$options);
+ }
+ }
+ # izpišemo sumo veljavnih
+ //$counter = pdfIzvozAnalizaSums::outputSumaInvalidAnswerVertical($counter,$_sequence,$spid,$options);
+ $tex .= $this->outputSumaInvalidAnswerVertical($counter,$_sequence,$spid,$options);
+ }
+ #izpišemo še skupno sumo
+ //$counter = pdfIzvozAnalizaSums::outputSumaVertical($counter,$_sequence,$spid,$options);
+ $tex .= $this->outputSumaVertical($counter,$_sequence,$spid,$options);
+ } else {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+ }
+ }
+
+ //zaljucek latex tabele z obrobo za prvo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za prvo tabelo - konec
+
+ # izpišemo še tekstovne odgovore za polja drugo
+ if (count($_answersOther) > 0 && SurveyAnalysis::$_FILTRED_OTHER) {
+ foreach ($_answersOther AS $oAnswers) {
+ $tex .= self::outputOtherAnswers($oAnswers, $parameterTabular, $export_format);
+ }
+ }
+ //echo "tex: ".$tex;
+ return $tex;
+ }
+
+ function outputSubVariablaVertical($spremenljivka=null,$variable=null,$grid=null,$spid=null,$_options = array()) {
+ global $lang;
+ $texOutputSubVariablaVertical='';
+ $text = array();
+
+ # opcije
+ $options = array( 'isTextAnswer' => false, # ali je tekstovni odgovor
+ 'isOtherAnswer' => false, # ali je odgovor Drugo
+ 'inline_legenda' => true, # ali je legenda inline ali v headerju
+ 'textAnswerExceed'=>false # ali presegamo število tekstovnih odgovorov za prikaz
+ );
+ foreach ($_options as $_oKey => $_option) {
+ $options[$_oKey] = $_option;
+ }
+
+ $text[] = $this->encodeText($variable['variable']);
+
+ $text[] = $this->encodeText($variable['naslov']);
+
+ $text[] = '';
+ $text[] = '';
+ $text[] = '';
+ $text[] = '';
+
+ $texOutputSubVariablaVertical .= self::tableRow($text);
+
+ return $texOutputSubVariablaVertical;
+ }
+
+
+
+ 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;
+ }
+
+ function drawLine(){
+ $cy = $this->pdf->getY();
+ $this->pdf->Line(15, $cy , 195, $cy , $this->currentStyle);
+ }
+}
+?> \ No newline at end of file
diff --git a/admin/survey/export/latexclasses/Analize/AnalizaMean.php b/admin/survey/export/latexclasses/Analize/AnalizaMean.php
new file mode 100644
index 0000000..e2bceba
--- /dev/null
+++ b/admin/survey/export/latexclasses/Analize/AnalizaMean.php
@@ -0,0 +1,371 @@
+<?php
+
+ global $site_path;
+
+ include_once('../../function.php');
+ include_once('../survey/definition.php');
+/* include_once('../exportclases/class.pdfIzvozAnalizaFunctions.php');
+ require_once('../exportclases/class.enka.pdf.php'); */
+
+ define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
+ define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
+
+ define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
+ define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
+
+ define("M_ANALIZA_DESCRIPTOR", "descriptor");
+ define("M_ANALIZA_FREQUENCY", "frequency");
+
+ define("FNT_FREESERIF", "freeserif");
+ define("FNT_FREESANS", "freesans");
+ define("FNT_HELVETICA", "helvetica");
+
+ define("FNT_MAIN_TEXT", FNT_FREESANS);
+ define("FNT_QUESTION_TEXT", FNT_FREESANS);
+ define("FNT_HEADER_TEXT", FNT_FREESANS);
+
+ define("FNT_MAIN_SIZE", 10);
+ define("FNT_QUESTION_SIZE", 9);
+ define("FNT_HEADER_SIZE", 10);
+
+ define("RADIO_BTN_SIZE", 3);
+ define("CHCK_BTN_SIZE", 3);
+ define("LINE_BREAK", 6);
+
+ define ('PDF_MARGIN_HEADER', 8);
+ define ('PDF_MARGIN_FOOTER', 12);
+ define ('PDF_MARGIN_TOP', 18);
+ define ('PDF_MARGIN_BOTTOM', 18);
+ define ('PDF_MARGIN_LEFT', 15);
+ define ('PDF_MARGIN_RIGHT', 15);
+
+
+/** Class za generacijo izvoza v Latex
+ *
+ * @desc: po novem je potrebno form elemente generirati rocno kot slike
+ *
+ */
+class AnalizaMean extends LatexAnalysisElement{
+
+ var $anketa;// = array(); // trenutna anketa
+
+ var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+ var $pdf;
+ var $currentStyle;
+ var $db_table = '';
+
+ public $meansClass = null; //means class
+
+ var $meanData1;
+ var $meanData2;
+
+ var $sessionData; // podatki ki so bili prej v sessionu - za nastavitve, ki se prenasajo v izvoze...
+
+
+ protected $texNewLine = '\\\\ ';
+ protected $export_format;
+ protected $horizontalLineTex = "\\hline ";
+
+
+ /**
+ * @desc konstruktor
+ */
+ function __construct ($anketa = null, $podstran = 'mean')
+ {
+ global $site_path;
+ global $global_user_id;
+
+ // preverimo ali imamo stevilko ankete
+ if ( is_numeric($anketa['id']) )
+ {
+ $this->anketa['id'] = $anketa;
+ $this->anketa['podstran'] = $podstran;
+ // create new PDF document
+ //$this->pdf = new enka_TCPDF('L', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
+ }
+ else
+ {
+ $this->pi['msg'] = "Anketa ni izbrana!";
+ $this->pi['canCreate'] = false;
+ return false;
+ }
+
+ 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'];
+ }
+
+ public function displayMeansTable($_means=null, $meansClass=null, $export_format='') {
+ global $lang;
+ $tabela = '';
+ $this->meansClass = $meansClass;
+
+ #število vratic in število kolon
+ $cols = count($_means);
+
+ # preberemo kr iz prvega loopa
+ $rows = count($_means[0]['options']);
+
+ // sirina ene celice
+ $singleWidth = round( 180 / $cols / 2 );
+
+ // visina prve vrstice
+/* $firstHeight = 0;
+ for ($i = 0; $i < $cols; $i++) {
+ $label1 = $this->meansClass->getSpremenljivkaTitle($_means[$i]['v1']);
+ $firstHeight = ($firstHeight > $this->getCellHeight($this->encodeText($label1), $singleWidth*2)) ? $firstHeight : $this->getCellHeight($this->encodeText($label1), $singleWidth*2);
+ } */
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 3;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'C|' : 'c|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? 'C|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tabela .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+
+ //prva vrstica tabele
+ $label2 = $this->meansClass->getSpremenljivkaTitle($_means[0]['v2']);
+
+ //$this->pdf->MultiCell(80, $firstHeight, $this->encodeText($label2), 'TLR', 'C', 0, 0, 0 ,0, true);
+ $prva = '';
+ for ($i = 0; $i < $cols; $i++) {
+ $label1 = $this->meansClass->getSpremenljivkaTitle($_means[$i]['v1']);
+ //$this->pdf->MultiCell($singleWidth*2, $firstHeight, $this->encodeText($label1), 1, 'C', 0, 0, 0 ,0, true);
+ $prva .= $label1.' ';
+ }
+
+ $steviloPodStolpcev1 = $cols+1;
+
+ if($export_format != 'xls'){
+ $poravnava = "C";
+ }else{
+ $poravnava = "c";
+ }
+
+ ############
+ $steviloTabColSep = ($steviloPodStolpcev1-1)*2;
+ $steviloArrayrulewidth = ($steviloPodStolpcev1-1);
+
+ if($export_format=='pdf'){
+ $tabela .= $this->encodeText($label2)." & \multicolumn{".$steviloPodStolpcev1."}{>{\hsize=\dimexpr".$steviloPodStolpcev1."\hsize+".$steviloTabColSep."\\tabcolsep+".$steviloArrayrulewidth."\arrayrulewidth\\relax}".$poravnava."|}{".$this->encodeText($prva)."} ".$this->texNewLine;
+ }elseif($export_format=='rtf'){
+ $tabela .= $this->encodeText($label2)." & \multicolumn{".$steviloPodStolpcev1."}{".$poravnava."|}{".$this->encodeText($prva)."} ".$this->texNewLine;
+ }
+ ############
+
+ //$tabela .= $this->encodeText($label2)." & \multicolumn{".$steviloPodStolpcev1."}{>{\hsize=\dimexpr".$steviloPodStolpcev1."\hsize+".$steviloPodStolpcev1."\\tabcolsep+\arrayrulewidth\\relax}".$poravnava."|}{".$this->encodeText($prva)."} ".$this->texNewLine;
+ //$tabela .= $this->encodeText($label2)." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($prva)."} ".$this->texNewLine;
+ //$tabela .= $this->encodeText($label2)." & \multicolumn{".$steviloPodStolpcev1."}{".$poravnava."|}{".$this->encodeText($prva)."} ".$this->texNewLine;
+ //$tabela .= $this->encodeText($label2)." & \multicolumn{".$steviloPodStolpcev1."}{C|}{".$this->encodeText($prva)."} ".$this->texNewLine;
+ //$tabela .= $this->encodeText($label2).' & \multicolumn{'.$steviloPodStolpcev1.'}{>{\hsize=\dimexpr '.($steviloPodStolpcev1).'\hsize + '.($steviloPodStolpcev1).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($prva).'} '.$this->texNewLine;
+
+ //prva vrstica tabele - konec
+
+ //druga vrstica tabele
+ //$this->pdf->MultiCell(80, 7, $this->encodeText(''), 'BLR', 'C', 0, 0, 0 ,0, true);
+ //echo "stolpci: ".$cols."</br>";
+ //echo "vrstice: ".$rows."</br>";
+
+ $druga = array();
+ $steviloPodStolpcev = $steviloPodStolpcev1 + 1;
+ //$tabela .= "\\cline{2-".$steviloPodStolpcev."} & "; //horizontalna vrstica od 2 do zadnje celice
+ if($export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloPodStolpcev."} "; //horizontalna vrstica od 2 do zadnje celice
+ }
+
+ $tabela .= " & ";
+
+ $brezHline = $this->getBrezHline($export_format);
+
+ for ($i = 0; $i < $cols; $i++) {
+ $druga[] = $this->encodeText($lang['srv_means_label']);
+ $druga[] = $this->encodeText($lang['srv_means_label4']);
+ //$this->pdf->MultiCell($singleWidth, 7, $this->encodeText($lang['srv_means_label']), 1, 'C', 0, 0, 0 ,0, true);
+ //$this->pdf->MultiCell($singleWidth, 7, $this->encodeText($lang['srv_means_label4']), 1, 'C', 0, 0, 0 ,0, true);
+ }
+ //$this->pdf->MultiCell(1, 7, $this->encodeText(''), 0, 'C', 0, 1, 0 ,0, true);
+ $tabela .= $this->tableRow($druga, $brezHline)." ";
+ //druga vrstica tabele - konec
+
+ //vrstice s podatki
+ if (count($_means[0]['options']) > 0) {
+
+ foreach ($_means[0]['options'] as $ckey2 =>$crossVariabla2) {
+ $dataVrstica = array();
+ $variabla = $crossVariabla2['naslov'];
+ # če ni tekstovni odgovor dodamo key
+ if ($crossVariabla2['type'] !== 't' ) {
+ if ($crossVariabla2['vr_id'] == null) {
+ $variabla .= ' ( '.$ckey2.' )';
+ } else {
+ $variabla .= ' ( '.$crossVariabla2['vr_id'].' )';
+ }
+ }
+ //$this->pdf->MultiCell(80, 7, $this->encodeText($variabla), 1, 'C', 0, 0, 0 ,0, true);
+ $dataVrstica[] = $this->encodeText($variabla);
+
+ # celice z vsebino
+ for ($i = 0; $i < $cols; $i++) {
+ //$dataVrstica[] = $this->encodeText($this->meansClass->formatNumber($_means[$i]['result'][$ckey2], SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_RESIDUAL')));
+ $dataVrstica[] = $this->encodeText(self::formatNumber($_means[$i]['result'][$ckey2], SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_RESIDUAL')));
+ $dataVrstica[] = $this->encodeText((int)$_means[$i]['sumaVrstica'][$ckey2]);
+ //$this->pdf->MultiCell($singleWidth, 7, $this->encodeText($this->meansClass->formatNumber($_means[$i]['result'][$ckey2], SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_RESIDUAL'))), 1, 'C', 0, 0, 0 ,0, true);
+ //$this->pdf->MultiCell($singleWidth, 7, $this->encodeText((int)$_means[$i]['sumaVrstica'][$ckey2]), 1, 'C', 0, 0, 0 ,0, true);
+ }
+ //$this->pdf->MultiCell(1, 7, $this->encodeText(''), 0, 'C', 0, 1, 0 ,0, true);
+ $tabela .= $this->tableRow($dataVrstica, $brezHline)." ";
+ }
+ }
+ // vrstice s podatki - konec
+
+ //SKUPAJ
+ $skupajVrstica = array();
+ //$this->pdf->MultiCell(80, 7, $this->encodeText($lang['srv_means_label3']), 1, 'C', 0, 0, 0 ,0, true);
+ $skupajVrstica[] = $this->encodeText($lang['srv_means_label3']);
+ for ($i = 0; $i < $cols; $i++) {
+ //$skupajVrstica[] = $this->encodeText($this->meansClass->formatNumber($_means[$i]['sumaMeans'], SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_RESIDUAL')));
+ $skupajVrstica[] = $this->encodeText(self::formatNumber($_means[$i]['sumaMeans'], SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_RESIDUAL')));
+ //$this->pdf->MultiCell($singleWidth, 7, $this->encodeText($this->meansClass->formatNumber($_means[$i]['sumaMeans'], SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_RESIDUAL'))), 1, 'C', 0, 0, 0 ,0, true);
+ $skupajVrstica[] = $this->encodeText((int)$_means[$i]['sumaSkupna']);
+ //$this->pdf->MultiCell($singleWidth, 7, $this->encodeText((int)$_means[$i]['sumaSkupna']), 1, 'C', 0, 0, 0 ,0, true);
+ }
+ //$this->pdf->MultiCell(1, 7, $this->encodeText(''), 0, 'C', 0, 1, 0 ,0, true);
+ $tabela .= $this->tableRow($skupajVrstica, $brezHline)." ";
+ //SKUPAJ - konec
+
+ //zaljucek latex tabele z obrobo za prvo tabelo
+ $tabela .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za prvo tabelo - konec
+ return $tabela;
+ }
+
+ public function displayChart($counter=null, $meanData1=null, $meanData2=null, $sessionData=null){
+ global $lang, $site_path;
+ $texImage = '';
+
+ $path2ChartsImgs = $site_path.'admin/survey/pChart/Cache/';
+
+ //echo $path2ChartsImgs."</br>";
+
+ $variables1 = $meanData1;
+ $variables2 = $meanData2;
+
+ $pos1 = floor($counter / count($variables2));
+ $pos2 = $counter % count($variables2);
+
+ $chartID = implode('_', $variables1[$pos1]).'_'.implode('_', $variables2[$pos2]);
+ $chartID .= '_counter_'.$counter;
+
+ $settings = $sessionData['mean_charts'][$chartID];
+ $imgName = $settings['name'];
+
+ $size = getimagesize('pChart/Cache/'.$imgName);
+ $height = $size[1] / 4;
+
+ copy('pChart/Cache/'.$imgName,'pChart/Cache/'.$imgName.'.png');
+ //$this->pdf->Image('pChart/Cache/'.$imgName, $x='', $y='', $w=200, $h, $type='PNG', $link='', $align='N', $resize=true, $dpi=1600, $palign='C', $ismask=false, $imgmask=false, $border=0);
+
+ $texImage .= "\\begin{center} \\includegraphics[scale=0.75]{".$path2ChartsImgs.$imgName."} \\end{center}"; //latex za sliko, ki je sredinsko poravnana
+
+ //echo "img name: ".$imgName."</br>";
+
+ //unlink('pChart/Cache/'.$imgName.'.png');
+ return $texImage;
+ }
+
+ /*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 drawLine()
+ {
+ $cy = $this->pdf->getY();
+ $this->pdf->Line(15, $cy , 195, $cy , $this->currentStyle);
+ }
+
+ 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;
+ }
+
+ function getCellHeight($string='', $width=null){
+
+ $this->pdf->startTransaction();
+ // get the number of lines calling you method
+ $linecount = $this->pdf->MultiCell($width, 0, $string, 0, 'L', 0, 0, '', '', true, 0, false, true, 0);
+ // restore previous object
+ $this->pdf = $this->pdf->rollbackTransaction();
+
+ $height = ($linecount <= 1) ? 4.7 : $linecount * ($this->pdf->getFontSize() * $this->pdf->getCellHeightRatio()) + 2;
+
+ return $height;
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/admin/survey/export/latexclasses/Analize/AnalizaMultiCrosstab.php b/admin/survey/export/latexclasses/Analize/AnalizaMultiCrosstab.php
new file mode 100644
index 0000000..02f6eb9
--- /dev/null
+++ b/admin/survey/export/latexclasses/Analize/AnalizaMultiCrosstab.php
@@ -0,0 +1,1909 @@
+<?php
+
+ global $site_path;
+
+ include_once('../../function.php');
+ include_once('../survey/definition.php');
+ include_once('../exportclases/class.pdfIzvozAnalizaFunctions.php');
+ require_once('../exportclases/class.enka.pdf.php');
+
+ define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
+ define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
+
+ define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
+ define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
+
+ define("M_ANALIZA_DESCRIPTOR", "descriptor");
+ define("M_ANALIZA_FREQUENCY", "frequency");
+
+ define("FNT_FREESERIF", "freeserif");
+ define("FNT_FREESANS", "freesans");
+ define("FNT_HELVETICA", "helvetica");
+
+ define("FNT_MAIN_TEXT", FNT_FREESANS);
+ define("FNT_QUESTION_TEXT", FNT_FREESANS);
+ define("FNT_HEADER_TEXT", FNT_FREESANS);
+
+ define("FNT_MAIN_SIZE", 10);
+ define("FNT_QUESTION_SIZE", 9);
+ define("FNT_HEADER_SIZE", 10);
+
+ define("RADIO_BTN_SIZE", 3);
+ define("CHCK_BTN_SIZE", 3);
+ define("LINE_BREAK", 6);
+
+ define ('PDF_MARGIN_HEADER', 8);
+ define ('PDF_MARGIN_FOOTER', 12);
+ define ('PDF_MARGIN_TOP', 18);
+ define ('PDF_MARGIN_BOTTOM', 18);
+ define ('PDF_MARGIN_LEFT', 15);
+ define ('PDF_MARGIN_RIGHT', 15);
+
+ define ('SNIPPET_LENGTH', 300);
+
+
+/** Class za generacijo latex
+ *
+ *
+ *
+ */
+class AnalizaMultiCrosstab extends LatexAnalysisElement {
+
+ var $anketa;// = array(); // trenutna anketa
+
+ var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+ var $pdf;
+ var $currentStyle;
+ var $db_table = '';
+
+ public $multiCrosstabClass = null; // crosstab class
+
+ private $cellWidth = 1; // sirina celice s podatki
+ private $cellHeight = 1; // visina celice s podadtki
+ private $cellSpan = 1; // stevilo vrstic v celici s podatki
+
+ protected $texNewLine = '\\\\ ';
+ protected $export_format;
+ protected $horizontalLineTex = "\\hline ";
+ protected $show_valid_percent;
+ protected $texBigSkip = '\bigskip';
+ protected $spaceBetweenTables = ' \newline \vspace*{1 cm} \newline';
+
+ protected $tableSettingsNumerus;
+ protected $tableSettingsPercent;
+ protected $tableSettingsSums;
+ protected $tableSettingsAvgVar;
+ protected $tableSettingsDelezVar;
+
+
+ /**
+ * @desc konstruktor
+ */
+ function __construct ($anketa = null){
+ global $site_path;
+ global $global_user_id;
+
+ // preverimo ali imamo stevilko ankete
+ //if ( is_numeric($anketa) ){
+ if ( is_numeric($anketa['id']) ){
+ //$this->anketa['id'] = $anketa;
+ $this->anketa = $anketa;
+ // create new PDF document
+ //$this->pdf = new enka_TCPDF('L', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
+ }
+ else{
+ $this->pi['msg'] = "Anketa ni izbrana!";
+ $this->pi['canCreate'] = false;
+
+ return false;
+ }
+ $_GET['a'] = A_ANALYSIS;
+
+
+ //ustvarimo multicrosstabs objekt
+ //$this->multiCrosstabClass = new SurveyMultiCrosstabs($anketa);
+
+ //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']);
+ SurveyDataSettingProfiles::Init($this->anketa['id']);
+ }
+ 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 displayTable($multiCrosstabClass=null, $export_format=''){
+ global $site_path;
+ global $lang;
+
+ $tabela = '';
+
+ $this->multiCrosstabClass = $multiCrosstabClass;
+
+ // Napolnimo variable ki so ze izbrane
+ $this->multiCrosstabClass->getSelectedVars();
+
+ // Izpisemo naslov tabele
+ //echo "naslov tabele: ".$this->encodeText($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['title'])."</br>";
+ $tabela .= '\textbf{'.$this->encodeText($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['title']).'}'.$this->texBigSkip.$this->texNewLine;
+ //echo $tabela."</br>";
+/* $this->pdf->setFont('','B','10');
+ $this->pdf->MultiCell(150, 5, $this->encodeText($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['title']), 0, 'L', 0, 1, 0 ,0, true);
+ $this->pdf->ln(5);
+ $this->pdf->setFont('','','6'); */
+
+
+ // TABELA
+
+ // Najprej izracunamo dimenzije
+ $lineHeight = 6;
+ $fullWidth = 270;
+
+ if($this->multiCrosstabClass->rowSpan == 0)
+ //$colspan = 1;
+ $colspan = 2;
+ elseif(!$this->multiCrosstabClass->rowLevel2)
+ $colspan = 2;
+ else
+ $colspan = 4;
+
+ $metaWidth = $colspan * 35;
+ $dataWidth = $fullWidth - $metaWidth;
+
+ $dataCellSpan = 0;
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1)
+ $dataCellSpan++;
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1)
+ $dataCellSpan++;
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] != '')
+ $dataCellSpan++;
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] != '')
+ $dataCellSpan++;
+
+ $this->cellSpan = ($dataCellSpan == 0) ? 1 : $dataCellSpan;
+ $this->cellHeight = ($this->cellSpan > 1) ? $this->cellSpan * 5 : $lineHeight;
+
+ $this->tableSettingsNumerus = $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'];
+ $this->tableSettingsPercent = $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'];
+ $this->tableSettingsSums = $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'];
+ $this->tableSettingsAvgVar = $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'];
+ $this->tableSettingsDelezVar = $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'];
+
+ $steviloPodstolpcevV1 = array(); //hrani stevilo podstolpcev za 1. vrstico
+ $steviloPodstolpcevV2 = array(); //hrani stevilo podstolpcev za 2. vrstico
+ $steviloPodstolpcevV3 = array(); //hrani stevilo podstolpcev za 3. vrstico
+ $indeksMultiRow = array(); //hrani, kje je potrebna crta med vrsticami tabele (1) in kje ne (0)
+
+ //$tabela .= $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'];
+
+ $cntVerVars=0;
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
+ $cntVerVars++;
+ }
+ //echo "cntVerVars: ".$cntVerVars."</br>";
+
+ if($this->multiCrosstabClass->colSpan == 0){
+ //$this->cellWidth = $dataWidth/2;
+ //$this->pdf->MultiCell($metaWidth, 0, '', 'B', 'L', 0, 1, 0 ,0, true);
+ $steviloPodstolpcev = 1;
+ $steviloPodstolpcevV1[] = $steviloPodstolpcev;
+ }
+ // Imamo 2 nivoja
+ elseif($this->multiCrosstabClass->colLevel2){
+ //echo "vertikalno izbrane sprem. 1. vrstica, ko imamo 2 nivoja</br>";
+
+ $this->cellWidth = $dataWidth / $this->multiCrosstabClass->colSpan;
+
+ //pridobivanje podatkov zadnja vrstica
+ if(count($this->multiCrosstabClass->selectedVars['ver'])){
+ $cetrtaVrsticaVert = array();
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $parentVar){
+ $steviloPodstolpcev = 0;
+ $cetrtaVrsticaVertTmp = array(); //za pridobitev stevila podstolpcev za posamezno spremenljivko, ce jih je vec
+ // ce imamo childe na 2. nivoju
+ if(count($parentVar['sub']) > 0){
+ foreach($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options'] as $option){
+ foreach($parentVar['sub'] as $var){
+ foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $suboption){
+ //$this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->snippet($suboption, 25), 1, 'C', 0, 0, 0 ,0, true, $stretch=0, $ishtml=false, $autopadding=false, $maxh=0);
+ if($export_format != 'xls'){
+ $cetrtaVrsticaVertText = $this->snippet($suboption, 25);
+ $cetrtaVrsticaVertTmpText = $this->snippet($suboption, 25);
+ }else{
+ $cetrtaVrsticaVertText = $suboption;
+ $cetrtaVrsticaVertTmpText = $suboption;
+ }
+ $cetrtaVrsticaVert[] = $cetrtaVrsticaVertText;
+ $cetrtaVrsticaVertTmp[] = $cetrtaVrsticaVertTmpText;
+ $indeksMultiRow[] = 1;
+ }
+ $steviloPodstolpcevV3[] = count($this->multiCrosstabClass->variablesList[$var['spr']]['options']);
+ }
+ $steviloPodstolpcev = count($cetrtaVrsticaVertTmp);
+ }
+ }
+ else{
+ //$this->pdf->MultiCell($this->cellWidth*count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']), $lineHeight, '', 0, 'C', 0, 0, 0 ,0, true);
+
+ foreach($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options'] as $option){
+ //$this->pdf->MultiCell($this->cellWidth, $lineHeight*2, $this->snippet($option, 25), 1, 'C', 0, 0, 0 ,0, true);
+
+ /* $cetrtaVrsticaVert[] = $this->snippet($option, 25);
+ $cetrtaVrsticaVertTmp[] = $this->snippet($suboption, 25); */
+ if($export_format != 'xls'){
+ $cetrtaVrsticaVertText = $this->snippet($option, 25);
+ $cetrtaVrsticaVertTmpText = $this->snippet($suboption, 25);
+ }else{
+ $cetrtaVrsticaVertText = $option;
+ $cetrtaVrsticaVertTmpText = $suboption;
+ }
+ $cetrtaVrsticaVert[] = $cetrtaVrsticaVertText;
+ $cetrtaVrsticaVertTmp[] = $cetrtaVrsticaVertTmpText;
+ $indeksMultiRow[] = 0;
+ }
+ $steviloPodstolpcev = count($cetrtaVrsticaVertTmp);
+ $steviloPodstolpcevV3[] = count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']);
+ }
+ if($steviloPodstolpcev!=0){
+ $steviloPodstolpcevV1[] = $steviloPodstolpcev;
+ }
+ }
+ }
+ //pridobivanje podatkov zadnja vrstica - konec
+
+
+ // Izrisemo VERTIKALNO izbrane spremenljivkec - 1. vrstica
+ //$this->pdf->MultiCell($metaWidth, $lineHeight, '', 0, 'L', 0, 0, 0 ,0, true);
+
+ if(count($this->multiCrosstabClass->selectedVars['ver'])){
+ $prvaVrsticaVert = array();
+
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
+
+ // Ce imamo tudi 2. nivo pri doloceni spremenljivki
+ if(count($var['sub']) > 0){
+ $rowspan = 1;
+ $width = $this->cellWidth * count($this->multiCrosstabClass->variablesList[$var['sub'][0]['spr']]['options']) * count($this->multiCrosstabClass->variablesList[$var['spr']]['options']);
+ if($export_format != 'xls'){
+ $naslov = $this->encodeText($this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25));
+ }else{
+ $naslov = $this->encodeText($this->multiCrosstabClass->variablesList[$var['spr']]['naslov']);
+ }
+ }
+ else{
+ $rowspan = 2;
+ $width = $this->cellWidth * count($this->multiCrosstabClass->variablesList[$var['spr']]['options']);
+ if($export_format != 'xls'){
+ $naslov = '\multirow{2}{*}{ '.$this->encodeText($this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25)).' }';
+ }else{
+ $naslov = $this->encodeText($this->multiCrosstabClass->variablesList[$var['spr']]['naslov']);
+ }
+ }
+ //$this->pdf->MultiCell($width, $lineHeight*$rowspan, $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25), 1, 'C', 0, 0, 0 ,0, true);
+
+ //$naslov = $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25);
+ //$naslov = $this->encodeText($this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25));
+
+ $prvaVrsticaVert[] = $naslov;
+ //echo "naslov: ".$naslov."</br>";
+ }
+ }
+ //$this->pdf->MultiCell(1, $lineHeight, '', 0, 'L', 0, 1, 0 ,0, true);
+
+ // Izris vrstic za 2. nivo - 3. in 4. vrstica
+ //$this->pdf->MultiCell($metaWidth, $lineHeight, '', 0, 'L', 0, 0, 0 ,0, true);
+ if(count($this->multiCrosstabClass->selectedVars['ver'])){
+ $tretjaVrsticaVert = array();
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $parentVar){
+ // ce imamo childe na 2. nivoju
+ if(count($parentVar['sub']) > 0){
+ //$tretjaVrsticaVert = array();
+ foreach($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options'] as $option){
+ $width = $this->cellWidth * count($this->multiCrosstabClass->variablesList[$parentVar['sub'][0]['spr']]['options']);
+ foreach($parentVar['sub'] as $var){
+ //$this->pdf->MultiCell($width, $lineHeight, $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25), 1, 'C', 0, 0, 0 ,0, true);
+ if($export_format != 'xls'){
+ $tretjaVrsticaVert[] = $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25);
+ }else{
+ $tretjaVrsticaVert[] = $this->multiCrosstabClass->variablesList[$var['spr']]['naslov'];
+ }
+
+ }
+
+ }
+ }
+ else{
+ //$this->pdf->MultiCell($this->cellWidth*count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']), $lineHeight, '', 0, 'C', 0, 0, 0 ,0, true);
+
+ //$tretjaVrsticaVert[] = '';
+ $tretjaVrsticaVert[] = '\multirow{2}{*}{}';
+
+
+ }
+ }
+ //echo "3. vrstica podvrstice: ".count($tretjaVrsticaVert)."</br>";
+ }
+
+ // Izrisemo VARIABLE za spremenljivko - 2. vrstica
+ //$this->pdf->MultiCell($metaWidth, $lineHeight, '', 0, 'L', 0, 0, 0 ,0, true);
+ if(count($this->multiCrosstabClass->selectedVars['ver'])){
+ $drugaVrsticaVert = array();
+
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
+
+ // Ce imamo tudi 2. nivo pri doloceni spremenljivki
+ if(count($var['sub']) > 0){
+ $drugaVrsticaVertTmp = array();
+ //$width = $this->cellWidth * count($this->multiCrosstabClass->variablesList[$var['sub'][0]['spr']]['options']);
+ foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $option){
+ //$this->pdf->MultiCell($width, $lineHeight, $this->snippet($option, 25), 1, 'C', 0, 0, 0 ,0, true);
+ if($export_format != 'xls'){
+ $drugaVrsticaVert[] = $this->snippet($option, 25);
+ $drugaVrsticaVertTmp[] = $this->snippet($option, 25);
+ }else{
+ $drugaVrsticaVert[] = $option;
+ $drugaVrsticaVertTmp[] = $option;
+ }
+ }
+
+ foreach($drugaVrsticaVertTmp as $druga){
+ $steviloPodstolpcev = 0;
+ for($i=0;$i<count($var['sub']);$i++){
+ $steviloPodstolpcev = $steviloPodstolpcev + count($this->multiCrosstabClass->variablesList[$var['sub'][$i]['spr']]['options']);
+ }
+ $steviloPodstolpcevV2[] = $steviloPodstolpcev;
+ }
+ }
+ else{
+ $drugaVrsticaVert[] = '';
+ $steviloPodstolpcevV2[] = count($this->multiCrosstabClass->variablesList[$var['spr']]['options']);
+ }
+ }
+ }
+ //$this->pdf->MultiCell(1, $lineHeight, '', 0, 'L', 0, 1, 0 ,0, true);
+ }
+ // Imamo samo 1 nivo
+ else{
+ // Izrisemo VERTIKALNO izbrane spremenljivkec - 1. vrstica
+ //echo "Samo 1 nivo </br>";
+ // Izracunamo sirine celic
+ $this->cellWidth = $dataWidth / $this->multiCrosstabClass->fullColSpan;
+
+ //$this->pdf->MultiCell($metaWidth, $lineHeight, '', 0, 'C', 0, 0, 0 ,0, true);
+
+ if(count($this->multiCrosstabClass->selectedVars['ver'])){
+ $prvaVrsticaVert = array();
+
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
+ $naslov = $this->multiCrosstabClass->variablesList[$var['spr']]['naslov'];
+
+ if($naslov!=''||($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'] == 1 && !$this->multiCrosstabClass->rowLevel2)){
+ if($export_format != 'xls'){
+ $prvaVrsticaVert[] = $this->snippet($naslov, 35);
+ }else{
+ $prvaVrsticaVert[] = $naslov;
+ }
+ }
+
+ //$prvaVrsticaVert[] = $this->snippet($naslov, 35);
+
+ //$sprWidth = count($this->multiCrosstabClass->variablesList[$var['spr']]['options']) * $this->cellWidth;
+ //if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'] == 1 && !$this->multiCrosstabClass->rowLevel2)
+ //$sprWidth += $this->cellWidth;
+ //$this->pdf->MultiCell($sprWidth, $lineHeight, $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 35), 1, 'C', 0, 0, 0 ,0, true);
+
+ }
+
+ //$this->pdf->MultiCell(1, $lineHeight, '', 0, 'C', 0, 1, 0 ,0, true);
+ //$tabela .= $this->tableRow($prvaVrsticaVert);
+ //echo $tabela;
+ }
+ // Nimamo nobene vertikalne spremenljivke in 2 horizontalni
+ elseif($this->multiCrosstabClass->rowLevel2){
+ //$this->pdf->MultiCell($dataWidth, $lineHeight, '', 0, 'C', 0, 0, 0 ,0, true);
+ echo "Nimamo nobene vertikalne spremenljivke in 2 horizontalni </br>";
+ }
+
+
+ // Izrisemo VARIABLE za spremenljivko - 2. vrstica
+ if(count($this->multiCrosstabClass->selectedVars['ver'])){
+ $drugaVrsticaVert = array();
+
+ // Iracunamo visino najvisje celice
+ $cellHeight = $lineHeight;
+/* foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
+
+ foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $option){
+ $height = $this->getCellHeight($this->snippet($option, 25), $this->cellWidth);
+
+ $cellHeight = ($height > $cellHeight) ? $height : $cellHeight;
+ }
+ } */
+
+ //$this->pdf->MultiCell($metaWidth, $cellHeight, '', 'B', 'C', 0, 0, 0 ,0, true);
+
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
+ $steviloPodstolpcev = 0;
+ // Loop cez variable spremenljivke
+ foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $option){
+ //$this->pdf->MultiCell($this->cellWidth, $cellHeight, $this->snippet($option, 25), 1, 'C', 0, 0, 0 ,0, true);
+ if($export_format != 'xls'){
+ $drugaVrsticaVert[] = $this->snippet($option, 25);
+ }else{
+ $drugaVrsticaVert[] = $option;
+ }
+ }
+
+ $steviloPodstolpcev = count($this->multiCrosstabClass->variablesList[$var['spr']]['options']);
+
+ // Suma (ce jo imamo vklopljeno)
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'] == 1 && !$this->multiCrosstabClass->rowLevel2){
+ //$this->pdf->MultiCell($this->cellWidth, $cellHeight, $lang['srv_analiza_crosstab_skupaj'], 1, 'C', 0, 0, 0 ,0, true);
+ $drugaVrsticaVert[] = $lang['srv_analiza_crosstab_skupaj'];
+ $steviloPodstolpcev++;
+ }
+
+/* if($colspan<4){
+ $steviloPodstolpcevV2[] = $steviloPodstolpcev;
+ }elseif($steviloPodstolpcev!=0&&$colspan==4){
+ $steviloPodstolpcevV2[] = $steviloPodstolpcev;
+ } */
+ if($steviloPodstolpcev!=0){
+ $steviloPodstolpcevV1[] = $steviloPodstolpcev;
+ }
+
+ //$steviloPodstolpcevV2[] = $steviloPodstolpcev;
+ }
+ //$tabela .= $this->tableRow($drugaVrsticaVert);
+ //$this->pdf->MultiCell(1, $cellHeight, '', 0, 'C', 0, 1, 0 ,0, true);
+ }
+ }
+
+ ##########################################################################################
+ /*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis*/
+ $steviloStolpcevParameterTabular = $this->getSteviloPodstolpcev($steviloPodstolpcevV1);
+ $steviloStolpcevParameterTabular = $steviloStolpcevParameterTabular + $colspan;
+ //echo "Stevilo stolpcev: ".$steviloStolpcevParameterTabular."</br>";
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+
+ $cntHorVars=0;
+ foreach($this->multiCrosstabClass->selectedVars['hor'] as $var){
+ $cntHorVars++;
+ }
+
+ //echo "cntHorVars: ".$cntHorVars."</br>";
+ if($cntHorVars>=1||$this->multiCrosstabClass->rowSpan == 0){
+ $parameterTabular = '|';
+ }
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ $parameterTabular .= ($export_format == 'pdf' ? 'c|' : 'c|');
+ }
+ /*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis - konec*/
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tabela .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ ##########################################################################################
+ if($export_format != 'xls'){
+ $tabela .= "\\cline{".($colspan+1)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica na vrhu tabele
+ }
+
+ $tabela .= $this->MultiColCellLatex($colspan, '', 1); //prazne celice v prvi vrstici
+ //$tabela .= $this->tableRow($prvaVrsticaVert, 1, 0, 0, $steviloPodstolpcevV1); //izpis prve vrstice tabele
+ $tabela .= $this->tableRow($prvaVrsticaVert, 1, 0, 0, '', $export_format, $steviloPodstolpcevV1); //izpis prve vrstice tabele
+
+ //prekinjena horizontalna vrstica po prvi vrstici
+ if($export_format != 'xls'){
+ $tabela .= $this->urediCrteTabele($indeksMultiRow, $colspan, $steviloStolpcevParameterTabular);
+ }
+ //prekinjena horizontalna vrstica po prvi vrstici - konec
+
+ if(count($drugaVrsticaVert)){
+ $tabela .= $this->MultiColCellLatex($colspan, '', 1); //prazne celice v drugi vrstici
+ if(count($steviloPodstolpcevV2)){
+ //$tabela .= $this->tableRow($drugaVrsticaVert, 1, 0, 0, $steviloPodstolpcevV2);
+ $tabela .= $this->tableRow($drugaVrsticaVert, 1, 0, 0, '', $export_format, $steviloPodstolpcevV2);
+ }else{
+ $tabela .= $this->tableRow($drugaVrsticaVert, 1);
+ }
+
+ //prekinjena horizontalna vrstica po drugi vrstici
+ if($export_format != 'xls'){
+ $tabela .= $this->urediCrteTabele($indeksMultiRow, $colspan, $steviloStolpcevParameterTabular);
+ }
+ //prekinjena horizontalna vrstica po drugi vrstici - konec
+ }
+
+ if(count($tretjaVrsticaVert)){
+ $tabela .= $this->MultiColCellLatex($colspan, '', 1); //prazne celice v drugi vrstici
+ if(count($steviloPodstolpcevV3)){
+ //$tabela .= $this->tableRow($tretjaVrsticaVert, 1, 0, 0, $steviloPodstolpcevV3);
+ $tabela .= $this->tableRow($tretjaVrsticaVert, 1, 0, 0, '', $export_format, $steviloPodstolpcevV3);
+ }else{
+ $tabela .= $this->tableRow($tretjaVrsticaVert, 1);
+ }
+ if($export_format != 'xls'){
+ $tabela .= "\\cline{".($colspan+1)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica po tretji vrstici
+ }
+ }
+
+ if(count($cetrtaVrsticaVert)){
+ $tabela .= $this->MultiColCellLatex($colspan, '', 1); //prazne celice v drugi vrstici
+ $tabela .= $this->tableRow($cetrtaVrsticaVert, 1);
+ }
+
+
+ // Izrisemo HORIZONTALNO izbrane variable
+ if(count($this->multiCrosstabClass->selectedVars['hor'])){
+
+ // Imamo 2 nivoja vrstic
+ if($this->multiCrosstabClass->rowLevel2){
+ if($export_format != 'xls'){
+ $tabela .= ' \hline '; //horizontalna crta na zacetku tabele
+ }
+
+ foreach($this->multiCrosstabClass->selectedVars['hor'] as $parentVar){
+
+ $cnt = 0;
+ $order0 = 0;
+
+ foreach($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options'] as $option){
+ //echo "option hor 2. nivoja: ".$option."</br>";
+ $cnt2 = 0;
+
+ // ce imamo childe na 2. nivoju
+ if(count($parentVar['sub']) > 0){
+
+ $width = $metaWidth / 4;
+
+ foreach($parentVar['sub'] as $var){
+
+ $cnt3 = 0;
+
+ foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $suboption){
+
+ // Spodnji border pri zadnjem
+/* if($cnt == count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']) * count($this->multiCrosstabClass->variablesList[$var['spr']]['options']) - 1)
+ $border1 = 'B';
+ else
+ $border1 = '';
+ if($cnt2 == count($this->multiCrosstabClass->variablesList[$var['spr']]['options'])-1)
+ $border2 = 'B';
+ else
+ $border2 = ''; */
+
+ //if($cnt == floor((count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']) * count($this->multiCrosstabClass->variablesList[$var['spr']]['options'])) / 2)){
+
+
+
+
+ //$tabela .= ' \hline ';
+
+ if($cnt == 0){
+ if($export_format != 'xls'){
+ $tabela .= $this->encodeText($this->snippet($this->multiCrosstabClass->variablesList[$parentVar['spr']]['naslov'], 25))." & ";
+ }else{
+ $tabela .= $this->encodeText($this->multiCrosstabClass->variablesList[$parentVar['spr']]['naslov'])." & ";
+ }
+ //$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($this->multiCrosstabClass->variablesList[$parentVar['spr']]['naslov'], 25), 'LR', 'C', 0, 0, 0 ,0, true);
+ //echo "naslov : ".$this->snippet($this->multiCrosstabClass->variablesList[$parentVar['spr']]['naslov'], 25)."</br>";
+ }
+ else{
+ $tabela .= " & ";
+ //$this->pdf->MultiCell($width, $this->cellHeight, '', 'LR'.$border1, 'C', 0, 0, 0 ,0, true);
+ //echo "naslov : </br>";
+ }
+
+
+ // Variabla
+ //if($cnt2 == floor(count($this->multiCrosstabClass->variablesList[$var['spr']]['options'])/2)){
+ if($cnt2 == 0){
+ if($export_format != 'xls'){
+ $tabela .= $this->encodeText($this->snippet($option, 25))." & ";
+ }else{
+ $tabela .= $this->encodeText($option)." & ";
+ }
+ //echo "variabla : ".$this->snippet($option, 25)."</br>";
+ //$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($option, 25), 'LR', 'C', 0, 0, 0 ,0, true);
+ }
+ else{
+ $tabela .= " & ";
+ //echo "variabla : </br>";
+ //$this->pdf->MultiCell($width, $this->cellHeight, '', 'LR'.$border2, 'C', 0, 0, 0 ,0, true);
+ }
+
+ //if($cnt3 == floor(count($this->multiCrosstabClass->variablesList[$var['spr']]['options'])/2)){
+ if($cnt3 == 0){
+ if($export_format != 'xls'){
+ $tabela .= $this->encodeText($this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25))." & ";
+ }else{
+ $tabela .= $this->encodeText($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'])." & ";
+ }
+ //echo "variabla cnt3: ".$this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25)."</br>";
+ //$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25), 'LR', 'C', 0, 0, 0 ,0, true);
+ }
+ else{
+ $tabela .= " & ";
+ //echo "variabla cnt3: </br>";
+ //$this->pdf->MultiCell($width, $this->cellHeight, '', 'LR'.$border2, 'C', 0, 0, 0 ,0, true);
+ }
+
+ // Variabla 2
+ if($export_format != 'xls'){
+ $tabela .= $this->encodeText($this->snippet($suboption, 25))." & ";
+ }else{
+ $tabela .= $this->encodeText($suboption)." & ";
+ }
+ //$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($suboption, 25), 1, 'C', 0, 0, 0 ,0, true);
+ //echo "option variabla 2: ".$this->snippet($suboption, 25)."</br>";
+
+ // Celice s podatki
+ $vrsticaPodatki = $this->displayDataCells($parentVar, $order0, $var, $cnt3);
+ //print_r($vrsticaPodatki);
+ ################# izpis celic s podatki
+ $tabela .= $this->displayDataCellLatex($vrsticaPodatki, $this->tableSettingsNumerus, $this->tableSettingsAvgVar, $this->tableSettingsDelezVar, $colspan, $steviloStolpcevParameterTabular, $export_format);
+ ################# izpis celic s podatki - konec
+ // Celice s podatki - konec
+
+ //$this->pdf->MultiCell(1, $this->cellHeight, '', 0, 'C', 0, 1, 0 ,0, true);
+
+ $cnt++;
+ $cnt2++;
+ $cnt3++;
+
+ //prekinjena horizontalna crta med moznostmi 2. nivoja horizontalne spremenljivke
+ if($export_format != 'xls'){
+ $tabela .= ' \cline {4-'.$steviloStolpcevParameterTabular.'}';
+ }
+ }
+
+ //prekinjena horizontalna crta med moznostmi 1. nivoja horizontalne spremenljivke
+ if($export_format != 'xls'){
+ $tabela .= ' \cline {2-'.$steviloStolpcevParameterTabular.'}';
+ }
+
+ $order0++;
+ }
+ }
+ else{
+ $width = $metaWidth / 2;
+
+ // Spodnji border pri zadnjem
+ if($cnt == count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']) - 1)
+ $border1 = 'B';
+ else
+ $border1 = '';
+
+ if($cnt == floor(count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options'])/2)){
+ //$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($this->multiCrosstabClass->variablesList[$parentVar['spr']]['naslov'], 25), 'LR', 'C', 0, 0, 0 ,0, true);
+ }
+ else{
+ //$this->pdf->MultiCell($width, $this->cellHeight, '', 'LR'.$border1, 'C', 0, 0, 0 ,0, true);
+ }
+
+ // Variabla
+ //$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($option, 25), 1, 'C', 0, 0, 0 ,0, true);
+
+ // Celice s podatki
+ //$this->displayDataCells($parentVar, $cnt);
+
+ //$this->pdf->MultiCell(1, $this->cellHeight, '', 0, 'C', 0, 1, 0 ,0, true);
+
+ $cnt++;
+ }
+ }
+ }
+
+ if($export_format != 'xls'){
+ $tabela .= ' \hline '; //horizontalna crta na koncu tabele
+ }
+
+ }
+ // Imamo samo 1 nivo vrstic
+ else{
+ //echo "1 nivo vrstic";
+ $width = $metaWidth / 2;
+ if($export_format != 'xls'){
+ $tabela .= ' \hline '; //horizontalna vrstica
+ }
+ $cntHorVars = 0;
+ foreach($this->multiCrosstabClass->selectedVars['hor'] as $var){
+
+ // Ce imamo sumo
+ $suma = ($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'] == 1 && count($this->multiCrosstabClass->selectedVars['ver']) > 0 && !$this->multiCrosstabClass->colLevel2) ? true : false;
+
+ $cnt = 0;
+ $vrsticaPodatki = array();
+ $vrstica = array();
+
+ foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $option){ //vrstice s spremenljivkami
+ //echo "option hor 1. nivo: ".$option."</br>";
+ //Naslov horizontalne vrstice
+ if($cnt==0){
+ if($export_format != 'xls'){
+ $naslovVarHor = $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25);
+ }else{
+ $naslovVarHor = $this->multiCrosstabClass->variablesList[$var['spr']]['naslov'];
+ }
+ //$tabela .= $naslovVarHor." & ";
+ }else{
+ $naslovVarHor = '';
+ }
+ //echo "naslovVarHor: ".$naslovVarHor."</br>";
+ $tabela .= $naslovVarHor." & ";
+
+ // Variabla
+ //$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($option, 25), '1', 'C', 0, 0, 0 ,0, true);
+ //echo "variabla: ".$this->snippet($option, 25)."</br>";
+ if($export_format != 'xls'){
+ $tabela .= $this->snippet($option, 25)." & ";
+ }else{
+ $tabela .= $option." & ";
+ }
+
+ // Celice s podatki
+ //echo "celica s podatki: ".$var."</br>";
+ // Ce nimamo nobenega krizanja izpisemo prazne
+ if($spr2 == '' && $this->multiCrosstabClass->colSpan == 0){
+ //$tabela .= " & ";
+ $tabela .= $this->texNewLine;
+ }else{
+ $vrsticaPodatki = $this->displayDataCells($var, $cnt);
+ //print_r($vrsticaPodatki);
+ ################# izpis celic s podatki
+ $tabela .= $this->displayDataCellLatex($vrsticaPodatki, $this->tableSettingsNumerus, $this->tableSettingsAvgVar, $this->tableSettingsDelezVar, $colspan, $steviloStolpcevParameterTabular, $export_format);
+ ################# izpis celic s podatki - konec
+ }
+ //$this->pdf->MultiCell(1, $this->cellHeight, '', 0, 'C', 0, 1, 0 ,0, true);
+
+ if($export_format != 'xls'){
+ $tabela .= "\\cline{".($colspan)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica
+ }
+
+ $cnt++;
+ }
+ // Vrstica za sumo (ce jo imamo vklopljeno)
+ if($suma){
+
+ //$this->pdf->MultiCell($width, $this->cellHeight, '', 'BLR', 'C', 0, 0, 0 ,0, true);
+ //$this->pdf->MultiCell($width, $this->cellHeight, $lang['srv_analiza_crosstab_skupaj'], '1', 'C', 0, 0, 0 ,0, true);
+ $tabela .= " & ".$this->encodeText($lang['srv_analiza_crosstab_skupaj'])." & ";
+ //$tabela .= $this->encodeText($lang['srv_analiza_crosstab_skupaj'])." & ";
+
+ $vrsticaPodatkiSumNum = array();
+ $vrsticaPodatkiSumPer = array();
+ $vrsticaPodatkiSumAvg = array();
+ $vrsticaPodatkiSumDelez = array();
+ // Loop cez vse stolpce
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $spr2){
+
+ // Loop cez variable trenutnega stolpca
+ $cnt = 0;
+ foreach($this->multiCrosstabClass->variablesList[$spr2['spr']]['options'] as $var2){
+ //echo "var2: ".$var2."</br>";
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$var['spr'].'-'.$spr2['spr']];
+
+ $keys1 = array_keys($crosstabs['options1']);
+ $val = $keys1[$cnt];
+
+ //$this->displaySumsCell($var, $spr2, $val, $orientation=1);
+ $celicaSums = $this->displaySumsCell($var, $spr2, $val, $orientation=1);
+ if($this->tableSettingsNumerus){
+ $vrsticaPodatkiSumNum[] = $celicaSums['numerus'];
+ }
+ if($this->tableSettingsPercent){
+ $vrsticaPodatkiSumPer[] = $celicaSums['percent'];
+ }
+ if($this->tableSettingsAvgVar){
+ $vrsticaPodatkiSumAvg[] = $celicaSums['avg'];
+ }
+ if($this->tableSettingsDelezVar){
+ $vrsticaPodatkiSumDelez[] = $celicaSums['delez'];
+ }
+ //echo "Loop cez variable trenutnega stolpca </br>";
+ $cnt++;
+ }
+
+ // Krizanje navpicne in vodoravne sume
+ $celicaSums = $this->displaySumsCell($var, $spr2, 0, $orientation=2);
+ if($this->tableSettingsNumerus){
+ $vrsticaPodatkiSumNum[] = $celicaSums['numerus'];
+ }
+ if($this->tableSettingsPercent){
+ $vrsticaPodatkiSumPer[] = $celicaSums['percent'];
+ }
+ if($this->tableSettingsAvgVar){
+ $vrsticaPodatkiSumAvg[] = $celicaSums['avg'];
+ }
+ if($this->tableSettingsDelezVar){
+ $vrsticaPodatkiSumDelez[] = $celicaSums['delez'];
+ }
+
+ //echo "Krizanje navpicne in vodoravne sume </br>";
+ }
+ if($this->tableSettingsNumerus){
+ $tabela .= $this->tableRow($vrsticaPodatkiSumNum,1);
+ if($this->tableSettingsPercent||$this->tableSettingsAvgVar||$this->tableSettingsDelezVar){ //ce je potrebno izpisati se ostale vrstice izracunov
+ if($export_format != 'xls'){
+ $tabela .= "\\cline{".($colspan+1)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica
+ }
+ $tabela .= $this->AddEmptyCells($colspan);
+ }
+ }
+ if($this->tableSettingsPercent){
+ $tabela .= $this->tableRow($vrsticaPodatkiSumPer,1);
+ if($this->tableSettingsAvgVar||$this->tableSettingsDelezVar){ //ce je potrebno izpisati se ostale vrstice izracunov
+ if($export_format != 'xls'){
+ $tabela .= "\\cline{".($colspan+1)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica
+ }
+ $tabela .= $this->AddEmptyCells($colspan);
+ }
+ }
+ if($this->tableSettingsAvgVar!= ''){
+ $color = 'blue';
+ //$tabela .= $this->tableRow($vrsticaPodatkiSumAvg,1);
+ $tabela .= $this->tableRow($vrsticaPodatkiSumAvg,1,0,0,$color, $export_format);
+ if($this->tableSettingsDelezVar){ //ce je potrebno izpisati se ostale vrstice izracunov
+ if($export_format != 'xls'){
+ $tabela .= "\\cline{".($colspan+1)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica
+ }
+ $tabela .= $this->AddEmptyCells($colspan);
+ }
+ }
+ if($this->tableSettingsDelezVar!= ''){
+ $color = 'red';
+ //$tabela .= $this->tableRow($vrsticaPodatkiSumDelez,1);
+ $tabela .= $this->tableRow($vrsticaPodatkiSumDelez,1,0,0,$color, $export_format);
+ }
+ }
+ if($export_format != 'xls'){
+ $tabela .= ' \hline '; //horizontalna vrstica
+ }
+ $cntHorVars++;
+ }
+
+ if($cntVerVars==1&&$cntHorVars==0&&$this->multiCrosstabClass->rowSpan!=0){
+ $tabela .= ' \multicolumn{1}{|c}{} & \multicolumn{3}{|c|}{}';
+ //$tabela .= ' \multicolumn{1}{|X}{} & \multicolumn{3}{|X|}{}';
+ $tabela .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tabela .= ' \hline ';
+ }
+ }
+ }
+ }
+
+ //zaljucek latex tabele z obrobo za drugo tabelo
+ $tabela .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za drugo tabelo - konec
+ //echo "tabela: ".$tabela;
+ return $tabela;
+ }
+
+ // Izpis celic v vrstici s podatki
+ function displayDataCells($spr1='', $var1='', $spr2='', $var2=''){
+ $vrstica = '';
+ $celica = array();
+ $celicaSums = array();
+ $superCelicaNum = array();
+ $superCelicaPer = array();
+ $superCelicaAvg = array();
+ $superCelicaDelez = array();
+ $superCelica = array();
+
+ // Ce nimamo nobenega krizanja izpisemo prazne
+ if($spr2 == '' && $this->multiCrosstabClass->colSpan == 0){
+
+ for($i=0; $i<$this->multiCrosstabClass->colSpan; $i++){
+ //$this->pdf->MultiCell($width, $height, '', '1', 'C', 0, 0, 0 ,0, true);
+ }
+
+ //$this->pdf->MultiCell($dataWidth, $this->cellHeight, '', 1, 'C', 0, 0, 0 ,0, true);
+ //$this->pdf->MultiCell(1, $this->cellHeight, '', 0, 'C', 0, 1, 0 ,0, true);
+ echo "ni ničesar </br>";
+ }
+
+ // Ce nimamo stolpcev - krizanje dveh vrstic
+ elseif($spr2 != '' && $this->multiCrosstabClass->colSpan == 0){
+ echo "krizanje dveh vrstic </br>";
+ $spr1_temp = explode('-', $spr1['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr1['spr']]['grd_id'];
+ $variabla1 = array('seq' => $spr1_temp[1], 'spr' => $spr1_temp[0], 'grd' => $grd);
+
+ $spr2_temp = explode('-', $spr2['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr2['spr']]['grd_id'];
+ $variabla2 = array('seq' => $spr2_temp[1], 'spr' => $spr2_temp[0], 'grd' => $grd);
+
+ // Ce se nimamo izracunanih rezultatov jih izracunamo
+ if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']]))
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
+ else{
+ $variables = array();
+ $variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
+ $variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
+
+ $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
+
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
+ }
+
+ $keys1 = array_keys($crosstabs['options1']);
+ $val1 = $keys1[$var1];
+
+ $keys2 = array_keys($crosstabs['options2']);
+ $val2 = $keys2[$var2];
+
+ $crosstab = (isset($crosstabs['crosstab'][$val1][$val2])) ? $crosstabs['crosstab'][$val1][$val2] : 0;
+ $percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
+ $avg = (isset($crosstabs['avg'][$val1][$val2])) ? $crosstabs['avg'][$val1][$val2] : 0;
+ $delez = (isset($crosstabs['delez'][$val1][$val2])) ? $crosstabs['delez'][$val1][$val2] : 0;
+
+ $this->displayDataCell($crosstab, $percent, $avg, $delez);
+ }
+
+ // Krizanje 1 vrstice in 1 stolpca
+ elseif($spr2 == '' && !$this->multiCrosstabClass->colLevel2){
+ //echo "Krizanje 1 vrstice in 1 stolpca </br>";
+ // Loop cez vse stolpce
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $spr2){
+
+ $spr1_temp = explode('-', $spr1['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr1['spr']]['grd_id'];
+ $variabla1 = array('seq' => $spr1_temp[1], 'spr' => $spr1_temp[0], 'grd' => $grd);
+
+ $spr2_temp = explode('-', $spr2['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr2['spr']]['grd_id'];
+ $variabla2 = array('seq' => $spr2_temp[1], 'spr' => $spr2_temp[0], 'grd' => $grd);
+
+
+ // Ce se nimamo izracunanih rezultatov jih izracunamo
+ if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']]))
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
+ else{
+ $variables = array();
+ $variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
+ $variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
+
+ $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
+
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
+ }
+
+ $keys1 = array_keys($crosstabs['options1']);
+ $val1 = $keys1[$var1];
+
+ // Loop cez variable trenutnega stolpca
+ $cnt = 0;
+ foreach($this->multiCrosstabClass->variablesList[$spr2['spr']]['options'] as $var2){
+
+ $keys2 = array_keys($crosstabs['options2']);
+ $val2 = $keys2[$cnt];
+
+ $crosstab = (isset($crosstabs['crosstab'][$val1][$val2])) ? $crosstabs['crosstab'][$val1][$val2] : 0;
+ $percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
+ $avg = (isset($crosstabs['avg'][$val1][$val2])) ? $crosstabs['avg'][$val1][$val2] : 0;
+ $delez = (isset($crosstabs['delez'][$val1][$val2])) ? $crosstabs['delez'][$val1][$val2] : 0;
+
+ //echo "cnt: ".$cnt."</br>";
+ //$celica = $this->displayDataCell($crosstab, $percent, $avg, $delez);
+ $celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt);
+
+ if($this->tableSettingsNumerus){
+ $superCelicaNum[] = $celica['numerus'][$cnt];
+ //echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
+ }
+
+ if($this->tableSettingsPercent){
+ $superCelicaPer[] = $celica['percent'][$cnt];
+ }
+
+ if($this->tableSettingsAvgVar){
+ $superCelicaAvg[] = $celica['avg'][$cnt];
+ }
+
+ if($this->tableSettingsDelezVar){
+ $superCelicaDelez[] = $celica['delez'][$cnt];
+ }
+
+ //echo "Celica: ".$celica['numerus'][$cnt]."</br>";
+
+ $cnt++;
+ }
+
+ // Suma (ce jo imamo vklopljeno)
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'] == 1 && !$this->multiCrosstabClass->rowLevel2){
+ $celicaSums = $this->displaySumsCell($spr1, $spr2, $val1, $orientation=0);
+ if($this->tableSettingsNumerus){
+ $superCelicaNum[] = $celicaSums['numerus'];
+ }
+ if($this->tableSettingsPercent){
+ $superCelicaPer[] = $celicaSums['percent'];
+ }
+ if($this->tableSettingsAvgVar){
+ $superCelicaAvg[] = $celicaSums['avg'];
+ }
+ if($this->tableSettingsDelezVar){
+ $superCelicaDelez[] = $celicaSums['delez'];
+ }
+ }
+ }
+ }
+
+ // Izpisemo vecnivojske podatke (krizanje 3 ali 4 spremenljivk)
+ else{
+ //echo "Izpisemo vecnivojske podatke (krizanje 3 ali 4 spremenljivk) </br>";
+ // Nastavimo 1. vrsticno variablo
+ $spr1_temp = explode('-', $spr1['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr1['spr']]['grd_id'];
+ $variabla1 = array('seq' => $spr1_temp[1], 'spr' => $spr1_temp[0], 'grd' => $grd);
+
+ // Krizanje 2 vrstic in 1 stolpca
+ if(!$this->multiCrosstabClass->colLevel2){
+
+ // Nastavimo 2. vrsticno variablo
+ $spr2_temp = explode('-', $spr2['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr2['spr']]['grd_id'];
+ $variabla2 = array('seq' => $spr2_temp[1], 'spr' => $spr2_temp[0], 'grd' => $grd);
+
+ // Loop cez vse stolpce
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $spr3){
+
+ $spr3_temp = explode('-', $spr3['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr3['spr']]['grd_id'];
+ $variabla3 = array('seq' => $spr3_temp[1], 'spr' => $spr3_temp[0], 'grd' => $grd);
+
+ // Ce se nimamo izracunanih rezultatov jih izracunamo
+ if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']]))
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
+ else{
+ $variables = array();
+ $variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
+ $variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
+ $variables[2] = array('seq' => $variabla3['seq'], 'spr' => $variabla3['spr'], 'grd' => $variabla3['grd']);
+
+ $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
+
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
+ }
+
+ $keys1 = array_keys($crosstabs['options1']);
+ $val1 = $keys1[$var1];
+
+ $keys2 = array_keys($crosstabs['options2']);
+ $val2 = $keys2[$var2];
+
+ // Loop cez variable trenutnega stolpca
+ $cnt = 0;
+ foreach($this->multiCrosstabClass->variablesList[$spr3['spr']]['options'] as $var3){
+
+ $keys3 = array_keys($crosstabs['options3']);
+ $val3 = $keys3[$cnt];
+
+ $crosstab = (isset($crosstabs['crosstab'][$val1][$val2][$val3])) ? $crosstabs['crosstab'][$val1][$val2][$val3] : 0;
+ $percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
+ $avg = (isset($crosstabs['avg'][$val1][$val2][$val3])) ? $crosstabs['avg'][$val1][$val2][$val3] : 0;
+ $delez = (isset($crosstabs['delez'][$val1][$val2][$val3])) ? $crosstabs['delez'][$val1][$val2][$val3] : 0;
+
+ //$this->displayDataCell($crosstab, $percent, $avg, $delez);
+ $celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt);
+
+ if($this->tableSettingsNumerus){
+ $superCelicaNum[] = $celica['numerus'][$cnt];
+ //echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
+ }
+
+ if($this->tableSettingsPercent){
+ $superCelicaPer[] = $celica['percent'][$cnt];
+ }
+
+ if($this->tableSettingsAvgVar){
+ $superCelicaAvg[] = $celica['avg'][$cnt];
+ }
+
+ if($this->tableSettingsDelezVar){
+ $superCelicaDelez[] = $celica['delez'][$cnt];
+ }
+
+ $cnt++;
+ }
+ }
+ }
+
+ // Krizanje 1 vrstice in 2 stolpcev
+ elseif($spr2 == ''){
+ //echo "Krizanje 1 vrstice in 2 stolpcev </br>";
+ // Loop cez vse stolpce 1. navpicne spremenljivke
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $spr2){
+
+ $spr2_temp = explode('-', $spr2['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr2['spr']]['grd_id'];
+ $variabla2 = array('seq' => $spr2_temp[1], 'spr' => $spr2_temp[0], 'grd' => $grd);
+
+ // Loop cez variable 1. navpicne spremnljivke
+ $cnt2 = 0;
+ foreach($this->multiCrosstabClass->variablesList[$spr2['spr']]['options'] as $var2){
+
+ // Loop cez vse navpicne spremenljivke 2. nivoja - ce obstajajo
+ if(count($spr2['sub']) > 0){
+ foreach($spr2['sub'] as $spr3){
+
+ // Nastavimo navpicno spremenljivko 2. nivoja
+ $spr3_temp = explode('-', $spr3['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr3['spr']]['grd_id'];
+ $variabla3 = array('seq' => $spr3_temp[1], 'spr' => $spr3_temp[0], 'grd' => $grd);
+
+ // Ce se nimamo izracunanih rezultatov jih izracunamo
+ if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']]))
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
+ else{
+ $variables = array();
+ $variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
+ $variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
+ $variables[2] = array('seq' => $variabla3['seq'], 'spr' => $variabla3['spr'], 'grd' => $variabla3['grd']);
+
+ $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
+
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
+ }
+
+ $keys1 = array_keys($crosstabs['options1']);
+ $val1 = $keys1[$var1];
+
+ $keys2 = array_keys($crosstabs['options2']);
+ $val2 = $keys2[$cnt2];
+
+ // Loop cez variable spremenljivke 2. nivoja
+ $cnt3 = 0;
+ foreach($this->multiCrosstabClass->variablesList[$spr3['spr']]['options'] as $var3){
+
+ $keys3 = array_keys($crosstabs['options3']);
+ $val3 = $keys3[$cnt3];
+
+ $crosstab = (isset($crosstabs['crosstab'][$val1][$val2][$val3])) ? $crosstabs['crosstab'][$val1][$val2][$val3] : 0;
+ $percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
+ $avg = (isset($crosstabs['avg'][$val1][$val2][$val3])) ? $crosstabs['avg'][$val1][$val2][$val3] : 0;
+ $delez = (isset($crosstabs['delez'][$val1][$val2][$val3])) ? $crosstabs['delez'][$val1][$val2][$val3] : 0;
+
+ //$this->displayDataCell($crosstab, $percent, $avg, $delez);
+ $celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt3);
+
+ if($this->tableSettingsNumerus){
+ $superCelicaNum[] = $celica['numerus'][$cnt3];
+ //echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
+ }
+
+ if($this->tableSettingsPercent){
+ $superCelicaPer[] = $celica['percent'][$cnt3];
+ }
+
+ if($this->tableSettingsAvgVar){
+ $superCelicaAvg[] = $celica['avg'][$cnt3];
+ }
+
+ if($this->tableSettingsDelezVar){
+ $superCelicaDelez[] = $celica['delez'][$cnt3];
+ }
+ $cnt3++;
+ }
+ }
+ }
+ // 1 nivojska spremenljivka v stolpcu
+ else{
+ // Ce se nimamo izracunanih rezultatov jih izracunamo
+ if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']]))
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
+ else{
+ $variables = array();
+ $variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
+ $variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
+
+ $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
+
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
+ }
+
+ $keys1 = array_keys($crosstabs['options1']);
+ $val1 = $keys1[$var1];
+
+ $keys2 = array_keys($crosstabs['options2']);
+ $val2 = $keys2[$cnt2];
+
+ $crosstab = (isset($crosstabs['crosstab'][$val1][$val2])) ? $crosstabs['crosstab'][$val1][$val2] : 0;
+ $percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
+ $avg = (isset($crosstabs['avg'][$val1][$val2])) ? $crosstabs['avg'][$val1][$val2] : 0;
+ $delez = (isset($crosstabs['delez'][$val1][$val2])) ? $crosstabs['delez'][$val1][$val2] : 0;
+
+ //$this->displayDataCell($crosstab, $percent, $avg, $delez);
+ $celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt2);
+
+ if($this->tableSettingsNumerus){
+ $superCelicaNum[] = $celica['numerus'][$cnt2];
+ //echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
+ }
+
+ if($this->tableSettingsPercent){
+ $superCelicaPer[] = $celica['percent'][$cnt2];
+ }
+
+ if($this->tableSettingsAvgVar){
+ $superCelicaAvg[] = $celica['avg'][$cnt2];
+ }
+
+ if($this->tableSettingsDelezVar){
+ $superCelicaDelez[] = $celica['delez'][$cnt2];
+ }
+ }
+
+ $cnt2++;
+ }
+ }
+ }
+
+
+
+ // Krizanje 2 vrstic in 2 stolpcev
+ else{
+ //echo "Krizanje 2 vrstic in 2 stolpcev </br>";
+ // Nastavimo 2. vrsticno variablo
+ $spr2_temp = explode('-', $spr2['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr2['spr']]['grd_id'];
+ $variabla2 = array('seq' => $spr2_temp[1], 'spr' => $spr2_temp[0], 'grd' => $grd);
+
+ // Loop cez vse stolpce 1. navpicne spremenljivke
+ foreach($this->multiCrosstabClass->selectedVars['ver'] as $spr3){
+
+ $spr3_temp = explode('-', $spr3['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr3['spr']]['grd_id'];
+ $variabla3 = array('seq' => $spr3_temp[1], 'spr' => $spr3_temp[0], 'grd' => $grd);
+
+ // Loop cez variable 1. navpicne spremnljivke
+ $cnt3 = 0;
+ foreach($this->multiCrosstabClass->variablesList[$spr3['spr']]['options'] as $var3){
+
+ // Loop cez vse navpicne spremenljivke 2. nivoja
+ if(count($spr3['sub']) > 0){
+ foreach($spr3['sub'] as $spr4){
+
+ // Nastavimo navpicno spremenljivko 2. nivoja
+ $spr4_temp = explode('-', $spr4['spr']);
+ $grd = $this->multiCrosstabClass->variablesList[$spr4['spr']]['grd_id'];
+ $variabla4 = array('seq' => $spr4_temp[1], 'spr' => $spr4_temp[0], 'grd' => $grd);
+
+ // Ce se nimamo izracunanih rezultatov jih izracunamo
+ if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr'].'-'.$spr4['spr']]))
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr'].'-'.$spr4['spr']];
+ else{
+ $variables = array();
+ $variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
+ $variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
+ $variables[2] = array('seq' => $variabla3['seq'], 'spr' => $variabla3['spr'], 'grd' => $variabla3['grd']);
+ $variables[3] = array('seq' => $variabla4['seq'], 'spr' => $variabla4['spr'], 'grd' => $variabla4['grd']);
+
+ $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr'].'-'.$spr4['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
+
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr'].'-'.$spr4['spr']];
+ }
+
+ $keys1 = array_keys($crosstabs['options1']);
+ $val1 = $keys1[$var1];
+
+ $keys2 = array_keys($crosstabs['options2']);
+ $val2 = $keys2[$var2];
+
+ $keys3 = array_keys($crosstabs['options3']);
+ $val3 = $keys3[$cnt3];
+
+ // Loop cez variable spremenljivke 2. nivoja
+ $cnt4 = 0;
+ foreach($this->multiCrosstabClass->variablesList[$spr4['spr']]['options'] as $var4){
+
+ $keys4 = array_keys($crosstabs['options4']);
+ $val4 = $keys4[$cnt4];
+
+ $crosstab = (isset($crosstabs['crosstab'][$val1][$val2][$val3][$val4])) ? $crosstabs['crosstab'][$val1][$val2][$val3][$val4] : 0;
+ $percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
+ $avg = (isset($crosstabs['avg'][$val1][$val2][$val3][$val4])) ? $crosstabs['avg'][$val1][$val2][$val3][$val4] : 0;
+ $delez = (isset($crosstabs['delez'][$val1][$val2][$val3][$val4])) ? $crosstabs['delez'][$val1][$val2][$val3][$val4] : 0;
+
+ //$this->displayDataCell($crosstab, $percent, $avg, $delez);
+ $celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt4);
+
+ if($this->tableSettingsNumerus){
+ $superCelicaNum[] = $celica['numerus'][$cnt4];
+ //echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
+ }
+
+ if($this->tableSettingsPercent){
+ $superCelicaPer[] = $celica['percent'][$cnt4];
+ }
+
+ if($this->tableSettingsAvgVar){
+ $superCelicaAvg[] = $celica['avg'][$cnt4];
+ }
+
+ if($this->tableSettingsDelezVar){
+ $superCelicaDelez[] = $celica['delez'][$cnt4];
+ }
+
+ $cnt4++;
+ }
+ }
+ }
+ // 1 nivo navpicne spremenljivke
+ else{
+ // Ce se nimamo izracunanih rezultatov jih izracunamo
+ if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']]))
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
+ else{
+ $variables = array();
+ $variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
+ $variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
+ $variables[2] = array('seq' => $variabla3['seq'], 'spr' => $variabla3['spr'], 'grd' => $variabla3['grd']);
+
+ $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
+
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
+ }
+
+ $keys1 = array_keys($crosstabs['options1']);
+ $val1 = $keys1[$var1];
+
+ $keys2 = array_keys($crosstabs['options2']);
+ $val2 = $keys2[$var2];
+
+ $keys3 = array_keys($crosstabs['options3']);
+ $val3 = $keys3[$cnt3];
+
+ $crosstab = (isset($crosstabs['crosstab'][$val1][$val2][$val3])) ? $crosstabs['crosstab'][$val1][$val2][$val3] : 0;
+ $percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
+ $avg = (isset($crosstabs['avg'][$val1][$val2][$val3])) ? $crosstabs['avg'][$val1][$val2][$val3] : 0;
+ $delez = (isset($crosstabs['delez'][$val1][$val2][$val3])) ? $crosstabs['delez'][$val1][$val2][$val3] : 0;
+
+ //$this->displayDataCell($crosstab, $percent, $avg, $delez);
+ $celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt3);
+
+ if($this->tableSettingsNumerus){
+ $superCelicaNum[] = $celica['numerus'][$cnt3];
+ //echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
+ }
+
+ if($this->tableSettingsPercent){
+ $superCelicaPer[] = $celica['percent'][$cnt3];
+ }
+
+ if($this->tableSettingsAvgVar){
+ $superCelicaAvg[] = $celica['avg'][$cnt3];
+ }
+
+ if($this->tableSettingsDelezVar){
+ $superCelicaDelez[] = $celica['delez'][$cnt3];
+ }
+
+ }
+
+ $cnt3++;
+ }
+ }
+ }
+ }
+
+ if($this->tableSettingsNumerus){
+ $superCelica['numerus'][] = $superCelicaNum;
+ }
+
+ if($this->tableSettingsPercent){
+ $superCelica['percent'][] = $superCelicaPer;
+ }
+
+ if($this->tableSettingsAvgVar){
+ $superCelica['avg'][] = $superCelicaAvg;
+ }
+
+ if($this->tableSettingsDelezVar){
+ $superCelica['delez'][] = $superCelicaDelez;
+ }
+
+ return $superCelica;
+ }
+
+ // Izpis celic v vrstici s sumami ($orientation 0->vrstica, 1->stolpec, 2->skupaj)
+ function displaySumsCell($spr1=null, $spr2=null, $val=null, $orientation=null){
+ $celicaSums = array();
+
+ //echo "Orientacija skupaj: ".$orientation."</br>";
+/* $startX = $this->pdf->getX();
+ $startY = $this->pdf->getY(); */
+
+ // Nastavimo visino posamezne vrstice
+/* $cellSpan = 0;
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1)
+ $cellSpan++;
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1)
+ $cellSpan++;
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] != '')
+ $cellSpan++;
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] != '')
+ $cellSpan++;
+ $cellSpan = ($cellSpan > 0) ? $cellSpan : 1;
+ $lineHeight = $this->cellHeight / $cellSpan; */
+
+ // Nastavimo barvo texta
+/* $this->pdf->SetTextColor(160, 0, 0);
+ $this->pdf->setFont('','B','6'); */
+
+ $crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
+
+ // Celica s skupno sumo
+ if($orientation == 2){
+
+ // Numerus
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
+ $celicaSums['numerus'] = $crosstabs['sumaSkupna'];
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $crosstabs['sumaSkupna'], 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+
+ // Procenti
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
+ //$celicaSums['percent'] = $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ $celicaSums['percent'] = $this->encodeText($this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+
+ // Povprecje
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0){
+
+ // Loop cez vse in izracunamo povprecje z ustreznimi utezmi
+ $avg = 0;
+ if($crosstabs['crosstab']){
+ $tempAvg = 0;
+ foreach($crosstabs['crosstab'] as $key1 => $row){
+ foreach($row as $key2 => $count){
+ $tempAvg += $count * $crosstabs['avg'][$key1][$key2];
+ }
+ }
+ $avg = $tempAvg / $crosstabs['sumaSkupna'];
+ }
+ $celicaSums['avg'] = $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'));
+/* $this->pdf->SetFillColor(220, 220, 255);
+ $this->pdf->SetTextColor(0, 0, 230);
+ $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE')), 1, 'C', 1, 0, 0 ,0, true);
+ $this->pdf->SetFillColor(250, 250, 250);
+ $this->pdf->SetTextColor(0, 0, 0);
+
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+
+ // Delez
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
+
+ // Loop cez vrstico in izracunamo skupen delez
+ $delez = 0;
+ if($crosstabs['delez']){
+ foreach($crosstabs['delez'] as $row){
+ foreach($row as $tempDelez){
+ $delez += $tempDelez;
+ }
+ }
+ }
+ //$celicaSums['delez'] = $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ $celicaSums['delez'] = $this->encodeText($this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+/* $this->pdf->SetFillColor(255, 220, 220);
+ $this->pdf->SetTextColor(230, 0, 0);
+ $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 1, 0, 0 ,0, true);
+ $this->pdf->SetFillColor(250, 250, 250);
+ $this->pdf->SetTextColor(0, 0, 0);
+
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+ }
+ // Suma na koncu vrstice
+ elseif($orientation == 0){
+
+ // Izpisemo podatek
+ if($crosstabs['sumaVrstica'][$val]){
+
+ // Numerus
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $crosstabs['sumaVrstica'][$val], 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ $celicaSums['numerus'] = $crosstabs['sumaVrstica'][$val];
+ }
+ // Procenti
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ //$celicaSums['percent'] = $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ $celicaSums['percent'] = $this->encodeText($this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+ }
+ }
+ else{
+
+ // Numerus
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
+ $celicaSums['numerus'] = '0';
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, '0', 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+ // Procenti
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
+ //$celicaSums['percent'] = $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ $celicaSums['percent'] = $this->encodeText($this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+ }
+
+ // Povprecje
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0){
+
+ // Loop cez vrstico in izracunamo povprecje z ustreznimi utezmi
+ $avg = 0;
+ if($crosstabs['crosstab'][$val]){
+ $tempAvg = 0;
+ foreach($crosstabs['crosstab'][$val] as $key => $count){
+ $tempAvg += $count * $crosstabs['avg'][$val][$key];
+ }
+ $avg = $tempAvg / $crosstabs['sumaVrstica'][$val];
+ }
+
+ $celicaSums['avg'] = $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'));
+
+/* $this->pdf->SetFillColor(220, 220, 255);
+ $this->pdf->SetTextColor(0, 0, 230);
+ $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE')), 1, 'C', 1, 0, 0 ,0, true);
+ $this->pdf->SetFillColor(250, 250, 250);
+ $this->pdf->SetTextColor(0, 0, 0);
+
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+
+ // Delez
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
+
+ // Loop cez vrstico in izracunamo skupen delez
+ $delez = 0;
+ if($crosstabs['delez'][$val]){
+ foreach($crosstabs['delez'][$val] as $tempDelez){
+ $delez += $tempDelez;
+ }
+ }
+
+ //$celicaSums['delez'] = $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ $celicaSums['delez'] = $this->encodeText($this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+
+/* $this->pdf->SetFillColor(255, 220, 220);
+ $this->pdf->SetTextColor(230, 0, 0);
+ $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 1, 0, 0 ,0, true);
+ $this->pdf->SetFillColor(250, 250, 250);
+ $this->pdf->SetTextColor(0, 0, 0);
+
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+ }
+ // Suma za stolpce
+ else{
+ // Izpisemo podatek
+ if(isset($crosstabs['sumaStolpec'][$val])){
+
+ // Numerus
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
+ $celicaSums['numerus'] = $crosstabs['sumaStolpec'][$val];
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $crosstabs['sumaStolpec'][$val], 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+ // Procenti
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
+ //$celicaSums['percent'] = $this->formatNumber($this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaSkupna'], $crosstabs['sumaStolpec'][$val]), SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ $celicaSums['percent'] = $this->encodeText($this->formatNumber($this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaSkupna'], $crosstabs['sumaStolpec'][$val]), SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaSkupna'], $crosstabs['sumaStolpec'][$val]), SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+ }
+ else{
+
+ // Numerus
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
+ $celicaSums['numerus'] = '0';
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, '0', 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+ // Procenti
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
+ //$celicaSums['percent'] = $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ $celicaSums['percent'] = $this->encodeText($this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+ }
+
+ // Povprecje
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0){
+
+ // Loop cez vrstico in izracunamo povprecje z ustreznimi utezmi
+ $avg = 0;
+ if($crosstabs['crosstab']){
+ $tempAvg = 0;
+ foreach($crosstabs['crosstab'] as $key => $row){
+ if($row[$val] > 0)
+ $tempAvg += $row[$val] * $crosstabs['avg'][$key][$val];
+ }
+ $avg = $tempAvg / $crosstabs['sumaStolpec'][$val];
+ }
+ $celicaSums['avg'] = $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'));
+
+/* $this->pdf->SetFillColor(220, 220, 255);
+ $this->pdf->SetTextColor(0, 0, 230);
+ $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE')), 1, 'C', 1, 0, 0 ,0, true);
+ $this->pdf->SetFillColor(250, 250, 250);
+ $this->pdf->SetTextColor(0, 0, 0);
+
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+
+ // Delez
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
+
+ // Loop cez vrstico in izracunamo skupen delez
+ $delez = 0;
+ if($crosstabs['delez']){
+ foreach($crosstabs['delez'] as $tempDelez){
+ $delez += $tempDelez[$val];
+ }
+ }
+ //$celicaSums['delez'] = $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ $celicaSums['delez'] = $this->encodeText($this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+/* $this->pdf->SetFillColor(255, 220, 220);
+ $this->pdf->SetTextColor(230, 0, 0);
+ $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 1, 0, 0 ,0, true);
+ $this->pdf->SetFillColor(250, 250, 250);
+ $this->pdf->SetTextColor(0, 0, 0);
+
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+ }
+
+/* $this->pdf->SetTextColor(0, 0, 0);
+ $this->pdf->setFont('','','6');
+ $this->pdf->setXY($startX + $this->cellWidth, $startY); */
+
+ return $celicaSums;
+ }
+
+ // Izpis celice z vrednostmi
+ //function displayDataCell($crosstab, $percent, $avg, $delez){
+ function displayDataCell($crosstab=null, $percent=null, $avg=null, $delez=null, $cnt=null){
+
+ //$podatekCelice = '';
+ $podatekCelice = array();
+ //$startX = $this->pdf->getX();
+ //$startY = $this->pdf->getY();
+
+ $lineHeight = ($this->cellSpan > 1) ? 5 : 6;
+
+ if($crosstab > 0){
+
+ // Numerus
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $crosstab, 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ //$podatekCelice = $crosstab;
+ $podatekCelice['numerus'][$cnt] = $crosstab;
+ //echo "Crosstab ce crosstab > 0: ".$crosstab."</br>";
+ }
+ // Procenti
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($percent, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ //$podatekCelice = $this->formatNumber($percent, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ //$podatekCelice['percent'][$cnt] = $this->formatNumber($percent, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ $podatekCelice['percent'][$cnt] = $this->encodeText($this->formatNumber($percent, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+ //echo "Procenti ce crosstab > 0: ".$podatekCelice."</br>";
+ }
+ }
+ else{
+ // Numerus
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, '0', 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ $podatekCelice['numerus'][$cnt] = '0';
+ }
+ // Procenti
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
+/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ //$podatekCelice = $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ //$podatekCelice['percent'][$cnt] = $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ $podatekCelice['percent'][$cnt] = $this->encodeText($this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+ }
+ }
+
+ // Povprecje
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0){
+ //$podatekCelice = $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'));
+ //echo "Povprecje: ".$podatekCelice."</br>";
+ $podatekCelice['avg'][$cnt] = $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'));
+/* $this->pdf->SetFillColor(220, 220, 255);
+ $this->pdf->SetTextColor(0, 0, 230);
+ $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE')), 1, 'C', 1, 0, 0 ,0, true);
+ $this->pdf->SetFillColor(250, 250, 250);
+ $this->pdf->SetTextColor(0, 0, 0);
+
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+
+ // Delez
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
+ //$podatekCelice = $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
+ //echo "Delez: ".$podatekCelice."</br>";
+ $podatekCelice['delez'][$cnt] = $this->encodeText($this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
+/* $this->pdf->SetFillColor(255, 220, 220);
+ $this->pdf->SetTextColor(230, 0, 0);
+ $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 1, 0, 0 ,0, true);
+ $this->pdf->SetFillColor(250, 250, 250);
+ $this->pdf->SetTextColor(0, 0, 0);
+
+ $this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
+ }
+
+ //$this->pdf->setXY($startX + $this->cellWidth, $startY);
+ return $podatekCelice;
+ }
+
+ // Izris legende na dnu
+ function displayLegend($export_format){
+ global $lang;
+ $legend = '';
+
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0 || $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
+ //za zacetek sredinske poravnave
+
+ $legend .= ' \begin{center} ';
+
+ if($export_format == 'rtf'){ //ce je rtf dodaj tole besedilo, ker drugace prva od izpisanih zadev v legendi ni sredinsko poravnana
+ $legend .= $lang['srv_analiza_legenda'].': \\\\';
+ }
+
+
+ // Povprecje
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0){
+ $text = $lang['srv_multicrosstabs_avg'].': ';
+ if($export_format == 'pdf'){
+ $color = 'crta';
+ }else{ //ce je rtf
+ $color = 'cyan'; //v rtf pride modra
+ }
+
+
+ $legend .= $this->coloredTextLatex($color, $text);
+
+ $legend .= $this->multiCrosstabClass->variablesList[$this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar']]['variable'];
+ $legend .= $this->texNewLine;
+ }
+
+ // Delez
+ if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
+ $text = $lang['srv_multicrosstabs_delez'].': ';
+
+ if($export_format == 'pdf'){
+ $color = 'crtaGraf';
+ }else{ //ce je rtf
+ $color = 'yellow'; //v rtf pride rdece
+ }
+
+ $legend .= $this->coloredTextLatex($color, $text);
+
+ $delez = unserialize($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delez']);
+ $string = '';
+ $cnt = 1;
+ foreach($delez as $val){
+ if($val == 1)
+ $string .= $cnt.', ';
+ $cnt++;
+ }
+ $string = $this->multiCrosstabClass->variablesList[$this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar']]['variable'].' ('.substr($string, 0, -2).')';
+
+ $legend .= $string;
+ $legend .= $this->texNewLine;
+ }
+
+ //za konec sredinske poravnave
+ $legend .= ' \end{center} ';
+
+ }
+
+ return $legend;
+ }
+
+
+ function formatNumber($value=null, $digit=0, $sufix=""){
+
+ if ($value <> 0 && $value != null)
+ $result = round($value, $digit);
+ else
+ $result = "0";
+
+ # polovimo decimalna mesta in vejice za tisočice
+ $decimal_point = SurveyDataSettingProfiles :: getSetting('decimal_point');
+ $thousands = SurveyDataSettingProfiles :: getSetting('thousands');
+
+ $result = number_format($result, $digit, $decimal_point, $thousands) . $sufix;
+
+ return $result;
+ }
+
+/* function encodeText($text){
+ // popravimo sumnike ce je potrebno
+ $text = html_entity_decode($text, ENT_NOQUOTES, 'UTF-8');
+ $text = str_replace(array("&scaron;","&#353;","&#269;"),array("š","š","č"),$text);
+
+ return strip_tags($text);
+ } */
+
+ /*Skrajsa tekst in doda '...' na koncu*/
+ function snippet($text='', $length=64, $tail="..."){
+ $length=SNIPPET_LENGTH;
+
+ $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 drawLine(){
+
+ $cy = $this->pdf->getY();
+ $this->pdf->Line(15, $cy , 195, $cy , $this->currentStyle);
+ }
+
+ function getCellHeight($string='', $width=null){
+
+ $this->pdf->startTransaction();
+ // get the number of lines calling you method
+ $linecount = $this->pdf->MultiCell($width, 0, $string, 0, 'L', 0, 0, '', '', true, 0, false, true, 0);
+ // restore previous object
+ $this->pdf = $this->pdf->rollbackTransaction();
+
+ $height = ($linecount <= 1) ? 4.7 : $linecount * ($this->pdf->getFontSize() * $this->pdf->getCellHeightRatio()) + 2;
+
+ return $height;
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/admin/survey/export/latexclasses/Analize/AnalizaSums.php b/admin/survey/export/latexclasses/Analize/AnalizaSums.php
new file mode 100644
index 0000000..ca37139
--- /dev/null
+++ b/admin/survey/export/latexclasses/Analize/AnalizaSums.php
@@ -0,0 +1,2984 @@
+<?php
+
+ global $site_path;
+
+ include_once('../../function.php');
+ include_once('../survey/definition.php');
+/* include_once('../exportclases/class.pdfIzvozAnalizaFrekvenca.php');
+ include_once('../exportclases/class.pdfIzvozAnalizaFunctions.php');
+ require_once('../exportclases/class.enka.pdf.php'); */
+
+ define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
+ define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
+
+ define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
+ define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
+
+ define("M_ANALIZA_DESCRIPTOR", "descriptor");
+ define("M_ANALIZA_FREQUENCY", "frequency");
+
+ define("FNT_FREESERIF", "freeserif");
+ define("FNT_FREESANS", "freesans");
+ define("FNT_HELVETICA", "helvetica");
+
+ define("FNT_MAIN_TEXT", FNT_FREESANS);
+ define("FNT_QUESTION_TEXT", FNT_FREESANS);
+ define("FNT_HEADER_TEXT", FNT_FREESANS);
+
+ define("FNT_MAIN_SIZE", 10);
+ define("FNT_QUESTION_SIZE", 9);
+ define("FNT_HEADER_SIZE", 10);
+
+ define("RADIO_BTN_SIZE", 3);
+ define("CHCK_BTN_SIZE", 3);
+ define("LINE_BREAK", 6);
+
+ define ('PDF_MARGIN_HEADER', 8);
+ define ('PDF_MARGIN_FOOTER', 12);
+ define ('PDF_MARGIN_TOP', 18);
+ define ('PDF_MARGIN_BOTTOM', 18);
+ define ('PDF_MARGIN_LEFT', 15);
+ define ('PDF_MARGIN_RIGHT', 15);
+
+ define ('MEJA_DOLZINA_VPRASANJA', 132);
+
+/**
+ * @desc Class za generacijo latex
+ */
+
+class AnalizaSums extends LatexAnalysisElement{
+
+ var $anketa; // trenutna anketa (array)
+ var $spremenljivka; // trenutna spremenljivka
+
+ private $headFileName = null; # pot do header fajla
+ private $dataFileName = null; # pot do data fajla
+ private $dataFileStatus = null; # status data datoteke
+ private $CID = null; # class za inkrementalno dodajanje fajlov
+
+ var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+ var $pdf;
+ protected $tex;
+ var $currentStyle;
+
+ var $current_loop = 'undefined';
+
+ static public $_FILTRED_OTHER = array(); # filter za polja drugo
+
+ protected $texNewLine = '\\\\ ';
+ protected $export_format;
+ protected $horizontalLineTex = "\\hline ";
+ protected $show_valid_percent;
+ protected $texBigSkip = '\bigskip';
+ protected $spaceBetweenTables = ' \newline \vspace*{1 cm} \newline';
+
+ /**
+ * @desc konstruktor
+ */
+ function __construct ($anketa = null, $sprID = null, $loop = null)
+ {
+ global $site_path;
+ global $global_user_id;
+
+ // preverimo ali imamo stevilko ankete
+ //if ( is_numeric($anketa) )
+ if ( is_numeric($anketa['id']) )
+ {
+ //$this->anketa['id'] = $anketa;
+ //$this->anketa['id'] = $anketa['id'];
+ $this->anketa = $anketa;
+ $this->spremenljivka = $sprID;
+
+ SurveyAnalysis::$setUpJSAnaliza = false;
+
+
+ //SurveyZankaProfiles :: Init($this->anketa['id'], $global_user_id);
+ $this->current_loop = ($loop != null) ? $loop : $this->current_loop;
+
+ //$hideAllSystem = SurveyDataSettingProfiles :: getSetting('hideAllSystem');
+ /* $hideAllSystem = SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT');
+ echo "hideAllSystem: ".$hideAllSystem."</br>"; */
+ //SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT')
+ }
+ else
+ {
+ $this->pi['msg'] = "Anketa ni izbrana!";
+ $this->pi['canCreate'] = false;
+ return 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');
+ }
+
+
+ function displayTableLatex($headFileName='', $spremenljivka=null, $spid=null, $export_format='', $hideEmpty=null){
+ global $site_path;
+ global $lang;
+ global $global_user_id;
+ //echo "Spr tip v Sums: ".$spremenljivka['tip']."</br>";
+ $export_format = $export_format;
+ $this->hideEmpty = $hideEmpty;
+ $tabela = '';
+
+ $this->headFileName = $headFileName;
+
+ #preberemo HEADERS iz datoteke
+ //SurveyAnalysis::$_HEADERS = unserialize(file_get_contents($this->headFileName));
+
+ # polovimo frekvence
+ //dump(SurveyAnalysis::getFrequencys());
+ //die();
+
+ #odstranimo sistemske variable
+ //SurveyAnalysis::removeSystemVariables();
+
+ ###
+ //SurveyMissingProfiles :: Init($spremenljivka['id'], $global_user_id);
+
+
+ ####
+
+ //$vars_count = count(SurveyAnalysis::$_FILTRED_VARIABLES);
+ //$line_break = '';
+
+ //echo "Spr tip v Sums: ".$spremenljivka['tip']."</br>";
+ switch ($spremenljivka['tip']) {
+ case 1:
+ # radio - prikaže navpično
+ $tabela .= self::sumVertical($spid,'sums', $export_format);
+ break;
+
+ case 2:
+ #checkbox če je dihotomna:
+ $tabela .= self::sumVerticalCheckbox($spid,'sums', $export_format);
+ break;
+
+ case 3:
+ # dropdown - prikjaže navpično
+ $tabela .= self::sumVertical($spid,'sums', $export_format);
+ break;
+
+ case 6:
+ # multigrid
+ $tabela .= self::sumHorizontal($spid,'sums', $export_format);
+ break;
+
+ case 16:
+ #multicheckbox če je dihotomna:
+ $tabela .= self::sumMultiHorizontalCheckbox($spid, 'sums', $export_format);
+ break;
+
+ case 17:
+ #razvrščanje ce je ordinalna
+ $tabela .= self::sumHorizontal($spid,'sums', $export_format);
+ break;
+
+ case 4: # text
+ case 8: # datum
+ $tabela .= self::sumTextVertical($spid,'sums', $export_format);
+ break;
+
+ case 21: # besedilo*
+ # varabla tipa »besedilo« je v sumarniku IDENTIČNA kot v FREKVENCAH.
+ if ($spremenljivka['cnt_all'] == 1) {
+ // če je enodimenzionalna prikažemo kot frekvence
+ // predvsem zaradi vprašanj tipa: language, email...
+ $tabela .= self::sumTextVertical($spid,'sums', $export_format);
+ } else {
+ $tabela .= self::sumMultiText($spid,'sums', $export_format);
+ }
+ break;
+
+ case 4: # besedilo*
+ # varabla tipa »besedilo« je v sumarniku IDENTIČNA kot v FREKVENCAH.
+ if ($spremenljivka['cnt_all'] == 1) {
+ // če je enodimenzionalna prikažemo kot frekvence
+ // predvsem zaradi vprašanj tipa: language, email...
+ $tabela .= self::sumTextVertical($spid,'sums', $export_format);
+ } else {
+ $tabela .= self::sumMultiText($spid,'sums', $export_format);
+ }
+ break;
+
+ case 19: # multitext
+ $tabela .= self::sumMultiText($spid,'sums', $export_format);
+ break;
+
+ case 7:
+ case 18:
+ case 22:
+ # variabla tipa »število« je v sumarniku identična kot v DESCRIPTIVES.
+ $tabela .= self::sumNumberVertical($spid,'sums', $export_format);
+ break;
+
+ case 20:
+ # variabla tipa »število« je v sumarniku identična kot v DESCRIPTIVES.
+ $tabela .= self::sumMultiNumber($spid,'sums', $export_format);
+ break;
+
+ case 5:
+ # nagovor
+ $tabela .= self::sumNagovor($spid,'sums', $export_format);
+ break;
+
+ case 26: # lokacija
+ $tabela .= self::sumLokacija($spid,'sums', $export_format);
+ break;
+
+ case 27: # heatmap
+ $tabela .= self::sumHeatmap($spid, 'sums', $export_format);
+ break;
+ }
+ //echo "</br> Tex celotne tabele: ".$tabela."</br>";
+ return $tabela;
+ }
+
+ /** Izriše sumarnik v vertikalni obliki z Latex
+ *
+ * @param unknown_type $spid
+ */
+ function sumVertical($spid=null,$_from=null, $export_format='') {
+ //echo "sumVertical </br>";
+ global $lang;
+
+ $tex = '';
+
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+ # dodamo opcijo kje izrisujemo legendo
+ $inline_legenda = false;
+ //$options=array('inline_legenda' => $inline_legenda, 'isTextAnswer' => false, 'isOtherAnswer' => false);
+ $options=array('inline_legenda' => $inline_legenda, 'isTextAnswer' => false, 'isOtherAnswer' => false, 'exportFormat' => $export_format);
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 6;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|');
+ }
+
+ }
+ //Priprava parametrov za tabelo - konec
+
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /*Naslovni vrstici tabele*/
+ //prva vrstica tabele
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+ //echo $dolzinaVprasanja."</br>";
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{5}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{5}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{5}{>{\hsize=\dimexpr 6\hsize+\arrayrulewidth}X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //druga vrstica tabele z naslovi stolpcev
+ $tex .= $this->tableHeader($export_format);
+
+ //$this->pdf->setFont('','','6');
+
+ /*Naslovni vrstici tabele - konec*/
+
+ $show_valid_percent = (SurveyAnalysis::$_HEADERS[$spid]['show_valid_percent'] == true) ? 1 : 0;
+ $this->show_valid_percent = $show_valid_percent;
+
+ $_answersOther = array();
+ $sum_xi_fi=0;
+ $N = 0;
+
+ $_tmp_for_div = array();
+ # izpis veljavnih odgovorov
+ if (count($spremenljivka['grids']) > 0){
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ // dodamo dodatne vrstice z labelami grida
+ if (count($grid['variables']) > 0 )
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ if ($variable['text'] != true && $variable['other'] != true) {
+
+
+ $maxAnswer = (SurveyDataSettingProfiles :: getSetting('numOpenAnswers') > 0) ? SurveyDataSettingProfiles :: getSetting('numOpenAnswers') : 30;
+ //echo "tukaj: $maxAnswer </br>";
+ $counter = 0;
+ $_kumulativa = 0;
+
+ if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'])> 0 ) {
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'] AS $vkey => $vAnswer) {
+ if (/*$vAnswer['cnt'] > 0 &&*/ $counter < $maxAnswer) { # izpisujemo samo tiste ki nisno 0
+ // za povprečje
+ $xi = $vkey;
+ $fi = $vAnswer['cnt'];
+
+ $sum_xi_fi += $xi * $fi ;
+ $N += $fi;
+
+ if ($vAnswer['cnt'] > 0 || true) { // izpisujemo samo tiste ki nisno 0
+ //$counter = self::outputValidAnswerVertical($counter,$vkey,$vAnswer,$_sequence,$spid,$_kumulativa,$options);
+ $tex .= self::outputValidAnswerVertical($counter,$vkey,$vAnswer,$_sequence,$spid,$_kumulativa,$options);
+ }
+
+ // za poznejše računannje odklona
+ $_tmp_for_div[] = array('xi'=>$xi, 'fi'=>$fi, 'sequence'=>$_sequence);
+ }
+ $counter++;
+ //echo "stevec: $counter </br>";
+ }
+ // izpišemo sumo veljavnih
+ //$counter = self::outputSumaValidAnswerVertical($counter,$_sequence,$spid,$options);
+ $tex .= self::outputSumaValidAnswerVertical($counter,$_sequence,$spid,$options);
+ //echo "tex testni: ".$tex."</br>";
+ }
+ if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalid'])> 0 ) {
+ $_Z_MV = !$this->hideEmpty;
+ if($_Z_MV){ //ce je potrebno izpisati tudi manjkajoce
+ $tex .= $this->encodeText($lang['srv_anl_missing1']);
+ }
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalid'] AS $ikey => $iAnswer) {
+ //echo "iAnswer cnt: ".$iAnswer['cnt']."</br>";
+ if ($iAnswer['cnt'] > 0 ) { // izpisujemo samo tiste ki niso 0
+ //$counter = self::outputInvalidAnswerVertical($counter,$ikey,$iAnswer,$_sequence,$spid,$options);
+ $tex .= self::outputInvalidAnswerVertical($counter,$ikey,$iAnswer,$_sequence,$spid,$options);
+ //echo "Invalid: ".$tex."</br>";
+ $counter++;
+ //echo "stevec: $counter </br>";
+ }
+ }
+ // izpišemo sumo veljavnih
+ //$counter = self::outputSumaInvalidAnswerVertical($counter,$_sequence,$spid,$options);
+ $tex .= self::outputSumaInvalidAnswerVertical($counter,$_sequence,$spid,$options);
+ }
+ //izpišemo še skupno sumo
+ //$counter = self::outputSumaVertical($counter,$_sequence,$spid,$options);
+ $tex .= self::outputSumaVertical($counter,$_sequence,$spid,$options);
+ } else {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+ }
+ }
+ //echo "koda: $tex </br>";
+ }
+
+ //zaljucek latex tabele z obrobo za prvo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za prvo tabelo - konec
+
+ /* odklon */
+ $avg = ($N > 0) ? $sum_xi_fi / $N : 0;
+
+ /* standardna diviacija */
+ $div = 0;
+ $sum_pow_xi_fi_avg = 0;
+ foreach ( $_tmp_for_div as $tkey => $_tmp_div_data) {
+ $xi = $_tmp_div_data['xi'];
+ $fi = $_tmp_div_data['fi'];
+
+ $sum_pow_xi_fi_avg += pow(($xi - $avg),2) * $fi;
+ }
+ $div = (($N -1) > 0) ? sqrt($sum_pow_xi_fi_avg / ($N -1)) : 0;
+
+
+ /* izpis st. odklona in povprecja */
+ if ($show_valid_percent == 1 && SurveyAnalysis::$_HEADERS[$spid]['skala'] != 1) {
+ $brezHline = 1;
+ //zacetek latex tabele za drugo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ //zacetek latex tabele za drugo tabelo - konec
+
+ $text = array();
+
+ //$text[] = '';
+ //$text[] = '';
+
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_povprecje1']);
+ $text[] = $this->encodeText(self::formatNumber($avg,NUM_DIGIT_AVERAGE,''));
+
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_odklon']);
+
+ $text[] = $this->encodeText(self::formatNumber($div,NUM_DIGIT_AVERAGE,''));
+
+
+ if($export_format == 'pdf'){
+ $tex .= "\\cline{3-6}"; //horizontalna vrstica od 3 do 6 celice
+ $tex .= "\multicolumn{1}{b}{} & \multicolumn{1}{B|}{} & ";
+ $tex .= $this->tableRow($text, $brezHline)." ";
+ $tex .= "\\cline{3-6}"; //horizontalna vrstica od 3 do 6 celice
+ }elseif($export_format == 'xls'){
+ $brezHline = 1;
+ $tex .= "\\multicolumn{1}{l}{} & \\multicolumn{1}{l|}{} & ";
+ $tex .= $this->tableRow($text, $brezHline)." ";
+ }else{
+ $tex .= "\\cline{3-6}"; //horizontalna vrstica od 3 do 6 celice
+ $tex .= "\\multicolumn{1}{l}{} & \\multicolumn{1}{l|}{} & ";
+ $tex .= $this->tableRow($text, $brezHline)." ";
+ $tex .= "\\cline{3-6}"; //horizontalna vrstica od 3 do 6 celice
+ }
+
+ //zaljucek latex tabele z obrobo za drugo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za drugo tabelo - konec
+
+ }
+
+ /* izpis tekstovnih odgovorov za polja drugo */
+ //echo "štev drugih odgovorov: ".count($_answersOther)."</br>";
+ if (count($_answersOther) > 0 && SurveyAnalysis::$_FILTRED_OTHER) {
+ foreach ($_answersOther AS $oAnswers) {
+ $tex .= self::outputOtherAnswers($oAnswers, $parameterTabular, $export_format);
+ }
+ }
+
+
+ //echo "Latex tabele: ".$tex."</br>";
+ return $tex;
+ }
+
+
+ /*Izpis sumarnika za check box z Latex*/
+ function sumVerticalCheckbox($spid=null,$_from=null, $export_format='') {
+ //echo "sumVerticalCheckbox </br>";
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+ $_answersOther = array();
+
+ //TODO: Koda se nikjer ne uporablja
+ //$inline_legenda = count ($spremenljivka['grids']) > 1;
+ //if ($variable['other'] != '1' && $variable['text'] != '1') {
+ // $_tip = SurveyAnalysis::getSpremenljivkaLegenda($spremenljivka,'izrazanje');
+ // $_oblika = SurveyAnalysis::getSpremenljivkaLegenda($spremenljivka,'skala');
+ //} else {
+ // $_tip = $lang['srv_analiza_vrsta_bese'];
+ // $_oblika = $lang['srv_analiza_oblika_nomi'];
+ //}
+
+ /* ugotovimo koliko imamo kolon*/
+ if (count($spremenljivka['grids']) > 0)
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ $_clmn_cnt[$gid] = $grid['cnt_vars']-$grid['cnt_other'];
+ if (count ($grid['variables']) > 0)
+ foreach ($grid['variables'] AS $vid => $variable) {
+ $_sequence = $variable['sequence'];
+ $_valid_cnt[$gid] = max($_valid_cnt[$gid], SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt']);
+ $_approp_cnt[$gid] = max($_approp_cnt[$gid], SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt']);
+ if ($variable['other'] == true) {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+ $_valid[$gid][$vid] = SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'];
+ $_navedbe[$gid] += SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt'];
+ }
+ }
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 9;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ //prva vrstica
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{8}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+ else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{8}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //druga vrstica
+ $tex .= " & ".$this->encodeText($lang['srv_analiza_opisne_subquestion1'])." & \multicolumn{5}{c|}{".$this->encodeText($lang['srv_analiza_opisne_units'])."} & \multicolumn{2}{c|}{".$this->encodeText($lang['srv_analiza_opisne_arguments'])."} ".$this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //tretja vrstica
+ $text = array();
+ $text[] = '';
+ $text[] = '';
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_frequency']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_valid']);
+ $text[] = $this->encodeText('% - '.$lang['srv_analiza_opisne_valid']);
+ $text[] = $this->encodeText($lang['srv_analiza_num_units_valid']);
+ $text[] = $this->encodeText('% - '.$lang['srv_analiza_num_units_valid']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_frequency']);
+ $text[] = $this->encodeText('%');
+
+ $brezHline = $this->getBrezHline($export_format);
+ //echo "notnot: $brezHline </br>";
+
+ $tex .= $this->tableRow($text, $brezHline); //izpis tretje vrstice
+ //konec naslovnih vrstic
+
+ $_max_valid = 0;
+ $_max_appropriate = 0;
+ if (count ($spremenljivka['grids']) > 0)
+ foreach ($spremenljivka['grids'] as $gid => $grid) {
+ if (count ($grid['variables']) > 0)
+ foreach ($grid['variables'] AS $vid => $variable) {
+ if ($variable['other'] != 1) {
+ $_sequence = $variable['sequence'];
+ $cssBack = "anl_bck_desc_2 ".($vid == 0 && $gid != 0 ? 'anl_double_bt ' : '');
+
+ $text = array();
+
+ $text[] = $this->encodeText($variable['variable']);
+ $text[] = $this->encodeText($variable['naslov']);
+
+ // Frekvence
+ $text[] = $this->encodeText((int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt']);
+
+ // Veljavni
+ $text[] = $this->encodeText((int)(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt']+(int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['0']['cnt']));
+
+ // Procent - veljavni
+ $_percent = (SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt'] > 0 ) ? 100*SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt'] / SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt'] : 0;
+
+ $text[] = $this->encodeText(self::formatNumber($_percent,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'),'%'));
+
+ $_max_appropriate = max($_max_appropriate, (int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt']);
+ $_max_valid = max ($_max_valid, ((int)(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt']+(int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['0']['cnt'])));
+
+ // Ustrezni
+ $text[] = $this->encodeText((int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt']);
+ // % Ustrezni
+ $valid = (int)(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt']+(int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['0']['cnt']);
+ $valid = (int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt'];
+ $_percent = ($_max_appropriate > 0 ) ? 100*$valid / $_max_appropriate : 0;
+
+ $text[] = $this->encodeText(self::formatNumber($_percent,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'),'%'));
+
+
+ $text[] = $this->encodeText(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt']);
+
+ $_percent = ($_navedbe[$gid] > 0 ) ? 100*SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt'] / $_navedbe[$gid] : 0;
+
+ $text[] = $this->encodeText(self::formatNumber($_percent,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'),'%'));
+
+ $tex .= $this->tableRow($text, $brezHline); //izpis vrstic z odgovori
+ } else {
+ # drugo
+ }
+ }
+
+ $text = array();
+
+ $text[] = '';
+
+ $text[] = $this->encodeText($lang['srv_anl_suma_valid']);
+
+ $text[] = '';
+
+ $text[] = $this->encodeText($_max_valid);
+ $text[] = '';
+
+ $text[] = $this->encodeText($_max_appropriate);
+ $text[] = '';
+
+ $text[] = $this->encodeText($_navedbe[$gid]);
+
+ $text[] = $this->encodeText(self::formatNumber('100',SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'),'%'));
+
+ $tex .= $this->tableRow($text, $brezHline); //izpis vrstice SKUPAJ
+
+ }
+
+ //zaljucek latex tabele z obrobo za prvo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za prvo tabelo - konec
+
+ # izpišemo še tekstovne odgovore za polja drugo
+ if (count($_answersOther) > 0 && SurveyAnalysis::$_FILTRED_OTHER) {
+ foreach ($_answersOther AS $oAnswers) {
+ $tex .= self::outputOtherAnswers($oAnswers, $parameterTabular, $export_format);
+ }
+ }
+
+ //echo "Latex tabele: ".$tex."</br>";
+ return $tex;
+ }
+
+ /** Izriše nagovor
+ *
+ */
+ function sumNagovor($spid=null, $_from=null, $export_format='') {
+ //echo "sumNagovor</br>";
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+ //$_tip = SurveyAnalysis::getSpremenljivkaLegenda($spremenljivka,'izrazanje');
+ //$_oblika = SurveyAnalysis::getSpremenljivkaLegenda($spremenljivka,'skala');
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 2;
+
+ //$parameterTabular = '';
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($export_format == 'pdf' ? 'b|' : 'l|');
+ $parameterTabular .= ($export_format == 'pdf' ? 's|' : 'c|');
+ }else if($i == 1){
+ $parameterTabular .= ($export_format == 'pdf' ? 'B|' : 'l|');
+ }
+ else{
+ $parameterTabular .= ($export_format == 'pdf' ? 's|' : 'c|');
+ }
+
+ }
+ //Priprava parametrov za tabelo - konec
+
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /*Naslovni vrstici tabele*/
+ //prva vrstica tabele
+ $tex .= $this->encodeText($spremenljivka['variable'])." & ".$this->encodeText($spremenljivka['naslov'])." ".$this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //$this->pdf->setFont('','','6');
+
+ /*Naslovni vrstici tabele - konec*/
+/* $this->pdf->setFont('','b','6');
+
+ $this->pdf->ln(5);
+ $this->pdf->MultiCell(18, 5, $this->encodeText($spremenljivka['variable']), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->MultiCell(162, 5, $this->encodeText($spremenljivka['naslov']), 1, 'L', 0, 1, 0 ,0, true); */
+ //echo "Latex tabele: ".$tex."</br>";
+ return $tex;
+ }
+
+ /** Izriše number odgovore v vertikalni obliki z Latex
+ *
+ * @param unknown_type $spid
+ */
+ function sumNumberVertical($spid=null, $_from=null, $export_format='') {
+ //echo "sumNumberVertical</br>";
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+
+ # dodamo opcijo kje izrisujemo legendo
+ # če je besedilo * in je samo ena kategorija je inline legenda false
+ $inline_legenda = (SurveyAnalysis::$_HEADERS[$spid]['cnt_all'] == 1 || in_array($spremenljivka['tip'],array(1,8) ) ) ? false: true;
+ $options=array('inline_legenda' => $inline_legenda, 'isTextAnswer' => false, 'isOtherAnswer' => false, 'textAnswerExceed' => false);
+
+ # ali izpisujemo enoto:
+ $show_enota = true;
+ if ((int)$spremenljivka['enota'] == 0 && SurveyAnalysis::$_HEADERS[$spid]['cnt_all'] == 1) {
+ $show_enota = false;
+ }
+
+ # ugotovimo koliko imamo kolon
+ if (count($spremenljivka['grids']) > 0)
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ $_clmn_cnt[$gid] = $grid['cnt_vars']-$grid['cnt_other'];
+ if (count($grid['variables']) > 0)
+ foreach ($grid['variables'] AS $vid => $variable) {
+ $_sequence = $variable['sequence'];
+ $_approp_cnt[$gid] = max($_approp_cnt[$gid], SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt']);
+
+ # za povprečje
+ $sum_xi_fi=0;
+ $N = 0;
+ $div=0;
+ $min = null;
+ $max = null;
+ if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']) > 0 ) {
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'] AS $xi => $_validFreq) {
+
+ $fi = $_validFreq['cnt'];
+ $sum_xi_fi += $xi * $fi ;
+ $N += $fi;
+ $min = $min != null ? min($min,$xi) : $xi;
+ $max = max($max,$xi);
+ }
+ }
+
+ #povprečje
+ $avg = ($N > 0) ? $sum_xi_fi / $N : 0;
+ $sum_avg += $avg;
+ SurveyAnalysis::$_FREQUENCYS[$_sequence]['validAvg'] = $avg;
+ SurveyAnalysis::$_FREQUENCYS[$_sequence]['validMin'] = $min;
+ SurveyAnalysis::$_FREQUENCYS[$_sequence]['validMax'] = $max;
+
+ #standardna diviacija
+ $div = 0;
+ $sum_pow_xi_fi_avg = 0;
+ if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']) > 0 ) {
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'] AS $xi => $_validFreq) {
+ $fi = $_validFreq['cnt'];
+ $sum_pow_xi_fi_avg += pow(($xi - $avg),2) * $fi;
+ }
+ }
+ SurveyAnalysis::$_FREQUENCYS[$_sequence]['validDiv'] = (($N -1) > 0) ? sqrt($sum_pow_xi_fi_avg / ($N -1)) : 0;
+
+ #določimo še polja drugo za kasnejši prikaz
+ if ($variable['other'] == true) {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+ }
+ }
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 8;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ //prva vrstica
+ $steviloPodStolpcev1 = $steviloStolpcevParameterTabular - 1;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable']).' & \multicolumn{'.$steviloPodStolpcev1.'}{>{\hsize=\dimexpr '.($steviloPodStolpcev1+1).'\hsize + '.($steviloPodStolpcev1+1).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($spremenljivka['naslov']).'} '.$this->texNewLine;
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+ //echo $dolzinaVprasanja."</br>";
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //druga vrstica
+ $text = array();
+
+ $text[] = '';
+
+ if ($show_enota) {
+ if ($spremenljivka['tip'] == 20 || $spremenljivka['tip'] == 7) {
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_subquestion1']);;
+ } else {
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_variable_text1']);
+ }
+ } else {
+ $text[] = '';
+ }
+
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_m']);
+ $text[] = $this->encodeText($lang['srv_analiza_num_units']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_povprecje1']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_odklon']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_min']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_max']);
+
+ $brezHline = $this->getBrezHline($export_format);
+ $tex .= $this->tableRow($text, $brezHline);
+
+/* $this->pdf->setFont('','','6');
+ //konec naslovnih vrstic */
+
+ $_answersOther = array();
+ $_grupa_cnt = 0;
+ if (count($spremenljivka['grids']) > 0)
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ if (count($spremenljivka['grids']) > 1 && $_grupa_cnt !== 0 && $spremenljivka['tip'] != 6) {
+ $grid['new_grid'] = true;
+ }
+
+ $_grupa_cnt ++;
+ if (count($grid['variables']) > 0) {
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ if ($variable['other'] != true) {
+ $_sequence = $variable['sequence'];
+
+ $text = array();
+
+ if ($spremenljivka['tip'] != 7 ) {
+ $text[] = $this->encodeText($variable['variable']);
+ }
+ else
+ $text[] = '';
+
+ if ($show_enota) {
+ $text[] = $this->encodeText((count($grid['variables']) > 1 && $spremenljivka['tip'] == 20 ? $grid['naslov'] . ' - ' : '' ).$variable['naslov']);
+ } else {
+ $text[] = '';;
+ }
+
+ $text[] = (int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt'];
+ $text[] = (int)$_approp_cnt[$gid];
+
+ $text[] = self::formatNumber(SurveyAnalysis::$_FREQUENCYS[$_sequence]['validAvg'],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+
+ $text[] = self::formatNumber(SurveyAnalysis::$_FREQUENCYS[$_sequence]['validDiv'],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_DEVIATION'),'');
+ $text[] = (int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['validMin'];
+ $text[] = (int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['validMax'];
+
+ $tex .= $this->tableRow($text, $brezHline);
+
+ } else {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+ $grid['new_grid'] = false;
+ }
+
+ }
+ }
+
+ //zaljucek latex tabele z obrobo za prvo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za prvo tabelo - konec
+
+ # izpišemo še tekstovne odgovore za polja drugo
+ if (count($_answersOther) > 0 && SurveyAnalysis::$_FILTRED_OTHER) {
+ foreach ($_answersOther AS $oAnswers) {
+ $tex .= self::outputOtherAnswers($oAnswers, $parameterTabular, $export_format);
+ }
+ }
+
+ //echo "Latex tabele: ".$tex."</br>";
+ return $tex;
+ }
+
+ /** Izriše sumarnik v horizontalni obliki za multigrid z Latex
+ *
+ * @param unknown_type $spid - spremenljivka ID
+ */
+ function sumHorizontal($spid=null,$_from=null, $export_format='') {
+ //echo "sumHorizontal </br>";
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+ $_answersOther = array();
+ $_clmn_cnt = count($spremenljivka['options']);
+
+ # pri razvrščanju dodamo dva polja za povprečje in odklon
+ $additional_field = false;
+ $add_fld = 0;
+
+ if ($spremenljivka['tip'] == 17 || $spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 3 || ($spremenljivka['tip'] == 6 && $spremenljivka['skala'] != 1)) {
+ $additional_field = true;
+ $add_fld = 2;
+ }
+
+ # pri radiu in dropdown ne prikazujemo podvprašanj
+ $_sub_question_col = 1;
+ if ($spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 3) {
+ $_sub_question_col = 0;
+ }
+
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 7 + count($spremenljivka['options']);
+
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($export_format == 'pdf' ? 'b|' : 'l|');
+ $parameterTabular .= ($export_format == 'pdf' ? 's|' : 'c|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|');
+ }else if($i == 1){
+ $parameterTabular .= ($export_format == 'pdf' ? 'B|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }
+ else{
+ $parameterTabular .= ($export_format == 'pdf' ? 's|' : 'c|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|');
+ }
+
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /* prva vrstica */
+ $steviloPodStolpcev1 = $steviloStolpcevParameterTabular - 1;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable']).' & \multicolumn{'.$steviloPodStolpcev1.'}{>{\hsize=\dimexpr '.($steviloPodStolpcev1+1).'\hsize + '.($steviloPodStolpcev1+1).'\tabcolsep + \arrayrulewidth}X|} {'.$this->encodeText($spremenljivka['naslov']).'} '.$this->texNewLine;
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+ //echo $dolzinaVprasanja."</br>";
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+/* $this->pdf->setFont('','b','6');
+ $this->pdf->ln(5);
+ $this->pdf->MultiCell(18, 5, $this->encodeText($spremenljivka['variable']), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->MultiCell(162, 5, $this->encodeText($spremenljivka['naslov']), 1, 'L', 0, 1, 0 ,0, true); */
+ /* prva vrstica - konec */
+
+ /* druga vrstica */
+ $steviloPodStolpcev2 = count($spremenljivka['options']) + 1;
+ $tex .= " & ".$this->encodeText($lang['srv_analiza_opisne_subquestion1'])." & \multicolumn{".$steviloPodStolpcev2."}{c|}{".$this->encodeText($lang['srv_analiza_opisne_answers'])."} ";
+
+/* $this->pdf->MultiCell(18, 5, $this->encodeText(''), 1, 'L', 0, 0, 0 ,0, true);
+ $this->pdf->MultiCell(30, 5, $this->encodeText($lang['srv_analiza_opisne_subquestion']), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->MultiCell(72, 5, $this->encodeText($lang['srv_analiza_opisne_answers']), 1, 'C', 0, 0, 0 ,0, true); */
+
+ $text = array();
+ if ($additional_field){
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_valid']);
+ $text[] = $this->encodeText($lang['srv_analiza_num_units']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_povprecje1']);
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_odklon']);
+ }
+ else{
+ $text[] = $this->encodeText($lang['srv_analiza_opisne_valid']);
+ $text[] = $this->encodeText($lang['srv_analiza_num_units']);
+ }
+
+ //$tex .= $this->tableRow($text); //izpis ostalega dela vrstice $arrayText, $brezHline=0, $brezNoveVrstice=0, $nadaljevanjeVrstice=0
+ $brezHline = 1;
+ $brezNoveVrstice = 1;
+ $nadaljevanjeVrstice = 1;
+ $tex .= $this->tableRow($text, $brezHline, $brezNoveVrstice, $nadaljevanjeVrstice); //izpis ostalega dela vrstice
+
+ $tex .= $this->texNewLine; //nova vrstica
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ /* druga vrstica - konec */
+
+ /* tretja vrstica */
+ $brezHline3 = 1;
+ $brezNoveVrstice3 = 1;
+ $nadaljevanjeVrstice3 = 1;
+
+ $textDynamicCells = array();
+ $count = 0;
+ $height_title = 0;
+
+ if (count($spremenljivka['options']) > 0) {
+
+ $singleWidth = round(57 / count($spremenljivka['options']));
+
+ foreach ( $spremenljivka['options'] as $key => $kategorija) {
+ // misinge imamo zdruzene
+ $_label = $kategorija;
+ $textDynamicCells[] = $_label;
+ //$height_title = ($height_title < $this->getCellHeight($_label, $singleWidth)) ? $this->getCellHeight($_label, $singleWidth) : $height_title;
+ $count++;
+ }
+ }
+
+ /*prva prazna stolpca*/
+ $textPrazniStolpci = array();
+ $steviloPraznihStolpcev = 2;
+ for($i=0;$i<$steviloPraznihStolpcev;$i++){
+ $textPrazniStolpci[$i] = '';
+ }
+ $tex .= $this->tableRow($textPrazniStolpci, $brezHline3, $brezNoveVrstice3, $nadaljevanjeVrstice3); //izpis ostalega dela vrstice
+ /*prva prazna stolpca - konec*/
+
+ $tex .= $this->dynamicCells($textDynamicCells, $count); //izpis celic z odgovori v stolpcih (npr. Sploh ne velja, ...)
+
+ $tex .= " & ".$this->encodeText($lang['srv_anl_suma1']); //Skupaj
+
+ /*zadnji stolpci po Skupaj*/
+ if ($additional_field){
+ $textPrazniStolpci = array();
+ $steviloPraznihStolpcev = 4;
+ for($i=0;$i<$steviloPraznihStolpcev;$i++){
+ $textPrazniStolpci[$i] = '';
+ }
+ $tex .= $this->tableRow($textPrazniStolpci, $brezHline3, $brezNoveVrstice3, $nadaljevanjeVrstice3); //izpis ostalega dela vrstice
+ }
+ else{
+ $textPrazniStolpci = array();
+ $steviloPraznihStolpcev = 2;
+ for($i=0;$i<$steviloPraznihStolpcev;$i++){
+ $textPrazniStolpci[$i] = '';
+ }
+ $tex .= $this->tableRow($textPrazniStolpci, $brezHline3, $brezNoveVrstice3, $nadaljevanjeVrstice3); //izpis ostalega dela vrstice
+ }
+ /*zadnji stolpci po Skupaj*/
+
+ $tex .= $this->texNewLine;
+ /* tretja vrstica - konec */
+ //konec naslovnih vrstic
+
+
+ #zlopamo skozi gride
+ $podtabela = 0;
+ if (count($spremenljivka['grids']) > 0)
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ # zloopamo skozi variable
+ if (count($grid['variables']) > 0)
+ foreach ($grid['variables'] AS $vid => $variable ) {
+ $_sequence = $variable['sequence'];
+ if ($variable['other'] != true) {
+
+ // Ce gre za dvojno tabelo naredimo vrstico s naslovom podtabele
+ if($spremenljivka['tip'] == 6 && $spremenljivka['enota'] == 3){
+
+ // Če začnemo z drugo podtabelo izpišemo vrstico z naslovom
+ if($podtabela != $grid['part']){
+
+ $subtitle = $spremenljivka['double'][$grid['part']]['subtitle'];
+ $subtitle = $subtitle == '' ? $lang['srv_grid_subtitle_def'].' '.$grid['part'] : $subtitle;
+
+/* $this->pdf->setFont('','b','6');
+ $this->pdf->MultiCell(180, $height_title, $this->encodeText($subtitle), 1, 'C', 0, 1, 0 ,0, true);
+ $this->pdf->setFont('','','6'); */
+ $tex .= $this->encodeText($subtitle);
+
+ $podtabela = $grid['part'];
+ }
+ }
+
+ if($variable['naslov'] == '')
+ $variable['naslov'] = '';
+
+ /*$linecount = $this->pdf->getNumLines($this->encodeText($variable['naslov']), 30);
+ $linecount == 1 ? $height = 4.7 : $height = 4.7 + ($linecount-1)*3.3;*/
+
+ //ce smo na prelomu strani
+/* if( ($this->pdf->getY() + $height) > 270){
+ $this->drawLine();
+ $this->pdf->AddPage('P');
+ $arrayParams['border'] .= 'T';
+ } */
+
+/* $this->pdf->MultiCell(18, $height, $this->encodeText($variable['variable']), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->MultiCell(30, $height, $this->encodeText($variable['naslov']), 1, 'C', 0, 0, 0 ,0, true); */
+ $tex .= $this->encodeText($variable['variable']);
+ $tex .= " & ".$this->encodeText($variable['naslov']);
+
+
+ # za odklon in povprečje
+ $sum_xi_fi=0;
+ $N = 0;
+ $div=0;
+
+ $count = 0;
+ $text = array();
+ if (count($spremenljivka['options']) > 0) {
+ foreach ( $spremenljivka['options'] as $key => $kategorija) {
+ if ($additional_field) { # za odklon in povprečje
+ $xi = $key;
+ $fi = SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'][$key]['cnt'];
+ $sum_xi_fi += $xi * $fi ;
+ $N += $fi;
+ }
+
+ $_percent = (SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt'] > 0 ) ? SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'][$key]['cnt'] * 100 / SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt'] : 0;
+
+ $text[] = SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'][$key]['cnt'].' ('.self::formatNumber($_percent,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'),'%').')';
+
+ $count++;
+ }
+ }
+
+ $tex .= " & ".$this->dynamicCells($text, $count); //izpis celic z izracuni odgovorov v stolpcih (npr. Sploh ne velja, ...)
+
+ // suma
+ $tex .= " & ".$this->encodeText((int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt'].' ('.self::formatNumber(100,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'),'%').')');
+
+ // zamenjano veljavni ustrezni
+ if ($additional_field){
+/* $this->pdf->MultiCell(15, $height, $this->encodeText(SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt']), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->MultiCell(15, $height, $this->encodeText(SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt']), 1, 'C', 0, 0, 0 ,0, true); */
+ $tex .= " & ".$this->encodeText(SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt']);
+ $tex .= " & ".$this->encodeText(SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt']);
+ }
+ else{
+/* $this->pdf->MultiCell(30, $height, $this->encodeText(SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt']), 1, 'C', 0, 0, 0 ,0, true);
+ $this->pdf->MultiCell(30, $height, $this->encodeText(SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt']), 1, 'C', 0, 1, 0 ,0, true); */
+ $tex .= " & ".$this->encodeText(SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt']);
+ $tex .= " & ".$this->encodeText(SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt']);
+ }
+
+ # za odklon in povprečje
+ if ($additional_field){
+ # odklon
+ $avg = ($N > 0) ? $sum_xi_fi / $N : 0;
+ #standardna diviacija
+ $div = 0;
+ $sum_pow_xi_fi_avg = 0;
+ if (count($spremenljivka['options']) > 0) {
+ foreach ( $spremenljivka['options'] as $xi => $kategorija) {
+ $fi = SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'][$xi]['cnt'];
+ $sum_pow_xi_fi_avg += pow(($xi - $avg),2) * $fi;
+ }
+ }
+ $div = (($N -1) > 0) ? sqrt($sum_pow_xi_fi_avg / ($N -1)) : 0;
+
+ $tex .= " & ".$this->encodeText(self::formatNumber($avg,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),''));
+ $tex .= " & ".$this->encodeText(self::formatNumber($div,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),''));
+ }
+
+ /*zakljucek vrstice*/
+ $tex .= $this->texNewLine; //nova vrstica
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*horizontalna linija*/
+ }
+
+ }
+ else {
+ # immamo polje drugo
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+
+ }
+ }
+
+ //zaljucek latex tabele z obrobo za prvo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za prvo tabelo - konec
+
+ # izpišemo še tekstovne odgovore za polja drugo
+ if (count($_answersOther) > 0 && SurveyAnalysis::$_FILTRED_OTHER) {
+ foreach ($_answersOther AS $oAnswers) {
+ $tex .= self::outputOtherAnswers($oAnswers, $parameterTabular, $export_format);
+ }
+ }
+
+ //echo "Latex tabele: ".$tex."</br>";
+ return $tex;
+ }
+
+ /** Izriše tekstovne odgovore v vertikalni obliki z Latex
+ *
+ * @param unknown_type $spid
+ */
+
+ function sumTextVerticalNew($spid=null, $_from=null, $export_format='') {
+ //echo "sumTextVertical </br>";
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+
+ # dodamo opcijo kje izrisujemo legendo
+ # če je besedilo * in je samo ena kategorija je inline legenda false
+ $inline_legenda = (SurveyAnalysis::$_HEADERS[$spid]['cnt_all'] == 1 || in_array($spremenljivka['tip'],array(1,8) ) ) ? false: true;
+ $options=array('inline_legenda' => $inline_legenda, 'isTextAnswer' => false, 'isOtherAnswer' => false, 'textAnswerExceed' => false, 'exportFormat' => $export_format);
+
+ #Priprava prve tabele, z imenom vprasanja/spremenljivke in besedilom vprasanja#######################################################
+
+ //Priprava parametrov za tabelo z imenom vprasanja/spremenljivke in besedilom vprasanja
+ $steviloStolpcevParameterTabular = 2;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'A|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|');
+ }
+
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za tabelo z imenom vprasanja/spremenljivke in besedilom vprasanja
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za tabelo - konec
+
+ /*Naslovna vrstica tabele*/
+ //prva vrstica tabele
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{5}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{5}{>{\hsize=\dimexpr 6\hsize+\arrayrulewidth}X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ $tex .= $this->encodeText($spremenljivka['variable']).' & '.$this->encodeText($spremenljivka['naslov']).' '.$this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //zaljucek latex tabele z obrobo za tabelo z imenom vprasanja/spremenljivke in besedilom vprasanja
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za prvo tabelo - konec
+
+ #Priprava prve tabele, z imenom vprasanja/spremenljivke in besedilom vprasanja - konec #############################################
+
+ #Priprava druge tabele, z odgovori #############################################
+ //Priprava parametrov za tabelo s podatki oz. odgovori
+ $steviloStolpcevParameterTabular = 6;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ $parameterTabular .= ($export_format == 'pdf' ? 'A|' : 'l|');
+ }elseif($i == 1){ //ce je drugi stolpec z odgovori
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize=0.3\textwidth}X|' : 'l|');
+ }else{
+ //$parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ $parameterTabular .= ($export_format == 'pdf' ? 'C|' : 'c|');
+ }
+
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ //druga vrstica tabele z naslovi stolpcev
+ $tex .= $this->tableHeader($export_format);
+ /*Naslovni vrstici tabele - konec*/
+
+
+ $_answersOther = array();
+ $_grids_count = count($spremenljivka['grids']);
+ if ($_grids_count > 0)
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ $_variables_count = count($grid['variables']);
+ if ($_variables_count > 0)
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ if ($variable['other'] != true) {
+ # dodamo dodatne vrstice z labelami grida
+ if ($_variables_count > 1) {
+ self::outputGridLabelVertical($gid,$grid,$vid,$variable,$spid,$options);
+ }
+
+ $maxAnswer = (SurveyDataSettingProfiles :: getSetting('numOpenAnswers') > 0) ? SurveyDataSettingProfiles :: getSetting('numOpenAnswers') : 30;
+ $counter = 0;
+ $_kumulativa = 0;
+ //SurveyAnalysis::$_FREQUENCYS[$_sequence]
+ if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'])> 0 ) {
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'] AS $vkey => $vAnswer) {
+ if (/*$vAnswer['cnt'] > 0 &&*/ $counter < $maxAnswer) { # izpisujemo samo tiste ki nisno 0
+ # ali prikažemo vse odgovore ali pa samo toliko koliko je nastavljeno v TEXT_ANSWER_LIMIT
+ $textAnswerExceed = ($counter >= TEXT_ANSWER_LIMIT && count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']) > TEXT_ANSWER_LIMIT+2) ? true : false; # ali začnemo skrivati tekstovne odgovore
+ $options['isTextAnswer']=true;
+ $options['textAnswerExceed'] = $textAnswerExceed;
+ /*$counter = self::outputValidAnswerVertical($counter,$vkey,$vAnswer,$_sequence,$spid,$_kumulativa,$options);*/
+ $tex .= self::outputValidAnswerVertical($counter,$vkey,$vAnswer,$_sequence,$spid,$_kumulativa,$options);
+ }
+ $counter++;
+ }
+ # izpišemo sumo veljavnih
+ /*$counter = self::outputSumaValidAnswerVertical($counter,$_sequence,$spid,$options);*/
+ $tex .= self::outputSumaValidAnswerVertical($counter,$_sequence,$spid,$options);
+ }
+ if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalid'])> 0 ) {
+ $_Z_MV = !$this->hideEmpty;
+ if($_Z_MV){ //ce je potrebno izpisati tudi manjkajoce
+ $tex .= $this->encodeText($lang['srv_anl_missing1']);
+ }
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalid'] AS $ikey => $iAnswer) {
+ if ($iAnswer['cnt'] > 0 ) { # izpisujemo samo tiste ki nisno 0
+ /*$counter = self::outputInvalidAnswerVertical($counter,$ikey,$iAnswer,$_sequence,$spid,$options);*/
+ $tex .= self::outputInvalidAnswerVertical($counter,$ikey,$iAnswer,$_sequence,$spid,$options);
+ }
+ }
+ # izpišemo sumo veljavnih
+ /*$counter = self::outputSumaInvalidAnswerVertical($counter,$_sequence,$spid,$options);*/
+ $tex .= self::outputSumaInvalidAnswerVertical($counter,$_sequence,$spid,$options);
+ }
+ #izpišemo še skupno sumo
+ /*$counter = self::outputSumaVertical($counter,$_sequence,$spid,$options);*/
+ $tex .= self::outputSumaVertical($counter,$_sequence,$spid,$options);
+ } else {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+ }
+ }
+ //zaljucek latex tabele z obrobo za prvo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za prvo tabelo - konec
+
+ #Priprava druge tabele, z odgovori - konec #############################################
+
+ # izpišemo še tekstovne odgovore za polja drugo
+ if (count($_answersOther) > 0 && self::$_FILTRED_OTHER) {
+ foreach ($_answersOther AS $oAnswers) {
+ /*self::outputOtherAnswers($oAnswers);*/
+ $tex .= self::outputOtherAnswers($oAnswers, $parameterTabular, $export_format);
+ }
+ }
+
+ return $tex;
+ }
+
+ function sumTextVertical($spid=null, $_from=null, $export_format='') {
+ //echo "sumTextVertical </br>";
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+
+ # dodamo opcijo kje izrisujemo legendo
+ # če je besedilo * in je samo ena kategorija je inline legenda false
+ $inline_legenda = (SurveyAnalysis::$_HEADERS[$spid]['cnt_all'] == 1 || in_array($spremenljivka['tip'],array(1,8) ) ) ? false: true;
+ $options=array('inline_legenda' => $inline_legenda, 'isTextAnswer' => false, 'isOtherAnswer' => false, 'textAnswerExceed' => false, 'exportFormat' => $export_format);
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 6;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /*Naslovni vrstici tabele*/
+ //prva vrstica tabele
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{5}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{5}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{5}{>{\hsize=\dimexpr 6\hsize+\arrayrulewidth}X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+ //echo $dolzinaVprasanja."</br>";
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{5}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{5}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //druga vrstica tabele z naslovi stolpcev
+ $tex .= $this->tableHeader($export_format);
+ /*Naslovni vrstici tabele - konec*/
+
+
+ $_answersOther = array();
+ $_grids_count = count($spremenljivka['grids']);
+ if ($_grids_count > 0)
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ $_variables_count = count($grid['variables']);
+ if ($_variables_count > 0)
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ if ($variable['other'] != true) {
+ # dodamo dodatne vrstice z labelami grida
+ if ($_variables_count > 1) {
+ self::outputGridLabelVertical($gid,$grid,$vid,$variable,$spid,$options);
+ }
+
+ $maxAnswer = (SurveyDataSettingProfiles :: getSetting('numOpenAnswers') > 0) ? SurveyDataSettingProfiles :: getSetting('numOpenAnswers') : 30;
+ $counter = 0;
+ $_kumulativa = 0;
+ //SurveyAnalysis::$_FREQUENCYS[$_sequence]
+ if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'])> 0 ) {
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid'] AS $vkey => $vAnswer) {
+ if (/*$vAnswer['cnt'] > 0 &&*/ $counter < $maxAnswer) { # izpisujemo samo tiste ki nisno 0
+ # ali prikažemo vse odgovore ali pa samo toliko koliko je nastavljeno v TEXT_ANSWER_LIMIT
+ $textAnswerExceed = ($counter >= TEXT_ANSWER_LIMIT && count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']) > TEXT_ANSWER_LIMIT+2) ? true : false; # ali začnemo skrivati tekstovne odgovore
+ $options['isTextAnswer']=true;
+ $options['textAnswerExceed'] = $textAnswerExceed;
+ /*$counter = self::outputValidAnswerVertical($counter,$vkey,$vAnswer,$_sequence,$spid,$_kumulativa,$options);*/
+ $tex .= self::outputValidAnswerVertical($counter,$vkey,$vAnswer,$_sequence,$spid,$_kumulativa,$options);
+ }
+ $counter++;
+ }
+ # izpišemo sumo veljavnih
+ /*$counter = self::outputSumaValidAnswerVertical($counter,$_sequence,$spid,$options);*/
+ $tex .= self::outputSumaValidAnswerVertical($counter,$_sequence,$spid,$options);
+ }
+ if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalid'])> 0 ) {
+ $_Z_MV = !$this->hideEmpty;
+ if($_Z_MV){ //ce je potrebno izpisati tudi manjkajoce
+ $tex .= $this->encodeText($lang['srv_anl_missing1']);
+ }
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalid'] AS $ikey => $iAnswer) {
+ if ($iAnswer['cnt'] > 0 ) { # izpisujemo samo tiste ki nisno 0
+ /*$counter = self::outputInvalidAnswerVertical($counter,$ikey,$iAnswer,$_sequence,$spid,$options);*/
+ $tex .= self::outputInvalidAnswerVertical($counter,$ikey,$iAnswer,$_sequence,$spid,$options);
+ }
+ }
+ # izpišemo sumo veljavnih
+ /*$counter = self::outputSumaInvalidAnswerVertical($counter,$_sequence,$spid,$options);*/
+ $tex .= self::outputSumaInvalidAnswerVertical($counter,$_sequence,$spid,$options);
+ }
+ #izpišemo še skupno sumo
+ /*$counter = self::outputSumaVertical($counter,$_sequence,$spid,$options);*/
+ $tex .= self::outputSumaVertical($counter,$_sequence,$spid,$options);
+ } else {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+ }
+ }
+ //zaljucek latex tabele z obrobo za prvo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za prvo tabelo - konec
+
+ # izpišemo še tekstovne odgovore za polja drugo
+ if (count($_answersOther) > 0 && self::$_FILTRED_OTHER) {
+ foreach ($_answersOther AS $oAnswers) {
+ /*self::outputOtherAnswers($oAnswers);*/
+ $tex .= self::outputOtherAnswers($oAnswers, $parameterTabular, $export_format);
+ }
+ }
+
+ return $tex;
+ }
+
+ /** Izriše lokacijske odgovore kot tabelo z navedbami z Latex
+ *
+ * @param unknown_type $spid
+ */
+ function sumLokacija($spid=null, $_from=null, $export_format='') {
+ //echo "sumLokacija </br>";
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+ $enota = $spremenljivka['enota'];
+
+ # dodamo opcijo kje izrisujemo legendo
+ # če je besedilo * in je samo ena kategorija je inline legenda false
+
+ $_cols = $spremenljivka['cnt_all'] / $spremenljivka['cnt_grids'];
+
+ # koliko zapisov prikažemo naenkrat
+ $num_show_records = SurveyAnalysis::getNumRecords();
+
+ $_answers = SurveyAnalysis::getAnswers($spremenljivka,$num_show_records);
+
+ $_all_valid_answers_cnt = $_answers['validCnt'];
+ $_valid_answers = $_answers['valid'];
+
+
+ $_answersOther = array();
+ $_grids_count = count($spremenljivka['grids']);
+
+
+ /*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis*/
+ if ($_grids_count > 0) {
+ # naslovna vrstica
+ $_row = $spremenljivka['grids'][0];
+
+ $height = 0;
+
+ $count = 0;
+ $text = array();
+ foreach ($_row['variables'] AS $rid => $_col ){
+ $_sequence = $_col['sequence']; # id kolone z podatki
+
+ if ($_col['other'] != true) {
+ $text[] = $_col['naslov'];
+ }
+ else {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+
+ $count++;
+ }
+ }
+
+ $steviloStolpcevParameterTabular = 1 + $count;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ //$parameterTabular = '';
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+
+ }
+ /*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis - konec*/
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+
+ /*Naslovna vrstica tabele*/
+ /*prva vrstica*/
+ $steviloPodStolpcev1 = $steviloStolpcevParameterTabular - 1;
+
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable']).' & \multicolumn{'.$steviloPodStolpcev1.'}{>{\hsize=\dimexpr '.($steviloPodStolpcev1+1).'\hsize + '.($steviloPodStolpcev1+1).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($spremenljivka['naslov']).'} '.$this->texNewLine;
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+ //echo $dolzinaVprasanja."</br>";
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ /*Konec naslovne vrstice*/
+
+ if ($_grids_count > 0) {
+ $height = 0;
+/* // Testiramo visino vrstice glede na najdaljsi text
+ foreach ($text AS $string){
+ $singleWidth = ($count > 0) ? round(162 / $count): 162;
+ //$height = ($this->getCellHeight($string, $singleWidth) > $height) ? $this->getCellHeight($string, $singleWidth) : $height;
+ $height = 1;
+ } */
+
+ /*$this->pdf->MultiCell(18, $height, $this->encodeText(''), 1, 'C', 0, 0, 0 ,0, true);*/
+
+ /*$this->dynamicCells($text, $count, 162, $height);*/
+ /*$this->pdf->ln($height);*/
+ /*druga vrstica*/
+ $brezHline3 = 1;
+ $brezNoveVrstice3 = 1;
+ $nadaljevanjeVrstice3 = 1;
+ /*prva prazna stolpca v 2. vrstici*/
+ $textPrazniStolpci = array();
+ $steviloPraznihStolpcev = 1;
+ for($i=0;$i<$steviloPraznihStolpcev;$i++){
+ $textPrazniStolpci[$i] = '';
+ }
+ $tex .= $this->tableRow($textPrazniStolpci, $brezHline3, $brezNoveVrstice3, $nadaljevanjeVrstice3); //izpis ostalega dela vrstice
+
+ $tex .= $this->dynamicCells($text, $count); //izpis celic z odgovori v stolpcih (npr. Sploh ne velja, ...)
+
+ $tex .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex;
+ }
+ /*prva prazna stolpca v 2. vrstici - konec*/
+ /*druga vrstica - konec*/
+ $last = 0;
+ /*izpis vrstic s podatki*/
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ $_variables_count = count($grid['variables']);
+ $height = 0;
+
+ if ($_variables_count > 0) {
+ # preštejemo max vrstic na grupo
+ $_max_i = 0;
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ $_max_i = max($_max_i,min($num_show_records,SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt']));
+ }
+
+ # za barvanje
+ $last = ($last & 1) ? 0 : 1 ;
+
+ $count = 0;
+ $text = array();
+
+ $answers = array();
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ if ($variable['other'] != true) {
+ # tabela z navedbami
+ $index=0;
+ # odvisno ali imamo odgovor
+ if (count($_valid_answers) > 0) {
+ $text2 = '(';
+ foreach ($_valid_answers AS $answer) {
+
+ $_ans = $answer[$_sequence];
+ if($enota != 3)
+ $_ans = str_replace("<br>","), (",$_ans);
+
+ if ($_ans != null && $_ans != '') {
+ if($enota == 3)
+ $text2 .= $_ans."), (";
+ else
+ $answers[$count][$index]='('.$this->encodeText($_ans).')';
+ }
+
+ $index++;
+ }
+ if($enota == 3)
+ $text[] = substr($text2, 0, -3);
+ }
+ else {
+ $text[] = '&nbsp;';
+ }
+
+ $count++;
+ }
+
+ }
+ $last = $_max_i;
+ }
+
+ if($enota != 3){
+ for($i=0; $i<sizeof($answers[0]); $i++){
+ $row = array();
+ for($j=0; $j<$count; $j++){
+ // Testiramo visino vrstice glede na najdaljsi text
+ $singleWidth = ($count > 0) ? round(162 / $count): 162;
+ //$height = ($this->getCellHeight($answers[$j][$i], $singleWidth) > $height) ? $this->getCellHeight($answers[$j][$i], $singleWidth) : $height;
+ $height = 1;
+ $row[$j] = $answers[$j][$i];
+ }
+
+
+ //$tex .= " & ".$this->dynamicCells($text, $count); //izpis celic z izracuni odgovorov v stolpcih (npr. Sploh ne velja, ...)
+ $tex .= $this->sumLokacijaRowOutput($row, $count, $height, $grid['variable']);
+ /*$this->sumLokacijaRowOutput($row, $count, $height, $grid['variable']);*/
+
+ $tex .= $this->texNewLine; //nova vrstica
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*horizontalna crta*/
+ }
+ }
+ }
+ else{
+ // Testiramo visino vrstice glede na najdaljsi text
+ foreach ($text AS $string){
+ $singleWidth = ($count > 0) ? round(162 / $count): 162;
+ //$height = ($this->getCellHeight($string, $singleWidth) > $height) ? $this->getCellHeight($string, $singleWidth) : $height;
+ $height = 1;
+ }
+
+ //$tex .= " & ".$this->dynamicCells($text, $count); //izpis celic z izracuni odgovorov v stolpcih (npr. Sploh ne velja, ...)
+ $tex .= $this->sumLokacijaRowOutput($text, $count, $height, $grid['variable']);
+ /*$this->sumLokacijaRowOutput($text, $count, $height, $grid['variable']);*/
+ }
+ /*zakljucek vrstice s podatki*/
+/* $tex .= $this->texNewLine; //nova vrstica
+ $tex .= $this->horizontalLineTex; //horizontalna crta */
+ }
+ /*izpis vrstic s podatki - konec*/
+
+
+ //zaljucek latex tabele z obrobo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo - konec
+ }
+ //echo "tex: ".$tex."</br>";
+ return $tex;
+ }
+
+ /**
+ * Izrise vrstico prilagojeno za lokacijo
+ *
+ * @param type $text - array odgovorov
+ * @param type $count - st variabel/stolpcev
+ * @param type $height - izracunana najvisja visina celice v vrstici
+ * @param type $variable - array variabel/stolpcev
+ */
+ function sumLokacijaRowOutput($text='', $count, $height=null, $variable='') {
+ $texSumLokacijaRowOutput = '';
+ $texSumLokacijaRowOutput .= " & ".$this->encodeText($variable);
+/* $this->pdf->MultiCell(18, $height, $this->encodeText($variable), 1, 'C', 0, 0, 0 ,0, true);
+ $this->dynamicCells($text, $count, 162, $height);
+ $this->pdf->ln($height); */
+ $texSumLokacijaRowOutput .= $this->dynamicCells($text, $count);
+
+ return $texSumLokacijaRowOutput;
+ }
+
+ /** Izriše tekstovne odgovore kot tabelo z navedbami z Latex
+ *
+ * @param unknown_type $spid
+ */
+ function sumMultiText($spid=null, $_from, $export_format='') {
+ //echo "sumMultiText </br>";
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+
+ # dodamo opcijo kje izrisujemo legendo
+ # če je besedilo * in je samo ena kategorija je inline legenda false
+
+ $_cols = $spremenljivka['cnt_all'] / $spremenljivka['cnt_grids'];
+
+ # pogledamo koliko je max št odgovorov pri posameznem podvprašanju
+/* $_max_answers = array();
+ $_max_answers_cnt = 0;
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+
+ $_variables_count = count($grid['variables']);
+ if ($_variables_count > 0) {
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ $_max_answers[$gid][$vid] = count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']);
+ $_max_answers_cnt = max( $_max_answers_cnt, count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']) );
+ }
+ }
+ }
+*/
+ # koliko zapisov prikažemo naenkrat
+ $num_show_records = SurveyAnalysis::getNumRecords();
+ //$num_show_records = $_max_answers_cnt <= (int)$num_show_records ? $_max_answers_cnt : $num_show_records;
+
+ $_answers = SurveyAnalysis::getAnswers($spremenljivka,$num_show_records);
+
+ $_all_valid_answers_cnt = $_answers['validCnt'];
+ $_valid_answers = $_answers['valid'];
+
+ $_answersOther = array();
+ $_grids_count = count($spremenljivka['grids']);
+
+
+ /*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis*/
+ if ($_grids_count > 0) {
+ # naslovna vrstica
+ $_row = $spremenljivka['grids'][0];
+ $count = 0;
+ $text = array();
+ foreach ($_row['variables'] AS $rid => $_col ){
+ $_sequence = $_col['sequence']; # id kolone z podatki
+
+ if ($_col['other'] != true) {
+ $text[] = $_col['naslov'];
+ }
+ else {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+
+ $count++;
+ }
+ }
+
+ $steviloStolpcevParameterTabular = 2 + $count;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+
+ }
+ /*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis - konec*/
+
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /*Naslovni vrstici tabele*/
+ //prva vrstica tabele
+ $steviloPodStolpcev1 = $steviloStolpcevParameterTabular - 1;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable']).' & \multicolumn{'.$steviloPodStolpcev1.'}{>{\hsize=\dimexpr '.($steviloPodStolpcev1+1).'\hsize + '.($steviloPodStolpcev1+1).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($spremenljivka['naslov']).'} '.$this->texNewLine;
+
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+ //echo $dolzinaVprasanja."</br>";
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //druga vrstica
+ $tex .= " & ".$this->encodeText($lang['srv_analiza_opisne_subquestion1'])." & \multicolumn{".$count."}{c|}{".$this->encodeText($lang['srv_analiza_opisne_arguments'])."} ".$this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //konec naslovnih vrstic
+
+ if ($_grids_count > 0) {
+ /*$height = 0;*/
+
+ // Testiramo visino vrstice glede na najdaljsi text
+/* foreach ($text AS $string){
+ $singleWidth = ($count > 0) ? round(108 / $count): 108;
+ //$height = ($this->getCellHeight($string, $singleWidth) > $height) ? $this->getCellHeight($string, $singleWidth) : $height;
+ $height = 1;
+ } */
+
+ /*tretja vrstica*/
+ $brezHline3 = 1;
+ $brezNoveVrstice3 = 1;
+ $nadaljevanjeVrstice3 = 1;
+ /*prva prazna stolpca v 3. vrstici*/
+ $textPrazniStolpci = array();
+ $steviloPraznihStolpcev = 2;
+ for($i=0;$i<$steviloPraznihStolpcev;$i++){
+ $textPrazniStolpci[$i] = '';
+ }
+ $tex .= $this->tableRow($textPrazniStolpci, $brezHline3, $brezNoveVrstice3, $nadaljevanjeVrstice3); //izpis ostalega dela vrstice
+
+ $tex .= $this->dynamicCells($text, $count); //izpis celic z odgovori v stolpcih (npr. Sploh ne velja, ...)
+
+ $tex .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ /*prva prazna stolpca v 3. vrstici - konec*/
+
+ $last = 0;
+ /*izpis vrstic s podatki*/
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ $_variables_count = count($grid['variables']);
+ $height = 0;
+
+ if ($_variables_count > 0) {
+ # preštejemo max vrstic na grupo
+ $_max_i = 0;
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ $_max_i = max($_max_i,min($num_show_records,SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt']));
+ }
+
+ # za barvanje
+ $last = ($last & 1) ? 0 : 1 ;
+
+ $count = 0;
+ $text = array();
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ if ($variable['other'] != true) {
+ # tabela z navedbami
+ $index=0;
+ # odvisno ali imamo odgovor
+ if (count($_valid_answers) > 0) {
+ $text2 = '';
+ foreach ($_valid_answers AS $answer) {
+ $index++;
+
+ $_ans = $answer[$_sequence];
+
+ if ($_ans != null && $_ans != '') {
+ $text2 .= $_ans.', ';
+ }
+ }
+ $text[] = substr($text2, 0, -2);
+ }
+ else {
+ $text[] = '&nbsp;';
+ }
+
+ $count++;
+ }
+
+ }
+ $last = $_max_i;
+ }
+
+ // Testiramo visino vrstice glede na najdaljsi text
+ foreach ($text AS $string){
+ $singleWidth = ($count > 0) ? round(108 / $count): 108;
+ //$height = ($this->getCellHeight($string, $singleWidth) > $height) ? $this->getCellHeight($string, $singleWidth) : $height;
+ $height = 1;
+ }
+
+ $tex .= $this->encodeText($grid['variable']);
+ $tex .= " & ".$this->encodeText($grid['naslov']);
+
+
+ $tex .= " & ".$this->dynamicCells($text, $count); //izpis celic z izracuni odgovorov v stolpcih (npr. Sploh ne velja, ...)
+
+
+ /*zakljucek vrstice s podatki*/
+ $tex .= $this->texNewLine; //nova vrstica
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*horizontalna crta*/
+ }
+ }
+ /*izpis vrstic s podatki - konec*/
+
+ //zaljucek latex tabele z obrobo za drugo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za drugo tabelo - konec
+ }
+
+ # izpišemo še tekstovne odgovore za polja drugo
+ if (count($_answersOther) > 0 && SurveyAnalysis::$_FILTRED_OTHER) {
+ foreach ($_answersOther AS $oAnswers) {
+ $tex .= self::outputOtherAnswers($oAnswers, $parameterTabular, $export_format);
+ }
+ }
+ return $tex;
+ }
+
+ /** Izriše multi number odgovore. izpiše samo povprečja z Latex
+ *
+ * @param unknown_type $spid
+ */
+ function sumMultiNumber($spid=null, $_from=null, $export_format='') {
+ //echo "sumMultiNumber </br>";
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+
+ $_cols = $spremenljivka['cnt_all'] / $spremenljivka['cnt_grids'];
+
+ $_answersOther = array();
+ $_grids_count = count($spremenljivka['grids']);
+
+ /*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis*/
+ if ($_grids_count > 0) {
+ # naslovna vrstica
+ $_row = $spremenljivka['grids'][0];
+ $count = 0;
+ $text = array();
+ foreach ($_row['variables'] AS $rid => $_col ){
+ $_sequence = $_col['sequence']; # id kolone z podatki
+
+ if ($_col['other'] != true) {
+ $text[] = $_col['naslov'];
+ }
+ else {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+
+ $count++;
+ }
+ }
+
+ $steviloStolpcevParameterTabular = 2 + $count;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+
+ }
+ /*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis - konec*/
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /*Naslovni vrstici tabele*/
+ //prva vrstica tabele
+ $steviloPodStolpcev1 = $steviloStolpcevParameterTabular - 1;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable']).' & \multicolumn{'.$steviloPodStolpcev1.'}{>{\hsize=\dimexpr '.($steviloPodStolpcev1+1).'\hsize + '.($steviloPodStolpcev1+1).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($spremenljivka['naslov']).'} '.$this->texNewLine;
+
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+ //echo $dolzinaVprasanja."</br>";
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //druga vrstica
+ $tex .= " & ".$this->encodeText($lang['srv_analiza_opisne_subquestion1'])." & \multicolumn{".$count."}{c|}{".$this->encodeText($lang['srv_analiza_sums_average'])."} ".$this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ /*Konec naslovnih vrstic*/
+
+ if ($_grids_count > 0) {
+ /*tretja vrstica*/
+ $brezHline3 = 1;
+ $brezNoveVrstice3 = 1;
+ $nadaljevanjeVrstice3 = 1;
+ /*prva prazna stolpca v 3. vrstici*/
+ $textPrazniStolpci = array();
+ $steviloPraznihStolpcev = 2;
+ for($i=0;$i<$steviloPraznihStolpcev;$i++){
+ $textPrazniStolpci[$i] = '';
+ }
+ $tex .= $this->tableRow($textPrazniStolpci, $brezHline3, $brezNoveVrstice3, $nadaljevanjeVrstice3); //izpis ostalega dela vrstice
+
+ $tex .= $this->dynamicCells($text, $count); //izpis celic z odgovori v stolpcih (npr. Sploh ne velja, ...)
+
+ $tex .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ /*prva prazna stolpca v 3. vrstici - konec*/
+
+ $last = 0;
+ /*izpis vrstic s podatki*/
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ $_variables_count = count($grid['variables']);
+
+ $tex .= $this->encodeText($grid['variable']);
+ $tex .= " & ".$this->encodeText($grid['naslov']);
+
+ if ($_variables_count > 0) {
+
+ $count = 0;
+ $text = array();
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ if ($variable['other'] != true) {
+ # tabela z navedbami
+ $text[] = self::formatNumber(SurveyAnalysis::$_FREQUENCYS[$_sequence]['average'],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ $count++;
+ }
+ //$count++;
+ }
+ $tex .= " & ".$this->dynamicCells($text, $count); //izpis celic z izracuni odgovorov v stolpcih (npr. Sploh ne velja, ...)
+ }
+ /*zakljucek vrstice s podatki*/
+ $tex .= $this->texNewLine; //nova vrstica
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*horizontalna linija*/
+ }
+ }
+ /*izpis vrstic s podatki - konec*/
+
+ //zaljucek latex tabele z obrobo za drugo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za drugo tabelo - konec
+
+ }
+ /*echo "Latex tabele: ".$tex."</br>";*/
+ return $tex;
+ }
+
+
+ /** Izriše sumarnik v horizontalni obliki za multi checkbox z Latex
+ *
+ * @param unknown_type $spid - spremenljivka ID
+ */
+ function sumMultiHorizontalCheckbox($spid=null, $_from=null, $export_format='') {
+ //echo "sumMultiHorizontalCheckbox </br>";
+ global $lang;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+ $_answersOther = array();
+
+ # ugotovimo koliko imamo kolon
+ $gid=0;
+ $_clmn_cnt = SurveyAnalysis::$_HEADERS[$spid]['grids'][$gid]['cnt_vars']-SurveyAnalysis::$_HEADERS[$spid]['grids'][$gid]['cnt_other'];
+ # tekst vprašanja
+
+ /*Priprava parametrov za tabelo in polja za 3. vrstico */
+ $_variables = SurveyAnalysis::$_HEADERS[$spid]['grids'][$gid]['variables'];
+ $count = 0;
+ $height = 0;
+ $textVrstica3 = array();
+ foreach ($_variables AS $vkey => $variable) {
+ if ($variable['other'] != true) {
+ $textVrstica3[] = $variable['naslov'].' ('.$variable['gr_id']. ')';
+
+ /*$singleWidth = round(54 / (count($_variables) + 1));
+ $height = 1; //$height = ($height < $this->getCellHeight($variable['naslov'].' ('.$variable['gr_id']. ')', $singleWidth)) ? $this->getCellHeight($variable['naslov'].' ('.$variable['gr_id']. ')', $singleWidth) : $height; */
+ }
+ $count++;
+ }
+
+ $steviloStolpcevParameterTabular = 5 + 2*$count;
+
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ //$parameterTabular .= ($export_format == 'pdf' ? 'b|' : 'l|');
+ $parameterTabular .= ($export_format == 'pdf' ? 's|' : 'c|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|');
+ }else if($i == 1){
+ $parameterTabular .= ($export_format == 'pdf' ? 'B|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }
+ else{
+ $parameterTabular .= ($export_format == 'pdf' ? 's|' : 'c|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|');
+ }
+
+ }
+ /*Priprava parametrov za tabelo in polja za 3. vrstico - konec*/
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /* prva vrstica */
+ $steviloPodStolpcev1 = $steviloStolpcevParameterTabular - 1;
+
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable']).' & \multicolumn{'.$steviloPodStolpcev1.'}{>{\hsize=\dimexpr '.($steviloPodStolpcev1+1).'\hsize + '.($steviloPodStolpcev1+1).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($spremenljivka['naslov']).'} '.$this->texNewLine;
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+ //echo $dolzinaVprasanja."</br>";
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ /* prva vrstica - konec */
+
+ /* druga vrstica*/
+ //$steviloPodStolpcev2 = count($spremenljivka['options']) + 1;
+ $steviloPodStolpcev2 = $count;
+ $tex .= " & ".$this->encodeText($lang['srv_analiza_opisne_subquestion1'])." & \multicolumn{".$steviloPodStolpcev2."}{c|}{".$this->encodeText($lang['srv_analiza_opisne_answers'])."} ";
+
+ $tex .= " & ".$this->encodeText($lang['srv_analiza_opisne_valid']);
+ $tex .= " & ".$this->encodeText($lang['srv_analiza_num_units']);
+
+ $steviloPodStolpcev3 = $count+1;
+ $tex .= " & \multicolumn{".$steviloPodStolpcev3."}{c|}{".$this->encodeText($lang['srv_analiza_opisne_arguments'])."} ";
+
+ $tex .= $this->texNewLine; //nova vrstica
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ /* druga vrstica - konec*/
+
+
+ /*tretja vrstica*/
+ $brezHline3 = 1;
+ $brezNoveVrstice3 = 1;
+ $nadaljevanjeVrstice3 = 1;
+ /*prva prazna stolpca 3. vrstice*/
+ $textPrazniStolpci = array();
+ $steviloPraznihStolpcev = 2;
+ for($i=0;$i<$steviloPraznihStolpcev;$i++){
+ $textPrazniStolpci[$i] = '';
+ }
+ $tex .= $this->tableRow($textPrazniStolpci, $brezHline3, $brezNoveVrstice3, $nadaljevanjeVrstice3); //izpis ostalega dela vrstice
+ /*prva prazna stolpca 3. vrstice - konec*/
+
+ $tex .= $this->dynamicCells($textVrstica3, $count); //izpis celic z odgovori v stolpcih (npr. Sploh ne velja, ...)
+
+ /*se dva prazna stolpca 3. vrstice*/
+ $textPrazniStolpci = array();
+ $steviloPraznihStolpcev = 2;
+ for($i=0;$i<$steviloPraznihStolpcev;$i++){
+ $textPrazniStolpci[$i] = '';
+ }
+ $tex .= $this->tableRow($textPrazniStolpci, $brezHline3, $brezNoveVrstice3, $nadaljevanjeVrstice3); //izpis ostalega dela vrstice
+ /*se dva prazna stolpca 3. vrstice - konec*/
+
+ $tex .= " & ".$this->dynamicCells($textVrstica3, $count); //izpis celic z odgovori v stolpcih (npr. Sploh ne velja, ...)
+
+/* $count = 0;
+ $text = array();
+ foreach ($_variables AS $vkey => $variable) {
+ if ($variable['other'] != true) {
+ $text[] = $variable['naslov'].' ('.$variable['gr_id']. ')';
+ }
+ $count++;
+ }
+ $this->dynamicCells($text, $count, 44, $height); */
+
+ $tex .= " & ".$this->encodeText($lang['srv_anl_suma1']); //Skupaj
+
+ $tex .= $this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ } //horizontalna crta
+ /*tretja vrstica - konec*/
+
+ /*vrstice s podatki*/
+ foreach (SurveyAnalysis::$_HEADERS[$spid]['grids'] AS $gid => $grids) {
+
+ $_cnt = 0;
+ $height = 1;//$height = $this->getCellHeight($this->encodeText($grids['naslov']), 18);
+ $height = ($height < 8 ? 8 : $height);
+
+ # vodoravna vrstice s podatki
+ $tex .= $this->encodeText($grids['variable']);
+ $tex .= " & ".$this->encodeText($grids['naslov']);
+
+ $_arguments = 0;
+
+ $_max_appropriate = 0;
+ $_max_cnt = 0;
+ // prikaz frekvenc
+ $count = 0;
+ $text = array();
+ foreach ($grids['variables'] AS $vkey => $variable) {
+ $_sequence = $variable['sequence'];
+ $_valid = SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt'];
+ $_cnt = SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt'];
+ $_arguments += $_cnt;
+
+ $_max_appropriate = max($_max_appropriate, (int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt']);
+ $_max_cnt = max ($_max_cnt, ((int)(SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt']+(int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['0']['cnt'])));
+
+ if ($variable['other'] == true) {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vkey,'sequence'=>$_sequence);
+ }
+
+ if ($variable['other'] != true) {
+ $_percent = ($_valid > 0 ) ? $_cnt * 100 / $_valid : 0;
+
+ $text[] = $_cnt . ' (' . self::formatNumber($_percent,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'),'%') . ')';
+ $count++;
+ }
+
+ }
+
+ $tex .= " & ".$this->dynamicCells($text, $count); //izpis celic z izracuni odgovorov v stolpcih (npr. Sploh ne velja, ...)
+
+ # veljavno
+ $tex .= " & ".$_max_cnt;
+
+ #ustrezno
+ $tex .= " & ".$_max_appropriate;
+
+ $count = 0;
+ $text = array();
+ foreach ($grids['variables'] AS $vkey => $variable) {
+ if ($variable['other'] != true) {
+ $_sequence = $variable['sequence'];
+ $_cnt = SurveyAnalysis::$_FREQUENCYS[$_sequence]['valid']['1']['cnt'];
+
+ $_percent = ($_arguments > 0 ) ? $_cnt * 100 / $_arguments : 0;
+
+ $text[] = $_cnt . ' (' . self::formatNumber($_percent,SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'),'%') . ')';
+ $count++;
+ }
+ }
+
+ $tex .= " & ".$this->dynamicCells($text, $count); //izpis celic z izracuni odgovorov v stolpcih (npr. Sploh ne velja, ...)
+
+ $tex .= " & ".$_arguments;
+
+ /*zakljucek vrstice*/
+ $tex .= $this->texNewLine; //nova vrstica
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ } //horizontalna crta
+ }
+ /*vrstice s podatki - konec*/
+
+ /*zaljucek latex tabele z obrobo za prvo tabelo*/
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ /*zaljucek latex tabele z obrobo za prvo tabelo - konec*/
+
+ # izpišemo še tekstovne odgovore za polja drugo
+ if (count($_answersOther) > 0 && SurveyAnalysis::$_FILTRED_OTHER) {
+ foreach ($_answersOther AS $oAnswers) {
+ $tex .= self::outputOtherAnswers($oAnswers, $parameterTabular, $export_format);
+ }
+ }
+ //echo "tex: ".$tex."</br>";
+ return $tex;
+ }
+
+ /** za multi grid tekstovne vrstice doda vrstico z labeliami grida
+ *
+ * @param $gkey
+ * @param $gAnswer
+ * @param $spid
+ * @param $_options
+ */
+ function outputGridLabelVertical($gid=null, $grid=null, $vid=null, $variable=null, $spid=null, $_options=array()) {
+ //echo "outputGridLabelVertical </br>";
+ $text = array();
+
+ $text[] = $this->encodeText($variable['variable']);
+ $text[] = $this->encodeText(($grid['naslov'] != '' ? $grid['naslov']. '&nbsp;-&nbsp;' : '').$variable['naslov']);
+
+ $text[] = '';
+ $text[] = '';
+ $text[] = '';
+ $text[] = '';
+
+ $this->tableRow($text);
+
+ $counter++;
+ return $counter;
+ }
+
+
+ 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;
+ }
+
+
+
+
+ /** Izriše heatmap odgovore.
+ *
+ * @param unknown_type $spid
+ */
+ function sumHeatmap($spid=null, $_from=null, $export_format='') {
+ //echo "sumHeatmap </br>";
+ global $lang;
+ global $site_url;
+ global $site_path;
+ $tex = '';
+ $spremenljivka = SurveyAnalysis::$_HEADERS[$spid];
+
+ //Priprava podatkov za tabelo
+ # preverimo ali prikazujemo spremenljivko, glede na veljavne odgovore in nastavitev
+ $only_valid = 0;
+ if (count($spremenljivka['grids']) > 0) {
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ # dodamo dodatne vrstice z albelami grida
+ if (count($grid['variables']) > 0 )
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ $only_valid += (int)SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt'];
+ }
+ }
+ }
+ if (SurveyDataSettingProfiles :: getSetting('hideEmpty') == 1 && $only_valid == 0 && SurveyAnalysis::$_forceShowEmpty == false) {
+ return;
+ }
+
+ # dodamo opcijo kje izrisujemo legendo
+ # če je besedilo * in je samo ena kategorija je inline legenda false
+
+ $_cols = $spremenljivka['cnt_all'] / $spremenljivka['cnt_grids'];
+
+ # koliko zapisov prikažemo naenkrat
+ $num_show_records = SurveyAnalysis::getNumRecords();
+
+ $_answers = SurveyAnalysis::getAnswers($spremenljivka,$num_show_records);
+
+ $_all_valid_answers_cnt = $_answers['validCnt'];
+ $_valid_answers = $_answers['valid'];
+
+ $export = 1;
+
+ //2. stolpec - Veljavni za x in y koordinati
+ $validHeatmapRegion = SurveyAnalysis::validHeatmapRegion($spremenljivka['grids'], $spid, $_valid_answers, $export);
+ //3. stolpec - Ustrezni za x in y koordinati
+ $ustrezniHeatmapRegion = SurveyAnalysis::ustrezniHeatmapRegion($spid, $_valid_answers, $_sequence); //vsi mozni kliki
+ //4. stolpec - Povprecje za x in y koordinati
+ $povprecjeHeatmapClicksX = self::formatNumber(SurveyAnalysis::heatmapClicksCalc($spremenljivka['grids'], $spid, $_valid_answers, 'x', $validHeatmapRegion, 'povprecje', $export),SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ $povprecjeHeatmapClicksY = self::formatNumber(SurveyAnalysis::heatmapClicksCalc($spremenljivka['grids'], $spid, $_valid_answers, 'y', $validHeatmapRegion, 'povprecje', $export),SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ //5. stolpec - Standardni odklon za x in y koordinati
+ $stdevHeatmapClicksX = self::formatNumber(SurveyAnalysis::heatmapClicksCalc($spremenljivka['grids'], $spid, $_valid_answers, 'x', $validHeatmapRegion, 'stdev', $export),SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ $stdevHeatmapClicksY = self::formatNumber(SurveyAnalysis::heatmapClicksCalc($spremenljivka['grids'], $spid, $_valid_answers, 'y', $validHeatmapRegion, 'stdev', $export),SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ //6. stolpec - Minimum za x in y koordinati
+ $minHeatmapClicksX = self::formatNumber(SurveyAnalysis::heatmapClicksCalc($spremenljivka['grids'], $spid, $_valid_answers, 'x', $validHeatmapRegion, 'min', $export),SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ $minHeatmapClicksY = self::formatNumber(SurveyAnalysis::heatmapClicksCalc($spremenljivka['grids'], $spid, $_valid_answers, 'y', $validHeatmapRegion, 'min', $export),SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ //7. stolpec - Max za x in y koordinati
+ $maxHeatmapClicksX = self::formatNumber(SurveyAnalysis::heatmapClicksCalc($spremenljivka['grids'], $spid, $_valid_answers, 'x', $validHeatmapRegion, 'max', $export),SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ $maxHeatmapClicksY = self::formatNumber(SurveyAnalysis::heatmapClicksCalc($spremenljivka['grids'], $spid, $_valid_answers, 'y', $validHeatmapRegion, 'max', $export),SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
+ //Priprava podatkov za tabelo - konec
+
+ /*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis*/
+ $steviloStolpcevParameterTabular = 7;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'P|' : 'l|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'l|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+
+ }
+ /*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis - konec*/
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tex .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ /*Naslovni vrstici tabele*/
+ //prva vrstica tabele
+ $steviloPodStolpcev1 = $steviloStolpcevParameterTabular - 1;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ //$tex .= $this->encodeText($spremenljivka['variable']).' & \multicolumn{'.$steviloPodStolpcev1.'}{>{\hsize=\dimexpr '.($steviloPodStolpcev1+1).'\hsize + '.($steviloPodStolpcev1+1).'\tabcolsep + \arrayrulewidth}X|}{'.$this->encodeText($spremenljivka['naslov']).'} '.$this->texNewLine;
+ $dolzinaVprasanja = strlen($this->encodeText($spremenljivka['naslov']));
+ //echo $dolzinaVprasanja."</br>";
+ if($dolzinaVprasanja > MEJA_DOLZINA_VPRASANJA){ //ce je dolzina vprasanja daljsa od ene vrstice v tabeli
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{X|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }else{
+ $tex .= $this->encodeText($spremenljivka['variable'])." & \multicolumn{".$steviloPodStolpcev1."}{l|}{".$this->encodeText($spremenljivka['naslov'])."} ".$this->texNewLine;
+ }
+
+
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //druga vrstica
+ $spr_id = $this->GetSprId($spid);
+
+ $heatmapImageFileName = 'heatmap'.$spr_id;
+ $heatmapImageSrc = $site_path.'main/survey/uploads/'.$heatmapImageFileName.'.png';
+ $heatmapImageFileNamePresent = file_exists($heatmapImageSrc);
+ if($heatmapImageFileNamePresent){ //ce je prisotna datoteka heatmap slike
+ $heatmapImage = '\includegraphics[scale=0.5]{'.$heatmapImageFileName.'}';
+ }else{ //ce ni
+ //$heatmapImage = 'Pred izvozom, zgenerirajte heatmap';
+ $heatmapImage = $lang['export_analysis_heatmap_msg'];
+ }
+ $tex .= " & \multicolumn{".$steviloPodStolpcev1."}{c|}{".$heatmapImage."} ".$this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ /*Konec naslovnih vrstic*/
+
+ //tretja vrstica
+ $tex .= " \multicolumn{".$steviloStolpcevParameterTabular."}{|c|}{".$this->encodeText($lang['srv_analiza_heatmap_clicked_coords'])."} ".$this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //tretja vrstica - konec
+
+
+ $brezHline = $this->getBrezHline($export_format);
+
+ //cetrta vrstica
+ $cetrtaVrstica = array();
+ $cetrtaVrstica[] = $this->encodeText($lang['coordinates']);
+ $cetrtaVrstica[] = $this->encodeText($lang['srv_analiza_opisne_valid_heatmap']);
+ $cetrtaVrstica[] = $this->encodeText($lang['srv_analiza_num_units_valid_heatmap']);
+ $cetrtaVrstica[] = $this->encodeText($lang['srv_means_label']);
+ $cetrtaVrstica[] = $this->encodeText($lang['srv_analiza_opisne_odklon']);
+ $cetrtaVrstica[] = $this->encodeText($lang['srv_analiza_opisne_min']);
+ $cetrtaVrstica[] = $this->encodeText($lang['srv_analiza_opisne_max']);
+ $tex .= $this->tableRow($cetrtaVrstica, $brezHline);
+ //cetrta vrstica - konec
+
+ //vrstici s podatki za x in y koordinati
+ //peta vrstica x
+ $petaVrstica = array();
+ $petaVrstica[] = 'x';
+ $petaVrstica[] = $this->encodeText($validHeatmapRegion);
+ $petaVrstica[] = $this->encodeText($ustrezniHeatmapRegion);
+ $petaVrstica[] = $this->encodeText($povprecjeHeatmapClicksX);
+ $petaVrstica[] = $this->encodeText($stdevHeatmapClicksX);
+ $petaVrstica[] = $this->encodeText($minHeatmapClicksX);
+ $petaVrstica[] = $this->encodeText($maxHeatmapClicksX);
+ $tex .= $this->tableRow($petaVrstica, $brezHline);
+ //peta vrstica x - konec
+
+ //sesta vrstica y
+ $sestaVrstica = array();
+ $sestaVrstica[] = 'y';
+ $sestaVrstica[] = $this->encodeText($validHeatmapRegion);
+ $sestaVrstica[] = $this->encodeText($ustrezniHeatmapRegion);
+ $sestaVrstica[] = $this->encodeText($povprecjeHeatmapClicksY);
+ $sestaVrstica[] = $this->encodeText($stdevHeatmapClicksY);
+ $sestaVrstica[] = $this->encodeText($minHeatmapClicksY);
+ $sestaVrstica[] = $this->encodeText($maxHeatmapClicksY);
+ $tex .= $this->tableRow($sestaVrstica, $brezHline);
+ //sesta vrstica y - konec
+ //vrstici s podatki za x in y koordinati - konec
+
+ //preveri, ali je prisotno kaksno obmocje, nadaljuj izris tabele
+ $RegionPresent = self::HeatmapRegionPresence($spremenljivka['grids'], $spid, $_valid_answers);
+ //preveri, ali je prisotno kaksno obmocje, nadaljuj izris tabele - konec
+
+ if($RegionPresent){ //ce imamo obmocja
+ //7. vrstica - naslovna za obmocja
+ $tex .= " \multicolumn{".$steviloStolpcevParameterTabular."}{|c|}{".$this->encodeText($lang['srv_analiza_heatmap_clicked_regions'])."} ".$this->texNewLine;
+ if($export_format != 'xls'){
+ $tex .= $this->horizontalLineTex; /*obroba*/
+ }
+ //konec - 7. vrstice
+
+ //8. vrstica
+ $osmaVrstica = array();
+ $osmaVrstica[] = $this->encodeText($lang['srv_analiza_opisne_frequency_heatmap']);//od tretjega stolpca dalje, ker prva dva sta za naslov Obmocja kot multicolumn
+ $osmaVrstica[] = $this->encodeText($lang['srv_analiza_opisne_valid_heatmap']);
+ $osmaVrstica[] = $this->encodeText('% - '.$lang['srv_analiza_opisne_valid_heatmap']);
+ $osmaVrstica[] = $this->encodeText($lang['srv_analiza_num_units_valid_heatmap']);
+ $osmaVrstica[] = $this->encodeText('% - '.$lang['srv_analiza_num_units_valid_heatmap']);
+
+ $tex .= " \multicolumn{2}{|c|}{".$this->encodeText($lang['srv_hot_spot_regions_menu'])."} ";
+ $tex .= $this->tableRow($osmaVrstica, 0, 0, 1);
+ //echo $tex;
+ //8. vrstica - konec
+
+ $_answersOther = array();
+ $_grids_count = count($spremenljivka['grids']);
+ $_css_bck = 'anl_bck_desc_2 anl_ac anl_bt_dot ';
+ $last = 0;
+
+ if ($_grids_count > 0) {
+ $_row = $spremenljivka['grids'][0];
+ $indeks = 0;
+ //$veljavnaSkupnaFreq = 0;
+ if (count($_row['variables'])>0){
+ foreach ($_row['variables'] AS $rid => $_col ){
+ $_sequence = $_col['sequence']; # id kolone z podatki
+ if ($_col['other'] != true) {
+ if($indeks != 0){
+ //echo "_col: ".strip_tags ($_col['naslov'])."</br>";
+ //od 9. vrstice dalje, kjer so po vrsticah obmocja in njihovi podatki
+ $devetaVrstica = array();
+ //1. stolpcev z imenom obmocja
+ //echo $_col['naslov'];
+ //$devetaVrstica[] = $this->encodeText($_col['naslov']);
+ $devetaVrstica[] = " \multicolumn{2}{|c|}{".$this->encodeText($_col['naslov'])."} ";
+ //$tex .= " \multicolumn{2}{|c|}{".$this->encodeText($_col['naslov'])."} ";
+ //1. stolpcev z imenom obmocja - konec
+
+ //2. stolpec - Frekvenca
+ $freqHeatmapRegion = SurveyAnalysis::freqHeatmapRegion($spremenljivka['grids'], $spid, $_valid_answers, $indeks, $export);
+ $veljavnaSkupnaFreq = $veljavnaSkupnaFreq + $freqHeatmapRegion;
+ //echo '<td class="anl_bl anl_br anl_bb anl_ac">'.$freqHeatmapRegion.'</td>';
+ //$devetaVrstica[] = $this->encodeText($freqHeatmapRegion);
+ $devetaVrstica[] = $freqHeatmapRegion;
+ //2. stolpec - Frekvenca - konec
+
+ //3. stolpec - Veljavni
+ //$validHeatmapRegion = self::validHeatmapRegion($spremenljivka['grids'], $spid, $_valid_answers);
+ //echo '<td class="anl_bl anl_br anl_bb anl_ac">'.$validHeatmapRegion.'</td>';
+ $devetaVrstica[] = $this->encodeText($validHeatmapRegion);
+ //3. stolpec - Veljavni - konec
+
+ //4. stolpec - % Veljavni
+ $_procentValidHeatmapRegion = ($validHeatmapRegion > 0 ) ? 100*$freqHeatmapRegion / $validHeatmapRegion : 0;
+ $_procentValidHeatmapRegion = self::formatNumber($_procentValidHeatmapRegion, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'),'%');
+ //echo '<td class="anl_bl anl_br anl_bb anl_ac">'.$_procentValidHeatmapRegion.'</td>';
+ $devetaVrstica[] = $this->encodeText($_procentValidHeatmapRegion);
+ //4. stolpec - % Veljavni - konec
+
+ //5. stolpec - Ustrezni
+ $ustrezniHeatmapRegion = SurveyAnalysis::ustrezniHeatmapRegion($spid, $_valid_answers, $_sequence); //vsi mozni kliki
+ //echo '<td class="anl_bl anl_br anl_bb anl_ac">'.$ustrezniHeatmapRegion.'</td>';
+ $devetaVrstica[] = $this->encodeText($ustrezniHeatmapRegion);
+ //5. stolpec - Ustrezni - konec
+
+ //6. stolpec - % Ustrezni
+ $_procentUstrezniHeatmapRegion = ($ustrezniHeatmapRegion > 0 ) ? 100*$freqHeatmapRegion / $ustrezniHeatmapRegion : 0;
+ $_procentUstrezniHeatmapRegion = self::formatNumber($_procentUstrezniHeatmapRegion, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'),'%');
+ //echo '<td class="anl_bl anl_br anl_bb anl_ac">'.$_procentUstrezniHeatmapRegion.'</td>';
+ $devetaVrstica[] = $this->encodeText($_procentUstrezniHeatmapRegion);
+ //6. stolpec - % Ustrezni - konec
+
+ $tex .= $this->tableRow($devetaVrstica, $brezHline);
+ //echo $tex;
+ //od 9. vrstice dalje, kjer so po vrsticah obmocja in njihovi podatki - konec
+
+ //*********** Izris veljavnih in manjkajocih vrednosti
+ $counter = 0;
+ $options['isTextAnswer'] = false;
+ $manjkajoci = $ustrezniHeatmapRegion - $validHeatmapRegion;
+
+ //10. vrstica
+ //$validHeatmapRegion
+ //echo $validHeatmapRegion;
+ //echo "validHeatmapRegion: ".$validHeatmapRegion."</br>";
+ //$counter = SurveyAnalysis::outputSumaValidAnswerHeatmap($counter,$_sequence,$spid,$options, $validHeatmapRegion);
+ $desetaVrstica = array();
+ $desetaVrstica[] = $this->encodeText($lang['srv_analiza_opisne_valid']);
+ $desetaVrstica[] = $this->encodeText($lang['srv_analiza_manjkajocevrednosti']);
+ $desetaVrstica[] = $validHeatmapRegion;
+ $desetaVrstica[] = " \multicolumn{4}{|c|}{ } ";
+ $tex .= $this->tableRow($desetaVrstica, $brezHline);
+ //10. vrstica - konec
+
+ //11. vrstica
+ $enajstaVrstica = array();
+ $enajstaVrstica[] = $this->encodeText($lang['srv_anl_missing1']);
+ $enajstaVrstica[] = $this->encodeText($lang['srv_analiza_manjkajocevrednosti']);
+ $enajstaVrstica[] = $manjkajoci;
+ $enajstaVrstica[] = " \multicolumn{4}{|c|}{ } ";
+ $tex .= $this->tableRow($enajstaVrstica, $brezHline);
+ //11. vrstica - konec
+
+ //12. vrstica
+ $dvanajstaVrstica = array();
+ $dvanajstaVrstica[] = " \multicolumn{2}{|c|}{".$this->encodeText($lang['srv_anl_suma_valid'])." } ";
+ $dvanajstaVrstica[] = $ustrezniHeatmapRegion;
+ $dvanajstaVrstica[] = " \multicolumn{4}{|c|}{ } ";
+ $tex .= $this->tableRow($dvanajstaVrstica, $brezHline);
+ //12. vrstica - konec
+
+/* if (count(SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalid'])> 0 ) {
+ foreach (SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalid'] AS $ikey => $iAnswer) {
+ if ($iAnswer['cnt'] > 0 ) { # izpisujemo samo tiste ki niso 0
+ //$counter = SurveyAnalysis::outputInvalidAnswerHeatmap($counter,$ikey,$iAnswer,$_sequence,$spid,$options, $manjkajoci);
+ //$_percent = (SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt'] > 0 ) ? 100*$iAnswer['cnt'] / SurveyAnalysis::$_FREQUENCYS[$_sequence]['allCnt'] : 0;
+ $_invalid = (SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalidCnt'] > 0 ) ? 100*$iAnswer['cnt'] / SurveyAnalysis::$_FREQUENCYS[$_sequence]['invalidCnt'] : 0;
+ echo "_invalid: ".$_invalid."</br>";
+ //echo "_percent: ".$_percent."</br>";
+ }
+ }
+ # izpišemo sumo neveljavnih
+ //$counter = SurveyAnalysis::outputSumaInvalidAnswerHeatmap($counter,$_sequence,$spid,$options, $manjkajoci);
+ echo "manjkajoci: ".$manjkajoci."</br>";
+ } */
+ #izpišemo še skupno sumo
+ //$counter = SurveyAnalysis::outputSumaHeatmap($counter,$_sequence,$spid,$options, $ustrezniHeatmapRegion);
+ //$ustrezniHeatmapRegion
+ //echo "ustrezniHeatmapRegion: ".$ustrezniHeatmapRegion."</br>";
+ $veljavnaSkupnaFreq = 0;
+ }
+ //*********** Izris veljavnih in manjkajocih vrednosti - konec
+
+ } else {
+ $_answersOther[] = array('spid'=>$spid,'gid'=>$gid,'vid'=>$vid,'sequence'=>$_sequence);
+ }
+ $indeks++;
+ }
+ }
+ }
+ }
+
+
+ # izpišemo še tekstovne odgovore za polja drugo
+/* if (count($_answersOther) > 0 && self::$_FILTRED_OTHER) {
+ foreach ($_answersOther AS $oAnswers) {
+ echo '<div class="div_other_text">';
+ self::outputOtherAnswers($oAnswers);
+ echo '</div>';
+ }
+ } */
+
+
+ //zaljucek latex tabele z obrobo za drugo tabelo
+ $tex .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za drugo tabelo - konec
+
+/* if (count($spremenljivka['grids']) > 0) {
+
+ } */
+ //echo "Latex tabele: ".$tex."</br>";
+
+ return $tex;
+ }
+
+
+
+ //izrisemo dinamicne celice (podamo sirino, stevilo celic in vsebino)
+ //function dynamicCells($arrayText, $count, $width, $height, $arrayParams=array()){
+ //izrisemo dinamicne celice (podamo stevilo celic in vsebino)
+ function dynamicCells($arrayText=null, $count=null){
+ $texDynamicCells = '';
+ if($arrayText[0] == '')
+ $arrayText[0] = '';
+
+ /*$linecount = $this->pdf->getNumLines($this->encodeText($arrayText[1]), 30);
+ $linecount == 1 ? $height = 1 : $height = 4.7 + ($linecount-1)*3.3;*/
+ $text = array();
+ for($i=0; $i<$count-1; $i++){
+ //for($i=0; $i<$count; $i++){
+ if($arrayText[$i] == '')
+ $arrayText[$i] = '';
+ /*$this->pdf->MultiCell($singleWidth, $height, $this->encodeText($arrayText[$i]), 1, 'C', 0, 0, 0 ,0, true);*/
+
+ /*$texDynamicCells .= $this->encodeText($arrayText[$i]);*/
+ $text[$i] = $this->encodeText($arrayText[$i]);
+ }
+
+ //zadnje polje izrisemo druge sirine ker se drugace zaradi zaokrozevanja tabela porusi
+ /*$lastWidth = ($lastWidth < 4) ? 4 : $lastWidth;*/
+ if($count > 0){
+ /*$this->pdf->MultiCell($lastWidth, $height, $this->encodeText($arrayText[$count-1]), 1, 'C', 0, 0, 0 ,0, true);*/
+
+ /*$texDynamicCells .= $this->encodeText($arrayText[$count-1]);*/
+ $text[$count-1] = $this->encodeText($arrayText[$count-1]);
+ }else{
+ /*$this->pdf->MultiCell($lastWidth, $height, $this->encodeText(''), 1, 'C', 0, 0, 0 ,0, true);*/
+
+ /*$texDynamicCells .= $this->encodeText('');*/
+ $text[$count-1] = $this->encodeText('');
+ }
+
+ $brezHline = 1;
+ $brezNoveVrstice = 1;
+ $texDynamicCells .= $this->tableRow($text, $brezHline, $brezNoveVrstice);
+ //echo "texDynamicCells: ".$texDynamicCells."</br>";
+ return $texDynamicCells;
+ }
+
+ function getCellHeight($string='', $width=null){
+
+ // Star nacin
+ //$linecount = $this->pdf->getNumLines($this->encodeText($string), $width);
+ //$height = ( $linecount == 1 ? 4.7 : (4.7 + ($linecount-1)*3.5) );
+
+ $this->pdf->startTransaction();
+ // get the number of lines calling you method
+ $linecount = $this->pdf->MultiCell($width, 0, $string, 0, 'L', 0, 0, '', '', true, 0, false, true, 0);
+ // restore previous object
+ $this->pdf = $this->pdf->rollbackTransaction();
+
+ $height = ($linecount <= 1) ? 4.7 : $linecount * ($this->pdf->getFontSize() * $this->pdf->getCellHeightRatio()) + 2;
+
+ return $height;
+ }
+
+ static function HeatmapRegionPresence($spremenljivkaGrids=null, $spid=null, $_valid_answers=null){
+ $HeatmapRegionPresence = false;
+ foreach ($spremenljivkaGrids AS $gid => $grid){
+ $_variables_count = count($grid['variables']);
+ if ($_variables_count > 0){
+ # preštejemo max vrstic na grupo
+ $_max_i = 0;
+ //$numObmocij = 0;
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ $_max_i = max($_max_i,min($num_show_records,SurveyAnalysis::$_FREQUENCYS[$_sequence]['validCnt']));
+ //$numObmocij++;
+ }
+ $indeksZaObmocja = 0;
+ foreach ($grid['variables'] AS $vid => $variable ){
+ $_sequence = $variable['sequence']; # id kolone z podatki
+ if ($variable['other'] != true)
+ {
+ if (count($_valid_answers) > 0) {
+
+ foreach ($_valid_answers AS $answer) {
+ $_ans = $answer[$_sequence];
+ if ($_ans != null && $_ans != '' && $indeksZaObmocja >= count($_valid_answers))
+ {
+ $HeatmapRegionPresence = true;
+ }
+ $indeksZaObmocja++;
+ }
+ }
+ }
+
+ }
+ }
+ }
+ return $HeatmapRegionPresence;
+ }
+}
+
+?> \ No newline at end of file
diff --git a/admin/survey/export/latexclasses/Analize/AnalizaTTest.php b/admin/survey/export/latexclasses/Analize/AnalizaTTest.php
new file mode 100644
index 0000000..a0f832b
--- /dev/null
+++ b/admin/survey/export/latexclasses/Analize/AnalizaTTest.php
@@ -0,0 +1,413 @@
+<?php
+
+ global $site_path;
+
+ include_once('../../function.php');
+ include_once('../survey/definition.php');
+
+
+ define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
+ define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
+
+ define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
+ define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
+
+ define("M_ANALIZA_DESCRIPTOR", "descriptor");
+ define("M_ANALIZA_FREQUENCY", "frequency");
+
+ define("FNT_FREESERIF", "freeserif");
+ define("FNT_FREESANS", "freesans");
+ define("FNT_HELVETICA", "helvetica");
+
+ define("FNT_MAIN_TEXT", FNT_FREESANS);
+ define("FNT_QUESTION_TEXT", FNT_FREESANS);
+ define("FNT_HEADER_TEXT", FNT_FREESANS);
+
+ define("FNT_MAIN_SIZE", 10);
+ define("FNT_QUESTION_SIZE", 9);
+ define("FNT_HEADER_SIZE", 10);
+
+ define("RADIO_BTN_SIZE", 3);
+ define("CHCK_BTN_SIZE", 3);
+ define("LINE_BREAK", 6);
+
+ define ('PDF_MARGIN_HEADER', 8);
+ define ('PDF_MARGIN_FOOTER', 12);
+ define ('PDF_MARGIN_TOP', 18);
+ define ('PDF_MARGIN_BOTTOM', 18);
+ define ('PDF_MARGIN_LEFT', 15);
+ define ('PDF_MARGIN_RIGHT', 15);
+
+
+/** Class za generacijo izvoza v Latex
+ *
+ * @desc: po novem je potrebno form elemente generirati ro�no kot slike
+ *
+ */
+class AnalizaTTest extends LatexAnalysisElement{
+
+ var $anketa;// = array(); // trenutna anketa
+
+ var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
+ var $pdf;
+ var $currentStyle;
+ var $db_table = '';
+
+ public $ttestClass = null; //ttest class
+
+ var $ttestVars;
+
+ var $sessionData; // podatki ki so bili prej v sessionu - za nastavitve, ki se prenasajo v izvoze...
+
+ protected $texNewLine = '\\\\ ';
+ protected $export_format;
+ protected $horizontalLineTex = "\\hline ";
+
+ /**
+ * @desc konstruktor
+ */
+ function __construct ($anketa = null, $podstran = 'ttest')
+ {
+ global $site_path;
+ global $global_user_id;
+
+ // preverimo ali imamo stevilko ankete
+ if ( is_numeric($anketa) )
+ {
+ $this->anketa['id'] = $anketa;
+ $this->anketa['podstran'] = $podstran;
+ // create new PDF document
+ //$this->pdf = new enka_TCPDF('L', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
+ }
+ else
+ {
+ $this->pi['msg'] = "Anketa ni izbrana!";
+ $this->pi['canCreate'] = false;
+ return 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=null)
+ {
+ //Close and output PDF document
+ ob_end_clean();
+ $this->pdf->Output($fileName, 'I');
+ }
+
+
+ function init()
+ {
+ global $lang;
+
+ // array used to define the language and charset of the pdf file to be generated
+ $language_meta = Array();
+ $language_meta['a_meta_charset'] = 'UTF-8';
+ $language_meta['a_meta_dir'] = 'ltr';
+ $language_meta['a_meta_language'] = 'sl';
+ $language_meta['w_page'] = $lang['page'];
+
+ //set some language-dependent strings
+ $this->pdf->setLanguageArray($language_meta);
+
+ //set margins
+ $this->pdf->setPrintHeaderFirstPage(true);
+ $this->pdf->setPrintFooterFirstPage(true);
+ $this->pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
+ $this->pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
+ $this->pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
+
+ // set header and footer fonts
+ $this->pdf->setHeaderFont(Array(FNT_HEADER_TEXT, "I", FNT_HEADER_SIZE));
+ $this->pdf->setFooterFont(Array(FNT_HEADER_TEXT, 'I', FNT_HEADER_SIZE));
+
+
+ // set document information
+ $this->pdf->SetAuthor('An Order Form');
+ $this->pdf->SetTitle('An Order');
+ $this->pdf->SetSubject('An Order');
+
+ // set default header data
+ $this->pdf->SetHeaderData(null, null, "www.1ka.si", $this->encodeText(SurveyInfo::getInstance()->getSurveyAkronim()));
+
+ //set auto page breaks
+ $this->pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
+
+ $this->pdf->SetFont(FNT_MAIN_TEXT, '', FNT_MAIN_SIZE);
+ //set image scale factor
+ $this->pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
+ return true;
+ }
+
+ public function displayTTestTable($ttest=null, $ttestClass=null, $export_format='', $sessionData=null) {
+ global $lang;
+ $tabela = '';
+
+ $this->ttestClass = $ttestClass;
+ $this->sessionData = $sessionData;
+
+ # preverimo ali imamo izbrano odvisno spremenljivko
+ $spid1 = $this->sessionData['ttest']['variabla'][0]['spr'];
+ $seq1 = $this->sessionData['ttest']['variabla'][0]['seq'];
+ $grid1 = $this->sessionData['ttest']['variabla'][0]['grd'];
+
+ if (is_array($ttest) && count($ttest) > 0 && (int)$seq1 > 0) {
+
+ $spr_data_1 = $this->ttestClass->_HEADERS[$spid1];
+ if ($grid1 == 'undefined') {
+
+ # imamp lahko več variabel
+ $seq = $seq1;
+ foreach ($spr_data_1['grids'] as $gkey => $grid ) {
+
+ foreach ($grid['variables'] as $vkey => $variable) {
+ $sequence = $variable['sequence'];
+ if ($sequence == $seq) {
+ $sprLabel1 = '('.$variable['variable'].') '. $variable['naslov'];
+ }
+ }
+ }
+ } else {
+ # imamo subgrid
+ $sprLabel1 = '('.$spr_data_1['grids'][$grid1]['variable'].') '. $spr_data_1['grids'][$grid1]['naslov'];
+ }
+
+ //Priprava parametrov za tabelo
+ $steviloStolpcevParameterTabular = 10;
+ $steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
+ $sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
+ $parameterTabular = '|';
+
+ for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
+ //ce je prvi stolpec
+ if($i == 0){
+ $parameterTabular .= ($export_format == 'pdf' ? 'C|' : 'c|');
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|');
+ }else{
+ $parameterTabular .= ($export_format == 'pdf' ? 'C|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? 'X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ //$parameterTabular .= ($export_format == 'pdf' ? '>{\hsize='.$sirinaOstalihStolpcev.'\hsize \centering\arraybackslash}X|' : 'c|'); /*sirina ostalih je odvisna od njihovega stevila, da se sirine razporedijo po celotni sirini tabele*/
+ }
+ }
+ //Priprava parametrov za tabelo - konec
+
+ //zacetek latex tabele z obrobo za prvo tabelo
+ $pdfTable = 'tabularx';
+ $rtfTable = 'tabular';
+ $pdfTableWidth = 1;
+ $rtfTableWidth = 1;
+
+ $tabela .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
+ if($export_format != 'xls'){
+ $tabela .= $this->horizontalLineTex; /*obroba*/
+ }
+
+ //zacetek latex tabele z obrobo za prvo tabelo - konec
+
+ # polovio labele
+ $spid2 = $this->sessionData['ttest']['spr2'];
+ $sprLabel2 = trim(str_replace('&nbsp;','',$this->sessionData['ttest']['label2']));
+ $label1 = $this->ttestClass->getVariableLabels($this->sessionData['ttest']['sub_conditions'][0]);
+ $label2 = $this->ttestClass->getVariableLabels($this->sessionData['ttest']['sub_conditions'][1]);
+
+ $this->ttestVars = array($sprLabel1, $sprLabel2);
+
+ if($export_format != 'xls'){
+ //$poravnava = "C";
+ $poravnava = "c";
+ }else{
+ $poravnava = "c";
+ }
+
+ $poravnava = "c";
+
+ $tabela .= " & \multicolumn{".$steviloOstalihStolpcev."}{".$poravnava."|}{".$this->returnBold($this->encodeText($sprLabel1))."} ".$this->texNewLine;
+ //$tabela .= ' & \multicolumn{'.$steviloOstalihStolpcev.'}{>{\hsize=\dimexpr '.($steviloOstalihStolpcev).'\hsize + '.($steviloOstalihStolpcev).'\tabcolsep + \arrayrulewidth}X|}{'.$this->returnBold($this->encodeText($sprLabel1)).'} '.$this->texNewLine;
+ // prva vrstica - konec
+
+ // druga vrstica
+ if($export_format != 'xls'){
+ $tabela .= "\\cline{2-".$steviloStolpcevParameterTabular."} "; //horizontalna vrstica od 2 do zadnje celice
+ }
+ $druga = array();
+ $druga[] = $this->returnBold($this->encodeText($sprLabel2));
+ $druga[] = 'n';
+ $druga[] = 'x';
+ $druga[] = 's$^2$';
+ $druga[] = 'se(x)';
+ $druga[] = '$\pm$1,96$\times$se(x)';
+ $druga[] = 'd';
+ $druga[] = 'se(d)';
+ $druga[] = 'Sig.';
+ $druga[] = 't';
+
+ $brezHline = $this->getBrezHline($export_format);
+
+ $tabela .= $this->tableRow($druga, $brezHline)." ";
+ // druga vrstica - konec
+
+ // vrstici s podatki
+ $zadnjiStolpecDvojnihVrstic = 6;
+
+ //tretja vrstica
+ $tretja = array();
+ $tretja[] = $this->encodeText($label1); //1. stolpec
+ $tretja[] = $this->formatNumber($ttest[1]['n'], 0);
+ $tretja[] = $this->formatNumber($ttest[1]['x'], 3);
+ $tretja[] = $this->formatNumber($ttest[1]['s2'], 3);
+ $tretja[] = $this->formatNumber($ttest[1]['se'], 3);
+ $tretja[] = $this->formatNumber($ttest[1]['margin'], 3);
+ $tretja[] = '';
+ $tretja[] = '';
+ $tretja[] = '';
+ $tretja[] = '';
+ $tabela .= $this->tableRow($tretja, 1)." "; //izpisi tretjo vrstico brez horizontalne crte
+ //tretja vrstica - konec
+
+ //cetrta vrstica
+ $cetrta = array();
+ if($export_format != 'xls'){
+ $cetrta[] = '\cline{1-'.$zadnjiStolpecDvojnihVrstic.'} '.$this->encodeText($label2); //1. stolpec, //crta samo do dolocenega stolpca
+ }else{
+ $cetrta[] = $this->encodeText($label2); //1. stolpec, //crta samo do dolocenega stolpca
+ }
+ $cetrta[] = $this->formatNumber($ttest[2]['n'], 0);
+ $cetrta[] = $this->formatNumber($ttest[2]['x'], 3);
+ $cetrta[] = $this->formatNumber($ttest[2]['s2'], 3);
+ $cetrta[] = $this->formatNumber($ttest[2]['se'], 3);
+ $cetrta[] = $this->formatNumber($ttest[2]['margin'], 3);
+ $cetrta[] = $this->formatNumber($ttest['d'], 3);
+ $cetrta[] = $this->formatNumber($ttest['sed'], 3);
+ $cetrta[] = $this->formatNumber($ttest['sig'], 3);
+ $cetrta[] = $this->formatNumber($ttest['t'], 3);
+ $tabela .= $this->tableRow($cetrta, $brezHline)." ";
+ //cetrta vrstica - konec
+
+ // vrstici s podatki - konec
+
+ //zaljucek latex tabele z obrobo za prvo tabelo
+ $tabela .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
+ //zaljucek latex tabele z obrobo za prvo tabelo - konec
+ }
+
+ return $tabela;
+ }
+
+ function displayChart($sessionData=null, $ttestClass=null, $anketa=null, $creport=false){
+ global $lang;
+
+ $this->sessionData = $sessionData;
+ $this->ttestClass = $ttestClass;
+ $this->anketa = $anketa;
+
+ $texImage = '';
+
+ $tableChart = new SurveyTableChart($this->anketa['id'], $this->ttestClass, 'ttest');
+ $tableChart->setTTestChartSession();
+
+ // updatamo session iz baze
+ $this->sessionData = SurveyUserSession::getData();
+
+ $spid1 = $this->sessionData['ttest']['variabla'][0]['spr'];
+ $seq1 = $this->sessionData['ttest']['variabla'][0]['seq'];
+ $grid1 = $this->sessionData['ttest']['variabla'][0]['grd'];
+ $sub1 = $this->sessionData['ttest']['sub_conditions'][0];
+ $sub2 = $this->sessionData['ttest']['sub_conditions'][1];
+ $chartID = $sub1.'_'.$sub2.'_'.$spid1.'_'.$seq1.'_'.$grid1;
+
+ $settings = $this->sessionData['ttest_charts'][$chartID];
+ $imgName = $settings['name'];
+
+ copy('pChart/Cache/'.$imgName,'pChart/Cache/'.$imgName.'.png');
+
+ if($creport==false){
+ // Naslov posameznega grafa
+ $title = $lang['srv_chart_ttest_title'].':'.$this->texNewLine;
+ $title .= $this->encodeText($this->ttestVars[0]);
+ $title .= $this->encodeText('/');
+ $title .= $this->encodeText($this->ttestVars[1]);
+ $boldedTitle = $this->returnBold($title).$this->texNewLine; //vrni boldan naslov in skoci v novo vrstico
+ }else{
+ $boldedTitle = '';
+ }
+ $texImageOnly = " \\includegraphics[scale=0.75]{".$imgName."} "; //latex za sliko
+
+ $texImage .= $this->returnCentered($boldedTitle.$texImageOnly); //vrni sredinsko poravnana naslov in slika
+
+ return $texImage;
+ }
+
+
+ /*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 drawLine()
+ {
+ $cy = $this->pdf->getY();
+ $this->pdf->Line(15, $cy , 195, $cy , $this->currentStyle);
+ }
+
+ 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;
+ }
+
+ function getCellHeight($string='', $width=null){
+
+ $this->pdf->startTransaction();
+ // get the number of lines calling you method
+ $linecount = $this->pdf->MultiCell($width, 0, $string, 0, 'L', 0, 0, '', '', true, 0, false, true, 0);
+ // restore previous object
+ $this->pdf = $this->pdf->rollbackTransaction();
+
+ $height = ($linecount <= 1) ? 4.7 : $linecount * ($this->pdf->getFontSize() * $this->pdf->getCellHeightRatio()) + 2;
+
+ return $height;
+ }
+
+}
+
+?> \ No newline at end of file