ul evealvacija if ((int)$anketa > 0){ $this->anketa = $anketa; # polovimo vrsto tabel (aktivne / neaktivne) SurveyInfo :: getInstance()->SurveyInit($this->anketa); $this->db_table = SurveyInfo::getInstance()->getSurveyArchiveDBString(); } $this->cacheData(); } // Zgeneriramo pdf analizo public function executePDFExport($usr_id){ global $site_path; global $lang; global $admin_type; // Zgeneriramo zacasne csv datoteke $this->prepareCSV($usr_id); $script = $site_path . SCRIPT_FOLDER . '/MFDPS.R'; $out = exec('Rscript '.$script.' 2>&1', $output, $return_var); // Testiranje - izpis errorjev if($admin_type == 0){ echo '
'; echo 'Rscript '.$script; //echo '
'.$out.'
'; var_dump($output); echo '
'; } $pdf_name = 'MFDPS'; // Pripravimo file za download if(file_exists($site_path . RESULTS_FOLDER . '/'.$pdf_name.'.pdf')){ $file = $site_path . RESULTS_FOLDER . '/'.$pdf_name.'.pdf'; header('Content-Description: File Transfer'); //header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename(''.$pdf_name.'.pdf')); header("Content-type: text/x-csv; charset=utf-8"); //header("Content-type: text/csv"); 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 $this->deleteTemp(); // Ugasnemo skripto:) die(); } // Pripravimo zacasne datoteke private function prepareCSV($usr_id){ global $site_path; $temp_folder = $site_path . TEMP_FOLDER.'/'; $SDF = SurveyDataFile::get_instance(); $SDF->init($this->anketa); $_headFileName = $SDF->getHeaderFileName(); $_dataFileName = $SDF->getDataFileName(); $_fileStatus = $SDF->getStatus(); if ($_headFileName != null && $_headFileName != '') { $_HEADERS = unserialize(file_get_contents($_headFileName)); } else { echo 'Error! Empty file name!'; } // Zaenkrat dopuscamo samo status 6 in brez lurkerjev $status_filter = '('.STATUS_FIELD.' ~ /6|5/)&&('.LURKER_FIELD.'==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.'/mfdps.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($fd2, $convertTypes[$convertType]['BOMchar']); # naredimo header row 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; } } } } } fwrite($fd2, $output1."\r\n"); fwrite($fd2, $output2."\r\n"); $sqlD = sisplet_query("SELECT id, recnum FROM srv_user WHERE id='".$usr_id."'"); $rowD = mysqli_fetch_array($sqlD); while ($line = fgets($fd)) { $temp = array(); $temp = explode('|', $line); // Izpisemo samo vrstico z ustreznim id-jem if($rowD['id'] == $temp[0]){ // Pobrisemo prvo polje user id), ker ga ne rabimo vec $line = substr($line, strpos($line, '|')+1); $line = '"' . str_replace(array("\r","\n","\"","|", "\'"), array("","","",'";"', "'"), $line) . '"'; // 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.'/mfdps.csv')) { unlink($temp_folder.'/mfdps.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); } // Pobrisemo še vse ostalo v rezultatih $files = glob($site_path . RESULTS_FOLDER . '/*'); foreach($files as $file){ if(is_file($file)) unlink($file); } } // Zgeneriramo poseben xls mfdps export public function executeExportPredmeti(){ global $site_path; global $lang; global $admin_type; $temp_folder = $site_path . TEMP_FOLDER.'/'; $file_handler = fopen($temp_folder.'mfdps_'.$this->anketa.'_predmeti.xls',"w"); $convertType = 1; // kateri tip konvertiranja uporabimo $convertTypes[1] = array('charSet' => "windows-1250", 'delimit' => ";", 'newLine' => "\n", 'BOMchar' => "\xEF\xBB\xBF"); # dodami boomchar za utf-8 fwrite($file_handler, $convertTypes[$convertType]['BOMchar']); fwrite($file_handler,''); // Prva vrstica tabele $row1 = ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; fwrite($file_handler, $row1); // Druga vrstica tabele $row2 = ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; fwrite($file_handler, $row2); // Loop po podatkih $sql = sisplet_query("SELECT id, ank_id, recnum, last_status, preview, testdata, deleted FROM srv_user WHERE ank_id='".$this->anketa."' AND deleted='0' AND preview='0' AND (last_status='5' OR last_status='6') ORDER BY recnum"); while($row = mysqli_fetch_array($sql)){ // Vprasanja za katera delamo izvoz (splosna) $values = array('recnum' => $row['recnum']); $variable = array('PROGR','LETNIK','MPREH','NACIN','SPOL','STAROST','ZAPOSL','DOBREMEN'); foreach($variable as $var){ if(isset($this->data_splosna[$row['id']][$var])) $values[$var] = $this->data_splosna[$row['id']][$var]; else $values[$var] = '-2'; } // Loop po predmetih foreach($this->vprasanja as $predmet){ $rowData = ''; $empty = true; $values2 = array(); unset($values2); // Ime predmeta $values2[0] = $predmet['naslov']; // Odgovori za predmet for($i=1; $i<=8; $i++){ if(isset($this->data_v1[$row['id']][$predmet['variable'].'V1'][$i])){ $values2[$i] = $this->data_v1[$row['id']][$predmet['variable'].'V1'][$i]; $empty = false; } else{ $values2[$i] = '-2'; } } // Odgovor za obremenjenost s predmetom if(isset($this->data_v2[$row['id']][$predmet['variable'].'V2'])){ $values2[9] = $this->data_v2[$row['id']][$predmet['variable'].'V2']; $empty = false; } else{ $values2[9] = '-2'; } // Izpis vrstice if($empty == false){ $rowData = ''; // Izpisemo rezultate v svojo celico (prvih 9 celic, ki ni vezanih na predmet) foreach($values as $val){ $rowData .= ''; } // Izpisemo rezultate v svojo celico foreach($values2 as $val){ $rowData .= ''; } $rowData .= ''; fwrite($file_handler, $rowData); } } } fwrite($file_handler, '
št. respondentaštudijski programletnikMPREHNACINSPOLSTAROSTZAPOSLDOBREMENpredmetpredmet (a)predmet (b)predmet (c)predmet (d)predmet (e)predmet (f)predmet (g)predmet (h)Obremenitev s premetom
RECNUMPROGRAMletnikSte vpisani po merilih za prehode?Način študijaSpolStarostZaposlitevZ delom, ki ga poleg študija opravljam, sem tedensko obremenjenPREDMETPri predmetu sem dobil novo znanje.Predmet je izpolnil moja pričakovanja.Predavanj in vaj sem se z veseljem udeleževal.Predmet priporočam tudi drugim.Na voljo sem imel dovolj ustrezne literature.Sprotno ocenjevanje me je spodbujalo k učenju.E-učilnica ustrezno podpira študij pri predmetu.S predmetom sem bil na splošno zadovoljen.
'; $rowData .= $val; $rowData .= ''; $rowData .= $val; $rowData .= '
'); fclose($file_handler); ob_clean(); $file_url = $temp_folder.'mfdps_'.$this->anketa.'_predmeti.xls'; header('Content-Type: application/vnd.ms-excel; charset="'.$convertTypes[$convertType]['charSet'].'"'); header("Content-Transfer-Encoding: Binary"); header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); readfile($file_url); unlink ($temp_folder.'mfdps_'.$this->anketa.'_predmeti.xls'); exit; } // Zgeneriramo poseben xls mfdps export public function executeExportIzvajalci(){ global $site_path; global $lang; global $admin_type; $temp_folder = $site_path . TEMP_FOLDER.'/'; $file_handler = fopen($temp_folder.'mfdps_'.$this->anketa.'_izvajalci.xls',"w"); $convertType = 1; // kateri tip konvertiranja uporabimo $convertTypes[1] = array('charSet' => "windows-1250", 'delimit' => ";", 'newLine' => "\n", 'BOMchar' => "\xEF\xBB\xBF"); # dodami boomchar za utf-8 fwrite($file_handler, $convertTypes[$convertType]['BOMchar']); fwrite($file_handler,''); // Prva vrstica tabele $row1 = ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; $row1 .= ''; fwrite($file_handler, $row1); // Druga vrstica tabele $row2 = ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; $row2 .= ''; fwrite($file_handler, $row2); // Loop po podatkih $sql = sisplet_query("SELECT id, ank_id, recnum, last_status, preview, testdata, deleted FROM srv_user WHERE ank_id='".$this->anketa."' AND deleted='0' AND preview='0' AND (last_status='5' OR last_status='6') ORDER BY recnum"); while($row = mysqli_fetch_array($sql)){ // Vprasanja za katera delamo izvoz (splosna) $values = array('recnum' => $row['recnum']); $variable = array('PROGR'); foreach($variable as $var){ if(isset($this->data_splosna[$row['id']][$var])) $values[$var] = $this->data_splosna[$row['id']][$var]; else $values[$var] = '-2'; } // Loop po izvajalcih if(isset($this->data_i[$row['id']])){ foreach($this->data_i[$row['id']] as $izvajalec){ $rowData = ''; $empty = true; $values2 = array(); unset($values2); for($i=1; $i<=8; $i++){ if(isset($izvajalec[$i])){ // Ime izvajalca $values2[0] = $izvajalec[1]['naslov']; $values2[$i] = $izvajalec[$i]['val']; $empty = false; } else{ $values2[$i] = '-2'; } } // Izpis vrstice if($empty == false){ $rowData = ''; // Izpisemo rezultate v svojo celico (prvih 9 celic, ki ni vezanih na predmet) foreach($values as $val){ $rowData .= ''; } // Izpisemo rezultate v svojo celico foreach($values2 as $val){ $rowData .= ''; } $rowData .= ''; fwrite($file_handler, $rowData); } } } } fwrite($file_handler, '
št. respondentaštudijski programizvajalecizvajalec (a)izvajalec (b)izvajalec (c)izvajalec (d)izvajalec (e)izvajalec (f)izvajalec (g)izvajalec (h)
RECNUMPROGRAMIZVAJALECVsebino predmeta je predstavil jasno in informativno.Dobro je poznal vsebino predmeta.Na poučevanje je bil pripravljen in dobro organiziran.Spodbujal je k sodelovanju v razpravah, postavljanju vprašanj in izražanju mnenj.Odzival se je na naša vprašanja in komentarje.Do nas je imel korekten odnos.Povezoval je vsebine predmeta s prakso.Z izvajalcem sem na splošno zadovoljen.
'; $rowData .= $val; $rowData .= ''; $rowData .= $val; $rowData .= '
'); fclose($file_handler); ob_clean(); $file_url = $temp_folder.'mfdps_'.$this->anketa.'_izvajalci.xls'; header('Content-Type: application/vnd.ms-excel; charset="'.$convertTypes[$convertType]['charSet'].'"'); header("Content-Transfer-Encoding: Binary"); header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); readfile($file_url); unlink ($temp_folder.'mfdps_'.$this->anketa.'_izvajalci.xls'); exit; } // Nastavimo imena vprasanj za vse predmete private function cacheData(){ // Napolnimo vprasanja $sql = sisplet_query("SELECT s.id, s.naslov, s.variable FROM srv_spremenljivka s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id='".$this->anketa."' AND s.variable LIKE 'P%' AND s.variable LIKE '%IME' AND SUBSTR(s.variable,2,1) in (1,2,3,4,5,6,7,8,9,0)"); while($row = mysqli_fetch_array($sql)){ $number = substr($row['variable'], 1, -3); $this->vprasanja[$number]['naslov'] = strip_tags($row['naslov']); $this->vprasanja[$number]['id'] = $row['id']; $this->vprasanja[$number]['variable'] = substr($row['variable'], 0, -3); } ksort($this->vprasanja); // Napolnimo odgovore za splosna vprasanja $variable = array('PROGR','LETNIK','MPREH','NACIN','SPOL','STAROST','ZAPOSL','DOBREMEN'); foreach($variable as $var){ $sql = sisplet_query("SELECT v.naslov, v.variable, d.usr_id FROM srv_grupa g, srv_spremenljivka s, srv_vrednost v, srv_data_vrednost".$this->db_table." d WHERE s.variable='".$var."' AND g.ank_id='".$this->anketa."' AND s.id=v.spr_id AND s.gru_id=g.id AND d.vre_id=v.id AND d.spr_id=s.id"); while($row = mysqli_fetch_array($sql)){ if($var == 'PROGR') $this->data_splosna[$row['usr_id']][$var] = $row['naslov']; else $this->data_splosna[$row['usr_id']][$var] = $row['variable']; } } // Napolnimo odgovore za predmete foreach($this->vprasanja as $predmet){ $sql = sisplet_query("SELECT v.vrstni_red, d.usr_id, d.grd_id FROM srv_grupa g, srv_spremenljivka s, srv_vrednost v, srv_data_grid".$this->db_table." d WHERE s.variable='".$predmet['variable']."V1' AND g.ank_id='".$this->anketa."' AND s.id=v.spr_id AND s.gru_id=g.id AND d.vre_id=v.id AND d.spr_id=s.id ORDER BY v.vrstni_red ASC"); while($row = mysqli_fetch_array($sql)){ // Nekje je stevilcenje narobe - (1 2 3 4 5 6 7 9?) - NAJLAZJE TAKO POPRAVIT:) $i = ($row['vrstni_red'] <= 8) ? $row['vrstni_red'] : 8; $this->data_v1[$row['usr_id']][$predmet['variable'].'V1'][$i] = $row['grd_id']; } } // Napolnimo odgovore za obremenjenost s predmetom foreach($this->vprasanja as $predmet){ $sql = sisplet_query("SELECT v.naslov, v.variable, d.usr_id FROM srv_grupa g, srv_spremenljivka s, srv_vrednost v, srv_data_vrednost".$this->db_table." d WHERE s.variable='".$predmet['variable']."V2' AND g.ank_id='".$this->anketa."' AND s.id=v.spr_id AND s.gru_id=g.id AND d.vre_id=v.id AND d.spr_id=s.id"); while($row = mysqli_fetch_array($sql)){ $this->data_v2[$row['usr_id']][$predmet['variable'].'V2'] = $row['variable']; } } // Napolnimo odgovore za izvajalce foreach($this->vprasanja as $predmet){ $sql = sisplet_query("SELECT s.naslov, s.variable, v.vrstni_red, d.usr_id, d.grd_id FROM srv_grupa g, srv_spremenljivka s, srv_vrednost v, srv_data_grid".$this->db_table." d WHERE s.variable LIKE '".$predmet['variable']."I%' AND g.ank_id='".$this->anketa."' AND s.id=v.spr_id AND s.gru_id=g.id AND d.vre_id=v.id AND d.spr_id=s.id ORDER BY v.vrstni_red ASC"); while($row = mysqli_fetch_array($sql)){ // Nekje je stevilcenje narobe - (1 2 3 4 5 6 7 9?) - NAJLAZJE TAKO POPRAVIT:) $i = ($row['vrstni_red'] <= 8) ? $row['vrstni_red'] : 8; $this->data_i[$row['usr_id']][$row['variable']][$i]['val'] = $row['grd_id']; $this->data_i[$row['usr_id']][$row['variable']][$i]['naslov'] = substr($row['naslov'], 0, strpos($row['naslov'], ')')+1); } } } }