2021-04-26 12:08:01 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
define("TEMP_FOLDER", "admin/survey/modules/mod_NIJZ/temp");
|
|
|
|
define("SCRIPT_FOLDER", "admin/survey/modules/mod_NIJZ/R");
|
|
|
|
define("RESULTS_FOLDER", "admin/survey/modules/mod_NIJZ/results");
|
|
|
|
|
|
|
|
class SurveyNIJZ{
|
|
|
|
|
|
|
|
|
|
|
|
private $anketa; // id ankete
|
|
|
|
private $usr_id; // id respondenta
|
|
|
|
private $db_table = '';
|
|
|
|
|
|
|
|
private $vprasanja_radar = array(); // array z vsemi vprasanji in odgovori na njih, ki jih obravnavamo
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) {
|
|
|
|
$this->db_table = '_active';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
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;
|
2021-04-26 12:26:32 +02:00
|
|
|
global $site_url;
|
2021-04-26 12:08:01 +02:00
|
|
|
|
|
|
|
$this->createRadar();
|
|
|
|
|
|
|
|
// CSS:)
|
|
|
|
echo '<style>
|
|
|
|
.nijz_radar_holder{
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
.nijz_radar_holder h1.radar_title{
|
|
|
|
padding-top: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.nijz_radar_holder img{
|
|
|
|
|
|
|
|
}
|
|
|
|
</style>';
|
|
|
|
|
|
|
|
echo '<div class="spremenljivka nijz_radar_holder">';
|
|
|
|
|
2021-04-28 11:06:19 +02:00
|
|
|
echo '<h1 class="nijz_title radar_title">Bivalno okolje</h1>';
|
2021-04-26 12:08:01 +02:00
|
|
|
|
2021-04-26 12:26:32 +02:00
|
|
|
echo '<img src="'.$site_url.RESULTS_FOLDER.'/radar_'.$this->usr_id.'.png">';
|
2021-04-26 12:08:01 +02:00
|
|
|
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
|
|
|
|
// Prikazemo tabelo po temah
|
|
|
|
public function displayTable(){
|
|
|
|
global $lang;
|
|
|
|
|
|
|
|
// CSS:)
|
|
|
|
echo '<style>
|
|
|
|
.nijz_table_holder{
|
|
|
|
|
|
|
|
}
|
|
|
|
.nijz_table_holder h1.table_title{
|
|
|
|
padding-top: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.nijz_table_holder table.nijz_table{
|
|
|
|
border-collapse: collapse;
|
|
|
|
margin: 0 auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.nijz_table_holder table.nijz_table tr{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.nijz_table_holder table.nijz_table tr td{
|
|
|
|
padding: 8px 12px;
|
|
|
|
max-width: 400px;
|
|
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
font-size: 17px;
|
|
|
|
|
|
|
|
border: 1px #505050 solid;
|
|
|
|
}
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema1{ color: #9966cc; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema2{ color: #cc0099; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema3{ color: #FFD700; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema4{ color: #cc6699; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema5{ color: #FFA500; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema6{ color: #008000; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema7{ color: #3399cc; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema8{ color: #99cc33; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema9{ color: #0099cc; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema10{ color: #669900; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema11{ color: #66cc99; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema12{ color: #FF0000; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema13{ color: #FF8C00; }
|
|
|
|
.nijz_table_holder table.nijz_table tr td.tema14{ color: #99cccc; }
|
|
|
|
</style>';
|
|
|
|
|
|
|
|
echo '<div class="spremenljivka nijz_table_holder">';
|
|
|
|
|
2021-04-28 11:06:19 +02:00
|
|
|
//echo '<h1 class="nijz_title table_title">Naslov tabele</h1>';
|
2021-04-26 12:08:01 +02:00
|
|
|
|
|
|
|
$half = round(count($this->vprasanja_radar) / 2);
|
|
|
|
|
|
|
|
echo '<table class="nijz_table">';
|
|
|
|
for($i=1; $i<=$half; $i++) {
|
|
|
|
|
|
|
|
echo '<tr>';
|
|
|
|
|
|
|
|
echo '<td class="tema'.$i.'">'.$this->vprasanja_radar[$i]['naslov'].'</td>';
|
|
|
|
echo '<td class="tema'.$i.'">'.$this->vprasanja_radar[$i]['data'].'</td>';
|
|
|
|
|
|
|
|
$j = $i + $half;
|
|
|
|
|
|
|
|
echo '<td class="tema'.$j.'">'.$this->vprasanja_radar[$j]['naslov'].'</td>';
|
|
|
|
echo '<td class="tema'.$j.'">'.$this->vprasanja_radar[$j]['data'].'</td>';
|
|
|
|
|
|
|
|
echo '</tr>';
|
|
|
|
}
|
|
|
|
echo '</table>';
|
|
|
|
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Zgeneriramo pdf analizo
|
2021-04-28 11:06:19 +02:00
|
|
|
public function createRadar(){
|
2021-04-26 12:08:01 +02:00
|
|
|
global $site_path;
|
|
|
|
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){
|
2021-04-28 11:06:19 +02:00
|
|
|
return $e->getMessage();
|
2021-04-26 12:08:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Testiranje - izpis errorjev
|
|
|
|
/*if($admin_type == 0){
|
|
|
|
echo '<div>';
|
|
|
|
echo 'Rscript '.$script;
|
|
|
|
//echo '<br />'.$out.'<br />';
|
|
|
|
var_dump($output);
|
|
|
|
echo '</div>';
|
|
|
|
}*/
|
|
|
|
|
|
|
|
// Na koncu pobrisemo zacasne datoteke
|
|
|
|
$this->deleteTemp();
|
|
|
|
}
|
|
|
|
|
|
|
|
// 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) {
|
|
|
|
|
2021-04-26 14:01:34 +02:00
|
|
|
if (isset($vprasanje['data']) && (int)$vprasanje['data'] > 0) {
|
2021-04-26 12:08:01 +02:00
|
|
|
|
|
|
|
$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;
|
|
|
|
|
2021-04-26 12:26:32 +02:00
|
|
|
$results_folder = $site_path . RESULTS_FOLDER.'/';
|
2021-04-26 12:08:01 +02:00
|
|
|
|
2021-04-26 12:26:32 +02:00
|
|
|
if (file_exists($results_folder.'/radar_'.$this->usr_id.'.png')) {
|
|
|
|
unlink($results_folder.'/radar_'.$this->usr_id.'.png');
|
2021-04-26 12:08:01 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|