예제 #1
0
파일: room.php 프로젝트: NobisPete/choose
	function get_room_depth($room_id){

		if ($room_id == 1){return 1;}

		list($parent_room_id) = db_list(db_fetch("SELECT id FROM choose_rooms WHERE room_1=$room_id OR room_2=$room_id"));

		if ($parent_room_id){
			return 1 + get_room_depth($parent_room_id);
		}

		return 1;
	}
예제 #2
0
/**
 * remove all metadata that have been expired for more than file ttd
 * then remove all files and logs without metadata
 *
 * @return  Void
 */
function db_purge()
{
    global $purge_interval, $file_ttd;
    # abort if last purge has been less than purge interval ago
    if (filemtime('metadata/.LAST_PURGE') > time() - $purge_interval) {
        return;
    }
    # get list of files, oldest first
    $files = array_reverse(db_list());
    # remove metadata of expired files
    foreach ($files as $file) {
        if ($file['expire'] + $file_ttd > time()) {
            # continue to next step when first file is encountered that has not expired more than file ttd ago
            break;
        } else {
            unlink('metadata/' . $file['id']);
        }
    }
    # open log directory
    $files = dir('logs');
    # remove all log files without associated metadata
    while ($file = $files->read()) {
        if (substr($file, 0, 1) == '.') {
            continue;
        } else {
            if (!db_exists($file, 'metadata')) {
                unlink('logs/' . $file);
            }
        }
    }
    # open file directory
    $files = dir('files');
    # remove all uploaded files without associated metadata
    while ($file = $files->read()) {
        if (substr($file, 0, 1) == '.') {
            continue;
        } else {
            if (!db_exists($file, 'metadata')) {
                unlink('files/' . $file);
            }
        }
    }
    # timestamp this purge
    touch('metadata/.LAST_PURGE');
}
예제 #3
0
		foreach ($ret['rows'] as $row){

			$clothing[$row['id']] = $row;
		}

		foreach ($avatars as $k => $row){
			foreach ($row['details'] as $slot => $id){

				$avatars[$k]['details'][$slot] = $clothing[$id];
			}
		}
	}


	#
	# some totals
	#

	list($count_avatars) = db_list(db_fetch("SELECT COUNT(*) FROM glitchmash_avatars"));
	list($count_votes) = db_list(db_fetch("SELECT COUNT(*) FROM glitchmash_votes"));

	$smarty->assign('count_avatars', $count_avatars);
	$smarty->assign('count_votes', $count_votes);


	#
	# output
	#

	$smarty->display('page_top.txt');
?>
function table_types2($table)
{
    global $db_driver;
    if ('mysql' == $db_driver) {
        $types = array();
        $rows = @db_list("SHOW COLUMNS FROM `{$table}`");
        if (!($rows && count($rows))) {
            return false;
        }
        foreach ($rows as $row) {
            $type = $row['Type'];
            preg_match('#^[a-z]+#', $type, $match);
            $type = $match[0];
            $types[$row['Field']] = $type;
        }
    }
    if ('pgsql' == $db_driver) {
        $types = db_assoc("SELECT column_name, udt_name FROM information_schema.columns WHERE table_name ='{$table}' ORDER BY ordinal_position");
        if (!count($types)) {
            return false;
        }
        foreach ($types as $col => $type) {
            // "_" also in regexp - error when retrieving column info from "pg_class",
            // udt_name might be "_aclitem" / "_text".
            preg_match('#^[a-z_]+#', $type, $match);
            $type = $match[0];
            $types[$col] = $type;
        }
    }
    foreach ($types as $col => $type) {
        if ('varchar' == $type) {
            $type = 'char';
        }
        if ('integer' == $type) {
            $type = 'int';
        }
        if ('timestamp' == $type) {
            $type = 'time';
        }
        $types[$col] = $type;
    }
    return $types;
}
예제 #5
0
파일: bios.php 프로젝트: NazarK/sqp
function table_edit_form_generate($tablename, $r = "")
{
    global $tables;
    //this is for add
    if (!$r) {
        $r = new stdClass();
    }
    if (isset($tables[$tablename]["fields"])) {
        foreach ($tables[$tablename]["fields"] as $value) {
            //this is for add
            if (!isset($r->{$value})) {
                $r->{$value} = "";
            }
            if (str_end($value, "_check")) {
                form_checkbox("{~" . str_start($value, "_check") . "}:", $value, $r->{$value});
            } else {
                if (str_end($value, "_time")) {
                    $shortname = str_start($value, "_time");
                    form_timestamp($shortname, $shortname, $r->{$value});
                } else {
                    if (str_end($value, "_id")) {
                        $cap = substr($value, 0, strlen($value) - 3);
                        $table = $cap . "s";
                        if (!isset($tables[$table])) {
                            $table = str_prefix($tablename) . $table;
                        }
                        $fields = "id";
                        //use first field as list value
                        foreach ($tables[$table]['fields'] as $list_value) {
                            $fields .= ", {$list_value}";
                            break;
                        }
                        $list = db_list(db_query("SELECT {$fields} FROM {$table}"));
                        $table = table_long_alias($table);
                        form_list($table, $value, $list, $r->{$value});
                    } else {
                        //              $r->$value = htmlentities($r->$value,ENT_QUOTES);
                        if (str_end($value, "_text")) {
                            form_textarea("{~" . str_start($value, "_text") . "}", $value, $r->{$value});
                        } else {
                            form_input("{~{$value}}", $value, $r->{$value});
                        }
                    }
                }
            }
        }
    }
}
예제 #6
0
function table_columns($table)
{
    // @columns
    global $db_driver, $global_columns;
    static $cache_columns = array();
    if (isset($cache_columns[$table])) {
        return $cache_columns[$table];
    }
    if ('mysql' == $db_driver) {
        $columns = array();
        $rows = @db_list("SHOW COLUMNS FROM `{$table}`");
        /*
        	[Field] => id
        	[Type] => int(11)
        	[Null] => NO
        	[Key] => PRI
        	[Default] =>
        	[Extra] =>
        */
        if (!($rows && count($rows))) {
            return false;
        }
        if (!isset($global_columns[$table])) {
            $global_columns[$table] = array();
        }
        foreach ($rows as $row) {
            $type = $row['Type'];
            // for example "VARCHAR(50)"
            preg_match('#^[a-z]+#i', $type, $match);
            $type = strtolower($match[0]);
            $type = ColumnType($type);
            $columns[$row['Field']] = $type;
            $global_columns[$table][] = array("name" => $row["Field"], "type" => $type, "pk" => $row["Key"] == "PRI" || $row["Key"] == "UNI", "notnull" => $row["Null"] == "NO", "default" => $row["Default"]);
        }
    } else {
        if ('pgsql' == $db_driver) {
            $columns = db_list("SELECT column_name, udt_name, column_default, is_nullable FROM information_schema.columns WHERE table_name = '{$table}' ORDER BY ordinal_position");
            dump($columns);
            // column_name
            // udt_name
            // column_default - default value
            // is_nullable
            /*
            	[table_catalog] => test
            	[table_schema] => public
            	[table_name] => some22
            	[column_name] => id
            	[ordinal_position] => 1
            	[column_default] =>
            	[is_nullable] => NO
            	[data_type] => integer
            	[character_maximum_length] =>
            	[udt_catalog] => test
            	[udt_schema] => pg_catalog
            	[udt_name] => int4
            	[dtd_identifier] => 1
            	[is_self_referencing] => NO
            	[is_identity] => NO
            	[is_generated] => NEVER
            	[is_updatable] => YES
            */
            // To get primary key for a table in postgresql:
            //db_exe("CREATE TABLE some33 (id integer PRIMARY KEY, name varchar(30)) ");
            //dump(db_list("SELECT * FROM information_schema.table_constraints WHERE table_name = 'some33'"));
            //dump(db_list("SELECT * FROM information_schema.key_column_usage WHERE table_name = 'some33'"));
            if (!count($columns)) {
                return false;
            }
            foreach ($columns as $col => $type) {
                // "_" also in regexp - error when retrieving column info from "pg_class" - through a Custom query in SQL Editor POPUP.
                // udt_name might be "_aclitem" / "_text".
                // $type == for example "VARCHAR(50)"
                preg_match('#^[a-z_]+#i', $type, $match);
                $type = strtolower($match[0]);
                $type = ColumnType($type);
                $columns[$col] = $type;
            }
        } else {
            if ("sqlite" == $db_driver) {
                $rawColumns = db_list("PRAGMA table_info(\"{$table}\")");
                /*
                	[cid] => 0
                	[name] => id
                	[type] => INTEGER
                	[notnull] => 0
                	[dflt_value] =>
                	[pk] => 1
                */
                if (!count($rawColumns)) {
                    return false;
                }
                foreach ($rawColumns as $row) {
                    if ($row["type"]) {
                        preg_match("#^[a-z]+#i", $row["type"], $match);
                        $type = strtolower($match[0]);
                        $type = ColumnType($type);
                    } else {
                        // type might be empty: sqlite_sequence table
                        // Solved by not querying sqlite_ special: AND name NOT LIKE 'sqlite_%'
                        $type = "";
                    }
                    $col = $row["name"];
                    $columns[$col] = $type;
                    $global_columns[$table][] = array("name" => $row["name"], "type" => $type, "pk" => (int) $row["pk"], "notnull" => (int) $row["notnull"], "default" => $row["dflt_value"]);
                }
            }
        }
    }
    $cache_columns[$table] = $columns;
    return $columns;
}
예제 #7
0
			), array(
				'win_id'	=> $win,
				'lose_id'	=> $lose,
				'date_updated'	=> time(),
			));


			#
			# update counts for the 2 choices
			#

			list($wins1) = db_list(db_fetch("SELECT COUNT(*) FROM glitchmash_votes WHERE win_id=$win"));
			list($wins2) = db_list(db_fetch("SELECT COUNT(*) FROM glitchmash_votes WHERE win_id=$lose"));

			list($losses1) = db_list(db_fetch("SELECT COUNT(*) FROM glitchmash_votes WHERE lose_id=$win"));
			list($losses2) = db_list(db_fetch("SELECT COUNT(*) FROM glitchmash_votes WHERE lose_id=$lose"));

			db_update('glitchmash_avatars', array(
				'votes'		=> $wins1+$losses1,
				'wins'		=> $wins1,
				'enough_votes'	=> (($wins1+$losses1) >= $vote_limit) ? 1 : 0,
				'ratio'		=> $wins1 / ($wins1+$losses1),
			), "id=$win");

			db_update('glitchmash_avatars', array(
				'votes'		=> $wins2+$losses2,
				'wins'		=> $wins2,
				'enough_votes'	=> (($wins2+$losses2) >= $vote_limit) ? 1 : 0,
				'ratio'		=> $wins2 / ($wins2+$losses2),
			), "id=$lose");
예제 #8
0
	$ret = curl_api_call('/simple/auth.check', array(
		'oauth_token'	=> $oauth_token,
	));

	db_insert_dupe('glitchmash_players', array(
		'tsid'		=> AddSlashes($ret['player_tsid']),
		'date_added'	=> time(),
		'oauth_token'	=> AddSlashes($oauth_token),
		'name'		=> AddSlashes($ret['player_name']),
	), array(
		'oauth_token'	=> AddSlashes($oauth_token),
		'name'		=> AddSlashes($ret['player_name']),
	));


	#
	# player is logged in - go and import their avatar
	#

	$tsid_enc = AddSlashes($ret['player_tsid']);

	list($count) = db_list(db_fetch("SELECT COUNT(*) FROM glitchmash_avatars WHERE player_tsid='$tsid_enc'"));

	if ($count){
		header("location: /checkcookie/?redir=".urlencode('/you/?login=1'));
	}else{
		header("location: /checkcookie/?redir=".urlencode('/import/'));
	}
	exit;
?>
예제 #9
0
		'date_updated'	=> time(),
		'details'	=> AddSlashes(serialize($avatar)),
	);

	$hash2 = $hash;
	unset($hash2['date_added']);

	db_insert_dupe('glitchmash_avatars', $hash, $hash2);


	#
	# mark only the latest one as active
	#

	$tsid_enc = AddSlashes($cfg['user']['tsid']);

	list($latest_id) = db_list(db_fetch("SELECT id FROM glitchmash_avatars WHERE player_tsid='$tsid_enc' ORDER BY date_updated DESC LIMIT 1"));

	$latest_id = intval($latest_id);

	db_write("UPDATE glitchmash_avatars SET is_active=0 WHERE player_tsid='$tsid_enc' AND id!=$latest_id");
	db_write("UPDATE glitchmash_avatars SET is_active=1 WHERE player_tsid='$tsid_enc' AND id=$latest_id");


	#
	# done
	#

	header("location: /you/?imported=1");
	exit;
