'9966cc', 2 => 'cc0099', 3 => 'FFD700', 4 => 'cc6699', 5 => 'FFA500', 6 => '008000', 7 => '3399cc', 8 => '99cc33', 9 => '0099cc', 10 => '669900', 11 => '66cc99', 12 => 'FF0000', 13 => 'FF8C00', 14 => '99cccc', ); function __construct($anketa, $usr_id){ // Ce imamo anketo, smo v status->ul evealvacija if ((int)$anketa > 0 && (int)$usr_id > 0){ // Nastavimo id ankete $this->anketa = $anketa; // Nastavimo id respondenta $this->usr_id = $usr_id; # polovimo vrsto tabel (aktivne / neaktivne) SurveyInfo :: getInstance()->SurveyInit($this->anketa); $this->db_table = SurveyInfo::getInstance()->getSurveyArchiveDBString(); } else{ die(); //return false; } // Zakesiramo vprasanja z odgovori v array $this->cacheData(); } // Nastavimo imena vprasanj za vse teme (nijz radar) private function cacheData(){ // Napolnimo vprasanja $sql = sisplet_query("SELECT s.id, s.naslov, s.variable, s.label FROM srv_spremenljivka s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id='".$this->anketa."' AND s.variable LIKE 'radar%'"); while($row = mysqli_fetch_array($sql)){ $number = substr($row['variable'], 5); $this->vprasanja_radar[$number]['id'] = $row['id']; $this->vprasanja_radar[$number]['variable'] = $row['variable']; $this->vprasanja_radar[$number]['naslov'] = $row['label']; } ksort($this->vprasanja_radar); // Napolnimo odgovore za vse teme foreach($this->vprasanja_radar as $st_vprasanja => $tema){ $sqlData = sisplet_query("SELECT v.naslov, v.variable FROM srv_grupa g, srv_spremenljivka s, srv_vrednost v, srv_data_vrednost".$this->db_table." d WHERE s.id='".$tema['id']."' AND g.ank_id='".$this->anketa."' AND d.usr_id='".$this->usr_id."' AND s.id=v.spr_id AND s.gru_id=g.id AND d.vre_id=v.id AND d.spr_id=s.id "); if(mysqli_num_rows($sqlData) == 1){ $rowData = mysqli_fetch_array($sqlData); $this->vprasanja_radar[$st_vprasanja]['data'] = $rowData['variable']; } } } // Prikazemo radar graf po temah public function displayRadar(){ global $lang; global $site_url; $radar_image = $this->createRadar(); // CSS:) echo ''; echo '
'; echo '

Ocena bivalnega okolja

'; echo ''; echo '
'; } // Prikazemo radar graf po temah v pdf izvozu public function displayRadarLatex(){ global $lang; global $site_path; $this->createRadar(); $tex = ''; $tex .= '\graphicspath{ {'.$site_path.RESULTS_FOLDER.'/} }'; $radar_image = 'radar_'.$this->usr_id.'.png'; //$radar_image = 'radar.png'; // Vstavimo graf $tex .= ' \begin{center} \includegraphics[width=15cm]{'.$radar_image.'} \end{center} '; return $tex; } // Prikazemo tabelo po temah public function displayTable(){ global $lang; // CSS:) echo ''; echo '
'; //echo '

Naslov tabele

'; $half = round(count($this->vprasanja_radar) / 2); echo ''; for($i=1; $i<=$half; $i++) { echo ''; echo ''; echo ''; $j = $i + $half; echo ''; echo ''; echo ''; } echo '
'.$this->vprasanja_radar[$i]['naslov'].''.$this->vprasanja_radar[$i]['data'].''.$this->vprasanja_radar[$j]['naslov'].''.$this->vprasanja_radar[$j]['data'].'
'; echo '
'; } // Prikazemo tabelo po temah v pdf izvozu public function displayTableLatex(){ global $lang; $half = round(count($this->vprasanja_radar) / 2); $tex = ''; // Definiramo barve foreach($this->colors as $key => $color){ $tex .= '\definecolor{tablecolor'.$key.'}{HTML}{'.$color.'}'; } // Vstavimo tabelo $tex .= ' \begin{table}[h] \centering \begin{tabular}{|>{\raggedright}p{6cm}|c|>{\raggedright}p{6cm}|c|} '; for($i=1; $i<=$half; $i++) { $tex .= ' \hline '; $tex .= '\textcolor{tablecolor'.$i.'}{'.$this->vprasanja_radar[$i]['naslov'].'} & \textcolor{tablecolor'.$i.'}{'.$this->vprasanja_radar[$i]['data'].'} & '; $j = $i + $half; $tex .= '\textcolor{tablecolor'.$j.'}{'.$this->vprasanja_radar[$j]['naslov'].'} & \textcolor{tablecolor'.$j.'}{'.$this->vprasanja_radar[$j]['data'].'}'; $tex .= ' \\\\ '; } $tex .= ' \hline \end{tabular} \end{table} '; return $tex; } // Zgeneriramo pdf analizo public function createRadar(){ global $site_path; global $site_url; global $admin_type; // Najprej pocistimo morebitno obstojeco sliko grafa $this->deleteRadar(); // Zgeneriramo zacasne csv datoteke $this->prepareCSV(); $script = $site_path . SCRIPT_FOLDER . '/Nijz.R'; try{ $out = exec('Rscript '.$script.' '.$this->usr_id.' 2>&1', $output, $return_var); } catch(Exception $e){ return $e->getMessage(); } $radar_image = $site_url.RESULTS_FOLDER.'/radar_'.$this->usr_id.'.png'; // Testiranje - izpis errorjev /*if($admin_type == 0){ echo '
'; echo 'Rscript '.$script; //echo '
'.$out.'
'; var_dump($output); echo '
'; }*/ // Na koncu pobrisemo zacasne datoteke $this->deleteTemp(); return $radar_image; } // Pripravimo zacasne datoteke private function prepareCSV(){ global $site_path; $temp_folder = $site_path . TEMP_FOLDER.'/'; // Ustvarimo CSV $fd = fopen($temp_folder.'/nijz_'.$this->usr_id.'.csv', "w"); $convertType = 1; // kateri tip konvertiranja uporabimo $convertTypes[1] = array('charSet' => 'windows-1250', 'delimit' => ';', 'newLine' => "\n", 'BOMchar' => "\xEF\xBB\xBF"); # dodamo boomchar za utf-8 fwrite($fd, $convertTypes[$convertType]['BOMchar']); // Loop po vprasanjih / temah foreach ($this->vprasanja_radar as $vprasanje) { if (isset($vprasanje['data']) && (int)$vprasanje['data'] > 0) { $line = $vprasanje['naslov'].';'.$vprasanje['data']; fwrite($fd, $line."\r\n"); } } fclose($fd); } // Pobrisemo zacasne datoteke private function deleteTemp(){ global $site_path; $temp_folder = $site_path . TEMP_FOLDER.'/'; // Pobrisemo zacasno CSV datoteko s podatki if (file_exists($temp_folder.'/nijz_'.$this->usr_id.'.csv')) { unlink($temp_folder.'/nijz_'.$this->usr_id.'.csv'); } } // Pobrisemo sliko grafa private function deleteRadar(){ global $site_path; $results_folder = $site_path . RESULTS_FOLDER.'/'; if (file_exists($results_folder.'/radar_'.$this->usr_id.'.png')) { unlink($results_folder.'/radar_'.$this->usr_id.'.png'); } } }