summaryrefslogblamecommitdiffstats
path: root/admin/survey/modules/mod_advanced_timestamps/class.SurveyAdvancedTimestamps.php
blob: a6cc56ca8af8ef16f8c9f8fec32bcc678d0aa284 (plain) (tree)













































































































































































































































                                                                                                                      
<?php

/*
 *  Modul za pregledovanje in urejanje nastavitev naprednih časov po straneh
 *
 */


use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;


class SurveyAdvancedTimestamps {

	var $anketa;				# id ankete

	
	function __construct($anketa){

		// Ce imamo anketo
		if ((int)$anketa > 0){
			$this->anketa = $anketa;
		}
	}
	
	
	public function displaySettings(){
		global $lang;
               
		
		echo '<fieldset><legend>'.$lang['srv_results'].'</legend>';

		$href_csv = 'izvoz.php?m=advanced_timestamps_xls&anketa='.$this->anketa;
		echo ' <span><a href="'.$href_csv.'">Excel izvoz parapodatkov</a></span>';

		echo '</fieldset>';	
    }
    
	// Izvozimo tabelo s parapodatki v xls
	public function exportTable(){
		global $site_path;
    
        ini_set('memory_limit', '4048M');


		// Pridobimo podatke za vse tabele
		$timestamp_data = $this->getTimestampData();
		$page_data = $this->getPageData();
		$question_data = $this->getQuestionData();
		$variable_data = $this->getVariableData();


		$spreadsheet = new Spreadsheet();
		

		// Zavihek strani
		$sheet = $spreadsheet->getActiveSheet();
	
		$sheet->setTitle("Strani");
		$sheet->fromArray(
			$page_data,  // The data to set
			NULL,        // Array values with this value will not be set
			'A1'         // Top left coordinate of the worksheet range where
		);

		$spreadsheet->createSheet();


		// Zavihek vprasanja
		$sheet = $spreadsheet->getSheet(1);

		$sheet->setTitle("Vprašanja");
		$sheet->fromArray(
			$question_data,  // The data to set
			NULL,        // Array values with this value will not be set
			'A1'         // Top left coordinate of the worksheet range where
		);

		$spreadsheet->createSheet();


		// Zavihek itemi
		$sheet = $spreadsheet->getSheet(2);

		$sheet->setTitle("Itemi");
		$sheet->fromArray(
			$variable_data,  // The data to set
			NULL,        // Array values with this value will not be set
			'A1'         // Top left coordinate of the worksheet range where
		);

		$spreadsheet->createSheet();


		// Zavihek casi po straneh
		$sheet = $spreadsheet->getSheet(3);

		$sheet->setTitle("Časi po straneh");
		$sheet->fromArray(
			$timestamp_data,  // The data to set
			NULL,        // Array values with this value will not be set
			'A1'         // Top left coordinate of the worksheet range where
		);


		$writer = new Xlsx($spreadsheet);

		// ob_clean();
		// ob_start();
		$filename = 'advanced_timestamps_'.$this->anketa.'.xlsx';

		header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
		header("Content-Disposition: attachment;filename=".$filename);
		header("Cache-Control: max-age=0");
		header("Last-Modified: ".date("D, d M Y H:i:s"));
		header("Cache-Control: cache, must-revalidate");
		header("Pragma: public");

		$writer->save("php://output");
		// ob_end_flush();

		die();
	}



	// Pridobimo parapodatke casov po straneh
	private function getTimestampData(){

		$data = array(0 => array('Stran ID', 'Respondent ID', 'Čas'));

		// Najprej dobimo case na uvodih (gru_id=0)
		$sql = sisplet_query("SELECT at.gru_id, at.usr_id, at.time_edit 
								FROM srv_advanced_timestamps at, srv_user u
                                WHERE u.ank_id='".$this->anketa."' AND at.usr_id=u.id AND gru_id<1
                                ORDER BY at.usr_id ASC, at.id ASC
							");
		while($row = mysqli_fetch_assoc($sql)){
			$data[] = $row;
		}

		// Dobimo se ostale case
		$sql = sisplet_query("SELECT at.gru_id, at.usr_id, at.time_edit 
								FROM srv_advanced_timestamps at, srv_grupa g
                                WHERE g.ank_id='".$this->anketa."' AND at.gru_id=g.id
                                ORDER BY at.usr_id ASC, at.id ASC
							");
		while($row = mysqli_fetch_assoc($sql)){
			$data[] = $row;
		}
		
		return $data;
	}

	// Pridobimo podatke strani v anketi
	private function getPageData(){

		$data = array(0 => array('Stran ID', 'Naslov', 'Vrstni red'));
        
		$sql = sisplet_query("SELECT id, naslov, vrstni_red 
								FROM srv_grupa 
                                WHERE ank_id='".$this->anketa."' 
                                ORDER BY vrstni_red ASC
							");
		while($row = mysqli_fetch_assoc($sql)){
			$data[] = $row;
		}
		
		return $data;
	}

	// Pridobimo podatke vprasanj v anketi
	private function getQuestionData(){

		$question_types = array(
			'1' => 'radio',
			'2' => 'checkbox',
			'3' => 'select',
			'4' => 'text', 
			'21' => 'besedilo*',
			'5' => 'label',
			'6' => 'multigrid',
			'16' => 'multicheckbox',
			'19' => 'multitext',
			'20' => 'multinumber',
			'7' => 'number',
			'22' => 'compute ',
			'25' => 'quota',
			'8' => 'datum ',
			'17' => 'ranking  ',
			'18' => 'vsota',
			'24' => 'grid - multiple',
			'23' => 'iz knjiznice',
			'9' => 'SN-imena',
			'26' => 'Lokacija',
			'27' => 'HeatMap ', 
		);

		$data = array(0 => array('Vprašanje ID', 'Stran ID', 'Naslov', 'Variabla', 'Tip'));
        
		$sql = sisplet_query("SELECT s.id, s.gru_id, s.naslov, s.variable, s.tip 
								FROM srv_spremenljivka s, srv_grupa g
                                WHERE g.ank_id='".$this->anketa."' AND s.gru_id=g.id
                                ORDER BY g.vrstni_red ASC, s.id ASC
							");
		while($row = mysqli_fetch_assoc($sql)){

			$row['tip'] = $question_types[$row['tip']];
			$row['naslov'] = strip_tags($row['naslov']);

			$data[] = $row;
		}
		
		return $data;
	}

	// Pridobimo podatke posameznih itemov v vprasanjih
	private function getVariableData(){

		$data = array(0 => array('Vrednost ID', 'Vprašanje ID, ', 'Naslov', 'Variabla', 'Vrstni red'));
        
		$sql = sisplet_query("SELECT v.id, v.spr_id, v.naslov, v.variable, v.vrstni_red
								FROM srv_vrednost v, srv_spremenljivka s, srv_grupa g
                                WHERE g.ank_id='".$this->anketa."' AND s.gru_id=g.id AND v.spr_id=s.id
                                ORDER BY g.vrstni_red ASC, s.id ASC, v.id ASC
							");
		while($row = mysqli_fetch_assoc($sql)){

			$row['naslov'] = strip_tags($row['naslov']);

			$data[] = $row;
		}
		
		return $data;
	}

}