?>
예제 #10
0
파일: zadace.php 프로젝트: msehalic/zamger
function nastavnik_zadace()
{
    global $userid, $user_siteadmin, $conf_files_path;
    require "lib/manip.php";
    require "lib/autotest.php";
    global $mass_rezultat;
    // za masovni unos studenata u grupe
    global $_lv_;
    // radi autogenerisanih formi
    // Parametri potrebni za Moodle integraciju
    global $conf_moodle, $conf_moodle_url, $conf_moodle_db, $conf_moodle_prefix, $conf_moodle_reuse_connection, $conf_moodle_dbhost, $conf_moodle_dbuser, $conf_moodle_dbpass;
    global $__lv_connection, $conf_use_mysql_utf8;
    // Parametri
    $predmet = intval($_REQUEST['predmet']);
    $ag = intval($_REQUEST['ag']);
    // Naziv predmeta
    $q5 = myquery("select naziv from predmet where id={$predmet}");
    if (mysql_num_rows($q5) < 1) {
        biguglyerror("Nepoznat predmet");
        zamgerlog("ilegalan predmet {$predmet}", 3);
        //nivo 3: greska
        zamgerlog2("nepoznat predmet", $predmet);
        return;
    }
    $predmet_naziv = mysql_result($q5, 0, 0);
    // Da li korisnik ima pravo ući u modul?
    if (!$user_siteadmin) {
        $q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}");
        if (mysql_num_rows($q10) < 1 || mysql_result($q10, 0, 0) == "asistent") {
            zamgerlog("nastavnik/ispiti privilegije (predmet pp{$predmet})", 3);
            zamgerlog2("nije nastavnik na predmetu", $predmet, $ag);
            biguglyerror("Nemate pravo pristupa ovoj opciji");
            return;
        }
    }
    // Dozvoljene ekstenzije
    $q13 = myquery("select naziv from ekstenzije");
    $dozvoljene_ekstenzije = array();
    while ($r13 = mysql_fetch_row($q13)) {
        array_push($dozvoljene_ekstenzije, $r13[0]);
    }
    // Da li predmet posjeduje komponente za zadaće?
    $q15 = myquery("select k.id, k.naziv from komponenta as k, tippredmeta_komponenta as tpk, akademska_godina_predmet as agp where agp.akademska_godina={$ag} and agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and tpk.komponenta=k.id and k.tipkomponente=4");
    if (mysql_num_rows($q15) < 1) {
        zamgerlog("ne postoji komponenta za zadace na predmetu pp{$predmet} ag{$ag}", 3);
        zamgerlog2("ne postoji komponenta za zadace", $predmet, $ag);
        niceerror("U sistemu bodovanja za ovaj predmet nije definisana nijedna komponenta zadaće.");
        print "<p>Da biste nastavili, promijenite <a href=\"?sta=nastavnik/tip?predmet={$predmet}&ag={$ag}\">sistem bodovanja</a> za ovaj predmet.</p>\n";
        return;
    }
    if (mysql_num_rows($q15) > 1) {
        niceerror("U sistemu bodovanja za ovaj predmet je definisano više od jedne komponente za zadaće.");
        print "<p>Ovaj modul trenutno podržava samo jednu komponentu zadaća. Ako imate potrebu za rad sa više od jedne komponente zadaća istovremeno, kontaktirajte administratora Zamgera. U suprotnom, provjerite <a href=\"?sta=nastavnik/tip?predmet={$predmet}&ag={$ag}\">sistem bodovanja</a> za ovaj predmet za slučaj da je ova situacija posljedica greške.</p>\n";
        print "<p>Koristićemo komponentu označenu nazivom: <b>" . mysql_result($q15, 0, 1) . "</b></p>";
    }
    $komponenta_za_zadace = mysql_result($q15, 0, 0);
    ?>

<p>&nbsp;</p>

<p><h3><?php 
    echo $predmet_naziv;
    ?>
 - Zadaće</h3></p>

