示例#1
0
function akcijaslanje()
{
    global $userid, $conf_files_path;
    require "lib/manip.php";
    // update komponente nakon slanja
    // Parametri
    $predmet = intval($_REQUEST['predmet']);
    $ag = intval($_REQUEST['ag']);
    $zadaca = intval($_POST['zadaca']);
    $zadatak = intval($_POST['zadatak']);
    $program = $_POST['program'];
    $povratak_url = "?sta=student/zadaca&predmet={$predmet}&ag={$ag}&zadaca={$zadaca}&zadatak={$zadatak}";
    $povratak_html = "<a href=\"{$povratak_url}\">Nastavak</a>";
    $povratak_js = "<script>window.onload = function() { setTimeout('redirekcija()', 3000); }\nfunction redirekcija() { window.location='{$povratak_url}'; } </script>\n";
    // Da li student slusa predmet?
    $q195 = myquery("select sp.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$userid} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}");
    if (mysql_num_rows($q195) < 1) {
        biguglyeerror("Ova zadaća nije iz vašeg predmeta");
        return;
    }
    $ponudakursa = mysql_result($q195, 0, 0);
    // Standardna lokacija zadaca
    $lokacijazadaca = "{$conf_files_path}/zadace/{$predmet}-{$ag}/{$userid}/";
    if (!file_exists("{$conf_files_path}/zadace/{$predmet}-{$ag}")) {
        mkdir("{$conf_files_path}/zadace/{$predmet}-{$ag}", 0777, true);
    }
    // Da li neko pokušava da spoofa zadaću?
    $q200 = myquery("SELECT count(*) FROM zadaca as z, student_predmet as sp, ponudakursa as pk\n\tWHERE sp.student={$userid} and sp.predmet=pk.id and pk.predmet=z.predmet and pk.akademska_godina=z.akademska_godina and z.id={$zadaca}");
    if (mysql_result($q200, 0, 0) == 0) {
        biguglyeerror("Ova zadaća nije iz vašeg predmeta");
        return;
    }
    // Ovo je potrebno radi pravljenja diff-a
    if (get_magic_quotes_gpc()) {
        $program = stripslashes($program);
    }
    // Podaci o zadaći
    $q210 = myquery("select programskijezik, UNIX_TIMESTAMP(rok), attachment, naziv, komponenta, dozvoljene_ekstenzije, automatsko_testiranje from zadaca where id={$zadaca}");
    $jezik = mysql_result($q210, 0, 0);
    $rok = mysql_result($q210, 0, 1);
    $attach = mysql_result($q210, 0, 2);
    $naziv_zadace = mysql_result($q210, 0, 3);
    $komponenta = mysql_result($q210, 0, 4);
    $zadaca_dozvoljene_ekstenzije = mysql_result($q210, 0, 5);
    $automatsko_testiranje = mysql_result($q210, 0, 6);
    // Ako je aktivno automatsko testiranje, postavi status na 1 (automatska kontrola), inace na 4 (ceka pregled)
    if ($automatsko_testiranje == 1) {
        $prvi_status = 1;
    } else {
        $prvi_status = 4;
    }
    // Provjera roka
    if ($rok <= time()) {
        niceerror("Vrijeme za slanje zadaće je isteklo!");
        zamgerlog("isteklo vrijeme za slanje zadaće z{$zadaca}", 3);
        // nivo 3 - greska
        zamgerlog2("isteklo vrijeme za slanje zadace", $zadaca);
        // nivo 3 - greska
        print $povratak_html;
        return;
    }
    // Prepisane zadaće se ne mogu ponovo slati
    $q240 = myquery("select status from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$userid} order by id desc limit 1");
    if (mysql_num_rows($q240) > 0 && mysql_result($q240, 0, 0) == 2) {
        // status = 2 - prepisana zadaća
        niceerror("Zadaća je prepisana i ne može se ponovo poslati.");
        print $povratak_html;
        return;
    }
    // Pravimo potrebne puteve
    if (!file_exists($lokacijazadaca)) {
        mkdir($lokacijazadaca, 0777);
    }
    if ($zadaca > 0 && !file_exists("{$lokacijazadaca}{$zadaca}")) {
        mkdir("{$lokacijazadaca}{$zadaca}", 0777);
    }
    // Temp fajl radi određivanja diff-a
    if (file_exists("{$lokacijazadaca}{$zadaca}/difftemp")) {
        unlink("{$lokacijazadaca}{$zadaca}/difftemp");
    }
    // Vrsta zadaće: textarea ili attachment
    if ($attach == 0) {
        // textarea
        if (!check_csrf_token()) {
            niceerror("Forma za slanje zadaće je istekla.");
            print "<p>Kada otvorite prozor za unos zadaće, imate određeno vrijeme (npr. 15 minuta) da pošaljete zadaću, u suprotnom zahtjev neće biti prihvaćen iz sigurnosnih razloga. Preporučujemo da zadaću ne radite direktno u prozoru za slanje zadaće nego u nekom drugom programu (npr. CodeBlocks) iz kojeg kopirate u Zamger.</p>";
            print $povratak_html;
            return;
        }
        // Određivanje ekstenzije iz jezika
        $q220 = myquery("select ekstenzija from programskijezik where id={$jezik}");
        $ekst = mysql_result($q220, 0, 0);
        $filename = "{$lokacijazadaca}{$zadaca}/{$zadatak}{$ekst}";
        // Kreiranje datoteke
        if (strlen($program) <= 10) {
            niceerror("Pokušali ste poslati praznu zadaću!");
            print "<p>Vjerovatno ste zaboravili kopirati kod u prozor za slanje.</p>";
            zamgerlog("poslao praznu zadacu z{$zadaca} zadatak {$zadatak}", 3);
            // nivo 3 - greska
            zamgerlog2("poslao praznu zadacu", $zadaca, $zadatak);
            // nivo 3 - greska
            print $povratak_html;
            return;
        } else {
            if ($zadaca > 0 && $zadatak > 0) {
                // Pravimo backup fajla za potrebe računanja diff-a
                $postoji_prosla_verzija = false;
                if (file_exists($filename)) {
                    rename($filename, "{$lokacijazadaca}{$zadaca}/difftemp");
                    $postoji_prosla_verzija = true;
                }
                $f = fopen($filename, 'w');
                if (!$f) {
                    niceerror("Greška pri pisanju fajla za zadaću.");
                    zamgerlog("greska pri pisanju zadace z{$zadaca} zadatak {$zadatak}", 3);
                    // nivo 3 - greska
                    zamgerlog2("greska pri pisanju zadace", $zadaca, $zadatak);
                    // nivo 3 - greska
                    if ($postoji_prosla_verzija) {
                        rename("{$lokacijazadaca}{$zadaca}/difftemp", $filename);
                    }
                    print $povratak_html;
                    return;
                }
                fwrite($f, $program);
                fclose($f);
                // Tabela "zadatak" funkcioniše kao log događaja u
                // koji se stvari samo dodaju
                $q230 = myquery("insert into zadatak set zadaca={$zadaca}, redni_broj={$zadatak}, student={$userid}, status={$prvi_status}, vrijeme=now(), filename='{$zadatak}{$ekst}', userid={$userid}");
                $id_zadatka = mysql_insert_id();
                // Pravljenje diffa
                if ($postoji_prosla_verzija) {
                    $diff = `/usr/bin/diff -u {$lokacijazadaca}{$zadaca}/difftemp {$filename}`;
                    $diff = my_escape($diff);
                    if (strlen($diff) > 1) {
                        $q250 = myquery("insert into zadatakdiff set zadatak={$id_zadatka}, diff='{$diff}'");
                    }
                    unlink("{$lokacijazadaca}{$zadaca}/difftemp");
                }
                nicemessage($naziv_zadace . "/Zadatak " . $zadatak . " uspješno poslan!");
                update_komponente($userid, $ponudakursa);
                zamgerlog("poslana zadaca z{$zadaca} zadatak {$zadatak}", 2);
                // nivo 2 - edit
                zamgerlog2("poslana zadaca (textarea)", $zadaca, $zadatak);
                // nivo 2 - edit
                print $povratak_html;
                print $povratak_js;
                return;
            } else {
                zamgerlog("greska pri slanju zadace (zadaca z{$zadaca} zadatak {$zadatak} filename {$filename})", 3);
                zamgerlog2("greska pri slanju zadace (textarea)", $zadaca, $zadatak);
                // nivo 2 - edit
                niceerror("Greška pri slanju zadaće. Kontaktirajte tutora.");
                print $povratak_html;
                return;
            }
        }
    } else {
        // if ($attach==0)...
        $program = $_FILES['attachment']['tmp_name'];
        if ($program && file_exists($program) && $_FILES['attachment']['error'] === UPLOAD_ERR_OK) {
            $ime_fajla = strip_tags(basename($_FILES['attachment']['name']));
            // Ukidam HTML znakove radi potencijalnog XSSa
            $ime_fajla = str_replace("&", "", $ime_fajla);
            $ime_fajla = str_replace("\"", "", $ime_fajla);
            $puni_put = "{$lokacijazadaca}{$zadaca}/{$ime_fajla}";
            // Provjeravamo da li je ekstenzija na spisku dozvoljenih
            $ext = "." . pathinfo($ime_fajla, PATHINFO_EXTENSION);
            // FIXME: postojeći kod očekuje da ekstenzije počinju tačkom...
            $db_doz_eks = explode(',', $zadaca_dozvoljene_ekstenzije);
            if ($zadaca_dozvoljene_ekstenzije != "" && !in_array($ext, $db_doz_eks)) {
                niceerror("Tip datoteke koju ste poslali nije dozvoljen.");
                print "<p>Na ovoj zadaći dozvoljeno je slati samo datoteke jednog od sljedećih tipova: <b>{$zadaca_dozvoljene_ekstenzije}</b>.<br>\n\t\t\t\tVi ste poslali datoteku tipa: <b>{$ext}</b>.</p>";
                zamgerlog("pogresan tip datoteke (z{$zadaca})", 3);
                zamgerlog2("pogresan tip datoteke", $zadaca);
                print $povratak_html;
                return;
            }
            // Diffing
            $diff = "";
            $q255 = myquery("SELECT filename FROM zadatak WHERE zadaca={$zadaca} AND redni_broj={$zadatak} AND student={$userid} ORDER BY id DESC LIMIT 1");
            if (mysql_num_rows($q255) > 0) {
                $stari_filename = "{$lokacijazadaca}{$zadaca}/" . mysql_result($q255, 0, 0);
                // Podržavamo diffing ako je i stara i nova ekstenzija ZIP (TODO ostale vrste arhiva)
                if (ends_with($stari_filename, ".zip") && ends_with($puni_put, ".zip")) {
                    // Pripremamo temp dir
                    $zippath = "/tmp/difftemp";
                    if (!file_exists($zippath)) {
                        mkdir($zippath, 0777, true);
                    } else {
                        if (!is_dir($zippath)) {
                            unlink($zippath);
                            mkdir($zippath);
                        } else {
                            rmMinusR($zippath);
                        }
                    }
                    $oldpath = "{$zippath}/old";
                    $newpath = "{$zippath}/new";
                    mkdir($oldpath);
                    mkdir($newpath);
                    `unzip -j "{$stari_filename}" -d {$oldpath}`;
                    `unzip -j "{$program}" -d {$newpath}`;
                    $diff = `/usr/bin/diff -ur {$oldpath} {$newpath}`;
                    $diff = clear_unicode(my_escape($diff));
                }
            }
            if (file_exists($puni_put)) {
                unlink($puni_put);
            }
            rename($program, $puni_put);
            chmod($puni_put, 0640);
            // Escaping za SQL
            $ime_fajla = my_escape($ime_fajla);
            $q260 = myquery("insert into zadatak set zadaca={$zadaca}, redni_broj={$zadatak}, student={$userid}, status={$prvi_status}, vrijeme=now(), filename='{$ime_fajla}', userid={$userid}");
            $id_zadatka = mysql_insert_id();
            if (strlen($diff) > 1) {
                $q270 = myquery("insert into zadatakdiff set zadatak={$id_zadatka}, diff='{$diff}'");
            }
            nicemessage("Z" . $naziv_zadace . "/" . $zadatak . " uspješno poslan!");
            update_komponente($userid, $ponudakursa, $komponenta);
            zamgerlog("poslana zadaca z{$zadaca} zadatak {$zadatak} (attachment)", 2);
            // nivo 2 - edit
            zamgerlog2("poslana zadaca (attachment)", $zadaca, $zadatak);
            print $povratak_html;
            print $povratak_js;
            return;
        } else {
            switch ($_FILES['attachment']['error']) {
                case UPLOAD_ERR_OK:
                    $greska = "Poslali ste praznu ili nepostojeću datoteku.";
                    break;
                case UPLOAD_ERR_INI_SIZE:
                    $greska = "Poslana datoteka je veća od dozvoljene. Trenutno maksimalna dozvoljena veličina je " . ini_get('upload_max_filesize');
                    break;
                case UPLOAD_ERR_FORM_SIZE:
                    $greska = "Poslana datoteka je veća od dozvoljene.";
                    // jednom ćemo omogućiti nastavniku da ograniči veličinu kroz formu
                    break;
                case UPLOAD_ERR_PARTIAL:
                    $greska = "Slanje datoteke je prekinuto, vjerovatno zbog problema sa vašom konekcijom. Molimo pokušajte ponovo.";
                    break;
                case UPLOAD_ERR_NO_FILE:
                    $greska = "Poslali ste praznu ili nepostojeću datoteku.";
                    break;
                case UPLOAD_ERR_NO_TMP_DIR:
                    $greska = "1 Greška u konfiguraciji Zamgera: nepostojeći TMP direktorij.";
                    break;
                case UPLOAD_ERR_CANT_WRITE:
                    $greska = "2 Greška u konfiguraciji Zamgera: nemoguće pisati u TMP direktorij.";
                    break;
                case UPLOAD_ERR_EXTENSION:
                    $greska = "3 Greška u konfiguraciji Zamgera: neka ekstenzija sprječava upload.";
                    break;
                default:
                    $greska = "Nepoznata greška u slanju datoteke. Kod: " . $_FILES['attachment']['error'];
            }
            zamgerlog("greska kod attachmenta (z{$zadaca}): {$greska}", 3);
            zamgerlog2("greska pri slanju zadace (attachment)", $zadaca, $zadatak, 0, $greska);
            niceerror("{$greska}");
            print $povratak_html;
            return;
        }
    }
}
示例#2
0
function saradnik_zadaca()
{
    global $conf_files_path, $userid, $user_siteadmin;
    require "lib/autotest.php";
    require "lib/manip.php";
    // radi update_komponente
    // --------------------
    // Standardni ulazni podaci i potrebne varijable
    $stud_id = intval($_REQUEST['student']);
    $zadaca = intval($_REQUEST['zadaca']);
    $zadatak = intval($_REQUEST['zadatak']);
    // Prava pristupa
    if (!$user_siteadmin) {
        // Da li je nastavnik na predmetu?
        $q10 = myquery("select count(*) from nastavnik_predmet as np, zadaca as z where z.id={$zadaca} and z.predmet=np.predmet and z.akademska_godina=np.akademska_godina and np.nastavnik={$userid}");
        if (mysql_result($q10, 0, 0) < 1) {
            zamgerlog("privilegije (student u{$stud_id} zadaca z{$zadaca})", 3);
            // nivo 3: greska
            niceerror("Nemate pravo izmjene ove zadaće");
            return;
        }
        // Ogranicenja (tabela: ogranicenje) ne provjeravamo jer bi to bilo prekomplikovano,
        // a pitanje je da li ima smisla
    }
    // Podaci o zadaci
    $q20 = myquery("select p.geshi, p.ekstenzija, z.attachment, z.naziv, z.zadataka, z.komponenta, z.predmet, z.akademska_godina, z.programskijezik from zadaca as z, programskijezik as p where z.id={$zadaca} and z.programskijezik=p.id");
    if (mysql_num_rows($q20) < 1) {
        zamgerlog("nepostojeca zadaca {$zadaca}", 3);
        niceerror("Neispravna zadaća.");
        exit;
    }
    $jezik = mysql_result($q20, 0, 0);
    $ekst = mysql_result($q20, 0, 1);
    $attach = mysql_result($q20, 0, 2);
    $naziv_zadace = mysql_result($q20, 0, 3);
    $komponenta = mysql_result($q20, 0, 5);
    $predmet = mysql_result($q20, 0, 6);
    $ag = mysql_result($q20, 0, 7);
    $id_jezika = mysql_result($q20, 0, 8);
    if (mysql_result($q20, 0, 4) < $zadatak || $zadatak < 1) {
        zamgerlog("pokusao pristupiti nepostojecem zadatku {$zadatak} u zadaci z{$zadaca}", 3);
        niceerror("Neispravan broj zadatka.");
        exit;
    }
    // Podaci o studentu
    $q50 = myquery("select ime, prezime from osoba where id={$stud_id}");
    if (mysql_num_rows($q50) < 1) {
        zamgerlog("nepostojeci student {$stud_id}", 3);
        niceerror("Neispravan student.");
        exit;
    }
    $ime_studenta = mysql_result($q50, 0, 0);
    $prezime_studenta = mysql_result($q50, 0, 1);
    $lokacijazadaca = "{$conf_files_path}/zadace/{$predmet}-{$ag}/{$stud_id}/";
    // --------------------
    // AKCIJE
    // Akcija: Ispis diffa
    if ($_GET['akcija'] == "diff") {
        $diff_id = intval($_GET['diff_id']);
        $q60 = myquery("select diff from zadatakdiff where zadatak={$diff_id}");
        $diff = mysql_result($q60, 0, 0);
        // Ovo ispod nema potrebe jer je diff već escapovan prilikom
        // inserta u bazu (stud_zadaca.php)
        // $diff = str_replace("\n\n","\n",$diff);
        // $diff = htmlspecialchars($diff);
        print "<pre>{$diff}</pre>\n\n";
        return;
    }
    // Akcija: Izvršenje programa
    if ($_POST['akcija'] == "izvrsi" && check_csrf_token()) {
        // čuvamo poslane podatke u bazi (ako ih nema)
        function izvrsi($stdin, $jezik, $lokacijazadaca, $zadaca, $zadatak, $ekst)
        {
            global $conf_files_path;
            // priprema fajlova
            $tstdin = str_replace('\\n', "\n", $stdin);
            // više nije dvostruki escape
            $tstdin = str_replace('\\N', "\n", $tstdin);
            $tstdin .= "\n";
            $result = file_put_contents("{$conf_files_path}/tmp/zamger-gdb.txt", "run\nbt\n");
            if ($result) {
                $result = file_put_contents("{$conf_files_path}/tmp/zamger-input.txt", $tstdin);
            }
            if (!$result) {
                zamgerlog("nije uspjelo kreiranje datoteka", 3);
                niceerror("Ne mogu kreirati potrebne datoteke u direktoriju /tmp");
                return;
            }
            // kompajliranje - FIXME: nema podrške za jezike?
            if ($jezik == "C++") {
                $kompajler = "g++";
            } else {
                $kompajler = "gcc";
            }
            $the_file = "{$lokacijazadaca}{$zadaca}/{$zadatak}{$ekst}";
            $stdout = array();
            exec("{$kompajler} -lm  -ggdb {$the_file} -o {$conf_files_path}/tmp/zamger.out 2>&1", $stdout, $retvar);
            if ($retvar != 0) {
                niceerror("Kompajliranje nije uspjelo! Slijedi ispis");
                print "<pre>" . join("\n", $stdout) . "</pre>\n\n";
                // čišćenje
                unlink("{$conf_files_path}/tmp/zamger-gdb.txt");
                unlink("{$conf_files_path}/tmp/zamger-input.txt");
                unlink("{$conf_files_path}/tmp/zamger.out");
                return;
            }
            // izvršenje
            unset($stdout);
            chmod("{$conf_files_path}/tmp/zamger.out", 0755);
            exec("gdb --batch --command={$conf_files_path}/tmp/zamger-gdb.txt {$conf_files_path}/tmp/zamger.out <{$conf_files_path}/tmp/zamger-input.txt 2>&1", $stdout, $retvar);
            // Čistimo viškove iz stdout-a
            $ispis = join("\n", $stdout);
            $ispis = preg_replace("/^Using .*? library .*?\n/", "", $ispis);
            $ok = strpos($ispis, "\nProgram exited normally.\n");
            if ($ok) {
                $ispis = substr($ispis, 0, $ok);
            } else {
                $greska = strpos($ispis, "\nProgram received signal SIGABRT, Aborted.\n");
                $backtrace = substr($ispis, $greska + 42);
                $ispis = substr($ispis, 0, $greska);
            }
            ?>
		<center><table width="95%" style="border:1px solid silver;" bgcolor="#FFF3F3"><tr><td>
		<pre><?php 
            echo $ispis;
            ?>
</pre>
		</td></tr></table></center><br/><?php 
            if ($ok) {
                ?>
<p><img src="images/16x16/zad_ok.png" width="16" height="16"> 
			Program se izvršio bez problema.</p><?php 
            } else {
                ?>
<p><img src="images/16x16/zad_bug.png" width="16" height="16">
			Program se krahirao. Backtrace (obratiti pažnju na zadnje linije):</p>
			<pre><?php 
                echo $backtrace;
                ?>
</pre>
			<?php 
            }
            // čišćenje
            unlink("{$conf_files_path}/tmp/zamger-gdb.txt");
            unlink("{$conf_files_path}/tmp/zamger-input.txt");
            unlink("{$conf_files_path}/tmp/zamger.out");
        }
        ?>
	<h1>Rezultat izvršenja:</h1>
	<?php 
        if ($_POST['sve']) {
            $q70 = myquery("select ulaz from stdin where zadaca={$zadaca} and redni_broj={$zadatak}");
            while ($r70 = mysql_fetch_row($q70)) {
                print "<h2>Ulaz: '{$r70['0']}'</h2>";
                izvrsi($r70[0], $jezik, $lokacijazadaca, $zadaca, $zadatak, $ekst);
            }
        } else {
            $stdin = $_POST['stdin'];
            $mstdin = my_escape($stdin);
            $q70 = myquery("select count(*) from stdin where ulaz='{$mstdin}' and zadaca={$zadaca} and redni_broj={$zadatak}");
            if (mysql_result($q70, 0, 0) == 0) {
                $q80 = myquery("insert into stdin set ulaz='{$mstdin}', zadaca={$zadaca}, redni_broj={$zadatak}");
            }
            izvrsi($stdin, $jezik, $lokacijazadaca, $zadaca, $zadatak, $ekst);
        }
        ?>
	<p><a href="javascript:history.go(-1)">Nazad</a></p>
	<?php 
        return;
    }
    // Akcija: Izmjena statusa
    if ($_POST['akcija'] == "slanje" && check_csrf_token()) {
        $komentar = my_escape($_POST['komentar']);
        $status = intval($_POST['status']);
        $bodova = floatval(str_replace(",", ".", $_POST['bodova']));
        // Osiguravamo da se filename prenese u svaku sljedeću instancu zadatka
        $filename = $izvjestaj_skripte = '';
        $q90 = myquery("select filename, izvjestaj_skripte from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$stud_id}  order by id desc limit 1");
        if (mysql_num_rows($q90) > 0) {
            $filename = mysql_real_escape_string(mysql_result($q90, 0, 0));
            $izvjestaj_skripte = mysql_real_escape_string(mysql_result($q90, 0, 1));
            // Već je sanitiziran HTML
        }
        $q100 = myquery("insert into zadatak set zadaca={$zadaca}, redni_broj={$zadatak}, student={$stud_id}, status={$status}, bodova={$bodova}, vrijeme=now(), komentar='{$komentar}', filename='{$filename}', izvjestaj_skripte='{$izvjestaj_skripte}', userid={$userid}");
        // Odredjujemo ponudu kursa (za update komponente)
        $q110 = myquery("select pk.id from student_predmet as sp, ponudakursa as pk where sp.student={$stud_id} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}");
        update_komponente($stud_id, mysql_result($q110, 0, 0), $komponenta);
        zamgerlog("izmjena zadace (student u{$stud_id} zadaca z{$zadaca} zadatak {$zadatak})", 2);
        // Nakon izmjene statusa, nastavljamo normalno sa prikazom zadatka
    }
    if ($_REQUEST["akcija"] == "test_detalji") {
        $test = intval($_REQUEST['test']);
        // Provjera spoofinga testa
        $q10 = myquery("SELECT COUNT(*) FROM autotest WHERE id={$test} AND zadaca={$zadaca} AND zadatak={$zadatak}");
        if (mysql_result($q10, 0, 0) == 0) {
            niceerror("Odabrani test nije sa odabrane zadaće.");
            return;
        }
        autotest_detalji($test, $stud_id, true);
        return;
    }
    if ($_REQUEST["akcija"] == "brisi_testove" && check_csrf_token()) {
        autotest_brisi_rezultate($stud_id, $zadaca, $zadatak);
        nicemessage("Rezultati testova obrisani.");
        ?>
	<p><a href="?sta=saradnik/zadaca&amp;student=<?php 
        echo $stud_id;
        ?>
&amp;zadaca=<?php 
        echo $zadaca;
        ?>
&amp;zadatak=<?php 
        echo $zadatak;
        ?>
">Nazad</a></p>
	<?php 
        return;
    }
    // --------------------
    // PRIKAZ ZADATKA
    // Header
    ?>
<h1><a href="?sta=saradnik/student&amp;student=<?php 
    echo $stud_id;
    ?>
&amp;predmet=<?php 
    echo $predmet;
    ?>
&amp;ag=<?php 
    echo $ag;
    ?>
" onclick="window.opener.open(this.href); return false;"><?php 
    echo $ime_studenta . " " . $prezime_studenta;
    ?>
</a>, <?php 
    echo $naziv_zadace . ", Zadatak " . $zadatak . ".";
    ?>
</h1>
<?php 
    // Da li ispisati zadatak ili dugme za download attachmenta?
    if ($attach == 0) {
        // Nije attachment
        $src = "";
        $the_file = "{$lokacijazadaca}{$zadaca}/{$zadatak}{$ekst}";
        $no_lines = 0;
        if (file_exists($the_file)) {
            if ($_REQUEST["akcija"] == "test_sa_kodom") {
                $test = intval($_REQUEST['test']);
                // Provjera spoofinga testa
                $q10 = myquery("SELECT COUNT(*) FROM autotest WHERE id={$test} AND zadaca={$zadaca} AND zadatak={$zadatak}");
                if (mysql_result($q10, 0, 0) == 0) {
                    niceerror("Odabrani test nije sa odabrane zadaće.");
                    return;
                }
                $src = autotest_sa_kodom($test, $stud_id, true);
            } else {
                $src = file_get_contents($the_file);
            }
            $no_lines = count(explode("\n", $src));
            // geshi - biblioteka za syntax highlighting
            include_once 'lib/geshi/geshi.php';
            $geshi = new GeSHi($src, $jezik);
            ?>
		<center><table width="95%" style="border:1px solid silver;"><tr>
		<!-- Brojevi linija -->
		<td bgcolor="#CCCCCC" align="left"><pre><?php 
            for ($i = 1; $i <= $no_lines; $i++) {
                print "{$i}\n";
            }
            ?>
</pre></td>
		<td  bgcolor="#F3F3F3" align="left">
		<?php 
            print $geshi->parse_code();
            ?>
</td></tr></table></center><br/><?php 
            if ($_REQUEST["akcija"] == "test_sa_kodom") {
                return;
            }
            // Formular za izvršavanje programa
            if ($id_jezika > 0) {
                ?>
			<script type="text/javascript" src="js/combo-box.js"></script>
			<center><table style="border:1px solid silver;" cellspacing="0" cellpadding="6"><tr><td>
			Izvrši program sa sljedećim parametrima (kucajte \n za tipku enter):<br/>
			<?php 
                echo genform("POST");
                ?>
			<input type="hidden" name="akcija" value="izvrsi">
			<select name="stdin" onKeyPress="edit(event)" onBlur="this.editing = false;">
			<?php 
                // Zadnje korišteni stdin se čuva u bazi
                $q120 = myquery("select ulaz from stdin where zadaca={$zadaca} and redni_broj={$zadatak} order by id desc");
                if (mysql_num_rows($q120) < 1) {
                    print "<option></option>";
                }
                // bez ovoga nije moguće upisati novi tekst
                while ($r120 = mysql_fetch_row($q120)) {
                    print "<option value=\"{$r120['0']}\">{$r120['0']}</option>\n";
                }
                ?>
			</select><br/>
		
			<b>Pažnja!</b> Prije pokretanja provjerite da li program sadrži opasne naredbe.<br/>
			<input type="submit" value=" Izvrši program "> <input type="submit" name="sve" value=" Izvrši sve primjere odjednom ">
			</form></table></center><br/>&nbsp;<br/>
			<?php 
            }
        }
    } else {
        // Attachment
        $q130 = myquery("select filename,UNIX_TIMESTAMP(vrijeme) from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$stud_id} order by id desc limit 1");
        if (mysql_num_rows($q130) > 0) {
            $filename = mysql_result($q130, 0, 0);
            $the_file = "{$lokacijazadaca}{$zadaca}/{$filename}";
            if ($filename && file_exists($the_file)) {
                $vrijeme = date("d. m. Y. h:i:s", mysql_result($q130, 0, 1));
                $velicina = nicesize(filesize($the_file));
                $icon = "images/mimetypes/" . getmimeicon($the_file);
                $dllink = "index.php?sta=common/attachment&student={$stud_id}&zadaca={$zadaca}&zadatak={$zadatak}";
                ?>
			<center><table width="75%" border="1" cellpadding="6" cellspacing="0" bgcolor="#CCCCCC"><tr><td>
			<a href="<?php 
                echo $dllink;
                ?>
"><img src="<?php 
                echo $icon;
                ?>
" border="0"></a>
			</td><td>
			<p>Poslani fajl: <b><a href="<?php 
                echo $dllink;
                ?>
"><?php 
                echo $filename;
                ?>
</a></b><br/>
			Veličina: <b><?php 
                echo $velicina;
                ?>
</b></p>
			</td></tr></table></center><br/>
			<?php 
            } else {
                ?>
			<center><table width="75%" border="1" cellpadding="6" cellspacing="0" bgcolor="#CCCCCC"><tr><td>
			<b><font color="red">Student je zaboravio priložiti datoteku.</font></b>
			</td></tr></table></center><br/>
			<?php 
            }
        }
    }
    // Prikaz statusa sa log-om i izmjena
    $q140 = myquery("select status,bodova,izvjestaj_skripte,komentar from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$stud_id} order by id desc limit 1");
    if (mysql_num_rows($q140) > 0) {
        $status = mysql_result($q140, 0, 0);
        $bodova = mysql_result($q140, 0, 1);
        $izvjestaj_skripte = str_replace("\n", "<br/>", mysql_result($q140, 0, 2));
        $komentar = mysql_result($q140, 0, 3);
        $komentar = str_replace("\"", "&quot;", $komentar);
        // Koristimo poseban upit da bismo odredili vrijeme slanja prve verzije
        $q150 = myquery("select UNIX_TIMESTAMP(vrijeme) from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$stud_id} order by id limit 1");
        $vrijeme_slanja = date("d. m. Y. H:i:s", mysql_result($q150, 0, 0));
        ?>
	
	<table border="0">
	<tr>
		<td>Vrijeme slanja:</td>
		<td><b><?php 
        echo $vrijeme_slanja;
        ?>
</b></td>
	</tr>
	<?php 
        // Autotest nalaz
        $nalaz_autotesta = autotest_tabela($stud_id, $zadaca, $zadatak, true);
        if ($nalaz_autotesta != "") {
            ?>
	<tr>
		<td>Rezultati testiranja:</td>
		<td>
		<p><?php 
            echo genform("POST");
            ?>
		<input type="hidden" name="akcija" value="brisi_testove">
		<input type="submit" value=" Obriši sve rezultate testiranja ">
		</form></p>
		<?php 
            print $nalaz_autotesta;
        }
        if ($id_jezika > 0) {
            ?>
	<tr>
		<td>Izvještaj skripte:</td>
		<td><i><?php 
            echo $izvjestaj_skripte;
            ?>
</i></td>
	</tr>
		<?php 
        }
        if ($status == 1 && !$user_siteadmin) {
            // nema mijenjanja ako je status 1 = ceka se automatska provjera
            print "Izmjena zadaće nije moguća jer se čeka automatsko testiranje";
        } else {
            print genform("POST");
        }
        ?>
	<input type="hidden" name="akcija" value="slanje">
	<?php 
    } else {
        print genform("POST");
        ?>
	<input type="hidden" name="akcija" value="slanje">

	<table border="0">
	<tr>
		<td>&nbsp;</td>
		<td><b>Unos bodova za zadaću koja nije poslana:</b></td>
	</tr>
	<?php 
    }
    // Dio forme koji se prikazuje bez obzira da li je u pitanju kreiranje nove zadaće ili promjena postojeće
    ?>
<tr>
	<td>Status</td>
	<td><select id="status" name="status"><?php 
    function myoption($nr, $tx, $sel)
    {
        print "{$sel}";
        print "<option value={$nr}";
        if ($nr == $sel) {
            print " selected";
        }
        print ">{$tx}</option>";
    }
    // tabela status kodova
    $statusi_array = array("nepoznat status", "sačekati automatsko testiranje!", "prepisana", "ne može se kompajlirati", "nova zadaća, potrebno pregledati", "pregledana");
    $brstatusa = 6;
    for ($i = 0; $i < $brstatusa; $i++) {
        myoption($i, $statusi_array[$i], $status);
    }
    ?>
</select></td>
</tr>
<tr>
	<td>Bodova:</td>
	<td><input type="text" size="20" name="bodova" value="<?php 
    echo $bodova;
    ?>
" onchange="javascript:document.getElementById('status').value=5;"></td>
</tr>
<tr>
	<td valign="top">Komentar:</td>
	<td><textarea cols="50" rows="5" name="komentar"><?php 
    echo $komentar;
    ?>
</textarea></td>
</tr>
<tr>
	<td colspan="2" align="center"><?php 
    if ($status != 1 || $user_siteadmin) {
        ?>
<input type="submit" value="Izmijeni vrijednosti"><?php 
    }
    ?>
</td>
</tr>
</table>
</form>



<?php 
    ##### HISTORIJA IZMJENA ######
    $q160 = myquery("select id,UNIX_TIMESTAMP(vrijeme),status,bodova,komentar,userid from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$stud_id} order by vrijeme");
    if (mysql_num_rows($q160) > 1) {
        ?>

<p>Historija izmjena:</p>
<ul><?php 
        while ($r160 = mysql_fetch_row($q160)) {
            $imeprezime = "";
            if ($r160[5] > 0) {
                $q165 = myquery("select ime, prezime from osoba where id={$r160['5']}");
                if (mysql_num_rows($q165) > 0) {
                    $imeprezime = mysql_result($q165, 0, 0) . " " . mysql_result($q165, 0, 1);
                }
            }
            $vrijeme_slanja = date("d. m. Y. H:i:s", $r160[1]);
            print "<li><b>{$vrijeme_slanja}";
            if ($imeprezime != "") {
                print " ({$imeprezime})";
            }
            print ":</b> " . $statusi_array[$r160[2]];
            if ($r160[3] > 0) {
                print " (" . $r160[3] . " bodova)";
            }
            if (strlen($r160[4]) > 0) {
                print " - &quot;" . $r160[4] . "&quot;";
            }
            $q170 = myquery("select count(zadatak) from zadatakdiff where zadatak={$r160['0']}");
            if (mysql_result($q170, 0, 0) > 0) {
                print " (<a href=\"index.php?sta=saradnik/zadaca&akcija=diff&zadaca={$zadaca}&zadatak={$zadatak}&student={$stud_id}&diff_id={$r160['0']}\">diff</a>)";
            }
            print "</li>";
        }
        ?>
</ul><?php 
    }
    // Kraj historije izmjena
}
示例#3
0
文件: ajah.php 项目: msehalic/zamger
function common_ajah()
{
    global $userid, $user_nastavnik, $user_siteadmin, $user_studentska;
    require "lib/manip.php";
    ?>
<body onLoad="javascript:parent.ajah_stop()">
<?php 
    switch ($_REQUEST['akcija']) {
        case "prisustvo":
            if ($userid == 0) {
                zamgerlog("AJAH prisustvo - istekla sesija", 3);
                // nivo 3 - greska
                zamgerlog2("prisustvo - istekla sesija");
                // nivo 3 - greska
                print "Vasa sesija je istekla. Pritisnite dugme Refresh da se ponovo prijavite.";
                break;
            }
            if (!$user_nastavnik && !$user_siteadmin) {
                zamgerlog("AJAH prisustvo - korisnik nije nastavnik", 3);
                // nivo 3 - greska
                zamgerlog2("prisustvo - korisnik nije nastavnik");
                // nivo 3 - greska
                print "niste nastavnik";
                break;
            }
            $student = intval($_GET['student']);
            $cas = intval($_GET['cas']);
            $prisutan = intval($_GET['prisutan']);
            // Provjera parametra i odredjivanje predmeta i ag
            $q10 = myquery("select c.labgrupa, l.predmet, l.akademska_godina from cas as c, labgrupa as l where c.id={$cas} and c.labgrupa=l.id");
            if (mysql_num_rows($q10) < 1) {
                zamgerlog("AJAH prisustvo - nepostojeci cas {$cas}", 3);
                zamgerlog2("prisustvo - nepostojeci cas", $cas);
                print "nepostojeci cas";
                break;
            }
            $labgrupa = mysql_result($q10, 0, 0);
            $predmet = mysql_result($q10, 0, 1);
            $ag = mysql_result($q10, 0, 2);
            // Provjera prava pristupa
            if (!$user_siteadmin) {
                $q15 = myquery("select count(*) from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}");
                if (mysql_num_rows($q15) < 1) {
                    zamgerlog("AJAH prisustvo - korisnik nije nastavnik (cas c{$cas})", 3);
                    zamgerlog2("nije saradnik na predmetu (prisustvo)", $cas);
                    print "niste nastavnik A";
                    break;
                }
                // Provjeravamo ogranicenja
                $q20 = myquery("select o.labgrupa from ogranicenje as o, labgrupa as l where o.nastavnik={$userid} and o.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}");
                if (mysql_num_rows($q20) > 0) {
                    $nasao = 0;
                    while ($r20 = mysql_fetch_row($q20)) {
                        // Ako je labgrupa 0 nece ga nikada nac
                        if ($r20[0] == $labgrupa) {
                            $nasao = 1;
                            break;
                        }
                    }
                    if ($nasao == 0) {
                        zamgerlog("AJAH prisustvo - korisnik ima ogranicenje za grupu (cas c{$cas})", 3);
                        zamgerlog2("prisustvo - ima ogranicenje za grupu", $cas);
                        print "imate ograničenje na ovu grupu";
                        break;
                    }
                }
                // ponudakursa
            }
            // Akcija
            if ($student > 0 && $cas > 0) {
                if ($prisutan == 3) {
                    // Postavljanje u neutralno stanje
                    $q0 = myquery("delete from prisustvo where student={$student} and cas={$cas}");
                } else {
                    $prisutan--;
                    $q1 = myquery("select prisutan from prisustvo where student={$student} and cas={$cas}");
                    if (mysql_num_rows($q1) < 1) {
                        $q2 = myquery("insert into prisustvo set prisutan={$prisutan}, student={$student}, cas={$cas}");
                    } else {
                        $q3 = myquery("update prisustvo set prisutan={$prisutan} where student={$student} and cas={$cas}");
                    }
                }
            } else {
                zamgerlog("AJAH prisustvo - losa akcija, student: {$student} cas: {$cas} prisutan: {$prisutan}", 3);
                zamgerlog2("prisustvo - losa akcija", $student, $cas, $prisutan);
                print "akcija je generalno loša";
                break;
            }
            // Ažuriranje komponenti
            // potrebna nam je ponudakursa za update_komponente
            $q3 = myquery("select pk.id from ponudakursa as pk, student_predmet as sp where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}");
            $ponudakursa = mysql_result($q3, 0, 0);
            $q4 = myquery("select k.id from tippredmeta_komponenta as tpk,komponenta as k, akademska_godina_predmet as agp where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and k.tipkomponente=3");
            while ($r4 = mysql_fetch_row($q4)) {
                update_komponente($student, $ponudakursa, $r4[0]);
            }
            zamgerlog("AJAH prisustvo - student: u{$student} cas: c{$cas} prisutan: {$prisutan}", 2);
            // nivo 2 - edit
            zamgerlog2("prisustvo azurirano", $student, $cas, $prisutan);
            // nivo 2 - edit
            print "OK";
            break;
        case "izmjena_ispita":
            // TODO: treci tip vrijenosti, fiksna komponenta
            if ($userid == 0) {
                zamgerlog("AJAH ispit - istekla sesija", 3);
                // nivo 3 - greska
                zamgerlog2("ispit - istekla sesija");
                print "Vasa sesija je istekla. Pritisnite dugme Refresh da se ponovo prijavite.";
                break;
            }
            if (!$user_nastavnik && !$user_studentska && !$user_siteadmin) {
                zamgerlog("AJAH ispit - korisnik nije nastavnik", 3);
                // nivo 3 - greska
                zamgerlog2("ispit - korisnik nije nastavnik");
                // nivo 3 - greska
                print "niste nastavnik";
                break;
            }
            // Provjera validnosti primljenih podataka
            $idpolja = $_REQUEST['idpolja'];
            $vrijednost = $_REQUEST['vrijednost'];
            $parametri = array();
            $parametri = explode("-", $idpolja);
            $ime = $parametri[0];
            if ($ime != "ispit" && $ime != "ko" && $ime != "fiksna" && $ime != "kodatum") {
                // ko = konacna ocjena
                zamgerlog("AJAH ispit - ne valja id polja ({$idpolja})", 3);
                zamgerlog2("ispit - ne valja id polja", $idpolja);
                print "ne valja ID polja {$idpolja}";
                break;
            }
            if ($ime != "kodatum") {
                if (!preg_match("/\\d/", $vrijednost)) {
                    if ($vrijednost != "/") {
                        zamgerlog("AJAH ispit - vrijednost {$vrijednost} nije ni broj ni /", 3);
                        zamgerlog2("ispit - vrijednost nije ni broj ni /", 0, 0, 0, $vrijednost);
                        print "Vrijednost {$vrijednost} nije ni broj ni /";
                        break;
                    }
                } else {
                    $vrijednost = floatval(str_replace(",", ".", $vrijednost));
                }
            }
            // Provjera prava pristupa i dodatna validacija parametara
            if ($ime == "ispit") {
                $stud_id = intval($parametri[1]);
                $ispit = intval($parametri[2]);
                if ($user_siteadmin) {
                    $q40 = myquery("select 'nastavnik',pk.id,k.maxbodova,k.id,k.tipkomponente,k.opcija, pk.predmet from ispit as i, komponenta as k, ponudakursa as pk, student_predmet as sp where i.id={$ispit} and i.komponenta=k.id and i.predmet=pk.predmet and i.akademska_godina=pk.akademska_godina and sp.predmet=pk.id and sp.student={$stud_id}");
                } else {
                    $q40 = myquery("select np.nivo_pristupa,pk.id,k.maxbodova,k.id,k.tipkomponente,k.opcija, pk.predmet from nastavnik_predmet as np, ispit as i, komponenta as k, ponudakursa as pk, student_predmet as sp where np.nastavnik={$userid} and np.predmet=i.predmet and np.akademska_godina=i.akademska_godina and pk.predmet=i.predmet and pk.akademska_godina=i.akademska_godina and i.id={$ispit} and i.komponenta=k.id and sp.predmet=pk.id and sp.student={$stud_id}");
                }
                if (mysql_num_rows($q40) < 1) {
                    zamgerlog("AJAH ispit - nepoznat ispit {$ispit} ili niste saradnik", 3);
                    zamgerlog2("ispit - nepoznat ispit ili nije saradnik", $ispit);
                    print "nepoznat ispit {$ispit} ili niste saradnik na predmetu";
                    break;
                }
                if (mysql_result($q40, 0, 0) != "asistent") {
                    $padmin = 1;
                }
                $ponudakursa = mysql_result($q40, 0, 1);
                $max = mysql_result($q40, 0, 2);
                // Potrebno za update komponenti:
                $komponenta = mysql_result($q40, 0, 3);
                $tipkomponente = mysql_result($q40, 0, 4);
                $kopcija = mysql_result($q40, 0, 5);
                $predmet = mysql_result($q40, 0, 6);
            } else {
                if ($ime == "fiksna") {
                    $stud_id = intval($parametri[1]);
                    $predmet = intval($parametri[2]);
                    $komponenta = intval($parametri[3]);
                    $ag = intval($parametri[4]);
                    // TODO: provjeriti da li komponenta postoji na predmetu
                    $q40a = myquery("select maxbodova from komponenta where id={$komponenta} and tipkomponente=5");
                    if (mysql_num_rows($q40a) != 1) {
                        zamgerlog("AJAH fiksna - nepoznata fiksna komponenta {$komponenta}", 3);
                        zamgerlog2("fiksna - nepoznata fiksna komponenta", $komponenta);
                        print "nepoznata fiksna komponenta {$komponenta}";
                        break;
                    }
                    $max = mysql_result($q40a, 0, 0);
                    if (!$user_siteadmin) {
                        $q40b = myquery("select count(*) from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}");
                        if (mysql_num_rows($q40b) < 1) {
                            zamgerlog("AJAH fiksna - nije na predmetu pp{$predmet}, ag{$ag}", 3);
                            zamgerlog2("nije saradnik na predmetu (fiksna)", $predmet, $ag);
                            print "niste saradnik na predmetu";
                            break;
                        }
                    }
                    $padmin = 1;
                    // Dozvoljavamo saradnicima da unose fiksne komponente
                } else {
                    if ($ime == "ko" || $ime == "kodatum") {
                        // konacna ocjena
                        $stud_id = intval($parametri[1]);
                        if ($ime == "ko" && $vrijednost != "/") {
                            $vrijednost = intval($vrijednost);
                        }
                        // zaokruzujemo
                        $predmet = intval($parametri[2]);
                        $ag = intval($parametri[3]);
                        $max = 10;
                        if (!$user_siteadmin && !$user_studentska) {
                            $q41 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}");
                            if (mysql_num_rows($q41) < 1) {
                                zamgerlog("AJAH ispit/ko - niste saradnik (ispit pp{$predmet}, ag{$ag})", 3);
                                zamgerlog2("nije saradnik na predmetu (ispit/ko)", $predmet, $ag);
                                print "niste saradnik na predmetu {$predmet}";
                                break;
                            }
                            if (mysql_result($q41, 0, 0) == "nastavnik") {
                                $padmin = 1;
                            }
                        }
                    }
                }
            }
            if ($padmin == 0 && !$user_siteadmin && !$user_studentska) {
                zamgerlog("AJAH ispit - pogresne privilegije (ispit i{$ispit})", 3);
                zamgerlog2("ispit - pogresne privilegije", $ispit);
                print "niste nastavnik na predmetu {$predmet} niti admin!";
                break;
            }
            // Da li je student na predmetu?
            $q45 = myquery("select count(*) from student_predmet as sp, ponudakursa as pk where sp.student={$stud_id} and sp.predmet=pk.id and pk.predmet={$predmet}");
            if (mysql_result($q45, 0, 0) < 1) {
                zamgerlog("AJAH ispit - student u{$stud_id} ne slusa predmet pp{$predmet} (ispit i{$ispit})", 3);
                zamgerlog2("ispit - student ne slusa predmet", $stud_id, $ispit);
                print "student {$stud_id} ne sluša predmet {$predmet}";
                break;
            }
            // Maksimalan i minimalan broj bodova
            if ($ime != "kodatum" && $vrijednost > $max) {
                zamgerlog("AJAH ispit - vrijednost {$vrijednost} > max {$max}", 3);
                zamgerlog2("ispit - vrijednost > max", $stud_id, intval($ispit), 0, "{$vrijednost} > {$max}");
                if ($ime == "ko") {
                    print "stavili ste ocjenu veću od 10";
                } else {
                    print "maksimalan broj bodova je {$max}, a unijeli ste {$vrijednost}";
                }
                break;
            }
            if ($ime == "ko" && $vrijednost < 6 && $vrijednost !== "/") {
                zamgerlog("AJAH ispit - konacna ocjena manja od 6 ({$vrijednost})", 3);
                zamgerlog2("ispit - konacna ocjena manja od 6", 0, 0, 0, $vrijednost);
                print "stavili ste ocjenu manju od 6";
                break;
            }
            if ($ime == "kodatum") {
                // Parsiranje datuma
                if (!preg_match("/(\\d+).*?(\\d+).*?(\\d+)/", $vrijednost, $matches)) {
                    zamgerlog("AJAH ispit - datum konacne ocjene nije u trazenom formatu ({$vrijednost})", 3);
                    zamgerlog2("ispit - datum konacne ocjene nije u trazenom formatu", 0, 0, 0, $vrijednost);
                    print "los format datuma";
                    break;
                }
                $dan = $matches[1];
                $mjesec = $matches[2];
                $godina = $matches[3];
                if ($godina < 100) {
                    if ($godina < 50) {
                        $godina += 2000;
                    } else {
                        $godina += 1900;
                    }
                }
                if ($godina < 1000) {
                    if ($godina < 900) {
                        $godina += 2000;
                    } else {
                        $godina += 1000;
                    }
                }
                if (!checkdate($mjesec, $dan, $godina)) {
                    zamgerlog("AJAH ispit - datum konacne ocjene je nemoguc ({$vrijednost})", 3);
                    zamgerlog2("ispit - datum konacne ocjene je nemoguc", 0, 0, 0, $vrijednost);
                    print "uneseni datum {$dan}. {$mjesec}. {$godina} je kalendarski nemoguc";
                    break;
                }
                $novidatum = mktime(0, 0, 0, $mjesec, $dan, $godina);
                if ($novidatum === false) {
                    zamgerlog("AJAH ispit - datum konacne ocjene je neispravan ({$vrijednost})", 3);
                    zamgerlog2("ispit - datum konacne ocjene je nemoguc", 0, 0, 0, $vrijednost);
                    print "uneseni datum {$dan}. {$mjesec}. {$godina} nije ispravan";
                    break;
                }
            }
            // Ažuriranje podataka u bazi
            if ($ime == "ispit") {
                $q50 = myquery("select ocjena from ispitocjene where ispit={$ispit} and student={$stud_id}");
                $c = mysql_num_rows($q50);
                if ($c == 0 && $vrijednost !== "/") {
                    $q60 = myquery("insert into ispitocjene set ispit={$ispit}, student={$stud_id}, ocjena={$vrijednost}");
                    zamgerlog("AJAH ispit - upisan novi rezultat {$vrijednost} (ispit i{$ispit}, student u{$stud_id})", 4);
                    // nivo 4: audit
                    zamgerlog2("upisan rezultat ispita", $stud_id, $ispit, 0, $vrijednost);
                    // nivo 4: audit
                } else {
                    if ($c > 0 && $vrijednost === "/") {
                        $staraocjena = mysql_result($q50, 0, 0);
                        $q60 = myquery("delete from ispitocjene where ispit={$ispit} and student={$stud_id}");
                        zamgerlog("AJAH ispit - izbrisan rezultat {$staraocjena} (ispit i{$ispit}, student u{$stud_id})", 4);
                        // nivo 4: audit
                        zamgerlog2("izbrisan rezultat ispita", $stud_id, $ispit, 0, $staraocjena);
                        // nivo 4: audit
                    } else {
                        if ($c > 0) {
                            $staraocjena = mysql_result($q50, 0, 0);
                            $q60 = myquery("update ispitocjene set ocjena={$vrijednost} where ispit={$ispit} and student={$stud_id}");
                            zamgerlog("AJAH ispit - izmjena rezultata {$staraocjena} u {$vrijednost} (ispit i{$ispit}, student u{$stud_id})", 4);
                            // nivo 4: audit
                            zamgerlog2("izmjenjen rezultat ispita", $stud_id, $ispit, 0, "{$staraocjena} -> {$vrijednost}");
                            // nivo 4: audit
                        }
                    }
                }
                update_komponente($stud_id, $ponudakursa, $komponenta);
            } else {
                if ($ime == "fiksna") {
                    // Odredjujemo ponudukursa zbog tabele komponentebodovi
                    $q62 = myquery("select pk.id from student_predmet as sp, ponudakursa as pk where sp.student={$stud_id} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}");
                    $ponudakursa = mysql_result($q62, 0, 0);
                    $q63 = myquery("delete from komponentebodovi where student={$stud_id} and predmet={$ponudakursa} and komponenta={$komponenta}");
                    if ($vrijednost != "/") {
                        $q66 = myquery("insert into komponentebodovi set student={$stud_id}, predmet={$ponudakursa}, komponenta={$komponenta}, bodovi={$vrijednost}");
                    }
                    zamgerlog("AJAH fiksna - upisani bodovi {$vrijednost} za fiksnu komponentu {$komponenta} (predmet pp{$predmet}, student u{$stud_id})", 4);
                    zamgerlog2("izmjena bodova za fiksnu komponentu", intval($stud_id), intval($ponudakursa), intval($komponenta), $vrijednost);
                } else {
                    if ($ime == "ko") {
                        // Konacna ocjena
                        // Ne koristimo REPLACE i slicno zbog logginga
                        $q70 = myquery("select ocjena from konacna_ocjena where predmet={$predmet} and student={$stud_id}");
                        $c = mysql_num_rows($q70);
                        if ($c == 0 && $vrijednost != "/") {
                            // Određivanje datuma za indeks
                            $q105 = myquery("SELECT UNIX_TIMESTAMP(it.datumvrijeme) \n\t\t\tFROM ispit as i, ispit_termin as it, student_ispit_termin as sit \n\t\t\tWHERE sit.student={$stud_id} and sit.ispit_termin=it.id and it.ispit=i.id and i.predmet={$predmet} and i.akademska_godina={$ag}\n\t\t\tORDER BY i.datum DESC LIMIT 1");
                            if (mysql_num_rows($q105) > 0) {
                                $datum_u_indeksu = mysql_result($q105, 0, 0);
                                if ($datum_u_indeksu > time()) {
                                    $datum_provjeren = 0;
                                } else {
                                    $datum_provjeren = 1;
                                }
                            } else {
                                $datum_u_indeksu = time();
                                $datum_provjeren = 0;
                            }
                            $q80 = myquery("insert into konacna_ocjena set predmet={$predmet}, akademska_godina={$ag}, student={$stud_id}, ocjena={$vrijednost}, datum=NOW(), datum_u_indeksu=FROM_UNIXTIME({$datum_u_indeksu}), datum_provjeren={$datum_provjeren}");
                            zamgerlog("AJAH ko - dodana ocjena {$vrijednost} (predmet pp{$predmet}, student u{$stud_id})", 4);
                            // nivo 4: audit
                            zamgerlog2("dodana ocjena", $stud_id, $predmet, $ag, $vrijednost);
                        } else {
                            if ($c > 0 && $vrijednost == "/") {
                                $staraocjena = mysql_result($q70, 0, 0);
                                $q80 = myquery("delete from konacna_ocjena where predmet={$predmet} and student={$stud_id}");
                                zamgerlog("AJAH ko - obrisana ocjena {$staraocjena} (predmet pp{$predmet}, student u{$stud_id})", 4);
                                // nivo 4: audit
                                zamgerlog2("obrisana ocjena", $stud_id, $predmet, $ag, $staraocjena);
                            } else {
                                if ($c > 0) {
                                    $staraocjena = mysql_result($q70, 0, 0);
                                    $q80 = myquery("update konacna_ocjena set ocjena={$vrijednost}, datum=NOW() where predmet={$predmet} and student={$stud_id}");
                                    zamgerlog("AJAH ko - izmjena ocjene {$staraocjena} u {$vrijednost} (predmet pp{$predmet}, student u{$stud_id})", 4);
                                    // nivo 4: audit
                                    zamgerlog2("izmjena ocjene", $stud_id, $predmet, $ag, "{$staraocjena} -> {$vrijednost}");
                                }
                            }
                        }
                    } else {
                        if ($ime == "kodatum") {
                            // AJAH "kodatum" je uvijek promjena
                            $q85 = myquery("select UNIX_TIMESTAMP(datum_u_indeksu), datum_provjeren from konacna_ocjena where predmet={$predmet} and student={$stud_id}");
                            if (mysql_num_rows($q85) == 0) {
                                print "ne moze se mijenjati datum dok se ne unese ocjena";
                                break;
                            }
                            $staridatum = mysql_result($q85, 0, 0);
                            $datum_provjeren = mysql_result($q85, 0, 1);
                            if ($staridatum != $novidatum || $datum_provjeren == 0) {
                                $q87 = myquery("update konacna_ocjena set datum_u_indeksu=FROM_UNIXTIME({$novidatum}), datum_provjeren=1 where predmet={$predmet} and student={$stud_id}");
                                zamgerlog("AJAH kodatum - promijenjen datum u indeksu (predmet pp{$predmet}, student u{$stud_id})", 4);
                                zamgerlog2("promijenjen datum ocjene", $stud_id, $predmet, $ag, date("d.m.Y", $novidatum));
                            }
                        }
                    }
                }
            }
            print "OK";
            break;
        case "pretraga":
            if ($userid == 0) {
                zamgerlog("AJAH pretraga - istekla sesija", 3);
                // nivo 3 - greska
                zamgerlog2("pretraga - istekla sesija");
                // nivo 3 - greska
                print "Vasa sesija je istekla. Pritisnite dugme Refresh da se ponovo prijavite.";
                break;
            }
            $ime = my_escape($_REQUEST['ime']);
            if (!preg_match("/\\w/", $ime)) {
                print "OK";
                return;
            }
            $ime = str_replace("(", "", $ime);
            $ime = str_replace(")", "", $ime);
            $imena = explode(" ", $ime);
            $upit = "";
            foreach ($imena as $dio) {
                if ($upit != "") {
                    $upit .= " and ";
                }
                $upit .= "(o.ime like '%{$dio}%' or o.prezime like '%{$dio}%' or a.login like '%{$dio}%' or o.brindexa like '%{$dio}%')";
            }
            $q10 = myquery("select a.login, o.ime, o.prezime from auth as a, osoba as o where a.id=o.id and {$upit} order by o.prezime, o.ime");
            $redova = 0;
            while ($r10 = mysql_fetch_row($q10)) {
                if (strlen($r10[0]) < 2) {
                    continue;
                }
                $primalac = "{$r10['0']} ({$r10['1']} {$r10['2']})";
                print "{$primalac}\n";
                $redova++;
                if ($redova > 10) {
                    break;
                }
            }
            if ($redova == 0) {
                print "Nema rezultata\n";
            }
            print "OK";
            break;
            // Unos bodova sa prijemnog
        // Unos bodova sa prijemnog
        case "prijemni_unos":
            if ($userid == 0) {
                zamgerlog("AJAH prijemni - istekla sesija", 3);
                // nivo 3 - greska
                zamgerlog2("prijemni - istekla sesija");
                // nivo 3 - greska
                print "Vasa sesija je istekla. Pritisnite dugme Refresh da se ponovo prijavite.";
                break;
            }
            if (!$user_studentska && !$user_siteadmin) {
                zamgerlog("AJAH prijemni - korisnik nije studentska sluzba ", 3);
                // nivo 3 - greska
                zamgerlog2("prijemni - korisnik nije studentska sluzba");
                // nivo 3 - greska
                print "niste studentska sluzba";
                break;
            }
            $osoba = intval($_REQUEST['osoba']);
            $termin = intval($_REQUEST['termin']);
            $vrijednost = floatval(str_replace(",", ".", $_REQUEST['vrijednost']));
            $q100 = myquery("select count(*) from prijemni_prijava where osoba={$osoba} and prijemni_termin={$termin}");
            if (mysql_result($q100, 0, 0) == 0) {
                print "Nepoznat id {$id}";
                break;
            }
            // Dodati provjeru rezultata prijemnog...
            if ($_REQUEST['vrijednost'] == "/") {
                $q110 = myquery("update prijemni_prijava set rezultat=0, izasao=0 where osoba={$osoba} and prijemni_termin={$termin}");
            } else {
                $q110 = myquery("update prijemni_prijava set rezultat={$vrijednost}, izasao=1 where osoba={$osoba} and prijemni_termin={$termin}");
            }
            print "OK";
            zamgerlog("upisan rezultat na prijemnom za u{$osoba}, termin {$termin} ({$vrijednost})", 2);
            zamgerlog2("upisan rezultat na prijemnom", $osoba, $termin, 0, $vrijednost);
            break;
            // Unos ocjena tokom srednje skole za prijemni
        // Unos ocjena tokom srednje skole za prijemni
        case "prijemni_ocjene":
            if ($userid == 0) {
                zamgerlog("AJAH prijemni - istekla sesija", 3);
                // nivo 3 - greska
                zamgerlog2("prijemni - istekla sesija");
                // nivo 3 - greska
                print "Vasa sesija je istekla. Pritisnite dugme Refresh da se ponovo prijavite.";
                break;
            }
            if (!$user_studentska && !$user_siteadmin) {
                zamgerlog("AJAH prijemni - korisnik nije studentska sluzba ", 3);
                // nivo 3 - greska
                zamgerlog2("prijemni - korisnik nije studentska sluzba");
                // nivo 3 - greska
                print "niste studentska sluzba";
                break;
            }
            $osoba = intval($_REQUEST['osoba']);
            $nova = intval($_REQUEST['nova']);
            $stara = intval($_REQUEST['stara']);
            $razred = intval($_REQUEST['razred']);
            $tipocjene = intval($_REQUEST['tipocjene']);
            $rednibroj = intval($_REQUEST['rednibroj']);
            // Pretpostavljamo da je id osobe tačan
            // Glupost :( ali šta se može kad se ocjene moraju unositi prije nego što se registruje osoba
            /*	$q100 = myquery("select count(*) from osoba where id=$osoba");
            	if (mysql_result($q100,0,0)==0)  {
            		print "Nepoznat id $prijemni";
            		break;
            	}*/
            if ($_REQUEST['subakcija'] != "obrisi" && $_REQUEST['subakcija'] != "izmijeni" && $_REQUEST['subakcija'] != "dodaj") {
                print "Nepoznata akcija: " . my_escape($_REQUEST['akcija']);
                break;
            }
            if ($_REQUEST['subakcija'] == "obrisi" || $_REQUEST['subakcija'] == "izmijeni") {
                $q200 = myquery("delete from srednja_ocjene where osoba={$osoba} and razred={$razred} and ocjena={$stara} and tipocjene={$tipocjene} and redni_broj={$rednibroj} limit 1");
            }
            if ($_REQUEST['subakcija'] == "dodaj" || $_REQUEST['subakcija'] == "izmijeni") {
                $q200 = myquery("insert into srednja_ocjene set osoba={$osoba}, razred={$razred}, ocjena={$nova}, tipocjene={$tipocjene}, redni_broj={$rednibroj}");
            }
            print "OK";
            break;
            // Unos ocjena u prošlom ciklusu studija za prijemni
        // Unos ocjena u prošlom ciklusu studija za prijemni
        case "prosli_ciklus_ocjena":
            if ($userid == 0) {
                zamgerlog("AJAH prijemni - istekla sesija", 3);
                // nivo 3 - greska
                zamgerlog2("prijemni - istekla sesija");
                // nivo 3 - greska
                print "Vasa sesija je istekla. Pritisnite dugme Refresh da se ponovo prijavite.";
                break;
            }
            if (!$user_studentska && !$user_siteadmin) {
                zamgerlog("AJAH prijemni - korisnik nije studentska sluzba ", 3);
                // nivo 3 - greska
                zamgerlog2("prijemni - korisnik nije studentska sluzba");
                // nivo 3 - greska
                print "niste studentska sluzba";
                break;
            }
            $osoba = intval($_REQUEST['osoba']);
            $nova = intval($_REQUEST['nova']);
            $rednibroj = intval($_REQUEST['rednibroj']);
            // nece biti nula
            $q100 = myquery("select count(*) from osoba where id={$osoba}");
            if (mysql_result($q100, 0, 0) == 0) {
                print "Nepoznata osoba {$osoba}";
                break;
            }
            if ($nova == 0) {
                $q140 = myquery("delete from prosliciklus_ocjene where osoba={$osoba} and redni_broj={$rednibroj}");
            } else {
                if ($nova < 6 || $nova > 10) {
                    print "Ocjena nije u opsegu 6-10";
                    break;
                } else {
                    $q110 = myquery("select count(*) from prosliciklus_ocjene where osoba={$osoba} and redni_broj={$rednibroj}");
                    if (mysql_result($q110, 0, 0) == 0) {
                        $q120 = myquery("insert into prosliciklus_ocjene set osoba={$osoba}, redni_broj={$rednibroj}, ocjena={$nova}");
                    } else {
                        $q130 = myquery("update prosliciklus_ocjene set ocjena={$nova} where osoba={$osoba} and redni_broj={$rednibroj}");
                    }
                }
            }
            print "OK";
            break;
            // Unos ECTS bodova u prošlom ciklusu studija za prijemni
        // Unos ECTS bodova u prošlom ciklusu studija za prijemni
        case "prosli_ciklus_ects":
            // 1500,5 / 157,5 = 9,52698413 / 6 = 1,58783069
            if ($userid == 0) {
                zamgerlog("AJAH prijemni - istekla sesija", 3);
                // nivo 3 - greska
                zamgerlog2("prijemni - istekla sesija");
                // nivo 3 - greska
                print "Vasa sesija je istekla. Pritisnite dugme Refresh da se ponovo prijavite.";
                break;
            }
            if (!$user_studentska && !$user_siteadmin) {
                zamgerlog("AJAH prijemni - korisnik nije studentska sluzba ", 3);
                // nivo 3 - greska
                zamgerlog2("prijemni - korisnik nije studentska sluzba");
                // nivo 3 - greska
                print "niste studentska sluzba";
                break;
            }
            $osoba = intval($_REQUEST['osoba']);
            $nova = floatval($_REQUEST['nova']);
            $rednibroj = intval($_REQUEST['rednibroj']);
            // nece biti nula
            $q100 = myquery("select count(*) from osoba where id={$osoba}");
            if (mysql_result($q100, 0, 0) == 0) {
                print "Nepoznata osoba {$osoba}";
                break;
            }
            if ($nova == 0) {
                $q140 = myquery("delete from prosliciklus_ocjene where osoba={$osoba} and redni_broj={$rednibroj}");
            } else {
                $q110 = myquery("select count(*) from prosliciklus_ocjene where osoba={$osoba} and redni_broj={$rednibroj}");
                if (mysql_result($q110, 0, 0) == 0) {
                    $q120 = myquery("insert into prosliciklus_ocjene set osoba={$osoba}, redni_broj={$rednibroj}, ects={$nova}");
                } else {
                    $q130 = myquery("update prosliciklus_ocjene set ects={$nova} where osoba={$osoba} and redni_broj={$rednibroj}");
                }
            }
            print "OK";
            break;
        case "spisak_predmeta":
            $ag = intval($_REQUEST['ag']);
            $studij = intval($_REQUEST['studij']);
            $semestar = intval($_REQUEST['semestar']);
            $q4 = myquery("select p.id,p.naziv,pk.akademska_godina from predmet as p, ponudakursa as pk where pk.predmet=p.id and pk.akademska_godina={$ag} and pk.studij={$studij} and pk.semestar={$semestar} order by p.naziv");
            while ($r4 = mysql_fetch_row($q4)) {
                print "{$r4['0']} {$r4['1']}|";
            }
            print "OK";
            break;
        default:
            # Testna poruka
            ?>

Wellcome to ajah :)

