false); // za shrambo parametrov in sporocil protected $pdf; protected $currentStyle; protected $spremenljivka = null; private $headFileName = null; # pot do header fajla protected $current_loop = 'undefined'; protected $texNewLine = '\\\\ '; protected $texBigSkip = '\bigskip'; function __construct($anketa=null, $export_format='', $sprID = null){ global $site_path, $global_user_id, $admin_type, $lang; // preverimo ali imamo stevilko ankete if ( is_numeric($anketa) ){ $this->anketa['id'] = $anketa; $this->spremenljivka = $sprID; $this->export_format = $export_format; //echo 'To je tip analysis za anketo: '.$anketa.' za '.$this->export_format.'
'; SurveyAnalysis::Init($this->anketa['id']); SurveyAnalysis::$setUpJSAnaliza = false; // Poskrbimo za datoteko s podatki $SDF = SurveyDataFile::get_instance(); $SDF->init($this->anketa['id']); $SDF->prepareFiles(); $this->headFileName = $SDF->getHeaderFileName(); $loop = SurveyZankaProfiles :: Init($this->anketa, $global_user_id); $this->current_loop = ($loop != null) ? $loop : $this->current_loop; }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; } public function displayAnalysis($export_subtype=''){ global $lang; $tex = ''; // Pripravimo podatke, ki se uporabijo v tabelah # preberemo header if ($this->headFileName !== null) { //polovimo podatke o nastavitvah trenutnega profila (missingi..) SurveyMissingProfiles :: Init($this->spremenljivka,$this->anketa['uid']); SurveyAnalysis::$missingProfileData = SurveyMissingProfiles::getProfile(SurveyAnalysis::$currentMissingProfile); // Preverimo ce imamo zanke (po skupinah) SurveyAnalysis::$_LOOPS = SurveyZankaProfiles::getFiltersForLoops(); #preberemo HEADERS iz datoteke SurveyAnalysis::$_HEADERS = unserialize(file_get_contents($this->headFileName)); //echo $this->headFileName."
"; # polovimo frekvence SurveyAnalysis::getFrequencys(); #odstranimo sistemske variable SurveyAnalysis::removeSystemVariables(); //$vars_count = count(SurveyAnalysis::$_FILTRED_VARIABLES); /*Izpis naslova izvoza*/ switch ( $export_subtype ){ case 'sums': $naslovIzvoza = $lang['export_analisys_sums']; break; case 'freq': $naslovIzvoza = $lang['export_analisys_freq']; break; case 'desc': $naslovIzvoza = $lang['export_analisys_desc']; break; case 'chart': $naslovIzvoza = $lang['export_analisys_charts']; break; case 'crosstab': $naslovIzvoza = $lang['export_analisys_crosstabs']; break; case 'multicrosstab': $naslovIzvoza = $lang['export_analisys_multicrosstabs']; break; case 'mean': $naslovIzvoza = $lang['export_analisys_means']; break; case 'ttest': $naslovIzvoza = $lang['export_analisys_ttest']; break; case 'break': $naslovIzvoza = $lang['export_analisys_break']; break; case 'heatmap_image_pdf': $naslovIzvoza = $lang['export_analysis_heatmap_image']; break; } if($export_subtype!='creport'){ //$tex .= '\textbf{'.$naslovIzvoza.'}'.$this->texBigSkip.$this->texNewLine; $tex .= '\MakeUppercase{\huge \textbf{'.$naslovIzvoza.'}}'.$this->texBigSkip.$this->texNewLine; //{\\huge {'.$imeAnkete.'} \\par} } /*Izpis naslova izvoza - konec*/ //if($this->export_format == 'pdf'){ if($this->export_format == 'pdf'&&$export_subtype!='creport'){ $tex .= '\begin{tableAnalysis}'; /*zacetek environmenta z manjsim fontom*/ } switch ($export_subtype){ case 'sums': case 'freq': foreach (SurveyAnalysis::$_HEADERS AS $spid => $spremenljivka) { $analysisTable = new LatexAnalysisElement($this->anketa, $spremenljivka, $this->export_format, 0, $spid, $this->headFileName, $export_subtype); //if(SurveyAnalysis::$_FILTRED_VARIABLES[$spid]){ if ((isset($spremenljivka['tip']) && $spremenljivka['tip'] != 'm' && in_array($spremenljivka['tip'], SurveyAnalysis::$_FILTRED_TYPES )) && (!isset($_spid) || (isset($_spid) && $_spid == $spid)) && ($this->spremenljivka == $spid || $this->spremenljivka == null) ){ # če nimamo zank if(count(SurveyAnalysis::$_LOOPS) == 0){ $tex .= $analysisTable->displayTablesLatex($spid, $this->export_format); } else{ // izrisemo samo eno tabelo iz enega loopa if($this->current_loop > 0){ $loop = SurveyAnalysis::$_LOOPS[(int)$this->current_loop-1]; $loop['cnt'] = $this->current_loop; SurveyAnalysis::$_CURRENT_LOOP = $loop; // Izpisemo naslov zanke za skupino $tex .= $analysisTable->displayTablesLatex($spid, $this->export_format); } // Izrisemo vse tabele spremenljivka (iz vseh loopov) else{ $loop_cnt = 0; # če mamo zanke foreach(SurveyAnalysis::$_LOOPS AS $loop) { $loop_cnt++; $loop['cnt'] = $loop_cnt; SurveyAnalysis::$_CURRENT_LOOP = $loop; $tex .= $analysisTable->displayTablesLatex($spid, $this->export_format); } } } } } // end foreach SurveyAnalysis::$_HEADERS break; case 'desc': //$analysisTable = new LatexAnalysisElement($this->anketa, $spremenljivka, $this->export_format, 0, $spid, $this->headFileName, $export_subtype); $analysisTable = new LatexAnalysisElement($this->anketa, 0, $this->export_format, 0, 0, $this->headFileName, $export_subtype); # če nimamo zank if(count(SurveyAnalysis::$_LOOPS) == 0){ $tex .= $analysisTable->displayTablesLatex(0, $this->export_format); } else{ // izrisemo samo eno tabelo iz enega loopa if($this->current_loop > 0){ $loop = SurveyAnalysis::$_LOOPS[(int)$this->current_loop-1]; $loop['cnt'] = $this->current_loop; SurveyAnalysis::$_CURRENT_LOOP = $loop; // Izpisemo naslov zanke za skupino $tex .= $analysisTable->displayTablesLatex(0, $this->export_format); } // Izrisemo vse tabele spremenljivka (iz vseh loopov) else{ $loop_cnt = 0; # če mamo zanke foreach(SurveyAnalysis::$_LOOPS AS $loop) { $loop_cnt++; $loop['cnt'] = $loop_cnt; SurveyAnalysis::$_CURRENT_LOOP = $loop; $tex .= $analysisTable->displayTablesLatex(0, $this->export_format); } } } break; case 'crosstab': $tmp_data1 = isset($_GET['data1'])?$_GET['data1']:null; $tmp_data2 = isset($_GET['data2'])?$_GET['data2']:null; $crossData1 = explode(",", $tmp_data1); $crossData2 = explode(",", $tmp_data2); $analysisTable = new LatexAnalysisElement($this->anketa, 0, $this->export_format, 0, 0, $this->headFileName, $export_subtype); $tex .= $analysisTable->displayCrosstabsTablesLatex($crossData1, $crossData2); break; case 'multicrosstab': $analysisTable = new LatexAnalysisElement($this->anketa, 0, $this->export_format, 0, 0, $this->headFileName, $export_subtype); $tex .= $analysisTable->displayMultiCrosstabsTablesLatex(); break; case 'mean': $analysisTable = new LatexAnalysisElement($this->anketa, 0, $this->export_format, 0, 0, $this->headFileName, $export_subtype); $tex .= $analysisTable->displayMeanTablesLatex(); break; case 'ttest': $analysisTable = new LatexAnalysisElement($this->anketa, 0, $this->export_format, 0, 0, $this->headFileName, $export_subtype); $tex .= $analysisTable->displayTTestTablesLatex(); break; case 'break': $analysisTable = new LatexAnalysisElement($this->anketa, 0, $this->export_format, 0, 0, $this->headFileName, $export_subtype); $tex .= $analysisTable->displayBreakTablesLatex(); break; case 'heatmap_image_pdf': $analysisHeatmapImage = new LatexAnalysisElement($this->anketa, 0, $this->export_format, 0, 0, $this->headFileName, $export_subtype); $tmp_sprID = isset($_GET['sprID'])?$_GET['sprID']:null; $tex .= $analysisHeatmapImage->displayHeatmapImageLatex($tmp_sprID); break; case 'chart': $analysisChart = new LatexAnalysisElement($this->anketa, 0, $this->export_format, 0, 0, $this->headFileName, $export_subtype); $tmp_sprID = isset($_GET['sprID'])?$_GET['sprID']:null; $tex .= $analysisChart->displayChartLatex($tmp_sprID); break; case 'creport': $analysisCreport = new LatexAnalysisElement($this->anketa, 0, $this->export_format, 0, 0, $this->headFileName, $export_subtype); $tex .= $analysisCreport->displayCreportLatex(); break; } //if($this->export_format == 'pdf'){ if($this->export_format == 'pdf'&&$export_subtype!='creport'){ $tex .= '\end{tableAnalysis}'; /*zakljucek environmenta z manjsim fontom*/ } } // end if else ($_headFileName == null) return $tex; // Loop cez vsa vprasanja // Znotraj loopa vsak element posebej izrisemo kot objekt LatexFreqElement - pomembno, ker zelimo recimo posamezno tabelo frekvenc (sa specificno vprasanje) izrisati tudi v kaksnem drugem porocilu (npr custom report). Zato se mora vsak element neodvisno izrisovati. } }