<?php 
    # Masovni unos zadaća
    if ($_POST['akcija'] == "massinput" && strlen($_POST['nazad']) < 1 && check_csrf_token()) {
        if ($_POST['fakatradi'] != 1) {
            $ispis = 1;
        } else {
            $ispis = 0;
        }
        // Provjera ostalih parametara
        $zadaca = intval($_REQUEST['_lv_column_zadaca']);
        $zadatak = intval($_REQUEST['zadatak']);
        $q20 = myquery("select naziv,zadataka,bodova,komponenta,predmet,akademska_godina from zadaca where id={$zadaca}");
        if (mysql_num_rows($q20) < 1) {
            zamgerlog("nepostojeca zadaca {$zadaca}", 3);
            // 3 = greška
            zamgerlog2("nepostojeca zadaca", $zadaca);
            niceerror("Morate najprije kreirati zadaću");
            print "\n<p>Koristite formular &quot;Kreiranje zadaće&quot; koji se nalazi na prethodnoj stranici. Ukoliko ne vidite nijednu zadaću na spisku &quot;Postojeće zadaće&quot;, koristite dugme Refresh vašeg web preglednika.</p>\n";
            return;
        }
        if (mysql_result($q20, 0, 1) < $zadatak) {
            zamgerlog("zadaca {$zadaca} nema {$zadatak} zadataka", 3);
            zamgerlog2("zadaca nema toliko zadataka", $zadaca, $zadatak);
            niceerror("Zadaća \"" . mysql_result($q20, 0, 0) . "\" nema {$zadatak} zadataka.");
            return;
        }
        $maxbodova = mysql_result($q20, 0, 2);
        $komponenta = mysql_result($q20, 0, 3);
        // Provjera spoofanja zadaće
        if ($predmet != mysql_result($q20, 0, 4) || $ag != mysql_result($q20, 0, 5)) {
            zamgerlog("zadaca z{$zadaca} nije u predmetu pp{$predmet}", 3);
            zamgerlog2("id zadace i predmeta se ne poklapaju", $zadaca, $predmet, $ag);
            niceerror("Pogresan ID zadace!");
            return;
        }
        if ($ispis) {
            ?>
Akcije koje će biti urađene:<br/><br/>
		<?php 
            echo genform("POST");
            ?>
		<input type="hidden" name="fakatradi" value="1">
		<input type="hidden" name="_lv_column_zadaca" value="<?php 
            echo $zadaca;
            ?>
">
		<table border="0" cellspacing="1" cellpadding="2">
		<!-- FIXME: prebaciti stilove u CSS? -->
		<thead>
		<tr bgcolor="#999999">
			<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Prezime</font></td>
			<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Ime</font></td>
			<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Bodovi / Komentar</font></td>
		</tr>
		</thead>
		<tbody>
		<?php 
        }
        $greska = mass_input($ispis);
        // Funkcija koja parsira podatke
        if (count($mass_rezultat) == 0) {
            niceerror("Niste unijeli ništa.");
            return;
        }
        foreach ($mass_rezultat['ime'] as $student => $ime) {
            $prezime = $mass_rezultat['prezime'][$student];
            $bodova = $mass_rezultat['podatak1'][$student];
            $bodova = str_replace(",", ".", $bodova);
            // Student neocijenjen (prazno mjesto za ocjenu)
            if (floatval($bodova) == 0 && strpos($bodova, "0") === FALSE) {
                if ($ispis) {
                    print "Student '{$prezime} {$ime}' - nema zadaću (nije unesen broj bodova {$bodova})<br/>";
                }
                continue;
            }
            // Bodovi moraju biti manji od maximalnih borova
            $bodova = floatval($bodova);
            if ($bodova > $maxbodova) {
                if ($ispis) {
                    print "-- Studenta '{$prezime} {$ime}' ima {$bodova} bodova što je više od maksimalnih {$maxbodova}<br/>";
                    //$greska=1;
                    continue;
                }
            }
            // Zaključak
            if ($ispis) {
                print "Student '{$prezime} {$ime}' - zadaća {$zadaca}, bodova {$bodova}<br/>";
            } else {
                // Odredjujemo zadnji filename
                $q25 = myquery("select filename from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$student} order by id desc limit 1");
                if (mysql_num_rows($q25) > 0) {
                    $filename = mysql_result($q25, 0, 0);
                } else {
                    $filename = '';
                }
                $status_pregledana = 5;
                // status 5: pregledana
                $q30 = myquery("insert into zadatak set zadaca={$zadaca}, redni_broj={$zadatak}, student={$student}, status={$status_pregledana}, bodova={$bodova}, vrijeme=NOW(), filename='{$filename}', userid={$userid}");
                zamgerlog2("bodovanje zadace", $student, $zadaca, $zadatak, $bodova);
                // Treba nam ponudakursa za update komponente
                $q35 = myquery("select sp.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}");
                $ponudakursa = mysql_result($q35, 0, 0);
                update_komponente($student, $ponudakursa, $komponenta);
                // update statistike
            }
        }
        if ($ispis) {
            if ($greska == 0) {
                ?>
			</tbody></table>
			<p>Potvrdite upis ispita i bodova ili se vratite na prethodni ekran.</p>
			<p><input type="submit" name="nazad" value=" Nazad "> <input type="submit" value=" Potvrda"></p>
			</form>
			<?php 
            } else {
                ?>
			</tbody></table>
			<p>U unesenim podacima ima grešaka. Da li ste izabrali ispravan format ("Prezime[TAB]Ime" vs. "Prezime Ime")? Vratite se nazad kako biste ovo popravili.</p>
			<p><input type="submit" name="nazad" value=" Nazad "></p>
			</form>
			<?php 
            }
            return;
        } else {
            zamgerlog("masovno upisane zadaće na predmet pp{$predmet}, zadaća z{$zadaca}, zadatak {$zadatak}", 2);
            // 2 = edit
            ?>
		Bodovi iz zadaća su upisani.
		<script language="JavaScript">
		location.href='?sta=nastavnik/zadace&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
';
		</script>
		<?php 
        }
    }
    // Akcija za kreiranje nove, promjenu postojeće ili brisanje zadaće
    if ($_POST['akcija'] == "edit" && $_POST['potvrdabrisanja'] != " Nazad " && check_csrf_token()) {
        $edit_zadaca = intval($_POST['zadaca']);
        // Prava pristupa
        if ($edit_zadaca > 0) {
            $q86 = myquery("select predmet, akademska_godina from zadaca where id={$edit_zadaca}");
            if (mysql_num_rows($q86) < 1) {
                niceerror("Nepostojeća zadaća sa IDom {$edit_zadaca}");
                zamgerlog("promjena nepostojece zadace {$edit_zadaca}", 3);
                zamgerlog2("nepostojeca zadaca", $edit_zadaca);
                return 0;
            }
            if (mysql_result($q86, 0, 0) != $predmet || mysql_result($q86, 0, 1) != $ag) {
                niceerror("Zadaća nije sa izabranog predmeta");
                zamgerlog("promjena zadace: zadaca {$edit_zadaca} nije sa predmeta pp{$predmet}", 3);
                zamgerlog2("id zadace i predmeta se ne poklapaju", $edit_zadaca, $predmet, $ag);
                return 0;
            }
        }
        // Brisanje postavke zadaće (a ne čitave zadaće!)
        if ($_POST['dugmeobrisi'] == "Obriši") {
            $q100 = myquery("select postavka_zadace from zadaca where id={$edit_zadaca}");
            $filepath = "{$conf_files_path}/zadace/{$predmet}-{$ag}/postavke/" . mysql_result($q100, 0, 0);
            unlink($filepath);
            $q110 = myquery("update zadaca set postavka_zadace='' where id={$edit_zadaca}");
            nicemessage("Postavka zadaće obrisana");
            print "<a href=\"?sta=nastavnik/zadace&predmet={$predmet}&ag={$ag}&_lv_nav_id={$edit_zadaca}\">Nazad</a>\n";
            zamgerlog("obrisana postavka zadace z{$edit_zadaca}", 2);
            zamgerlog2("obrisana postavka zadace", $edit_zadaca);
            return;
        }
        // Brisanje zadaće
        if ($_POST['brisanje'] == " Obriši ") {
            if ($edit_zadaca <= 0) {
                return;
            }
            // Ne bi se smjelo desiti
            $q86 = myquery("select predmet, akademska_godina from zadaca where id={$edit_zadaca}");
            if (mysql_num_rows($q86) < 1) {
                niceerror("Nepostojeća zadaća sa IDom {$edit_zadaca}");
                zamgerlog("brisanje nepostojece zadace {$edit_zadaca}", 3);
                zamgerlog2("nepostojeca zadaca", $edit_zadaca);
                return 0;
            }
            if (mysql_result($q86, 0, 0) != $predmet || mysql_result($q86, 0, 1) != $ag) {
                niceerror("Zadaća nije sa izabranog predmeta");
                zamgerlog("brisanje zadace: zadaca {$edit_zadaca} nije sa predmeta pp{$predmet}", 3);
                zamgerlog2("id zadace i predmeta se ne poklapaju", $edit_zadaca, $predmet, $ag);
                return 0;
            }
            if ($_POST['potvrdabrisanja'] == " Briši ") {
                // Brišemo srodne testove
                $q84 = myquery("delete from autotest_replace where zadaca={$edit_zadaca}");
                $q85 = myquery("delete from autotest_rezultat where autotest in (select id from autotest where zadaca={$edit_zadaca})");
                $q86 = myquery("delete from autotest where zadaca={$edit_zadaca}");
                // Brišemo zadaću
                $q87 = myquery("delete from zadatak where zadaca={$edit_zadaca}");
                $q88 = myquery("delete from zadaca where id={$edit_zadaca}");
                zamgerlog("obrisana zadaca {$edit_zadaca} sa predmeta pp{$predmet}", 4);
                zamgerlog2("obrisana zadaca", $edit_zadaca);
                nicemessage("Zadaća uspješno obrisana");
                ?>
			<script language="JavaScript">
			location.href='?sta=nastavnik/zadace&predmet=<?php 
                echo $predmet;
                ?>
&ag=<?php 
                echo $ag;
                ?>
';
			</script>
			<?php 
                return;
            } else {
                $q96 = myquery("select count(*) from zadatak where zadaca={$edit_zadaca}");
                $broj_zadataka = mysql_result($q96, 0, 0);
                $q97 = myquery("select count(*) from autotest where zadaca={$edit_zadaca}");
                $broj_testova = mysql_result($q97, 0, 0);
                print genform("POST");
                ?>
			Brisanjem zadaće obrisaćete i sve do sada unesene ocjene i poslane zadatke! Da li ste sigurni da to želite?<br>
			U pitanju je <b><?php 
                echo $broj_zadataka;
                ?>
</b> jedinstvenih slogova u bazi!<br><br>
			<?php 
                if ($broj_testova > 0) {
                    ?>
				Također ćete obrisati i <b><?php 
                    echo $broj_testova;
                    ?>
</b> testova.<br><br>
				<?php 
                }
                ?>
			<input type="submit" name="potvrdabrisanja" value=" Briši ">
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="submit" name="potvrdabrisanja" value=" Nazad ">
			<?php 
                return;
            }
        }
        // Kreiranje ili izmjena zadaće
        $naziv = trim(my_escape($_POST['naziv']));
        $zadataka = intval($_POST['zadataka']);
        $bodova = floatval(str_replace(",", ".", $_POST['bodova']));
        $dan = intval($_POST['day']);
        $mjesec = intval($_POST['month']);
        $godina = intval($_POST['year']);
        $sat = intval($_POST['sat']);
        $minuta = intval($_POST['minuta']);
        $sekunda = intval($_POST['sekunda']);
        if ($_POST['aktivna']) {
            $aktivna = 1;
        } else {
            $aktivna = 0;
        }
        if ($_POST['attachment']) {
            $attachment = 1;
        } else {
            $attachment = 0;
        }
        $programskijezik = intval($_POST['_lv_column_programskijezik']);
        if ($_POST['automatsko_testiranje']) {
            $automatsko_testiranje = 1;
        } else {
            $automatsko_testiranje = 0;
        }
        $postavka_file = $_FILES['postavka_zadace_file']['name'];
        if ($postavka_file != "") {
            if (!file_exists("{$conf_files_path}/zadace/{$predmet}-{$ag}/postavke")) {
                mkdir("{$conf_files_path}/zadace/{$predmet}-{$ag}/postavke", 0755, true);
            }
            copy($_FILES['postavka_zadace_file']['tmp_name'], "{$conf_files_path}/zadace/{$predmet}-{$ag}/postavke/{$postavka_file}");
            $sql_add_postavka_file = ", postavka_zadace = '{$postavka_file}'";
        } else {
            $sql_add_postavka_file = "";
        }
        if (intval($_POST['attachment']) == 1 && isset($_POST['dozvoljene_eks'])) {
            $ekstenzije = array_unique($_POST['dozvoljene_eks']);
            $dozvoljene_ekstenzije_selected = implode(',', $ekstenzije);
        } else {
            $dozvoljene_ekstenzije_selected = null;
        }
        // Provjera ispravnosti
        if (!preg_match("/\\w/", $naziv)) {
            niceerror("Naziv zadaće nije dobar.");
            return 0;
        }
        if ($zadataka <= 0 || $bodova < 0 || $zadataka > 100 || $bodova > 100) {
            niceerror("Broj zadataka ili broj bodova nije dobar");
            return 0;
        }
        if (!checkdate($mjesec, $dan, $godina)) {
            niceerror("Odabrani datum je nemoguć");
            return 0;
        }
        if ($sat < 0 || $sat > 24 || $minuta < 0 || $minuta > 60 || $sekunda < 0 || $sekunda > 60) {
            niceerror("Vrijeme nije dobro");
            return 0;
        }
        $mysqlvrijeme = time2mysql(mktime($sat, $minuta, $sekunda, $mjesec, $dan, $godina));
        // Provjera duplog imena zadace
        $q90 = myquery("select count(*) from zadaca where naziv like '{$naziv}' and predmet={$predmet} and akademska_godina={$ag} and id!={$edit_zadaca}");
        if (mysql_result($q90, 0, 0) > 0) {
            niceerror("Zadaća pod imenom '{$naziv}' već postoji! Izaberite neko drugo ime.");
            zamgerlog("zadaca sa nazivom '{$naziv}' vec postoji", 3);
            return 0;
        }
        // Kreiranje nove
        if ($edit_zadaca == 0) {
            // $komponenta_za_zadace određena na početku fajla
            $q92 = myquery("insert into zadaca set predmet={$predmet}, akademska_godina={$ag}, naziv='{$naziv}', zadataka={$zadataka}, bodova={$bodova}, rok='{$mysqlvrijeme}', aktivna={$aktivna}, attachment={$attachment}, programskijezik={$programskijezik}, automatsko_testiranje={$automatsko_testiranje}, dozvoljene_ekstenzije = '{$dozvoljene_ekstenzije_selected}', komponenta={$komponenta_za_zadace} {$sql_add_postavka_file}");
            $edit_zadaca = mysql_insert_id();
            if ($edit_zadaca == 0) {
                niceerror("Dodavanje zadaće nije uspjelo");
                zamgerlog("dodavanje zadace nije uspjelo pp{$predmet}, naziv '{$naziv}'", 3);
                zamgerlog2("dodavanje zadace nije uspjelo", $predmet, $zadataka, $bodova, $naziv);
            } else {
                nicemessage("Kreirana nova zadaća '{$naziv}'");
                zamgerlog("kreirana nova zadaca z{$edit_zadaca}", 2);
                zamgerlog2("kreirana nova zadaca", $edit_zadaca);
            }
            // Izmjena postojece zadace
        } else {
            // Ako se smanjuje broj zadataka, moraju se obrisati bodovi
            $q94 = myquery("select zadataka, komponenta from zadaca where id={$edit_zadaca}");
            $oldzadataka = mysql_result($q94, 0, 0);
            if ($zadataka < $oldzadataka) {
                // Prilikom brisanja svakog zadatka updatujemo komponentu studenta
                $komponenta = mysql_result($q94, 0, 1);
                $q96 = myquery("select id,student from zadatak where zadaca={$edit_zadaca} and redni_broj>{$zadataka} and redni_broj<={$oldzadataka} order by student");
                $oldstudent = 0;
                while ($r96 = mysql_fetch_row($q96)) {
                    $q97 = myquery("delete from zadatak where id={$r96['0']}");
                    if ($oldstudent != 0 && $oldstudent != $r96[1]) {
                        update_komponente($oldstudent, $predmet, $komponenta);
                    }
                    $oldstudent = $r96[1];
                }
                if ($oldstudent != 0) {
                    // log samo ako je bilo nesto
                    zamgerlog("Smanjen broj zadataka u zadaci z{$edit_zadaca}", 4);
                    zamgerlog2("smanjen broj zadataka u zadaci", $edit_zadaca);
                }
                // Brišemo i relevantne testove
                $q84 = myquery("delete from autotest_replace where zadaca={$edit_zadaca} and zadatak>{$zadataka}");
                $q85 = myquery("delete from autotest_rezultat where autotest in (select id from autotest where zadaca={$edit_zadaca} and zadatak>{$zadataka})");
                $q86 = myquery("delete from autotest where zadaca={$edit_zadaca} and zadatak>{$zadataka}");
            }
            $q94 = myquery("update zadaca set naziv='{$naziv}', zadataka={$zadataka}, bodova={$bodova}, rok='{$mysqlvrijeme}', aktivna={$aktivna}, attachment={$attachment}, programskijezik={$programskijezik}, automatsko_testiranje={$automatsko_testiranje}, dozvoljene_ekstenzije='{$dozvoljene_ekstenzije_selected}' {$sql_add_postavka_file} where id={$edit_zadaca}");
            nicemessage("Ažurirana zadaća '{$naziv}'");
            zamgerlog("azurirana zadaca z{$edit_zadaca}", 2);
            zamgerlog2("azurirana zadaca", $edit_zadaca);
        }
    }
    // Akcija: AUTOTESTOVI
    if ($_REQUEST['akcija'] == "autotestovi") {
        $zadaca = intval($_REQUEST['zadaca']);
        $backLink = "?sta=nastavnik/zadace&amp;predmet={$predmet}&amp;ag={$ag}";
        $linkPrefix = "{$backLink}&amp;zadaca={$zadaca}&amp;akcija=autotestovi";
        $backLink = "<a href=\"?{$backLink}&amp;_lv_nav_id={$zadaca}\">Nazad na popis zadaća</a>";
        // Provjera spoofinga zadaće
        $q10 = myquery("SELECT COUNT(*) FROM zadaca WHERE id={$zadaca} AND predmet={$predmet} AND akademska_godina={$ag}");
        if (mysql_result($q10, 0, 0) == 0) {
            nicemessage("Nepoznat ID zadaće {$zadaca}.");
            return;
        }
        autotest_admin($zadaca, $linkPrefix, $backLink);
        return;
    }
    // Spisak postojećih zadaća
    $_lv_["where:predmet"] = $predmet;
    $_lv_["where:akademska_godina"] = $ag;
    $_lv_["where:komponenta"] = $komponenta_za_zadace;
    // određena na početku fajla
    print "Postojeće zadaće:<br/>\n";
    print db_list("zadaca");
    // Kreiranje nove zadace ili izmjena postojeće
    $izabrana = intval($_REQUEST['_lv_nav_id']);
    if ($izabrana == 0) {
        $izabrana = intval($edit_zadaca);
    }
    if ($izabrana == 0) {
        ?>
<p><hr/></p>
	<p><b>Kreiranje zadaće</b><br/>
	<?php 
        $znaziv = $zaktivna = $zattachment = $zjezik = "";
        $zzadataka = 0;
        $zbodova = 0;
        $tmpvrijeme = time();
    } else {
        ?>
<p><hr/></p>
	<p><b>Izmjena zadaće</b></p>
	<?php 
        $q100 = myquery("select predmet, akademska_godina, naziv, zadataka, bodova, rok, aktivna, programskijezik, attachment, dozvoljene_ekstenzije, postavka_zadace, automatsko_testiranje from zadaca where id={$izabrana}");
        if ($predmet != mysql_result($q100, 0, 0) || $ag != mysql_result($q100, 0, 1)) {
            niceerror("Zadaća ne pripada vašem predmetu");
            zamgerlog("zadaca {$izabrana} ne pripada predmetu pp{$predmet}", 3);
            zamgerlog2("id zadace i predmeta se ne poklapaju", $izabrana, $predmet, $ag);
            return;
        }
        $znaziv = mysql_result($q100, 0, 2);
        $zzadataka = intval(mysql_result($q100, 0, 3));
        $zbodova = floatval(mysql_result($q100, 0, 4));
        $tmpvrijeme = mysql2time(mysql_result($q100, 0, 5));
        if (mysql_result($q100, 0, 6) == 1) {
            $zaktivna = "CHECKED";
        } else {
            $zaktivna = "";
        }
        $zjezik = mysql_result($q100, 0, 7);
        if (mysql_result($q100, 0, 8) == 1) {
            $zattachment = "CHECKED";
        } else {
            $zattachment = "";
        }
        $dozvoljene_ekstenzije_selected = mysql_result($q100, 0, 9);
        $postavka_zadace = mysql_result($q100, 0, 10);
        $automatsko_testiranje = mysql_result($q100, 0, 11);
    }
    $zdan = date('d', $tmpvrijeme);
    $zmjesec = date('m', $tmpvrijeme);
    $zgodina = date('Y', $tmpvrijeme);
    $zsat = date('H', $tmpvrijeme);
    $zminuta = date('i', $tmpvrijeme);
    $zsekunda = date('s', $tmpvrijeme);
    // JavaScript za provjeru validnosti forme
    ?>