<?php 
    }
}
示例#4
0
function saradnik_student()
{
    global $userid, $user_siteadmin, $conf_ldap_domain;
    require "lib/manip.php";
    // radi ispisa studenta sa predmeta
    print '<p><a href="index.php?sta=saradnik/intro">Spisak predmeta i grupa</a></p>' . "\n";
    // Ulazni parametri
    $student = intval($_REQUEST['student']);
    $predmet = intval($_REQUEST['predmet']);
    $ag = intval($_REQUEST['ag']);
    // Provjera ulaznih podataka i podaci za naslov
    // Student
    $q40 = myquery("select ime, prezime, brindexa, slika from osoba where id={$student}");
    if (mysql_num_rows($q40) < 1) {
        biguglyerror("Nepoznat student");
        zamgerlog("nepoznat student {$student}", 3);
        zamgerlog2("nepoznat student", $student);
        return;
    }
    $ime = mysql_result($q40, 0, 0);
    $prezime = mysql_result($q40, 0, 1);
    $brindexa = mysql_result($q40, 0, 2);
    $slika = mysql_result($q40, 0, 3);
    $mailprint = "";
    $q45 = myquery("SELECT adresa FROM email WHERE osoba={$student} ORDER BY sistemska DESC, id");
    while ($r45 = mysql_fetch_row($q45)) {
        if ($mailprint) {
            $mailprint .= ", ";
        }
        $mailprint .= "<a href=\"mailto:{$r45['0']}\">{$r45['0']}</a>";
    }
    // Predmet
    $q5 = myquery("select naziv from predmet where id={$predmet}");
    if (mysql_num_rows($q5) < 1) {
        biguglyerror("Nepoznat predmet");
        zamgerlog("nepoznat predmet {$predmet}", 3);
        return;
    }
    $nazivpredmeta = mysql_result($q5, 0, 0);
    $q15 = myquery("SELECT tippredmeta FROM akademska_godina_predmet WHERE akademska_godina={$ag} AND predmet={$predmet}");
    $tippredmeta = mysql_result($q15, 0, 0);
    if ($tippredmeta == 1000) {
        $q4 = myquery("SELECT id FROM zavrsni WHERE student={$student} AND predmet={$predmet} AND akademska_godina={$ag}");
        if (mysql_num_rows($q4) > 0) {
            $zavrsni = mysql_result($q4, 0, 0);
            ?>
		<script language="JavaScript">
		location.href='?sta=nastavnik/zavrsni&akcija=zavrsni_stranica&zavrsni=<?php 
            echo $zavrsni;
            ?>
&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
';
		</script>
		<?php 
            return;
        }
    }
    // Akademska godina
    $q6 = myquery("select naziv from akademska_godina where id={$ag}");
    if (mysql_num_rows($q6) < 1) {
        biguglyerror("Nepoznata akademska godina");
        zamgerlog("nepoznata ag {$ag}", 3);
        zamgerlog2("nepoznata ag", $ag);
        return;
    }
    $nazivag = mysql_result($q6, 0, 0);
    // Da li student sluša predmet
    $q7 = myquery("select pk.id, pk.semestar from student_predmet as sp, ponudakursa as pk, studij as s where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and pk.studij=s.id");
    if (mysql_num_rows($q7) < 1) {
        biguglyerror("Student nije upisan na ovaj predmet");
        zamgerlog("student u{$student} ne slusa predmet pp{$predmet} ag{$ag}", 3);
        zamgerlog2("id studenta i predmeta ne odgovaraju", $student, $predmet, $ag);
        return;
    }
    $ponudakursa = mysql_result($q7, 0, 0);
    $semestar = mysql_result($q7, 0, 1);
    // Koji studij student sluša, koji put
    $q8 = myquery("select s.naziv, ss.semestar, ns.naziv, ss.ponovac from student_studij as ss, studij as s, nacin_studiranja as ns where ss.student={$student} and ss.akademska_godina={$ag} and ss.semestar mod 2 = " . $semestar % 2 . " and ss.studij=s.id and ss.nacin_studiranja=ns.id");
    if (mysql_num_rows($q8) < 1) {
        $q8 = myquery("select s.naziv, ss.semestar, ns.naziv, ss.ponovac from student_studij as ss, studij as s, nacin_studiranja as ns where ss.student={$student} and ss.akademska_godina={$ag} and ss.semestar mod 2 = 1 and ss.studij=s.id and ss.nacin_studiranja=ns.id");
    }
    if (mysql_num_rows($q8) < 1) {
        $nazivstudija = "Nije upisan na studij!";
        $kolpren = $ponovac = $nacin_studiranja = "";
    } else {
        $nazivstudija = mysql_result($q8, 0, 0);
        if (mysql_result($q8, 0, 1) < $semestar) {
            $kolpren = ", kolizija";
        } else {
            if (mysql_result($q8, 0, 1) > $semestar) {
                $kolpren = ", prenio predmet";
            } else {
                $kolpren = "";
            }
        }
        $semestar = mysql_result($q8, 0, 1);
        $nacin_studiranja = mysql_result($q8, 0, 2);
        if (mysql_result($q8, 0, 3) == 1) {
            $ponovac = ", ponovac";
        } else {
            $ponovac = "";
        }
    }
    $q9 = myquery("select ag.id, ag.naziv from student_predmet as sp, ponudakursa as pk, akademska_godina as ag where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina<{$ag} and pk.akademska_godina=ag.id order by ag.id");
    if (mysql_num_rows($q9) > 0) {
        $kojiput = "(" . (mysql_num_rows($q9) + 1) . ". put sluša predmet)";
        $dosjei = "&nbsp;&nbsp;&nbsp;&nbsp;Pogledajte dosje za: ";
        $zarez = 0;
        while ($r9 = mysql_fetch_row($q9)) {
            if ($zarez == 0) {
                $zarez = 1;
            } else {
                $dosjei .= ", ";
            }
            $dosjei .= "<a href=\"?sta=saradnik/student&student={$student}&predmet={$predmet}&ag={$r9['0']}\">{$r9['1']}</a>";
        }
        $dosjei .= "<br />\n";
    } else {
        $kojiput = "";
        $dosjei = "";
    }
    // U kojoj je grupi student
    $q20 = myquery("select l.id, l.naziv from student_labgrupa as sl, labgrupa as l where sl.student={$student} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag} order by l.virtualna");
    if (mysql_num_rows($q20) > 0) {
        $labgrupa = mysql_result($q20, 0, 0);
        $lgnaziv = mysql_result($q20, 0, 1);
    } else {
        $labgrupa = 0;
        // Nema labgrupa ili nije ni u jednoj
    }
    // Provjera prava pristupa
    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) {
            biguglyerror("Nemate pravo pristupa ovom studentu");
            zamgerlog("nastavnik nije na predmetu (pp{$predmet} ag{$ag})", 3);
            zamgerlog2("nije saradnik na predmetu", $predmet, $ag);
            return;
        }
        $privilegija = mysql_result($q10, 0, 0);
        // Provjera ogranicenja
        $q30 = myquery("select o.labgrupa from ogranicenje as o, labgrupa as l, student_labgrupa as sl where o.nastavnik={$userid} and o.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}");
        if (mysql_num_rows($q30) > 0) {
            $nasao = 0;
            while ($r30 = mysql_fetch_row($q30)) {
                if ($r30[0] == $labgrupa) {
                    $nasao = 1;
                    break;
                }
            }
            if ($nasao == 0) {
                biguglyerror("Student je u grupi za koju vam je ograničen pristup");
                zamgerlog("ogranicenje na labgrupu g{$labgrupa}", 3);
                zamgerlog2("ima ogranicenje na labgrupu", intval($labgrupa));
                return;
            }
        }
    }
    // ----  AKCIJE
    // Akcija: ispis studenta sa predmeta
    if ($_GET['akcija'] == "ispis" && $user_siteadmin) {
        ispis_studenta_sa_predmeta($student, $predmet, $ag);
        zamgerlog("student ispisan sa predmeta (student u{$student} predmet pp{$predmet})", 4);
        // nivo 4: audit
        zamgerlog2("student ispisan sa predmeta", $student, $predmet, $ag);
        nicemessage("Student ispisan sa predmeta.");
        return;
    }
    if ($_POST['akcija'] == "promjena_grupe" && check_csrf_token()) {
        $novagrupa = intval($_POST['grupa']);
        $staragrupa = 0;
        // Da li je student u nekoj grupi i u kojoj?
        //   (Ne smijemo se osloniti na vrijednost varijable $labgrupa jer
        //   to može biti virtualna grupa iz koje ga ne smijemo ispisati)
        $q53 = myquery("select l.id, l.naziv from student_labgrupa as sl, labgrupa as l where sl.student={$student} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag} and l.virtualna=0");
        if (mysql_num_rows($q53) > 0) {
            $staragrupa = mysql_result($q53, 0, 0);
            $naziv_stare_grupe = mysql_result($q53, 0, 1);
            if ($novagrupa == $staragrupa) {
                nicemessage("Student se već nalazi u grupi {$naziv_stare_grupe}!");
                print '<a href="?sta=saradnik/student&student=' . $student . '&predmet=' . $predmet . '&ag=' . $ag . '">Nazad</a>' . "\n";
                return;
            }
            ispis_studenta_sa_labgrupe($student, $staragrupa);
            nicemessage("Student ispisan iz grupe {$naziv_stare_grupe}. Podaci o prisustvu su izgubljeni.");
        }
        if ($novagrupa > 0) {
            $q55 = myquery("insert into student_labgrupa set student={$student}, labgrupa={$novagrupa}");
            $q57 = myquery("select naziv from labgrupa where id={$novagrupa}");
            nicemessage("Student upisan u grupu " . mysql_result($q57, 0, 0) . ". Kreirani su default podaci o prisustvu.");
        }
        // Potrebno je updatovati komponentu za prisustvo jer su podaci sada promijenjeni
        $q4 = myquery("select k.id from tippredmeta_komponenta as tpk,komponenta as k, akademska_godina_predmet as agp where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and k.tipkomponente=3");
        while ($r4 = mysql_fetch_row($q4)) {
            update_komponente($student, $ponudakursa, $r4[0]);
        }
        // Pametni logging
        if ($staragrupa > 0 && $novagrupa > 0) {
            zamgerlog("student u{$student} prebacen iz grupe g{$staragrupa} u g{$novagrupa}", 2);
            // 2 = edit
            zamgerlog2("promijenjena grupa studenta", $student, $novagrupa, 0, $staragrupa);
        } else {
            if ($staragrupa > 0) {
                zamgerlog("student u{$student} ispisan iz grupe g{$staragrupa}", 2);
                zamgerlog2("student ispisan sa grupe", $student, intval($staragrupa));
            } else {
                zamgerlog("student u{$student} upisan u grupu g{$novagrupa}", 2);
                zamgerlog2("student upisan u grupu", $student, $novagrupa);
            }
        }
        // Linkovi za dalje
        print "<p>Gdje želite sada ići?:<br />\n";
        if ($staragrupa > 0) {
            print '- <a href="?sta=saradnik/grupa&id=' . $staragrupa . '">Spisak studenata u grupi ' . mysql_result($q53, 0, 1) . '</a><br />' . "\n";
        } else {
            print '- <a href="?sta=saradnik/grupa&predmet=' . $predmet . '&ag=' . $ag . '">Spisak svih studenata na predmetu</a><br />' . "\n";
        }
        // Ovo je jedini slučaj kad $staragrupa može biti nula
        if ($novagrupa > 0) {
            print '- <a href="?sta=saradnik/grupa&id=' . $novagrupa . '">Spisak studenata u grupi ' . mysql_result($q57, 0, 0) . '</a><br />' . "\n";
        }
        print '- <a href="?sta=saradnik/student&student=' . $student . '&predmet=' . $predmet . '&ag=' . $ag . '">Nazad na detalje studenta ' . $ime . ' ' . $prezime . '</a>' . "\n";
        return;
    }
    if ($_GET['akcija'] == "ponisti_kviz") {
        $kviz = intval($_REQUEST['kviz']);
        $q2000 = myquery("DELETE FROM kviz_student WHERE student={$student} AND kviz={$kviz}");
    }
    // --- ISPIS
    if ($slika != "") {
        print "<img src=\"?sta=common/slika&osoba={$student}\" align=\"left\" style=\"margin: 10px\">\n";
    }
    // Određujemo username radi slanja poruke
    $poruka_link = "";
    $q59 = myquery("select login from auth where id={$student}");
    if (mysql_num_rows($q59) > 0) {
        $poruka_link = "<br><a href=\"?sta=common/inbox&akcija=compose&primalac=" . mysql_result($q59, 0, 0) . "\">Pošaljite Zamger poruku</a>";
    }
    // Naslov
    ?>
