<?php

//vlozim funkcie pre pracu s obsahom stranky
$meno_suboru="functions_for_layout.php";
	if(file_exists($meno_suboru)){
	require_once($meno_suboru);
	}else{
	echo("Nenašiel som súbor ".$meno_suboru." pre vloženie do skriptu. Ukončím vykonávanie skriptu.");
	exit;
	}
//vlozim triedy pre pracu s databazou	
	$meno_suboru="class_db_handling.php";
	if(file_exists($meno_suboru)){
	require_once($meno_suboru);
	}else{
	echo("Nenašiel som súbor ".$meno_suboru." pre vloženie do skriptu. Ukončím vykonávanie skriptu.");
	exit;
	}

//funkcia pre kontrolu prihlasovacich dat
function control_form_data($user,$pass){
	//odstranenie tagov a sql injekcie
	$user_=htmlentities(strip_tags($user));
	$pass_=htmlentities(strip_tags($pass));
	//kontrola nepovolenych znakov
	$err=0;
	$vzor ='/[^A-Za-z0-9\.\-\_]/';
	if(preg_match($vzor,$user_)) $err=1;
	if(preg_match($vzor,$pass_)) $err=1;
	if(strlen(trim($user_))<4 || strlen(trim($user_))>30) $err=1;
	if(strlen(trim($pass_))<4 || strlen(trim($pass_))>30) $err=1;
	if($err==1){
		return 0;
	}else{
		return 1;
	}
}
//funkcia pre prihlasenie uzivatela
function log_user_in($user,$pass){
	if(control_form_data($user,$pass)){
		//ak su spravne data z formulara, musim skontrolovat, ci je taky uzivatel s takym heslom v databaze a nasledne ho prihlasit
		$rob_s_db=new  db_users();
		
		//vlozim si data pre pripojenie k db
		$meno_suboru="db_conf.php";
		if(file_exists($meno_suboru)){
		require_once($meno_suboru);
		}else{
		echo("Nenašiel som súbor ".$meno_suboru." pre vloženie do skriptu. Ukončím vykonávanie skriptu.");
		exit;
		}
		//tu volam metodu triedy, ktora mi overi spravnost prihlasenia uzivatela
		$overenie_uzivatela=$rob_s_db->check_user($dbname,$dbuser,$dbhost,$dbpass,$user,$pass);
		
		switch($overenie_uzivatela){
		case 'non_existing_user':
			//ak uzivatel a heslo k sebe nesedia, vypisem o tom spravu a koniec
			if(isset($_SESSION["uzivatel"]) && isset($_SESSION["sid"])){
			unset($_SESSION["uzivatel"]);
			unset($_SESSION["sid"]);
			session_destroy();
			}
			content_index_head();
			content_index_login3();
			content_index_search();
			content_index_menu();
			content_index_valid();
			content_index_content();
			content_index_footer();
			exit;
			break;			
		case 'user_exists':
			//ak je prihlasenie spravne, vytvorim session premenne a prihlasim uzivatela aj v databaze
			$sid=session_id();
			$_SESSION["uzivatel"]=$user;
			$_SESSION["sid"]=$sid;
			//vytvoril som session premenne a teraz prihlasim uzivatela do databazy
			$prihlasil=$rob_s_db->log_user_in($dbname,$dbuser,$dbhost,$dbpass,$user,$pass);
			if($prihlasil){
			//ak som uspesne uzivatela prihlasil ma nastavene SESSIONS a hlavna stranka sa bude podla toho spravat
			}else{
			//ak sa nieco pokazilo pri prihlasovani uzivatela do databazy, dam mu o tom vediet
			content_index_head();
			content_index_login4();
			content_index_search();
			content_index_menu();
			content_index_valid();
			content_index_content();
			content_index_footer();
			exit;
			}			
			break;
		case 'db_error':
			if(isset($_SESSION["uzivatel"]) && isset($_SESSION["sid"])){
			unset($_SESSION["uzivatel"]);
			unset($_SESSION["sid"]);
			session_destroy();
			}
			//ak sa pokazilo nieco pri komunikacii s databazou, vypisem o tom spravu
			content_index_head();
			content_index_login4();
			content_index_search();
			content_index_menu();
			content_index_valid();
			content_index_content();
			content_index_footer();
			exit;
			break;
		}
		
	}else{
	//zadal nepovolene znaky alebo maly pocet znakov, vypis a koniec
		content_index_head();
		content_index_login2();
		content_index_search();
		content_index_menu();
		content_index_valid();
		content_index_content();
		content_index_footer();
		exit;
	}
}