<script language="JavaScript">
function IsNumeric(sText) {
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;0
   
}

function provjera() {
//	var forma=document.getElementById("kreiranje_zadace");
	var naziv=document.getElementById("naziv");
	if (parseInt(naziv.value.length)<1) {
		alert("Niste unijeli naziv");
		naziv.style.border=1;
		naziv.style.backgroundColor="#FF9999";
		naziv.focus();
		return false;
	}
	var zadataka=document.getElementById("zadataka");
	if (!IsNumeric(zadataka.value)) {
		alert("Neispravan broj zadataka!");
		zadataka.style.border=1;
		zadataka.style.backgroundColor="#FF9999";
		zadataka.focus();
		return false;
	}
	if (parseInt(zadataka.value)<=0) {
		alert("Broj zadataka u zadaći mora biti veći od nule, npr. 1");
		zadataka.style.border=1;
		zadataka.style.backgroundColor="#FF9999";
		zadataka.focus();
		return false;
	}
	var bodova=document.getElementById("bodova");
	if (!IsNumeric(bodova.value)) {
		alert("Neispravan broj bodova!");
		bodova.style.border=1;
		bodova.style.backgroundColor="#FF9999";
		bodova.focus();
		return false;
	}
	if (parseFloat(bodova.value)<0) {
		alert("Broj bodova koje nosi zadaća mora biti veći ili jednak nuli, npr. 2 boda");
		bodova.style.border=1;
		bodova.style.backgroundColor="#FF9999";
		bodova.focus();
		return false;
	}
	
	return true;
}

function onemoguci_ekstenzije(chk) {
	var attachment = document.getElementById("attachment");
	var dozvoljene_ekstenzije = document.getElementById("dozvoljene_ekstenzije");
	var jezik = document.getElementById("_lv_column_programskijezik");

	if (attachment.checked) {
		dozvoljene_ekstenzije.style.display = '';
	} else {
		dozvoljene_ekstenzije.style.display = 'none';
		for (i = 0; i < chk.length; i++) chk[i].checked = false;
	}
}
</script>
<?php 
    // Forma za kreiranje zadaće
    unset($_REQUEST['aktivna']);
    unset($_REQUEST['attachment']);
    unset($_REQUEST['automatsko_testiranje']);
    print genform("POST", "kreiranje_zadace\" enctype=\"multipart/form-data\" onsubmit=\"return provjera();");
    ?>
<input type="hidden" name="akcija" value="edit">
<input type="hidden" name="zadaca" value="<?php 
    echo $izabrana;
    ?>
">
Naziv: <input type="text" name="naziv" id="naziv" size="30" value="<?php 
    echo $znaziv;
    ?>
"><br><br>

Broj zadataka: <input type="text" name="zadataka" id="zadataka" size="4" value="<?php 
    echo $zzadataka;
    ?>
">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Max. broj bodova: <input type="text" name="bodova" id="bodova" size="3" value="<?php 
    echo $zbodova;
    ?>
"><br><br>

Rok za slanje: <?php 
    echo datectrl($zdan, $zmjesec, $zgodina);
    ?>
&nbsp;&nbsp; <input type="text" name="sat" size="1" value="<?php 
    echo $zsat;
    ?>
"> <b>:</b> <input type="text" name="minuta" size="1" value="<?php 
    echo $zminuta;
    ?>
"> <b>:</b> <input type="text" name="sekunda" size="1" value="<?php 
    echo $zsekunda;
    ?>
"> <br><br>

<input type="checkbox" name="aktivna" <?php 
    echo $zaktivna;
    ?>
> Aktivna
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="checkbox" value="1" id="attachment" onclick="onemoguci_ekstenzije(this.form.dozvoljene_eks)" name="attachment" <?php 
    echo $zattachment;
    ?>
> Slanje zadatka u formi attachmenta<br><br>

<span id="dozvoljene_ekstenzije" style="display:none" title="Oznacite željene ekstenzije">
Dozvoljene ekstenzije (Napomena: Ukoliko ne odaberete nijednu ekstenziju sve ekstenzije postaju dozvoljene): 
<?php 
    $dozvoljene_ekstenzije_selected = explode(',', $dozvoljene_ekstenzije_selected);
    foreach ($dozvoljene_ekstenzije as $doz_ext) {
        ?>
<input type="checkbox" name="dozvoljene_eks[]" <?php 
        if (in_array($doz_ext, $dozvoljene_ekstenzije_selected)) {
            echo 'checked="checked"';
        }
        ?>
 value="<?php 
        echo $doz_ext;
        ?>
" /> <?php 
        echo $doz_ext;
    }
    ?>
<br><br>
</span>

Programski jezik: <?php 
    echo db_dropdown("programskijezik", $zjezik);
    ?>
<br><br>

<?php 
    if ($zjezik != 0) {
        // Ako nije definisan programski jezik, nećemo ni nuditi automatsko testiranje... ?
        if ($automatsko_testiranje == 1) {
            $add_testiranje = "CHECKED";
        } else {
            $add_testiranje = "";
        }
        ?>
	<input type="checkbox" name="automatsko_testiranje" <?php 
        echo $add_testiranje;
        ?>
> Automatsko testiranje<br>
	<a href="?sta=nastavnik/zadace&predmet=<?php 
        echo $predmet;
        ?>
&ag=<?php 
        echo $ag;
        ?>
&zadaca=<?php 
        echo $izabrana;
        ?>
&akcija=autotestovi">Kliknite ovdje da definišete testove</a><br><br>
	<?php 
    }
    ?>

Postavka zadaće: 
<?php 
    if ($postavka_zadace == "") {
        ?>
<input type="file" name="postavka_zadace_file" size="45"><?php 
    } else {
        ?>
<a href="?sta=common/attachment&zadaca=<?php 
        echo $izabrana;
        ?>
&tip=postavka"><img src="images/16x16/preuzmi.png" width="16" height="16" border="0"> <?php 
        echo $postavka_zadace;
        ?>
</a>
	<input type="submit" name="dugmeobrisi" value="Obriši">
	<?php 
    }
    ?>
<br><br>

<input type="submit" value=" Pošalji "> <input type="reset" value=" Poništi ">
<?php 
    if ($izabrana > 0) {
        ?>
<input type="submit" name="brisanje" value=" Obriši "><?php 
    }
    echo "<script> onemoguci_ekstenzije('');</script>";
    ?>