<h1><?php 
    echo $ime;
    ?>
 <?php 
    echo $prezime;
    ?>
 (<?php 
    echo $brindexa;
    ?>
)</h1>
<p>Upisan na (<?php 
    echo $nazivag;
    ?>
): <b><?php 
    echo $nazivstudija;
    ?>
, <?php 
    echo $semestar;
    ?>
. semestar <?php 
    echo $ponovac;
    ?>
 <?php 
    echo $kolpren;
    ?>
 <?php 
    echo $kojiput;
    ?>
</b>
<br />
<?php 
    echo $dosjei;
    ?>
<b>Email: <?php 
    echo $mailprint;
    echo $poruka_link;
    ?>
</b></p>
<h3>Predmet: <?php 
    echo $nazivpredmeta;
    ?>
 <br />
<?php 
    if ($labgrupa > 0) {
        print "Grupa: <a href=\"?sta=saradnik/grupa&id={$labgrupa}\">{$lgnaziv}</a>";
    } else {
        print "(nije ni u jednoj grupi)";
    }
    ?>
</h3>
<?php 
    // Promjena grupe
    $q60 = myquery("select id,naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=0 order by naziv");
    if (mysql_num_rows($q60) > 0) {
        ?>
	<?php 
        echo genform("POST");
        ?>
	<input type="hidden" name="akcija" value="promjena_grupe">
	<p>Promijenite grupu: 
	<select name="grupa" class="default"><option value="0"<?php 
        echo $nijedna;
        ?>
>-- Nije ni u jednoj grupi --</option>
	<?php 
        while ($r60 = mysql_fetch_row($q60)) {
            if ($r60[0] == $labgrupa) {
                $value = "SELECTED";
            } else {
                $value = "";
            }
            ?>
		<option value="<?php 
            echo $r60[0];
            ?>
" <?php 
            echo $value;
            ?>
><?php 
            echo $r60[1];
            ?>
</option>
		<?php 
        }
        ?>
	</select>
	<input type="submit" value=" Promijeni grupu " class="default">
	</form>
	<?php 
    }
    // PROGRESS BAR
    // Kod kopiran iz student/predmet - trebalo bi izdvojiti u lib
    $q30 = myquery("select kb.bodovi, k.maxbodova, k.tipkomponente, k.id from komponentebodovi as kb, komponenta as k where kb.student={$student} and kb.predmet={$ponudakursa} and kb.komponenta=k.id");
    $bodova = $mogucih = 0;
    while ($r30 = mysql_fetch_row($q30)) {
        $bodova += $r30[0];
        if ($r30[2] == 4) {
            // Tip komponente: zadaće
            $q35 = myquery("select sum(bodova) from zadaca where predmet={$predmet} and akademska_godina={$ag} and komponenta={$r30['3']}");
            $do_sada_zadace = round(mysql_result($q35, 0, 0), 2);
            // Zbir bodova za zadaće ne može preći ono koliko nosi komponenta
            if ($do_sada_zadace > $r30[1]) {
                $mogucih += $r30[1];
            } else {
                $mogucih += $do_sada_zadace;
            }
        } else {
            $mogucih += $r30[1];
        }
    }
    if ($bodova > $mogucih) {
        $bodova = $mogucih;
    }
    //ne bi se trebalo desiti
    // boja označava napredak studenta
    if ($mogucih == 0) {
        $procent = 0;
    } else {
        $procent = intval($bodova / $mogucih * 100);
    }
    if ($procent >= 75) {
        $color = "#00FF00";
    } else {
        if ($procent >= 50) {
            $color = "#FFFF00";
        } else {
            $color = "#FF0000";
        }
    }
    $tabela1 = $procent * 2;
    $tabela2 = 200 - $tabela1;
    $ispis1 = "<img src=\"images/fnord.gif\" width=\"{$tabela1}\" height=\"10\">";
    $ispis2 = "<img src=\"images/fnord.gif\" width=\"{$tabela2}\" height=\"1\"><br/> {$bodova} bodova";
    if ($tabela1 > $tabela2) {
        $ispis1 = "<img src=\"images/fnord.gif\" width=\"{$tabela1}\" height=\"1\"><br/> {$bodova} bodova";
        $ispis2 = "<img src=\"images/fnord.gif\" width=\"{$tabela2}\" height=\"10\">";
    }
    ?>


<!-- progress bar -->

<table border="0"><tr><td align="left">
<p>
<table style="border:1px;border-style:solid" width="206" cellpadding="0" cellspacing="2"><tr>
<td width="<?php 
    echo $tabela1;
    ?>
" bgcolor="<?php 
    echo $color;
    ?>
"><?php 
    echo $ispis1;
    ?>
</td>
<td width="<?php 
    echo $tabela2;
    ?>
" bgcolor="#FFFFFF"><?php 
    echo $ispis2;
    ?>
</td></tr></table>

<table width="208" border="0" cellspacing="0" cellpadding="0"><tr>
<td width="68">0</td>
<td align="center" width="68">50</td>
<td align="right" width="69">100</td></tr></table>
što je <?php 
    echo $procent;
    ?>
% od trenutno mogućih <?php 
    echo round($mogucih, 2);
    ?>
 bodova.</p>
</td></tr></table>


<!-- end progress bar -->
<?php 
    // Nekoliko korisnih operacija za site admina
    if ($user_siteadmin) {
        ?>
	<p><a href="index.php?sta=saradnik/student&student=<?php 
        echo $student;
        ?>
&predmet=<?php 
        echo $predmet;
        ?>
&ag=<?php 
        echo $ag;
        ?>
&akcija=ispis">Ispiši studenta sa predmeta</a> * <a href="index.php?sta=studentska/osobe&akcija=edit&osoba=<?php 
        echo $student;
        ?>
">Detaljnije o studentu</a> * <a href="index.php?su=<?php 
        echo $student;
        ?>
">Prijavi se kao student</a></p>
	<?php 
    }
    // PRISUSTVO:
    print ajah_box();
    ?>
<script language="JavaScript">
// Funkcija koja se poziva klikom na polje u tabeli
function prisustvo(student,cas) {
	if (zamger_ajah_sending) {
		alert("Slanje u toku. Sačekajte malo.");
		return false;
	}
	var prisutan = invert(student,cas);
	ajah_start("index.php?c=N&sta=common/ajah&akcija=prisustvo&student="+student+"&cas="+cas+"&prisutan="+prisutan, "invert("+student+","+cas+")");
	// U slucaju da ajah ne uspije, ponovo se poziva funkcija invert
}
// Switchuje DA i NE
function invert(student,cas) {
	var val = document.getElementById("danetekst-"+student+"-"+cas).innerHTML;
	if (val == "DA") {
		document.getElementById("dane-"+student+"-"+cas).style.background = "#FFCCCC";
		document.getElementById("danetekst-"+student+"-"+cas).innerHTML = "NE";
		return 1;
	} else {
		document.getElementById("dane-"+student+"-"+cas).style.background="#CCFFCC";
		document.getElementById("danetekst-"+student+"-"+cas).innerHTML = "DA";
		return 2;
	}
}
function openzadaca(student,zadaca,zadatak) {
	var url='index.php?sta=saradnik/zadaca&student='+student+'&zadaca='+zadaca+'&zadatak='+zadatak;
	window.open(url,'blah','width=600,height=600,scrollbars=yes');
}
function toggleVisibilityObj(ime){
	var me = document.getElementById(ime);
	if (me.style.display=="none"){
		me.style.display="inline";
	}
	else {
		me.style.display="none";
	}
	return false; // da ne bi radio link
}
</script>
	<?php 
    // Ispis tablice prisustva za jednu od grupa u kojima je student
    function prisustvo_ispis($idgrupe, $imegrupe, $komponenta, $student)
    {
        if (!preg_match("/\\w/", $imegrupe)) {
            $imegrupe = "[Bez naziva]";
        }
        $odsustva = 0;
        $q70 = myquery("select id,UNIX_TIMESTAMP(datum), vrijeme from cas where labgrupa={$idgrupe} and komponenta={$komponenta}");
        if (mysql_num_rows($q70) < 1) {
            return;
        }
        // Ne ispisuj grupe u kojima nema registrovanih časova
        $datumi = $vremena = $statusi = "";
        while ($r70 = mysql_fetch_row($q70)) {
            $datumi .= "<td>" . date("d.m", $r70[1]) . "</td>\n";
            list($sati, $minute, $sekunde) = explode(":", $r70[2]);
            $vremena .= "<td>{$sati}<sup>{$minute}</sup></td>\n";
            $q80 = myquery("select prisutan from prisustvo where student={$student} and cas={$r70['0']}");
            if (mysql_num_rows($q80) < 1) {
                $statusi .= "<td bgcolor=\"#FFFFCC\" align=\"center\" id=\"dane-" . $student . "-" . $r70[0] . "\" onclick=\"javascript:prisustvo(" . $student . "," . $r70[0] . ")\"><div id=\"danetekst-" . $student . "-" . $r70[0] . "\"> / </div></td>\n";
            } else {
                if (mysql_result($q80, 0, 0) == 1) {
                    $statusi .= "<td bgcolor=\"#CCFFCC\" align=\"center\" id=\"dane-" . $student . "-" . $r70[0] . "\" onclick=\"javascript:prisustvo(" . $student . "," . $r70[0] . ")\"><div id=\"danetekst-" . $student . "-" . $r70[0] . "\">DA</div></td>\n";
                } else {
                    $statusi .= "<td bgcolor=\"#FFCCCC\" align=\"center\" id=\"dane-" . $student . "-" . $r70[0] . "\" onclick=\"javascript:prisustvo(" . $student . "," . $r70[0] . ")\"><div id=\"danetekst-" . $student . "-" . $r70[0] . "\">NE</div></td>\n";
                    $odsustva++;
                }
            }
        }
        ?>

	<b>Prisustvo (<?php 
        echo $imegrupe;
        ?>
):</b><br/>
	<table cellspacing="0" cellpadding="2" border="0" id="prisustvo">
	<tr>
		<th>Datum</th>
	<?php 
        echo $datumi;
        ?>
	</tr>
	<tr>
		<th>Vrijeme</th>
	<?php 
        echo $vremena;
        ?>
	</tr>
	<tr>
		<th>Prisutan</th>
	<?php 
        echo $statusi;
        ?>
	</tr>
	</table>
	</p>
	
	<?php 
        return $odsustva;
    }
    $q40 = myquery("select k.id,k.maxbodova,k.prolaz,k.opcija from komponenta as k, tippredmeta_komponenta as tpk, akademska_godina_predmet as agp\nwhere agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and k.tipkomponente=3");
    // 3 = prisustvo
    while ($r40 = mysql_fetch_row($q40)) {
        $id_komponente = $r40[0];
        $max_bodova = $r40[1];
        $min_bodova = $r40[2];
        $max_izostanaka = $r40[3];
        $odsustva = $casova = 0;
        $q60 = myquery("select l.id,l.naziv from labgrupa as l, student_labgrupa as sl where l.predmet={$predmet} and l.akademska_godina={$ag} and l.id=sl.labgrupa and sl.student={$student}");
        while ($r60 = mysql_fetch_row($q60)) {
            $odsustva += prisustvo_ispis($r60[0], $r60[1], $id_komponente, $student);
            $q71 = myquery("select count(*) from cas where labgrupa={$r60['0']} and komponenta={$id_komponente}");
            $casova += mysql_result($q71, 0, 0);
        }
        if ($max_izostanaka == -1) {
            if ($casova == 0) {
                $bodovi = 10;
            } else {
                $bodovi = $min_bodova + round(($max_bodova - $min_bodova) * (($casova - $odsustva) / $casova), 2);
            }
        } else {
            if ($max_izostanaka == -2) {
                // Paraproporcionalni sistem TP
                if ($odsustva <= 2) {
                    $bodovi = $max_bodova;
                } else {
                    if ($odsustva <= 2 + ($max_bodova - $min_bodova) / 2) {
                        $bodovi = $max_bodova - ($odsustva - 2) * 2;
                    } else {
                        $bodovi = $min_bodova;
                    }
                }
            } else {
                if ($odsustva <= $max_izostanaka) {
                    $bodovi = $max_bodova;
                } else {
                    $bodovi = $min_bodova;
                }
            }
        }
        ?>
<p>Ukupno na prisustvo: <b><?php 
        echo $bodovi;
        ?>
</b> bodova.</p>
	<?php 
    }
    // KVIZOVI
    $q200 = myquery("SELECT id, naziv, prolaz_bodova FROM kviz WHERE predmet={$predmet} AND akademska_godina={$ag}");
    if (mysql_num_rows($q200) > 0) {
        ?>

	<b>Kvizovi:</b><br/>
	<table cellspacing="0" cellpadding="2" border="0" id="kvizovi">
	<thead>
	<tr>
		<th>Naziv kviza</th>
		<th>Rezultat</th>
		<th>Akcije</th>
	</tr>
	</thead>
	<?php 
        while ($r200 = mysql_fetch_row($q200)) {
            $q210 = myquery("SELECT dovrsen, bodova FROM kviz_student WHERE student={$student} AND kviz={$r200['0']}");
            $tekst = "";
            if (mysql_num_rows($q210) > 0) {
                $bodova = mysql_result($q210, 0, 1);
                if (mysql_result($q210, 0, 0) == 0) {
                    $tekst = "<img src=\"images/16x16/zad_cekaj.png\" width=\"8\" height=\"8\"> Nije završio/la";
                } else {
                    if ($bodova < $r200[2]) {
                        $tekst = "<img src=\"images/16x16/brisanje.png\" width=\"8\" height=\"8\"> {$bodova} bodova";
                    } else {
                        $tekst = "<img src=\"images/16x16/zad_ok.png\" width=\"8\" height=\"8\"> {$bodova} bodova";
                    }
                }
            }
            ?>
		<tr>
			<td><?php 
            echo $r200[1];
            ?>
</td>
			<td><?php 
            echo $tekst;
            ?>
</td>
			<td><?php 
            if ($tekst !== "") {
                ?>
<a href="?sta=saradnik/student&student=<?php 
                echo $student;
                ?>
&predmet=<?php 
                echo $predmet;
                ?>
&ag=<?php 
                echo $ag;
                ?>
&akcija=ponisti_kviz&kviz=<?php 
                echo $r200[0];
                ?>
">Poništi kviz</a><?php 
            }
            ?>
</td>
		</tr>
		<?php 
        }
        ?>
	</table>
	</p>
	<?php 
    }
    //  ZADAĆE
    // Statusne ikone:
    $stat_icon = array("zad_bug", "zad_preg", "zad_copy", "zad_bug", "zad_preg", "zad_ok");
    $stat_tekst = array("Bug u programu", "Pregled u toku", "Zadaća prepisana", "Bug u programu", "Pregled u toku", "Zadaća OK");
    ?>


<!-- zadace -->

<b>Zadaće:</b><br/>
<table cellspacing="0" cellpadding="2" border="0" id="zadace">
	<thead>
		<tr>
	<td>&nbsp;</td>
<?php 
    // Zaglavlje tabele - potreban nam je max. broj zadataka u zadaci
    $q20 = myquery("select zadataka from zadaca where predmet={$predmet} and akademska_godina={$ag} order by zadataka desc limit 1");
    if (mysql_num_rows($q20) > 0) {
        $broj_zadataka = mysql_result($q20, 0, 0);
        for ($i = 1; $i <= $broj_zadataka; $i++) {
            ?>
<td>Zadatak <?php 
            echo $i;
            ?>
.</td><?php 
        }
    }
    ?>
		<td><b>Ukupno bodova</b></td>
		</tr>
	</thead>