function log_out_user($userr,$sidd){
	//vlozim si data pre pripojenie k db
		$meno_suboru="db_conf.php";
		if(file_exists($meno_suboru)){
		require_once($meno_suboru);
		}else{
		echo("Nenašiel som súbor ".$meno_suboru." pre vloženie do skriptu. Ukončím vykonávanie skriptu.");
		exit;
		}
	//vlozim si funkcie pre kontrolu obsahu sessions
		$meno_suboru="functions_for_checking.php";
		if(file_exists($meno_suboru)){
		require_once($meno_suboru);
		}else{
		echo("Nenašiel som súbor ".$meno_suboru." pre vloženie do skriptu. Ukončím vykonávanie skriptu.");
		exit;
		}
	//odhlasim uzivatela z databazy
		if(check_sess(trim($userr),trim($sidd))){
		$rob_s_db=new  db_users();
		$odhlasil=$rob_s_db->log_user_out($dbname,$dbuser,$dbhost,$dbpass,$userr,$sidd);
		//ak bolo odhlasenie z databazy uspesne, tak mozes zlikvidovat aj session
			if($odhlasil){
				if(isset($_SESSION["uzivatel"]) && isset($_SESSION["sid"])){
				unset($_SESSION["uzivatel"]);
				unset($_SESSION["sid"]);
				session_destroy();
				}
				//po zlikvidovani session som uz kompletne odhlaseny, takze posielam uzivatelovi kompletne cistu stranku na prihlasenie sa
				content_index_head();
				content_index_login();
				content_index_search();
				content_index_menu();
				content_index_valid();
				content_index_content2();
				content_index_footer();
				exit;
			}else{
			//inak ak sa nepodarilo odhlasenie z databazy, vypisem o tom spravu
				//ak sa pokazilo nieco pri komunikacii s databazou, vypisem o tom spravu a zlikvidujem aspon session premenne
				if(isset($_SESSION["uzivatel"]) && isset($_SESSION["sid"])){
				unset($_SESSION["uzivatel"]);
				unset($_SESSION["sid"]);
				session_destroy();
				}
				content_index_head();
				content_index_login4();
				content_index_search();
				content_index_menu();
				content_index_valid();
				content_index_content();
				content_index_footer();
				exit;
			}
		
		}else{
				//tato vetva zistila, ze session premenne su nespravneho obsahu alebo prazdne, takze ich zlikviduje
				//tato vetva zareaguje hlavne pri prehliadaci s vypnutymi COOKIES alebo v mode Sukromne prehliadanie
				//tato vetva by mala zareagovat aj vtedy, ak niekto modifikoval obsah cookies tak, ze  obsahuju nieco ine ako povolene znaky
				//teda by to mala byt taka mala ochrana pred snahou injektovat nieco cez COOKIES do systemu
				if(isset($_SESSION["uzivatel"]) && isset($_SESSION["sid"])){
				unset($_SESSION["uzivatel"]);
				unset($_SESSION["sid"]);
				session_destroy();
				}
				content_index_head();
				content_index_login6();
				content_index_search();
				content_index_menu();
				content_index_valid();
				content_index_content();
				content_index_footer();
				exit;
		}
	
}