</form>
<?php 
    /*
    $_lv_["label:programskijezik"] = "Programski jezik";
    $_lv_["label:zadataka"] = "Broj zadataka";
    $_lv_["label:bodova"] = "Max. broj bodova";
    $_lv_["label:attachment"] = "Slanje zadatka u formi attachmenta";
    $_lv_["label:rok"] = "Rok za slanje";
    $_lv_["hidden:vrijemeobjave"] = 1;
    print db_form("zadaca");*/
    // Formular za masovni unos zadaća
    $format = intval($_POST['format']);
    if (!$_POST['format']) {
        $q110 = myquery("select vrijednost from preference where korisnik={$userid} and preferenca='mass-input-format'");
        if (mysql_num_rows($q110) > 0) {
            $format = mysql_result($q110, 0, 0);
        } else {
            //default vrijednost
            $format = 0;
        }
    }
    $separator = intval($_POST['separator']);
    if (!$_POST['separator']) {
        $q120 = myquery("select vrijednost from preference where korisnik={$userid} and preferenca='mass-input-separator'");
        if (mysql_num_rows($q120) > 0) {
            $separator = mysql_result($q120, 0, 0);
        } else {
            //default vrijednost
            $separator = 0;
        }
    }
    $q130 = myquery("select count(*) from zadaca where predmet={$predmet} and akademska_godina={$ag}");
    if (mysql_result($q130, 0, 0) > 0) {
        ?>
<p><hr/></p>
<p><b>Masovni unos zadaća</b><br/>
<?php 
        print genform("POST");
        if (strlen($_POST['nazad']) > 1) {
            $izabrana = $_POST['_lv_column_zadaca'];
        } else {
            $izabrana = -1;
        }
        ?>
<input type="hidden" name="fakatradi" value="0">
<input type="hidden" name="akcija" value="massinput">
<input type="hidden" name="nazad" value="">
<input type="hidden" name="brpodataka" value="1">
<input type="hidden" name="duplikati" value="0">

Izaberite zadaću: <?php 
        echo db_dropdown("zadaca", $izabrana);
        ?>
Izaberite zadatak: <select name="zadatak"><?php 
        $q112 = myquery("select zadataka from zadaca where predmet={$predmet} and akademska_godina={$ag} order by zadataka desc limit 1");
        for ($i = 1; $i <= mysql_result($q112, 0, 0); $i++) {
            print "<option value=\"{$i}\">{$i}</option>\n";
        }
        ?>
</select><br/><br/>

<textarea name="massinput" cols="50" rows="10"><?php 
        if (strlen($_POST['nazad']) > 1) {
            print $_POST['massinput'];
        }
        ?>
</textarea><br/>
<br/>Format imena i prezimena: <select name="format" class="default">
<option value="0" <?php 
        if ($format == 0) {
            print "SELECTED";
        }
        ?>
>Prezime[TAB]Ime</option>
<option value="1" <?php 
        if ($format == 1) {
            print "SELECTED";
        }
        ?>
>Ime[TAB]Prezime</option>
<option value="2" <?php 
        if ($format == 2) {
            print "SELECTED";
        }
        ?>
>Prezime Ime</option>
<option value="3" <?php 
        if ($format == 3) {
            print "SELECTED";
        }
        ?>
>Ime Prezime</option></select>&nbsp;
Separator: <select name="separator" class="default">
<option value="0" <?php 
        if ($separator == 0) {
            print "SELECTED";
        }
        ?>
>Tab</option>
<option value="1" <?php 
        if ($separator == 1) {
            print "SELECTED";
        }
        ?>
>Zarez</option></select><br/><br/>
<input type="submit" value="  Dodaj  ">
</form></p>
<?php 
    } else {
        ?>
<p><hr/></p>
	<p><b>Masovni unos zadaća NIJE MOGUĆ</b><br/>
	Najprije kreirajte zadaću koristeći formular iznad</p>
	<?php 
    }
    /*
    // IMPORT ZADAĆA IZ MOODLA
    
    //Prikupljanje id-a moodle predmeta iz zamger baze radi poredjenja
    $q200 = myquery("SELECT moodle_id FROM moodle_predmet_id WHERE predmet='$predmet'");
    
    if ($conf_moodle && mysql_num_rows($q200)>0) {
    
    $id_predmeta_value = mysql_result($q200,0,0);
    
    
    // Ima li zadaća u Moodlu?
    
    $moodle_con = $__lv_connection;
    if (!$conf_moodle_reuse_connection) {
    	// Pravimo novu konekciju za moodle, kod iz dbconnect2() u libvedran
    	if (!($moodle_con = mysql_connect($conf_moodle_dbhost, $conf_moodle_dbuser, $conf_moodle_dbpass))) {
    		biguglyerror(mysql_error());
    		exit;
    	}
    	if (!mysql_select_db($conf_moodle_db, $moodle_con)) {
    		biguglyerror(mysql_error());
    		exit;
    	}
    	if ($conf_use_mysql_utf8) {
    		mysql_set_charset("utf8",$moodle_con);
    	}
    }
    $q300 = mysql_query("SELECT itemname
    	FROM $conf_moodle_db.$conf_moodle_prefix"."grade_items
    	WHERE itemmodule='assignment' AND itemtype='mod'", $moodle_con) or die ("Greska u upitu 300: " .mysql_error());
    
    
    // Ako nema, ne ispisujemo ništa
    if (mysql_num_rows($q300)<1) 
    	return;
    
    $za_value = mysql_fetch_array($q300);
    
    
    
    print genform("POST");
    ?>
    <p><hr/></p>
    <h4>Import svih zadaća iz Moodle-a</h4>
    <p>Klikom na import importuju se sve zadaće za sve studente</p>
    <p><br/><b>Napomena:</b> Sve zadaće moraju imati ista imena kao u Moodle-u!</p>
    <input type="hidden" name="akcija" value="import_svih">
    
    <?
    
    //Import svih zadaca
    if ($_POST['akcija'] == "import_svih" && check_csrf_token()) {
    	//Prikupljanje imena zadaca iz Zamger baze
    	$q210 = myquery("SELECT naziv
    		FROM zadaca
    		WHERE predmet='$predmet' AND akademska_godina='$ag'");
    	if (mysql_num_rows($q210)<1) {
    		niceerror("Nema zadaća u zamgeru");
    		zamgerlog("predmet pp$predmet ne sadrzi niti jednu zadacu u zamgeru",3);
    		return;
    	}
    
    	while ($r210 = mysql_fetch_array($q210)) {
    		//Prikupljanje podataka iz Moodle tabele
    		//Prikupljaju se id predmeta, ime zadace i JMBG svih studenata
    		//Posto se pri prikupljanju zadace porede po imenu trebaju imati isti naziv u Moodle-u kao i u Zamgeru
    		$q220 = mysql_query("SELECT c.id, gi.itemname, u.firstname, u.lastname
    			FROM $conf_moodle_db.$conf_moodle_prefix"."grade_grades gg, $conf_moodle_db.$conf_moodle_prefix"."user u, $conf_moodle_db.$conf_moodle_prefix"."grade_items gi, $conf_moodle_db.$conf_moodle_prefix"."course c
    			WHERE gi.itemname = '$r210[0]' AND c.id = '$id_predmeta_value' AND
    			gg.userid=u.id AND gg.itemid=gi.id AND gi.courseid=c.id", $moodle_con) or die ("Greska u upitu 220: " .mysql_error());
    		if (mysql_num_rows($q220)<1) {
    			niceerror("Nema podataka u Moodle-u");
    			zamgerlog("Nema podataka u Moodle-u za zadacu $r210[0]",3);
    			return;
    		}
    		//Ubacivanje podataka u zamger tabelu
    		while ($r220 = mysql_fetch_array($q220)) {
    			//$bodovi sadrzi vrijednost zadace iz $row1 za date vrijednosti (trenutni student, trenutna zadaca i trenutni predmet)
    			$q230 = mysql_query("SELECT gg.finalgrade
    				FROM $conf_moodle_db.$conf_moodle_prefix"."grade_grades gg, $conf_moodle_db.$conf_moodle_prefix"."user u, $conf_moodle_db.$conf_moodle_prefix"."grade_items gi, $conf_moodle_db.$conf_moodle_prefix"."course c
    				WHERE gi.itemname='$r220[1]' AND c.id='$r220[0]' AND u.firstname='$r220[2]' AND u.lastname='$r220[3]' AND
    				gg.userid=u.id AND gg.itemid=gi.id AND gi.courseid=c.id", $moodle_con) or die ("Greska u upitu 230: " .mysql_error());
    			if (mysql_num_rows($q230)<1) {
    				niceerror("Zadaća nema bodova u Moodle-u");
    				zamgerlog("Zadaca: $r210[0] nema bodova",3);
    				return;
    			}
    			$bodovi_value = mysql_fetch_array($q230);
    		
    			//zadaca_id sadrzi id zadace trenutne vrijednosti u $row1
    			$q240 = myquery("SELECT z.id
    				FROM zadaca z, moodle_predmet_id p
    				WHERE z.naziv='$r220[1]' AND p.moodle_id='$r220[0]' AND p.predmet=z.predmet");
    			if (mysql_num_rows($q240)<1) {
    				niceerror("Nema zadaća u zamgeru");
    				zamgerlog("Predmet $predmet ne sadrzi niti jednu zadacu u zamgeru",3);
    				return;
    			}
    			$zadaca_id_value = mysql_fetch_array($q240);
    		
    			//$student_id vraca id studenta koji se trenutno cita iz $row1
    			$q250 = myquery("SELECT id
    				FROM osoba
    				WHERE ime='$r220[2]' AND prezime='$r220[3]'");
    			if (mysql_num_rows($q250)<1) {
    				niceerror("Student ne postoji zamgeru");
    				zamgerlog("Student $r220[2] $r220[3] ne postoji u zamgeru",3);
    				return;
    			}
    			$student_id_value = mysql_fetch_array($q250);
    		
    			$q260 = "INSERT INTO zadatak (zadaca, redni_broj, student, status, bodova, vrijeme, userid)
    				VALUES ('$zadaca_id_value[0]', '1', '$student_id_value[0]', '5', '$bodovi_value[0]', 'SYSDATE()', '$userid')";
    		
    			myquery($q260);
    			//upit za dobijanje komponente za zadace
    			$q270 = myquery ("SELECT komponenta FROM zadaca WHERE id=$zadaca_id_value[0]");
    			if (mysql_num_rows($q270)<1) {
    				niceerror("Nema komponente");
    				zamgerlog("Nema komponenti u zamgeru",3);
    				return;
    			}
    			$komponenta_value = mysql_fetch_array($q270);
    			// Treba nam ponudakursa za update komponente
    			$q280 = myquery("SELECT sp.predmet
    				FROM student_predmet as sp, ponudakursa as pk
    				WHERE sp.student='$student_id_value[0]' and sp.predmet=pk.id and pk.predmet=$predmet and pk.akademska_godina='$ag'");
    			$pk_value = mysql_result($q280,0,0);
    			update_komponente($student_id_value[0],$pk_value,$komponenta_value[0]);
    		}
    	}
    
    	nicemessage("Import uspješan");
    	zamgerlog("zadace su importovane iz Moodle-a", 2);
    }
    ?>
    <table>
    <tr>
    	<td><input type="submit" name="sve_zadace" value="Import"><br/></td>
    </tr>
    </table>
    </form>
    
    <?
    
    
    // Import pojedinačnih zadaća iz Moodla
    
    print genform("POST");
    ?>
    <h4></br>Import zadaća iz Moodle-a sa advanced upload-a</h4>
    <input type="hidden" name="akcija" value="import_selected">
    <input type="hidden" name="moodle_zadace" value="<?=$za_value?>">
    
    <?
    if ($_POST['akcija'] == "import_selected" && check_csrf_token()) {
    	$q310 = mysql_query("SELECT u.firstname, u.lastname, gi.itemname, gi.grademax
    		FROM $conf_moodle_db.$conf_moodle_prefix"."grade_grades gg, $conf_moodle_db.$conf_moodle_prefix"."user u, $conf_moodle_db.$conf_moodle_prefix"."grade_items gi, $conf_moodle_db.$conf_moodle_prefix"."course c
    		WHERE gi.itemmodule='assignment' AND gi.itemtype='mod' AND c.id = '$id_predmeta_value' AND
    		gg.userid=u.id AND gg.itemid=gi.id AND gi.courseid=c.id", $moodle_con) or die ("Greska u upitu 310: " .mysql_error());
    	while ($r310 = mysql_fetch_array($q310)) {
    		
    		$q320 = mysql_query("SELECT gg.finalgrade
    			FROM $conf_moodle_db.$conf_moodle_prefix"."grade_grades gg, $conf_moodle_db.$conf_moodle_prefix"."user u, $conf_moodle_db.$conf_moodle_prefix"."grade_items gi, $conf_moodle_db.$conf_moodle_prefix"."course c
    			WHERE gi.itemmodule='assignment' AND c.id='$id_predmeta_value' AND u.firstname='$r310[0]' AND u.lastname='$r310[1]' AND
    			gg.userid=u.id AND gg.itemid=gi.id AND gi.courseid=c.id", $moodle_con) or die ("Greska u upitu 320: " .mysql_error());
    		if (mysql_num_rows($q320)<1) {
    			niceerror("Zadaća nema bodova u Moodle-u");
    			zamgerlog("Zadaca: $r310[2] nema bodova",3);
    			return;
    		}
    		$bodovi_value = mysql_fetch_array($q320);
    		
    		$q330 = myquery ("SELECT id FROM komponenta WHERE naziv='Zadace (ETF BSc)'");
    		if (mysql_num_rows($q330)<1) {
    			niceerror("Nema komponente");
    			zamgerlog("Nema komponenti u zamgeru",3);
    			return;
    		}
    		$komponenta_value = mysql_fetch_array($q330);
    		
    		$q340 = myquery("SELECT z.id
    			FROM zadaca z, moodle_predmet_id p
    			WHERE z.naziv='$za_value' AND p.moodle_id='$id_predmeta_value' AND p.predmet=z.predmet");
    		if (mysql_num_rows($q340)<1) {
    			$q350 = myquery ("INSERT INTO zadaca (naziv, predmet, akademska_godina, zadataka, bodova, rok, aktivna, programskijezik, attachment, komponenta, vrijemeobjave)
    				VALUES ('$row1[2]', '$predmet', '$ag', 1, '$r310[3]', 'SYSDATE()', 1, 0, 0, '$komponenta_value[0]', 'SYSDATE()')");
    			nicemessage("Kreirana nova zadaća '$naziv'");
    			zamgerlog("kreirana nova zadaca z$edit_zadaca prilikom importa iz Moodla", 2);
    
    			$q340 = myquery("SELECT z.id
    				FROM zadaca z, moodle_predmet_id p
    				WHERE z.naziv='$za_value' AND p.moodle_id='$id_predmeta_value' AND p.predmet=z.predmet");
    		}
    		$zadaca_id_value = mysql_fetch_array($q340);
    	
    		$q360 = myquery("SELECT id
    			FROM osoba
    			WHERE ime='$row1[0]' AND prezime='$row1[1]'");
    		if (mysql_num_rows($q360)<1) {
    			niceerror("Student ne postoji zamgeru");
    			zamgerlog("Student $row1[2] $row1[3] ne postoji u zamgeru",3);
    			return;
    		}
    		$student_id_value = mysql_fetch_array($q360);
    		
    		$q370 = "INSERT INTO zadatak (zadaca, redni_broj, student, status, bodova, vrijeme, userid)
    			VALUES ('$zadaca_id_value[0]', '1', '$student_id_value[0]', '5', '$bodovi_value[0]', 'SYSDATE()', '$userid')";
    	
    		myquery($q370);
    			
    			
    		$q380 = myquery("SELECT sp.predmet
    			FROM student_predmet as sp, ponudakursa as pk
    			WHERE sp.student='$student_id_value[0]' and sp.predmet=pk.id and pk.predmet=$predmet and pk.akademska_godina='$ag'");
    		$pk_value = mysql_result($q380,0,0);
    		update_komponente($student_id_value[0],$pk_value,$komponenta_value[0]);
    	}
    	nicemessage("Import uspješan");
    	zamgerlog("Zadace su importovane iz Moodle-a", 2);
    }
    ?>
    <table>
    <tr>
    	<td>Izaberite zadaću: <select name="moodle_zadaca"><?
    foreach ($za_value as $zaneki) {
    	print "<option value=\"$zaneki\">$zaneki</option>\n";
    }
    ?>
    </select></td></tr>
    <tr>
    	<td><input type="submit" name="advanced_zadace" value="Import"><br/></td>
    </tr>
    </table>
    </form>
    
    <?
    
    
    // Diskonektujemo moodle
    if (!$conf_moodle_reuse_connection) {
    	mysql_close($moodle_con);
    }
    
    
    }*/
}
예제 #11
0
파일: dbase.php 프로젝트: Nazg-Gul/gate
 function db_tablelist()
 {
     return db_list('TABLES');
 }
예제 #12
0
파일: kvizovi.php 프로젝트: msehalic/zamger
function nastavnik_kvizovi()
{
    global $userid, $user_siteadmin;
    global $_lv_;
    // Parametri
    $predmet = intval($_REQUEST['predmet']);
    $ag = intval($_REQUEST['ag']);
    // Naziv predmeta
    $q5 = myquery("select naziv from predmet where id={$predmet}");
    if (mysql_num_rows($q5) < 1) {
        biguglyerror("Nepoznat predmet");
        zamgerlog("ilegalan predmet {$predmet}", 3);
        //nivo 3: greska
        zamgerlog2("nepoznat predmet", $predmet);
        return;
    }
    $predmet_naziv = mysql_result($q5, 0, 0);
    // Da li korisnik ima pravo ući u modul?
    if (!$user_siteadmin) {
        $q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}");
        if (mysql_num_rows($q10) < 1 || mysql_result($q10, 0, 0) == "asistent") {
            zamgerlog("nastavnik/ispiti privilegije (predmet pp{$predmet})", 3);
            zamgerlog2("nije nastavnik na predmetu", $predmet, $ag);
            biguglyerror("Nemate pravo pristupa ovoj opciji");
            return;
        }
    }
    ?>

<p>&nbsp;</p>

<p><h3><?php 
    echo $predmet_naziv;
    ?>
 - Kvizovi</h3></p>

<p>Napomena: Ovaj modul je još uvijek u fazi razvoja i nije dovoljno testiran. Ne preporučujemo njegovo korištenje.</p>