<tbody>
<?php 
    // Tijelo tabele
    // LEGENDA STATUS POLJA:
    // 0 - nepoznat status
    // 1 - nova zadaća
    // 2 - prepisana
    // 3 - ne može se kompajlirati
    // 4 - prošla test, predstoji kontrola
    // 5 - pregledana
    /* Ovo se sve moglo kroz SQL rijesiti, ali necu iz razloga:
    1. PHP je citljiviji
    2. MySQL <4.1 ne podrzava subqueries */
    $bodova_sve_zadace = 0;
    $q21 = myquery("select id,naziv,bodova,zadataka from zadaca where predmet={$predmet} and akademska_godina={$ag} order by komponenta,id");
    while ($r21 = mysql_fetch_row($q21)) {
        $zadaca = $r21[0];
        $mogucih += $r21[2];
        $zzadataka = $r21[3];
        ?>
<tr>
	<th><?php 
        echo $r21[1];
        ?>
</th>
	<?php 
        $bodova_zadaca = 0;
        for ($zadatak = 1; $zadatak <= $broj_zadataka; $zadatak++) {
            // Ako tekuća zadaća nema toliko zadataka, ispisujemo blank polje
            if ($zadatak > $zzadataka) {
                ?>
<td>&nbsp;</td><?php 
                continue;
            }
            // Uzmi samo rjesenje sa zadnjim IDom
            $q22 = myquery("select status,bodova,komentar from zadatak where student={$student} and zadaca={$zadaca} and redni_broj={$zadatak} order by id desc limit 1");
            if (mysql_num_rows($q22) < 1) {
                ?>
<td>&nbsp;</td><?php 
            } else {
                $status = mysql_result($q22, 0, 0);
                $bodova_zadatak = mysql_result($q22, 0, 1);
                $bodova_zadaca += $bodova_zadatak;
                if (strlen(mysql_result($q22, 0, 2)) > 2) {
                    $imakomentar = "<img src=\"images/16x16/komentar.png\"  width=\"15\" height=\"14\" border=\"0\" title=\"Ima komentar\" alt=\"Ima komentar\" align=\"center\">";
                } else {
                    $imakomentar = "";
                }
                ?>
<td><a href="javascript:openzadaca('<?php 
                echo $student;
                ?>
', '<?php 
                echo $zadaca;
                ?>
', '<?php 
                echo $zadatak;
                ?>
')"><img src="images/16x16/<?php 
                echo $stat_icon[$status];
                ?>
.png" width="16" height="16" border="0" align="center" title="<?php 
                echo $stat_tekst[$status];
                ?>
" alt="<?php 
                echo $stat_tekst[$status];
                ?>
"> <?php 
                echo $bodova_zadatak;
                ?>
 <?php 
                echo $imakomentar;
                ?>
</a></td>
	<?php 
            }
        }
        ?>
	<td><?php 
        echo $bodova_zadaca;
        ?>
</td>
	</tr>
	<?php 
        $bodova_sve_zadace += $bodova_zadaca;
    }
    // Ukupno bodova za studenta
    $bodova += $bodova_sve_zadace;
    ?>
	<tr><td colspan="<?php 
    echo $broj_zadataka + 1;
    ?>
" align="right">UKUPNO: </td>
	<td><?php 
    echo $bodova_sve_zadace;
    ?>
</td></tr>
</tbody>
</table>

<p>Za historiju izmjena kliknite na željeni zadatak. <a href="#" onclick="javascript:window.open('legenda-zadace.html','blah6','width=320,height=130'); return false;">Legenda simbola</a></p>
<br/>

<!-- end zadace -->

<?php 
    // Importujemo kod za coolbox
    cool_box('ajah_start("index.php?c=N&sta=common/ajah&akcija=izmjena_ispita&idpolja="+zamger_coolbox_origcaller.id+"&vrijednost="+coolboxedit.value, "undo_coolbox()", "zamger_coolbox_origcaller=false");');
    ?>
<script language="JavaScript">
function undo_coolbox() {
	var greska = document.getElementById("zamger_ajah-info").innerText || document.getElementById("zamger_ajah-info").textContent;
	if (!greska.match(/\S/)) greska = "Došlo je do greške. Molimo kontaktirajte administratora.";
	alert(greska);
	zamger_coolbox_origcaller.innerHTML = zamger_coolbox_origvalue;
	zamger_coolbox_origcaller=false;
}
</script>
<?php 
    // FIKSNE KOMPONENTE
    $q25 = myquery("select k.id, k.gui_naziv from komponenta as k, tippredmeta_komponenta as tpk, akademska_godina_predmet as agp where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and k.tipkomponente=5");
    // 5 = fiksna komponenta
    if (mysql_num_rows($q25) > 0) {
        ?>

<!-- fiksne komponente -->

<table cellspacing="0" cellpadding="2" border="0" id="zadace">
	<thead>
	<tr>
		<td><b>Komponenta ocjene</b></td>
		<td><b>Bodovi</b></td>
		<td><b>Dnevnik izmjena</b></td>
	</tr>
	</thead>
	<tbody>
<?php 
    }
    while ($r25 = mysql_fetch_row($q25)) {
        $komponenta = $r25[0];
        $q27 = myquery("select bodovi from komponentebodovi where student={$student} and predmet={$ponudakursa} and komponenta={$komponenta}");
        if (mysql_num_rows($q27) < 1) {
            $ocjenaedit = "/";
        } else {
            $ocjenaedit = mysql_result($q27, 0, 0);
        }
        ?>
	<tr>
		<td><?php 
        echo $r25[1];
        ?>
</td>
		<td id="fiksna-<?php 
        echo $student;
        ?>
-<?php 
        echo $predmet;
        ?>
-<?php 
        echo $komponenta;
        ?>
-<?php 
        echo $ag;
        ?>
" ondblclick="coolboxopen(this)"><?php 
        echo $ocjenaedit;
        ?>
</td>
		<td><?php 
        if ($privilegija == "nastavnik" || $privilegija == "super_asistent" || $user_siteadmin) {
            ?>
<div id="fiksnalog<?php 
            echo $komponenta;
            ?>
"></div><?php 
        } else {
            print "/";
        }
        ?>
</td>
	</tr>
	<?php 
    }
    if (mysql_num_rows($q25) > 0) {
        ?>
	</tbody>
</table>
<p>&nbsp;</p>
<?php 
    }
    //  ISPITI
    ?>

<!-- ispiti -->

<b>Ispiti:</b><br/>

<?php 
    $q30 = myquery("select i.id, UNIX_TIMESTAMP(i.datum), k.gui_naziv, k.id, k.prolaz from ispit as i, komponenta as k where i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=k.id order by i.datum,i.komponenta");
    if (mysql_num_rows($q30) == 0) {
        print "<p>Nije bilo parcijalnih ispita.</p>";
    } else {
        ?>
<table cellspacing="0" cellpadding="2" border="0" id="zadace">
	<thead>
	<tr>
		<td><b>Tip ispita</b></td>
		<td><b>Datum ispita</b></td>
		<td><b>Položio/la?</b></td>
		<td><b>Bodovi</b></td>
		<td><b>Dnevnik izmjena</b></td>
	</tr>
	</thead>
	<tbody>
<?php 
    }
    while ($r30 = mysql_fetch_row($q30)) {
        $ispit = $r30[0];
        $q40 = myquery("select ocjena from ispitocjene where ispit={$ispit} and student={$student}");
        if (mysql_num_rows($q40) < 1) {
            $ocjenaedit = "/";
            $ispitocjena = "Nije izašao/la";
        } else {
            $ocjenaedit = mysql_result($q40, 0, 0);
            $ispitocjena = "<b>" . mysql_result($q40, 0, 0) . " bodova</b>";
        }
        /*	?>
        	<p><?=$r30[2]?> (<?=date("d. m. Y",$r30[1])?>): <?=$ispitocjena?>
        	<?*/
        ?>
	<tr>
		<td><?php 
        echo $r30[2];
        ?>
</td>
		<td><?php 
        echo date("d. m. Y", $r30[1]);
        ?>
</td>
		<td><?php 
        if ($ocjenaedit == "/") {
            print "&nbsp;";
        } else {
            if ($ocjenaedit >= $r30[4]) {
                print "<img src=\"images/16x16/zad_ok.png\" width=\"16\" height=\"16\">";
            } else {
                print "<img src=\"images/16x16/brisanje.png\" width=\"16\" height=\"16\">";
            }
        }
        // najljepše slike
        ?>
</td>
		<td id="ispit-<?php 
        echo $student;
        ?>
-<?php 
        echo $ispit;
        ?>
" ondblclick="coolboxopen(this)"><?php 
        echo $ocjenaedit;
        ?>
</td>
		<td><?php 
        if ($privilegija == "nastavnik" || $privilegija == "super_asistent" || $user_siteadmin) {
            ?>
<div id="ispitlog<?php 
            echo $ispit;
            ?>
"></div><?php 
        } else {
            print "/";
        }
        ?>
</td>
	</tr>
	<?php 
        /*	if ($predmet_admin || $user_siteadmin) {
        		?> <span id="ispitlink<?=$ispit?>">(<a href="#" onclick="return toggleVisibilityObj('ispitlog<?=$ispit?>');">dnevnik izmjena</a>)</span> (<a href="#" onclick="return toggleVisibilityObj('ispitunos<?=$ispit?>');">upišite rezultat</a>)</p>
        		<p><div id="ispitlog<?=$ispit?>" style="display:none"></div></p>
        		<p><div id="ispitunos<?=$ispit?>" style="display:none">
        		<table border="0" cellspacing="0" cellpadding="2" height="16"><tr height="16">
        			<td width="37">&nbsp;</td>
        			<td align="left">Unesite bodove ili znak "kosa crta" (/):</td>
        			<td width="5">&nbsp;<br/>&nbsp;</td>
        			<td id="ispit-<?=$student?>-<?=$ispit?>" ondblclick="coolboxopen(this)" width="32" height="32" style="font-size:11px; border:1px solid black"><?=$ocjenaedit?></td>
        		</tr></table>
        		</div></p>
        		<?
        	} else {
        		print "</p>\n";
        	}*/
    }
    if (mysql_num_rows($q30) > 0) {
        ?>
</tbody></table>
<p>Dvokliknite na bodove da promijenite podatak ili upišete novi. Za brisanje rezultata, pobrišite postojeći podatak i pritisnite Enter.</p>
<?php 
    }
    // KONAČNA OCJENA
    $vrijeme_konacne_ocjene = 0;
    $q50 = myquery("select ocjena, UNIX_TIMESTAMP(datum), UNIX_TIMESTAMP(datum_u_indeksu) from konacna_ocjena where student={$student} and predmet={$predmet} and akademska_godina={$ag}");
    if (mysql_num_rows($q50) > 0) {
        $konacnaocjena = mysql_result($q50, 0, 0);
        $vrijeme_konacne_ocjene = mysql_result($q50, 0, 1);
        $datum_u_indeksu = mysql_result($q50, 0, 2);
    } else {
        $konacnaocjena = "/";
    }
    ?>
<p>&nbsp;</p>
<table cellspacing="0" cellpadding="2" border="0" id="zadace">
<tr>
	<td>&nbsp;</td>
	<td>Ocjena:</td>
	<td>Datum u indeksu:</td>
	<td>Dnevnik izmjena:</td>
</tr>
<tr>
	<td><b>Konačna ocjena:</b></td>
<?php 
    if ($privilegija == "nastavnik" || $user_siteadmin) {
        ?>
	<td id="ko-<?php 
        echo $student;
        ?>
-<?php 
        echo $predmet;
        ?>
-<?php 
        echo $ag;
        ?>
" ondblclick="coolboxopen(this)"><?php 
        echo $konacnaocjena;
        ?>
</td>
	<td id="kodatum-<?php 
        echo $student;
        ?>
-<?php 
        echo $predmet;
        ?>
-<?php 
        echo $ag;
        ?>
" ondblclick="coolboxopen(this)"><?php 
        echo date("d. m. Y", $datum_u_indeksu);
        ?>
</td>
	<td><div id="kolog"></div></td>
	<?php 
    } else {
        ?>
	<td><?php 
        echo $konacnaocjena;
        ?>
</td>
	<?php 
    }
    print "</tr></table>\n";
    // **************************************
    // POPUNA LOGOVA
    // **************************************
    // Ne radimo ništa ako korisnik nema privilegije
    if ($privilegija != "nastavnik" && $privilegija != "super_asistent" && !$user_siteadmin) {
        return;
    }
    ?>


