2020-08-14 13:36:36 +02:00
< ? 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 ();
2020-08-28 10:44:53 +02:00
var $debug = true ;
2020-08-14 13:36:36 +02:00
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 . " ') " );
}
}
}
}