<?php 
    // Akcija - editovanje pitanja
    if ($_REQUEST['akcija'] == "pitanja") {
        $kviz = intval($_REQUEST['kviz']);
        $q200 = myquery("select naziv, predmet, akademska_godina from kviz where id={$kviz}");
        if (mysql_num_rows($q200) < 1) {
            niceerror("Nepostojeći kviz {$kviz}");
            zamgerlog("editovanje pitanja: nepostojeci kviz {$kviz}", 3);
            zamgerlog2("nepostojeci kviz (editovanje pitanja)", $kviz);
            return;
        }
        if (mysql_result($q200, 0, 1) != $predmet || mysql_result($q200, 0, 2) != $ag) {
            niceerror("Kviz nije sa ovog predmeta");
            zamgerlog("editovanje pitanja: kviz {$kviz} nije sa predmeta pp{$predmet} ag{$ag}", 3);
            zamgerlog2("id kviza i predmeta se ne poklapaju (editovanje pitanja)", $predmet, $ag, $kviz);
            return;
        }
        $naziv_kviza = mysql_result($q200, 0, 0);
        // Subakcije
        if ($_REQUEST['subakcija'] == "potvrda_novo" && check_csrf_token()) {
            $tekst = my_escape($_REQUEST['tekst']);
            $bodova = floatval(str_replace(',', '.', $_REQUEST['bodova']));
            if ($_REQUEST['vidljivo']) {
                $vidljivo = 1;
            } else {
                $vidljivo = 0;
            }
            $tip = my_escape($_REQUEST['tip']);
            $q300 = myquery("insert into kviz_pitanje set kviz={$kviz}, tip='{$tip}', tekst='{$tekst}', bodova={$bodova}, vidljivo={$vidljivo}");
            $pitanje = mysql_insert_id();
            // Ako je korisnik unosio odgovore prije kreiranja pitanja, njihov id pitanja je 0
            $q315 = myquery("update kviz_odgovor set kviz_pitanje={$pitanje} where kviz_pitanje=0");
            nicemessage("Pitanje uspješno dodano");
            zamgerlog2("dodano pitanje na kviz", $pitanje);
            ?>
		<script language="JavaScript">
		location.href='?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja&subakcija=izmijeni&pitanje=<?php 
            echo $pitanje;
            ?>
';
		</script>
		<?php 
            return;
        }
        if ($_REQUEST['subakcija'] == "potvrda_izmjene" && check_csrf_token()) {
            $pitanje = intval($_REQUEST['pitanje']);
            $tekst = my_escape($_REQUEST['tekst']);
            $bodova = floatval(str_replace(',', '.', $_REQUEST['bodova']));
            if ($_REQUEST['vidljivo']) {
                $vidljivo = 1;
            } else {
                $vidljivo = 0;
            }
            $tip = my_escape($_REQUEST['tip']);
            $q320 = myquery("select kviz from kviz_pitanje where id={$pitanje}");
            if (mysql_num_rows($q320) == 0) {
                niceerror("Pitanje je obrisano!");
                zamgerlog("potvrda editovanja pitanja: pitanje {$pitanje} ne postoji", 3);
                zamgerlog2("pitanje na kvizu ne postoji (potvrda editovanja)", $pitanje);
                return;
            }
            if (mysql_result($q320, 0, 0) != $kviz) {
                niceerror("Pitanje nije sa ovog kviza");
                zamgerlog("potvrda editovanja pitanja: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3);
                zamgerlog2("id pitanja i kviza se ne poklapaju (potvrda editovanja)", $pitanje, $kviz);
                return;
            }
            $q330 = myquery("update kviz_pitanje set tekst='{$tekst}', tip='{$tip}', bodova={$bodova}, vidljivo={$vidljivo} where id={$pitanje}");
            nicemessage("Pitanje uspješno izmijenjeno");
            zamgerlog2("izmijenjeno pitanje na kvizu", $pitanje);
            ?>
		<script language="JavaScript">
		location.href='?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja&subakcija=izmijeni&pitanje=<?php 
            echo $pitanje;
            ?>
';
		</script>
		<?php 
            return;
        }
        if ($_REQUEST['subakcija'] == "obrisi") {
            // brisanje pitanja - ovdje ce nam trebati potvrda!
            $pitanje = intval($_REQUEST['pitanje']);
            $q320 = myquery("select kviz from kviz_pitanje where id={$pitanje}");
            if (mysql_num_rows($q320) == 0) {
                niceerror("Pitanje je već obrisano!");
                zamgerlog("potvrda brisanja pitanja: pitanje {$pitanje} ne postoji", 3);
                zamgerlog2("pitanje ne postoji (potvrda brisanja)", $pitanje);
                return;
            }
            if (mysql_result($q320, 0, 0) != $kviz) {
                niceerror("Pitanje nije sa ovog kviza");
                zamgerlog("potvrda brisanja pitanja: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3);
                zamgerlog2("id pitanja i kviza se ne poklapaju (potvrda brisanja)", $pitanje, $kviz);
                return;
            }
            $q335 = myquery("delete from kviz_odgovor where kviz_pitanje={$pitanje}");
            $q336 = myquery("delete from kviz_pitanje where id={$pitanje}");
            nicemessage("Pitanje uspješno obrisano");
            zamgerlog2("obrisano pitanje sa kviza", $kviz, $pitanje);
            ?>
		<script language="JavaScript">
		location.href='?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja';
		</script>
		<?php 
            return;
        }
        if ($_REQUEST['subakcija'] == "dodaj_odgovor" && check_csrf_token()) {
            $pitanje = intval($_REQUEST['pitanje']);
            $tekst = my_escape($_REQUEST['tekst']);
            if ($_REQUEST['tacan']) {
                $tacan = 1;
            } else {
                $tacan = 0;
            }
            if ($pitanje > 0) {
                $q320 = myquery("select kviz from kviz_pitanje where id={$pitanje}");
                if (mysql_num_rows($q320) == 0 || mysql_result($q320, 0, 0) != $kviz) {
                    niceerror("Pitanje nije sa ovog kviza");
                    zamgerlog("dodavanje odgovora: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3);
                    zamgerlog2("id pitanja i kviza se ne poklapaju (dodavanje odgovora)", $pitanje, $kviz);
                    return;
                }
            }
            $q340 = myquery("insert into kviz_odgovor set kviz_pitanje={$pitanje}, tekst='{$tekst}', tacan={$tacan}");
            nicemessage("Odgovor uspješno dodan");
            zamgerlog2("dodan odgovor na pitanje", mysql_insert_id());
            if ($pitanje > 0) {
                ?>
			<script language="JavaScript">
			location.href='?sta=nastavnik/kvizovi&predmet=<?php 
                echo $predmet;
                ?>
&ag=<?php 
                echo $ag;
                ?>
&kviz=<?php 
                echo $kviz;
                ?>
&akcija=pitanja&subakcija=izmijeni&pitanje=<?php 
                echo $pitanje;
                ?>
';
			</script>
			<?php 
            } else {
                ?>
			<script language="JavaScript">
			location.href='?sta=nastavnik/kvizovi&predmet=<?php 
                echo $predmet;
                ?>
&ag=<?php 
                echo $ag;
                ?>
&kviz=<?php 
                echo $kviz;
                ?>
&akcija=pitanja';
			</script>
			<?php 
            }
            return;
        }
        if ($_REQUEST['subakcija'] == "obrisi_odgovor") {
            // && check_csrf_token()) {
            $odgovor = intval($_REQUEST['odgovor']);
            $q350 = myquery("select kp.kviz, kp.id from kviz_pitanje as kp, kviz_odgovor as ko where ko.id={$odgovor} and ko.kviz_pitanje=kp.id");
            if (mysql_num_rows($q350) == 0) {
                // Moguće da je odgovor dat prije pitanja
                $q355 = myquery("select kviz_pitanje from kviz_odgovor where id={$odgovor}");
                if (mysql_num_rows($q355) == 0) {
                    niceerror("Odgovor je već obrisan!");
                    zamgerlog("brisanje odgovora: odgovor {$odgovor} ne postoji", 3);
                    zamgerlog2("odgovor ne postoji (brisanje odgovora)", $odgovor);
                    return;
                }
            } else {
                if (mysql_result($q350, 0, 0) != $kviz) {
                    niceerror("Odgovor ne postoji ili pitanje nije sa ovog kviza");
                    zamgerlog("brisanje odgovora: odgovor {$odgovor} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3);
                    zamgerlog2("id odgovora i kviza se ne poklapaju (brisanje odgovora)", $odgovor, $kviz);
                    return;
                }
            }
            $q360 = myquery("delete from kviz_odgovor where id={$odgovor}");
            nicemessage("Odgovor uspješno obrisan");
            $dodaj = "";
            if (mysql_num_rows($q350) != 0) {
                $dodaj = "&subakcija=izmijeni&pitanje=" . mysql_result($q350, 0, 1);
            }
            zamgerlog2("obrisan odgovor sa kviza", $odgovor, $kviz);
            ?>
		<script language="JavaScript">
		location.href='?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja<?php 
            echo $dodaj;
            ?>
';
		</script>
		<?php 
            return;
        }
        if ($_REQUEST['subakcija'] == "toggle_tacnost") {
            // && check_csrf_token()) {
            $odgovor = intval($_REQUEST['odgovor']);
            $q370 = myquery("select kp.kviz, kp.id, ko.tacan from kviz_pitanje as kp, kviz_odgovor as ko where ko.id={$odgovor} and ko.kviz_pitanje=kp.id");
            if (mysql_num_rows($q370) == 0 || mysql_result($q370, 0, 0) != $kviz) {
                niceerror("Odgovor ne postoji ili pitanje nije sa ovog kviza");
                zamgerlog("toggle tacnost: odgovor {$odgovor} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3);
                zamgerlog2("id odgovora i kviza se ne poklapaju (toggle tacnosti)", $odgovor, $kviz);
                return;
            }
            if (mysql_result($q370, 0, 2) == 1) {
                $tacan = 0;
            } else {
                $tacan = 1;
            }
            $q380 = myquery("update kviz_odgovor set tacan={$tacan} where id={$odgovor}");
            nicemessage("Odgovor proglašen za (ne)tačan");
            zamgerlog2("odgovor proglasen za (ne)tacan", $odgovor, $tacan);
            ?>
		<script language="JavaScript">
		location.href='?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja&subakcija=izmijeni&pitanje=<?php 
            echo mysql_result($q370, 0, 1);
            ?>
';
		</script>
		<?php 
            return;
        }
        if ($_REQUEST['subakcija'] == "kopiraj_pitanja" && check_csrf_token()) {
            $drugi_kviz = intval($_REQUEST['_lv_column_kviz']);
            $q740 = myquery("SELECT naziv FROM kviz WHERE id={$drugi_kviz}");
            // Dozvoljavamo kopiranje sa kviza sa drugog predmeta!?
            if (mysql_num_rows($q740) == 0) {
                niceerror("Nepoznat kviz");
                zamgerlog2("nepoznat ID kviza", $drugi_kviz);
                return;
            }
            $q700 = myquery("SELECT id, tip, tekst, bodova, vidljivo FROM kviz_pitanje WHERE kviz={$drugi_kviz}");
            while ($r700 = mysql_fetch_row($q700)) {
                $staro_pitanje = $r700[0];
                $tekst = mysql_real_escape_string($r700[2]);
                $q710 = myquery("INSERT INTO kviz_pitanje SET kviz={$kviz}, tip='{$r700['1']}', tekst='{$tekst}', bodova={$r700['3']}, vidljivo={$r700['4']}");
                $novo_pitanje = mysql_insert_id();
                // Kreiranje odgovora na pitanje
                $q720 = myquery("SELECT tekst, tacan, vidljiv FROM kviz_odgovor WHERE kviz_pitanje={$staro_pitanje}");
                while ($r720 = mysql_fetch_row($q720)) {
                    $tekst = mysql_real_escape_string($r720[0]);
                    $q730 = myquery("INSERT INTO kviz_odgovor SET kviz_pitanje={$novo_pitanje}, tekst='{$tekst}', tacan={$r720['1']}, vidljiv={$r720['2']}");
                }
            }
            nicemessage("Prekopirana pitanja sa kviza");
            zamgerlog2("prekopirana pitanja sa kviza", $kviz, $drugi_kviz);
            ?>
		<script language="JavaScript">
		location.href='?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja';
		</script>
		<?php 
            return;
        }
        ?>
	<h3>Izmjena pitanja za kviz "<?php 
        echo $naziv_kviza;
        ?>
"</h3>
	<a href="?sta=nastavnik/kvizovi&predmet=<?php 
        echo $predmet;
        ?>
&ag=<?php 
        echo $ag;
        ?>
&_lv_nav_id=<?php 
        echo $kviz;
        ?>
">Nazad na podešavanje parametara kviza</a><br><br>
	<table border="0" cellspacing="1" cellpadding="2">
	<tr bgcolor="#999999">
		<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">R.br.</font></td>
		<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Tekst pitanja</font></td>
		<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Odgovori</font></td>
		<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Bodova</font></td>
		<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Vidljivo?</font></td>
		<td>&nbsp;</td>
	</tr>
	<?php 
        $rbr = 0;
        $q210 = myquery("select id, tip, tekst, bodova, vidljivo from kviz_pitanje where kviz={$kviz}");
        while ($r210 = mysql_fetch_row($q210)) {
            // Pribavljamo odgovore
            $odgovori = "";
            $q220 = myquery("select tekst, tacan from kviz_odgovor where kviz_pitanje={$r210['0']} order by tacan desc");
            if (mysql_num_rows($q220) < 1) {
                $odgovori = "<font color=\"red\">Nema ponuđenih odgovora</font>";
            }
            $broj_tacnih = 0;
            while ($r220 = mysql_fetch_row($q220)) {
                $odgovori .= "'{$r220['0']}'";
                if ($r220[1] == 1) {
                    $odgovori .= " (*)";
                    $broj_tacnih++;
                }
                $odgovori .= ", ";
            }
            if (mysql_num_rows($q220) > 0 && $broj_tacnih == 0) {
                $odgovori = "<font color=\"red\">Nije ponuđen tačan odgovor</font><br>\n" . $odgovori;
            } else {
                if (mysql_num_rows($q220) > 0 && $r210[1] == 'mcma' && $broj_tacnih == 1) {
                    $odgovori = "<font color=\"red\">Ponuđen je samo jedan tačan odgovor</font><br>\n" . $odgovori;
                }
            }
            $vidljivo = "NE";
            if ($r210[4] == 1) {
                $vidljivo = "DA";
            }
            $rbr++;
            ?>
		<tr>
			<td><?php 
            echo $rbr;
            ?>
</td>
			<td><?php 
            echo $r210[2];
            ?>
</td>
			<td><?php 
            echo $odgovori;
            ?>
</td>
			<td><?php 
            echo $r210[3];
            ?>
</td>
			<td><?php 
            echo $vidljivo;
            ?>
</td>
			<td><a href="?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja&subakcija=obrisi&pitanje=<?php 
            echo $r210[0];
            ?>
">Obriši</a> *
			<a href="?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja&subakcija=izmijeni&pitanje=<?php 
            echo $r210[0];
            ?>
">Izmijeni</a></td>
		</tr>
		<?php 
        }
        print "</table>\n<br><br>\n";
        if (mysql_num_rows($q210) == 0) {
            print genform("POST");
            ?>
		<input type="hidden" name="subakcija" value="kopiraj_pitanja">
		<p>Kopiraj pitanja sa kviza:<?php 
            $_lv_["where:predmet"] = $predmet;
            $_lv_["where:akademska_godina"] = $ag;
            print db_dropdown("kviz");
            ?>
		<input type="submit" value=" Kreni ">
		</p></form><?php 
        }
        if ($_REQUEST['subakcija'] == "izmijeni") {
            ?>
		<a href="?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja">Dodaj novo pitanje</a><br><br>
		
		<a name="izmjena"></a>
		<b>Izmjena pitanja</b><br>
		<?php 
            $pitanje = intval($_REQUEST['pitanje']);
            $q230 = myquery("select kviz, tip, tekst, bodova, vidljivo from kviz_pitanje where id={$pitanje}");
            if (mysql_num_rows($q230) < 1) {
                niceerror("Nepostojeće pitanje {$pitanje}");
                zamgerlog("editovanje pitanja: nepostojece pitanje {$pitanje}", 3);
                zamgerlog2("nepostojece pitanje (editovanje pitanja)", $pitanje);
                return;
            }
            if (mysql_result($q230, 0, 0) != $kviz) {
                niceerror("Pitanje nije sa ovog kviza");
                zamgerlog("editovanje pitanja: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3);
                zamgerlog2("id pitanja i kviza se ne poklapaju (editovanje pitanja)", $pitanje, $kviz);
                return;
            }
            $tip = mysql_result($q230, 0, 1);
            $tekst = mysql_result($q230, 0, 2);
            $bodova = mysql_result($q230, 0, 3);
            if (mysql_result($q230, 0, 4) == 1) {
                $vidljivo = "CHECKED";
            } else {
                $vidljivo = "";
            }
            $subakcija = "potvrda_izmjene";
        } else {
            print "<b>Dodajte novo pitanje</b><br>\n";
            $tekst = $vidljiv = "";
            $bodova = $pitanje = 0;
            $tip = "mcsa";
            $subakcija = "potvrda_novo";
        }
        unset($_REQUEST['subakcija']);
        unset($_GET['subakcija']);
        ?>
	<?php 
        echo genform("POST");
        ?>
	<input type="hidden" name="subakcija" value="<?php 
        echo $subakcija;
        ?>
">
	<input type="hidden" name="pitanje" value="<?php 
        echo $pitanje;
        ?>
">
	<table border="0">
		<tr><td>Tekst pitanja:</td><td><input type="text" size="50" name="tekst" value="<?php 
        echo $tekst;
        ?>
"></td></tr>
		<tr><td>Bodova:</td><td><input type="text" size="5" name="bodova" value="<?php 
        echo $bodova;
        ?>
"></td></tr>
		<tr><td>Tip pitanja:</td><td>
			<select name="tip">
				<option value="mcsa" <?php 
        if ($tip == "mcsa") {
            print "SELECTED";
        }
        ?>
>MCSA</option>
				<option value="mcma" <?php 
        if ($tip == "mcma") {
            print "SELECTED";
        }
        ?>
>MCMA</option>
				<option value="tekstualno" <?php 
        if ($tip == "tekstualno") {
            print "SELECTED";
        }
        ?>
>Tekstualno</option>
			</select>
			<a href="#" onclick="javascript:window.open('legenda-pitanja.html','blah6','width=320,height=300');">Legenda tipova pitanja</a>
		</td></tr>
		<tr><td align="right"><input type="checkbox" name="vidljivo" value="1" <?php 
        echo $vidljivo;
        ?>
></td><td>Pitanje vidljivo</td></tr>
	</table>
	<br>Ponuđeni odgovori:<br>
	<ul>
	<?php 
        $q240 = myquery("select id, tekst, tacan, vidljiv from kviz_odgovor where kviz_pitanje={$pitanje}");
        if (mysql_num_rows($q240) == 0) {
            print "<li>Do sada nije unesen nijedan odgovor</li>\n";
        }
        while ($r240 = mysql_fetch_row($q240)) {
            print "<li>";
            if ($r240[3] == 0) {
                print "<font color=\"#AAAAAA\">";
            }
            print $r240[1];
            if ($r240[2] == 1) {
                print " (TAČAN)";
                $toggle_link = "Proglasi za netačan";
            } else {
                $toggle_link = "Proglasi za tačan";
            }
            if ($r240[3] == 0) {
                print "</font> - nevidljiv";
            }
            ?>
 - <a href="?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja&subakcija=obrisi_odgovor&odgovor=<?php 
            echo $r240[0];
            ?>
">Obriši</a>
		- <a href="?sta=nastavnik/kvizovi&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&kviz=<?php 
            echo $kviz;
            ?>
&akcija=pitanja&subakcija=toggle_tacnost&odgovor=<?php 
            echo $r240[0];
            ?>
"><?php 
            echo $toggle_link;
            ?>
</a></li>
		<?php 
        }
        ?>
	</ul>
	<input type="submit" value="Promjena pitanja"><br>
	</form>
	<br>
	Dodajte odgovor na ovo pitanje:<br>
	<?php 
        echo genform("POST");
        ?>
	<input type="hidden" name="subakcija" value="dodaj_odgovor">
	<input type="hidden" name="pitanje" value="<?php 
        echo $pitanje;
        ?>
">
	Tekst odgovora: <input type="text" name="tekst" size="50"><br>
	<input type="checkbox" name="tacan" value="1"> Tačan<br>
	<input type="submit" value="Dodaj"><br>
	</form>
	<?php 
        return;
    }
    // Akcija - statistički pregled rezultata kviza
    if ($_REQUEST['akcija'] == "rezultati") {
        $kviz = intval($_REQUEST['kviz']);
        $q600 = myquery("select naziv, predmet, akademska_godina, broj_pitanja, prolaz_bodova from kviz where id={$kviz}");
        if (mysql_num_rows($q600) < 1) {
            niceerror("Nepostojeći kviz {$kviz}");
            zamgerlog("editovanje pitanja: nepostojeci kviz {$kviz}", 3);
            zamgerlog2("nepostojeci kviz (editovanje pitanja)", $kviz);
            return;
        }
        if (mysql_result($q600, 0, 1) != $predmet || mysql_result($q600, 0, 2) != $ag) {
            niceerror("Kviz nije sa ovog predmeta");
            zamgerlog("editovanje pitanja: kviz {$kviz} nije sa predmeta pp{$predmet} ag{$ag}", 3);
            zamgerlog2("id kviza i predmeta se ne poklapaju (editovanje pitanja)", $predmet, $ag, $kviz);
            return;
        }
        $naziv_kviza = mysql_result($q600, 0, 0);
        $max_bodova = mysql_result($q600, 0, 3);
        $prolaz_bodova = mysql_result($q600, 0, 4);
        $broj_bodova = array();
        $ukupno = $max_broj = $ukupno_prolaz = 0;
        for ($i = 0; $i <= $max_bodova; $i++) {
            $q620 = myquery("SELECT COUNT(*) FROM kviz_student WHERE kviz={$kviz} AND dovrsen=1 AND bodova>={$i} AND bodova<" . ($i + 1));
            $broj_bodova[$i] = mysql_result($q620, 0, 0);
            $ukupno += $broj_bodova[$i];
            if ($broj_bodova[$i] > $max_broj) {
                $max_broj = $broj_bodova[$i];
            }
            if ($i >= $prolaz_bodova) {
                $ukupno_prolaz += $broj_bodova[$i];
            }
        }
        $q630 = myquery("SELECT COUNT(*) FROM kviz_student WHERE kviz={$kviz} AND dovrsen=0");
        $nedovrsenih = mysql_result($q630, 0, 0);
        ?>
	<p>Popunilo kviz: <b><?php 
        echo $ukupno;
        ?>
</b> studenata<br />
	Nisu dovršili popunjavanje kviza: <b><?php 
        echo $nedovrsenih;
        ?>
</b> studenata<br />
	Ostvarilo prolazne bodove: <b><?php 
        echo $ukupno_prolaz;
        ?>
</b> studenata (<?php 
        echo procenat($ukupno_prolaz, $ukupno);
        ?>
)</p>
	
	<h3><?php 
        echo $naziv_kviza;
        ?>
</h3>
	<h4>Distribucija bodova</h4>
	<div id="grafik">
		<div style="width:300px;height:200px;margin:5px;">
			<?php 
        foreach ($broj_bodova as $bod => $broj) {
            if ($broj == 0) {
                $broj_pixela_print = 170;
            } else {
                $broj_pixela = $broj / $max_broj * 200;
                $broj_pixela_print = intval(200 - $broj_pixela);
            }
            if ($bod < $prolaz_bodova) {
                $boja = "red";
            } else {
                $boja = "green";
            }
            ?>
				<div style="width:45px; height:200px; background:<?php 
            echo $boja;
            ?>
;margin-left:5px;float:left;">
					<div style="width:45px;height:<?php 
            echo $broj_pixela_print;
            ?>
px;background:white;">&nbsp;</div>
					<span style="color:white;font-size: 25px; text-align: center; ">&nbsp;<?php 
            echo $bod;
            ?>
</span>
				</div>	
				<?php 
        }
        ?>
		</div>
		<div style="width:300px;height:50px;margin:5px;">
			<?php 
        foreach ($broj_bodova as $bod => $broj) {
            ?>
				<div style="width:45px; margin-left:5px; text-align: center; float:left; ">
					<?php 
            echo $broj;
            ?>
 (<?php 
            echo procenat($broj, $ukupno);
            ?>
)
				</div>
				<?php 
        }
        ?>
		</div>
	</div>
	<?php 
        // Statistika pitanja
        ?>
	<h3>Statistika pitanja</h3>
	<table border="1" style="border-collapse:collapse">
	<tr><th>Pitanje</th><th>Uk. odgovora</th><th>Tačnih</th></tr>
	<?php 
        $q640 = myquery("SELECT id, tekst, ukupno, tacnih FROM kviz_pitanje WHERE kviz={$kviz} ORDER BY tacnih/ukupno");
        while ($r640 = mysql_fetch_row($q640)) {
            $id_pitanja = $r640[0];
            $pitanje = $r640[1];
            if (strlen($pitanje) > 60) {
                $skr_pitanje = mb_substr($pitanje, 0, 50) . "...";
            } else {
                $skr_pitanje = $pitanje;
            }
            $odgovora = $r640[2];
            $tacnih = $r640[3];
            ?>
		<tr>
			<td title="<?php 
            echo $pitanje;
            ?>
">
			<a href="?sta=nastavnik/kvizovi&amp;predmet=<?php 
            echo $predmet;
            ?>
&amp;ag=<?php 
            echo $ag;
            ?>
&amp;kviz=<?php 
            echo $kviz;
            ?>
&amp;akcija=pitanja&amp;subakcija=izmijeni&amp;pitanje=<?php 
            echo $id_pitanja;
            ?>
#izmjena"><?php 
            echo $skr_pitanje;
            ?>
</a></td>
			<td><?php 
            echo $odgovora;
            ?>
</td>
			<td><?php 
            echo $tacnih;
            ?>
 (<?php 
            echo procenat($tacnih, $odgovora);
            ?>
)</td>
		</tr>
		<?php 
        }
        ?>
	</table>
	<?php 
        return;
    }
    // Kopiranje kvizova sa prošlogodišnjeg predmeta
    if ($_REQUEST['akcija'] === "prosla_godina" && strlen($_POST['nazad']) < 1) {
        $old_ag = $ag - 1;
        // Ovo je po definiciji prošla godina
        $greska = false;
        $q499 = myquery("SELECT naziv FROM akademska_godina WHERE id={$old_ag}");
        if (mysql_num_rows($q499) == 0) {
            niceerror("Nije pronađena prošla akademska godina.");
            zamgerlog("nije pronadjena akademska godina {$old_ag}");
            zamgerlog2("nije pronadjena akademska godina", $old_ag);
            $greska = true;
        }
        if (!$greska) {
            $q500 = myquery("SELECT naziv FROM kviz WHERE predmet={$predmet} AND akademska_godina={$old_ag}");
            if (mysql_num_rows($q500) == 0) {
                niceerror("Prošle godine nije bio definisan nijedan kviz");
                zamgerlog("prosle godine nije bio definisan nijedan kviz {$predmet} {$old_ag}");
                zamgerlog2("prosle godine nije bio definisan nijedan kviz", $predmet, $old_ag);
                $greska = true;
            }
        }
        if (!$greska && $_REQUEST['potvrda'] === "potvrdjeno" && check_csrf_token()) {
            $q510 = myquery("SELECT id, naziv, vrijeme_pocetak, vrijeme_kraj, ip_adrese, prolaz_bodova, broj_pitanja, trajanje_kviza, aktivan FROM kviz WHERE predmet={$predmet} AND akademska_godina={$old_ag}");
            while ($r510 = mysql_fetch_row($q510)) {
                // Kreiranje novog kviza
                $stari_kviz = $r510[0];
                print "<p>Kopiram kviz {$r510['1']}...</p>";
                $naziv = mysql_real_escape_string($r510[1]);
                $q520 = myquery("INSERT INTO kviz SET naziv='{$naziv}', predmet={$predmet}, akademska_godina={$ag}, vrijeme_pocetak='{$r510['2']}', vrijeme_kraj='{$r510['3']}', ip_adrese='{$r510['4']}', prolaz_bodova={$r510['5']}, broj_pitanja={$r510['6']}, trajanje_kviza={$r510['7']}, aktivan={$r510['8']}");
                $novi_kviz = mysql_insert_id();
                // Kreiranje pitanja
                $q530 = myquery("SELECT id, tip, tekst, bodova, vidljivo FROM kviz_pitanje WHERE kviz={$stari_kviz}");
                while ($r530 = mysql_fetch_row($q530)) {
                    $staro_pitanje = $r530[0];
                    $tekst = mysql_real_escape_string($r530[2]);
                    $q540 = myquery("INSERT INTO kviz_pitanje SET kviz={$novi_kviz}, tip='{$r530['1']}', tekst='{$tekst}', bodova={$r530['3']}, vidljivo={$r530['4']}");
                    $novo_pitanje = mysql_insert_id();
                    // Kreiranje odgovora na pitanje
                    $q550 = myquery("SELECT tekst, tacan, vidljiv FROM kviz_odgovor WHERE kviz_pitanje={$staro_pitanje}");
                    while ($r550 = mysql_fetch_row($q550)) {
                        $tekst = mysql_real_escape_string($r550[0]);
                        $q560 = myquery("INSERT INTO kviz_odgovor SET kviz_pitanje={$novo_pitanje}, tekst='{$tekst}', tacan={$r550['1']}, vidljiv={$r550['2']}");
                    }
                }
            }
            nicemessage("Kopiranje završeno!");
            print "<a href=\"?sta=nastavnik/kvizovi&predmet={$predmet}&ag={$ag}\">Povratak na stranicu kvizova</a>\n";
            return;
        } else {
            if (!$greska) {
                nicemessage("Kopiram sljedeće kvizove iz akademske " . mysql_result($q499, 0, 0) . ". godine.");
                print "\n<ul>\n";
                while ($r500 = mysql_fetch_row($q500)) {
                    print "<li>{$r500['0']}</li>\n";
                }
                print "</ul>\n";
                print genform("POST");
                ?>
		<input type="hidden" name="potvrda" value="potvrdjeno">
		<p>Da li ste sigurni?</p>
		<p><input type="submit" name="nazad" value=" Nazad "> <input type="submit" value=" Potvrda"></p>
		</form>
		<?php 
            }
        }
        return;
    }
    // Korektno brisanje kviza
    if ($_REQUEST['_lv_action_delete']) {
        $kviz = intval($_REQUEST['_lv_column_id']);
        $q200 = myquery("select naziv, predmet, akademska_godina from kviz where id={$kviz}");
        if (mysql_num_rows($q200) < 1) {
            niceerror("Nepostojeći kviz {$kviz}");
            zamgerlog("brisanje kviza: nepostojeci kviz {$kviz}", 3);
            zamgerlog2("nepostojeci kviz (brisanje kviza)", $kviz);
            return;
        }
        if (mysql_result($q200, 0, 1) != $predmet || mysql_result($q200, 0, 2) != $ag) {
            niceerror("Kviz nije sa ovog predmeta");
            zamgerlog("brisanje kviza: kviz {$kviz} nije sa predmeta pp{$predmet} ag{$ag}", 3);
            zamgerlog2("id kviza i predmeta se ne poklapaju (brisanje kviza)", $predmet, $ag, $kviz);
            return;
        }
        $q400 = myquery("select id from kviz_pitanje where kviz={$kviz}");
        // Brisemo odgovore
        while ($r400 = mysql_fetch_row($q400)) {
            $q410 = myquery("delete from kviz_odgovor where kviz_pitanje={$r400['0']}");
        }
        $q420 = myquery("delete from kviz_pitanje where kviz={$kviz}");
        $q430 = myquery("delete from kviz_student where kviz={$kviz}");
        // db_form() će pobrisati stavku iz tabele kviz
        zamgerlog2("obrisan kviz", $predmet, $ag, $kviz);
    }
    // Provjeravamo da li je raspon dobro unesen
    if (($_REQUEST['_lv_action'] == "edit" || $_REQUEST['_lv_action'] == "add") && !$_REQUEST['_lv_action_delete']) {
        $ip_adresa_losa = false;
        if ($_REQUEST['_lv_action'] == "edit") {
            $id_kviza = intval($_REQUEST['_lv_column_id']);
            // Dodajemo logging
            zamgerlog("izmijenjen kviz {$id_kviza} (pp{$predmet})", 2);
            zamgerlog2("izmijenjen kviz", $id_kviza);
        } else {
            $labgrupa = intval($_REQUEST['_lv_column_labgrupa']);
            $naziv = my_escape($_REQUEST['_lv_column_naziv']);
            $pb = floatval($_REQUEST['_lv_column_prolaz_bodova']);
            $q100 = myquery("select id from kviz where predmet={$predmet} and akademska_godina={$ag} and naziv='{$naziv}' and labgrupa={$labgrupa} and prolaz_bodova={$pb}");
            $id_kviza = mysql_result($q100, 0, 0);
            zamgerlog("dodan novi kviz {$id_kviza} (pp{$predmet})", 2);
            zamgerlog2("dodan kviz", $id_kviza);
        }
        $ip_adrese = $_REQUEST['_lv_column_ip_adrese'];
        foreach (explode(",", $ip_adrese) as $blok) {
            if (strstr($blok, "/")) {
                // blok adresa u CIDR formatu
                list($baza, $maska) = explode("/", $blok);
                if ($baza != long2ip(ip2long($baza))) {
                    $ip_adresa_losa = true;
                    break;
                }
                if ($maska != intval($maska)) {
                    $ip_adresa_losa = true;
                    break;
                }
                if ($maska < 1 || $maska > 32) {
                    $ip_adresa_losa = true;
                    break;
                }
            } else {
                if (strstr($blok, "-")) {
                    // raspon adresa sa crticom
                    list($pocetak, $kraj) = explode("-", $blok);
                    if ($pocetak != long2ip(ip2long($pocetak))) {
                        $ip_adresa_losa = true;
                        break;
                    }
                    if ($kraj != long2ip(ip2long($kraj))) {
                        $ip_adresa_losa = true;
                        break;
                    }
                } else {
                    // pojedinačna adresa
                    if ($blok != long2ip(ip2long($blok))) {
                        $ip_adresa_losa = true;
                        break;
                    }
                }
            }
        }
        // Vraćamo se na editovanje lošeg kviza
        if ($ip_adresa_losa) {
            $_REQUEST['_lv_nav_id'] = $id_kviza;
            $_GET['_lv_nav_id'] = $id_kviza;
            $_POST['_lv_nav_id'] = $id_kviza;
            niceerror("Neispravan format IP adrese");
            ?>
		<p>Raspon IP adresa treba biti u jednom od formata:<br>
		- CIDR format (npr. 123.45.67.89/24)<br>
		- raspon početak-kraj sa crticom (npr. 123.45.67.89-123.45.67.98)<br>
		- pojedinačna adresa<br>
		Takođe možete navesti više raspona ili pojedinačnih adresa razdvojenih zarezom.</p>
		<?php 
        }
    }
    // Spisak postojećih kvizova
    $_lv_["where:predmet"] = $predmet;
    $_lv_["where:akademska_godina"] = $ag;
    $_lv_["new_link"] = "Unos novog kviza";
    print "Odaberite neki od postojećih kvizova koji želite administrirati:<br/>\n";
    print db_list("kviz");
    $q1000 = myquery("SELECT COUNT(*) FROM kviz WHERE predmet={$predmet} AND akademska_godina={$ag}");
    if (mysql_result($q1000, 0, 0) == 0) {
        print "<p><a href=\"?sta=nastavnik/kvizovi&predmet={$predmet}&ag={$ag}&akcija=prosla_godina\">Prekopiraj kvizove sa prošle akademske godine</a></p>\n";
    }
    print "<hr>\n";
    $kviz = intval($_REQUEST['_lv_nav_id']);
    if ($kviz > 0) {
        ?>
	<h3>Izmjena kviza</h3>
	<ul>
		<li><a href="?sta=nastavnik/kvizovi&predmet=<?php 
        echo $predmet;
        ?>
&ag=<?php 
        echo $ag;
        ?>
&kviz=<?php 
        echo $kviz;
        ?>
&akcija=pitanja">Izmijenite pitanja na kvizu</a></li>
		<li><a href="?sta=nastavnik/kvizovi&predmet=<?php 
        echo $predmet;
        ?>
&ag=<?php 
        echo $ag;
        ?>
&kviz=<?php 
        echo $kviz;
        ?>
&akcija=rezultati">Rezultati kviza (do sada poslani odgovori)</a></li>
	</ul>
	<?php 
    } else {
        ?>
	<h3>Kreiranje novog kviza</h3>
	<p>Unesite podatke o novom kvizu koji želite kreirati:</p><br>
	<?php 
    }
    $_lv_["label:vrijeme_pocetak"] = "Početak";
    $_lv_["label:vrijeme_kraj"] = "Kraj";
    $_lv_["label:labgrupa"] = "Samo za studente iz grupe";
    $_lv_["label:ip_adrese"] = "Ograniči na IP adrese";
    $_lv_["label:prolaz_bodova"] = "Minimum bodova za prolaz";
    $_lv_["label:trajanje_kviza"] = "Trajanje kviza (u sekundama)";
    $_lv_["hidden:predmet"] = 1;
    $_lv_["hidden:akademska_godina"] = 1;
    print db_form("kviz", "kvizform");
    // Markiramo loše polje
    if ($ip_adresa_losa) {
        ?>
	<script>
	var element = document.getElementsByName('_lv_column_ip_adrese');
	element[0].style.backgroundColor = "#FF9999";
	element[0].focus();
	element[0].select();
	</script>
	<?php 
    }
}