<SCRIPT language="JavaScript">
<?php 
    // Spisak ponuda kursa, za slucaj da nema rezultata
    $q90 = myquery("select id from ponudakursa where predmet={$predmet} and akademska_godina={$ag}");
    $pkovi = array();
    while ($r90 = mysql_fetch_row($q90)) {
        array_push($pkovi, $r90[0]);
    }
    // Log za ispite
    $q100 = myquery("select i.id, UNIX_TIMESTAMP(i.vrijemeobjave) from ispit as i, komponenta as k where i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=k.id order by i.datum,i.komponenta");
    while ($r100 = mysql_fetch_row($q100)) {
        $vrijeme_ispita = $r100[1];
        // Utvrdjujemo ocjenu da bismo lakse mogli rekonstruisati izmjene kroz log
        $q105 = myquery("select ocjena from ispitocjene where ispit={$r100['0']} and student={$student}");
        if (mysql_num_rows($q105) < 1) {
            $ispitocjena = "/";
        } else {
            $ispitocjena = mysql_result($q105, 0, 0);
        }
        // Spisak izmjena ocjene
        $q110 = myquery("select dogadjaj, UNIX_TIMESTAMP(vrijeme), userid from log where \n\tdogadjaj like 'AJAH ispit - upisan novi rezultat % (ispit i{$r100['0']}, student u{$student})' or \n\tdogadjaj like 'AJAH ispit - izbrisan rezultat % (ispit i{$r100['0']}, student u{$student})' or \n\tdogadjaj like 'AJAH ispit - izmjena rezultata % (ispit i{$r100['0']}, student u{$student})' order by id desc");
        while ($r110 = mysql_fetch_row($q110)) {
            $datum = date("d.m.Y. H:i:s", $r110[1]);
            $q120 = myquery("select ime,prezime from osoba where id=" . $r110[2]);
            if (mysql_num_rows($q120) > 0) {
                $korisnik = mysql_result($q120, 0, 0) . " " . mysql_result($q120, 0, 1);
            } else {
                $korisnik = "/nepoznat korisnik {$r110['2']}/";
            }
            if (strstr($r110[0], "upisan novi rezultat")) {
                $rezultat = floatval(substr($r110[0], 34));
                if ($rezultat != $ispitocjena) {
                    $rezultat .= " ?";
                }
                $ispitocjena = "/";
                ?>
			document.getElementById('ispitlog<?php 
                echo $r100[0];
                ?>
').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> upisan rezultat <b><?php 
                echo $rezultat;
                ?>
</b> (<?php 
                echo $korisnik;
                ?>
, <?php 
                echo $datum;
                ?>
)<br />' + document.getElementById('ispitlog<?php 
                echo $r100[0];
                ?>
').innerHTML;
			<?php 
            } else {
                if (strstr($r110[0], "izbrisan rezultat")) {
                    $rezultat = floatval(substr($r110[0], 31));
                    if ($ispitocjena != "/") {
                        $rezultat .= " ?";
                    } else {
                        $ispitocjena = $rezultat;
                    }
                    ?>
			document.getElementById('ispitlog<?php 
                    echo $r100[0];
                    ?>
').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> izbrisan rezultat (<?php 
                    echo $korisnik;
                    ?>
, <?php 
                    echo $datum;
                    ?>
)<br />' + document.getElementById('ispitlog<?php 
                    echo $r100[0];
                    ?>
').innerHTML;
			<?php 
                } else {
                    if (preg_match("/izmjena rezultata ([\\d\\.]+) u ([\\d\\.]+)/", $r110[0], $matches)) {
                        $starirezultat = floatval($matches[1]);
                        $rezultat = floatval($matches[2]);
                        if ($ispitocjena != $rezultat) {
                            $rezultat .= " ?";
                        }
                        $ispitocjena = $starirezultat;
                        ?>
			document.getElementById('ispitlog<?php 
                        echo $r100[0];
                        ?>
').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> promijenjen rezultat u <b><?php 
                        echo $rezultat;
                        ?>
</b> (<?php 
                        echo $korisnik;
                        ?>
, <?php 
                        echo $datum;
                        ?>
)<br />' + document.getElementById('ispitlog<?php 
                        echo $r100[0];
                        ?>
').innerHTML;
			<?php 
                    }
                }
            }
        }
        // Necemo traziti masovne unose ako student nije ni izlazio na ispit
        if ($ispitocjena == "/") {
            continue;
        }
        // Masovni unosi
        $q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet pp{$predmet}' AND UNIX_TIMESTAMP(vrijeme)>{$r100['1']}-10 ORDER BY vrijeme");
        // uzimamo razliku 10 sekundi, jer moze doci do malog kasnjenja prilikom unosa u log
        if (mysql_num_rows($q110) > 0) {
            $datum = date("d.m.Y. H:i:s", mysql_result($q110, 0, 0));
            $q120 = myquery("select ime,prezime from osoba where id=" . mysql_result($q110, 0, 1));
            if (mysql_num_rows($q120) > 0) {
                $korisnik = mysql_result($q120, 0, 0) . " " . mysql_result($q120, 0, 1);
            } else {
                $korisnik = "/nepoznat korisnik " . mysql_result($q110, 0, 1) . "/";
            }
            ?>
		document.getElementById('ispitlog<?php 
            echo $r100[0];
            ?>
').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?php 
            echo $ispitocjena;
            ?>
</b> (<?php 
            echo $korisnik;
            ?>
, <?php 
            echo $datum;
            ?>
)<br />' + document.getElementById('ispitlog<?php 
            echo $r100[0];
            ?>
').innerHTML;
		<?php 
            // Nema pod oznakom predmeta, pokusacemo ponudu kursa
        } else {
            foreach ($pkovi as $ponudakursa) {
                $q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet p{$ponudakursa}' AND UNIX_TIMESTAMP(vrijeme)>{$r100['1']}-10");
                if (mysql_num_rows($q110) > 0) {
                    $datum = date("d.m.Y. H:i:s", mysql_result($q110, 0, 0));
                    $q120 = myquery("select ime,prezime from osoba where id=" . mysql_result($q110, 0, 1));
                    if (mysql_num_rows($q120) > 0) {
                        $korisnik = mysql_result($q120, 0, 0) . " " . mysql_result($q120, 0, 1);
                    } else {
                        $korisnik = "/nepoznat korisnik " . mysql_result($q110, 0, 1) . "/";
                    }
                    ?>
			document.getElementById('ispitlog<?php 
                    echo $r100[0];
                    ?>
').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?php 
                    echo $ispitocjena;
                    ?>
</b> (<?php 
                    echo $korisnik;
                    ?>
, <?php 
                    echo $datum;
                    ?>
)<br />' + document.getElementById('ispitlog<?php 
                    echo $r100[0];
                    ?>
').innerHTML;
			<?php 
                    break;
                }
            }
        }
    }
    // Log za konacnu ocjenu
    $bilo = 0;
    $upit = "\ndogadjaj like 'AJAH ko - dodana ocjena % (predmet pp{$predmet}, student u{$student})' or \ndogadjaj like 'AJAH ko - obrisana ocjena % (predmet pp{$predmet}, student u{$student})' or \ndogadjaj like 'AJAH ko - izmjena ocjene % (predmet pp{$predmet}, student u{$student})' or \ndogadjaj like 'dopisana ocjena % prilikom upisa na studij (predmet pp{$predmet}, student u{$student})' or \ndogadjaj like 'masovno dodana ocjena % (predmet pp{$predmet}, student u{$student})'";
    $q150 = myquery("select dogadjaj, UNIX_TIMESTAMP(vrijeme), userid from log where {$upit} order by id desc");
    while ($r150 = mysql_fetch_row($q150)) {
        $bilo = 1;
        $datum = date("d.m.Y. H:i:s", $r150[1]);
        $q160 = myquery("select ime,prezime from osoba where id={$r150['2']}");
        if (mysql_num_rows($q160) > 0) {
            $korisnik = mysql_result($q160, 0, 0) . " " . mysql_result($q160, 0, 1);
        } else {
            $korisnik = "/nepoznat korisnik {$r150['2']}/";
        }
        if (strstr($r150[0], " - dodana ocjena")) {
            $rezultat = intval(substr($r150[0], 24));
            if ($rezultat != $konacnaocjena) {
                $rezultat .= " ?";
            }
            $konacnaocjena = "/";
            ?>
		document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> dodana ocjena <b><?php 
            echo $rezultat;
            ?>
</b> (<?php 
            echo $korisnik;
            ?>
, <?php 
            echo $datum;
            ?>
)<br />' + document.getElementById('kolog').innerHTML;
		<?php 
        } else {
            if (strstr($r150[0], "obrisana ocjena")) {
                $rezultat = intval(substr($r150[0], 26));
                if ($konacnaocjena != "/") {
                    $rezultat .= " ?";
                } else {
                    $konacnaocjena = $rezultat;
                }
                ?>
		document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> obrisana ocjena (<?php 
                echo $korisnik;
                ?>
, <?php 
                echo $datum;
                ?>
)<br />' + document.getElementById('kolog').innerHTML;
		<?php 
            } else {
                if (preg_match("/izmjena ocjene (\\d+) u (\\d+)/", $r150[0], $matches)) {
                    $starirezultat = intval($matches[1]);
                    $rezultat = intval($matches[2]);
                    if ($konacnaocjena != $rezultat) {
                        $rezultat .= " ?";
                    }
                    $konacnaocjena = $starirezultat;
                    ?>
		document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> promijenjena ocjena u <b><?php 
                    echo $rezultat;
                    ?>
</b> (<?php 
                    echo $korisnik;
                    ?>
, <?php 
                    echo $datum;
                    ?>
)<br />' + document.getElementById('kolog').innerHTML;
		<?php 
                } else {
                    if (strstr($r150[0], "dopisana ocjena")) {
                        $rezultat = intval(substr($r150[0], 16));
                        if ($konacnaocjena != $rezultat) {
                            $rezultat .= " ?";
                        }
                        $konacnaocjena = "/";
                        ?>
		document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> studentska služba dopisala ocjenu <b><?php 
                        echo $rezultat;
                        ?>
</b> prilikom upisa u sljedeći semestar (<?php 
                        echo $korisnik;
                        ?>
, <?php 
                        echo $datum;
                        ?>
)<br />' + document.getElementById('kolog').innerHTML;
		<?php 
                    } else {
                        if (strstr($r150[0], "masovno dodana ocjena")) {
                            $rezultat = intval(substr($r150[0], 22));
                            if ($konacnaocjena != $rezultat) {
                                $rezultat .= " ?";
                            }
                            $konacnaocjena = "/";
                            ?>
		document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovno upisana ocjena <b><?php 
                            echo $rezultat;
                            ?>
</b> (<?php 
                            echo $korisnik;
                            ?>
, <?php 
                            echo $datum;
                            ?>
)<br />' + document.getElementById('kolog').innerHTML;
		<?php 
                        }
                    }
                }
            }
        }
    }
    /*if (mysql_num_rows($q150)<1) foreach ($pkovi as $ponudakursa) {
    	$q150 = myquery("select dogadjaj, UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj like 'AJAH ko - dodana ocjena % (predmet p$ponudakursa, student u$student)' or dogadjaj like 'AJAH ko - obrisana ocjena % (predmet p$ponudakursa, student u$student)' or dogadjaj like 'AJAH ko - izmjena ocjene % (predmet p$ponudakursa, student u$student)' order by id desc");
    
    	while ($r150 = mysql_fetch_row($q150)) {
    		$bilo=1;
    		$datum = date("d.m.Y. H:i:s", $r150[1]);
    		$q160 = myquery("select ime,prezime from osoba where id=$r150[2]");
    		if (mysql_num_rows($q160)>0) {
    			$korisnik = mysql_result($q160,0,0)." ".mysql_result($q160,0,1);
    		} else {
    			$korisnik = "/nepoznat korisnik $r150[2]/";
    		}
    	
    		if (strstr($r150[0], "dodana ocjena")) {
    			$rezultat = intval(substr($r150[0], 24));
    			if ($rezultat != $konacnaocjena) $rezultat .= " ?";
    			$konacnaocjena = "/";
    			$vrijeme_konacne_ocjene=$r150[1];
    			?>
    			document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> dodana ocjena <b><?=$rezultat?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('kolog').innerHTML;
    			<?
    		} else if (strstr($r150[0], "obrisana ocjena")) {
    			$rezultat = intval(substr($r150[0], 26));
    			if ($konacnaocjena != "/") $rezultat .= " ?"; else $konacnaocjena=$rezultat;
    			$vrijeme_konacne_ocjene=0;
    			?>
    			document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> obrisana ocjena (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('kolog').innerHTML;
    			<?
    		} else if (preg_match("/izmjena ocjene (\d+) u (\d+)/", $r150[0], $matches)) {
    			$starirezultat = intval($matches[1]);
    			$rezultat = intval($matches[2]);
    			if ($konacnaocjena != $rezultat) $rezultat .= " ?";
    			$konacnaocjena = $starirezultat;
    			$vrijeme_konacne_ocjene=$r150[1];
    			?>
    			document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> promijenjena ocjena u <b><?=$rezultat?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('kolog').innerHTML;
    			<?
    		}
    //print "$r150[0] $r150[1] $r150[2]\n";
    	}
    }*/
    if (mysql_num_rows($q150) == 0 && $vrijeme_konacne_ocjene > 0) {
        $bilo = 1;
        $q170 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovno upisane ocjene na predmet pp{$predmet}' AND ABS(UNIX_TIMESTAMP(vrijeme)-{$vrijeme_konacne_ocjene})<10");
        // uzimamo apsolutnu razliku 10 sekundi, jer moze doci do malog kasnjenja prilikom unosa u log
        if (mysql_num_rows($q170) > 0) {
            $datum = date("d.m.Y. H:i:s", mysql_result($q170, 0, 0));
            $q180 = myquery("select ime,prezime from osoba where id=" . mysql_result($q170, 0, 1));
            if (mysql_num_rows($q180) > 0) {
                $korisnik = mysql_result($q180, 0, 0) . " " . mysql_result($q180, 0, 1);
            } else {
                $korisnik = "/nepoznat korisnik " . mysql_result($q170, 0, 1) . "/";
            }
            ?>
		document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovno unesene ocjene - <b><?php 
            echo $konacnaocjena;
            ?>
</b> (<?php 
            echo $korisnik;
            ?>
, <?php 
            echo $datum;
            ?>
)<br />' + document.getElementById('kolog').innerHTML;
		<?php 
            // Nema pod oznakom predmeta, pokusacemo ponudu kursa
        } else {
            foreach ($pkovi as $ponudakursa) {
                $q170 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovno upisane ocjene na predmet p{$ponudakursa}' AND ABS(UNIX_TIMESTAMP(vrijeme)-" . mysql_result($q50, 0, 1) . ")<10");
                // uzimamo apsolutnu razliku 10 sekundi, jer moze doci do malog kasnjenja prilikom unosa u log
                if (mysql_num_rows($q170) > 0) {
                    $datum = date("d.m.Y. H:i:s", mysql_result($q170, 0, 0));
                    $q180 = myquery("select ime,prezime from osoba where id=" . mysql_result($q170, 0, 1));
                    if (mysql_num_rows($q180) > 0) {
                        $korisnik = mysql_result($q180, 0, 0) . " " . mysql_result($q180, 0, 1);
                    } else {
                        $korisnik = "/nepoznat korisnik " . mysql_result($q170, 0, 1) . "/";
                    }
                    ?>
			document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovno unesene ocjene - <b><?php 
                    echo $konacnaocjena;
                    ?>
</b> (<?php 
                    echo $korisnik;
                    ?>
, <?php 
                    echo $datum;
                    ?>
)<br />' + document.getElementById('kolog').innerHTML;
			<?php 
                }
            }
        }
    }
    // Ako nema nista u logu, sakrivamo ga
    if ($bilo == 0) {
        ?>
	toggleVisibilityObj('kolink');
	<?php 
    }
    // Log za fiksne komponente
    // Radimo samo ako ima fiksnih komponenti
    $q200 = myquery("select k.id from komponenta as k, tippredmeta_komponenta as tpk, akademska_godina_predmet as agp where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and k.tipkomponente=5");
    // 5 = fiksna komponenta
    while ($r200 = mysql_fetch_row($q200)) {
        $komponenta = $r200[0];
        // Utvrdjujemo ocjenu da bismo lakse mogli rekonstruisati izmjene kroz log
        $q205 = myquery("select bodovi from komponentebodovi where student={$student} and predmet={$ponudakursa} and komponenta={$komponenta}");
        if (mysql_num_rows($q205) < 1) {
            $ispitocjena = "/";
        } else {
            $ispitocjena = mysql_result($q205, 0, 0);
        }
        // Izmjene fiksne komponente putem AJAHa
        $q210 = myquery("select dogadjaj, UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj like 'AJAH fiksna - upisani bodovi % za fiksnu komponentu {$komponenta} (predmet pp{$predmet}, student u{$student})' order by id desc");
        while ($r210 = mysql_fetch_row($q210)) {
            $datum = date("d.m.Y. H:i:s", $r210[1]);
            $q220 = myquery("select ime,prezime from osoba where id=" . $r210[2]);
            if (mysql_num_rows($q220) > 0) {
                $korisnik = mysql_result($q220, 0, 0) . " " . mysql_result($q220, 0, 1);
            } else {
                $korisnik = "/nepoznat korisnik {$r210['2']}/";
            }
            $rezultat = floatval(substr($r210[0], 29));
            ?>
		document.getElementById('fiksnalog<?php 
            echo $komponenta;
            ?>
').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> upisan rezultat <b><?php 
            echo $rezultat;
            ?>
</b> (<?php 
            echo $korisnik;
            ?>
, <?php 
            echo $datum;
            ?>
)<br />' + document.getElementById('fiksnalog<?php 
            echo $komponenta;
            ?>
').innerHTML;
		<?php 
        }
        // Masovni unosi - jednog dana kad bude
        /*	$q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet pp$predmet' AND ABS(UNIX_TIMESTAMP(vrijeme)-$r100[1])<10"); // uzimamo apsolutnu razliku 10 sekundi, jer moze doci do malog kasnjenja prilikom unosa u log
        	if (mysql_num_rows($q110)>0) {
        		$datum = date("d.m.Y. H:i:s", mysql_result($q110,0,0));
        		$q120 = myquery("select ime,prezime from osoba where id=".mysql_result($q110,0,1));
        		if (mysql_num_rows($q120)>0) {
        			$korisnik = mysql_result($q120,0,0)." ".mysql_result($q120,0,1);
        		} else {
        			$korisnik = "/nepoznat korisnik/";
        		}
        		?>
        		document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?=$ispitocjena?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML;
        		<?
        
        	// Nema pod oznakom predmeta, pokusacemo ponudu kursa
        	} else foreach ($pkovi as $ponudakursa) {
        		$q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet p$ponudakursa' AND ABS(UNIX_TIMESTAMP(vrijeme)-$r100[1])<10");
        		if (mysql_num_rows($q110)>0) {
        			$datum = date("d.m.Y. H:i:s", mysql_result($q110,0,0));
        			$q120 = myquery("select ime,prezime from osoba where id=".mysql_result($q110,0,1));
        			if (mysql_num_rows($q120)>0) {
        				$korisnik = mysql_result($q120,0,0)." ".mysql_result($q120,0,1);
        			} else {
        				$korisnik = "/nepoznat korisnik/";
        			}
        			?>
        			document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?=$ispitocjena?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML;
        			<?
        		}
        	}*/
    }
    /*$q100 = myquery("select i.id, UNIX_TIMESTAMP(i.vrijemeobjave) from ispit as i, komponenta as k where i.predmet=$predmet and i.akademska_godina=$ag and i.komponenta=k.id order by i.datum,i.komponenta");
    
    while ($r100 = mysql_fetch_row($q100)) {
    	// Utvrdjujemo ocjenu da bismo lakse mogli rekonstruisati izmjene kroz log
    	$q105 = myquery("select ocjena from ispitocjene where ispit=$r100[0] and student=$student");
    	if (mysql_num_rows($q105)<1)
    		$ispitocjena="/";
    	else
    		$ispitocjena=mysql_result($q105,0,0);
    
    	// Spisak izmjena ocjene
    	$q110 = myquery("select dogadjaj, UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj like 'AJAH ispit - upisan novi rezultat % (ispit i$r100[0], student u$student)' or dogadjaj like 'AJAH ispit - izbrisan rezultat % (ispit i$r100[0], student u$student)' or dogadjaj like 'AJAH ispit - izmjena rezultata % (ispit i$r100[0], student u$student)' order by id desc");
    	while ($r110 = mysql_fetch_row($q110)) {
    		$datum = date("d.m.Y. H:i:s", $r110[1]);
    		$q120 = myquery("select ime,prezime from osoba where id=".$r110[2]);
    		if (mysql_num_rows($q120)>0) {
    			$korisnik = mysql_result($q120,0,0)." ".mysql_result($q120,0,1);
    		} else {
    			$korisnik = "/nepoznat korisnik $r110[2]/";
    		}
    
    		if (strstr($r110[0], "upisan novi rezultat")) {
    			$rezultat = floatval(substr($r110[0], 34));
    			if ($rezultat != $ispitocjena) $rezultat .= " ?";
    			$ispitocjena = "/";
    			?>
    			document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> upisan rezultat <b><?=$rezultat?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML;
    			<?
    		} else if (strstr($r110[0], "izbrisan rezultat")) {
    			$rezultat = floatval(substr($r110[0], 31));
    			if ($ispitocjena != "/") $rezultat .= " ?"; else $ispitocjena=$rezultat;
    			?>
    			document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> izbrisan rezultat (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML;
    			<?
    		} else if (preg_match("/izmjena rezultata ([\d\.]+) u ([\d\.]+)/", $r110[0], $matches)) {
    			$starirezultat = floatval($matches[1]);
    			$rezultat = floatval($matches[2]);
    			if ($ispitocjena != $rezultat) $rezultat .= " ?";
    			$ispitocjena = $starirezultat;
    			?>
    			document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> promijenjen rezultat u <b><?=$rezultat?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML;
    			<?
    		}
    	}
    
    	// Sakrivamo link na log ako nema ništa u njemu
    	if ($ispitocjena == "/" && mysql_num_rows($q110)<1) {
    /*		?>
    		toggleVisibilityObj('ispitlink<?=$r100[0]?>');
    		<?*/
    /*	}
    
    	// Necemo traziti masovne unose ako student nije ni izlazio na ispit
    	if ($ispitocjena == "/") continue; 
    
    
    	// Masovni unosi
    
    	$q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet pp$predmet' AND ABS(UNIX_TIMESTAMP(vrijeme)-$r100[1])<10"); // uzimamo apsolutnu razliku 10 sekundi, jer moze doci do malog kasnjenja prilikom unosa u log
    	if (mysql_num_rows($q110)>0) {
    		$datum = date("d.m.Y. H:i:s", mysql_result($q110,0,0));
    		$q120 = myquery("select ime,prezime from osoba where id=".mysql_result($q110,0,1));
    		if (mysql_num_rows($q120)>0) {
    			$korisnik = mysql_result($q120,0,0)." ".mysql_result($q120,0,1);
    		} else {
    			$korisnik = "/nepoznat korisnik ".mysql_result($q110,0,1)."/";
    		}
    		?>
    		document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?=$ispitocjena?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML;
    		<?
    
    	// Nema pod oznakom predmeta, pokusacemo ponudu kursa
    	} else foreach ($pkovi as $ponudakursa) {
    		$q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet p$ponudakursa' AND ABS(UNIX_TIMESTAMP(vrijeme)-$r100[1])<10");
    		if (mysql_num_rows($q110)>0) {
    			$datum = date("d.m.Y. H:i:s", mysql_result($q110,0,0));
    			$q120 = myquery("select ime,prezime from osoba where id=".mysql_result($q110,0,1));
    			if (mysql_num_rows($q120)>0) {
    				$korisnik = mysql_result($q120,0,0)." ".mysql_result($q120,0,1);
    			} else {
    				$korisnik = "/nepoznat korisnik ".mysql_result($q110,0,1)."/";
    			}
    			?>
    			document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?=$ispitocjena?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML;
    			<?
    		}
    	}
    	
    }*/
    ?>
</SCRIPT>
<?php 
}
示例#5
0
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);
    }
    
    
    }*/
}
示例#6
0
文件: tip.php 项目: msehalic/zamger
function nastavnik_tip()
{
    global $userid, $user_siteadmin;
    require "lib/manip.php";
    // Zbog update_komponente
    // Parametri
    $predmet = intval($_REQUEST['predmet']);
    $ag = intval($_REQUEST['ag']);
    $brojK = intval($_REQUEST['komp']);
    if (!isset($_REQUEST['komp'])) {
        $brojK = 1;
    }
    $brojIspita = intval($_REQUEST['brojIspita']);
    if (!isset($_REQUEST['brojIspita'])) {
        $brojIspita = 3;
    }
    $brojPrisustva = intval($_REQUEST['brojPrisustva']);
    if (!isset($_REQUEST['brojPrisustva'])) {
        $brojPrisustva = 1;
    }
    $brojZadaca = intval($_REQUEST['brojZadaca']);
    if (!isset($_REQUEST['brojZadaca'])) {
        $brojZadaca = 1;
    }
    $korak = $_REQUEST['korak'];
    // Trenutno odabrana opcija u meniju
    $akcija = $_REQUEST['akcija'];
    // Naziv predmeta
    $q10 = myquery("select naziv from predmet where id={$predmet}");
    if (mysql_num_rows($q10) < 1) {
        biguglyerror("Nepoznat predmet");
        zamgerlog("ilegalan predmet {$predmet}", 3);
        //nivo 3: greška
        zamgerlog2("nepoznat predmet", $predmet);
        return;
    }
    $predmet_naziv = mysql_result($q10, 0, 0);
    ?>


<p>&nbsp;</p>

<p><h3>Sistem bodovanja na predmetu - <?php 
    echo $predmet_naziv;
    ?>
</h3></p>

<?php 
    // Da li korisnik ima pravo ući u modul?
    if (!$user_siteadmin) {
        // 3 = site admin
        $q15 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}");
        if (mysql_num_rows($q15) < 1 || mysql_result($q15, 0, 0) != "nastavnik") {
            zamgerlog("nastavnik/tip privilegije (predmet pp{$predmet})", 3);
            zamgerlog2("nije nastavnik na predmetu", $predmet, $ag);
            biguglyerror("Nemate pravo pristupa ovoj opciji");
            return;
        }
    }
    // Kreiranje novog tipa predmeta
    if ($akcija == "potvrda" && check_csrf_token()) {
        // Odredjujemo stari tip predmeta
        $q20 = myquery("select t.id, t.naziv from akademska_godina_predmet as agp, tippredmeta as t where agp.akademska_godina={$ag} and agp.predmet={$predmet} and agp.tippredmeta=t.id");
        $stari_tip_predmeta = mysql_result($q20, 0, 0);
        // Kreiramo novi tip predmeta i uzimamo njegov id
        // Biramo naziv koji ne postoji već
        $naziv_tipa = substr($predmet_naziv, 0, 50);
        $q65 = myquery("select count(*) from tippredmeta where naziv='{$naziv_tipa}'");
        $broj = 0;
        while (mysql_result($q65, 0, 0) > 0) {
            $broj++;
            $naziv_tipa = "{$predmet_naziv} {$broj}";
            $q65 = myquery("select count(*) from tippredmeta where naziv='{$naziv_tipa}'");
        }
        $q70 = myquery("INSERT INTO tippredmeta set naziv='{$naziv_tipa}'");
        $q80 = myquery("select id from tippredmeta where naziv='{$naziv_tipa}'");
        if (mysql_num_rows($q80) != 1) {
            // Ovo se ne bi smjelo desiti!
            niceerror("Naziv predmeta je predugačak. Kontaktirajte administratora");
            zamgerlog("nije pronadjen tacno jedan tip predmeta", 3);
            zamgerlog2("nije pronadjen tacno jedan tip predmeta", $predmet, $ag, 0, $naziv_tipa);
            return;
        }
        $tip_predmeta = mysql_result($q80, 0, 0);
        // -- mora postojati tačno jedan
        // Spašavamo naše novodefinisane komponente
        // Podaci su sačuvani u cookie-jima i samim time im se ne može vjerovati!
        $TabelaKomponenti = $_SESSION['TabelaKomponenti'];
        $BrojKomponenti = count($TabelaKomponenti);
        $prvi_parcijalni_id = $drugi_parcijalni_id = 0;
        $potreban_update = false;
        for ($i = 0; $i < $BrojKomponenti; $i++) {
            if ($TabelaKomponenti[$i]['odabrana'] != 1) {
                continue;
            }
            $tipKomponente = intval($TabelaKomponenti[$i]['tip']);
            $guiNaziv = substr(my_escape($TabelaKomponenti[$i]['naziv']), 0, 20);
            // Dužina naziva je 20 slova
            $kratkiNaziv = substr(my_escape($TabelaKomponenti[$i]['kratkiNaziv']), 0, 20);
            $maxBodova = floatval($TabelaKomponenti[$i]['maxBodova']);
            $prolazBodova = floatval($TabelaKomponenti[$i]['prolazBodova']);
            $opcija = my_escape($TabelaKomponenti[$i]['opcija']);
            if ($TabelaKomponenti[$i]['uslov'] == 1) {
                $uslov = 1;
            } else {
                $uslov = 0;
            }
            // Kod drugog parcijalnog ispita, za polje opcija treba znati
            // tačno koji ID su dobile komponente za prvi i drugi parcijalni
            if ($tipKomponente == 2) {
                $opcija = "{$prvi_parcijalni_id}+{$drugi_parcijalni_id}";
                $prvi_parcijalni_id = $drugi_parcijalni_id = 0;
            }
            // Usmeni pretvaramo u običan ispit
            if ($tipKomponente == -1) {
                $tipKomponente = 1;
            }
            // Da li je predmet već imao ovakvu komponentu?
            // Koristimo istu kako bi bili sačuvani bodovi ako je moguće
            $q85 = myquery("select k.id from tippredmeta_komponenta as tpk, komponenta as k where tpk.tippredmeta={$stari_tip_predmeta} and tpk.komponenta=k.id and k.gui_naziv='{$guiNaziv}' and k.kratki_gui_naziv='{$kratkiNaziv}' and k.tipkomponente={$tipKomponente} and k.maxbodova={$maxBodova} and k.prolaz={$prolazBodova} and k.uslov={$uslov} and k.opcija='{$opcija}'");
            if (mysql_num_rows($q85) > 0) {
                $id_komponente = mysql_result($q85, 0, 0);
            } else {
                // Da li uopće postoji takva komponenta?
                $q90 = myquery("select k.id from komponenta as k where k.gui_naziv='{$guiNaziv}' and k.kratki_gui_naziv='{$kratkiNaziv}' and k.tipkomponente={$tipKomponente} and k.maxbodova={$maxBodova} and k.prolaz={$prolazBodova} and k.uslov={$uslov} and k.opcija='{$opcija}'");
                if (mysql_num_rows($q90) > 0) {
                    $id_komponente = mysql_result($q90, 0, 0);
                } else {
                    // Kreiramo novu komponentu
                    // Ovaj naziv komponente bi trebao biti unique
                    // osim ako korisnik da npr. ispitu ime "Zadaća" ili tako nešto :s
                    $naziv_komponente = $guiNaziv . " (" . $tip_predmeta . ")";
                    $q95 = myquery("INSERT INTO komponenta set naziv='{$naziv_komponente}', gui_naziv='{$guiNaziv}', kratki_gui_naziv='{$kratkiNaziv}', tipkomponente={$tipKomponente}, maxbodova={$maxBodova}, prolaz={$prolazBodova}, uslov={$uslov}, opcija='{$opcija}'");
                    $q100 = myquery("select id from komponenta where naziv='{$naziv_komponente}'");
                    $id_komponente = mysql_result($q100, 0, 0);
                }
                // Pokušavamo migrirati eventualne postojeće podatke
                // Posljedica će biti da su podaci izvan dozvoljenog opsega, što će korisnik morati popraviti ručno
                if ($tipKomponente == 1 || $tipKomponente == 2) {
                    // ispit
                    $q300 = myquery("select i.id, k.kratki_gui_naziv, k.tipkomponente from ispit as i, komponenta as k where i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=k.id");
                    while ($r300 = mysql_fetch_row($q300)) {
                        if ($r300[2] == 2 && $tipKomponente == 2) {
                            $q310 = myquery("update ispit set komponenta={$id_komponente} where id={$r300['0']}");
                            $potreban_update = true;
                        }
                        if ($r300[2] == 1 && $tipKomponente == 1 && $r300[1] == $kratkiNaziv) {
                            $q310 = myquery("update ispit set komponenta={$id_komponente} where id={$r300['0']}");
                            $potreban_update = true;
                        }
                    }
                }
                if ($tipKomponente == 3) {
                    // prisustvo
                    $q320 = myquery("select c.id from cas as c, labgrupa as l where c.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}");
                    while ($r320 = mysql_fetch_row($q320)) {
                        $q330 = myquery("update cas set komponenta={$id_komponente} where id={$r320['0']}");
                        $potreban_update = true;
                    }
                }
                if ($tipKomponente == 4) {
                    // zadace
                    $q320 = myquery("select count(*) from zadaca where predmet={$predmet} and akademska_godina={$ag}");
                    if (mysql_num_rows($q320) > 0) {
                        $q330 = myquery("update zadaca set komponenta={$id_komponente} where predmet={$predmet} and akademska_godina={$ag}");
                        $potreban_update = true;
                    }
                }
                // Fiksne komponente ignorišemo, ali ih nećemo brisati za slučaj da se korisnik predomisli
            }
            if ($tipKomponente == 1) {
                if ($prvi_parcijalni_id == 0) {
                    $prvi_parcijalni_id = $id_komponente;
                } else {
                    if ($drugi_parcijalni_id == 0) {
                        $drugi_parcijalni_id = $id_komponente;
                    }
                }
            }
            $q110 = myquery("INSERT INTO tippredmeta_komponenta set tippredmeta={$tip_predmeta}, komponenta={$id_komponente}");
        }
        // Od sada ovaj predmet je novokreiranog tipa
        $q120 = myquery("UPDATE akademska_godina_predmet set tippredmeta={$tip_predmeta} where akademska_godina={$ag} and predmet={$predmet}");
        // Ako nijedan predmet više ne koristi stari tip predmeta, brišemo ga
        $q130 = myquery("select count(*) from akademska_godina_predmet where tippredmeta={$stari_tip_predmeta}");
        if (mysql_result($q130, 0, 0) == 0) {
            $q140 = myquery("delete from tippredmeta where id={$stari_tip_predmeta}");
            // Brišemo veze iz tabele tippredmeta_komponenta
            $q150 = myquery("select komponenta from tippredmeta_komponenta where tippredmeta={$stari_tip_predmeta}");
            while ($r150 = mysql_fetch_row($q150)) {
                $q160 = myquery("delete from tippredmeta_komponenta where tippredmeta={$stari_tip_predmeta} and komponenta={$r150['0']}");
                // Ako nijedan tip predmeta više ne koristi ovu komponentu, brišemo i nju
                $q170 = myquery("select count(*) from tippredmeta_komponenta where komponenta={$r150['0']}");
                if (mysql_result($q170, 0, 0) == 0) {
                    $q180 = myquery("delete from komponenta where id={$r150['0']}");
                }
            }
        }
        // Updatujemo studentima bodove u tabeli komponentebodovi
        if ($potreban_update) {
            $q185 = myquery("select sp.student, sp.predmet from student_predmet as sp, ponudakursa as pk where sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}");
            while ($r185 = mysql_fetch_row($q185)) {
                update_komponente($r185[0], $r185[1], 0);
            }
        }
        zamgerlog("kreiran tip predmeta '{$predmet_naziv}" . "{$ag}", 4);
        zamgerlog2("kreiran tip predmeta", $predmet, $ag, 0, $naziv_tipa);
        nicemessage("Novi sistem bodovanja je potvrđen");
        print "<a href=\"?sta=nastavnik/tip&predmet={$predmet}&ag={$ag}\">Nazad na početnu stranicu</a>";
        return;
    }
    // Izbor jednog od postojećih tipova predmeta
    if ($akcija == "postojeci_tip_potvrda" && check_csrf_token()) {
        // Odredjujemo stari tip predmeta
        $q20 = myquery("select t.id, t.naziv from akademska_godina_predmet as agp, tippredmeta as t where agp.akademska_godina={$ag} and agp.predmet={$predmet} and agp.tippredmeta=t.id");
        $stari_tip_predmeta = mysql_result($q20, 0, 0);
        $tip_predmeta = intval($_POST['tip_predmeta']);
        // novi tip predmeta
        $q190 = myquery("UPDATE akademska_godina_predmet SET tippredmeta={$tip_predmeta} WHERE predmet={$predmet} AND akademska_godina={$ag}");
        // Ako nijedan predmet više ne koristi stari tip predmeta, brišemo ga
        $q130 = myquery("select count(*) from akademska_godina_predmet where tippredmeta={$stari_tip_predmeta}");
        if (mysql_result($q130, 0, 0) == 0) {
            $q140 = myquery("delete from tippredmeta where id={$stari_tip_predmeta}");
            // Brišemo veze iz tabele tippredmeta_komponenta
            $q150 = myquery("select komponenta from tippredmeta_komponenta where tippredmeta={$stari_tip_predmeta}");
            while ($r150 = mysql_fetch_row($q150)) {
                $q160 = myquery("delete from tippredmeta_komponenta where tippredmeta={$stari_tip_predmeta} and komponenta={$r150['0']}");
                // Ako nijedan tip predmeta više ne koristi ovu komponentu, brišemo i nju
                $q170 = myquery("select count(*) from tippredmeta_komponenta where komponenta={$r150['0']}");
                if (mysql_result($q170, 0, 0) == 0) {
                    $q180 = myquery("delete from komponenta where id={$r150['0']}");
                }
            }
        }
        zamgerlog("promijenjen tip predmeta pp" . $predmet . " u {$tip_predmeta}", 4);
        zamgerlog2("promijenjen tip predmeta", $predmet, $ag, 0, $tip_predmeta);
        nicemessage("Odabran je sistem bodovanja na predmetu");
        print "<a href=\"?sta=nastavnik/tip&predmet={$predmet}&ag={$ag}\">Nazad na početnu stranicu</a>";
        return;
    }
    // Izmjena podataka o komponentama smještenih u tabelu komponenti
    if ($_POST['izmjena'] == "da" && check_csrf_token()) {
        // Izmjena se vrši na nivou stranice
        // Stranica u principu odgovara svim komponentama određenog tipa (osim završnog ispita)
        $tmpTabelaKomponenti = $_SESSION['TabelaKomponenti'];
        $BrojKomponenti = count($tmpTabelaKomponenti);
        $TabelaKomponenti = array();
        // Izbacujemo sve komponente datog tipa iz niza.
        // Ponovo ćemo ih dodati nakon validacije
        $j = 0;
        for ($i = 0; $i < $BrojKomponenti; $i++) {
            if ($korak == "fiksne" && $tmpTabelaKomponenti[$i]['tip'] == 5) {
                continue;
            }
            if ($korak == "prisustvo" && $tmpTabelaKomponenti[$i]['tip'] == 3) {
                continue;
            }
            if ($korak == "zadace" && $tmpTabelaKomponenti[$i]['tip'] == 4) {
                continue;
            }
            if ($korak == "ispiti" && ($tmpTabelaKomponenti[$i]['tip'] == 1 || $tmpTabelaKomponenti[$i]['tip'] == 2)) {
                continue;
            }
            if ($korak == "usmeni" && $tmpTabelaKomponenti[$i]['tip'] == -1) {
                continue;
            }
            $TabelaKomponenti[$j++] = $tmpTabelaKomponenti[$i];
        }
        // Validacija podataka
        if ($korak == "fiksne") {
            $broj = $brojK;
        } else {
            if ($korak == "ispiti") {
                $broj = $brojIspita;
            } else {
                if ($korak == "zadace") {
                    $broj = $brojZadaca;
                } else {
                    if ($korak == "prisustvo") {
                        $broj = $brojPrisustva;
                    } else {
                        if ($korak == "usmeni") {
                            $broj = 1;
                        }
                    }
                }
            }
        }
        $sveOk = true;
        for ($i = 0; $i < $broj; $i++) {
            // Preuzimamo podatke sa forme
            $tipKomponente = intval($_POST['tipKomponente' . $i]);
            $naziv = my_escape($_POST['nazivKomponente' . $i]);
            $kratkiNaziv = my_escape($_POST['kratkiNaziv' . $i]);
            $maxBodova = floatval(str_replace(",", ".", $_POST['maxBodova' . $i]));
            $prolazBodova = floatval(str_replace(",", ".", $_POST['prolazBodova' . $i]));
            $opcija = my_escape($_POST['opcija' . $i]);
            if (isset($_POST['odabrana' . $i])) {
                $odabrana = 1;
            } else {
                $odabrana = 0;
            }
            if (isset($_POST['uslov' . $i])) {
                $zauslov = 1;
            } else {
                $zauslov = 0;
            }
            // Posebni uslovi za vrste komponenti
            if ($kratkiNaziv == "") {
                $kratkiNaziv = $naziv;
            }
            if ($tipKomponente == 3) {
                // prisustvo
                $opcija = intval($opcija);
            }
            // ovdje je opcija broj dozvoljenih izostanaka
            if ($tipKomponente == 1) {
                // Kod ispita je vrsta ispita ovisna o redoslijedu:
                // 0 - prvi parcijalni, 1 - drugi parcijalni, 2 - integralni,
                // 3 i dalje - ostali ispiti (običnog tipa)
                if ($i == 0) {
                    $prviParcMax = $maxBodova;
                    $prviParcProlaz = $prolazBodova;
                }
                if ($i == 1) {
                    $drugiParcMax = $maxBodova;
                    $drugiParcProlaz = $prolazBodova;
                }
            }
            if ($tipKomponente == 2) {
                $maxBodova = $prviParcMax + $drugiParcMax;
                $prolazBodova = $prviParcProlaz + $drugiParcProlaz;
            }
            // Bodovi za prolaz ne smiju biti veći od maksimalnog broja bodova.
            if ($maxBodova < $prolazBodova) {
                niceerror("Maksimalan broj bodova za komponentu mora biti veći od broja bodova potrebnih za prolaz!");
                $sveOk = false;
                break;
            }
            // Neki od parametara za komponentu je ostao nedefinisan
            if ($odabrana == 1 && ($maxBodova == 0 || $naziv == "")) {
                niceerror("Potrebno je definisati sve parametre kako biste dodali komponentu!");
                $sveOk = false;
                break;
            }
            // Da li se naziv ili kratki naziv ponavljaju?
            for ($k = 0; $k < $j; $k++) {
                if ($naziv == $TabelaKomponenti[$k]['naziv']) {
                    niceerror("Već postoji komponenta sa tim nazivom!");
                    $sveOk = false;
                    break;
                }
                if ($kratkiNaziv == $TabelaKomponenti[$k]['kratkiNaziv']) {
                    niceerror("Već postoji komponenta sa tim kratkim nazivom!");
                    $sveOk = false;
                    break;
                }
            }
            if (!$sveOk) {
                break;
            }
            // Validacija završena, dodajemo slog u tabelu komponenti
            $TabelaKomponenti[$j]['tip'] = $tipKomponente;
            $TabelaKomponenti[$j]['naziv'] = $naziv;
            $TabelaKomponenti[$j]['kratkiNaziv'] = $kratkiNaziv;
            $TabelaKomponenti[$j]['maxBodova'] = $maxBodova;
            $TabelaKomponenti[$j]['prolazBodova'] = $prolazBodova;
            $TabelaKomponenti[$j]['opcija'] = $opcija;
            $TabelaKomponenti[$j]['uslov'] = $zauslov;
            $TabelaKomponenti[$j]['odabrana'] = $odabrana;
            $j++;
        }
        // Sve je ok, upisujemo komponente u sesiju (meni će ponovo pročitati iz sesije)
        if ($sveOk) {
            $_SESSION['TabelaKomponenti'] = $TabelaKomponenti;
        }
    }
    // Wizard za kreiranje novog tipa predmeta
    if ($akcija == "wizard") {
        // Ispis menija na vrhu ekrana
        ?>
	&nbsp;<br>
	<b>Definisanje vlastitog sistema bodovanja</b><br>
	<br><br>
	
	<table cellspacing="0" cellpadding="2" style="border:0px; border-style:solid; border-color:black; margin-left: 0px">
		<tr>
		<?php 
        if ($korak == false) {
            $korak = "naziv";
        }
        $registry = array(array("Naziv tipa-->", "naziv"), array("Pismeni ispiti-->", "ispiti"), array("Zadaće-->", "zadace"), array("Prisustvo-->", "prisustvo"), array("Završni ispit-->", "usmeni"), array("Fiksne komponente-->", "fiksne"), array("Pregled", "pregled"));
        foreach ($registry as $r) {
            if ($r[1] == $korak) {
                $bgcolor = "#eeeeee";
            } else {
                $bgcolor = "#cccccc";
            }
            ?>
<td height="20"  bgcolor="<?php 
            echo $bgcolor;
            ?>
" onmouseover="this.bgColor='#ffffff'" onmouseout="this.bgColor='<?php 
            echo $bgcolor;
            ?>
'">
				<a href="?sta=nastavnik/tip&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
&akcija=wizard&korak=<?php 
            echo $r[1];
            ?>
&komp=<?php 
            echo $brojK;
            ?>
&brojIspita=<?php 
            echo $brojIspita;
            ?>
&brojZadaca=<?php 
            echo $brojZadaca;
            ?>
&brojPrisustva=<?php 
            echo $brojPrisustva;
            ?>
" class="malimeni"><?php 
            echo $r[0];
            ?>
</a>
			</td>
			<?php 
            // Linkovi na prethodni i sljedeći korak
            if ($r[1] == $korak) {
                $prethodni_korak = $k;
            }
            if ($k == $korak) {
                $sljedeci_korak = $r[1];
            }
            $k = $r[1];
        }
        ?>
	</tr></table>
	<p>&nbsp;</p>
	<?php 
        // Čitamo do sada definisane podatke iz sesije
        $tmpTabelaKomponenti = $_SESSION['TabelaKomponenti'];
        $BrojKomponenti = count($tmpTabelaKomponenti);
        $TabelaKomponenti = array();
        // Izdvajamo komponente željenog tipa na osnovu odabrane stranice
        $j = 0;
        for ($i = 0; $i < $BrojKomponenti; $i++) {
            if ($korak == "fiksne" && $tmpTabelaKomponenti[$i]['tip'] == 5) {
                $TabelaKomponenti[$j++] = $tmpTabelaKomponenti[$i];
            }
            if ($korak == "prisustvo" && $tmpTabelaKomponenti[$i]['tip'] == 3) {
                $TabelaKomponenti[$j++] = $tmpTabelaKomponenti[$i];
            }
            if ($korak == "zadace" && $tmpTabelaKomponenti[$i]['tip'] == 4) {
                $TabelaKomponenti[$j++] = $tmpTabelaKomponenti[$i];
            }
            if ($korak == "ispiti" && ($tmpTabelaKomponenti[$i]['tip'] == 1 || $tmpTabelaKomponenti[$i]['tip'] == 2)) {
                $TabelaKomponenti[$j++] = $tmpTabelaKomponenti[$i];
            }
            if ($korak == "usmeni" && $tmpTabelaKomponenti[$i]['tip'] == -1) {
                $TabelaKomponenti[$j++] = $tmpTabelaKomponenti[$i];
            }
        }
        // Meni opcija za definisanje naziva novog tipa predmeta
        if ($korak == "naziv") {
            // Naziv NE može biti isti kao stari naziv pošto ne znamo da li još neki predmeti koriste isti tip
            $novi_naziv = $predmet_naziv;
            $q210 = myquery("select count(*) from tippredmeta where naziv='{$novi_naziv}'");
            $broj = 0;
            while (mysql_result($q210, 0, 0) > 0) {
                $broj++;
                $novi_naziv = "{$predmet_naziv} {$broj}";
                $q210 = myquery("select count(*) from tippredmeta where naziv='{$novi_naziv}'");
            }
            ?>
		</br>
		<font size="2">Naziv vašeg novokreiranog tipa predmeta će biti <?php 
            echo $novi_naziv;
            ?>
.</font>
		<br><br><br>
		<?php 
        } else {
            if ($korak == "fiksne") {
                // Definisanje fiksnih komponenti
                if ($j > $brojK) {
                    $brojK = $j;
                }
                ?>
		<div id="fiksne">Ovdje možete definisati vlastite komponente predmeta koje se boduju npr. seminarski rad i slično.</div>
		</br></br>
		<table>
		<tr>
			<td>
				<!-- <form method="post" action=""> -->   
				<?php 
                print genform_hani();
                ?>
				<input type="hidden" name="izmjena" value="da">
				<input type="hidden" name="sta" value="nastavnik/tip">
				<table border="0">
				<tr bgcolor="#bbbbbb">
					<td>Naziv komponente</td><td>Max. bodova</td><td>Prolaz</td><td>Dodaj</td><td>Uslov</td>
				</tr>
				<?php 
                for ($i = 0; $i < $brojK; $i++) {
                    if ($bgcolor == "") {
                        $bgcolor = "bgcolor=\"#efefef\"";
                    } else {
                        $bgcolor = "";
                    }
                    ?>
					<tr <?php 
                    echo $bgcolor;
                    ?>
>
						<input type="hidden" name="opcija<?php 
                    echo $i;
                    ?>
" value="">
						<input type="hidden" name="tipKomponente<?php 
                    echo $i;
                    ?>
" value="5">
						<td width="30"><input style="text" name="nazivKomponente<?php 
                    echo $i;
                    ?>
" width="29" align="middle" value="<?php 
                    echo $TabelaKomponenti[$i]['naziv'];
                    ?>
"/></td>
						<td width="30"><input style="text" name="maxBodova<?php 
                    echo $i;
                    ?>
" width="29" align="middle" value="<?php 
                    echo $TabelaKomponenti[$i]['maxBodova'];
                    ?>
"/></td>
						<td width="30"><input style="text" name="prolazBodova<?php 
                    echo $i;
                    ?>
" width="29" align="middle" value="<?php 
                    echo $TabelaKomponenti[$i]['prolazBodova'];
                    ?>
"/></td>
						<td width="30"><input type="checkbox" name="odabrana<?php 
                    echo $i;
                    ?>
" value="Dodaj" onclick="this.form.submit();" <?php 
                    if ($TabelaKomponenti[$i]['odabrana'] == 1) {
                        print "checked=\"yes\"";
                    }
                    ?>
 /></td>
						<td width="30"><input type="checkbox" name="uslov<?php 
                    echo $i;
                    ?>
" value="Uslov" onclick="this.form.submit();" <?php 
                    if ($TabelaKomponenti[$i]['uslov'] == 1) {
                        print "checked=\"yes\"";
                    }
                    ?>
/></td>
					</tr>
				<?php 
                }
                ?>
				</table>
				</form>
				</br>
				<a href='?sta=nastavnik/tip&predmet=<?php 
                echo $predmet;
                ?>
&ag=<?php 
                echo $ag;
                ?>
&akcija=wizard&korak=fiksne&komp=<?php 
                echo $brojK + 1;
                ?>
&brojIspita=<?php 
                echo $brojIspita;
                ?>
&brojZadaca=<?php 
                echo $brojZadaca;
                ?>
&brojPrisustva=<?php 
                echo $brojPrisustva;
                ?>
'><font size="1" color="#000066">Dodaj komponentu</font></a>
				</br></br>
			</td>
			<td width="20 px"></td>
			<td><?php 
                pregled_predmeta_bez_naziva($predmet);
                ?>
</td>
		</tr>
		</table>
		<?php 
            } else {
                if ($korak == "ispiti") {
                    if ($j > $brojIspita) {
                        $brojIspita = $j;
                    }
                    ?>
		<table>
		<tr>
			<td>
				<!-- <form method="post" action=""> -->   
				<?php 
                    print genform_hani();
                    ?>
				<input type="hidden" name="izmjena" value="da">
				<input type="hidden" name="sta" value="nastavnik/tip">
				<table border="0">
				<tr bgcolor="#bbbbbb">
					<td>Naziv</td><td>Max. bodova</td><td>Prolaz</td><td>Dodaj</td><td>Uslov</td>
				</tr>
				<tr>
					<input type="hidden" name="opcija0" value="">
					<input type="hidden" name="nazivKomponente0" value="I parcijalni">
					<input type="hidden" name="kratkiNaziv0" value="I parc">
					<input type="hidden" name="tipKomponente0" value="1">
					<td width="150">Prvi parcijalni ispit</td>
					<td width="30"><input style="text" name="maxBodova0" width="29" align="middle" value="<?php 
                    echo $TabelaKomponenti[0]['maxBodova'];
                    ?>
" /></td>
					<td width="30"><input style="text" name="prolazBodova0" width="29" align="middle" value="<?php 
                    echo $TabelaKomponenti[0]['prolazBodova'];
                    ?>
" /></td>
					<td width="30"><input type="checkbox" name="odabrana0" value="Dodaj" onclick="this.form.submit();" <?php 
                    if ($TabelaKomponenti[0]['odabrana'] == 1) {
                        print "checked=\"yes\"";
                    }
                    ?>
/></td>
					<td width="30"><input type="checkbox" name="uslov0" value="Uslov" onclick="this.form.submit();" <?php 
                    if ($TabelaKomponenti[0]['uslov'] == 1) {
                        print "checked=\"yes\"";
                    }
                    ?>
/></td>
				</tr>
				<tr bgcolor="#efefef">
					<input type="hidden" name="opcija1" value="">
					<input type="hidden" name="nazivKomponente1" value="II parcijalni">
					<input type="hidden" name="kratkiNaziv1" value="II parc">
					<input type="hidden" name="tipKomponente1" value="1">
					<td width="150">Drugi parcijalni ispit</td>
					<td width="30"><input style="text" name="maxBodova1" width="29" align="middle" value="<?php 
                    echo $TabelaKomponenti[1]['maxBodova'];
                    ?>
" /></td>
					<td width="30"><input style="text" name="prolazBodova1" width="29" align="middle" value="<?php 
                    echo $TabelaKomponenti[1]['prolazBodova'];
                    ?>
" /></td>
					<td width="30"><input type="checkbox" name="odabrana1" value="Dodaj" onclick="this.form.submit();" <?php 
                    if ($TabelaKomponenti[1]['odabrana'] == 1) {
                        print "checked=\"yes\"";
                    }
                    ?>
/></td>
					<td width="30"><input type="checkbox" name="uslov1" value="Uslov" onclick="this.form.submit();" <?php 
                    if ($TabelaKomponenti[1]['uslov'] == 1) {
                        print "checked=\"yes\"";
                    }
                    ?>
/></td>
				</tr>
				<tr>
					<input type="hidden" name="opcija2" value="">
					<input type="hidden" name="nazivKomponente2" value="Integralni">
					<input type="hidden" name="kratkiNaziv2" value="Int">
					<input type="hidden" name="tipKomponente2" value="2">
					<!-- Biće izračunato automatski: -->
					<input type="hidden" name="maxBodova2" value="0">
					<input type="hidden" name="prolazBodova2" value="0">
					<td width="150">Integralni ispit</td>
					<td width="30"></td>
					<td width="30"></td>
					<td width="30"><input type="checkbox" name="odabrana2" value="Dodaj" onclick="this.form.submit();" <?php 
                    if ($TabelaKomponenti[2]['odabrana'] == 1) {
                        print "checked=\"yes\"";
                    }
                    ?>
/></td>
					<td width="30"><input type="checkbox" name="uslov2" value="Uslov" onclick="this.form.submit();" <?php 
                    if ($TabelaKomponenti[2]['uslov'] == 1) {
                        print "checked=\"yes\"";
                    }
                    ?>
/></td>
				</tr>
				<?php 
                    $bgcolor == "";
                    for ($i = 3; $i < $brojIspita; $i++) {
                        if ($bgcolor == "") {
                            $bgcolor = "bgcolor=\"#efefef\"";
                        } else {
                            $bgcolor = "";
                        }
                        ?>
					<tr <?php 
                        echo $bgcolor;
                        ?>
>
						<input type="hidden" name="opcija<?php 
                        echo $i;
                        ?>
" value="">
						<input type="hidden" name="tipKomponente<?php 
                        echo $i;
                        ?>
" value="1">
						<td width="30"><input style="text" name="nazivKomponente<?php 
                        echo $i;
                        ?>
" width="29" align="middle" value="<?php 
                        echo $TabelaKomponenti[$i]['naziv'];
                        ?>
"/></td>
						<td width="30"><input style="text" name="maxBodova<?php 
                        echo $i;
                        ?>
" width="29" align="middle" value="<?php 
                        echo $TabelaKomponenti[$i]['maxBodova'];
                        ?>
"/></td>
						<td width="30"><input style="text" name="prolazBodova<?php 
                        echo $i;
                        ?>
" width="29" align="middle" value="<?php 
                        echo $TabelaKomponenti[$i]['prolazBodova'];
                        ?>
"/></td>
						<td width="30"><input type="checkbox" name="odabrana<?php 
                        echo $i;
                        ?>
" value="Dodaj"  onclick="this.form.submit();" <?php 
                        if ($TabelaKomponenti[$i]['odabrana'] == 1) {
                            print "checked=\"yes\"";
                        }
                        ?>
 /></td>
						<td width="30"><input type="checkbox" name="uslov<?php 
                        echo $i;
                        ?>
" value="Uslov" onclick="this.form.submit();" <?php 
                        if ($TabelaKomponenti[$i]['uslov'] == 1) {
                            print "checked=\"yes\"";
                        }
                        ?>
 /></td>
					</tr>
					<?php 
                    }
                    ?>
				</table>
				</form>
			</td>
			<td width="10px">
			</td>
			<td><?php 
                    pregled_predmeta_bez_naziva($predmet);
                    ?>
</td>
		</tr>
		<tr>
			<td>
				</br>
				<a href='?sta=nastavnik/tip&predmet=<?php 
                    echo $predmet;
                    ?>
&ag=<?php 
                    echo $ag;
                    ?>
&akcija=wizard&korak=ispiti&komp=<?php 
                    echo $brojK;
                    ?>
&brojIspita=<?php 
                    echo $brojIspita + 1;
                    ?>
&brojZadaca=<?php 
                    echo $brojZadaca;
                    ?>
&brojPrisustva=<?php 
                    echo $brojPrisustva;
                    ?>
'><font size="1" color="#000066">Dodaj ispit</font></a>
				</br></br>
			</td>
		</tr>
		</table>
		<?php 
                } else {
                    if ($korak == "zadace") {
                        if ($j > $brojZadaca) {
                            $brojZadaca = $j;
                        }
                        ?>
		<table>
		<tr>
			<td>
				<?php 
                        print genform_hani();
                        ?>
				<input type="hidden" name="izmjena" value="da">
				<input type="hidden" name="sta" value="nastavnik/tip">
				<table border="0">
				<tr bgcolor="#bbbbbb">
					<td>Naziv</td><td>Max. bodova</td><td>Dodaj</td><td>Uslov</td>
				</tr>
				<tr>
					<input type="hidden" name="opcija0" value="">
					<input type="hidden" name="nazivKomponente0" value="Zadaće">
					<input type="hidden" name="tipKomponente0" value="4">
					<input type="hidden" name="prolazBodova0" value="0">
					<td width="150">Zadaće</td>
					<td width="30"><input style="text" name="maxBodova0" width="29" align="middle" value="<?php 
                        echo $TabelaKomponenti[0]['maxBodova'];
                        ?>
"/></td>
					<td width="30"><input type="checkbox" name="odabrana0" value="Dodaj" onclick="this.form.submit();" <?php 
                        if ($TabelaKomponenti[0]['odabrana'] == 1) {
                            print "checked=\"yes\"";
                        }
                        ?>
/></td>
					<td width="30"><input type="checkbox" name="uslov0" value="Uslov" onclick="this.form.submit();" <?php 
                        if ($TabelaKomponenti[0]['uslov'] == 1) {
                            print "checked=\"yes\"";
                        }
                        ?>
/></td>
				</tr>
				<?php 
                        $bgcolor == "bgcolor=\"#efefef\"";
                        for ($i = 1; $i < $brojZadaca; $i++) {
                            if ($bgcolor == "") {
                                $bgcolor = "bgcolor=\"#efefef\"";
                            } else {
                                $bgcolor = "";
                            }
                            ?>
					<tr <?php 
                            echo $bgcolor;
                            ?>
>
						<input type="hidden" name="opcija<?php 
                            echo $i;
                            ?>
" value="">
						<input type="hidden" name="tipKomponente<?php 
                            echo $i;
                            ?>
" value="4">
						<input type="hidden" name="prolazBodova<?php 
                            echo $i;
                            ?>
" value="0">
						<td width="30"><input style="text" name="nazivKomponente<?php 
                            echo $i;
                            ?>
" width="29" align="middle" value="<?php 
                            echo $TabelaKomponenti[$i]['naziv'];
                            ?>
"/></td>
						<td width="30"><input style="text" name="maxBodova<?php 
                            echo $i;
                            ?>
" width="29" align="middle" value="<?php 
                            echo $TabelaKomponenti[$i]['maxBodova'];
                            ?>
"/></td>
						<td width="30"><input type="checkbox" name="odabrana<?php 
                            echo $i;
                            ?>
" value="Dodaj"  onclick="this.form.submit();" <?php 
                            if ($TabelaKomponenti[$i]['odabrana'] == 1) {
                                print "checked=\"yes\"";
                            }
                            ?>
 /></td>
						<td width="30"><input type="checkbox" name="uslov<?php 
                            echo $i;
                            ?>
" value="Uslov" onclick="this.form.submit();" <?php 
                            if ($TabelaKomponenti[$i]['uslov'] == 1) {
                                print "checked=\"yes\"";
                            }
                            ?>
 /></td>
					</tr>
					<?php 
                        }
                        ?>
				</table>
				</form>
				</br></br>
			</td>
			<td width="20 px">
			</td>
			<td>
				<?php 
                        pregled_predmeta_bez_naziva($predmet);
                        ?>
			</td>
		</tr>
		<tr>
			<td>
				</br>
				<?php 
                        // Samo site admin može dodavati komponente zadaća
                        if ($user_siteadmin) {
                            ?>
					<a href="?sta=nastavnik/tip&predmet=<?php 
                            echo $predmet;
                            ?>
&ag=<?php 
                            echo $ag;
                            ?>
&akcija=wizard&korak=zadace&komp=<?php 
                            echo $brojK;
                            ?>
&brojIspita=<?php 
                            echo $brojIspita;
                            ?>
&brojZadaca=<?php 
                            echo $brojZadaca + 1;
                            ?>
&brojPrisustva=<?php 
                            echo $brojPrisustva;
                            ?>
"><font size="1" color="#000066">Dodaj komponentu zadaće</font></a>
					</br></br>
				<?php 
                        }
                        ?>
			</td>
		</tr>
		</table>
		<?php 
                    } else {
                        if ($korak == "prisustvo") {
                            if ($j > $brojPrisustva) {
                                $brojPrisustva = $j;
                            }
                            ?>
		<table>
		<tr>
			<td>
				<?php 
                            print genform_hani();
                            ?>
				<input type="hidden" name="izmjena" value="da">
				<input type="hidden" name="sta" value="nastavnik/tip">
				<table border="0">
				<tr bgcolor="#bbbbbb">
					<td>Naziv</td><td>Max. bodova</td><td>Dozvoljen broj izostanaka</td><td>Dodaj</td><td>Uslov</td>
				</tr>

				<tr>
					<input type="hidden" name="nazivKomponente0" value="Prisustvo">
					<input type="hidden" name="tipKomponente0" value="3">
					<input type="hidden" name="prolazBodova0" value="0">
					<td width="100">Prisustvo</td>
					<td width="30"><input style="text" name="maxBodova0" width="29" align="middle" value="<?php 
                            print $TabelaKomponenti[0]['maxBodova'];
                            ?>
" /></td>
					<td width="100"><input style="text" name="opcija0" width="29" align="middle" value="<?php 
                            print $TabelaKomponenti[0]['opcija'];
                            ?>
" /></td>
					<td width="30"><input type="checkbox" name="odabrana0" value="Dodaj" onclick="this.form.submit();" <?php 
                            if ($TabelaKomponenti[0]['odabrana'] == 1) {
                                print "checked=\"yes\"";
                            }
                            ?>
 /></td>
					<td width="30"><input type="checkbox" name="uslov0" value="Dodaj" onclick="this.form.submit();" <?php 
                            if ($TabelaKomponenti[0]['uslov'] == 1) {
                                print "checked=\"yes\"";
                            }
                            ?>
/></td>
				</tr>
				<?php 
                            $bgcolor == "bgcolor=\"#efefef\"";
                            for ($i = 1; $i < $brojPrisustva; $i++) {
                                if ($bgcolor == "") {
                                    $bgcolor = "bgcolor=\"#efefef\"";
                                } else {
                                    $bgcolor = "";
                                }
                                ?>
					<tr <?php 
                                echo $bgcolor;
                                ?>
>
						<input type="hidden" name="tipKomponente<?php 
                                echo $i;
                                ?>
" value="3">
						<input type="hidden" name="prolazBodova<?php 
                                echo $i;
                                ?>
" value="0">
						<td width="30"><input style="text" name="nazivKomponente<?php 
                                echo $i;
                                ?>
" width="29" align="middle" value="<?php 
                                echo $TabelaKomponenti[$i]['naziv'];
                                ?>
"/></td>
						<td width="30"><input style="text" name="maxBodova<?php 
                                echo $i;
                                ?>
" width="29" align="middle" value="<?php 
                                echo $TabelaKomponenti[$i]['maxBodova'];
                                ?>
"/></td>
						<td width="100"><input style="text" name="opcija<?php 
                                echo $i;
                                ?>
" width="29" align="middle" value="<?php 
                                echo $TabelaKomponenti[$i]['opcija'];
                                ?>
" /></td>
						<td width="30"><input type="checkbox" name="odabrana<?php 
                                echo $i;
                                ?>
" value="Dodaj"  onclick="this.form.submit();" <?php 
                                if ($TabelaKomponenti[$i]['odabrana'] == 1) {
                                    print "checked=\"yes\"";
                                }
                                ?>
 /></td>
						<td width="30"><input type="checkbox" name="uslov<?php 
                                echo $i;
                                ?>
" value="Uslov" onclick="this.form.submit();" <?php 
                                if ($TabelaKomponenti[$i]['uslov'] == 1) {
                                    print "checked=\"yes\"";
                                }
                                ?>
 /></td>
					</tr>
					<?php 
                            }
                            ?>
				</tr>
				</table>
				</form>
				</br></br>
			</td>
			<td width="20px">
			</td>
			<td>
				<?php 
                            pregled_predmeta_bez_naziva($predmet);
                            ?>
			</td>
		</tr>
		<tr>
			<td>
				</br>
				<p>Da bi se bodovi za prisustvo skalirali sa brojem izostanaka, pod Dozvoljen broj izostanaka unesite -1.<p>
				</br></br>
				<?php 
                            // Samo site admin može dodavati komponente prisustva
                            if ($user_siteadmin) {
                                ?>
					<a href="?sta=nastavnik/tip&predmet=<?php 
                                echo $predmet;
                                ?>
&ag=<?php 
                                echo $ag;
                                ?>
&akcija=wizard&korak=prisustvo&komp=<?php 
                                echo $brojK;
                                ?>
&brojIspita=<?php 
                                echo $brojIspita;
                                ?>
&brojZadaca=<?php 
                                echo $brojZadaca;
                                ?>
&brojPrisustva=<?php 
                                echo $brojPrisustva + 1;
                                ?>
"><font size="1" color="#000066">Dodaj komponentu prisustva</font></a>
					<?php 
                            }
                            ?>
				</br></br>
			</td>
		</tr>
		</table>
		<?php 
                        } else {
                            if ($korak == "usmeni") {
                                // Postoji samo jedan usmeni
                                // FIXME: usmeni je tipa 1 tako da se može desiti da bude izbrisan
                                // prilikom otvaranja taba "ispiti"
                                ?>
		<table>
		<tr>
			<td>
				<?php 
                                print genform_hani();
                                ?>
				<input type="hidden" name="izmjena" value="da">
				<input type="hidden" name="sta" value="nastavnik/tip">
				<table border="0">
				<tr bgcolor="#bbbbbb">
					<td></td><td>Max. bodova</td><td>Prolaz</td><td>Dodaj</td>
				</tr>

				<tr>
					<input type="hidden" name="nazivKomponente0" value="Završni ispit">
					<input type="hidden" name="kratkiNaziv0" value="Završni">
					<input type="hidden" name="tipKomponente0" value="-1">
					<td width="150">Završni ispit </td>
					<td width="30"><input style="text" name="maxBodova0" width="29" align="middle" value="<?php 
                                echo $TabelaKomponenti[0]['maxBodova'];
                                ?>
" /></td>
					<td width="30"><input style="text" name="prolazBodova0" width="29" align="middle" value="<?php 
                                echo $TabelaKomponenti[0]['prolazBodova'];
                                ?>
" /></td>
					<td width="30"><input type="checkbox" name="odabrana0" value="Dodaj" onclick="this.form.submit();" <?php 
                                if ($TabelaKomponenti[0]['odabrana'] == 1) {
                                    print "checked=\"yes\"";
                                }
                                ?>
 /></td>
				</tr>
				</table>
				</form>
				</br></br>
			</td>
			<td width="10px">
			</td>
			<td>
				<?php 
                                pregled_predmeta_bez_naziva($predmet);
                                ?>
			</td>
		</tr>
		</table>
		<?php 
                            } else {
                                if ($korak == "pregled") {
                                    // Posljednje upozorenje
                                    $q220 = myquery("select count(*) from cas as c, labgrupa as l where c.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}");
                                    $broj_casova = mysql_result($q220, 0, 0);
                                    $q230 = myquery("select count(*) from zadaca where predmet={$predmet} and akademska_godina={$ag}");
                                    $broj_zadaca = mysql_result($q230, 0, 0);
                                    $q240 = myquery("select count(*) from ispit where predmet={$predmet} and akademska_godina={$ag}");
                                    $broj_ispita = mysql_result($q240, 0, 0);
                                    if ($broj_casova > 0) {
                                        print "Na predmetu imate <b>{$broj_casova}</b> kreiranih časova sa prisustvom.<br>\n";
                                    }
                                    if ($broj_zadaca > 0) {
                                        print "Na predmetu imate <b>{$broj_zadaca}</b> kreiranih zadaća sa ocjenama, poslanim datotekama itd.<br>\n";
                                    }
                                    if ($broj_ispita > 0) {
                                        print "Na predmetu imate <b>{$broj_ispita}</b> kreiranih ispita.<br>\n";
                                    }
                                    if ($broj_casova + $broj_zadaca + $broj_ispita > 0) {
                                        print "<br><font color=\"red\"><b>SVI OVI PODACI ĆE BITI IZGUBLJENI</b> ako kliknete na dugme Spasi!!!</font><br><br><br>\n";
                                    }
                                    // Pregled definisanog tipa predmeta
                                    ?>
		</br>
		<font size="2">Pregled definisanog tipa predmeta:</font>
		</br></br>
		<div style="margin-left: 250px">
			<?php 
                                    pregled_predmeta_bez_naziva($predmet);
                                    ?>
		</div>
		</br></br>
		<table>
		<tr>
			<td><input type="button" class="default" onclick="location.href='?sta=nastavnik/tip&predmet=<?php 
                                    echo $predmet;
                                    ?>
&ag=<?php 
                                    echo $ag;
                                    ?>
&akcija=wizard&korak=fiksne&komp=<?php 
                                    echo $brojK;
                                    ?>
&brojIspita=<?php 
                                    echo $brojIspita;
                                    ?>
&brojZadaca=<?php 
                                    echo $brojZadaca;
                                    ?>
&brojPrisustva=<?php 
                                    echo $brojPrisustva;
                                    ?>
';" value="<< Nazad"></td>
			<td align="right" width="450 px">
				<?php 
                                    echo genform_hani("POST");
                                    ?>
				<input type="hidden" name="akcija" value="potvrda">
				<input type="submit" value="Spasi" />     </form>
			</td>
		</tr>
		</table>
		<?php 
                                }
                            }
                        }
                    }
                }
            }
        }
        // Završni linkovi Nazad i Dalje
        if ($korak != "pregled") {
            $nazadlink = "?sta=nastavnik/tip&predmet={$predmet}&ag={$ag}&akcija=wizard&korak={$prethodni_korak}&komp={$brojK}&brojIspita={$brojIspita}&brojZadaca={$brojZadaca}&brojPrisustva={$brojPrisustva}";
            $daljelink = "?sta=nastavnik/tip&predmet={$predmet}&ag={$ag}&akcija=wizard&korak={$sljedeci_korak}&komp={$brojK}&brojIspita={$brojIspita}&brojZadaca={$brojZadaca}&brojPrisustva={$brojPrisustva}";
            if ($korak == "naziv") {
                $nazadlink = "?sta=nastavnik/tip&predmet={$predmet}&ag={$ag}";
            }
            ?>
		<table>
			<tr>
				<td><input type="button" class="default" onclick="location.href='<?php 
            echo $nazadlink;
            ?>
';" value="<< Nazad"></td>
				<td align="right" width="450 px"><input type="button" class="default" onclick="location.href='<?php 
            echo $daljelink;
            ?>
';" value="Dalje >>"></td>
			</tr>
		</table>
		<?php 
        }
    }
    // Odabir jednog od postojećih tipova predmeta
    if ($akcija == "postojeci_tip") {
        $tip_predmeta = intval($_POST['tip_predmeta']);
        if (!$tip_predmeta) {
            $tip_predmeta = 1;
        }
        $_SESSION['spasi'] = $pregled;
        $q10 = myquery("select id,naziv from tippredmeta where id>0");
        ?>
	<?php 
        print genform_hani("POST", "zaPregled");
        ?>
	<input type="hidden" name="akcija" value="postojeci_tip">
	<input type="hidden" name="sta" value="nastavnik/tip">
	<font size=2 >Izaberite tip predmeta:</font>
	<select name="tip_predmeta" onchange="submit()">
	<?php 
        while ($r10 = mysql_fetch_row($q10)) {
            if ($r10[0] == $tip_predmeta) {
                $sel = "selected";
            } else {
                $sel = "";
            }
            print "<option {$sel} value='{$r10['0']}'>{$r10['1']}</option>\n";
        }
        ?>
	</select>
	</form>
	</br></br>
	Pregled odabranog tipa predmeta:
	</br></br>
	<div style="margin-left: 100px">
	<?php 
        pregled_predmeta($tip_predmeta);
        ?>
	</div>
	</br></br>
	<table>
	<tr>
		<td><input type="button" class="default" onclick="location.href='?sta=nastavnik/tip&predmet=<?php 
        echo $predmet;
        ?>
&ag=<?php 
        echo $ag;
        ?>
';" value="<< Nazad"></td>
		<td align="right" width="450 px">
			<?php 
        echo genform_hani("POST");
        ?>
			<input type="hidden" name="tip_predmeta" value="<?php 
        echo $tip_predmeta;
        ?>
">
			<input type="hidden" name="akcija" value="postojeci_tip_potvrda">
			<input type="submit" value="Spasi" />
			</form>
		</td>
	</tr>
	</table>
	<?php 
    }
    // Početna stranica
    if ($akcija == "") {
        ?>
	<span id="opomena">
		Promjenom sistema bodovanja na predmetu gube se svi pohranjeni podaci o ispitima, zadaćama i sl.
	</span>

	<p><a href='?sta=nastavnik/tip&predmet=<?php 
        echo $predmet;
        ?>
&ag=<?php 
        echo $ag;
        ?>
&akcija=postojeci_tip'>->Odaberite postojeći tip predmeta</a><br>
	<a href='?sta=nastavnik/tip&predmet=<?php 
        echo $predmet;
        ?>
&ag=<?php 
        echo $ag;
        ?>
&akcija=wizard&korak=naziv'>->Definišite vlastiti sistem bodovanja</a><br>
	</br></br></br>
	
	Trenutno definisane komponente na predmetu:
	</br></br>
	<div style="margin-left: 150px">
	<?php 
        $q10 = myquery("select tippredmeta from akademska_godina_predmet where predmet={$predmet} AND akademska_godina={$ag}");
        pregled_predmeta(mysql_result($q10, 0, 0));
        unset($_SESSION['TabelaKomponenti']);
        ?>
	</div>
	<?php 
    }
}
示例#7
0
文件: grupa.php 项目: msehalic/zamger
function saradnik_grupa()
{
    global $userid, $user_siteadmin;
    require "lib/manip.php";
    print '<p><a href="index.php?sta=saradnik/intro">Spisak predmeta i grupa</a></p>' . "\n";
    // ------- ULAZNI PARAMETRI
    $labgrupa = intval($_REQUEST['id']);
    $kreiranje = intval($_GET['kreiranje']);
    if ($labgrupa > 0) {
        // Određujemo predmet i ag za labgrupu
        $q30 = myquery("select naziv, predmet, akademska_godina, virtualna from labgrupa where id={$labgrupa}");
        if (mysql_num_rows($q30) < 1) {
            biguglyerror("Nemate pravo ulaska u ovu grupu!");
            zamgerlog("nepostojeca labgrupa {$labgrupa}", 3);
            // 3 = greska
            zamgerlog2("nepostojeca labgrupa", $labgrupa);
            return;
        }
        $naziv = mysql_result($q30, 0, 0);
        $predmet = mysql_result($q30, 0, 1);
        $ag = mysql_result($q30, 0, 2);
        $virtualna = mysql_result($q30, 0, 3);
    } else {
        // Ako nije definisana grupa, probacemo preko predmeta i ag uci u virtuelnu grupu
        $predmet = intval($_REQUEST['predmet']);
        $ag = intval($_REQUEST['ag']);
        $q35 = myquery("select id, naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=1");
        if (mysql_num_rows($q35) < 1) {
            biguglyerror("Nemate pravo ulaska u ovu grupu!");
            zamgerlog("nepostojeca virtualna labgrupa za predmet pp{$predmet} ag{$ag}", 3);
            // 3 = greska
            zamgerlog2("nepostojeca virtualna labgrupa", $predmet, $ag);
            return;
        }
        $labgrupa = mysql_result($q35, 0, 0);
        $naziv = mysql_result($q35, 0, 1);
        $virtualna = 1;
    }
    // Da li korisnik ima pravo ući u grupu?
    if (!$user_siteadmin) {
        $q40 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}");
        if (mysql_num_rows($q40) < 1) {
            biguglyerror("Nemate pravo ulaska u ovu grupu!");
            zamgerlog("nastavnik nije na predmetu (labgrupa g{$labgrupa})", 3);
            zamgerlog2("nije saradnik na predmetu", $predmet, $ag);
            return;
        }
        $privilegija = mysql_result($q40, 0, 0);
        $q50 = myquery("select o.labgrupa from ogranicenje as o, labgrupa as l where o.nastavnik={$userid} and o.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}");
        if (mysql_num_rows($q50) > 0) {
            $nasao = 0;
            while ($r50 = mysql_fetch_row($q50)) {
                if ($r50[0] == $labgrupa) {
                    $nasao = 1;
                    break;
                }
            }
            if ($nasao == 0) {
                biguglyerror("Nemate pravo ulaska u ovu grupu!");
                zamgerlog("ogranicenje na labgrupu g{$labgrupa}", 3);
                // 3 - greska
                zamgerlog2("ima ogranicenje na labgrupu", $labgrupa);
                return;
            }
        }
    }
    // Spisak komponenti koje su zastupljene na predmetu
    $tipovi_komponenti = array();
    $q52 = myquery("select k.id, k.tipkomponente from akademska_godina_predmet as agp, tippredmeta_komponenta as tpk, komponenta as k where agp.akademska_godina={$ag} and agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and tpk.komponenta=k.id");
    while ($r52 = mysql_fetch_row($q52)) {
        $tipovi_komponenti[$r52[0]] = $r52[1];
    }
    // ------- AKCIJE
    // Dodavanje casa
    if ($_POST['akcija'] == 'dodajcas' && check_csrf_token()) {
        // KOMPONENTA
        // Ovaj kod radi samo sa jednom komponentom prisustva. U budućnosti to bi moglo biti popravljeno, ali realno nema prevelike potrebe
        $datum = intval($_POST['godina']) . "-" . intval($_POST['mjesec']) . "-" . intval($_POST['dan']);
        $vrijeme = $_POST['vrijeme'];
        if (!preg_match("/^\\d?\\d\\:\\d\\d\$/", $vrijeme)) {
            niceerror("Vrijeme nije u ispravnom formatu!");
            print "<p>Vrijeme mora biti oblika HH:MM, a vi ste unijeli '{$vrijeme}'.</p>";
            print "<p><a href=\"?sta=saradnik/grupa&id={$labgrupa}\">Nazad</a></p>";
            return;
        }
        $predavanje = intval($_POST['predavanje']);
        // Ako se klikne na refresh, datum moze biti 0-0-0...
        if ($datum != "0-0-0") {
            // Tražimo komponentu prisustva i uzimamo prvu
            // FIXME: praktično je nemoguće registrovati čas za drugu komponentu
            $komponenta = 0;
            foreach ($tipovi_komponenti as $k_id => $tip) {
                if ($tip == 3) {
                    // 3 = prisustvo
                    $komponenta = $k_id;
                    break;
                }
            }
            if ($komponenta == 0) {
                niceerror("Nije definisana komponenta za prisustvo na ovom predmetu.");
                zamgerlog("nije definisana komponenta za prisustvo na pp{$predmet}", 3);
                zamgerlog2("nije definisana komponenta za prisustvo", $predmet, $ag);
                return;
            }
            $kviz = intval($_REQUEST['kviz']);
            $q60 = myquery("insert into cas set datum='{$datum}', vrijeme='{$vrijeme}', labgrupa={$labgrupa}, nastavnik={$userid}, komponenta={$komponenta}, kviz={$kviz}");
            $cas_id = mysql_insert_id();
            // Max bodova za komponentu
            $q75 = myquery("select maxbodova, opcija from komponenta where id={$komponenta}");
            $maxbodova = mysql_result($q75, 0, 0);
            $opcija = mysql_result($q75, 0, 1);
            // dodajemo u bazu default podatke za prisustvo i ocjene
            $q80 = myquery("select student from student_labgrupa where labgrupa={$labgrupa}");
            while ($r80 = mysql_fetch_row($q80)) {
                $stud_id = $r80[0];
                $prisustvo = intval($_POST['prisustvo']);
                // Potrebna nam je ponudakursa za update_komponente
                $q53 = myquery("select sp.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$stud_id} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}");
                $ponudakursa = mysql_result($q53, 0, 0);
                $q90 = mysql_query("insert into prisustvo set student={$stud_id}, cas={$cas_id}, prisutan={$prisustvo}");
                // Update radimo samo ako se registruje odsustvo ili ako je opcija=-1 (proporcionalni bodovi)
                if ($prisustvo == 0 || $opcija == -1) {
                    update_komponente($stud_id, $ponudakursa, $komponenta);
                } else {
                    // Ako nema uopšte bodova za komponentu, ubacićemo broj bodova
                    $q95 = myquery("select count(*) from komponentebodovi where student={$stud_id} and predmet={$ponudakursa} and komponenta={$komponenta}");
                    if (mysql_result($q95, 0, 0) == 0) {
                        $q97 = myquery("insert into komponentebodovi set student={$stud_id}, predmet={$ponudakursa}, komponenta={$komponenta}, bodovi={$maxbodova}");
                    }
                }
            }
            // Ako je odabrano "sa kvizom" kreiramo kviz
            if ($kviz > 0) {
                $q98 = myquery("select trajanje_kviza from kviz where id={$kviz}");
                $trajanje = mysql_result($q98, 0, 0) * 2;
                $q99 = myquery("update kviz set vrijeme_pocetak=NOW(), vrijeme_kraj=NOW() + INTERVAL {$trajanje} SECOND, labgrupa={$labgrupa} where id={$kviz}");
            }
            zamgerlog("registrovan cas c{$cas_id}", 2);
            // nivo 2: edit
            zamgerlog2("registrovan cas", $cas_id);
        }
    }
    // Brisanje casa
    if ($_POST['akcija'] == 'brisi_cas' && check_csrf_token()) {
        $cas_id = intval($_POST['_lv_casid']);
        // Updatujemo komponentu svima koji su bili prisutni
        $q103 = myquery("select komponenta from cas where id={$cas_id}");
        if (mysql_num_rows($q103) > 0) {
            $komponenta = mysql_result($q103, 0, 0);
            $q105 = myquery("select sp.student, sp.predmet from prisustvo as pr, student_predmet as sp, ponudakursa as pk where pr.cas={$cas_id} and pr.student=sp.student and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}");
            $studenti = $ponudekursa = array();
            while ($r105 = mysql_fetch_row($q105)) {
                array_push($studenti, $r105[0]);
                $ponudekursa[$r105[0]] = $r105[1];
            }
            $q100 = myquery("delete from prisustvo where cas={$cas_id}");
            $q110 = myquery("delete from cas where id={$cas_id}");
            foreach ($studenti as $student) {
                update_komponente($student, $ponudekursa[$student], $komponenta);
            }
            zamgerlog("obrisan cas {$cas_id}", 2);
            zamgerlog2("obrisan cas", $cas_id);
        }
    }
    // ------- ZAGLAVLJE STRANICE (naslov i sl.)
    $q130 = myquery("select naziv from predmet where id={$predmet}");
    $pime = mysql_result($q130, 0, 0);
    // Ne bi se smjelo desiti da je nepostojeci predmet, posto se to odredjuje iz labgrupe
    ?>