//toto je funkcia cisto len pre odhlasenie uzivatela z databazy
function log_out_user_from_db($userr,$sidd){
	//vlozim si data pre pripojenie k db
		$meno_suboru="db_conf.php";
		if(file_exists($meno_suboru)){
		require($meno_suboru);
		}else{
		echo("Nenašiel som súbor ".$meno_suboru." pre vloženie do skriptu. Ukončím vykonávanie skriptu.");
		exit;
		}
		//vlozim si funkcie pre kontrolu obsahu sessions
		$meno_suboru="functions_for_checking.php";
		if(file_exists($meno_suboru)){
		require_once($meno_suboru);
		}else{
		echo("Nenašiel som súbor ".$meno_suboru." pre vloženie do skriptu. Ukončím vykonávanie skriptu.");
		exit;
		}
	//odhlasim uzivatela z databazy
		if(check_sess(trim($userr),trim($sidd))){
		//nastavim si premennu, ktora vracia, ci sa odhlasenie z db podarilo alebo nie
		$out_from_db="not_set";
		$rob_s_db=new  db_users();
		$odhlasil=$rob_s_db->log_user_out($dbname,$dbuser,$dbhost,$dbpass,$userr,$sidd);
		//ak bolo odhlasenie z databazy uspesne, tak mozes zlikvidovat aj session
			if($odhlasil){
				if(isset($_SESSION["uzivatel"]) && isset($_SESSION["sid"])){
				unset($_SESSION["uzivatel"]);
				unset($_SESSION["sid"]);
				session_destroy();
				}
				$out_from_db="out_from_db";
				//po zlikvidovani session som uz kompletne odhlaseny	
			}else{
				//inak ak sa nepodarilo odhlasenie z databazy, dam o tom vediet				
				//pokusim sa teda aspon zlikvidovat session premenne
				if(isset($_SESSION["uzivatel"]) && isset($_SESSION["sid"])){
				unset($_SESSION["uzivatel"]);
				unset($_SESSION["sid"]);
				session_destroy();
				}
				$out_from_db="not_out_from_db";
			}
		
		}else{
				//ak sa nic s odhlasenim z databazy vobec nepodaril, aspon znova skusim zrusit session premenne
				if(isset($_SESSION["uzivatel"]) && isset($_SESSION["sid"])){
				unset($_SESSION["uzivatel"]);
				unset($_SESSION["sid"]);
				session_destroy();
				}
				$out_from_db="err_out_from_db";
		}
		//vratim vysledok, co sa stalo pri odhlasovani uzivatela z db
		return $out_from_db;
}


//tato funkcia bude kontrolovat, ci je uzivatel stale pripojeny, ci uz mu nevyprsal cas pripojenia alebo nie je nieco s jeho SESSIONS
function je_logged($userr,$sidd){
      	//ak su SESSIONS v poriadku, skontroluje este databazu a podla toho vrat vysledok
		//vlozim si data pre pripojenie k db
		$meno_suboru="db_conf.php";
		if(file_exists($meno_suboru)){
		require($meno_suboru);
		}else{
		echo("Nenašiel som súbor ".$meno_suboru." pre vloženie do skriptu. Ukončím vykonávanie skriptu.");
		exit;
		}
		//vlozim si funkcie pre kontrolu
		$meno_suboru="functions_for_checking.php";
		if(file_exists($meno_suboru)){
		require_once($meno_suboru);
		}else{
		echo("Nenašiel som súbor ".$meno_suboru." pre vloženie do skriptu. Ukončím vykonávanie skriptu.");
		exit;
		}
		
		if (check_sess($userr,$sidd)){
			$robdb=new db_users();
			//skontrolujem, ci je stale prihlaseny v systeme, ci uz nie je dlhsie necinny ako 10 minut
			$prihlaseny=$robdb->is_user_logged($dbname,$dbuser,$dbhost,$dbpass,$userr,$sidd);
			return $prihlaseny;	
			
		}else{
			return 0;
		}
		
}

?>