<commit_before><?

// PUBLIC/ANKETA - stranica za ispunjavanje ankete

function public_anketa() {

	global $userid,$user_siteadmin,$user_studentska,$user_nastavnik;
	global $_lv_; 


	// Predmet i a.g. mogu biti opcionalno parametri
	$predmet = intval($_REQUEST['predmet']);
	$ag = intval($_REQUEST['ag']);


	// Akcija za preview ankete, provjeravamo privilegije
	if ($_GET['akcija'] == "preview") {
		$ok = false;
		if ($user_studentska || $user_siteadmin) $ok = true;

		if ($predmet>0 && $ag>0 && $user_nastavnik) {
			$q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik=$userid and predmet=$predmet and akademska_godina=$ag");
			if (mysql_num_rows($q10)>0 && mysql_result($q10,0,0)!="asistent") $ok = true;
		}

		if (!$ok) {
			zamgerlog("preview ankete privilegije",3); // 3: error
			biguglyerror("Pristup nije dozvoljen.");
			return;
		}
	}

	// Da li je dat ID ankete kao parametar?
	if (isset($_REQUEST['anketa'])) {
		$id_ankete = intval($_REQUEST['anketa']);

	} else {
		// Nije, uzimamo trenutno aktivnu anketu
		if ($predmet>0) 
			// Možda je anketa samo za jedan predmet?
			$sql_dodaj = " and ((ap.predmet=$predmet and ap.akademska_godina=$ag) or ap.predmet IS NULL)";
		else
			$sql_dodaj = " and aa.akademska_godina=ag.id and ag.aktuelna=1";

		$q20 = myquery("select aa.id from anketa_anketa as aa, akademska_godina as ag, anketa_predmet as ap where aa.id=ap.anketa and ap.aktivna=1 $sql_dodaj order by aa.id desc");
		if (mysql_num_rows($q20)==0) {
			biguglyerror("Anketa trenutno nije aktivna. A");
			return;
		}
		$id_ankete = mysql_result($q20,0,0);
	}

	// Metapodaci o anketi
	$q30 = myquery("select naziv, UNIX_TIMESTAMP(datum_otvaranja), UNIX_TIMESTAMP(datum_zatvaranja), opis from anketa_anketa where id=$id_ankete");
	if (mysql_num_rows($q30)==0) {
		biguglyerror("Ne postoji anketa sa tim IDom");
		return;
	}
	$naziv_ankete = mysql_result($q30,0,0);
	$otvaranje = mysql_result($q30,0,1);
	$zatvaranje = mysql_result($q30,0,2);
	$opis_ankete = nl2br(mysql_result($q30,0,3));
	

	// Da li je istekao rok?
	if ($_GET['akcija'] != "preview" && (time () > $zatvaranje || time () < $otvaranje)) {
		if (time() < $otvaranje)
			print "<center><h1><font color=\"#00AA00\">Anketa će postati aktivna ".date("d. m. Y. \u H:i", $otvaranje)."</font></h1></center>";
		else
			biguglyerror("Anketa trenutno nije aktivna B");
		return;
	}

	// Da li je anketa aktivna? 
	// Ako je aktivna samo za određeni predmet, on mora biti zadat kao parametar
	$q40 = myquery("select aktivna from anketa_predmet where anketa=$id_ankete and ((predmet=$predmet and akademska_godina=$ag) or predmet IS NULL)");
	$anketa_aktivna = mysql_result($q40,0,0);
	if ($_GET['akcija'] != "preview" && (mysql_num_rows($q40)<1 || $anketa_aktivna==0)) {
		biguglyerror("Anketa trenutno nije aktivna!");
		return;
	}


	// U slučaju preview, ne radimo ništa
	if ($_GET['akcija'] == "preview") {
		$zavrsena = 'N';
	

	// Ako je student unio hash code, koristimo ga radi anonimnosti rezultata
	} else if (isset($_POST['hash_code']) && $_POST['hash_code'] != "") {
		// CSRF zaštita
		if (!check_csrf_token()) {
			?>
			<center>
				<p>Vaša sesija je istekla. Molimo da ponovo popunite anketu. Izvinjavamo se zbog neugodnosti.</p>
				<a href="index.php">Nazad na početnu stranicu</a>
			</center>
			<?
			return;
		}

		$hash_code = my_escape($_POST['hash_code']);

		// Provjeravamo da li kod postoji i da li je već iskorišten (polje zavrsena)
		$q50 = myquery("SELECT id, predmet, zavrsena FROM anketa_rezultat WHERE unique_id='$hash_code' and anketa=$id_ankete");
		if (mysql_num_rows($q50)==0) {
			// Dati hash ne postoji u bazi tj. student pokušava da izmisli hash :P
			?>
			<center>
				<p>Greška: neispravan kod '<?=$hash_code?>'.</p>
				<a href="index.php">Nazad na početnu stranicu</a>
			</center>
			<?
			return;
		}
		if (mysql_num_rows($q50)>1) {
			// Hash nije unique!?
			return;
		}
	
		$id_rezultata = mysql_result($q50,0,0);
		$predmet = mysql_result($q50,0,1);
		$zavrsena = mysql_result($q50,0,2);


	// Student je logiran, pa ćemo pokušati iskoristiti njegove kredencijale
	} else if ($userid>0) {
		// Korisnik nije izabrao predmet, pa je najvjerovatnije pokušao ući na anketu bez logouta
		if ($predmet==0 || $ag==0) {
			biguglyerror("Niste napravili logout!");
			return;
		}
		
		// Da li student sluša predmet?
		$q60 = myquery("select pk.studij, pk.semestar from student_predmet as sp, ponudakursa as pk where sp.student=$userid and sp.predmet=pk.id and pk.predmet=$predmet and pk.akademska_godina=$ag");
		if (mysql_num_rows($q60)<1) {
			zamgerlog("student ne slusa predmet pp$predmet", 3);
			biguglyerror("Niste upisani na ovaj predmet");
			return;
		}

		// Određujemo studij i semestar radi insertovanja u tabelu anketa_rezultat
		$studij = mysql_result($q60,0,0);
		$semestar = mysql_result($q60,0,1);
	
		$q70 = myquery("SELECT zavrsena, anketa_rezultat FROM anketa_student_zavrsio WHERE student=$userid AND predmet=$predmet AND akademska_godina=$ag AND anketa=$id_ankete");

		// Kreiramo zapise u tabelama anketa_rezultat i anketa_student_zavrsio
		if (mysql_num_rows($q70)==0) {
			$q90 = myquery("INSERT INTO anketa_rezultat SET anketa=$id_ankete, zavrsena='N', predmet=$predmet, unique_id='', akademska_godina=$ag, studij=$studij, semestar=$semestar, student=NULL");<commit_msg>public/anketa: Onemoguci popunjavanje ankete za predmet iz pogresnog semestra<commit_after><?

// PUBLIC/ANKETA - stranica za ispunjavanje ankete

function public_anketa() {

	global $userid,$user_siteadmin,$user_studentska,$user_nastavnik;
	global $_lv_; 


	// Predmet i a.g. mogu biti opcionalno parametri
	$predmet = intval($_REQUEST['predmet']);
	$ag = intval($_REQUEST['ag']);


	// Akcija za preview ankete, provjeravamo privilegije
	if ($_GET['akcija'] == "preview") {
		$ok = false;
		if ($user_studentska || $user_siteadmin) $ok = true;

		if ($predmet>0 && $ag>0 && $user_nastavnik) {
			$q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik=$userid and predmet=$predmet and akademska_godina=$ag");
			if (mysql_num_rows($q10)>0 && mysql_result($q10,0,0)!="asistent") $ok = true;
		}

		if (!$ok) {
			zamgerlog("preview ankete privilegije",3); // 3: error
			biguglyerror("Pristup nije dozvoljen.");
			return;
		}
	}

	// Da li je dat ID ankete kao parametar?
	if (isset($_REQUEST['anketa'])) {
		$id_ankete = intval($_REQUEST['anketa']);

	} else {
		// Nije, uzimamo trenutno aktivnu anketu
		if ($predmet>0) 
			// Možda je anketa samo za jedan predmet?
			$sql_dodaj = " and ((ap.predmet=$predmet and ap.akademska_godina=$ag) or ap.predmet IS NULL)";
		else
			$sql_dodaj = " and aa.akademska_godina=ag.id and ag.aktuelna=1";

		$q20 = myquery("select aa.id from anketa_anketa as aa, akademska_godina as ag, anketa_predmet as ap where aa.id=ap.anketa and ap.aktivna=1 $sql_dodaj order by aa.id desc");
		if (mysql_num_rows($q20)==0) {
			biguglyerror("Anketa trenutno nije aktivna. A");
			return;
		}
		$id_ankete = mysql_result($q20,0,0);
	}

	// Metapodaci o anketi
	$q30 = myquery("select naziv, UNIX_TIMESTAMP(datum_otvaranja), UNIX_TIMESTAMP(datum_zatvaranja), opis from anketa_anketa where id=$id_ankete");
	if (mysql_num_rows($q30)==0) {
		biguglyerror("Ne postoji anketa sa tim IDom");
		return;
	}
	$naziv_ankete = mysql_result($q30,0,0);
	$otvaranje = mysql_result($q30,0,1);
	$zatvaranje = mysql_result($q30,0,2);
	$opis_ankete = nl2br(mysql_result($q30,0,3));
	

	// Da li je istekao rok?
	if ($_GET['akcija'] != "preview" && (time () > $zatvaranje || time () < $otvaranje)) {
		if (time() < $otvaranje)
			print "<center><h1><font color=\"#00AA00\">Anketa će postati aktivna ".date("d. m. Y. \u H:i", $otvaranje)."</font></h1></center>";
		else
			biguglyerror("Anketa trenutno nije aktivna B");
		return;
	}

	// Da li je anketa aktivna? 
	// Ako je aktivna samo za određeni predmet, on mora biti zadat kao parametar
	$q40 = myquery("select aktivna, semestar from anketa_predmet where anketa=$id_ankete and ((predmet=$predmet and akademska_godina=$ag) or predmet IS NULL)");
	$anketa_aktivna = mysql_result($q40,0,0);
	$anketa_semestar = mysql_result($q40,0,1);
	if ($_GET['akcija'] != "preview" && (mysql_num_rows($q40)<1 || $anketa_aktivna==0)) {
		biguglyerror("Anketa trenutno nije aktivna!");
		return;
	}


	// U slučaju preview, ne radimo ništa
	if ($_GET['akcija'] == "preview") {
		$zavrsena = 'N';
	

	// Ako je student unio hash code, koristimo ga radi anonimnosti rezultata
	} else if (isset($_POST['hash_code']) && $_POST['hash_code'] != "") {
		// CSRF zaštita
		if (!check_csrf_token()) {
			?>
			<center>
				<p>Vaša sesija je istekla. Molimo da ponovo popunite anketu. Izvinjavamo se zbog neugodnosti.</p>
				<a href="index.php">Nazad na početnu stranicu</a>
			</center>
			<?
			return;
		}

		$hash_code = my_escape($_POST['hash_code']);

		// Provjeravamo da li kod postoji i da li je već iskorišten (polje zavrsena)
		$q50 = myquery("SELECT id, predmet, zavrsena FROM anketa_rezultat WHERE unique_id='$hash_code' and anketa=$id_ankete");
		if (mysql_num_rows($q50)==0) {
			// Dati hash ne postoji u bazi tj. student pokušava da izmisli hash :P
			?>
			<center>
				<p>Greška: neispravan kod '<?=$hash_code?>'.</p>
				<a href="index.php">Nazad na početnu stranicu</a>
			</center>
			<?
			return;
		}
		if (mysql_num_rows($q50)>1) {
			// Hash nije unique!?
			return;
		}
	
		$id_rezultata = mysql_result($q50,0,0);
		$predmet = mysql_result($q50,0,1);
		$zavrsena = mysql_result($q50,0,2);


	// Student je logiran, pa ćemo pokušati iskoristiti njegove kredencijale
	} else if ($userid>0) {
		// Korisnik nije izabrao predmet, pa je najvjerovatnije pokušao ući na anketu bez logouta
		if ($predmet==0 || $ag==0) {
			biguglyerror("Niste napravili logout!");
			return;
		}
		
		// Da li student sluša predmet?
		$q60 = myquery("select pk.studij, pk.semestar from student_predmet as sp, ponudakursa as pk where sp.student=$userid and sp.predmet=pk.id and pk.predmet=$predmet and pk.akademska_godina=$ag");
		if (mysql_num_rows($q60)<1) {
			zamgerlog("student ne slusa predmet pp$predmet", 3);
			biguglyerror("Niste upisani na ovaj predmet");
			return;
		}

		// Određujemo studij i semestar radi insertovanja u tabelu anketa_rezultat
		$studij = mysql_result($q60,0,0);
		$semestar = mysql_result($q60,0,1);
	
		$q70 = myquery("SELECT zavrsena, anketa_rezultat FROM anketa_student_zavrsio WHERE student=$userid AND predmet=$predmet AND akademska_godina=$ag AND anketa=$id_ankete");
		
		if ($semestar % 2 != $anketa_semestar) {
			biguglyerror("Predmet nije u odgovarajućem semestru");
			return;
		}

		// Kreiramo zapise u tabelama anketa_rezultat i anketa_student_zavrsio
		if (mysql_num_rows($q70)==0) {
			$q90 = myquery("INSERT INTO anketa_rezultat SET anketa=$id_ankete, zavrsena='N', predmet=$predmet, unique_id='', akademska_godina=$ag, studij=$studij, semestar=$semestar, student=NULL");
{'fraction_non_alphanumeric': 0.14953784204264667, 'fraction_numerical': 0.020042097556511394, 'mean_word_length': 4.508064516129032, 'pattern_counts': {'":': 0, '<': 55, '<?xml version=': 0, '>': 59, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4693622', 'n_tokens_mistral': 4915, 'n_tokens_neox': 4518, 'n_words': 996}