<br />
<center><h1><?php 
    echo $pime;
    ?>
 - <?php 
    echo $naziv;
    ?>
</h1></center>
<?php 
    // Ima li ikoga u grupi?
    $q140 = myquery("select count(student) from student_labgrupa where labgrupa={$labgrupa}");
    if (mysql_result($q140, 0, 0) < 1) {
        print "<p>Nijedan student nije u grupi</p>\n";
        return;
    }
    // JavaScript za prikaz popup prozora (trenutno se koristi samo za komentare)
    //  * FF ne podržava direktan poziv window.open() iz eventa
    ?>
<script language="JavaScript">
function firefoxopen(p1,p2,p3) { 
	window.open(p1,p2,p3);
}
</script>

<?php 
    // Cool editing box
    if ($privilegija == "nastavnik" || $privilegija == "super_asistent" || $user_siteadmin) {
        cool_box('ajah_start("index.php?c=N&sta=common/ajah&akcija=izmjena_ispita&idpolja="+zamger_coolbox_origcaller.id+"&vrijednost="+coolboxedit.value, "undo_coolbox()", "zamger_coolbox_origcaller=false");');
        ?>
	<script language="JavaScript">
	function undo_coolbox() {
		var greska = document.getElementById("zamger_ajah-info").innerText || document.getElementById("zamger_ajah-info").textContent;
		if (!greska.match(/\S/)) greska = "Došlo je do greške. Molimo kontaktirajte administratora.";
		alert(greska);
		zamger_coolbox_origcaller.innerHTML = zamger_coolbox_origvalue;
		zamger_coolbox_origcaller=false;
	}
	</script>
	<?php 
    }
    // ------- SPISAK NEPREGLEDANIH ZADAĆA
    if (in_array(4, $tipovi_komponenti)) {
        // 4 = zadaće
        // JavaScript za prikaz popup prozora sa zadaćom
        //  * Kod IE naslov prozora ('zadaca') ne smije sadržavati razmak i
        // ne smije biti prazan, a inače je nebitan
        ?>
	<script language="JavaScript">
	function openzadaca(e, student,zadaca,zadatak) {
		var evt = e || window.event;
		var url='index.php?sta=saradnik/zadaca&student='+student+'&zadaca='+zadaca+'&zadatak='+zadatak;
		if (evt.shiftKey)
			window.open(url,'_blank','width=600,height=600,scrollbars=yes');
		else
			window.open(url,'zadaca','width=600,height=600,scrollbars=yes');
	}
	</script>
	
	<?php 
        $q150 = myquery("SELECT zk.zadaca, zk.redni_broj, zk.student, a.ime, a.prezime, zk.status, z.naziv\n\tFROM zadatak as zk, osoba as a, student_labgrupa as sl, zadaca as z\n\tWHERE zk.student=a.id AND zk.student=sl.student \n\tAND sl.labgrupa={$labgrupa} AND zk.zadaca=z.id AND z.predmet={$predmet} AND z.akademska_godina={$ag}\n\tORDER BY zk.zadaca, zk.redni_broj, a.prezime, a.ime, zk.id DESC");
        $mzadaca = 0;
        $mzadatak = 0;
        $mstudent = 0;
        $print = "";
        while ($r150 = mysql_fetch_row($q150)) {
            if ($r150[0] == $mzadaca && $r150[1] == $mzadatak && $r150[2] == $mstudent) {
                continue;
            }
            $mzadaca = $r150[0];
            $mzadatak = $r150[1];
            $mstudent = $r150[2];
            if ($r150[5] != 4) {
                continue;
            }
            $print .= '<li><a href="#" onclick="javascript:openzadaca(event, \'' . $r150[2] . '\',\'' . $r150[0] . '\',\'' . $r150[1] . '\')">' . $r150[3] . " " . $r150[4] . " - " . $r150[6] . ", zadatak " . $r150[1] . "</a></li>";
        }
        if ($print != "") {
            print "<h2>Nove zadaće za pregled:</h2>\n<ul>{$print}</ul>";
        }
    }
    // ------- FORMA ZA NOVI ČAS
    if (in_array(3, $tipovi_komponenti)) {
        // 3 = prisustvo
        $dan = date("d");
        $mjesec = date("m");
        $godina = date("Y");
        $vrijeme = date("H:i");
        // Ujedno ćemo definisati i neke JavaScripte za prisustvo
        ?>
	<table border="0" width="100%"><tr><td valign="top" width="50%">&nbsp;</td>
	<td valign="top" width="50%">
		Registrujte novi čas:<br/>
		<?php 
        echo genform("POST");
        ?>
		<input type="hidden" name="akcija" value="dodajcas">
	
		Datum:
		<select name="dan" class="default"><?php 
        for ($i = 1; $i <= 31; $i++) {
            print "<option value=\"{$i}\"";
            if ($i == $dan) {
                print " selected";
            }
            print ">{$i}</option>";
        }
        ?>
</select>&nbsp;&nbsp;
		<select name="mjesec" class="default"><?php 
        for ($i = 1; $i <= 12; $i++) {
            print "<option value=\"{$i}\"";
            if ($i == $mjesec) {
                print " selected";
            }
            print ">{$i}</option>";
        }
        ?>
</select>&nbsp;&nbsp;
		<select name="godina" class="default"><?php 
        for ($i = 2005; $i <= 2020; $i++) {
            print "<option value=\"{$i}\"";
            if ($i == $godina) {
                print " selected";
            }
            print ">{$i}</option>";
        }
        ?>
</select><br/>
		Vrijeme: <input type="text" size="10" name="vrijeme" value="<?php 
        echo $vrijeme;
        ?>
"  class="default">
		<input type="submit" value="Registruj"  class="default"><br/><br/>
	
		<input type="radio" name="prisustvo" value="1" CHECKED>Svi prisutni
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		<input type="radio" name="prisustvo" value="0">Svi odsutni
		<?php 
        // Kreiraj čas sa kvizom
        $q160 = myquery("select smp.aktivan from studentski_modul_predmet as smp, studentski_modul as sm where smp.predmet={$predmet} and smp.akademska_godina={$ag} and smp.studentski_modul=sm.id and sm.modul='student/kviz'");
        if (mysql_num_rows($q160) > 0 && mysql_result($q160, 0, 0) == 1) {
            ?>
			<br>
			Sa kvizom: <select name="kviz"><option value="0">/</option>
			<?php 
            $q170 = myquery("select id,naziv from kviz where predmet={$predmet} and akademska_godina={$ag} and aktivan=1");
            while ($r170 = mysql_fetch_row($q170)) {
                print "<option value=\"{$r170['0']}\">{$r170['1']}</option>\n";
            }
            ?>
			</select>
			<?php 
        }
        ?>
	
	</form>
	</td></tr></table>
	
	<script language="JavaScript">
	var oldState = 0;
	var oldEvent;

	// Funkcija koja se poziva klikom na polje u tabeli
	function prisustvo(e,student,cas) {
		if (zamger_ajah_sending) {
			alert("Slanje u toku. Sačekajte malo.");
			return false;
		}
		var prisutan = invert(e,student,cas);
		ajah_start("index.php?c=N&sta=common/ajah&akcija=prisustvo&student="+student+"&cas="+cas+"&prisutan="+prisutan, "undo_prisustvo("+student+","+cas+","+prisutan+")");
	}

	// Funkcija koja se poziva u slučaju greške sa prisustvom
	function undo_prisustvo(student,cas,prisutan) {
		var greska = document.getElementById("zamger_ajah-info").innerText || document.getElementById("zamger_ajah-info").textContent;
		if (!greska.match(/\S/)) greska = "Došlo je do greške. Molimo kontaktirajte administratora.";
		alert(greska);
		invert(oldEvent, student, cas);
	}

	// Switchuje DA i NE
	function invert(e,student,cas) {
		var val = document.getElementById("danetekst-"+student+"-"+cas).innerHTML;
		var evt = e || window.event;
		oldEvent = e;

		// Shift služi za pristup neutralnom stanju /
		if (evt.shiftKey) {
			if (oldState == 0) {
				if (val == "DA") oldState = 1; else oldState = 2;
				document.getElementById("dane-"+student+"-"+cas).style.background = "#FFFFCC";
				document.getElementById("danetekst-"+student+"-"+cas).innerHTML = "/";
				return 3;
			} else {
				if (oldState==1) val="NE"; else val="DA"; // Invertujemo sa NE na DA i obrnuto
				oldState=0;
			}
		}

		if (val == "DA") {
			document.getElementById("dane-"+student+"-"+cas).style.background = "#FFCCCC";
			document.getElementById("danetekst-"+student+"-"+cas).innerHTML = "NE";
			return 1;
		} else {
			document.getElementById("dane-"+student+"-"+cas).style.background="#CCFFCC";
			document.getElementById("danetekst-"+student+"-"+cas).innerHTML = "DA";
			return 2;
		}
	}
	function upozorenje(cas) {
		if (confirm("Da li ste sigurni da želite obrisati čas?")) {
			// _lv_casid osigurava da genform() neće dodati još jedno hidden polje
			document.brisanjecasa._lv_casid.value=cas;
			document.brisanjecasa.submit();
		}
		return false;
	}
	
	</script>

	<!-- Pomocna forma za POST brisanje casa -->
	
	<?php 
        echo genform("POST", "brisanjecasa");
        ?>
	<input type="hidden" name="akcija" value="brisi_cas">
	<input type="hidden" name="_lv_casid" value="">
	</form>

	<?php 
    }
    // if (in_array(3, $tipovi_komponenti))
    // Ispis AJAH box-a neposredno iznad tablice grupe
    print ajah_box();
    // ------- TABLICA GRUPE - ZAGLAVLJE
    $minw = 0;
    // minimalna sirina tabele
    $mogucih_bodova = 0;
    // koliko bodova su studenti mogli osvojiti, radi procenta
    $zaglavlje1 = "";
    $zaglavlje2 = "";
    $prisustvo_id_array = array();
    // Zaglavlje prisustvo
    $q195 = myquery("SELECT k.id, k.gui_naziv, k.maxbodova FROM akademska_godina_predmet as agp, tippredmeta_komponenta as tpk, komponenta as k\nWHERE agp.predmet={$predmet} and agp.akademska_godina={$ag} and agp.tippredmeta=tpk.tippredmeta and tpk.komponenta=k.id and k.tipkomponente=3 ORDER BY k.id");
    // Ako nema nijedne komponente prisustva, upit neće vratiti ništa
    while ($r195 = mysql_fetch_row($q195)) {
        $casova = 0;
        $prisustvo_zaglavlje = "";
        $prisustvo_id_array[] = $r195[0];
        $cas_id_array = array();
        $cas_kviz_array = array();
        $q200 = myquery("SELECT id,datum,vrijeme,kviz FROM cas where labgrupa={$labgrupa} and komponenta={$r195['0']} ORDER BY datum, vrijeme");
        while ($r200 = mysql_fetch_row($q200)) {
            $cas_id = $r200[0];
            list($cas_godina, $cas_mjesec, $cas_dan) = explode("-", $r200[1]);
            list($cas_sat, $cas_minuta, $cas_sekunda) = explode(":", $r200[2]);
            $prisustvo_zaglavlje .= "<td align=\"center\">{$cas_dan}.{$cas_mjesec}<br/>{$cas_sat}:{$cas_minuta}";
            $prisustvo_zaglavlje .= '<br/><a href="javascript:onclick=upozorenje(' . "'{$cas_id}'" . ');"><img src="images/16x16/brisanje.png" border="0"></a>';
            $prisustvo_zaglavlje .= "</td>\n";
            $cas_id_array[] = $cas_id;
            $casova++;
            $minw += 40;
            // Kviz
            if ($r200[3] > 0) {
                $cas_kviz[$cas_id] = $r200[3];
                // Odredjujemo bodove za prolaz
                $q202 = myquery("select prolaz_bodova from kviz where id={$r200['3']}");
                $cas_kviz_prolaz[$cas_id] = mysql_result($q202, 0, 0);
                // Ako sam nekom drugom casu ranije dao ovaj id, moram ga obrisati
                foreach ($cas_id_array as $cid) {
                    if ($cid == $cas_id) {
                        continue;
                    }
                    if ($cas_kviz[$cid] == $r200[3]) {
                        $cas_kviz[$cid] = 0;
                    }
                }
            } else {
                // Ako kviz nije unesen u bazu, tražimo najbliži
                $q203 = myquery("select id, prolaz_bodova from kviz where predmet={$predmet} and akademska_godina={$ag} and vrijeme_pocetak>='{$r200['1']}' and vrijeme_pocetak<'{$r200['1']}' + interval 5 day order by vrijeme_pocetak desc");
                while ($r203 = mysql_fetch_row($q203)) {
                    // Da li je već bio?
                    $bio = false;
                    foreach ($cas_id_array as $cid) {
                        if ($cas_kviz[$cid] == $r203[0]) {
                            $bio = true;
                        }
                    }
                    if ($bio) {
                        continue;
                    }
                    $cas_kviz[$cas_id] = $r203[0];
                    $cas_kviz_prolaz[$cas_id] = $r203[1];
                    break;
                }
            }
        }
        $prisustvo_casovi[$r195[0]] = $cas_id_array;
        //	$prisustvo_maxbodova[$r195[0]] = $r195[2];
        //	$prisustvo_maxizostanaka[$r195[0]] = $r195[3];
        //	$prisustvo_minbodova[$r195[0]] = $r195[4];
        $mogucih_bodova += $r195[2];
        if ($prisustvo_zaglavlje == "") {
            $prisustvo_zaglavlje = "<td>&nbsp;</td>";
            $minw += 40;
            $casova = 1;
        }
        $zaglavlje1 .= "<td align=\"center\" colspan=\"" . ($casova + 1) . "\">{$r195['1']}</td>\n";
        $zaglavlje2 .= $prisustvo_zaglavlje;
        $zaglavlje2 .= "<td>BOD.</td>\n";
    }
    // Zaglavlje zadaće
    $zad_id_array = array();
    $q205 = myquery("SELECT k.id, k.gui_naziv FROM akademska_godina_predmet as agp, tippredmeta_komponenta as tpk, komponenta as k\nWHERE agp.predmet={$predmet} and agp.akademska_godina={$ag} and agp.tippredmeta=tpk.tippredmeta and tpk.komponenta=k.id and k.tipkomponente=4 ORDER BY k.id");
    // Ako nema nijedne komponente zadaća, upit neće vratiti ništa
    while ($r205 = mysql_fetch_row($q205)) {
        $brzadaca = 0;
        $zadace_zaglavlje = "";
        $komponenta = $r205[0];
        // Razvrstavamo zadaće po komponentama
        $q210 = myquery("select id,naziv,zadataka,bodova from zadaca where predmet={$predmet} and akademska_godina={$ag} and komponenta={$komponenta} order by id");
        while ($r210 = mysql_fetch_row($q210)) {
            $zadace_zaglavlje .= "<td width=\"60\" align=\"center\">{$r210['1']}<br /><a href=\"?sta=saradnik/svezadace&grupa={$labgrupa}&zadaca={$r210['0']}\">Download</a></td>\n";
            $zad_id_array[] = $r210[0];
            $zad_brz_array[$r210[0]] = $r210[2];
            $mogucih_bodova += $r210[3];
            $brzadaca++;
            $minw += 60;
        }
        if ($brzadaca > 0) {
            $zaglavlje1 .= "<td align=\"center\" colspan=\"{$brzadaca}\">{$r205['1']}</td>\n";
            $zaglavlje2 .= $zadace_zaglavlje;
        }
    }
    // Zaglavlje fiksne komponente
    $fiksna_prolaz = array();
    $fiksna_id_array = array();
    $q215 = myquery("SELECT k.id, k.gui_naziv, k.maxbodova, k.prolaz FROM akademska_godina_predmet as agp, tippredmeta_komponenta as tpk, komponenta as k\nWHERE agp.predmet={$predmet} and agp.akademska_godina={$ag} and agp.tippredmeta=tpk.tippredmeta and tpk.komponenta=k.id and k.tipkomponente=5 ORDER BY k.id");
    // Ako nema nijedne fiksne komponente, upit neće vratiti ništa
    while ($r215 = mysql_fetch_row($q215)) {
        $zaglavlje1 .= "<td align=\"center\" rowspan=\"2\">{$r215['1']}";
        $mogucih_bodova += $r215[2];
        $minw += 60;
        $fiksna_id_array[] = $r215[0];
        $fiksna_prolaz[$r215[0]] = $r215[3];
    }
    // Zaglavlje ispiti
    $broj_ispita = 0;
    $ispit_zaglavlje = "";
    $ispit_id_array = array();
    $q220 = myquery("select i.id, UNIX_TIMESTAMP(i.datum), k.id, k.kratki_gui_naziv, k.tipkomponente, k.maxbodova, k.prolaz, k.opcija from ispit as i, komponenta as k where i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=k.id order by i.datum,i.komponenta");
    // Ako nema komponenti sa ispitima, neće biti registrovan nijedan ispit
    while ($r220 = mysql_fetch_row($q220)) {
        if ($r220[4] == 5) {
            $ispit_zaglavlje .= "<td align=\"center\">{$r220['3']}</td>\n";
        } else {
            $ispit_zaglavlje .= "<td align=\"center\">{$r220['3']}<br/> " . date("d.m.", $r220[1]) . "</td>\n";
        }
        $ispit_id_array[] = $r220[0];
        $ispit_komponenta[$r220[0]] = $r220[2];
        // Pripremamo podatke o komponentama
        $komponenta_tip[$r220[2]] = $r220[4];
        $komponenta_maxb[$r220[2]] = $r220[5];
        $komponenta_prolaz[$r220[2]] = $r220[6];
        $komponenta_opcija[$r220[2]] = "{$r220['7']}";
        if ($r220[4] != 2) {
            $mogucih_bodova += $r220[5];
        }
        $minw += 40;
        $broj_ispita++;
    }
    if ($broj_ispita > 0) {
        $zaglavlje1 .= "<td align=\"center\" colspan=\"{$broj_ispita}\">Ispiti</td>\n";
        $zaglavlje2 .= $ispit_zaglavlje;
    }
    // Zaglavlje konacna ocjena
    //$ispis_konacna=0;
    //$q230 = myquery("select count(*) from konacna_ocjena where predmet=$predmet_id");
    //if (mysql_result($q230,0,0)>0) {
    //	$minw += 40;
    $ispis_konacna = 1;
    //}
    //if ($casova==0) $casova=1;
    // ISPIS ZAGLAVLJA
    $minw += 70;
    // ukupno
    $minw += 45;
    // broj indexa
    $minw += 100;
    // ime i prezime
    $minw += 40;
    // komentar
    $minw += 40;
    // bodovi prisustvo
    ?>
