692 lines
24 KiB
PHP
692 lines
24 KiB
PHP
![]() |
<?php
|
||
|
|
||
|
include_once 'definition.php';
|
||
|
|
||
|
define("TEMP_FOLDER", "admin/survey/modules/mod_EVOLI/temp", true);
|
||
|
define("SCRIPT_FOLDER", "admin/survey/modules/mod_EVOLI/R", true);
|
||
|
define("RESULTS_FOLDER", "admin/survey/modules/mod_EVOLI/results", true);
|
||
|
|
||
|
define("EXPORT_FOLDER", "admin/survey/SurveyData", true);
|
||
|
|
||
|
|
||
|
class SurveyTeamMeter{
|
||
|
|
||
|
var $anketa; # id ankete
|
||
|
var $db_table = '';
|
||
|
|
||
|
var $submodule = ''; // Ista funkcionalnost za evoli module evoli_teammeter, evoli_quality_climate, evoli_teamship_meter in evoli_organizational_employeeship_meter
|
||
|
var $submodule_name = '';
|
||
|
var $execute_params = array();
|
||
|
|
||
|
var $debug = false;
|
||
|
|
||
|
function __construct($anketa){
|
||
|
global $site_url;
|
||
|
|
||
|
// Ce imamo anketo, smo v status->ul evealvacija
|
||
|
if ((int)$anketa > 0){
|
||
|
$this->anketa = $anketa;
|
||
|
|
||
|
# polovimo vrsto tabel (aktivne / neaktivne)
|
||
|
SurveyInfo :: getInstance()->SurveyInit($this->anketa);
|
||
|
if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) {
|
||
|
$this->db_table = '_active';
|
||
|
}
|
||
|
|
||
|
// Nastavimo se ustrezne parametre za skripto glede na tip izvoza (ime skripte, pdf-ja, csv-ja)
|
||
|
$this->setExecuteParams();
|
||
|
}
|
||
|
|
||
|
// Poskrbimo za datoteko s podatki
|
||
|
$SDF = SurveyDataFile::get_instance();
|
||
|
$SDF->init($this->anketa);
|
||
|
$SDF->prepareFiles();
|
||
|
}
|
||
|
|
||
|
// Nastavimo se ustrezne parametre za skripto glede na tip izvoza (ime skripte, pdf-ja, csv-ja)
|
||
|
private function setExecuteParams(){
|
||
|
|
||
|
$modules = SurveyInfo::getInstance()->getSurveyModules();
|
||
|
|
||
|
// QUALTIY CLIMATE
|
||
|
if(isset($modules['evoli_quality_climate'])){
|
||
|
$this->submodule = 'evoli_quality_climate';
|
||
|
$this->submodule_name = 'Quality climate';
|
||
|
|
||
|
$this->execute_params['csv_name'] = 'quality_climate.csv';
|
||
|
|
||
|
// DANSCINA
|
||
|
if(isset($_GET['lang_id']) && $_GET['lang_id'] == '29'){
|
||
|
$this->execute_params['script_name'] = 'Evoli_quality_clime_dan.R';
|
||
|
$this->execute_params['pdf_name'] = 'Quality-climate-dan';
|
||
|
}
|
||
|
// SLOVENSCINA
|
||
|
elseif(isset($_GET['lang_id']) && $_GET['lang_id'] == '1'){
|
||
|
$this->execute_params['script_name'] = 'Evoli_quality_clime_slo.R';
|
||
|
$this->execute_params['pdf_name'] = 'Klima-kakovosti.pdf';
|
||
|
}
|
||
|
// ANGLESCINA
|
||
|
else{
|
||
|
$this->execute_params['script_name'] = 'Evoli_quality_clime_ang.R';
|
||
|
$this->execute_params['pdf_name'] = 'Quality-climate.pdf';
|
||
|
}
|
||
|
}
|
||
|
// TEAMSHIP METER
|
||
|
elseif(isset($modules['evoli_teamship_meter'])){
|
||
|
$this->submodule = 'evoli_teamship_meter';
|
||
|
$this->submodule_name = 'Teamship meter';
|
||
|
|
||
|
$this->execute_params['csv_name'] = 'evoli_teamship.csv';
|
||
|
|
||
|
// DANSCINA
|
||
|
if(isset($_GET['lang_id']) && $_GET['lang_id'] == '29'){
|
||
|
$this->execute_params['script_name'] = 'Evoli_teamship_meter_dan.R';
|
||
|
$this->execute_params['pdf_name'] = 'Teamship-Meter-dan.pdf';
|
||
|
}
|
||
|
// SLOVENSCINA
|
||
|
elseif(isset($_GET['lang_id']) && $_GET['lang_id'] == '1'){
|
||
|
$this->execute_params['script_name'] = 'Evoli_teamship_meter_slo.R';
|
||
|
$this->execute_params['pdf_name'] = 'Teamship-Meter-slo.pdf';
|
||
|
}
|
||
|
// ANGLESCINA
|
||
|
else{
|
||
|
$this->execute_params['script_name'] = 'Evoli_teamship_meter_ang.R';
|
||
|
$this->execute_params['pdf_name'] = 'Teamship-Meter-ang.pdf';
|
||
|
}
|
||
|
}
|
||
|
// ORGANIZATIONAL EMPLOYEESHIP METER
|
||
|
elseif(isset($modules['evoli_organizational_employeeship_meter'])){
|
||
|
$this->submodule = 'evoli_organizational_employeeship_meter';
|
||
|
$this->submodule_name = 'Organizational employeeship meter';
|
||
|
|
||
|
$this->execute_params['csv_name'] = 'evoli_team.csv';
|
||
|
|
||
|
// DANSCINA
|
||
|
if(isset($_GET['lang_id']) && $_GET['lang_id'] == '29'){
|
||
|
$this->execute_params['script_name'] = 'Evoli_org_employ_meter_dan.R';
|
||
|
$this->execute_params['pdf_name'] = 'Org-Employeeship-Meter-dan.pdf';
|
||
|
}
|
||
|
// SLOVENSCINA
|
||
|
elseif(isset($_GET['lang_id']) && $_GET['lang_id'] == '1'){
|
||
|
$this->execute_params['script_name'] = 'Evoli_org_employ_meter_slo.R';
|
||
|
$this->execute_params['pdf_name'] = 'Org-Employeeship-Meter-slo.pdf';
|
||
|
}
|
||
|
// ANGLESCINA
|
||
|
else{
|
||
|
$this->execute_params['script_name'] = 'Evoli_org_employ_meter_ang.R';
|
||
|
$this->execute_params['pdf_name'] = 'Org-Employeeship-Meter-ang.pdf';
|
||
|
}
|
||
|
}
|
||
|
// TEAM METER
|
||
|
else{
|
||
|
$this->submodule = 'evoli_teammeter';
|
||
|
$this->submodule_name = 'Team meter';
|
||
|
|
||
|
$this->execute_params['csv_name'] = 'evoli_team.csv';
|
||
|
|
||
|
// DANSCINA
|
||
|
if(isset($_GET['lang_id']) && $_GET['lang_id'] == '29'){
|
||
|
$this->execute_params['script_name'] = 'Evoli_team_meter_depart_dan.R';
|
||
|
$this->execute_params['pdf_name'] = 'Team-Energy-Meter-dan.pdf';
|
||
|
}
|
||
|
// SLOVENSCINA
|
||
|
elseif(isset($_GET['lang_id']) && $_GET['lang_id'] == '1'){
|
||
|
$this->execute_params['script_name'] = 'Evoli_team_meter_depart_slo.R';
|
||
|
$this->execute_params['pdf_name'] = 'Team-Energy-Meter-slo.pdf';
|
||
|
}
|
||
|
// ANGLESCINA
|
||
|
else{
|
||
|
$this->execute_params['script_name'] = 'Evoli_team_meter_depart_ang.R';
|
||
|
$this->execute_params['pdf_name'] = 'Team-Energy-Meter-ang.pdf';
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
public function displaySettings(){
|
||
|
|
||
|
echo '<br />';
|
||
|
|
||
|
// Izpisemo doloceno skupino
|
||
|
if(isset($_GET['skupina']))
|
||
|
$this->displaySettingsSkupina($_GET['skupina']);
|
||
|
else
|
||
|
$this->displaySettingsAll();
|
||
|
}
|
||
|
|
||
|
// Prikazemo tabelo vseh skupin/podjetij
|
||
|
private function displaySettingsAll(){
|
||
|
global $site_path;
|
||
|
global $lang;
|
||
|
global $admin_type;
|
||
|
|
||
|
echo '<fieldset><legend>'.$this->submodule_name.' skupine</legend>';
|
||
|
|
||
|
echo '<table class="styled_table">';
|
||
|
|
||
|
echo '<tr>';
|
||
|
echo '<th>Email</th>';
|
||
|
echo '<th>Skupina</th>';
|
||
|
echo '<th>Jezik</th>';
|
||
|
echo '<th>Maksimalna kvota</th>';
|
||
|
echo '<th>Dosežena kvota</th>';
|
||
|
echo '<th>Začetek</th>';
|
||
|
echo '<th>Konec</th>';
|
||
|
echo '<th>URL</th>';
|
||
|
echo '<th>Poročilo</th>';
|
||
|
echo '<th>Datum pošiljanja</th>';
|
||
|
echo '<th>Urejanje</th>';
|
||
|
echo '</tr>';
|
||
|
|
||
|
// Izpisemo vse skupine z moznostjo izvoza porocil
|
||
|
$sql1 = sisplet_query("SELECT tm.*, v.naslov, v.vrstni_red
|
||
|
FROM srv_evoli_teammeter tm, srv_vrednost v
|
||
|
WHERE tm.ank_id='".$this->anketa."' AND v.id=tm.skupina_id");
|
||
|
while ($row1 = mysqli_fetch_assoc($sql1)) {
|
||
|
|
||
|
echo '<tr>';
|
||
|
|
||
|
//var_dump($row1);
|
||
|
|
||
|
echo '<td>'.$row1['email'].'</td>';
|
||
|
|
||
|
echo '<td>'.$row1['naslov'].'<br />('.$row1['vrstni_red'].' - id '.$row1['skupina_id'].')</td>';
|
||
|
|
||
|
if($row1['lang_id'] == 2)
|
||
|
$language = 'Eng';
|
||
|
elseif($row1['lang_id'] == 29)
|
||
|
$language = 'Den';
|
||
|
else
|
||
|
$language = 'Slo';
|
||
|
echo '<td>'.$language.'<br />(id '.$row1['lang_id'].')</td>';
|
||
|
|
||
|
echo '<td>'.$row1['kvota_max'].'</td>';
|
||
|
echo '<td>'.$row1['kvota_val'].'</td>';
|
||
|
|
||
|
echo '<td>'.$row1['date_from'].'</td>';
|
||
|
echo '<td>'.$row1['date_to'].'</td>';
|
||
|
|
||
|
echo '<td>'.$row1['url'].'</td>';
|
||
|
|
||
|
// PDF porocilo - samo ce imamo vsaj en vnos za skupino
|
||
|
echo '<td>';
|
||
|
if($row1['kvota_val'] > 0)
|
||
|
echo '<a href="izvoz.php?b=export&m=pdf_teammeter&anketa='.$this->anketa.'&skupina='.$row1['vrstni_red'].'&lang_id='.$row1['lang_id'].'" target="_blank" title="Izvozi v PDF"><span class="faicon pdf"></span></a>';
|
||
|
echo '</td>';
|
||
|
|
||
|
// Datum posiljanja porocila
|
||
|
echo '<td>';
|
||
|
if($row1['datum_posiljanja'] != '0000-00-00 00:00:00')
|
||
|
echo date('d.m.Y H:i:s', strtotime($row1['datum_posiljanja']));
|
||
|
else
|
||
|
echo 'Poročilo še ni bilo poslano';
|
||
|
echo '</td>';
|
||
|
|
||
|
echo '<td class="bold"><a href="index.php?anketa='.$this->anketa.'&a='.$this->submodule.'&skupina='.$row1['skupina_id'].'">Uredi</a></td>';
|
||
|
|
||
|
echo '</tr>';
|
||
|
}
|
||
|
|
||
|
echo '</table>';
|
||
|
echo '</fieldset>';
|
||
|
}
|
||
|
|
||
|
// Prikazemo tabelo respnsov za doloceno skupino/podjetje
|
||
|
private function displaySettingsSkupina($skupina_id){
|
||
|
global $site_path;
|
||
|
global $site_url;
|
||
|
global $lang;
|
||
|
global $admin_type;
|
||
|
|
||
|
echo '<a href="index.php?anketa='.$this->anketa.'&a='.$this->submodule.'"><span class="bold" style="font-size:13px;"><< Nazaj na splošne nastavitve</span></a>';
|
||
|
echo '<br /><br />';
|
||
|
|
||
|
// Preberemo vse podatke za skupino
|
||
|
$sql = sisplet_query("SELECT tm.*, v.naslov AS skupina_naslov
|
||
|
FROM srv_evoli_teammeter tm, srv_vrednost v
|
||
|
WHERE tm.ank_id='".$this->anketa."' AND tm.skupina_id='".$skupina_id."' AND v.id=tm.skupina_id");
|
||
|
if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
|
||
|
$row = mysqli_fetch_assoc($sql);
|
||
|
|
||
|
|
||
|
// Urejanje osnovnih podatkov skupine
|
||
|
echo '<fieldset><legend>'.$this->submodule_name.' - skupina "'.$row['skupina_naslov'].'"</legend>';
|
||
|
|
||
|
echo '<p style="margin:3px;"><span class="nastavitveSpan2">URL:</span>'.$row['url'].'</p>';
|
||
|
|
||
|
if($row['lang_id'] == 2)
|
||
|
$language = 'eng';
|
||
|
elseif($row['lang_id'] == 29)
|
||
|
$language = 'den';
|
||
|
else
|
||
|
$language = 'slo';
|
||
|
echo '<p style="margin:3px;"><span class="nastavitveSpan2">Jezik:</span>'.$language.' ('.$row['lang_id'].')</p>';
|
||
|
|
||
|
echo '<p style="margin:3px;"><span class="nastavitveSpan2">Dosežena kvota: </span>'.$row['kvota_val'].'</p>';
|
||
|
echo '<p style="margin:3px;"><span class="nastavitveSpan2">Maksimalna kvota: </span><input type="text" size="7" value="'.$row['kvota_max'].'" onBlur="evoli_tm_edit(\''.$row['id'].'\', \'kvota_max\', this.value);"></input></p>';
|
||
|
|
||
|
echo '<br />';
|
||
|
|
||
|
$date_from = date("d.m.Y", strtotime($row['date_from']));
|
||
|
echo '<p style="margin:3px;"><span class="nastavitveSpan2">Datum začetka: </span>'.$date_from.'<br />';
|
||
|
$date_to = date("d.m.Y", strtotime($row['date_to']));
|
||
|
echo '<p style="margin:3px;"><span class="nastavitveSpan2">Datum konca: </span><input type="text" id="evoliDateTo" size="12" value="'.$date_to.'" onBlur="evoli_tm_edit(\''.$row['id'].'\', \'date_to\', this.value);"></input></p>';
|
||
|
$datum_posiljanja = date("d.m.Y H:i:s", strtotime($row['datum_posiljanja']));
|
||
|
echo '<p style="margin:3px;"><span class="nastavitveSpan2">Datum pošiljanja vabil: </span>'.$datum_posiljanja.'</p>';
|
||
|
|
||
|
echo '<script type="text/javascript">
|
||
|
$(document).ready(function() {
|
||
|
$("#evoliDateTo").datepicker({
|
||
|
showOtherMonths: true,
|
||
|
selectOtherMonths: true,
|
||
|
changeMonth: true,
|
||
|
changeYear: true,
|
||
|
dateFormat: "dd.mm.yy",
|
||
|
showAnim: "slideDown",
|
||
|
showOn: "button",
|
||
|
buttonText: "",
|
||
|
onSelect: function(selected, evnt) {
|
||
|
evoli_tm_edit(\''.$row['id'].'\', \'date_to\', this.value); return false;
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
</script>';
|
||
|
|
||
|
echo '<br />';
|
||
|
|
||
|
// Preberemo vse oddelke za skupino
|
||
|
$oddelki = array();
|
||
|
$sqlD = sisplet_query("SELECT * FROM srv_evoli_teammeter_department WHERE tm_id='".$row['id']."'");
|
||
|
//echo '<span class="nastavitveSpan2">Oddelki (<a href="">Dodaj oddelek</a>): </span>';
|
||
|
echo '<p style="margin:3px;"><span class="nastavitveSpan2">Oddelki: </span>';
|
||
|
$oddelki_string = '';
|
||
|
while($rowD = mysqli_fetch_assoc($sqlD)) {
|
||
|
$oddelki[$rowD['id']] = $rowD['department'];
|
||
|
$oddelki_string .= $rowD['department'].', ';
|
||
|
}
|
||
|
if($oddelki_string != '')
|
||
|
echo substr($oddelki_string, 0, -2);
|
||
|
else
|
||
|
echo '<br />';
|
||
|
echo '</p>';
|
||
|
|
||
|
// Dodaj nov oddelek
|
||
|
echo '<p style="margin:3px;">';
|
||
|
echo '<span class="nastavitveSpan2">Dodaj nov oddelek: </span><input type="text" id="tm_add_oddelek" size="20" value=""></input>';
|
||
|
echo ' <a href="#" onClick="evoli_tm_settings_add_oddelek(\''.$row['id'].'\'); return false;"><span class="bold">Dodaj</span></a>';
|
||
|
echo ' <span class="red italic spaceLeft">(Naknadno brisanje oddelkov ni mogoče!)</span>';
|
||
|
echo '</p>';
|
||
|
|
||
|
echo '<br />';
|
||
|
|
||
|
// Naknadno posiljanje vabil
|
||
|
// https://tools.evoli.si/admin/survey/modules/mod_EVOLI/team_meter.php?ank_id=SURVEY_ID&email=CLIENT_EMAIL&departments=1&language=slo&pass=GENERATED_PASSWORD
|
||
|
$url = $site_url.'admin/survey/modules/mod_EVOLI/team_meter.php?';
|
||
|
$url .= 'ank_id='.$this->anketa;
|
||
|
$url .= '&language='.$language;
|
||
|
$url .= '&email='.$row['email'];
|
||
|
$url .= '&group_id='.$row['skupina_id'];
|
||
|
$url .= '&pass=evoli99admin';
|
||
|
|
||
|
echo '<span class="floatLeft spaceRight"><div class="buttonwrapper">';
|
||
|
echo '<a href="'.$url.'" class="ovalbutton ovalbutton_green" target="_blank">Naknadno pošiljanje vabil</a>';
|
||
|
echo '</div></span>';
|
||
|
|
||
|
echo '<br /><br />';
|
||
|
|
||
|
echo '</fieldset>';
|
||
|
|
||
|
|
||
|
echo '<br />';
|
||
|
|
||
|
|
||
|
// Urejanje responsov skupine (lahko urejamo oddelke)
|
||
|
echo '<fieldset><legend>'.$this->submodule_name.' - odgovori skupine "'.$row['skupina_naslov'].'"</legend>';
|
||
|
echo '<table class="styled_table">';
|
||
|
|
||
|
echo '<tr>';
|
||
|
echo '<th>Recnum</th>';
|
||
|
echo '<th>Email</th>';
|
||
|
echo '<th>Oddelek</th>';
|
||
|
echo '</tr>';
|
||
|
|
||
|
$sqlDD = sisplet_query("SELECT d.*, dd.usr_id, u.email, u.recnum
|
||
|
FROM srv_evoli_teammeter tm, srv_evoli_teammeter_department d, srv_evoli_teammeter_data_department dd, srv_user u
|
||
|
WHERE tm.ank_id='".$this->anketa."' AND tm.skupina_id='".$skupina_id."'
|
||
|
AND d.tm_id=tm.id AND dd.department_id=d.id AND dd.usr_id=u.id
|
||
|
ORDER BY u.email");
|
||
|
if (!$sqlDD) echo mysqli_error($GLOBALS['connect_db']);
|
||
|
while($rowDD = mysqli_fetch_assoc($sqlDD)) {
|
||
|
|
||
|
echo '<tr>';
|
||
|
|
||
|
echo '<td>'.$rowDD['recnum'].'</td>';
|
||
|
echo '<td>'.$rowDD['email'].'</td>';
|
||
|
|
||
|
echo '<td><select onChange="evoli_tm_change_oddelek(this.value, \''.$rowDD['usr_id'].'\');">';
|
||
|
foreach($oddelki as $key => $val){
|
||
|
echo '<option '.($key == $rowDD['id'] ? ' selected="selected"' : '').' value="'.$key.'">'.$val.'</option>';
|
||
|
}
|
||
|
echo '</select></td>';
|
||
|
|
||
|
echo '</tr>';
|
||
|
}
|
||
|
|
||
|
echo '</table>';
|
||
|
echo '</fieldset>';
|
||
|
|
||
|
// Link nazaj na splosne nastavitve
|
||
|
echo '<br />';
|
||
|
echo '<a href="index.php?anketa='.$this->anketa.'&a='.$this->submodule.'"><span class="bold" style="font-size:13px;"><< Nazaj na splošne nastavitve</span></a>';
|
||
|
echo '<br /><br />';
|
||
|
}
|
||
|
|
||
|
|
||
|
// Zgeneriramo pdf analizo
|
||
|
public function executeExport($skupina){
|
||
|
global $site_path;
|
||
|
global $site_url;
|
||
|
global $lang;
|
||
|
global $admin_type;
|
||
|
|
||
|
// Zgeneriramo zacasne csv datoteke
|
||
|
$this->prepareCSV($skupina);
|
||
|
|
||
|
// Poklicemo R skripto in zgeneriramo pdf
|
||
|
$this->executeR($skupina);
|
||
|
|
||
|
// Pripravimo file za download
|
||
|
if(file_exists($site_path . RESULTS_FOLDER . '/'.$this->execute_params['pdf_name'])){
|
||
|
|
||
|
$file = $site_path . RESULTS_FOLDER . '/'.$this->execute_params['pdf_name'];
|
||
|
|
||
|
header('Content-Description: File Transfer');
|
||
|
header('Content-Disposition: attachment; filename='.basename($this->execute_params['pdf_name']));
|
||
|
header("Content-type: text/x-csv; charset=utf-8");
|
||
|
header('Content-Transfer-Encoding: binary');
|
||
|
header('Expires: 0');
|
||
|
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||
|
header('Pragma: public');
|
||
|
header('Content-Length: ' . filesize($file));
|
||
|
|
||
|
ob_clean();
|
||
|
flush();
|
||
|
|
||
|
readfile($file);
|
||
|
}
|
||
|
|
||
|
// Na koncu pobrisemo zacasne datoteke
|
||
|
if(!$this->debug)
|
||
|
$this->deleteTemp();
|
||
|
|
||
|
// Ugasnemo skripto:)
|
||
|
die();
|
||
|
}
|
||
|
|
||
|
// Poklicemo r skripto in vrnemo ime pdf-ja
|
||
|
private function executeR($skupina){
|
||
|
global $site_path;
|
||
|
|
||
|
$script = $site_path . SCRIPT_FOLDER . '/'.$this->execute_params['script_name'];
|
||
|
|
||
|
// Parametri za R
|
||
|
$params = $skupina;
|
||
|
|
||
|
// Poklicemo skripto
|
||
|
$out = exec('Rscript '.$script.' '.$params.' 2>&1', $output, $return_var);
|
||
|
|
||
|
// Debugiranje - izpis errorjev
|
||
|
if($this->debug && $admin_type == 0){
|
||
|
echo '<div>';
|
||
|
|
||
|
echo 'Rscript '.$script;
|
||
|
//echo '<br />'.$out.'<br />';
|
||
|
var_dump($output);
|
||
|
|
||
|
echo '</div>';
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
// Pripravimo zacasne datoteke
|
||
|
private function prepareCSV($skupina){
|
||
|
global $site_path;
|
||
|
|
||
|
$temp_folder = $site_path . TEMP_FOLDER.'/';
|
||
|
|
||
|
|
||
|
// Poskrbimo za datoteko s podatki
|
||
|
$SDF = SurveyDataFile::get_instance();
|
||
|
$SDF->init($this->anketa);
|
||
|
|
||
|
$_headFileName = $SDF->getHeaderFileName();
|
||
|
$_dataFileName = $SDF->getDataFileName();
|
||
|
|
||
|
if ($_headFileName != null && $_headFileName != '') {
|
||
|
$_HEADERS = unserialize(file_get_contents($_headFileName));
|
||
|
}
|
||
|
else {
|
||
|
echo 'Error! Empty file name!';
|
||
|
}
|
||
|
|
||
|
// Zaenkrat dopuscamo samo status 6 in brez lurkerjev
|
||
|
define('STATUS_FIELD', '$4', true);
|
||
|
define('LURKER_FIELD', '$5', true);
|
||
|
$status_filter = '('.STATUS_FIELD.' ~ /6|5/)&&('.LURKER_FIELD.'==0)';
|
||
|
//$status_filter = '($4 ~ /6|5/)&&($5==0)';
|
||
|
//$status_filter = '('.STATUS_FIELD.'==6)&&('.LURKER_FIELD.'==0)';
|
||
|
|
||
|
//$start_sequence = $_HEADERS['_settings']['dataSequence'];
|
||
|
$start_sequence = 1;
|
||
|
$end_sequence = $_HEADERS['_settings']['metaSequence']-1;
|
||
|
|
||
|
$field_delimit = ';';
|
||
|
|
||
|
// Filtriramo podatke po statusu in jih zapisemo v temp folder
|
||
|
if (IS_WINDOWS) {
|
||
|
$out = shell_exec('awk -F"|" "BEGIN {{OFS=\",\"} {ORS=\"\n\"}} '.$status_filter.'" '.$_dataFileName.' | cut -d "|" -f '.$start_sequence.'-'.$end_sequence.' >> '.$temp_folder.'/temp_data_'.$this->anketa.'.dat');
|
||
|
}
|
||
|
else {
|
||
|
$out = shell_exec('awk -F"|" \'BEGIN {{OFS=","} {ORS="\n"}} '.$status_filter.'\' '.$_dataFileName.' | cut -d \'|\' -f '.$start_sequence.'-'.$end_sequence.' >> '.$temp_folder.'/temp_data_'.$this->anketa.'.dat');
|
||
|
}
|
||
|
|
||
|
|
||
|
// Ustvarimo koncni CSV
|
||
|
if ($fd = fopen($temp_folder.'/temp_data_'.$this->anketa.'.dat', "r")) {
|
||
|
|
||
|
$fd2 = fopen($temp_folder.'/'.$this->execute_params['csv_name'], "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($fd2, $convertTypes[$convertType]['BOMchar']);
|
||
|
|
||
|
# naredimo header row
|
||
|
$cnt = 0;
|
||
|
foreach ($_HEADERS AS $spid => $spremenljivka) {
|
||
|
if (count($spremenljivka['grids']) > 0) {
|
||
|
foreach ($spremenljivka['grids'] AS $gid => $grid) {
|
||
|
foreach ($grid['variables'] AS $vid => $variable ){
|
||
|
if ($spremenljivka['tip'] !== 'sm' && !($variable['variable'] == 'uid' && $variable['naslov'] == 'User ID')){
|
||
|
$output1 .= strip_tags($variable['variable']).$field_delimit;
|
||
|
$output2 .= '"'.strip_tags($variable['naslov']).'"'.$field_delimit;
|
||
|
|
||
|
if(strip_tags($variable['variable']) == 'skupina')
|
||
|
$skupina_pos = $cnt+1;
|
||
|
|
||
|
$cnt++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Na konec dodamo se naslov skupine (podjetja) in oddelka
|
||
|
$output1 .= 'skupina_ime'.$field_delimit;
|
||
|
$output1 .= 'oddelek_ime'.$field_delimit;
|
||
|
$output2 .= 'Ime podjetja'.$field_delimit;
|
||
|
$output2 .= 'Ime oddelka'.$field_delimit;
|
||
|
|
||
|
fwrite($fd2, $output1."\r\n");
|
||
|
fwrite($fd2, $output2."\r\n");
|
||
|
|
||
|
|
||
|
// Zakesiramo vse skupine za anketo
|
||
|
$skupine = array();
|
||
|
$sqlS = sisplet_query("SELECT tm.*, v.naslov AS naslov, v.vrstni_red AS vrstni_red
|
||
|
FROM srv_evoli_teammeter tm, srv_vrednost v
|
||
|
WHERE tm.ank_id='".$this->anketa."' AND v.id=tm.skupina_id");
|
||
|
while ($rowS = mysqli_fetch_assoc($sqlS)) {
|
||
|
$skupine[$rowS['vrstni_red']] = $rowS;
|
||
|
}
|
||
|
|
||
|
while ($line = fgets($fd)) {
|
||
|
|
||
|
$skupina_name = '';
|
||
|
$department_name = '';
|
||
|
|
||
|
// Pogledamo za katero skupino gre in kateri oddelek
|
||
|
$skupina_name = '';
|
||
|
$oddelek_name = '';
|
||
|
if($skupina_pos > 0){
|
||
|
$temp = array();
|
||
|
$temp = explode('|', $line);
|
||
|
|
||
|
$usr_id = $temp[0];
|
||
|
$skupina = $temp[$skupina_pos];
|
||
|
|
||
|
// Ime skupine za tekoci response
|
||
|
$skupina_name = $skupine[$skupina]['naslov'];
|
||
|
|
||
|
// Ime oddelka za tekoci response
|
||
|
$sqlO = sisplet_query("SELECT d.department
|
||
|
FROM srv_evoli_teammeter_department d, srv_evoli_teammeter_data_department dd, srv_evoli_teammeter e
|
||
|
WHERE dd.department_id=d.id AND dd.usr_id='".$usr_id."' AND e.skupina_id='".$skupine[$skupina]['skupina_id']."' AND e.id=d.tm_id AND e.ank_id='".$this->anketa."'");
|
||
|
if(mysqli_num_rows($sqlO) > 0){
|
||
|
$rowO = mysqli_fetch_assoc($sqlO);
|
||
|
$oddelek_name = $rowO['department'];
|
||
|
}
|
||
|
else{
|
||
|
$oddelek_name = '-1';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$line = '"' . str_replace(array("\r","\n","\"","|"), array("","","",'";"'), $line) . '"';
|
||
|
|
||
|
// Pocistimo usr_id na zacetku vrstice
|
||
|
$start_line = strpos($line, '"', 1) + 2;
|
||
|
$line = substr($line, $start_line);
|
||
|
|
||
|
// Dodamo na konec skupino in oddelek
|
||
|
$line .= $field_delimit.'"'.$skupina_name.'"';
|
||
|
$line .= $field_delimit.'"'.$oddelek_name.'"';
|
||
|
|
||
|
// Spremenimo encoding v windows-1250
|
||
|
//$line = iconv("UTF-8","Windows-1250//TRANSLIT", $line);
|
||
|
|
||
|
fwrite($fd2, $line);
|
||
|
fwrite($fd2, "\r\n");
|
||
|
}
|
||
|
|
||
|
fclose($fd2);
|
||
|
}
|
||
|
fclose($fd);
|
||
|
|
||
|
|
||
|
// Na koncu pobrisemo temp datoteke
|
||
|
if (file_exists($temp_folder.'/temp_data_'.$this->anketa.'.dat')) {
|
||
|
unlink($temp_folder.'/temp_data_'.$this->anketa.'.dat');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Pobrisemo zacasne datoteke
|
||
|
private function deleteTemp(){
|
||
|
global $site_path;
|
||
|
|
||
|
$temp_folder = $site_path . TEMP_FOLDER.'/';
|
||
|
|
||
|
if (file_exists($temp_folder.'/data_'.$this->anketa.'.csv')) {
|
||
|
unlink($temp_folder.'/data_'.$this->anketa.'.csv');
|
||
|
}
|
||
|
|
||
|
// Pobrisemo zacasno CSV datoteko s podatki
|
||
|
if (file_exists($temp_folder.'/evoli_team.csv')) {
|
||
|
unlink($temp_folder.'/evoli_team.csv');
|
||
|
}
|
||
|
|
||
|
// Pobrisemo pdf grafe ki so bili vstavljeni v porocilo
|
||
|
$files = glob($site_path . RESULTS_FOLDER . '/part-predmet-slike/*');
|
||
|
foreach($files as $file){
|
||
|
if(is_file($file))
|
||
|
unlink($file);
|
||
|
}
|
||
|
|
||
|
$files = glob($site_path . RESULTS_FOLDER . '/slike/*');
|
||
|
foreach($files as $file){
|
||
|
if(is_file($file))
|
||
|
unlink($file);
|
||
|
}
|
||
|
|
||
|
// Pobrisemo še vse ostalo v rezultatih - azenkrat ne ker download pdf ne dela
|
||
|
$files = glob($site_path . RESULTS_FOLDER . '/*');
|
||
|
foreach($files as $file){
|
||
|
if(is_file($file))
|
||
|
unlink($file);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// Ajax klici
|
||
|
public function ajax(){
|
||
|
|
||
|
// Urejanje skupine
|
||
|
if($_GET['a'] == 'teammeter_edit'){
|
||
|
|
||
|
if(isset($_POST['tm_id']) && isset($_POST['what']) && isset($_POST['value'])){
|
||
|
|
||
|
$tm_id = $_POST['tm_id'];
|
||
|
$what = $_POST['what'];
|
||
|
$value = $_POST['value'];
|
||
|
|
||
|
// Datum popravimo v ustrezno obliko
|
||
|
if($what == 'date_to'){
|
||
|
$timestamp = strtotime($value);
|
||
|
$value = date("Y-m-d", $timestamp);
|
||
|
}
|
||
|
|
||
|
$sql = sisplet_query("UPDATE srv_evoli_teammeter SET ".$what."='".$value."' WHERE id='".$tm_id."'");
|
||
|
}
|
||
|
}
|
||
|
// Dodajanje oddelka
|
||
|
elseif($_GET['a'] == 'teammeter_add_oddelek'){
|
||
|
|
||
|
if(isset($_POST['tm_id']) && isset($_POST['oddelek']) && $_POST['oddelek'] != ''){
|
||
|
|
||
|
$tm_id = $_POST['tm_id'];
|
||
|
$oddelek = $_POST['oddelek'];
|
||
|
|
||
|
$sql = sisplet_query("INSERT INTO srv_evoli_teammeter_department (tm_id, department) VALUES ('".$tm_id."', '".$oddelek."')");
|
||
|
}
|
||
|
}
|
||
|
// Spreminjanje oddelka za respondenta
|
||
|
elseif($_GET['a'] == 'teammeter_change_oddelek'){
|
||
|
|
||
|
if(isset($_POST['department_id']) && isset($_POST['usr_id'])){
|
||
|
|
||
|
$department_id = $_POST['department_id'];
|
||
|
$usr_id = $_POST['usr_id'];
|
||
|
|
||
|
// Lahko imamo vec oddelkov za istega userja (napaka ki jo je tesko popravit:)) - zato najprej pobirsemo vse
|
||
|
$sql = sisplet_query("DELETE FROM srv_evoli_teammeter_data_department WHERE usr_id='".$usr_id."'");
|
||
|
|
||
|
// Potem nastavimo drug oddelek za respondenta
|
||
|
$sql = sisplet_query("INSERT INTO srv_evoli_teammeter_data_department (usr_id, department_id) VALUES ('".$usr_id."', '".$department_id."')");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|