0){
$this->anketa = $anketa;
# polovimo vrsto tabel (aktivne / neaktivne)
SurveyInfo :: getInstance()->SurveyInit($this->anketa);
$this->db_table = SurveyInfo::getInstance()->getSurveyArchiveDBString();
}
}
// Prikaz nastavitev za izvoz
public function displaySettings(){
$enote = array(
"Ajdovščina", "Brežice", "Celje", "Cerknica", "Črnomelj", "Domžale", "Dravograd", "Gornja Radgona", "Grosuplje",
"Hrastnik", "Idrija", "Ilirska Bistrica", "Izola", "Jesenice", "Kamnik", "Kočevje", "Koper", "Kranj", "Krško", "Laško", "Lenart", "Lendava",
"Litija", "Ljubljana", "Ljutomer","Logatec", "Maribor", "Metlika", "Mozirje", "Murska Sobota", "Nova Gorica", "Novo mesto",
"Ormož", "Pesnica", "Piran", "Postojna", "Ptuj", "Radlje ob Dravi", "Radovljica", "Ravne na Koroškem",
"Ribnica", "Ruše", "Sevnica", "Sežana", "Slovenj Gradec", "Slovenska Bistrica", "Slovenske Konjice", "Šentjur pri Celju",
"Škofja Loka", "Šmarje pri Jelšah", "Tolmin", "Trbovlje", "Trebnje", "Tržič", "Velenje", "Vrhnika", "Zagorje ob Savi",
"Žalec", "Ljubljana-Bežigrad", "Ljubljana-Center", "Ljubljana-Moste Polje", "Ljubljana-SUNZ", "Ljubljana-Šiška", "Ljubljana-Vič Rudnik"
);
// Stari izvozi za enote
echo '
';
echo '
';
// Novi izvozi za enote
echo '';
// Include js
echo '';
}
// Zgeneriramo pdf analizo
public function executeExport($type, $enota='0'){
global $site_path;
global $site_url;
global $lang;
global $admin_type;
// Zgeneriramo zacasne csv datoteke
$this->prepareCSV();
// Poklicemo R skripto in zgeneriramo pdf
$script = $site_path . SCRIPT_FOLDER . '/Reports_MJU.R';
$params = $type;
$params .= ($type == 1 && $enota > 0) ? ' '.$enota : '';
$out = exec('Rscript '.$script.' '.$params.' 2>&1', $output, $return_var);
// Testiranje - izpis errorjev
/*if($admin_type == 0){
echo '';
echo 'Rscript '.$script;
echo '
'.$out.'
';
var_dump($output);
echo '
';
}*/
// Ime datoteke ion priprava zip paketa
if($type == 1 || $type == 2){
$doc_name = 'Upravna_enota.docx';
}
elseif($type == 3){
$doc_name = 'Upravne_enote.zip';
$zip = new ZipArchive;
if ($zip->open($site_path . RESULTS_FOLDER . '/'.$doc_name, ZIPARCHIVE::CREATE) !== TRUE)
die ("Could not open archive");
if($handle = opendir($site_path . RESULTS_FOLDER.'/')){
// Dodamo vse doc file v paket
while(false !== ($entry = readdir($handle))){
if(pathinfo($entry, PATHINFO_EXTENSION) == 'docx'){
$zip->addFile($site_path . RESULTS_FOLDER.'/'.$entry, $entry);
}
}
closedir($handle);
}
$zip->close();
}
else{
$doc_name = 'Vse_upravne_enote.docx';
}
// Pripravimo file za download
if(file_exists($site_path . RESULTS_FOLDER . '/'.$doc_name)){
$file = $site_path . RESULTS_FOLDER . '/'.$doc_name;
header('Content-Description: File Transfer');
//header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename(''.$doc_name.''));
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();
}
// Zgeneriramo pdf analizo za nove izvoze
public function executeExport2($type, $enota='0'){
global $site_path;
global $site_url;
global $lang;
global $admin_type;
// Zgeneriramo zacasne csv datoteke
$this->prepareCSV();
// Poklicemo R skripto in zgeneriramo pdf
$script = $site_path . SCRIPT_FOLDER . '/00_Reports_MJU.r';
$params = $type;
$params .= ($type == 1 && $enota > 0) ? ' '.$enota : '';
$out = exec('Rscript '.$script.' '.$params.' 2>&1', $output, $return_var);
// Testiranje - izpis errorjev
// if($admin_type == 0){
// echo '';
// echo 'Rscript '.$script;
// echo '
'.$out.'
';
// var_dump($output);
// echo '
';
// }
// Ime datoteke ion priprava zip paketa
if($type == 1 || $type == 2){
$doc_name = 'Upravna_enota.docx';
}
elseif($type == 3){
$doc_name = 'Upravne_enote.zip';
$zip = new ZipArchive;
if ($zip->open($site_path . RESULTS_FOLDER . '/'.$doc_name, ZIPARCHIVE::CREATE) !== TRUE)
die ("Could not open archive");
if($handle = opendir($site_path . RESULTS_FOLDER.'/')){
// Dodamo vse doc file v paket
while(false !== ($entry = readdir($handle))){
if(pathinfo($entry, PATHINFO_EXTENSION) == 'docx'){
$zip->addFile($site_path . RESULTS_FOLDER.'/'.$entry, $entry);
}
}
closedir($handle);
}
$zip->close();
}
else{
$doc_name = 'Vse_upravne_enote.docx';
}
// Pripravimo file za download
if(file_exists($site_path . RESULTS_FOLDER . '/'.$doc_name)){
$file = $site_path . RESULTS_FOLDER . '/'.$doc_name;
header('Content-Description: File Transfer');
//header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename(''.$doc_name.''));
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(){
global $site_path;
$temp_folder = $site_path . TEMP_FOLDER.'/';
// Poskrbimo za datoteko s podatki
$SDF = SurveyDataFile::get_instance();
$SDF->init($this->anketa);
$SDF->prepareFiles();
$_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
$status_filter = '('.STATUS_FIELD.' ~ /6|5/)&&('.LURKER_FIELD.'==0)';
$start_sequence = 2;
$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.'/mju_baza.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");
while ($line = fgets($fd)) {
$temp = array();
$temp = explode('|', $line);
// Spremenimo encoding v windows-1250
//$line = iconv("UTF-8","Windows-1250//TRANSLIT", $line);
$line = '"' . str_replace(array("\r","\n","\"","|"), array("","","",'";"'), $line) . '"';
fwrite($fd2, $line);
fwrite($fd2, "\r\n");
}
fclose($fd2);
}
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.'/mju_baza.csv')) {
unlink($temp_folder.'/mju_baza.csv');
}
if (file_exists($temp_folder.'/temp_data_'.$this->anketa.'.dat')) {
unlink($temp_folder.'/temp_data_'.$this->anketa.'.dat');
}
// Pobrisemo še vse rezultatih
$files = glob($site_path . RESULTS_FOLDER . '/*');
foreach($files as $file){
if(is_file($file))
unlink($file);
}
}
}