<table cellspacing="0" cellpadding="2" border="1" <?php 
    if ($minw > 800) {
        print "width=\"{$minw}\"";
    }
    ?>
>
<tr>
	<td rowspan="2" align="center" valign="center">Ime i prezime</td>
	<td rowspan="2" align="center" valign="center">Broj indexa</td>
	<td rowspan="2" align="center" valign="center">Ko-<br/>men-<br/>tar</td>
	<?php 
    echo $zaglavlje1;
    ?>
	<td align="center" valign="center" rowspan="2">&nbsp;&nbsp;<b>UKUPNO</b>&nbsp;&nbsp;</td>
	<?php 
    if ($ispis_konacna == 1) {
        ?>
<td rowspan="2" align="center">Konačna<br/>ocjena</td><?php 
    }
    ?>
</tr>
<tr>
	<?php 
    echo $zaglavlje2;
    ?>
	<?php 
    if ($ispis_usmeni == 1) {
        ?>
<td>Usmeni</td><?php 
    }
    ?>
</tr>
<?php 
    // CACHE REZULTATA ZADAĆA
    $zadace_statusi = array();
    $zadace_bodovi = array();
    $q300 = myquery("SELECT z.zadaca,z.redni_broj,z.student,z.status,z.bodova\nFROM zadatak as z,student_labgrupa as sl \nWHERE z.student=sl.student and sl.labgrupa={$labgrupa}\nORDER BY z.id");
    while ($r300 = mysql_fetch_row($q300)) {
        // Slog sa najnovijim IDom se smatra mjerodavnim
        // Ostali su u bazi radi historije
        $zadace_bodovi[$r300[0]][$r300[1]][$r300[2]] = $r300[4];
        $zadace_statusi[$r300[0]][$r300[1]][$r300[2]] = $r300[3] + 1;
        // Dodajemo 1 na status kako bismo kasnije mogli znati da li
        // je vrijednost niza definisana ili ne.
        // undef ne radi :(
    }
    // Ikone i statusi za zadaće
    $stat_icon = array("zad_bug", "zad_cekaj", "zad_copy", "zad_bug", "zad_preg", "zad_ok");
    $stat_tekst = array("Bug u programu", "Automatsko testiranje u toku", "Zadaća prepisana", "Bug u programu", "Potrebno pregledati", "Zadaća OK");
    // Glavna petlja - studenti
    $q310 = myquery("select a.id,a.ime,a.prezime,a.brindexa from osoba as a,student_labgrupa as sl where a.id=sl.student and sl.labgrupa={$labgrupa}");
    $imeprezime = array();
    $brind = array();
    while ($r310 = mysql_fetch_row($q310)) {
        $stud_id = $r310[0];
        $stud_ime = $r310[1];
        $stud_prezime = $r310[2];
        $stud_brind = $r310[3];
        $imeprezime[$stud_id] = "{$stud_prezime}&nbsp;{$stud_ime}";
        $brind[$stud_id] = $stud_brind;
        // Dodajemo ime grupe pored imena studenta ako je grupa virtualna
        if ($grupa_virtualna == 1) {
            $q315 = myquery("select lg.naziv from labgrupa as lg, student_labgrupa as sl where sl.student={$stud_id} and sl.labgrupa=lg.id and lg.virtualna=0 and lg.predmet={$predmet} and lg.akademska_godina={$ag}");
            if (mysql_num_rows($q315) > 0) {
                $stud_ime .= " (" . mysql_result($q315, 0, 0) . ")";
            }
        }
    }
    uasort($imeprezime, "bssort");
    // bssort - bosanski jezik
    $redni_broj = 0;
    foreach ($imeprezime as $stud_id => $stud_imepr) {
        $rednibroj++;
        ?>
<tr>
	<td id="student_<?php 
        echo $stud_id;
        ?>
"><?php 
        echo $rednibroj;
        ?>
.&nbsp;<a href="index.php?sta=saradnik/student&student=<?php 
        echo $stud_id;
        ?>
&predmet=<?php 
        echo $predmet;
        ?>
&ag=<?php 
        echo $ag;
        ?>
"><?php 
        echo $stud_imepr;
        ?>
</a></td>
	<td><?php 
        echo $brind[$stud_id];
        ?>
</td>
	<td align="center"><a href="javascript:firefoxopen('index.php?sta=saradnik/komentar&student=<?php 
        echo $stud_id;
        ?>
&labgrupa=<?php 
        echo $labgrupa;
        ?>
','blah3','width=350,height=320,status=0,toolbar=0,resizable=1,location=0,menubar=0,scrollbars=1');"><img src="images/16x16/komentar-plavi.png" border="0" width="16" height="16" alt="Komentar na rad studenta" title="Komentar na rad studenta"></a></td>
<?php 
        $prisustvo_ispis = $zadace_ispis = $ispiti_ispis = "";
        $bodova = 0;
        // PRISUSTVO - ISPIS
        foreach ($prisustvo_id_array as $pid) {
            $cas_id_array = $prisustvo_casovi[$pid];
            if (count($cas_id_array) == 0) {
                $prisustvo_ispis .= "<td>&nbsp;</td>";
            }
            $odsustvo = 0;
            foreach ($cas_id_array as $cid) {
                // Postoji li kviz za ovaj čas?
                $uspjeh_na_kvizu = "";
                if ($cas_kviz[$cid] > 0) {
                    $q317 = myquery("select dovrsen, bodova from kviz_student where student={$stud_id} and kviz=" . $cas_kviz[$cid]);
                    if (mysql_num_rows($q317) > 0) {
                        if (mysql_result($q317, 0, 0) == 1 && mysql_result($q317, 0, 1) >= $cas_kviz_prolaz[$cid]) {
                            $uspjeh_na_kvizu = '<img src="images/16x16/zad_ok.png" width="8" height="8">';
                        } else {
                            $uspjeh_na_kvizu = '<img src="images/16x16/brisanje.png" width="8" height="8">';
                        }
                    }
                }
                $q320 = myquery("select prisutan from prisustvo where student={$stud_id} and cas={$cid}");
                if (mysql_num_rows($q320) > 0) {
                    if (mysql_result($q320, 0, 0) == 1) {
                        $prisustvo_ispis .= "<td bgcolor=\"#CCFFCC\" align=\"center\" id=\"dane-" . $stud_id . "-" . $cid . "\" onclick=\"javascript:prisustvo(event," . $stud_id . "," . $cid . ")\"><span id=\"danetekst-" . $stud_id . "-" . $cid . "\">DA</span> {$uspjeh_na_kvizu}</td>";
                    } else {
                        $prisustvo_ispis .= "<td bgcolor=\"#FFCCCC\" align=\"center\" id=\"dane-" . $stud_id . "-" . $cid . "\" onclick=\"javascript:prisustvo(event," . $stud_id . "," . $cid . ")\"><span id=\"danetekst-" . $stud_id . "-" . $cid . "\">NE</span> {$uspjeh_na_kvizu}</td>";
                        $odsustvo++;
                    }
                    //$ocj = mysql_result($q14,0,1);
                } else {
                    $prisustvo_ispis .= "<td bgcolor=\"#FFFFCC\" align=\"center\" id=\"dane-" . $stud_id . "-" . $cid . "\" onclick=\"javascript:prisustvo(event," . $stud_id . "," . $cid . ")\"><div id=\"danetekst-" . $stud_id . "-" . $cid . "\"> / </div> {$uspjeh_na_kvizu}</td>";
                }
            }
            /*	if ($odsustvo<=$prisustvo_maxizostanaka[$pid]) {
            		$prisustvo_ispis .= "<td>".$prisustvo_maxbodova[$pid]."</td>";
            		$bodova+=10;
            	} else {
            		$prisustvo_ispis .= "<td>".$prisustvo_minbodova[$pid]."</td>";
            	}*/
            $q325 = myquery("select kb.bodovi from komponentebodovi as kb, ponudakursa as pk where kb.student={$stud_id} and kb.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and kb.komponenta={$pid}");
            if (mysql_num_rows($q325) == 0) {
                $pbodovi = 0;
            } else {
                $pbodovi = mysql_result($q325, 0, 0);
            }
            $prisustvo_ispis .= "<td>{$pbodovi}</td>\n";
            $bodova += $pbodovi;
        }
        // foreach ($prisustvo... as $pid)
        // ZADACE - ISPIS
        foreach ($zad_id_array as $zid) {
            $zadace_ispis .= "<td>\n";
            // FIXME: subqueries
            //$q15a = myquery ("select redni_broj from zadatak where zadaca=$zid and student=$stud_id order by redni_broj group by redni_broj");
            for ($i = 1; $i <= $zad_brz_array[$zid]; $i++) {
                $status = $zadace_statusi[$zid][$i][$stud_id];
                if ($status == 0) {
                    // Zadatak nije poslan
                    if ($kreiranje > 0) {
                        $zadace_ispis .= "<a href=\"#\" onclick=\"javascript:openzadaca(event, '" . $stud_id . "', '" . $zid . "', '" . $i . "'); return false;\"><img src=\"images/16x16/zad_novi.png\" width=\"16\" height=\"16\" border=\"0\" align=\"center\" title=\"" . $stud_id . "," . $zid . "," . $i . "\" alt=\"" . $stud_id . "," . $zid . "," . $i . "\"></a>&nbsp;";
                        //if ($i<$zad_brz_array[$zid]) $zadace_ispis .= "<br/>";
                    }
                } else {
                    $status--;
                    // Bio uvećan za 1
                    $icon = $stat_icon[$status];
                    $title = $stat_tekst[$status];
                    $zb = $zadace_bodovi[$zid][$i][$stud_id];
                    $zadace_ispis .= "<a href=\"#\" onclick=\"javascript:openzadaca(event, '" . $stud_id . "', '" . $zid . "', '" . $i . "'); return false;\"><img src=\"images/16x16/" . $icon . ".png\" width=\"16\" height=\"16\" border=\"0\" align=\"center\" title=\"" . $stud_id . "," . $zid . "," . $i . "\" alt=\"" . $stud_id . "," . $zid . "," . $i . "\">&nbsp;" . $zb . "</a>";
                    //				if ($i<$zad_brz_array[$zid]) $zadace_ispis .= "<br/>";
                    $bodova += $zb;
                }
            }
            $zadace_ispis .= "&nbsp;</td>\n";
        }
        // FIKSNE KOMPONENTE - ISPIS
        $fiksne_ispis = "";
        foreach ($fiksna_id_array as $fiksna) {
            $q328 = myquery("select kb.bodovi from komponentebodovi as kb, ponudakursa as pk where kb.student={$stud_id} and kb.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and kb.komponenta={$fiksna}");
            if (mysql_num_rows($q328) > 0) {
                $fbodova = mysql_result($q328, 0, 0);
                $fiksne_ispis .= "<td id=\"fiksna-{$stud_id}-{$predmet}-{$fiksna}-{$ag}\" ondblclick=\"coolboxopen(this)\">{$fbodova}</td>\n";
                $bodova += $fbodova;
            } else {
                $fiksne_ispis .= "<td id=\"fiksna-{$stud_id}-{$predmet}-{$fiksna}-{$ag}\" ondblclick=\"coolboxopen(this)\">/</td>\n";
            }
        }
        // ISPITI - ISPIS
        $ispiti_ispis = "";
        $komponente = $kmax = array();
        foreach ($ispit_id_array as $ispit) {
            $k = $ispit_komponenta[$ispit];
            $q330 = myquery("select ocjena from ispitocjene where ispit={$ispit} and student={$stud_id}");
            if (mysql_num_rows($q330) > 0) {
                $ocjena = mysql_result($q330, 0, 0);
                $ispiti_ispis .= "<td id=\"ispit-{$stud_id}-{$ispit}\" ondblclick=\"coolboxopen(this)\">{$ocjena}</td>\n";
                if (!in_array($k, $komponente) || $ocjena > $kmax[$k]) {
                    $kmax[$k] = $ocjena;
                }
            } else {
                $ispiti_ispis .= "<td id=\"ispit-{$stud_id}-{$ispit}\" ondblclick=\"coolboxopen(this)\">/</td>\n";
            }
            if (!in_array($k, $komponente)) {
                $komponente[] = $k;
            }
        }
        // Prvo trazimo integralne ispite
        foreach ($komponente as $k) {
            if ($komponenta_tip[$k] == 2) {
                // Koje parcijalne ispite obuhvata integralni
                $dijelovi = explode("+", $komponenta_opcija[$k]);
                // Racunamo zbir
                $zbir = 0;
                $pao = 0;
                foreach ($dijelovi as $dio) {
                    $zbir += $kmax[$dio];
                    if ($kmax[$dio] < $komponenta_prolaz[$dio]) {
                        $pao = 1;
                    }
                }
                // Eliminisemo parcijalne obuhvacene integralnim
                if ($kmax[$k] > $zbir || $pao == 1 && $kmax[$k] >= $komponenta_prolaz[$k]) {
                    $bodova += $kmax[$k];
                    foreach ($dijelovi as $dio) {
                        $kmax[$dio] = 0;
                    }
                }
            }
        }
        // Sabiremo preostale parcijalne ispite na sumu bodova
        foreach ($komponente as $k) {
            if ($komponenta_tip[$k] != 2) {
                $bodova += $kmax[$k];
            }
        }
        // KONACNA OCJENA - ISPIS
        $q350 = myquery("select ocjena from konacna_ocjena where student={$stud_id} and predmet={$predmet} and akademska_godina={$ag}");
        if ($privilegija == "super_asistent") {
            if (mysql_num_rows($q350) > 0) {
                $ko_ispis = "<td align=\"center\" id=\"ko-{$stud_id}-{$predmet}-{$ag}\">" . mysql_result($q350, 0, 0) . "</td>\n";
            } else {
                $ko_ispis = "<td align=\"center\" id=\"ko-{$stud_id}-{$predmet}-{$ag}\">/</td>\n";
            }
        } else {
            if (mysql_num_rows($q350) > 0) {
                $ko_ispis = "<td align=\"center\" id=\"ko-{$stud_id}-{$predmet}-{$ag}\" ondblclick=\"coolboxopen(this)\">" . mysql_result($q350, 0, 0) . "</td>\n";
            } else {
                $ko_ispis = "<td align=\"center\" id=\"ko-{$stud_id}-{$predmet}-{$ag}\" ondblclick=\"coolboxopen(this)\">/</td>\n";
            }
        }
        ?>
	<?php 
        echo $prisustvo_ispis;
        ?>
	<?php 
        echo $zadace_ispis;
        ?>
	<?php 
        echo $fiksne_ispis;
        ?>
	<?php 
        echo $ispiti_ispis;
        ?>
	<td align="center"><?php 
        print $bodova;
        /*	Procenat zauzima previše prostora po horizontali, a nije toliko interesantan
        	if ($mogucih_bodova!=0 && $mogucih_bodova!=100) {
        //		?> (<?=procenat($bodova,$mogucih_bodova)?>)<?
        	} */
        ?>
</td>
	<?php 
        echo $ko_ispis;
        ?>
</tr><?php 
    }
    ?>
