function studentska_predmeti() { global $userid, $user_siteadmin, $user_studentska; global $_lv_; // Potrebno za genform() iz libvedran require "lib/manip.php"; // radi ispisa studenata sa predmeta // Provjera privilegija if (!$user_studentska && !$user_siteadmin) { zamgerlog("nije studentska", 3); // 3: error zamgerlog2("nije studentska"); biguglyerror("Pristup nije dozvoljen."); return; } ?> <center> <table border="0"><tr><td> <?php $akcija = $_REQUEST['akcija']; // AKCIJA: Ogranicenje nastavnika na odredjene grupe if ($akcija == "ogranicenja") { $nastavnik = intval($_REQUEST['nastavnik']); $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // akademska godina // Imena stvari $q370 = myquery("select ime,prezime from osoba where id={$nastavnik}"); if (mysql_num_rows($q370) < 1) { zamgerlog("nepoznat nastavnik u{$nastavnik}", 3); zamgerlog2("nepoznat nastavnik", $nastavnik); niceerror("Nepoznat nastavnik"); return; } $ime = mysql_result($q370, 0, 0); $prezime = mysql_result($q370, 0, 1); $q371 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q371) < 1) { zamgerlog("nepoznat predmet pp{$predmet}", 3); zamgerlog2("nepoznat predmet", $predmet); niceerror("Nepoznat predmet"); return; } $naziv_predmeta = mysql_result($q371, 0, 0); ?> <ul><p> <b>Ograničenja za nastavnika <?php echo $ime . " " . $prezime; ?> na predmetu <?php echo $naziv_predmeta; ?> </b></p><?php // Subakcija if ($_POST['subakcija'] == "izmjena" && check_csrf_token()) { // Provjera podataka... $q374 = myquery("select id from labgrupa where predmet={$predmet} and akademska_godina={$ag}"); $izabrane = 0; $grupe = 0; $upitdodaj = $upitbrisi = $upitbrisisve = ""; while ($r374 = mysql_fetch_row($q374)) { $labgrupa = $r374[0]; if ($_REQUEST['lg' . $labgrupa]) { $izabrane++; if ($upitdodaj) { $upitdodaj .= ","; } $upitdodaj .= "({$nastavnik},{$labgrupa})"; } else { if ($upitbrisi) { $upitbrisi .= " OR "; } $upitbrisi .= "(nastavnik={$nastavnik} AND labgrupa={$labgrupa})"; } if ($upitbrisisve) { $upitbrisisve .= " OR "; } $upitbrisisve .= "(nastavnik={$nastavnik} AND labgrupa={$labgrupa})"; $grupe++; } if ($upitdodaj == "") { zamgerlog("pokusao ograniciti sve grupe nastavniku u{$nastavnik}, predmet pp{$predmet}, ag{$ag}", 3); zamgerlog2("pokusao ograniciti sve grupe nastavniku", $nastavnik, $predmet, $ag); niceerror("Nastavnik mora imati pristup barem jednoj grupi"); print "<br/>Ako ne želite da ima pristup, odjavite ga/je sa predmeta."; } else { if ($grupe == $izabrane) { // Sve izabrano $q375 = myquery("delete from ogranicenje where {$upitbrisisve}"); } else { $q376 = myquery("delete from ogranicenje where {$upitbrisisve}"); $q377 = myquery("insert into ogranicenje values {$upitdodaj}"); } nicemessage("Postavljena nova ograničenja."); zamgerlog("izmijenjena ogranicenja nastavniku u{$nastavnik}, predmet pp{$predmet}, ag{$ag}", 4); zamgerlog2("izmijenjena ogranicenja nastavniku", $nastavnik, $predmet, $ag); } } // Skripta za (de)selektovanje svih checkboxa ?> <script language="JavaScript"> function checkall(val) { var z; for(z=0; z<document.ogranicenjaform.length; z++) if (document.ogranicenjaform[z].type=='checkbox') document.ogranicenjaform[z].checked=val; } </script> <?php ?> <?php echo genform("POST", "ogranicenjaform"); ?> <input type="hidden" name="subakcija" value="izmjena"> <p> <?php $nema_ogranicenja = 0; $q372 = myquery("select count(*) from ogranicenje as o, labgrupa as l where o.nastavnik={$nastavnik} and o.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}"); if (mysql_result($q372, 0, 0) < 1) { $nema_ogranicenja = 1; } $q373 = myquery("select id,naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag}"); while ($r373 = mysql_fetch_row($q373)) { $dodaj = "CHECKED"; if ($nema_ogranicenja == 0) { $q374 = myquery("select count(*) from ogranicenje where labgrupa={$r373['0']} and nastavnik={$nastavnik}"); if (mysql_result($q374, 0, 0) == 0) { $dodaj = ""; } } ?> <input type="checkbox" name="lg<?php echo $r373[0]; ?> " <?php echo $dodaj; ?> > <?php echo $r373[1]; ?> <br/><?php } ?> <br/><input type="submit" value=" Izmijeni "> <input type="button" value=" Označi sve " onclick="javascript:checkall(true);"> <input type="button" value=" Poništi sve " onclick="javascript:checkall(false);"> <input type="button" value=" Nazad " onclick="location.href='?sta=studentska/predmeti&akcija=edit&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> ';"></form><?php } else { if ($_POST['akcija'] == "novi" && check_csrf_token()) { // Naziv predmeta $naziv = substr(my_escape($_POST['naziv']), 0, 100); if (!preg_match("/\\w/", $naziv)) { zamgerlog("naziv nije ispravan ({$naziv})", 3); zamgerlog2("naziv nije ispravan", 0, 0, 0, $naziv); niceerror("Naziv nije ispravan"); return; } // Dodajemo ga u aktuelnu akademsku godinu $q200 = myquery("select id from akademska_godina where aktuelna=1"); if (mysql_num_rows($q200) < 1) { $q200 = myquery("select id from akademska_godina order by id desc"); } if (mysql_num_rows($q200) < 1) { niceerror("Nije definisana nijedna akademska godina. Molimo kontaktirajte administratora sajta."); zamgerlog("ne postoji nijedna akademska godina", 3); zamgerlog2("ne postoji nijedna akademska godina"); return; } $ak_god = mysql_result($q200, 0, 0); // Da li već postoji? $q210 = myquery("select id from predmet where naziv='{$naziv}'"); if (mysql_num_rows($q210) > 0) { $predmet = mysql_result($q210, 0, 0); // Da li se drži u tekućoj akademskoj godini? $q220 = myquery("select count(*) from ponudakursa where predmet={$predmet} and akademska_godina={$ak_god}"); if (mysql_result($q220, 0, 0) > 0) { zamgerlog("predmet vec postoji u ovoj ak.god (pp{$predmet})", 3); zamgerlog2("predmet vec postoji u ovoj ak.god", $predmet, $ag, 0, $naziv); niceerror("Predmet već postoji"); ?> <a href="?sta=studentska/predmeti&akcija=edit&predmet=<?php echo $predmet; ?> &ag=<?php echo $ak_god; ?> ">Editovanje predmeta "<?php echo $naziv; ?> "</a><?php return; } else { // Određujemo najnoviji plan studija $q225 = myquery("select godina_vazenja from plan_studija where predmet={$predmet} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q225) > 0) { // Biramo ponude kursa iz najnovijeg plana studija $q230 = myquery("select studij, semestar, obavezan from plan_studija where predmet={$predmet} and godina_vazenja=" . mysql_result($q225, 0, 0)); } else { // Ne postoji plan studija // Kopiramo ponude kursa iz prošle godine u ovu $q230 = myquery("select studij, semestar, obavezan from ponudakursa where predmet={$predmet} and akademska_godina=" . ($ak_god - 1)); } if (mysql_num_rows($q230) < 1) { zamgerlog("predmet vec postoji, ali nije se drzao (pp{$predmet})", 3); zamgerlog2("predmet vec postoji, ali nije se drzao", $predmet); niceerror("Predmet već postoji, ali nije se držao ni ove ni prošle akademske godine."); ?> <p>Takođe nije definisan ni plan studija. Iz ovih razloga ne možemo automatski kreirati ponude kursa. Koristite editovanje da biste ručno dodali ponude kursa.</p><br/><a href="?sta=studentska/predmeti&akcija=edit&predmet=<?php echo $predmet; ?> &ag=<?php echo $ak_god; ?> ">Editovanje predmeta "<?php echo $naziv; ?> "</a><?php return; } while ($r230 = mysql_fetch_row($q230)) { $q240 = myquery("insert into ponudakursa set predmet={$predmet}, studij={$r230['0']}, semestar={$r230['1']}, obavezan={$r230['2']}, akademska_godina={$ak_god}"); $pk = mysql_insert_id(); // Ispis i logging $q231 = myquery("select naziv from studij where id={$r230['0']}"); $ispis = "Kreiram ponudu kursa za predmet {$naziv} (studij " . mysql_result($q231, 0, 0) . ", semestar {$r230['1']}"; if ($r230[2] != 1) { $ispis .= ", izborni"; } $ispis .= ")"; nicemessage($ispis); zamgerlog("kreirana ponudakursa za pp{$predmet}"); zamgerlog2("kreirana ponudakursa", $pk); } // Kreiram virtualnu labgrupu "Svi studenti" $q250 = myquery("insert into labgrupa set naziv='(Svi studenti)', predmet={$predmet}, akademska_godina={$ak_god}, virtualna=1"); ?> <a href="?sta=studentska/predmeti&akcija=edit&predmet=<?php echo $predmet; ?> &ag=<?php echo $ak_god; ?> ">Editovanje predmeta "<?php echo $naziv; ?> "</a><?php return; } } // Kreiranje potpuno novog predmeta // Određujemo kratki naziv $dijelovi = explode(" ", $naziv); $kratki_naziv = ""; foreach ($dijelovi as $dio) { $kratki_naziv .= strtoupper(substr($dio, 0, 1)); } // Polje institucija u tabeli predmet mora biti definisano! // Korisnik ga može promijeniti kasnije $q260 = myquery("select id from institucija order by id limit 1"); $institucija = mysql_result($q260, 0, 0); // Dodajem predmet u bazu $q270 = myquery("insert into predmet set naziv='{$naziv}', kratki_naziv='{$kratki_naziv}', institucija={$institucija}"); // Koji id predmeta smo dobili? $q280 = myquery("select id from predmet where naziv='{$naziv}'"); $predmet = mysql_result($q280, 0, 0); // Potrebno je definisati zapis u tabeli akademska_godina_predmet. Biramo // default tip predmeta (ETF Bologna standard) a korisnik ga može promijeniti kasnije $q285 = myquery("select id from tippredmeta order by id limit 1"); $tippredmeta = mysql_result($q285, 0, 0); $q287 = myquery("insert into akademska_godina_predmet set akademska_godina={$ak_god}, predmet={$predmet}, tippredmeta={$tippredmeta}"); // Kreiramo virtualnu labgrupu "Svi studenti" $q290 = myquery("insert into labgrupa set naziv='(Svi studenti)', predmet={$predmet}, akademska_godina={$ak_god}, virtualna=1"); // Logging zamgerlog("potpuno novi predmet pp{$predmet}, akademska godina ag{$ak_god}", 4); zamgerlog2("kreiran novi predmet", $predmet, $ak_god); ?> <p>Kreiran novi predmet pod nazivom <?php echo $naziv; ?> sa uobičajenim parametrima. Koristite polja za izmjenu da ih podesite.</p> <p>Obavezno definišite barem jednu ponudu kursa, u suprotnom studenti neće moći biti upisani na predmet.</p> <a href="?sta=studentska/predmeti&akcija=edit&predmet=<?php echo $predmet; ?> &ag=<?php echo $ak_god; ?> ">Editovanje predmeta "<?php echo $naziv; ?> "</a> <?php } else { if ($akcija == "realedit") { $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // akademska godina print "<h1>Izmjena podataka o predmetu</h1>"; if ($_REQUEST['_lv_action'] == "edit") { nicemessage("Podaci o predmetu izmijenjeni"); zamgerlog("izmijenjeni podaci o predmetu pp{$predmet}", 4); zamgerlog2("izmijenjeni podaci o predmetu", $predmet); } $_lv_['where:id'] = $predmet; $_lv_['forceedit'] = 1; print db_form("predmet"); ?> <p><a href="?sta=studentska/predmeti&akcija=edit&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> ">Nazad</a></p> <?php } else { if ($akcija == "dodaj_pk") { $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // akademska godina if ($_REQUEST['subakcija'] == "potvrda" && check_csrf_token()) { $studij = intval($_REQUEST['_lv_column_studij']); $semestar = intval($_REQUEST['semestar']); if ($_REQUEST['obavezan']) { $obavezan = true; } else { $obavezan = false; } kreiraj_ponudu_kursa($predmet, $studij, $semestar, $ag, $obavezan, $ispis = 0); nicemessage("Ponuda kursa uspješno kreirana"); } $q400 = myquery("select naziv from predmet where id={$predmet}"); $q410 = myquery("select naziv from akademska_godina where id={$ag}"); print "<h3>Nova ponuda kursa za predmet " . mysql_result($q400, 0, 0) . ",<br/> akademska godina " . mysql_result($q410, 0, 0) . "</h3>"; unset($_REQUEST['obavezan']); print genform("POST"); ?> <input type="hidden" name="subakcija" value="potvrda"> Studij: <?php echo db_dropdown("studij"); ?> <br><br> Semestar: <input type="text" name="semestar" size="5"><br><br> <input type="checkbox" name="obavezan"> Obavezan<br><br> <input type="submit" value=" Pošalji "> <input type="reset" value=" Poništi "></form> <p><a href="?sta=studentska/predmeti&akcija=edit&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> ">Nazad</a></p> <?php } else { if ($akcija == "edit") { $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // akademska godina if ($ag == 0) { // Izaberi aktuelnu akademsku godinu $q358 = myquery("select id from akademska_godina where aktuelna=1 limit 1"); $ag = mysql_result($q358, 0, 0); } $old_search = $_REQUEST['search']; // Za link ispod print "<a href=\"?sta=studentska/predmeti&ag={$ag}&search={$old_search}&offset=" . intval($_REQUEST['offset']) . "\">Nazad na rezultate pretrage</a><br/><br/>"; // Izvjestaji ?> <center> <table width="700" border="0" cellspacing="0" cellpadding="0"><tr><td width="100" valign="top"> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr><td bgcolor="#777777" align="center"> <font color="white"><b>IZVJEŠTAJI:</b></font> </td></tr> <tr><td align="center"><a href="?sta=izvjestaj/grupe&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> "> <img src="images/32x32/izvjestaj.png" border="0"><br/>Spisak grupa</a></td></tr> <tr><td align="center"><a href="?sta=izvjestaj/predmet&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &skrati=da"> <img src="images/32x32/izvjestaj.png" border="0"><br/>Puni izvještaj</a></td></tr><?php $q359 = myquery("select i.id,UNIX_TIMESTAMP(i.datum), k.gui_naziv 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($q359) > 0) { ?> <tr><td align="center"><a href="?sta=izvjestaj/statistika_predmeta&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> "> <img src="images/32x32/izvjestaj.png" border="0"><br/>Statistika predmeta</a></td></tr><?php } ?> <tr><td align="center"><a href="?sta=studentska/prijave&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> "> <img src="images/32x32/izvjestaj.png" border="0"><br/>Štampanje prijava</a></td></tr> <tr><td align="center"><a href="?sta=nastavnik/ispiti&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> "> <img src="images/32x32/izvjestaj.png" border="0"><br/>Ispiti i prijave</a></td></tr> <tr><td align="center"><a href="?sta=nastavnik/unos_ocjene&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> "> <img src="images/32x32/izvjestaj.png" border="0"><br/>Unos ocjena</a></td></tr> <tr><td align="left">Ispiti:<br/><?php while ($r359 = mysql_fetch_row($q359)) { $ispit = $r359[0]; $datum = date("d. m. Y.", $r359[1]); $nazivispita = $r359[2]; ?> * <a href="?sta=izvjestaj/ispit&ispit=<?php echo $ispit; ?> "><?php echo $nazivispita; ?> <br/> (<?php echo $datum; ?> )</a><br/> <?php } ?> </td></tr> </table> </td><td width="10" valign="top"> </td><td width="590" valign="top"> <?php // Submit akcije // Angazman nastavnika na predmetu if ($_POST['subakcija'] == "dodaj_nastavnika" && check_csrf_token()) { $nastavnik = intval($_POST['nastavnik']); if ($nastavnik > 0) { $q360 = myquery("select count(*) from nastavnik_predmet where nastavnik={$nastavnik} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_result($q360, 0, 0) < 1) { $q361 = myquery("insert into nastavnik_predmet set nastavnik={$nastavnik}, predmet={$predmet}, akademska_godina={$ag}"); } nicemessage("Nastavniku dato pravo pristupa predmetu"); zamgerlog("nastavnik u{$nastavnik} dodan na predmet pp{$predmet}", 4); zamgerlog2("nastavniku data prava na predmetu", $nastavnik, $predmet, $ag); } } else { if ($_POST['subakcija'] == "postavi_nivo_pristupa" && check_csrf_token()) { $nastavnik = intval($_POST['nastavnik']); $nivo_pristupa = $_POST['nivo_pristupa']; if ($nivo_pristupa != 'nastavnik' && $nivo_pristupa != 'super_asistent' && $nivo_pristupa != 'asistent') { niceerror("Nepoznat nivo pristupa"); zamgerlog("nepoznat nivo pristupa " . my_escape($nivo_pristupa), 3); zamgerlog2("nepoznat nivo pristupa", 0, 0, 0, $nivo_pristupa); return; } $q362a = myquery("update nastavnik_predmet set nivo_pristupa='{$nivo_pristupa}' where nastavnik={$nastavnik} and predmet={$predmet} and akademska_godina={$ag}"); nicemessage("Promijenjeni nivoi pristupa korisnika na predmetu"); zamgerlog("nastavnik u{$nastavnik} dat nivo '{$nivo_pristupa}' na predmetu pp{$predmet}", 4); zamgerlog2("nastavniku data prava na predmetu", $nastavnik, $predmet, $ag, $nivo_pristupa); } else { if ($_POST['subakcija'] == "izbaci_nastavnika" && check_csrf_token()) { $nastavnik = intval($_POST['nastavnik']); $q363 = myquery("delete from nastavnik_predmet where nastavnik={$nastavnik} and predmet={$predmet} and akademska_godina={$ag}"); nicemessage("Nastavnik više nema pravo pristupa predmetu"); zamgerlog("nastavnik u{$nastavnik} izbacen sa predmeta pp{$predmet}", 4); zamgerlog2("nastavniku oduzeta prava na predmetu", $nastavnik, $predmet, $ag); } else { if ($_POST['subakcija'] == "obrisi_pk" && check_csrf_token()) { $ponudakursa = intval($_POST['pk']); // Ispisujemo studente sa predmeta radi ispravnog brisanja podataka $q364 = myquery("select sp.student, pk.predmet, pk.akademska_godina, o.ime, o.prezime, p.naziv from student_predmet as sp, ponudakursa as pk, osoba as o, predmet as p where pk.id={$ponudakursa} and sp.predmet=pk.id and sp.student=o.id and pk.predmet=p.id"); while ($r364 = mysql_fetch_row($q364)) { $predmet = $r364[1]; $ag = $r364[2]; // za kasnije... nicemessage("Ispisujem studenta {$r364['3']} {$r364['4']} sa predmeta {$r365}"); // Ova funkcija briše ispite, zadaće, prisustvo i konačnu ocjenu te ispisuje studenta iz labgrupe ispis_studenta_sa_predmeta($r364[0], $r364[1], $r364[2]); } // Brišemo ponudu kursa $q365 = myquery("delete from ponudakursa where id={$ponudakursa}"); nicemessage("Ponuda kursa je obrisana"); zamgerlog("obrisana ponudakursa {$ponudakursa} (predmet pp{$predmet}, godina ag{$ag})", 4); zamgerlog2("obrisana ponudakursa", $ponudakursa); } else { if ($_GET['subakcija'] == "deangazuj") { $osoba = intval($_GET['osoba']); $q367 = myquery("delete from angazman where osoba={$osoba} and predmet={$predmet} and akademska_godina={$ag}"); nicemessage("Nastavnik više nije angažovan na predmetu"); zamgerlog("osoba u{$osoba} deangazovana sa predmeta pp{$predmet}, godina {$ag}", 4); zamgerlog2("nastavnik deangazovan sa predmeta", $osoba, $predmet, $ag); } } } } } // Osnovni podaci o predmetu $q350 = myquery("SELECT p.id, p.sifra, p.naziv, p.kratki_naziv, p.institucija, agp.tippredmeta, p.ects, p.sati_predavanja, p.sati_vjezbi, p.sati_tutorijala \n\tFROM predmet as p, akademska_godina_predmet as agp \n\tWHERE p.id={$predmet} AND agp.akademska_godina={$ag} AND p.id=agp.predmet"); if (!($r350 = mysql_fetch_row($q350))) { $q351 = myquery("SELECT COUNT(*) FROM predmet WHERE id={$predmet}"); if (mysql_result($q351, 0, 0) > 0) { zamgerlog("nedostaje slog u tabeli akademska_godina_predmet {$predmet} {$ag}", 3); zamgerlog2("nedostaje slog u tabeli akademska_godina_predmet", $predmet, $ag); niceerror("Nepostojeći predmet (nedostaje agp)!"); } else { zamgerlog("nepostojeci predmet {$predmet}", 3); zamgerlog2("nepostojeci predmet", $predmet); niceerror("Nepostojeći predmet!"); } return; } // Oznacicemo neispravne podatke $greska = 0; $naziv = $r350[2]; if (!preg_match("/\\w/", $naziv)) { $naziv = "<font color=\"red\">Bez naziva!</font>"; $greska = 1; } $sifra = $r350[1]; if ($sifra == "") { $sifra = "<font color=\"red\">(?)</font>"; $greska = 1; } $kratkinaziv = $r350[3]; if ($kratkinaziv == "") { $kratkinaziv = "<font color=\"red\">(?)</font>"; $greska = 1; } $ects = floatval($r350[6]); if ($ects == 0) { $ects = "<font color=\"red\">(?)</font>"; $greska = 1; } // Zašto ne bi bilo nula sati? $sati_predavanja = floatval($r350[7]); // if ($sati_predavanja==0) { $sati_predavanja="<font color=\"red\">(?)</font>"; $greska=1; } $sati_vjezbi = floatval($r350[8]); // if ($sati_vjezbi==0) { $sati_vjezbi="<font color=\"red\">(?)</font>"; $greska=1; } $sati_tutorijala = floatval($r350[9]); // if ($sati_tutorijala==0) { $sati_tutorijala="<font color=\"red\">(?)</font>"; $greska=1; }*/ // Institucija $q352 = myquery("select naziv from institucija where id={$r350['4']}"); if (mysql_num_rows($q352) < 1) { $institucija = "<font color=\"red\">(?)</font>"; $greska = 1; } else { $institucija = mysql_result($q352, 0, 0); } // Tip predmeta $q354 = myquery("select naziv from tippredmeta where id={$r350['5']}"); if (mysql_num_rows($q354) < 1) { $tippredmeta = "<font color=\"red\">(?)</font>"; $greska = 1; } else { $tippredmeta = mysql_result($q354, 0, 0); } ?> <h3><?php echo $naziv; ?> </h3> <p>Šifra predmeta: <b><?php echo $sifra; ?> </b><br /> Skraćeni naziv predmeta: <b><?php echo $kratkinaziv; ?> </b><br /> Institucija: <b><?php echo $institucija; ?> </b><br /> Tip predmeta: <b><?php echo $tippredmeta; ?> </b><br /> ECTS: <b><?php echo $ects; ?> bodova</b><br /> Sati predavanja: <b><?php echo $sati_predavanja; ?> </b><br /> Sati vježbi: <b><?php echo $sati_vjezbi; ?> </b><br /> Sati tutorijala: <b><?php echo $sati_tutorijala; ?> </b><br /> ID: <?php echo $predmet; ?> </p> <?php if ($greska == 1) { print "<font color=\"red\">Imate grešaka u definiciji predmeta. Kliknite na dugme <b>Izmijeni</b>.</font>\n"; } unset($_REQUEST['akcija']); print "\n\n<p>\n" . genform("GET"); ?> <input type="hidden" name="akcija" value="realedit"> <input type="submit" value=" Izmijeni "></form></p> <?php // Omogućujemo popravku ako ne postoji labgrupa "svi studenti" $q356 = myquery("SELECT COUNT(*) FROM labgrupa WHERE predmet={$predmet} AND akademska_godina={$ag} AND virtualna=1"); if (mysql_result($q356, 0, 0) == 0) { niceerror("Ne postoji virtualna labgrupa."); } ?> <hr> <?php // Nastavni ansambl ?> <h3>Nastavni ansambl:</h3> <ul> <?php $q355 = myquery("select o.id, angs.naziv from angazman as a, osoba as o, angazman_status as angs where a.predmet={$predmet} and a.akademska_godina={$ag} and a.osoba=o.id and a.angazman_status=angs.id order by angs.id, o.prezime"); if (mysql_num_rows($q355) < 1) { print "<li>Niko nije angažovan na ovom predmetu</li>\n"; } while ($r355 = mysql_fetch_row($q355)) { print "<li><a href=\"?sta=studentska/osobe&akcija=edit&osoba={$r355['0']}\">" . tituliraj($r355[0], false, false, true) . "</a> - {$r355['1']} (<a href=\"?sta=studentska/predmeti&akcija=edit&predmet={$predmet}&ag={$ag}&subakcija=deangazuj&osoba={$r355['0']}\">deangažuj</a>)</li>\n"; } print "</ul>\n"; // Ponude kursa ?> <h3>Ponude kursa:</h3> <?php // Forma za upozorenje prilikom brisanja ponudekursa ?> <script language="JavaScript"> function upozorenje2(grupa,broj) { var a = confirm("Ovim će sa predmeta biti ispisano "+broj+" studenata, te pobrisani svi ostvareni bodovi i ocjene. Da li ste sigurni?"); if (a) { document.brisanjepkform.pk.value=grupa; document.brisanjepkform.submit(); } } </script> <?php echo genform("POST", "brisanjepkform"); ?> <input type="hidden" name="akcija" value="edit"> <input type="hidden" name="subakcija" value="obrisi_pk"> <input type="hidden" name="pk" value=""></form> <?php // Evt ispis akademske godine $q359 = myquery("select naziv, aktuelna from akademska_godina where id={$ag}"); if (mysql_num_rows($q359) < 1) { zamgerlog("nepostojeca akademska godina {$ag}", 3); zamgerlog2("nepostojeca akademska godina", $ag); niceerror("Nepostojeća akademska godina!"); return; } $agnaziv = mysql_result($q359, 0, 0); if (mysql_result($q359, 0, 1) != 1) { print "<p>Akademska godina: <b>{$agnaziv}</b></p>"; } $q360 = myquery("select pk.id, s.naziv, pk.semestar, pk.obavezan from ponudakursa as pk, studij as s where pk.predmet={$predmet} and pk.akademska_godina={$ag} and pk.studij=s.id"); if (mysql_num_rows($q360) < 1) { ?> <p><font color="red">Ovaj predmet se trenutno ne nudi nigdje!</font><br/> Dodajte ponudu kursa ispod. Dok to ne uradite, predmet neće biti vidljiv, osim kod pretrage ako je izabrana opcija "Sve akademske godine"</p> <?php } else { print "<ul>\n"; } while ($r360 = mysql_fetch_row($q360)) { // Broj studenata $q365 = myquery("select count(*) from student_predmet where predmet={$r360['0']}"); $brstud = mysql_result($q365, 0, 0); ?> <li><?php echo $r360[1]; ?> , <?php echo $r360[2]; ?> . semestar <?php if ($r360[3] < 1) { print "(izborni)"; } ?> (<a href="javascript:onclick=upozorenje2('<?php echo $r360[0]; ?> ','<?php echo $brstud; ?> ')">obriši ponudu kursa</a>)</li> <?php } if (mysql_num_rows($q360) > 0) { print "</ul>\n"; } ?> <a href="?sta=studentska/predmeti&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &akcija=dodaj_pk">Dodaj ponudu kursa</a><?php // Ranije akademske godine $q370 = myquery("select ag.id, ag.naziv from akademska_godina as ag, ponudakursa as pk where pk.predmet={$predmet} and pk.akademska_godina=ag.id and ag.id!={$ag} group by ag.id order by ag.id"); if (mysql_num_rows($q370) > 0) { ?> <p>Ovaj predmet se držao i sljedećih godina: <?php } while ($r370 = mysql_fetch_row($q370)) { ?> <a href="?sta=studentska/predmeti&akcija=edit&predmet=<?php echo $predmet; ?> &ag=<?php echo $r370[0]; ?> "><?php echo $r370[1]; ?> </a> <?php } if (mysql_num_rows($q370) > 0) { print "</p>\n"; } // Prava pristupa na predmetu ?> <hr> <p>Osobe sa pravima pristupa na predmetu (<?php echo $agnaziv; ?> ):</p> <?php $q351 = myquery("select np.nastavnik,np.nivo_pristupa,o.ime,o.prezime from osoba as o, nastavnik_predmet as np where np.nastavnik=o.id and np.predmet={$predmet} and np.akademska_godina={$ag} order by np.nivo_pristupa, o.prezime, o.ime"); if (mysql_num_rows($q351) < 1) { print "<ul><li>Nijedan nastavnik nema pravo pristupa predmetu.</li></ul>\n"; } else { ?> <script language="JavaScript"> function upozorenje(nastavnik) { document.izbaciform.nastavnik.value=nastavnik; document.izbaciform.submit(); } </script> <?php echo genform("POST", "izbaciform"); ?> <input type="hidden" name="akcija" value="edit"> <input type="hidden" name="subakcija" value="izbaci_nastavnika"> <input type="hidden" name="nastavnik" id="nastavnik" value=""></form> <table width="100%" border="1" cellspacing="0"><tr><td>Ime i prezime</td><td>Nivo pristupa</td><td>Ograničenja</td><td> </td></tr><?php } while ($r351 = mysql_fetch_row($q351)) { $nastavnik = $r351[0]; $imeprezime = "{$r351['2']} {$r351['3']}"; $nivo_pristupa = $r351[1]; if ($nivo_pristupa == 'nastavnik') { $option_nastavnik = "SELECTED"; $option_sa = $option_asistent = ""; } else { if ($nivo_pristupa == 'super_asistent') { $option_sa = "SELECTED"; $option_nastavnik = $option_asistent = ""; } else { if ($nivo_pristupa == 'asistent') { $option_asistent = "SELECTED"; $option_nastavnik = $option_sa = ""; } } } ?> <tr> <td><a href="?sta=studentska/osobe&akcija=edit&osoba=<?php echo $nastavnik; ?> "><?php echo $imeprezime; ?> </td> <td><?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="edit"> <input type="hidden" name="nastavnik" value="<?php echo $nastavnik; ?> "> <input type="hidden" name="subakcija" value="postavi_nivo_pristupa"> <select name="nivo_pristupa" class="default"> <option value="nastavnik" <?php echo $option_nastavnik; ?> >Nastavnik</option> <option value="super_asistent" <?php echo $option_sa; ?> >Super-asistent</option> <option value="asistent" <?php echo $option_asistent; ?> >Asistent</option> </select> <input type="submit" class="default" value=" Postavi "> </form> </td> <td><a href="<?php echo genuri(); ?> &akcija=ogranicenja&nastavnik=<?php echo $nastavnik; ?> "><?php // Spisak grupa na koje ima ogranicenje $q352 = myquery("select l.naziv from ogranicenje as o, labgrupa as l where o.nastavnik={$nastavnik} and o.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}"); if (mysql_num_rows($q352) < 1) { print "Nema"; } while ($r352 = mysql_fetch_row($q352)) { // Ljudi daju glupa imena grupama... if (!preg_match("/\\w/", $r352[0])) { $imegrupe = "[Nema imena]"; } else { $imegrupe = substr($r352[0], 0, 15); } print "{$imegrupe}, "; } ?> </a></td> <td><a href="javascript:onclick=upozorenje('<?php echo $nastavnik; ?> ')">Izbaci</a></td> </tr> <?php } if (mysql_num_rows($q351) > 0) { print "</table>\n"; } // Dodaj nove nastavnike ?> <p>Angažman nastavnika na predmetu: <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="edit"> <input type="hidden" name="subakcija" value="dodaj_nastavnika"> <select name="nastavnik" class="default">'<?php $q360 = myquery("select o.id, o.prezime, o.ime from osoba as o, privilegije as p where p.osoba=o.id and p.privilegija='nastavnik' order by o.prezime, o.ime"); while ($r360 = mysql_fetch_row($q360)) { print "<option value=\"{$r360['0']}\">{$r360['1']} {$r360['2']}</option>\n"; } ?> </select> <input type="submit" value=" Dodaj "></form></p><?php ?> </td></tr></table></center><?php // Vanjska tabela } else { $src = my_escape($_REQUEST["search"]); $limit = 20; $offset = intval($_REQUEST["offset"]); $ak_god = intval($_REQUEST["ag"]); if ($ak_god == 0) { $q299 = myquery("select id from akademska_godina where aktuelna=1 order by naziv desc limit 1"); $ak_god = mysql_result($q299, 0, 0); } ?> <table width="100%" border="0"><tr><td align="left"> <p><b>Pretraga</b><br/> Za prikaz svih predmeta na akademskoj godini, ostavite polje za pretragu prazno.</br> <?php echo genform("GET"); ?> <input type="hidden" name="offset" value="0"> <?php /*resetujem offset*/ ?> <select name="ag"> <option value="-1">Sve akademske godine</option> <?php $q295 = myquery("select id,naziv, aktuelna from akademska_godina order by naziv"); while ($r295 = mysql_fetch_row($q295)) { ?> <option value="<?php echo $r295[0]; ?> "<?php if ($r295[0] == $ak_god) { print " selected"; } ?> ><?php echo $r295[1]; ?> </option> <?php } ?> </select><br/> <input type="text" size="50" name="search" value="<?php if ($src != "") { print $src; } ?> "> <input type="Submit" value=" Pretraži "></form> <br/> <?php if ($ak_god >= 0 && $src != "") { $q300 = myquery("select count(distinct pk.predmet) from ponudakursa as pk, predmet as p where pk.akademska_godina={$ak_god} and (p.naziv like '%{$src}%' or p.kratki_naziv like '%{$src}%') and pk.predmet=p.id"); } else { if ($ak_god >= 0) { $q300 = myquery("select count(distinct pk.predmet) from ponudakursa as pk where pk.akademska_godina={$ak_god}"); } else { if ($src != "") { $q300 = myquery("select count(*) from predmet as p where (p.naziv like '%{$src}%' or p.kratki_naziv like '%{$src}%')"); } else { $q300 = myquery("select count(*) from predmet as p"); } } } $rezultata = mysql_result($q300, 0, 0); if ($rezultata == 0) { print "Nema rezultata!"; } else { if ($rezultata > $limit) { print "Prikazujem rezultate " . ($offset + 1) . "-" . ($offset + 20) . " od {$rezultata}. Stranica: "; for ($i = 0; $i < $rezultata; $i += $limit) { $br = intval($i / $limit) + 1; if ($i == $offset) { print "<b>{$br}</b> "; } else { print "<a href=\"" . genuri() . "&offset={$i}&_lv_column_akademska_godina={$ak_god}\">{$br}</a> "; } } print "<br/>"; } print "<br/>"; if ($ak_god >= 0 && $src != "") { $q301 = myquery("select distinct p.id, p.naziv, i.kratki_naziv, ag.id, ag.naziv from predmet as p, ponudakursa as pk, akademska_godina as ag, institucija as i where pk.akademska_godina=ag.id and ag.id={$ak_god} and (p.naziv like '%{$src}%' or p.kratki_naziv like '%{$src}%') and pk.predmet=p.id and p.institucija=i.id order by ag.naziv desc, p.naziv limit {$offset},{$limit}"); } else { if ($ak_god >= 0) { $q301 = myquery("select distinct p.id, p.naziv, i.kratki_naziv, ag.id, ag.naziv from predmet as p, ponudakursa as pk, akademska_godina as ag, institucija as i where pk.akademska_godina=ag.id and ag.id={$ak_god} and pk.predmet=p.id and p.institucija=i.id order by ag.naziv desc, p.naziv limit {$offset},{$limit}"); } else { if ($src != "") { $q301 = myquery("select distinct p.id, p.naziv, i.kratki_naziv, 1 from predmet as p, institucija as i where (p.naziv like '%{$src}%' or p.kratki_naziv like '%{$src}%') and p.institucija=i.id order by p.naziv limit {$offset},{$limit}"); } else { $q301 = myquery("select distinct p.id, p.naziv, i.kratki_naziv, 1 from predmet as p, institucija as i where p.institucija=i.id order by p.naziv limit {$offset},{$limit}"); } } } print '<table width="100%" border="0">'; $i = $offset + 1; while ($r301 = mysql_fetch_row($q301)) { print "<tr><td>{$i}. {$r301['1']} ({$r301['2']})</td>\n"; print "<td><a href=\"" . genuri() . "&akcija=edit&predmet={$r301['0']}&ag={$r301['3']}\">Detalji</a></td>\n"; if ($user_siteadmin) { print "<td><a href=\"?sta=nastavnik/predmet&predmet={$r301['0']}&ag={$r301['3']}\">Uređivanje predmeta</a></td></tr>"; } $i++; } print "</table>"; } ?> <br/> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="novi"> <b>Novi predmet:</b><br/> <input type="text" name="naziv" size="50"> <input type="submit" value=" Dodaj "> </form> </table> <?php } } } } } ?> </td></tr></table></center> <?php }
function admin_studij() { ?> <h2>Parametri studija</h2> <p><a href="?sta=admin/studij&akcija=ag">Akademska godina</a> * <a href="?sta=admin/studij&akcija=inst">Institucija</a> * <a href="?sta=admin/studij&akcija=kanton">Kanton</a> * <a href="?sta=admin/studij&akcija=komponenta">Komponenta ocjene</a> * <a href="?sta=admin/studij&akcija=studij">Studij</a> * <a href="?sta=admin/studij&akcija=tippr">Tipovi predmeta</a></p> <?php if ($_REQUEST['akcija'] == "ag") { print db_grid("akademska_godina"); print "<br /><hr><br />Dodaj:<br />" . db_form("akademska_godina"); } if ($_REQUEST['akcija'] == "inst") { print db_grid("institucija"); print "<br /><hr><br />Dodaj:<br />" . db_form("institucija"); } if ($_REQUEST['akcija'] == "kanton") { print db_grid("kanton"); print "<br /><hr><br />Dodaj:<br />" . db_form("kanton"); } if ($_REQUEST['akcija'] == "komponenta") { print db_grid("komponenta"); print "<br /><hr><br />Dodaj:<br />" . db_form("komponenta"); } if ($_REQUEST['akcija'] == "studij") { print db_grid("studij"); print "<br /><hr><br />Dodaj:<br />" . db_form("studij"); } if ($_REQUEST['akcija'] == "tippr") { //print db_grid("tippredmeta"); // Ovo trebamo manuelno dok se u libvedran ne doda podrška za many-to-many // relacije // FIXME!! Ne radi!! ?> <table border="0"><tr bgcolor="#bbbbbb"> <td>Naziv</td><td>Komponente</td><td> </td> </tr> <?php $q10 = myquery("select id,naziv from tippredmeta order by id"); $bgcolor = ""; while ($r10 = mysql_fetch_row($q10)) { ?> <tr <?php echo $bgcolor; ?> ><input type="hidden" name="id" value="<?php echo $r10[0]; ?> "> <td><input type="text" name="naziv" value="<?php echo $r10[1]; ?> "></td> <td><?php if ($bgcolor == "") { $bgcolor = "bgcolor=\"#efefef\""; } else { $bgcolor = ""; } $q20 = myquery("select k.id, k.naziv from komponenta as k, tippredmeta_komponenta as tpk where k.id=tpk.komponenta and tpk.tippredmeta={$r10['0']}"); while ($r20 = mysql_fetch_row($q20)) { print $r20[1] . " (<a href=\"\">izbaci</a>)<br />"; } ?> (<a href="">dodaj</a>)</td> <td><input type="submit" name="izmijeni" value=" Izmijeni "> <input type="submit" name="obrisi" value=" Obriši "></td> </tr> <?php } print "</table>\n"; print "<br /><hr><br />Dodaj:<br />" . db_form("tippredmeta"); } }
function nastavnik_kvizovi() { global $userid, $user_siteadmin; global $_lv_; // Parametri $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // Naziv predmeta $q5 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q5) < 1) { biguglyerror("Nepoznat predmet"); zamgerlog("ilegalan predmet {$predmet}", 3); //nivo 3: greska zamgerlog2("nepoznat predmet", $predmet); return; } $predmet_naziv = mysql_result($q5, 0, 0); // Da li korisnik ima pravo ući u modul? if (!$user_siteadmin) { $q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q10) < 1 || mysql_result($q10, 0, 0) == "asistent") { zamgerlog("nastavnik/ispiti privilegije (predmet pp{$predmet})", 3); zamgerlog2("nije nastavnik na predmetu", $predmet, $ag); biguglyerror("Nemate pravo pristupa ovoj opciji"); return; } } ?> <p> </p> <p><h3><?php echo $predmet_naziv; ?> - Kvizovi</h3></p> <p>Napomena: Ovaj modul je još uvijek u fazi razvoja i nije dovoljno testiran. Ne preporučujemo njegovo korištenje.</p> <?php // Akcija - editovanje pitanja if ($_REQUEST['akcija'] == "pitanja") { $kviz = intval($_REQUEST['kviz']); $q200 = myquery("select naziv, predmet, akademska_godina from kviz where id={$kviz}"); if (mysql_num_rows($q200) < 1) { niceerror("Nepostojeći kviz {$kviz}"); zamgerlog("editovanje pitanja: nepostojeci kviz {$kviz}", 3); zamgerlog2("nepostojeci kviz (editovanje pitanja)", $kviz); return; } if (mysql_result($q200, 0, 1) != $predmet || mysql_result($q200, 0, 2) != $ag) { niceerror("Kviz nije sa ovog predmeta"); zamgerlog("editovanje pitanja: kviz {$kviz} nije sa predmeta pp{$predmet} ag{$ag}", 3); zamgerlog2("id kviza i predmeta se ne poklapaju (editovanje pitanja)", $predmet, $ag, $kviz); return; } $naziv_kviza = mysql_result($q200, 0, 0); // Subakcije if ($_REQUEST['subakcija'] == "potvrda_novo" && check_csrf_token()) { $tekst = my_escape($_REQUEST['tekst']); $bodova = floatval(str_replace(',', '.', $_REQUEST['bodova'])); if ($_REQUEST['vidljivo']) { $vidljivo = 1; } else { $vidljivo = 0; } $tip = my_escape($_REQUEST['tip']); $q300 = myquery("insert into kviz_pitanje set kviz={$kviz}, tip='{$tip}', tekst='{$tekst}', bodova={$bodova}, vidljivo={$vidljivo}"); $pitanje = mysql_insert_id(); // Ako je korisnik unosio odgovore prije kreiranja pitanja, njihov id pitanja je 0 $q315 = myquery("update kviz_odgovor set kviz_pitanje={$pitanje} where kviz_pitanje=0"); nicemessage("Pitanje uspješno dodano"); zamgerlog2("dodano pitanje na kviz", $pitanje); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo $pitanje; ?> '; </script> <?php return; } if ($_REQUEST['subakcija'] == "potvrda_izmjene" && check_csrf_token()) { $pitanje = intval($_REQUEST['pitanje']); $tekst = my_escape($_REQUEST['tekst']); $bodova = floatval(str_replace(',', '.', $_REQUEST['bodova'])); if ($_REQUEST['vidljivo']) { $vidljivo = 1; } else { $vidljivo = 0; } $tip = my_escape($_REQUEST['tip']); $q320 = myquery("select kviz from kviz_pitanje where id={$pitanje}"); if (mysql_num_rows($q320) == 0) { niceerror("Pitanje je obrisano!"); zamgerlog("potvrda editovanja pitanja: pitanje {$pitanje} ne postoji", 3); zamgerlog2("pitanje na kvizu ne postoji (potvrda editovanja)", $pitanje); return; } if (mysql_result($q320, 0, 0) != $kviz) { niceerror("Pitanje nije sa ovog kviza"); zamgerlog("potvrda editovanja pitanja: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id pitanja i kviza se ne poklapaju (potvrda editovanja)", $pitanje, $kviz); return; } $q330 = myquery("update kviz_pitanje set tekst='{$tekst}', tip='{$tip}', bodova={$bodova}, vidljivo={$vidljivo} where id={$pitanje}"); nicemessage("Pitanje uspješno izmijenjeno"); zamgerlog2("izmijenjeno pitanje na kvizu", $pitanje); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo $pitanje; ?> '; </script> <?php return; } if ($_REQUEST['subakcija'] == "obrisi") { // brisanje pitanja - ovdje ce nam trebati potvrda! $pitanje = intval($_REQUEST['pitanje']); $q320 = myquery("select kviz from kviz_pitanje where id={$pitanje}"); if (mysql_num_rows($q320) == 0) { niceerror("Pitanje je već obrisano!"); zamgerlog("potvrda brisanja pitanja: pitanje {$pitanje} ne postoji", 3); zamgerlog2("pitanje ne postoji (potvrda brisanja)", $pitanje); return; } if (mysql_result($q320, 0, 0) != $kviz) { niceerror("Pitanje nije sa ovog kviza"); zamgerlog("potvrda brisanja pitanja: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id pitanja i kviza se ne poklapaju (potvrda brisanja)", $pitanje, $kviz); return; } $q335 = myquery("delete from kviz_odgovor where kviz_pitanje={$pitanje}"); $q336 = myquery("delete from kviz_pitanje where id={$pitanje}"); nicemessage("Pitanje uspješno obrisano"); zamgerlog2("obrisano pitanje sa kviza", $kviz, $pitanje); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja'; </script> <?php return; } if ($_REQUEST['subakcija'] == "dodaj_odgovor" && check_csrf_token()) { $pitanje = intval($_REQUEST['pitanje']); $tekst = my_escape($_REQUEST['tekst']); if ($_REQUEST['tacan']) { $tacan = 1; } else { $tacan = 0; } if ($pitanje > 0) { $q320 = myquery("select kviz from kviz_pitanje where id={$pitanje}"); if (mysql_num_rows($q320) == 0 || mysql_result($q320, 0, 0) != $kviz) { niceerror("Pitanje nije sa ovog kviza"); zamgerlog("dodavanje odgovora: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id pitanja i kviza se ne poklapaju (dodavanje odgovora)", $pitanje, $kviz); return; } } $q340 = myquery("insert into kviz_odgovor set kviz_pitanje={$pitanje}, tekst='{$tekst}', tacan={$tacan}"); nicemessage("Odgovor uspješno dodan"); zamgerlog2("dodan odgovor na pitanje", mysql_insert_id()); if ($pitanje > 0) { ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo $pitanje; ?> '; </script> <?php } else { ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja'; </script> <?php } return; } if ($_REQUEST['subakcija'] == "obrisi_odgovor") { // && check_csrf_token()) { $odgovor = intval($_REQUEST['odgovor']); $q350 = myquery("select kp.kviz, kp.id from kviz_pitanje as kp, kviz_odgovor as ko where ko.id={$odgovor} and ko.kviz_pitanje=kp.id"); if (mysql_num_rows($q350) == 0) { // Moguće da je odgovor dat prije pitanja $q355 = myquery("select kviz_pitanje from kviz_odgovor where id={$odgovor}"); if (mysql_num_rows($q355) == 0) { niceerror("Odgovor je već obrisan!"); zamgerlog("brisanje odgovora: odgovor {$odgovor} ne postoji", 3); zamgerlog2("odgovor ne postoji (brisanje odgovora)", $odgovor); return; } } else { if (mysql_result($q350, 0, 0) != $kviz) { niceerror("Odgovor ne postoji ili pitanje nije sa ovog kviza"); zamgerlog("brisanje odgovora: odgovor {$odgovor} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id odgovora i kviza se ne poklapaju (brisanje odgovora)", $odgovor, $kviz); return; } } $q360 = myquery("delete from kviz_odgovor where id={$odgovor}"); nicemessage("Odgovor uspješno obrisan"); $dodaj = ""; if (mysql_num_rows($q350) != 0) { $dodaj = "&subakcija=izmijeni&pitanje=" . mysql_result($q350, 0, 1); } zamgerlog2("obrisan odgovor sa kviza", $odgovor, $kviz); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja<?php echo $dodaj; ?> '; </script> <?php return; } if ($_REQUEST['subakcija'] == "toggle_tacnost") { // && check_csrf_token()) { $odgovor = intval($_REQUEST['odgovor']); $q370 = myquery("select kp.kviz, kp.id, ko.tacan from kviz_pitanje as kp, kviz_odgovor as ko where ko.id={$odgovor} and ko.kviz_pitanje=kp.id"); if (mysql_num_rows($q370) == 0 || mysql_result($q370, 0, 0) != $kviz) { niceerror("Odgovor ne postoji ili pitanje nije sa ovog kviza"); zamgerlog("toggle tacnost: odgovor {$odgovor} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id odgovora i kviza se ne poklapaju (toggle tacnosti)", $odgovor, $kviz); return; } if (mysql_result($q370, 0, 2) == 1) { $tacan = 0; } else { $tacan = 1; } $q380 = myquery("update kviz_odgovor set tacan={$tacan} where id={$odgovor}"); nicemessage("Odgovor proglašen za (ne)tačan"); zamgerlog2("odgovor proglasen za (ne)tacan", $odgovor, $tacan); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo mysql_result($q370, 0, 1); ?> '; </script> <?php return; } if ($_REQUEST['subakcija'] == "kopiraj_pitanja" && check_csrf_token()) { $drugi_kviz = intval($_REQUEST['_lv_column_kviz']); $q740 = myquery("SELECT naziv FROM kviz WHERE id={$drugi_kviz}"); // Dozvoljavamo kopiranje sa kviza sa drugog predmeta!? if (mysql_num_rows($q740) == 0) { niceerror("Nepoznat kviz"); zamgerlog2("nepoznat ID kviza", $drugi_kviz); return; } $q700 = myquery("SELECT id, tip, tekst, bodova, vidljivo FROM kviz_pitanje WHERE kviz={$drugi_kviz}"); while ($r700 = mysql_fetch_row($q700)) { $staro_pitanje = $r700[0]; $tekst = mysql_real_escape_string($r700[2]); $q710 = myquery("INSERT INTO kviz_pitanje SET kviz={$kviz}, tip='{$r700['1']}', tekst='{$tekst}', bodova={$r700['3']}, vidljivo={$r700['4']}"); $novo_pitanje = mysql_insert_id(); // Kreiranje odgovora na pitanje $q720 = myquery("SELECT tekst, tacan, vidljiv FROM kviz_odgovor WHERE kviz_pitanje={$staro_pitanje}"); while ($r720 = mysql_fetch_row($q720)) { $tekst = mysql_real_escape_string($r720[0]); $q730 = myquery("INSERT INTO kviz_odgovor SET kviz_pitanje={$novo_pitanje}, tekst='{$tekst}', tacan={$r720['1']}, vidljiv={$r720['2']}"); } } nicemessage("Prekopirana pitanja sa kviza"); zamgerlog2("prekopirana pitanja sa kviza", $kviz, $drugi_kviz); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja'; </script> <?php return; } ?> <h3>Izmjena pitanja za kviz "<?php echo $naziv_kviza; ?> "</h3> <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &_lv_nav_id=<?php echo $kviz; ?> ">Nazad na podešavanje parametara kviza</a><br><br> <table border="0" cellspacing="1" cellpadding="2"> <tr bgcolor="#999999"> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">R.br.</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Tekst pitanja</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Odgovori</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Bodova</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Vidljivo?</font></td> <td> </td> </tr> <?php $rbr = 0; $q210 = myquery("select id, tip, tekst, bodova, vidljivo from kviz_pitanje where kviz={$kviz}"); while ($r210 = mysql_fetch_row($q210)) { // Pribavljamo odgovore $odgovori = ""; $q220 = myquery("select tekst, tacan from kviz_odgovor where kviz_pitanje={$r210['0']} order by tacan desc"); if (mysql_num_rows($q220) < 1) { $odgovori = "<font color=\"red\">Nema ponuđenih odgovora</font>"; } $broj_tacnih = 0; while ($r220 = mysql_fetch_row($q220)) { $odgovori .= "'{$r220['0']}'"; if ($r220[1] == 1) { $odgovori .= " (*)"; $broj_tacnih++; } $odgovori .= ", "; } if (mysql_num_rows($q220) > 0 && $broj_tacnih == 0) { $odgovori = "<font color=\"red\">Nije ponuđen tačan odgovor</font><br>\n" . $odgovori; } else { if (mysql_num_rows($q220) > 0 && $r210[1] == 'mcma' && $broj_tacnih == 1) { $odgovori = "<font color=\"red\">Ponuđen je samo jedan tačan odgovor</font><br>\n" . $odgovori; } } $vidljivo = "NE"; if ($r210[4] == 1) { $vidljivo = "DA"; } $rbr++; ?> <tr> <td><?php echo $rbr; ?> </td> <td><?php echo $r210[2]; ?> </td> <td><?php echo $odgovori; ?> </td> <td><?php echo $r210[3]; ?> </td> <td><?php echo $vidljivo; ?> </td> <td><a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=obrisi&pitanje=<?php echo $r210[0]; ?> ">Obriši</a> * <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo $r210[0]; ?> ">Izmijeni</a></td> </tr> <?php } print "</table>\n<br><br>\n"; if (mysql_num_rows($q210) == 0) { print genform("POST"); ?> <input type="hidden" name="subakcija" value="kopiraj_pitanja"> <p>Kopiraj pitanja sa kviza:<?php $_lv_["where:predmet"] = $predmet; $_lv_["where:akademska_godina"] = $ag; print db_dropdown("kviz"); ?> <input type="submit" value=" Kreni "> </p></form><?php } if ($_REQUEST['subakcija'] == "izmijeni") { ?> <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja">Dodaj novo pitanje</a><br><br> <a name="izmjena"></a> <b>Izmjena pitanja</b><br> <?php $pitanje = intval($_REQUEST['pitanje']); $q230 = myquery("select kviz, tip, tekst, bodova, vidljivo from kviz_pitanje where id={$pitanje}"); if (mysql_num_rows($q230) < 1) { niceerror("Nepostojeće pitanje {$pitanje}"); zamgerlog("editovanje pitanja: nepostojece pitanje {$pitanje}", 3); zamgerlog2("nepostojece pitanje (editovanje pitanja)", $pitanje); return; } if (mysql_result($q230, 0, 0) != $kviz) { niceerror("Pitanje nije sa ovog kviza"); zamgerlog("editovanje pitanja: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id pitanja i kviza se ne poklapaju (editovanje pitanja)", $pitanje, $kviz); return; } $tip = mysql_result($q230, 0, 1); $tekst = mysql_result($q230, 0, 2); $bodova = mysql_result($q230, 0, 3); if (mysql_result($q230, 0, 4) == 1) { $vidljivo = "CHECKED"; } else { $vidljivo = ""; } $subakcija = "potvrda_izmjene"; } else { print "<b>Dodajte novo pitanje</b><br>\n"; $tekst = $vidljiv = ""; $bodova = $pitanje = 0; $tip = "mcsa"; $subakcija = "potvrda_novo"; } unset($_REQUEST['subakcija']); unset($_GET['subakcija']); ?> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="<?php echo $subakcija; ?> "> <input type="hidden" name="pitanje" value="<?php echo $pitanje; ?> "> <table border="0"> <tr><td>Tekst pitanja:</td><td><input type="text" size="50" name="tekst" value="<?php echo $tekst; ?> "></td></tr> <tr><td>Bodova:</td><td><input type="text" size="5" name="bodova" value="<?php echo $bodova; ?> "></td></tr> <tr><td>Tip pitanja:</td><td> <select name="tip"> <option value="mcsa" <?php if ($tip == "mcsa") { print "SELECTED"; } ?> >MCSA</option> <option value="mcma" <?php if ($tip == "mcma") { print "SELECTED"; } ?> >MCMA</option> <option value="tekstualno" <?php if ($tip == "tekstualno") { print "SELECTED"; } ?> >Tekstualno</option> </select> <a href="#" onclick="javascript:window.open('legenda-pitanja.html','blah6','width=320,height=300');">Legenda tipova pitanja</a> </td></tr> <tr><td align="right"><input type="checkbox" name="vidljivo" value="1" <?php echo $vidljivo; ?> ></td><td>Pitanje vidljivo</td></tr> </table> <br>Ponuđeni odgovori:<br> <ul> <?php $q240 = myquery("select id, tekst, tacan, vidljiv from kviz_odgovor where kviz_pitanje={$pitanje}"); if (mysql_num_rows($q240) == 0) { print "<li>Do sada nije unesen nijedan odgovor</li>\n"; } while ($r240 = mysql_fetch_row($q240)) { print "<li>"; if ($r240[3] == 0) { print "<font color=\"#AAAAAA\">"; } print $r240[1]; if ($r240[2] == 1) { print " (TAČAN)"; $toggle_link = "Proglasi za netačan"; } else { $toggle_link = "Proglasi za tačan"; } if ($r240[3] == 0) { print "</font> - nevidljiv"; } ?> - <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=obrisi_odgovor&odgovor=<?php echo $r240[0]; ?> ">Obriši</a> - <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=toggle_tacnost&odgovor=<?php echo $r240[0]; ?> "><?php echo $toggle_link; ?> </a></li> <?php } ?> </ul> <input type="submit" value="Promjena pitanja"><br> </form> <br> Dodajte odgovor na ovo pitanje:<br> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="dodaj_odgovor"> <input type="hidden" name="pitanje" value="<?php echo $pitanje; ?> "> Tekst odgovora: <input type="text" name="tekst" size="50"><br> <input type="checkbox" name="tacan" value="1"> Tačan<br> <input type="submit" value="Dodaj"><br> </form> <?php return; } // Akcija - statistički pregled rezultata kviza if ($_REQUEST['akcija'] == "rezultati") { $kviz = intval($_REQUEST['kviz']); $q600 = myquery("select naziv, predmet, akademska_godina, broj_pitanja, prolaz_bodova from kviz where id={$kviz}"); if (mysql_num_rows($q600) < 1) { niceerror("Nepostojeći kviz {$kviz}"); zamgerlog("editovanje pitanja: nepostojeci kviz {$kviz}", 3); zamgerlog2("nepostojeci kviz (editovanje pitanja)", $kviz); return; } if (mysql_result($q600, 0, 1) != $predmet || mysql_result($q600, 0, 2) != $ag) { niceerror("Kviz nije sa ovog predmeta"); zamgerlog("editovanje pitanja: kviz {$kviz} nije sa predmeta pp{$predmet} ag{$ag}", 3); zamgerlog2("id kviza i predmeta se ne poklapaju (editovanje pitanja)", $predmet, $ag, $kviz); return; } $naziv_kviza = mysql_result($q600, 0, 0); $max_bodova = mysql_result($q600, 0, 3); $prolaz_bodova = mysql_result($q600, 0, 4); $broj_bodova = array(); $ukupno = $max_broj = $ukupno_prolaz = 0; for ($i = 0; $i <= $max_bodova; $i++) { $q620 = myquery("SELECT COUNT(*) FROM kviz_student WHERE kviz={$kviz} AND dovrsen=1 AND bodova>={$i} AND bodova<" . ($i + 1)); $broj_bodova[$i] = mysql_result($q620, 0, 0); $ukupno += $broj_bodova[$i]; if ($broj_bodova[$i] > $max_broj) { $max_broj = $broj_bodova[$i]; } if ($i >= $prolaz_bodova) { $ukupno_prolaz += $broj_bodova[$i]; } } $q630 = myquery("SELECT COUNT(*) FROM kviz_student WHERE kviz={$kviz} AND dovrsen=0"); $nedovrsenih = mysql_result($q630, 0, 0); ?> <p>Popunilo kviz: <b><?php echo $ukupno; ?> </b> studenata<br /> Nisu dovršili popunjavanje kviza: <b><?php echo $nedovrsenih; ?> </b> studenata<br /> Ostvarilo prolazne bodove: <b><?php echo $ukupno_prolaz; ?> </b> studenata (<?php echo procenat($ukupno_prolaz, $ukupno); ?> )</p> <h3><?php echo $naziv_kviza; ?> </h3> <h4>Distribucija bodova</h4> <div id="grafik"> <div style="width:300px;height:200px;margin:5px;"> <?php foreach ($broj_bodova as $bod => $broj) { if ($broj == 0) { $broj_pixela_print = 170; } else { $broj_pixela = $broj / $max_broj * 200; $broj_pixela_print = intval(200 - $broj_pixela); } if ($bod < $prolaz_bodova) { $boja = "red"; } else { $boja = "green"; } ?> <div style="width:45px; height:200px; background:<?php echo $boja; ?> ;margin-left:5px;float:left;"> <div style="width:45px;height:<?php echo $broj_pixela_print; ?> px;background:white;"> </div> <span style="color:white;font-size: 25px; text-align: center; "> <?php echo $bod; ?> </span> </div> <?php } ?> </div> <div style="width:300px;height:50px;margin:5px;"> <?php foreach ($broj_bodova as $bod => $broj) { ?> <div style="width:45px; margin-left:5px; text-align: center; float:left; "> <?php echo $broj; ?> (<?php echo procenat($broj, $ukupno); ?> ) </div> <?php } ?> </div> </div> <?php // Statistika pitanja ?> <h3>Statistika pitanja</h3> <table border="1" style="border-collapse:collapse"> <tr><th>Pitanje</th><th>Uk. odgovora</th><th>Tačnih</th></tr> <?php $q640 = myquery("SELECT id, tekst, ukupno, tacnih FROM kviz_pitanje WHERE kviz={$kviz} ORDER BY tacnih/ukupno"); while ($r640 = mysql_fetch_row($q640)) { $id_pitanja = $r640[0]; $pitanje = $r640[1]; if (strlen($pitanje) > 60) { $skr_pitanje = mb_substr($pitanje, 0, 50) . "..."; } else { $skr_pitanje = $pitanje; } $odgovora = $r640[2]; $tacnih = $r640[3]; ?> <tr> <td title="<?php echo $pitanje; ?> "> <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo $id_pitanja; ?> #izmjena"><?php echo $skr_pitanje; ?> </a></td> <td><?php echo $odgovora; ?> </td> <td><?php echo $tacnih; ?> (<?php echo procenat($tacnih, $odgovora); ?> )</td> </tr> <?php } ?> </table> <?php return; } // Kopiranje kvizova sa prošlogodišnjeg predmeta if ($_REQUEST['akcija'] === "prosla_godina" && strlen($_POST['nazad']) < 1) { $old_ag = $ag - 1; // Ovo je po definiciji prošla godina $greska = false; $q499 = myquery("SELECT naziv FROM akademska_godina WHERE id={$old_ag}"); if (mysql_num_rows($q499) == 0) { niceerror("Nije pronađena prošla akademska godina."); zamgerlog("nije pronadjena akademska godina {$old_ag}"); zamgerlog2("nije pronadjena akademska godina", $old_ag); $greska = true; } if (!$greska) { $q500 = myquery("SELECT naziv FROM kviz WHERE predmet={$predmet} AND akademska_godina={$old_ag}"); if (mysql_num_rows($q500) == 0) { niceerror("Prošle godine nije bio definisan nijedan kviz"); zamgerlog("prosle godine nije bio definisan nijedan kviz {$predmet} {$old_ag}"); zamgerlog2("prosle godine nije bio definisan nijedan kviz", $predmet, $old_ag); $greska = true; } } if (!$greska && $_REQUEST['potvrda'] === "potvrdjeno" && check_csrf_token()) { $q510 = myquery("SELECT id, naziv, vrijeme_pocetak, vrijeme_kraj, ip_adrese, prolaz_bodova, broj_pitanja, trajanje_kviza, aktivan FROM kviz WHERE predmet={$predmet} AND akademska_godina={$old_ag}"); while ($r510 = mysql_fetch_row($q510)) { // Kreiranje novog kviza $stari_kviz = $r510[0]; print "<p>Kopiram kviz {$r510['1']}...</p>"; $naziv = mysql_real_escape_string($r510[1]); $q520 = myquery("INSERT INTO kviz SET naziv='{$naziv}', predmet={$predmet}, akademska_godina={$ag}, vrijeme_pocetak='{$r510['2']}', vrijeme_kraj='{$r510['3']}', ip_adrese='{$r510['4']}', prolaz_bodova={$r510['5']}, broj_pitanja={$r510['6']}, trajanje_kviza={$r510['7']}, aktivan={$r510['8']}"); $novi_kviz = mysql_insert_id(); // Kreiranje pitanja $q530 = myquery("SELECT id, tip, tekst, bodova, vidljivo FROM kviz_pitanje WHERE kviz={$stari_kviz}"); while ($r530 = mysql_fetch_row($q530)) { $staro_pitanje = $r530[0]; $tekst = mysql_real_escape_string($r530[2]); $q540 = myquery("INSERT INTO kviz_pitanje SET kviz={$novi_kviz}, tip='{$r530['1']}', tekst='{$tekst}', bodova={$r530['3']}, vidljivo={$r530['4']}"); $novo_pitanje = mysql_insert_id(); // Kreiranje odgovora na pitanje $q550 = myquery("SELECT tekst, tacan, vidljiv FROM kviz_odgovor WHERE kviz_pitanje={$staro_pitanje}"); while ($r550 = mysql_fetch_row($q550)) { $tekst = mysql_real_escape_string($r550[0]); $q560 = myquery("INSERT INTO kviz_odgovor SET kviz_pitanje={$novo_pitanje}, tekst='{$tekst}', tacan={$r550['1']}, vidljiv={$r550['2']}"); } } } nicemessage("Kopiranje završeno!"); print "<a href=\"?sta=nastavnik/kvizovi&predmet={$predmet}&ag={$ag}\">Povratak na stranicu kvizova</a>\n"; return; } else { if (!$greska) { nicemessage("Kopiram sljedeće kvizove iz akademske " . mysql_result($q499, 0, 0) . ". godine."); print "\n<ul>\n"; while ($r500 = mysql_fetch_row($q500)) { print "<li>{$r500['0']}</li>\n"; } print "</ul>\n"; print genform("POST"); ?> <input type="hidden" name="potvrda" value="potvrdjeno"> <p>Da li ste sigurni?</p> <p><input type="submit" name="nazad" value=" Nazad "> <input type="submit" value=" Potvrda"></p> </form> <?php } } return; } // Korektno brisanje kviza if ($_REQUEST['_lv_action_delete']) { $kviz = intval($_REQUEST['_lv_column_id']); $q200 = myquery("select naziv, predmet, akademska_godina from kviz where id={$kviz}"); if (mysql_num_rows($q200) < 1) { niceerror("Nepostojeći kviz {$kviz}"); zamgerlog("brisanje kviza: nepostojeci kviz {$kviz}", 3); zamgerlog2("nepostojeci kviz (brisanje kviza)", $kviz); return; } if (mysql_result($q200, 0, 1) != $predmet || mysql_result($q200, 0, 2) != $ag) { niceerror("Kviz nije sa ovog predmeta"); zamgerlog("brisanje kviza: kviz {$kviz} nije sa predmeta pp{$predmet} ag{$ag}", 3); zamgerlog2("id kviza i predmeta se ne poklapaju (brisanje kviza)", $predmet, $ag, $kviz); return; } $q400 = myquery("select id from kviz_pitanje where kviz={$kviz}"); // Brisemo odgovore while ($r400 = mysql_fetch_row($q400)) { $q410 = myquery("delete from kviz_odgovor where kviz_pitanje={$r400['0']}"); } $q420 = myquery("delete from kviz_pitanje where kviz={$kviz}"); $q430 = myquery("delete from kviz_student where kviz={$kviz}"); // db_form() će pobrisati stavku iz tabele kviz zamgerlog2("obrisan kviz", $predmet, $ag, $kviz); } // Provjeravamo da li je raspon dobro unesen if (($_REQUEST['_lv_action'] == "edit" || $_REQUEST['_lv_action'] == "add") && !$_REQUEST['_lv_action_delete']) { $ip_adresa_losa = false; if ($_REQUEST['_lv_action'] == "edit") { $id_kviza = intval($_REQUEST['_lv_column_id']); // Dodajemo logging zamgerlog("izmijenjen kviz {$id_kviza} (pp{$predmet})", 2); zamgerlog2("izmijenjen kviz", $id_kviza); } else { $labgrupa = intval($_REQUEST['_lv_column_labgrupa']); $naziv = my_escape($_REQUEST['_lv_column_naziv']); $pb = floatval($_REQUEST['_lv_column_prolaz_bodova']); $q100 = myquery("select id from kviz where predmet={$predmet} and akademska_godina={$ag} and naziv='{$naziv}' and labgrupa={$labgrupa} and prolaz_bodova={$pb}"); $id_kviza = mysql_result($q100, 0, 0); zamgerlog("dodan novi kviz {$id_kviza} (pp{$predmet})", 2); zamgerlog2("dodan kviz", $id_kviza); } $ip_adrese = $_REQUEST['_lv_column_ip_adrese']; foreach (explode(",", $ip_adrese) as $blok) { if (strstr($blok, "/")) { // blok adresa u CIDR formatu list($baza, $maska) = explode("/", $blok); if ($baza != long2ip(ip2long($baza))) { $ip_adresa_losa = true; break; } if ($maska != intval($maska)) { $ip_adresa_losa = true; break; } if ($maska < 1 || $maska > 32) { $ip_adresa_losa = true; break; } } else { if (strstr($blok, "-")) { // raspon adresa sa crticom list($pocetak, $kraj) = explode("-", $blok); if ($pocetak != long2ip(ip2long($pocetak))) { $ip_adresa_losa = true; break; } if ($kraj != long2ip(ip2long($kraj))) { $ip_adresa_losa = true; break; } } else { // pojedinačna adresa if ($blok != long2ip(ip2long($blok))) { $ip_adresa_losa = true; break; } } } } // Vraćamo se na editovanje lošeg kviza if ($ip_adresa_losa) { $_REQUEST['_lv_nav_id'] = $id_kviza; $_GET['_lv_nav_id'] = $id_kviza; $_POST['_lv_nav_id'] = $id_kviza; niceerror("Neispravan format IP adrese"); ?> <p>Raspon IP adresa treba biti u jednom od formata:<br> - CIDR format (npr. 123.45.67.89/24)<br> - raspon početak-kraj sa crticom (npr. 123.45.67.89-123.45.67.98)<br> - pojedinačna adresa<br> Takođe možete navesti više raspona ili pojedinačnih adresa razdvojenih zarezom.</p> <?php } } // Spisak postojećih kvizova $_lv_["where:predmet"] = $predmet; $_lv_["where:akademska_godina"] = $ag; $_lv_["new_link"] = "Unos novog kviza"; print "Odaberite neki od postojećih kvizova koji želite administrirati:<br/>\n"; print db_list("kviz"); $q1000 = myquery("SELECT COUNT(*) FROM kviz WHERE predmet={$predmet} AND akademska_godina={$ag}"); if (mysql_result($q1000, 0, 0) == 0) { print "<p><a href=\"?sta=nastavnik/kvizovi&predmet={$predmet}&ag={$ag}&akcija=prosla_godina\">Prekopiraj kvizove sa prošle akademske godine</a></p>\n"; } print "<hr>\n"; $kviz = intval($_REQUEST['_lv_nav_id']); if ($kviz > 0) { ?> <h3>Izmjena kviza</h3> <ul> <li><a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja">Izmijenite pitanja na kvizu</a></li> <li><a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=rezultati">Rezultati kviza (do sada poslani odgovori)</a></li> </ul> <?php } else { ?> <h3>Kreiranje novog kviza</h3> <p>Unesite podatke o novom kvizu koji želite kreirati:</p><br> <?php } $_lv_["label:vrijeme_pocetak"] = "Početak"; $_lv_["label:vrijeme_kraj"] = "Kraj"; $_lv_["label:labgrupa"] = "Samo za studente iz grupe"; $_lv_["label:ip_adrese"] = "Ograniči na IP adrese"; $_lv_["label:prolaz_bodova"] = "Minimum bodova za prolaz"; $_lv_["label:trajanje_kviza"] = "Trajanje kviza (u sekundama)"; $_lv_["hidden:predmet"] = 1; $_lv_["hidden:akademska_godina"] = 1; print db_form("kviz", "kvizform"); // Markiramo loše polje if ($ip_adresa_losa) { ?> <script> var element = document.getElementsByName('_lv_column_ip_adrese'); element[0].style.backgroundColor = "#FF9999"; element[0].focus(); element[0].select(); </script> <?php } }