</table>

<p><?php 
    if ($kreiranje > 0) {
        $k = str_replace("&amp;kreiranje=1", "", genuri());
        ?>
<a href="<?php 
        echo $k;
        ?>
">Sakrij dugmad za kreiranje zadataka</a><?php 
    } else {
        ?>
<a href="<?php 
        echo genuri();
        ?>
&amp;kreiranje=1">Prikaži dugmad za kreiranje zadataka</a><?php 
    }
    ?>
 * <a href="?sta=saradnik/grupa&amp;id=<?php 
    echo $labgrupa;
    ?>
">Refresh</a></p>

<?php 
    if ($privilegija == "nastavnik") {
        ?>
<p>Vi ste administrator ovog predmeta.</p><?php 
    } else {
        if ($privilegija == "super_asistent") {
            ?>
<p>Vi ste super-asistent ovog predmeta.</p><?php 
        }
    }
    ?>
<p>&nbsp;</p>
<?php 
}
示例#8
0
function nastavnik_ispiti()
{
    global $userid, $user_siteadmin, $user_studentska, $conf_files_path;
    global $sadrzaj_bafera;
    require "lib/manip.php";
    global $mass_rezultat;
    // za masovni unos studenata u grupe
    // Parametri
    $predmet = intval($_REQUEST['predmet']);
    $ag = intval($_REQUEST['ag']);
    $termin = intval($_REQUEST['termin']);
    // Naziv predmeta
    $q10 = myquery("select naziv from predmet where id={$predmet}");
    if (mysql_num_rows($q10) < 1) {
        biguglyerror("Nepoznat predmet");
        zamgerlog("ilegalan predmet {$predmet}", 3);
        //nivo 3: greska
        return;
    }
    $predmet_naziv = mysql_result($q10, 0, 0);
    // Da li korisnik ima pravo ući u modul?
    if (!$user_siteadmin && !$user_studentska) {
        $q20 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}");
        if (mysql_num_rows($q20) < 1 || mysql_result($q20, 0, 0) == "asistent") {
            zamgerlog("nastavnik/ispiti privilegije (predmet pp{$predmet})", 3);
            biguglyerror("Nemate pravo pristupa ovoj opciji");
            return;
        }
    }
    // Neki korisni podaci o ispitu
    $ispit = intval($_REQUEST['ispit']);
    if ($ispit > 0) {
        $q30 = myquery("(select UNIX_TIMESTAMP(i.datum), k.id, k.gui_naziv, k.maxbodova from ispit as i, komponenta as k where i.id={$ispit} and i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=k.id) union (select UNIX_TIMESTAMP(i.datum), d.id, d.naziv from ispit as i, dogadjaj as d where i.id={$ispit} and i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=d.id)");
        if (mysql_num_rows($q30) < 1) {
            niceerror("Nepostojeći ispit");
            print "Moguće je da ste ga već obrisali? Ako ste koristili dugme Back vašeg browsera da biste došli na ovu stranicu, predlažemo da kliknete na link Ispiti sa lijeve strane kako biste dobili ažurnu informaciju.";
            zamgerlog("nepostojeci ispit {$ispit} ili nije sa predmeta (pp{$predmet}, ag{$ag})", 3);
            return;
        }
    }
    ?>

<p>&nbsp;</p>

<p><h3><?php 
    echo $predmet_naziv;
    ?>
 - Ispiti / Događaji</h3></p>

<?php 
    // Masovni unos rezultata ispita
    if ($_POST['akcija'] == "massinput" && strlen($_POST['nazad']) < 1 && check_csrf_token()) {
        if ($ispit > 0) {
            $finidatum = date("d. m. Y", mysql_result($q30, 0, 0));
            $tipispita = mysql_result($q30, 0, 1);
            $fini_naziv_ispita = mysql_result($q30, 0, 2);
            print "<p><b>Masovni unos ocjena za ispit {$fini_naziv_ispita}, održan {$finidatum}</b></p>";
            $maxbodova = mysql_result($q30, 0, 3);
        }
        if ($_POST['fakatradi'] != 1) {
            $ispis = 1;
        } else {
            $ispis = 0;
        }
        if ($ispis) {
            ?>
Akcije koje će biti urađene:<br/><br/>
		<?php 
            echo genform("POST");
            ?>
		<input type="hidden" name="fakatradi" value="1">
		<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
        // Dozvoljavamo kreiranje blank ispita
        // if (count($mass_rezultat)==0) { ...
        // Registrovati ispit u bazi - ovaj kod se trenutno ne koristi, ali ga neću još izbacivati
        if ($ispit == 0) {
            $naziv = my_escape($_POST['naziv']);
            $dan = intval($_POST['day']);
            $mjesec = intval($_POST['month']);
            $godina = intval($_POST['year']);
            $mdat = mktime(0, 0, 0, $mjesec, $dan, $godina);
            $tipispita = intval($_POST['tipispita']);
            // Da li je ispit vec registrovan?
            $q110 = myquery("select id from ispit where predmet={$predmet} and datum=FROM_UNIXTIME('{$mdat}') and komponenta={$tipispita} and akademska_godina={$ag}");
            if (mysql_num_rows($q110) > 0) {
                $ispit = mysql_result($q110, 0, 0);
                if ($ispis) {
                    print "Dodati rezultate na postojeći ispit (ID: {$ispit}):<br/>";
                }
                $dodavanje = 1;
            } else {
                if (!$ispis) {
                    $q120 = myquery("insert into ispit set predmet={$predmet}, akademska_godina={$ag}, datum=FROM_UNIXTIME('{$mdat}'), komponenta={$tipispita}");
                    $q130 = myquery("select id from ispit where predmet={$predmet} and akademska_godina={$ag} and datum=FROM_UNIXTIME('{$mdat}') and komponenta={$tipispita}");
                    if (mysql_num_rows($q130) < 1) {
                        // Ovo se ne može desiti??
                        zamgerlog("unos ispita nije uspio (predmet pp{$predmet}, ag{$ag}, datum {$mdat}, tipispita {$tipispita})", 3);
                        niceerror("Unos ispita nije uspio.");
                        return;
                    }
                    $ispit = mysql_result($q130, 0, 0);
                    $dodavanje = 0;
                }
            }
        } else {
            $dodavanje = 1;
        }
        // Uvijek je dodavanje
        // Obrada rezultata
        $boja1 = "#EEEEEE";
        $boja2 = "#DDDDDD";
        $boja = $boja1;
        $bojae = "#FFE3DD";
        foreach ($mass_rezultat['ime'] as $student => $ime) {
            $prezime = $mass_rezultat['prezime'][$student];
            $bodova = $mass_rezultat['podatak1'][$student];
            // pretvori bodove u float uz obradu decimalnog zareza
            $fbodova = floatval(str_replace(",", ".", $bodova));
            // samo 0 priznajemo za nula bodova, inace student nije izasao na ispit
            if ($fbodova == 0 && strpos($bodova, "0") === FALSE) {
                if ($ispis) {
                    ?>
				<tr bgcolor="<?php 
                    echo $boja;
                    ?>
">
					<td><?php 
                    echo $prezime;
                    ?>
</td><td><?php 
                    echo $ime;
                    ?>
</td>
					<td>nije izašao/la na ispit (unesena je ocjena: <?php 
                    echo $bodova;
                    ?>
)</td>
				</tr>
				<?php 
                    if ($boja == $boja1) {
                        $boja = $boja2;
                    } else {
                        $boja = $boja1;
                    }
                }
                continue;
            }
            $bodova = $fbodova;
            // Da li je broj bodova veći od maksimalno dozvoljenog?
            if ($bodova > $maxbodova) {
                if ($ispis) {
                    ?>
				<tr bgcolor="<?php 
                    echo $bojae;
                    ?>
">
					<td><?php 
                    echo $prezime;
                    ?>
</td><td><?php 
                    echo $ime;
                    ?>
</td>
					<td>broj bodova <?php 
                    echo $bodova;
                    ?>
 je veći od maksimalnih <?php 
                    echo $maxbodova;
                    ?>
</td>
				</tr>
				<?php 
                }
                $greska = 1;
                continue;
            }
            // Određujem ponudu kursa (provjeru je već trebao uraditi massinput ali neka je i ovdje)
            $q135 = 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}");
            if (mysql_num_rows($q135) < 1) {
                if ($ispis) {
                    ?>
				<tr bgcolor="<?php 
                    echo $bojae;
                    ?>
">
					<td><?php 
                    echo $prezime;
                    ?>
</td><td><?php 
                    echo $ime;
                    ?>
</td>
					<td>nije upisan/a na predmet</td>
				</tr>
				<?php 
                }
                $greska = 1;
                continue;
                // Ne smijemo dozvoliti da se ovakav podatak unese u bazu
            } else {
                // Ponudakursa nam treba za update_komponente()
                $ponudakursa = mysql_result($q135, 0, 0);
            }
            // Da li je ocjena za studenta vec ranije unesena?
            if ($dodavanje == 1) {
                $q140 = myquery("select ocjena from ispitocjene where ispit={$ispit} and student={$student}");
                if (mysql_num_rows($q140) > 0) {
                    if ($ispis) {
                        $oc2 = mysql_result($q140, 0, 0);
                        ?>
					<tr bgcolor="<?php 
                        echo $bojae;
                        ?>
">
						<td><?php 
                        echo $prezime;
                        ?>
</td><td><?php 
                        echo $ime;
                        ?>
</td>
						<td>već ima rezultat <?php 
                        echo $oc2;
                        ?>
; koristite pogled grupe za izmjenu</td>
					</tr>
					<?php 
                    }
                    $greska = 1;
                    continue;
                    // Ne smijemo dozvoliti dvostruke ocjene u bazi
                }
            }
            // Zakljucak
            if ($ispis) {
                ?>
			<tr bgcolor="<?php 
                echo $boja;
                ?>
">
				<td><?php 
                echo $prezime;
                ?>
</td><td><?php 
                echo $ime;
                ?>
</td>
				<td><?php 
                echo $bodova;
                ?>
 bodova</td>
			</tr>
			<?php 
                if ($boja == $boja1) {
                    $boja = $boja2;
                } else {
                    $boja = $boja1;
                }
            } else {
                $q150 = myquery("insert into ispitocjene set ispit={$ispit}, student={$student}, ocjena={$bodova}");
                // Update komponenti
                update_komponente($student, $ponudakursa, $tipispita);
            }
        }
        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 {
            // Generisem statičku verziju izvještaja predmet
            $_REQUEST['skrati'] = "da";
            $_REQUEST['sakrij_imena'] = "da";
            ob_start('ob_file_callback');
            include "izvjestaj/predmet.php";
            //ovdje ga ukljucujem
            eval("izvjestaj_predmet();");
            ob_end_clean();
            if (!file_exists("{$conf_files_path}/izvjestaj_predmet")) {
                mkdir("{$conf_files_path}/izvjestaj_predmet", 0777, true);
            }
            $filename = $conf_files_path . "/izvjestaj_predmet/{$predmet}-{$ag}-" . date("dmY") . ".html";
            file_put_contents($filename, $sadrzaj_bafera);
            zamgerlog("masovni rezultati ispita za predmet pp{$predmet}", 4);
            ?>
		Rezultati ispita su upisani.
		<script language="JavaScript">
		location.href='?sta=nastavnik/ispiti&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
';
		</script>
		<?php 
        }
    }
    if ($_POST['akcija'] == "massinput" && $_POST['nazad'] == " Nazad ") {
        // Redirektujemo na akciju masovni_unos
        $_REQUEST['akcija'] = 'masovni_unos';
    }
    // Brisanje ispita
    if ($_REQUEST['akcija'] == "brisanje" && $ispit > 0 && $_REQUEST['potvrdabrisanja'] != " Nazad ") {
        $q200 = myquery("select count(*) from ispitocjene where ispit={$ispit}");
        $brojstudenata = mysql_result($q200, 0, 0);
        if ($_REQUEST['potvrdabrisanja'] == " Briši " && check_csrf_token()) {
            $komponenta = mysql_result($q30, 0, 1);
            zamgerlog("obrisan ispit {$ispit} (pp{$predmet}, ag{$ag})", 4);
            // 4 - audit
            print "<p>Brisanje u toku. Molimo budite strpljivi, ova akcija može potrajati nekoliko minuta.</p>\n\n\n\n";
            $q210 = myquery("select io.student, pk.id from ispitocjene as io, student_predmet as sp, ponudakursa as pk where io.ispit={$ispit} and io.student=sp.student and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}");
            $brojac = 1;
            while ($r210 = mysql_fetch_row($q210)) {
                $student = $r210[0];
                $ponudakursa = $r210[1];
                print "Ažuriram bodove za studenta {$brojac} od {$brojstudenata}<br />\n\n";
                $q220 = myquery("delete from ispitocjene where ispit={$ispit} and student={$student}");
                update_komponente($student, $ponudakursa, $komponenta);
                $brojac++;
            }
            print "Brišem termine za prijavu ispita i prijave<br />\n\n";
            $q230 = myquery("select id from ispit_termin where ispit={$ispit}");
            while ($r230 = mysql_fetch_row($q230)) {
                $termin = $r230[0];
                $q240 = myquery("delete from student_ispit_termin where ispit_termin={$termin}");
                $q250 = myquery("delete from ispit_termin where id={$termin}");
            }
            $q260 = myquery("delete from ispit where id={$ispit}");
            nicemessage("Svi podaci su ažurirani.");
            print "<a href=\"?sta=nastavnik/ispiti&predmet={$predmet}&ag={$ag}\">Nazad</a>\n";
            return;
        } else {
            $finidatum = date("d. m. Y", mysql_result($q30, 0, 0));
            $tipispita = mysql_result($q30, 0, 2);
            $q270 = myquery("select count(*) from student_ispit_termin as sit, ispit_termin as it where it.ispit={$ispit} and sit.ispit_termin=it.id");
            $brojprijava = mysql_result($q270, 0, 0);
            print genform("POST");
            ?>
		<h2>Zatražili ste brisanje ispita &quot;<?php 
            echo $tipispita;
            ?>
&quot; održanog <?php 
            echo $finidatum;
            ?>
</h2>
		<p><font color="red"><b>Brisanje ispita je vrlo destruktivna akcija!</b></font></p>
		<p>Brisanjem ispita potpuno ćete promijeniti bodovanje svih studenata na predmetu. Ova operacija se ne može vratiti! Da li ste sigurni da to želite?<br /><br />
		Na odabranom ispitu su registrovani rezultati za <b><?php 
            echo $brojstudenata;
            ?>
 studenata</b>.<br /><br />
		<?php 
            if ($brojprijava > 0) {
                ?>
Za polaganje ovog ispita je prijavljeno <b><?php 
                echo $brojprijava;
                ?>
 studenata</b>.<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;
        }
    }
    // Promjena ispita
    if ($_REQUEST['akcija'] == "promjena" && $ispit > 0 && $_REQUEST['potvrdapromjene'] != " Nazad ") {
        $komponenta = mysql_result($q30, 0, 1);
        $q300 = myquery("select count(*) from ispitocjene where ispit={$ispit}");
        $brojstudenata = mysql_result($q300, 0, 0);
        if ($_REQUEST['potvrdapromjene'] == " Promijeni " && check_csrf_token()) {
            $dan = intval($_POST['day']);
            $mjesec = intval($_POST['month']);
            $godina = intval($_POST['year']);
            $mdat = mktime(0, 0, 0, $mjesec, $dan, $godina);
            if ($komponenta != $_POST['tipispita']) {
                zamgerlog("promijenjen tip ispita {$ispit} (pp{$predmet}, ag{$ag})", 4);
                // 4 - audit
                $nova_komponenta = intval($_POST['tipispita']);
                print "<p>Ažuriranje u toku. Molimo budite strpljivi, ova akcija može potrajati nekoliko minuta.</p>\n\n\n\n";
                $q310 = myquery("update ispit set komponenta={$nova_komponenta} where id={$ispit}");
                $q320 = myquery("select io.student, pk.id from ispitocjene as io, student_predmet as sp, ponudakursa as pk where io.ispit={$ispit} and io.student=sp.student and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}");
                $brojac = 1;
                while ($r320 = mysql_result($q320)) {
                    $student = $r320[0];
                    $ponudakursa = $r320[1];
                    print "Ažuriram bodove za studenta {$brojac} od {$brojstudenata}<br />\n\n";
                    update_komponente($student, $ponudakursa, $komponenta);
                    update_komponente($student, $ponudakursa, $nova_komponenta);
                    $brojac++;
                }
            }
            if ($mdat != mysql_result($q30, 0, 0)) {
                zamgerlog("promijenjen datum ispita {$ispit} (pp{$predmet}, ag{$ag})", 4);
                // 4 - audit
                $q330 = myquery("update ispit set datum=FROM_UNIXTIME('{$mdat}') where id={$ispit}");
                print "<p>Ažuriram datum ispita.</p>\n";
            }
            nicemessage("Svi podaci su ažurirani.");
            print "<a href=\"?sta=nastavnik/ispiti&predmet={$predmet}&ag={$ag}\">Nazad</a>\n";
            return;
        } else {
            $finidatum = date("d. m. Y", mysql_result($q30, 0, 0));
            $dan = date("d", mysql_result($q30, 0, 0));
            $mjesec = date("m", mysql_result($q30, 0, 0));
            $godina = date("Y", mysql_result($q30, 0, 0));
            $tipispita = mysql_result($q30, 0, 2);
            print genform("POST");
            ?>
		<h2>Zatražili ste promjenu podataka ispita/događaja &quot;<?php 
            echo $tipispita;
            ?>
&quot; održanog <?php 
            echo $finidatum;
            ?>
</h2>
		<p>Na odabranom ispitu su registrovani rezultati za <b><?php 
            echo $brojstudenata;
            ?>
 studenata</b>.<br><br>
		<p>Datum ispita/događaja: <?php 
            echo datectrl($dan, $mjesec, $godina);
            ?>
</p>
		<p>Tip ispita/događaja: <select name="tipispita" class="default"><?php 
            $q340 = myquery("(select k.id,k.gui_naziv from tippredmeta_komponenta as tpk, komponenta as k, akademska_godina_predmet as agp where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and (k.tipkomponente=1 or k.tipkomponente=2) order by k.id) union (select id,naziv from dogadjaj order by id)");
            while ($r340 = mysql_fetch_row($q340)) {
                print '<option value="' . $r340[0] . '"';
                if ($komponenta == $r340[0]) {
                    print ' SELECTED';
                }
                print '>' . $r340[1] . '</option>' . "\n";
            }
            ?>
</select><br />
		<font color="red">Promjenom tipa ispita mijenjate bodovanje za sve studente! Ova operacija može potrajati malo duže.</font></p>
		<input type="submit" name="potvrdapromjene" value=" Promijeni ">
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="submit" name="potvrdapromjene" value=" Nazad ">
		<?php 
            return;
        }
    }
    // Masovni unos rezultata ispita
    if ($_REQUEST['akcija'] == "masovni_unos") {
        $finidatum = date("d. m. Y", mysql_result($q30, 0, 0));
        $tipispita = mysql_result($q30, 0, 2);
        // Korisničke preference za masovni unos
        $format = intval($_POST['format']);
        if (!$_POST['format']) {
            $q400 = myquery("select vrijednost from preference where korisnik={$userid} and preferenca='mass-input-format'");
            if (mysql_num_rows($q400) > 0) {
                $format = mysql_result($q400, 0, 0);
            } else {
                //default vrijednost
                $format = 0;
            }
        }
        $separator = intval($_POST['separator']);
        if (!$_POST['separator']) {
            $q410 = myquery("select vrijednost from preference where korisnik={$userid} and preferenca='mass-input-separator'");
            if (mysql_num_rows($q410) > 0) {
                $separator = mysql_result($q410, 0, 0);
            } else {
                //default vrijednost
                $separator = 0;
            }
        }
        ?>
	<h4>Masovni unos ocjena za ispit <?php 
        echo $tipispita;
        ?>
, održan <?php 
        echo $finidatum;
        ?>
</h4>

	<?php 
        echo genform("POST");
        ?>
	<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">

	<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><a href="?sta=nastavnik/ispiti&predmet=<?php 
        echo $predmet;
        ?>
&ag=<?php 
        echo $ag;
        ?>
">Nazad na tabelu ispita</a></p>
	<?php 
        return;
    }
    // Kreiranje novog ispita
    if ($_REQUEST['akcija'] == "novi_ispit") {
        $naziv = my_escape($_POST['naziv']);
        $dan = intval($_POST['day']);
        $mjesec = intval($_POST['month']);
        $godina = intval($_POST['year']);
        $mdat = mktime(0, 0, 0, $mjesec, $dan, $godina);
        $tipispita = intval($_POST['tipispita']);
        // Da li je ispit vec registrovan?
        $q450 = myquery("select id from ispit where predmet={$predmet} and datum=FROM_UNIXTIME('{$mdat}') and komponenta={$tipispita} and akademska_godina={$ag}");
        if (mysql_num_rows($q450) > 0) {
            nicemessage("Ispit/događaj već postoji.");
        } else {
            $q460 = myquery("insert into ispit set predmet={$predmet}, akademska_godina={$ag}, datum=FROM_UNIXTIME('{$mdat}'), komponenta={$tipispita}");
            nicemessage("Ispit/događaj uspješno kreiran.");
            zamgerlog("kreiran novi ispit/događaj (predmet pp{$predmet}, ag{$ag})", 4);
            // 4 - audit
        }
    }
    // Unos novog tipa ispita ili događaja (u tabelu dogadjaj)
    if ($_REQUEST['akcija'] == "novi_dogadjaj") {
        $naziv = my_escape($_POST['naziv']);
        $ime = strval($_POST['ime']);
        // Da li je događaj vec registrovan?
        $q520 = myquery("select id from dogadjaj where naziv='{$_POST['ime']}'");
        if (mysql_num_rows($q520) > 0) {
            nicemessage("Događaj već postoji.");
        } elseif ($ime == "") {
            nicemessage("Polje za unos novog događaja je prazno!");
        } elseif ($ime == "Zadace" || $ime == "I parcijalni" || $ime == "II parcijalni" || $ime == "Integralni" || $ime == "Usmeni" || $ime == "Prisustvo") {
            nicemessage("Događaj već postoji u obliku ispita.");
        } else {
            $q540 = myquery("insert into dogadjaj set naziv='{$_POST['ime']}'");
            $q550 = myquery("select id from dogadjaj");
            $temp2 = mysql_num_rows($q550);
            nicemessage("Događaj uspješno kreiran.");
            zamgerlog("kreiran novi događaj (predmet pp{$ime}, ag{$ag})", 4);
            // 4 - audit
        }
    }
    // GLAVNI EKRAN
    // Tabela unesenih ispita
    $q500 = myquery("(select i.id,UNIX_TIMESTAMP(i.datum),k.gui_naziv,0 from ispit as i, komponenta as k where i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=k.id order by i.datum,i.komponenta) union (select i.id,UNIX_TIMESTAMP(i.datum),d.naziv,1 from ispit as i, dogadjaj as d where i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=d.id)");
    ?>
<br>
<table border="0" cellspacing="1" cellpadding="2">
<thead>
<tr bgcolor="#999999">
	<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;font-weight:bold;color:white;">Tip ispita/događaja</font></td>
	<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;font-weight:bold;color:white;">Datum ispita/događaja</font></td>
	<td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;font-weight:bold;color:white;">Opcije</font></td>
</tr>
</thead>
<tbody>
<?php 
    $brojac = 1;
    if (mysql_num_rows($q500) < 1) {
        print "Nije unesen nijedan ispit.";
    }
    while ($r500 = mysql_fetch_row($q500)) {
        if ($r500[3] == 0) {
            ?>
	<tr>
		<td align="left"><?php 
            echo $r500[2];
            ?>
</td>
		<td align="left"><?php 
            echo date("d.m.Y.", date($r500[1]));
            ?>
</td>
		<td align="left">
			<a href="?sta=nastavnik/ispiti&akcija=masovni_unos&ispit=<?php 
            echo $r500[0];
            ?>
&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
">Masovni unos rezultata</a>
			*
			<a href="?sta=nastavnik/ispiti&akcija=promjena&ispit=<?php 
            echo $r500[0];
            ?>
&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
">Promjena</a>
			*
			<a href="?sta=nastavnik/ispiti&akcija=brisanje&ispit=<?php 
            echo $r500[0];
            ?>
&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
">Brisanje</a>
			*
			<a href="?sta=nastavnik/prijava_ispita&ispit=<?php 
            echo $r500[0];
            ?>
&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
">Termini</a>
			*
			<a href="?sta=izvjestaj/ispit&ispit=<?php 
            echo $r500[0];
            ?>
&predmet=<?php 
            echo $predmet;
            ?>
">Izvještaj</a>
		</td>
	</tr>
	<?php 
        } else {
            ?>
	<tr>
		<td align="left"><?php 
            echo $r500[2];
            ?>
</td>
		<td align="left"><?php 
            echo date("d.m.Y.", date($r500[1]));
            ?>
</td>
		<td align="left">
		
			<a href="?sta=nastavnik/ispiti&akcija=promjena&ispit=<?php 
            echo $r500[0];
            ?>
&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
">Promjena</a>
			*
			<a href="?sta=nastavnik/ispiti&akcija=brisanje&ispit=<?php 
            echo $r500[0];
            ?>
&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
">Brisanje</a>
			*
			<a href="?sta=nastavnik/prijava_ispita&ispit=<?php 
            echo $r500[0];
            ?>
&predmet=<?php 
            echo $predmet;
            ?>
&ag=<?php 
            echo $ag;
            ?>
">Termini</a>
		</td>
	</tr>
	<?php 
        }
        $brojac++;
    }
    ?>
</tbody></table><br>

<p>Ako želite da unosite rezultate ispita jedan po jedan u tabelu studenata, koristite <a href="?sta=saradnik/intro">Spisak predmeta i grupa</a></p>
<?php 
    // Forma za kreiranje ispita
    ?>
<p>&nbsp;</p>
<?php 
    echo genform("POST");
    ?>
<input type="hidden" name="akcija" value="novi_ispit">

<p><b>Dodaj novi ispit/događaj</b></p>

<!--br/>Naziv ispita: <input type="text" name="naziv" size="20">&nbsp;-->
<p>Tip ispita/događaja: <select name="tipispita" class="default"><?php 
    $tipispita = intval($_POST['tipispita']);
    $q510 = myquery("(select k.id,k.gui_naziv from tippredmeta_komponenta as tpk,komponenta as k, akademska_godina_predmet as agp where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and (k.tipkomponente=1 or k.tipkomponente=2) order by k.id) union (select id, naziv from dogadjaj order by id)");
    while ($r510 = mysql_fetch_row($q510)) {
        print '<option value="' . $r510[0] . '"';
        if ($tipispita == $r510[0]) {
            print ' SELECTED';
        }
        print '>' . $r510[1] . '</option>' . "\n";
    }
    ?>
</select>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Datum: <?php 
    $day = intval($_POST['day']);
    $month = intval($_POST['month']);
    $year = intval($_POST['year']);
    if ($day > 0) {
        print datectrl($day, $month, $year);
    } else {
        print datectrl(date('d'), date('m'), date('Y'));
    }
    ?>
<br/><br/>

<input type="submit" value="  Dodaj  ">
<br/><br/><br/>

</form></p>
<?php 
    // Forma za unos novih događaja
    ?>
<p>&nbsp;</p>
<?php 
    echo genform("POST");
    ?>
<input type="hidden" name="akcija" value="novi_dogadjaj">

<p><b>Kreiraj novi tip događaja:</b></p>
Naziv: <input name="ime" type="text" >
<br /><br />
<input name="submitaj" type="submit" value="Spasi">
</form></p>

<?php 
}