function studentski_meni($fj) { global $userid, $sta, $registry; // 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 $conf_dbhost, $conf_dbuser, $conf_dbpass, $conf_dbdb; // Koji od interesantnih registry modula su aktivni $modul_uou = $modul_kolizija = $modul_prijava = $modul_prosjek = $modul_anketa = 0; foreach ($registry as $r) { if ($r[5] != 0) { continue; } // nevidljiv if ($r[0] == "student/ugovoroucenju") { $modul_uou = 1; } if ($r[0] == "student/kolizija") { $modul_kolizija = 1; } if ($r[0] == "student/prijava_ispita") { $modul_prijava = 1; } if ($r[0] == "student/prosjeci") { $modul_prosjek = 1; } if ($r[0] == "student/anketa") { $modul_anketa = 1; } } // Upit $q30 vraca predmete koje je student ikada slusao (arhiva=1) ili koje trenutno slusa (arhiva=0) $arhiva = intval($_REQUEST['sm_arhiva']); if ($arhiva == 1) { $sem_ispis = "Arhivirani predmeti"; $q30 = myquery("SELECT pk.id, p.naziv, pk.semestar, ag.naziv, p.id, ag.id, agp.tippredmeta\n\t\tFROM student_predmet as sp, ponudakursa as pk, predmet as p, akademska_godina as ag, akademska_godina_predmet as agp\n\t\tWHERE sp.student={$userid} AND sp.predmet=pk.id AND pk.predmet=p.id AND pk.akademska_godina=ag.id AND ag.id=agp.akademska_godina AND p.id=agp.predmet\n\t\tORDER BY ag.id, pk.semestar MOD 2 DESC, p.naziv"); } else { // Aktuelna akademska godina $q10 = myquery("select id,naziv from akademska_godina where aktuelna=1"); $ag = mysql_result($q10, 0, 0); // Studij koji student trenutno sluša $q20 = myquery("select studij,semestar from student_studij where student={$userid} and akademska_godina={$ag} order by semestar desc limit 1"); if (mysql_num_rows($q20) < 1) { $sem_ispis = "Niste upisani na studij!"; $q30 = myquery("SELECT * from student_studij where 1=0"); // dummy upit koji ne vraca ništa // Može li ovo bolje!? } else { $studij = mysql_result($q20, 0, 0); $semestar = mysql_result($q20, 0, 1); // Određujemo da li je aktuelni semestar parni ili neparni $semestar = $semestar % 2; if ($semestar == 1) { $sem_ispis = "Zimski semestar "; } else { $sem_ispis = "Ljetnji semestar "; } $sem_ispis .= mysql_result($q10, 0, 1) . ":"; $q30 = myquery("SELECT pk.id, p.naziv, pk.semestar, ag.naziv, p.id, ag.id, agp.tippredmeta\n\t\t\tFROM student_predmet as sp, ponudakursa as pk, predmet as p, akademska_godina as ag, akademska_godina_predmet as agp\n\t\t\tWHERE sp.student={$userid} AND sp.predmet=pk.id AND pk.predmet=p.id AND pk.akademska_godina={$ag} AND pk.semestar%2={$semestar} AND pk.akademska_godina=ag.id AND agp.akademska_godina={$ag} AND agp.predmet=p.id\n\t\t\tORDER BY p.naziv"); } } $ispis = '<table border="0" cellspacing="2" cellpadding="1">'; $oldsem = $oldag = 0; // Glavna petlja za generisanje ispisa while ($r30 = mysql_fetch_row($q30)) { $ponudakursa = $r30[0]; $predmet_naziv = $r30[1]; $predmet = $r30[4]; $pag = $r30[5]; $zimskiljetnji = $r30[2] % 2; $tippredmeta = $r30[6]; // Zaglavlje sa imenom akademske godine i semestrom if ($zimskiljetnji != $oldsem || $r30[3] != $oldag) { if ($r30[2] % 2 == 1) { $ispis .= "<tr><td colspan=\"2\"><br/><img src=\"images/fnord.gif\" width=\"1\" height=\"2\"><br/><b>Zimski semestar "; } else { $ispis .= "<tr><td colspan=\"2\"><br/><img src=\"images/fnord.gif\" width=\"1\" height=\"2\"><br/><b>Ljetnji semestar "; } $ispis .= $r30[3] . ":</b><br/><br/></td></tr>\n"; $oldsem = $zimskiljetnji; $oldag = $r30[3]; } // Ako je modul trenutno aktivan, boldiraj i prikaži meni if (intval($_REQUEST['predmet']) == $predmet && intval($_REQUEST['ag']) == $pag) { $ispis .= '<tr><td valign="top" style="padding-top:2px;"><img src="images/dole.png" align="bottom" border="0"></td>' . "\n<td>"; if ($tippredmeta == 1000) { $ispis .= "<a href=\"?sta=student/zavrsni&predmet={$predmet}&ag={$pag}&sm_arhiva={$arhiva}\">"; } else { if ($_REQUEST['sta'] != "student/predmet") { $ispis .= "<a href=\"?sta=student/predmet&predmet={$predmet}&ag={$pag}&sm_arhiva={$arhiva}\">"; } } $ispis .= "<b>{$predmet_naziv}</b>"; if ($_REQUEST['sta'] != "student/predmet") { $ispis .= "</a>"; } $ispis .= "<br/>\n"; // Studentski moduli aktivirani za ovaj predmet $q40 = myquery("select sm.gui_naziv, sm.modul, sm.novi_prozor from studentski_modul as sm, studentski_modul_predmet as smp where smp.predmet={$predmet} and smp.akademska_godina={$pag} and smp.aktivan=1 and smp.studentski_modul=sm.id order by sm.id"); while ($r40 = mysql_fetch_row($q40)) { $tip_forum = ""; if ($r40[0] == "Forum Komentari") { $tip_forum = "&tip=forum"; } if ($r40[1] == $_REQUEST['sta']) { $ispis .= " {$r40['0']}<br/>\n"; } else { if ($r40[2] == 1) { $ispis .= " <a href=\"?sta={$r40['1']}&predmet={$predmet}&ag={$pag}{$tip_forum}\" target=\"_blank\">{$r40['0']}</a><br/>\n"; } else { $ispis .= " <a href=\"?sta={$r40['1']}&predmet={$predmet}&ag={$pag}&sm_arhiva={$arhiva}\">{$r40['0']}</a><br/>\n"; } } } // Da li ima aktivna anketa i da li je istekao rok? if ($modul_anketa) { $q42 = myquery("select UNIX_TIMESTAMP(datum_zatvaranja) from anketa_anketa where aktivna=1"); if (mysql_num_rows($q42) != 0) { // da li uopce ima kreirana anketa ako ne , ne radi nista $rok = mysql_result($q42, 0, 0); if (time() < $rok) { $q42b = myquery("select id from anketa_anketa a where a.aktivna=1"); if (mysql_num_rows($q42b) > 0) { $ispis .= " <a href=\"?sta=student/anketa&predmet={$predmet}\">Anketa</a><br/>\n"; } } } } $ispis .= "</td></tr>\n"; } else { if ($tippredmeta == 1000) { $ispis .= '<tr><td valign="top" style="padding-top:2px;"><img src="images/lijevo.png" align="bottom" border="0"></td>' . "\n<td><a href=\"?sta=student/zavrsni&predmet={$predmet}&ag={$pag}&sm_arhiva={$arhiva}\">{$predmet_naziv}</a></td></tr>\n"; } else { $ispis .= '<tr><td valign="top" style="padding-top:2px;"><img src="images/lijevo.png" align="bottom" border="0"></td>' . "\n<td><a href=\"?sta=student/predmet&predmet={$predmet}&ag={$pag}&sm_arhiva={$arhiva}\">{$predmet_naziv}</a></td></tr>\n"; } } } $ispis .= "</table>\n"; ?> <table width="100%" border="0" cellspacing="4" cellpadding="0"> <tr><td valign="top"> <img src="images/fnord.gif" width="197" height="1"><br/><br/> <?php if ($sta != "student/intro") { ?> <a href="?sta=student/intro"><-- Nazad na početnu</a> <?php } else { ?> <?php } echo $ispis; ?> <br /> <?php if ($arhiva == 0) { ?> <a href="<?php echo genuri(); ?> &sm_arhiva=1">Prikaži arhivirane predmete</a> <?php } else { ?> <a href="<?php echo genuri(); ?> &sm_arhiva=0">Sakrij arhivirane predmete</a> <?php } ?> <br /><br /> <img src="images/plus.png" width="13" height="13" id="img-dokumenti" onclick="daj_stablo('dokumenti')"> <a href="#" onclick="daj_stablo('dokumenti'); return false;">Dokumenti</a><br /> <div id="dokumenti" style="display:none"> <a href="?sta=student/potvrda">Zahtjev za ovjereno uvjerenje</a> <i><font color="red">NOVO!</font></i><br /> <a href="?sta=izvjestaj/index&student=<?php echo $userid; ?> ">Uvjerenje o položenim predmetima</a><br /> <a href="?sta=izvjestaj/progress&student=<?php echo $userid; ?> &razdvoji_ispite=1">Pregled ostvarenog rezultata</a><br /> <?php if ($modul_uou) { ?> <a href="?sta=student/ugovoroucenju">Ugovor o učenju</a><br /> <?php } ?> <?php if ($modul_prijava) { ?> <a href="?sta=student/prijava_ispita">Prijava ispita</a><br /> <?php } ?> Promjena odsjeka <i><font color="red">USKORO!</font></i><br /> <?php if ($modul_kolizija) { ?> <a href="?sta=student/kolizija">Zahtjev za koliziju</a><br /> <?php } ?> <?php if ($modul_prosjek) { ?> <a href="?sta=student/prosjeci">Prosjeci po godinama</a><br /> <?php } ?> </div> <br /><br /> <?php // Prikaz poruka sa Moodle foruma if (isset($_REQUEST['predmet']) && isset($_REQUEST['ag']) && $conf_moodle) { // Varijabla komentariforum postaje ID predmeta koji je izabran $komentariforum = $_REQUEST['predmet']; $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); $qsm = myquery("select aktivan from studentski_modul_predmet where predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($qsm) > 0) { $aktivan_provjera = mysql_result($qsm, 0, 0); if ($aktivan_provjera == 1) { $q = myquery("select moodle_id from moodle_predmet_id where predmet={$predmet} and akademska_godina={$ag}"); // Uzimanje Moodle_ID ako je predmet povezan sa moodle if (mysql_num_rows($q) > 0) { $moodle_id = mysql_result($q, 0, 0); // Konekcija na bazu? if (!$conf_moodle_reuse_connection) { dbdisconnect(); dbconnect2($conf_moodle_dbhost, $conf_moodle_dbuser, $conf_moodle_dbpass, $conf_moodle_db); } // Citanje komentara iz Moodle Baze $query3 = "SELECT * FROM {$conf_moodle_db}.{$conf_moodle_prefix}" . "forum_discussions WHERE course={$moodle_id} order by timemodified desc LIMIT 0,4"; $rs3 = myquery($query3); ?> <table border="0" cellspacing="2" cellpadding="1"> <tr> <td colspan="2"> <br/><img src="images/16x16/komentar-plavi.png"> <b>Predmet komentari:</b><br/> </td> </tr> <tr> <td> <?php $provjerakomentara = 0; while ($numrows3 = mysql_fetch_array($rs3)) { $brojac = $brojac + 1; $idkom = $numrows3['id']; $kurs = $numrows3['course']; $vrijeme = $numrows3['timemodified']; $naziv = $numrows3['name']; $forum = $numrows3['forum']; $query4 = "SELECT * FROM {$conf_moodle_db}.{$conf_moodle_prefix}" . "forum WHERE id={$forum}"; $rs4 = myquery($query4); $numrows4 = mysql_fetch_array($rs4); $naziv_foruma = $numrows4['name']; //Ako postoji komentar ispisi ga if (!empty($naziv)) { $provjerakomentara++; print '<div style="padding:5px"><img src="images/16x16/komentar.png"/> <a target="_blank" href="' . $conf_moodle_url . 'mod/forum/discuss.php?d=' . $idkom . '">' . $naziv . '</a><br> [' . $naziv_foruma . ']<br></div>'; } } if ($provjerakomentara == 0) { print '<div style="padding:5px"><center>NEMA KOMENTARA!</a></center><br></div>'; } ?> </td> </tr> </table> <?php // Vraćamo Zamger konekciju if (!$conf_moodle_reuse_connection) { dbdisconnect(); dbconnect2($conf_dbhost, $conf_dbuser, $conf_dbpass, $conf_dbdb); } } } } } // Prikaz današnjeg datuma $dani = array("", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota", "Nedjelja"); $mjeseci = array("", "januar", "februar", "mart", "april", "maj", "juni", "juli", "avgust", "septembar", "oktobar", "novembar", "decembar"); print $dani[date("N", time())]; print ", " . date("j", time()) . ". " . $mjeseci[date("n", time())] . " " . date("Y", time()) . "."; ?> </td> <td width="1" bgcolor="#888888"><img src="images/fnord.gif" width="1" height="1"></td> <td width="5" bgcolor="#FFFFFF"><img src="images/fnord.gif" width="5" height="1"></td> <td width="100%" valign="top"> <?php eval($fj); ?> </td></tr> </table> <?php }
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 autotest_tabela($student, $zadaca, $zadatak, $nastavnik) { // Labela za status autotesta $stat_autotest = array("ok" => "OK", "wrong" => "Pogrešan rezultat", "error" => "Ne može se kompajlirati", "no_func" => "Ne postoji funkcija", "exec_fail" => "Ne može se izvršiti", "too_long" => "Predugo izvršavanje", "crash" => "Testni program se krahira", "find_fail" => "Nije pronađen rezultat", "oob" => "Memorijska greška", "uninit" => "Nije inicijalizovano", "memleak" => "Curenje memorije", "invalid_free" => "Loša dealokacija", "mismatched_free" => "Pogrešan dealokator"); $rezultat = ""; $q115 = myquery("SELECT a.id, ar.status, UNIX_TIMESTAMP(ar.vrijeme), a.sakriven FROM autotest AS a, autotest_rezultat AS ar WHERE a.zadaca={$zadaca} AND a.zadatak={$zadatak} AND a.id=ar.autotest AND ar.student={$student}"); if (mysql_num_rows($q115) > 0) { $rezultat = <<<HTML \t\t<table border="1" cellspacing="0" cellpadding="2"> \t\t\t<thead><tr> \t\t\t\t<th>Test</th> \t\t\t\t<th>Rezultat</th> \t\t\t\t<th>Vrijeme testiranja</th> \t\t\t\t<th> </th> \t\t\t</tr></thead> HTML; } $rbr = 1; while ($r115 = mysql_fetch_row($q115)) { $test_id = $r115[0]; $status = $r115[1]; $fino_vrijeme = date("d. m. y. H:i:s", $r115[2]); $sakriven = $r115[3]; if ($status == "ok") { $ikona = "zad_ok"; } else { $ikona = "brisanje"; } if ($sakriven == 1) { if (!$nastavnik) { continue; } $boja = "style=\"color: #777\""; } else { $boja = ""; } $uri = genuri(); $rezultat .= <<<HTML \t\t<tr> \t\t\t<td {$boja}>{$rbr}</td> \t\t\t<td {$boja}><img src="images/16x16/{$ikona}.png" width="8" height="8"> {$stat_autotest[$status]}</td> \t\t\t<td {$boja}>{$fino_vrijeme}</td> \t\t\t<td> \t\t\t\t<a href="{$uri}&test={$r115['0']}&akcija=test_detalji">Detalji</a> \t\t\t</td> \t\t</tr> HTML; $rbr++; } if (mysql_num_rows($q115) > 0) { $rezultat .= <<<HTML \t\t</table> \t\t</td> \t</tr> HTML; } return $rezultat; }
function db_grid($table) { global $_lv_; global $__lv_cn, $__lv_ct, $__lv_cs, $__lv_showcreate; // Update database with submitted data db_submit(); // Parse table columns from "show create" query __lv_parsetable($table); // Generate form header with hidden fields - this will be used for each row $form_header = genform("POST"); $form_header .= '<input type="hidden" name="_lv_table" value="' . $table . '"> <input type="hidden" name="_lv_action" value="edit">' . "\n"; // List tables - used to find foreign keys $q200 = myquery("show tables"); while ($r200 = mysql_fetch_row($q200)) { $tables[] = $r200[0]; } // Query database to get default form values $sql = "select * from {$table}"; $n = 0; for ($i = 0; $i < count($__lv_cn); $i++) { $name = $__lv_cn[$i]; // Get WHERE from $_lv_ if (strlen($_lv_["where:{$name}"]) > 0) { if ($n > 0) { $sql .= " and "; } else { $sql .= " where "; } $sql .= "{$name}='" . my_escape($_lv_["where:{$name}"]) . "'"; $n++; } // We are not interested in _lv_where... } // Get ORDER BY from $_lv_ foreach ($_lv_ as $key => $value) { if ($key == "orderby") { $sql .= " order by " . $value; break; } } // Get LIMIT from $_lv_ foreach ($_lv_ as $key => $value) { if ($key == "limit") { $sql .= " limit " . $value; break; } } // Display table header $result .= '<table border="0" cellspacing="0" cellpadding="3">' . "\n"; $result .= '<tr bgcolor="#bbbbbb">' . "\n"; for ($i = 0; $i < count($__lv_cn); $i++) { $name = $__lv_cn[$i]; $type = $__lv_ct[$i]; $label = strtoupper(substr($name, 0, 1)) . strtolower(substr($name, 1)); $label = str_replace("_", " ", $label); if ($_lv_["label:{$name}"]) { $label = $_lv_["label:{$name}"]; } // ID and fields given in WHERE are always hidden if ($name != "id" && !$_lv_["where:{$name}"]) { $result .= "<th>{$label}</th>\n"; } } $result .= "<th> </th>\n"; // Extra column for submit button $result .= "</tr>\n"; // Table contents $q202 = myquery($sql); $color = 0; while ($r202 = mysql_fetch_assoc($q202)) { $result .= "{$form_header}\n"; if ($color == 0) { $result .= "<tr>\n"; $color = 1; } else { $result .= '<tr bgcolor="#efefef">' . "\n"; $color = 0; } // Display form for ($i = 0; $i < count($__lv_cn); $i++) { $name = $__lv_cn[$i]; $type = $__lv_ct[$i]; $size = $__lv_cs[$i]; if ($size > 15) { $size = 15; } // not practical to have size>15 // ID and fields given in WHERE are always hidden if ($name == "id") { // FIXME: Value of 0 suggests that this is an autonumber field if (intval($r202[$name]) != 0) { $result .= '<input type="hidden" name="_lv_where_id" value="' . $r202[$name] . '">' . "\n"; // We need to resubmit data for add $result .= '<input type="hidden" name="_lv_column_id" value="' . $r202[$name] . '">' . "\n"; } } else { if ($_lv_["where:{$name}"]) { $result .= '<input type="hidden" name="_lv_where_' . $name . '" value="' . $_lv_["where:{$name}"] . '">' . "\n"; // We need to resubmit data for add $result .= '<input type="hidden" name="_lv_column_' . $name . '" value="' . $_lv_["where:{$name}"] . '">' . "\n"; // find foreign keys } else { if (in_array($name, $tables)) { $result .= "<td>" . db_dropdown($name, $r202[$name]) . "</td>\n"; // db_dropdown will destroy __lv_c* ... __lv_parsetable($table); // Various column types } else { if ($type == "varchar") { $result .= '<td><input type="text" name="_lv_column_' . $name . '" size="' . $size . '" value="' . $r202[$name] . '"></td>' . "\n"; } else { if ($type == "text") { $result .= '<td><textarea name="_lv_column_' . $name . '" rows="5" cols="20">' . $r202[$name] . '</textarea></td>' . "\n"; } else { if ($type == "date") { // Parse date if ($r202[$name]) { $mytime = mysql2time($r202[$name]); } else { $mytime = time(); // Set time to now } $d = date('d', $mytime); $m = date('m', $mytime); $Y = date('Y', $mytime); $result .= '<td>' . datectrl($d, $m, $Y, "_lv_column_{$name}" . "_") . "</td>\n"; } else { if ($type == "datetime") { // Parse date if ($r202[$name]) { $mytime = mysql2time($r202[$name]); } else { $mytime = time(); // Set time to now } $d = date('d', $mytime); $m = date('m', $mytime); $Y = date('Y', $mytime); $h = date('H', $mytime); $mi = date('i', $mytime); $se = date('s', $mytime); $result .= '<td>' . datectrl($d, $m, $Y, "_lv_column_{$name}" . "_") . "\n"; $result .= '<input type="text" size="2" name="_lv_column_' . $name . '_hour" value="' . $h . '">:'; $result .= '<input type="text" size="2" name="_lv_column_' . $name . '_minute" value="' . $mi . '">:'; $result .= '<input type="text" size="2" name="_lv_column_' . $name . '_second" value="' . $se . '"></td>' . "\n"; } else { if ($type == "tinyint" && $size == "1") { // assume boolean $result .= '<td><input type="checkbox" name="_lv_column_' . $name . '"'; if ($r202[$name] == "1") { $result .= ' CHECKED'; } $result .= '></td>' . "\n"; } else { if ($type == "int" || $type == "tinyint" || $type == "smallint" || $type == "bigint" || $type == "float" || $type == "double") { // classic numeric $result .= '<td><input type="text" name="_lv_column_' . $name . '" size="' . $size . '" value="' . $r202[$name] . '"></td>' . "\n"; } else { $result .= "<td>Unknown type: '{$type}'</td>\n"; } } } } } } } } } } // Row ends $result .= '<td>'; if ($_lv_["enableedit"]) { $result .= '<a href="' . genuri() . '&_lv_nav_id=' . $r202["id"] . '">Izmijeni</a> '; } $result .= '<input type="submit" value=" Pošalji "><input type="submit" name="_lv_action_delete" value=" Obriši "></td>' . "\n"; $result .= "</tr></form>"; } $result .= "</table>\n"; return $result; }
function admin_log() { global $userid; global $_lv_; // We use form generators $maxlogins = 20; $stardate = intval($_GET['stardate']); if ($stardate == 0) { $q199 = myquery("select id from log order by id desc limit 1"); $stardate = mysql_result($q199, 0, 0) + 1; } $nivo = intval($_GET['nivo']); if ($nivo < 1) { $nivo = 2; } if ($nivo > 4) { $nivo = 4; } $analyze = intval($_REQUEST['analyze']); // Pretraga / filtriranje $pretraga = $_REQUEST['pretraga']; if ($pretraga) { $src = preg_replace("/\\s+/", " ", $pretraga); $src = trim($src); $dijelovi = explode(" ", $src); $query = ""; $filterupita = ""; // Probavamo traziti ime i prezime istovremeno if (count($dijelovi) == 2) { $q100 = myquery("select id from osoba where ime like '%{$dijelovi['0']}%' and prezime like '%{$dijelovi['1']}%'"); if (mysql_num_rows($q100) == 0) { $q100 = myquery("select id from osoba where ime like '%{$dijelovi['1']}%' and prezime like '%{$dijelovi['0']}%'"); } $rezultata = mysql_num_rows($q100); } // Nismo nasli ime i prezime, pokusavamo bilo koji dio if ($rezultata == 0) { foreach ($dijelovi as $dio) { if ($query != "") { $query .= "or "; } $query .= "ime like '%{$dio}%' or prezime like '%{$dio}%' or brindexa like '%{$dio}%' "; if (intval($dio) > 0) { $query .= "or id=" . intval($dio) . " "; } } $q100 = myquery("select id from osoba where ({$query})"); $rezultata = mysql_num_rows($q100); } // Nismo nasli nista, pokusavamo login if ($rezultata == 0) { $query = ""; foreach ($dijelovi as $dio) { if ($query != "") { $query .= "or "; } $query .= "a.login like '%{$dio}%' "; } $q100 = myquery("select o.id from osoba as o, auth as a where ({$query}) and a.id=o.id"); $rezultata = mysql_num_rows($q100); } if ($rezultata > 0) { while ($r100 = mysql_fetch_row($q100)) { if ($filterupita != "") { $filterupita .= " OR "; } $filterupita .= "userid={$r100['0']} OR dogadjaj like '%u{$r100['0']}%'"; if ($rezultata == 1) { $nasaokorisnika = $r100[0]; } // najčešće nađemo tačno jednog... } } // Probavamo predmete if ($rezultata == 0) { $q101 = myquery("select id from predmet where naziv like '%{$src}%' or kratki_naziv='{$src}'"); if (mysql_num_rows($q101) > 0) { $pp = mysql_result($q101, 0, 0); if ($filterupita != "") { $filterupita .= " OR "; } $filterupita .= "dogadjaj like '%pp{$pp}%'"; $q102 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet={$pp} and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r102 = mysql_fetch_row($q102)) { $filterupita .= " OR dogadjaj like '%p{$r102['0']}%'"; } } } // Kraj, dodajemo and if ($filterupita != "") { $filterupita = " AND ({$filterupita})"; } } else { if ($analyze) { $q105 = myquery("select UNIX_TIMESTAMP(vrijeme), userid FROM log2 WHERE id={$analyze}"); $vrijeme = mysql_result($q105, 0, 0); $nasaokorisnika = mysql_result($q105, 0, 1); $filterupita = " AND userid={$nasaokorisnika}"; $q106 = myquery("select id from log where vrijeme=FROM_UNIXTIME({$vrijeme}) limit 1"); $stardate = mysql_result($q106, 0, 0) + 100; if ($nasaokorisnika > 0) { $q107 = myquery("SELECT ime, prezime FROM osoba WHERE id={$nasaokorisnika}"); $pretraga = mysql_result($q107, 0, 0) . " " . mysql_result($q107, 0, 1); } else { $pretraga = ""; } $nivo = 1; } } // Izbor nivoa logiranja (JavaScript) ?> <h3>Pregled logova</h3> <p>Izaberite logging nivo:<br/> <?php echo genform("GET"); ?> <table width="100%"><tr> <td><input type="radio" name="nivo" value="1" onchange="document.forms[0].submit()" <?php if ($nivo == 1) { print "CHECKED"; } ?> ><img src="images/16x16/log_info.png" width="16" height="16" align="center"> Posjete stranicama</td> <td><input type="radio" name="nivo" value="2" onchange="document.forms[0].submit()" <?php if ($nivo == 2) { print "CHECKED"; } ?> ><img src="images/16x16/log_edit.png" width="16" height="16" align="center"> Izmjene</td> <td><input type="radio" name="nivo" value="3" onchange="document.forms[0].submit()" <?php if ($nivo == 3) { print "CHECKED"; } ?> ><img src="images/16x16/log_error.png" width="16" height="16" align="center"> Greške</td> <td><input type="radio" name="nivo" value="4" onchange="document.forms[0].submit()" <?php if ($nivo == 4) { print "CHECKED"; } ?> ><img src="images/16x16/log_audit.png" width="16" height="16" align="center"> Kritične izmjene</td> </tr></table> </form> <br/><br/> <center> <form action="index.php" method="GET"> <input type="hidden" name="sta" value="admin/log"> <input type="hidden" name="nivo" value="<?php echo $nivo; ?> "> <input type="text" name="pretraga" size="40" value="<?php echo $pretraga; ?> "> <input type="submit" value=" Traži "> </form> </center> <?php // Skripta daj_stablo se sada nalazi u js/stablo.js, a ukljucena je u index.php // Funkcije koje cachiraju imena korisnika i predmeta function get_user_link($id) { static $users = array(); if (!$users[$id]) { $q20 = myquery("select ime, prezime from osoba where id={$id}"); if (mysql_num_rows($q20) > 0) { $link = "?sta=studentska/osobe&akcija=edit&osoba={$id}"; $users[$id] = "<a href=\"{$link}\" target=\"_new\">" . mysql_result($q20, 0, 0) . " " . mysql_result($q20, 0, 1) . "</a>"; } else { return $id; } } return $users[$id]; } function get_predmet_link($id) { static $aktuelna_ag = 0; // Aktuelna akademska godina if ($aktuelna_ag == 0) { $q35 = myquery("select id from akademska_godina where aktuelna=1 order by id desc"); $aktuelna_ag = mysql_result($q35, 0, 0); } static $predmeti = array(); if (!$predmeti[$id]) { $q30 = myquery("select p.id, p.naziv from ponudakursa as pk, predmet as p where pk.id={$id} and pk.predmet=p.id"); if (mysql_num_rows($q30) > 0) { $predmeti[$id] = "<a href=\"?sta=studentska/predmeti&akcija=edit&predmet=" . mysql_result($q30, 0, 0) . "&ag={$aktuelna_ag}\" target=\"_new\">" . mysql_result($q30, 0, 1) . "</a>"; } else { return $id; } } return $predmeti[$id]; } function get_ppredmet_link($id) { static $aktuelna_ag = 0; // Aktuelna akademska godina if ($aktuelna_ag == 0) { $q35 = myquery("select id from akademska_godina where aktuelna=1 order by id desc"); $aktuelna_ag = mysql_result($q35, 0, 0); } static $predmeti = array(); if (!$predmeti[$id]) { $q40 = myquery("select naziv from predmet where id={$id}"); if (mysql_num_rows($q40) > 0) { $predmeti[$id] = "<a href=\"?sta=studentska/predmeti&akcija=edit&predmet={$id}&ag={$aktuelna_ag}\" target=\"_new\">" . mysql_result($q40, 0, 0) . "</a>"; } else { return $id; } } return $predmeti[$id]; } // Glavni upit i petlja $q10 = myquery("select id, UNIX_TIMESTAMP(vrijeme), userid, dogadjaj, nivo from log where id<{$stardate} and ((nivo>={$nivo} {$filterupita}) or dogadjaj='login') order by id desc"); //$q10 = myquery ("select id, UNIX_TIMESTAMP(vrijeme), userid, dogadjaj, nivo from log where id<$stardate and (nivo>=$nivo $filterupita) order by id desc"); $lastlogin = array(); $eventshtml = array(); $logins = 0; $prvidatum = $zadnjidatum = 0; $stardate = 1; while ($r10 = mysql_fetch_row($q10)) { if ($prvidatum == 0) { $prvidatum = $r10[1]; } $zadnjidatum = $r10[1]; $nicedate = " (" . date("d.m.Y. H:i:s", $r10[1]) . ")"; $usr = $r10[2]; // ID korisnika $evt = $r10[3]; // string koji opisuje dogadjaj if ($rezultata == 1 && preg_match("/u{$nasaokorisnika}\\d/", $evt)) { continue; } // kada je ID korisnika kratak, moze se desiti da se javlja unutar eventa if (strlen($evt) > 100) { $evt = substr($evt, 0, 100); } // ne prikazuj login ako je to jedina stavka, ako je nivo veci od 1 ili ako nema pretrage if ($lastlogin[$usr] == 0 && ($nivo == 1 && $pretraga == "" || $evt != "login")) { $lastlogin[$usr] = $r10[0]; $logins++; if ($logins > $maxlogins) { $stardate = $r10[0] + 1; break; // izlaz iz while } } if ($r10[4] == 1) { $nivoimg = "log_info"; } else { if ($r10[4] == 2) { $nivoimg = "log_edit"; } else { if ($r10[4] == 3) { $nivoimg = "log_error"; } else { if ($r10[4] == 4) { $nivoimg = "log_audit"; } } } } // Prepoznavanje određenih elemenata eventa - TAGOVA // Legenda: // uID - korisnik // ppID - predmet // pID - ponudakursa // gID - labgrupa // cID - čas // zID - zadaća // iID - ispit // agID - akademska godina // sID - studij while (preg_match("/\\Wu(\\d+)/", $evt, $m)) { // korisnik $evt = str_replace("u{$m['1']}", get_user_link($m[1]), $evt); $zadnjikorisnik = $m[1]; // Ovo ce omoguciti neke dodatne upite kasnije } while (preg_match("/\\Wpp(\\d+)/", $evt, $m)) { // predmet $evt = str_replace("pp{$m['1']}", get_ppredmet_link($m[1]), $evt); } while (preg_match("/\\Wp(\\d+)/", $evt, $m)) { // ponudakursa $evt = str_replace("p{$m['1']}", get_predmet_link($m[1]), $evt); } while (preg_match("/\\Wg(\\d+)/", $evt, $m)) { // labgrupa $q39 = myquery("select naziv from labgrupa where id={$m['1']}"); if (mysql_num_rows($q39) > 0) { $evt = str_replace("g{$m['1']}", "<a href=\"?sta=saradnik/grupa&id={$m['1']}\" target=\"_blank\">" . mysql_result($q39, 0, 0) . "</a>", $evt); } else { $evt = str_replace("g{$m['1']}", "{$m['1']}", $evt); } } while (preg_match("/\\Wc(\\d+)/", $evt, $m)) { // cas $q40 = myquery("select labgrupa from cas where id={$m['1']}"); if (mysql_num_rows($q40) > 0) { $link = "?sta=saradnik/grupa&id=" . mysql_result($q40, 0, 0); $evt = str_replace("c{$m['1']}", "<a href=\"{$link}\" target=\"_blank\">{$m['1']}</a>", $evt); } else { $evt = str_replace("c{$m['1']}", "{$m['1']}", $evt); } } if (preg_match("/\\Wz(\\d+)/", $evt, $m)) { // zadaca $q50 = myquery("select naziv,predmet,akademska_godina from zadaca where id={$m['1']}"); if (mysql_num_rows($q50) > 0) { $naziv = mysql_result($q50, 0, 0); if (!preg_match("/\\w/", $naziv)) { $naziv = "[Bez imena]"; } $predmet = mysql_result($q50, 0, 1); $ag = mysql_result($q50, 0, 2); if (intval($usr) > 0) { $q55 = myquery("select l.id from student_labgrupa as sl, labgrupa as l where sl.student={$usr} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}"); if (mysql_num_rows($q55) < 1 && $zadnjikorisnik > 0) { $q55 = myquery("select l.id from student_labgrupa as sl, labgrupa as l where sl.student={$zadnjikorisnik} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}"); } if (mysql_num_rows($q55) < 1) { $q55 = myquery("select id from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=1"); } $link = "?sta=saradnik/grupa&id=" . mysql_result($q55, 0, 0); $evt = str_replace("z{$m['1']}", "<a href=\"{$link}\" target=\"_blank\">{$naziv}</a>", $evt); } } } while (preg_match("/\\Wi(\\d+)/", $evt, $m)) { // ispit $q60 = myquery("select k.gui_naziv, i.predmet, p.naziv, i.akademska_godina from ispit as i, komponenta as k, predmet as p where i.id={$m['1']} and i.komponenta=k.id and i.predmet=p.id"); if (mysql_num_rows($q60) > 0) { $naziv = mysql_result($q60, 0, 0); if (!preg_match("/\\w/", $naziv)) { $naziv = "[Bez imena]"; } $predmet = mysql_result($q60, 0, 1); $predmetnaziv = mysql_result($q60, 0, 2); $ag = mysql_result($q60, 0, 3); $evt = str_replace("i{$m['1']}", "<a href=\"?sta=nastavnik/ispiti&predmet={$predmet}&ag={$ag}\" target=\"_blank\">{$naziv} ({$predmetnaziv})</a>", $evt); } else { $evt = str_replace("i{$m['1']}", "{$m['1']}", $evt); } } while (preg_match("/\\Wag(\\d+)/", $evt, $m)) { // akademska godina $q70 = myquery("select naziv from akademska_godina where id={$m['1']}"); if (mysql_num_rows($q70) > 0) { $naziv = mysql_result($q70, 0, 0); $evt = str_replace("ag{$m['1']}", "{$naziv}", $evt); } else { $evt = str_replace("ag{$m['1']}", "{$m['1']}", $evt); } } while (preg_match("/\\Ws(\\d+)/", $evt, $m)) { // studij $q80 = myquery("select naziv from studij where id={$m['1']}"); if (mysql_num_rows($q80) > 0) { $naziv = mysql_result($q80, 0, 0); $evt = str_replace("s{$m['1']}", "{$naziv}", $evt); } else { $evt = str_replace("s{$m['1']}", "{$m['1']}", $evt); } } // Pošto idemo unazad, login predstavlja kraj zapisa za korisnika if ($evt == "login") { if ($lastlogin[$usr] && $lastlogin[$usr] != 0) { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> login (ID: {$usr}) {$nicedate}\n" . $eventshtml[$lastlogin[$usr]]; $lastlogin[$usr] = 0; } } else { if (strstr($evt, " su=")) { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> SU to ID: {$usr} {$nicedate}\n" . $eventshtml[$lastlogin[$usr]]; $lastlogin[$usr] = 0; } else { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> " . $evt . $nicedate . "\n" . $eventshtml[$lastlogin[$usr]]; } } } if ($stardate == 1) { $zadnjidatum = 1; } // Nije doslo do breaka... // Insertujem masovni unos ocjena i rezultata ispita if ($rezultata == 1) { // Konacne ocjene $q300 = myquery("select predmet, ocjena, UNIX_TIMESTAMP(datum) from konacna_ocjena where student={$nasaokorisnika} AND datum>=FROM_UNIXTIME({$zadnjidatum}) AND datum<=FROM_UNIXTIME({$prvidatum})"); while ($r300 = mysql_fetch_row($q300)) { $predmet = $r300[0]; $ocjena = $r300[1]; $datum = $r300[2]; $nicedate = " (" . date("d.m.Y. H:i:s", $datum) . ")"; // Prvo cemo varijantu sa predmetom pa sa ponudom kursa $q310 = myquery("select id from log where dogadjaj='masovno upisane ocjene na predmet pp{$predmet}' and vrijeme=FROM_UNIXTIME({$datum})"); if (mysql_num_rows($q310) > 0) { $eventshtml[mysql_result($q310, 0, 0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovno upisane ocjene na predmet " . get_ppredmet_link($predmet) . " (" . get_user_link($nasaokorisnika) . " dobio: {$ocjena})" . $nicedate . "\n"; } $q320 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet={$predmet} and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r320 = mysql_fetch_row($q320)) { $q310 = myquery("select id from log where dogadjaj='masovno upisane ocjene na predmet p{$r320['0']}' and vrijeme=FROM_UNIXTIME({$datum})"); if (mysql_num_rows($q310) > 0) { $eventshtml[mysql_result($q310, 0, 0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovno upisane ocjene na predmet " . get_ppredmet_link($predmet) . " (" . get_user_link($nasaokorisnika) . " dobio: {$ocjena})" . $nicedate . "\n"; } } } // Isto ovo za ispite $q330 = myquery("select i.predmet, io.ocjena, UNIX_TIMESTAMP(i.vrijemeobjave) from ispit as i, ispitocjene as io where io.student={$nasaokorisnika} AND io.ispit=i.id AND i.datum>=FROM_UNIXTIME({$zadnjidatum}) AND i.datum<=FROM_UNIXTIME({$prvidatum})"); while ($r330 = mysql_fetch_row($q330)) { $predmet = $r330[0]; $ocjena = $r330[1]; $datum = $r330[2]; // Datum je zaokruzen :( // Prvo cemo varijantu sa predmetom pa sa ponudom kursa $q340 = myquery("select id, vrijeme from log where dogadjaj='masovni rezultati ispita za predmet pp{$predmet}' and vrijeme=FROM_UNIXTIME({$datum})"); if (mysql_num_rows($q340) > 0) { $nicedate = " (" . date("d.m.Y. H:i:s", mysql_result($q340, 0, 1)) . ")"; $eventshtml[mysql_result($q340, 0, 0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovni rezultati ispita za predmet " . get_ppredmet_link($predmet) . " (" . get_user_link($nasaokorisnika) . " dobio: {$ocjena})" . $nicedate . "\n"; } $q320 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet={$predmet} and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r320 = mysql_fetch_row($q320)) { $q340 = myquery("select id, vrijeme from log where dogadjaj='masovni rezultati ispita za predmet p{$r320['0']}' and vrijeme=FROM_UNIXTIME({$datum})"); if (mysql_num_rows($q340) > 0) { $nicedate = " (" . date("d.m.Y. H:i:s", mysql_result($q340, 0, 1)) . ")"; $eventshtml[mysql_result($q340, 0, 0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovni rezultati ispita za predmet " . get_ppredmet_link($predmet) . " (" . get_user_link($nasaokorisnika) . " dobio: {$ocjena})" . $nicedate . "\n"; } } } krsort($eventshtml); } // Dodajemo zaglavlja sa [+] poljem (prebaciti iznad) foreach ($eventshtml as $logid => $event) { if (substr($event, 0, 4) != "<img") { // Login počinje sa <br/> // TODO: optimizovati upite! $q201 = myquery("select userid, UNIX_TIMESTAMP(vrijeme) from log where id={$logid}"); $userid = intval(mysql_result($q201, 0, 0)); $nicedate = " (" . date("d.m.Y. H:i:s", mysql_result($q201, 0, 1)) . ")"; if ($userid == 0) { $imeprezime = "ANONIMNI PRISTUPI"; $usrimg = "zad_bug"; } else { $q202 = myquery("select ime, prezime from osoba where id={$userid}"); $imeprezime = mysql_result($q202, 0, 0) . " " . mysql_result($q202, 0, 1); $q203 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='nastavnik'"); $q204 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='studentska'"); $q205 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='siteadmin'"); if (mysql_result($q205, 0, 0) > 0) { $usrimg = "admin"; } else { if (mysql_result($q204, 0, 0) > 0) { $usrimg = "teta"; } else { if (mysql_result($q203, 0, 0) > 0) { $usrimg = "tutor"; } else { $usrimg = "user"; } } } } $link = "?sta=studentska/osobe&akcija=edit&osoba={$userid}"; print "<img src=\"images/plus.png\" width=\"13\" height=\"13\" id=\"img-{$logid}\" onclick=\"daj_stablo('{$logid}')\">\n<img src=\"images/16x16/{$usrimg}.png\" width=\"16\" height=\"16\" align=\"center\">\n<a href=\"{$link}\">{$imeprezime}</a> {$nicedate}\n<div id=\"{$logid}\" style=\"display:none\">\n"; } print "{$event}</div><br/>\n"; } print "<p> </p><p><a href=\"" . genuri() . "&stardate={$stardate}\">Sljedećih {$maxlogins}</a></p>"; }
function studentska_osobe() { global $userid, $user_siteadmin, $user_studentska; global $conf_system_auth, $conf_ldap_server, $conf_ldap_domain, $conf_files_path; global $registry; // šta je od modula aktivno global $_lv_; // Potrebno za genform() iz libvedran require "lib/manip.php"; // Radi upisa studenta na predmet // Provjera privilegija if (!$user_siteadmin && !$user_studentska) { // 2 = studentska, 3 = admin zamgerlog("korisnik nije studentska (admin {$admin})", 3); zamgerlog2("nije studentska"); biguglyerror("Pristup nije dozvoljen."); return; } ?> <center> <table border="0"><tr><td> <?php $akcija = $_REQUEST['akcija']; $osoba = intval($_REQUEST['osoba']); // Dodavanje novog korisnika u bazu if ($_POST['akcija'] == "novi" && check_csrf_token()) { $ime = substr(my_escape($_POST['ime']), 0, 100); if (!preg_match("/\\w/", $ime)) { niceerror("Ime nije ispravno"); return; } $prezime = substr(my_escape($_POST['prezime']), 0, 100); // Probamo tretirati ime kao LDAP UID if ($conf_system_auth == "ldap") { $uid = $ime; $ds = ldap_connect($conf_ldap_server); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); if ($ds && ldap_bind($ds)) { $sr = ldap_search($ds, "", "uid={$uid}", array("givenname", "sn")); $results = ldap_get_entries($ds, $sr); if ($results['count'] > 0) { $gn = $results[0]['givenname']; if (is_array($gn)) { $gn = $results[0]['givenname'][0]; } if ($gn) { $ime = $gn; } $sn = $results[0]['sn']; if (is_array($sn)) { $sn = $results[0]['sn'][0]; } if ($sn) { $prezime = $sn; } } else { zamgerlog("korisnik '{$uid}' nije pronadjen na LDAPu", 3); zamgerlog2("korisnik nije pronadjen na LDAPu", 0, 0, 0, $uid); $uid = ""; niceerror("Korisnik nije pronadjen na LDAPu... dodajem novog!"); } } else { zamgerlog("ne mogu kontaktirati LDAP server", 3); zamgerlog2("ne mogu kontaktirati LDAP server"); niceerror("Ne mogu kontaktirati LDAP server... pravim se da ga nema :("); } } if (!preg_match("/\\w/", $prezime)) { niceerror("Prezime nije ispravno"); return; } // Da li ovaj korisnik već postoji u osoba tabeli? $q10 = myquery("select id, ime, prezime from osoba where ime like '{$ime}' and prezime like '{$prezime}'"); if ($r10 = mysql_fetch_row($q10)) { zamgerlog("korisnik vec postoji u bazi ('{$ime}' '{$prezime}' - ID: {$r10['0']})", 3); zamgerlog2("korisnik vec postoji u bazi", $r10[0], 0, 0, "'{$ime}' '{$prezime}'"); niceerror("Korisnik već postoji u bazi:"); print "<br><a href=\"?sta=studentska/osobe&akcija=edit&osoba={$r10['0']}\">{$r10['1']} {$r10['2']}</a>"; return; } else { // Nije u tabeli, dodajemo ga... $q30 = myquery("select id from osoba order by id desc limit 1"); $osoba = mysql_result($q30, 0, 0) + 1; $q40 = myquery("insert into osoba set id={$osoba}, ime='{$ime}', prezime='{$prezime}', naucni_stepen=6, strucni_stepen=5"); // 6 = bez naučnog stepena, 5 = srednja stručna sprema if ($conf_system_auth == "ldap" && $uid != "") { // Ako je LDAP onda imamo email adresu $email = $uid . $conf_ldap_domain; $q33 = myquery("INSERT INTO email SET osoba={$osoba}, adresa='{$email}', sistemska=1"); // Adresu podešavamo kao sistemsku što znači da je korisnik ne može mijenjati niti brisati // Mozemo ga dodati i u auth tabelu $q35 = myquery("select count(*) from auth where id={$osoba}"); if (mysql_result($q35, 0, 0) == 0) { $q37 = myquery("insert into auth set id={$osoba}, login='******', admin=1, aktivan=1"); } } nicemessage("Novi korisnik je dodan."); zamgerlog("dodan novi korisnik u{$osoba} (ID: {$osoba})", 4); // nivo 4: audit zamgerlog2("dodan novi korisnik", $osoba); print "<br><a href=\"?sta=studentska/osobe&akcija=edit&osoba={$osoba}\">{$ime} {$prezime}</a>"; return; } } // Izmjena licnih podataka osobe if ($akcija == "podaci") { if ($_POST['subakcija'] == "potvrda" && check_csrf_token()) { $ime = my_escape($_REQUEST['ime']); $prezime = my_escape($_REQUEST['prezime']); $spol = $_REQUEST['spol']; if ($spol != "M" && $spol != "Z") { $spol = ""; } $jmbg = my_escape($_REQUEST['jmbg']); $nacionalnost = intval($_REQUEST['nacionalnost']); if ($nacionalnost == 0) { $nacionalnost = "NULL"; } $brindexa = my_escape($_REQUEST['brindexa']); $djevojacko_prezime = my_escape($_REQUEST['djevojacko_prezime']); $imeoca = my_escape($_REQUEST['imeoca']); $prezimeoca = my_escape($_REQUEST['prezimeoca']); $imemajke = my_escape($_REQUEST['imemajke']); $prezimemajke = my_escape($_REQUEST['prezimemajke']); $mjesto_rodjenja = my_escape($_REQUEST['mjesto_rodjenja']); $opcina_rodjenja = intval($_REQUEST['opcina_rodjenja']); $drzava_rodjenja = intval($_REQUEST['drzava_rodjenja']); $drzavljanstvo = intval($_REQUEST['drzavljanstvo']); if ($drzavljanstvo == 0) { $drzavljanstvo = "NULL"; } if ($_REQUEST['boracke_kategorije'] == "on") { $boracke_kategorije = 1; } else { $boracke_kategorije = 0; } $adresa = my_escape($_REQUEST['adresa']); $adresa_mjesto = my_escape($_REQUEST['adresa_mjesto']); $kanton = intval($_REQUEST['_lv_column_kanton']); if ($kanton == -1) { $kanton = "NULL"; } $telefon = my_escape($_REQUEST['telefon']); $email = my_escape($_REQUEST['email']); $strucni_stepen = intval($_REQUEST['_lv_column_strucni_stepen']); if ($strucni_stepen == -1) { $strucni_stepen = "NULL"; } $naucni_stepen = intval($_REQUEST['_lv_column_naucni_stepen']); if ($naucni_stepen == -1) { $naucni_stepen = "NULL"; } $maternji_jezik = intval($_REQUEST['_lv_column_maternji_jezik']); $vozacka_dozvola = intval($_REQUEST['_lv_column_vozacki_kategorija']); $nacin_stanovanja = intval($_REQUEST['_lv_column_nacin_stanovanja']); // Sredjujem datum if (preg_match("/(\\d+).*?(\\d+).*?(\\d+)/", $_REQUEST['datum_rodjenja'], $matches)) { $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; } } } // Mjesto rođenja $mjrid = "NULL"; if ($mjesto_rodjenja != "") { $q1 = myquery("select id from mjesto where naziv='{$mjesto_rodjenja}' and opcina={$opcina_rodjenja} and drzava={$drzava_rodjenja}"); if (mysql_num_rows($q1) < 1) { $q2 = myquery("select id from mjesto where naziv='{$mjesto_rodjenja}'"); if (mysql_num_rows($q2) < 1) { nicemessage("Dodajem novo mjesto '{$mjesto_rodjenja}'"); $q2 = myquery("insert into mjesto set naziv='{$mjesto_rodjenja}', opcina={$opcina_rodjenja}, drzava={$drzava_rodjenja}"); $q1 = myquery("select id from mjesto where naziv='{$mjesto_rodjenja}'"); } else { nicemessage("Promjena općine/države za mjesto '{$mjesto_rodjenja}'"); $q2 = myquery("insert into mjesto set naziv='{$mjesto_rodjenja}', opcina={$opcina_rodjenja}, drzava={$drzava_rodjenja}"); $q1 = myquery("select id from mjesto where naziv='{$mjesto_rodjenja}' and opcina={$opcina_rodjenja} and drzava={$drzava_rodjenja}"); } } $mjrid = mysql_result($q1, 0, 0); } // Mjesto adresa $admid = "NULL"; if ($adresa_mjesto != "") { $q3 = myquery("select id from mjesto where naziv='{$adresa_mjesto}'"); if (mysql_num_rows($q3) < 1) { $q4 = myquery("insert into mjesto set naziv='{$adresa_mjesto}'"); $q3 = myquery("select id from mjesto where naziv='{$adresa_mjesto}'"); } $admid = mysql_result($q3, 0, 0); } $q395 = myquery("update osoba set ime='{$ime}', prezime='{$prezime}', imeoca='{$imeoca}', prezimeoca='{$prezimeoca}', imemajke='{$imemajke}', prezimemajke='{$prezimemajke}', spol='{$spol}', brindexa='{$brindexa}', datum_rodjenja='{$godina}-{$mjesec}-{$dan}', mjesto_rodjenja={$mjrid}, nacionalnost={$nacionalnost}, drzavljanstvo={$drzavljanstvo}, jmbg='{$jmbg}', adresa='{$adresa}', adresa_mjesto={$admid}, telefon='{$telefon}', kanton='{$kanton}', strucni_stepen={$strucni_stepen}, naucni_stepen={$naucni_stepen}, djevojacko_prezime='{$djevojacko_prezime}', maternji_jezik={$maternji_jezik}, vozacka_dozvola={$vozacka_dozvola}, nacin_stanovanja={$nacin_stanovanja}, boracke_kategorije={$boracke_kategorije} where id={$osoba}"); zamgerlog("promijenjeni licni podaci korisnika u{$osoba}", 4); // nivo 4 - audit zamgerlog2("promijenjeni licni podaci korisnika", $osoba); ?> <script language="JavaScript"> location.href='?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=edit'; </script> <?php return; } // Postavljanje ili promjena slike if ($_POST['subakcija'] == "postavisliku" && check_csrf_token()) { $slika = $_FILES['slika']['tmp_name']; if ($slika && file_exists($slika)) { // Provjeravamo ispravnost slike $podaci = getimagesize($slika); $koef = $podaci[0] / $podaci[1]; if ($koef < 0.5 || $koef > 2) { niceerror("Omjer širine i visine slike nije povoljan."); print "<p>Slika bi trebala biti uobičajenog formata slike za lične dokumente. Ova je formata {$podaci['0']}x{$podaci['1']}.</p>\n"; return; } if ($podaci[2] != IMAGETYPE_GIF && $podaci[2] != IMAGETYPE_JPEG && $podaci[2] != IMAGETYPE_PNG && $podaci[2] != IMAGETYPE_TIFF_II) { niceerror("Nepoznat tip slike."); print "<p>Podržane su samo slike tipa GIF, JPEG ili PNG.</p>"; return; } // Brisemo evt. postojecu sliku $q498 = myquery("select slika from osoba where id={$osoba}"); if (mysql_result($q498, 0, 0) != "") { unlink("{$conf_files_path}/slike/" . mysql_result($q498, 0, 0)); } // Kopiramo novu sliku $novavisina = 150; $novasirina = $novavisina * $koef; $filename = "{$conf_files_path}/slike/{$osoba}"; if (!file_exists("{$conf_files_path}/slike")) { mkdir("{$conf_files_path}/slike", 0777, true); } $dest = imagecreatetruecolor($novasirina, $novavisina); switch ($podaci[2]) { case IMAGETYPE_GIF: $source = imagecreatefromgif($slika); imagecopyresampled($dest, $source, 0, 0, 0, 0, $novasirina, $novavisina, $podaci[0], $podaci[1]); imagegif($dest, $filename . ".gif"); $slikabaza = "{$osoba}.gif"; break; case IMAGETYPE_JPEG: $source = imagecreatefromjpeg($slika); imagecopyresampled($dest, $source, 0, 0, 0, 0, $novasirina, $novavisina, $podaci[0], $podaci[1]); imagejpeg($dest, $filename . ".jpg"); $slikabaza = "{$osoba}.jpg"; break; case IMAGETYPE_PNG: $source = imagecreatefrompng($slika); imagecopyresampled($dest, $source, 0, 0, 0, 0, $novasirina, $novavisina, $podaci[0], $podaci[1]); imagepng($dest, $filename . ".png"); $slikabaza = "{$osoba}.png"; break; case IMAGETYPE_TIFF_II: nicemessage("Nije moguća promjena dimenzija slike tipa TIFF... Ostavljam zadate dimenzije."); rename($slika, $filename . ".tiff"); $slikabaza = "{$osoba}.tiff"; break; } $q310 = myquery("update osoba set slika='{$slikabaza}' where id={$osoba}"); zamgerlog("postavljena slika za korisnika u{$osoba}", 2); zamgerlog2("postavljena slika za korisnika", $osoba); ?> <script language="JavaScript"> location.href='?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=edit'; </script> <?php return; } else { nicemessage("Greška pri slanju slike"); } } // Brisanje slike if ($_POST['subakcija'] == "obrisisliku" && check_csrf_token()) { // Brisemo evt. postojecu sliku $q496 = myquery("select slika from osoba where id={$osoba}"); if (mysql_result($q498, 0, 0) != "") { unlink("{$conf_files_path}/slike/" . mysql_result($q496, 0, 0)); } $q497 = myquery("update osoba set slika='' where id={$osoba}"); zamgerlog("obrisana slika za korisnika u{$osoba}", 2); zamgerlog2("obrisana slika za korisnika", $osoba); ?> <script language="JavaScript"> location.href='?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=edit'; </script> <?php return; } // Mailovi if ($_GET['subakcija'] == "obrisimail") { $mailid = intval($_GET['mailid']); $q497a = myquery("select adresa from email where id={$mailid} and osoba={$osoba}"); if (mysql_num_rows($q497a) < 1) { niceerror("Greška"); return; } $staraadresa = mysql_result($q497a, 0, 0); $q498 = myquery("delete from email where osoba={$osoba} and id={$mailid}"); zamgerlog("obrisana email adresa za u{$osoba}", 2); zamgerlog2("email adresa obrisana", $osoba, $mailid, 0, $staraadresa); nicemessage("Obrisana email adresa {$staraadresa}"); } if ($_GET['subakcija'] == "izmijenimail") { $mailid = intval($_GET['mailid']); $adresa = my_escape($_GET['adresa']); $q497a = myquery("select adresa from email where id={$mailid} and osoba={$osoba}"); if (mysql_num_rows($q497a) < 1) { niceerror("Greška"); return; } $staraadresa = mysql_result($q497a, 0, 0); $q498 = myquery("update email set adresa='{$adresa}' where osoba={$osoba} and id={$mailid}"); zamgerlog("promijenjena email adresa za u{$osoba}", 2); zamgerlog2("email adresa promijenjena", $osoba, $mailid, 0, "{$staraadresa} -> {$adresa}"); nicemessage("Promijenjena email adresa {$staraadresa} u {$adresa}"); } if ($_GET['subakcija'] == "dodajmail") { $adresa = my_escape($_GET['adresa']); $q498 = myquery("insert into email set adresa='{$adresa}', osoba={$osoba}, sistemska=0"); zamgerlog("dodana email adresa za u{$osoba}", 2); zamgerlog2("email adresa dodana", $osoba, intval(mysql_insert_id()), 0, "{$adresa}"); nicemessage("Dodana email adresa {$adresa}"); } // Prikaz podataka $q400 = myquery("select ime, prezime, imeoca, prezimeoca, imemajke, prezimemajke, spol, 1, brindexa, UNIX_TIMESTAMP(datum_rodjenja), mjesto_rodjenja, jmbg, nacionalnost, drzavljanstvo, adresa, adresa_mjesto, telefon, kanton, strucni_stepen, naucni_stepen, slika, djevojacko_prezime, maternji_jezik, vozacka_dozvola, nacin_stanovanja, boracke_kategorije from osoba where id={$osoba}"); if (!($r400 = mysql_fetch_row($q400))) { zamgerlog("nepostojeca osoba u{$osoba}", 3); zamgerlog2("nepostojeca osoba", $osoba); niceerror("Nepostojeća osoba!"); return; } $ime = mysql_result($q400, 0, 0); $prezime = mysql_result($q400, 0, 1); $muski = $zenski = $boracke_kategorije = ""; if (mysql_result($q400, 0, 6) == "M") { $muski = " CHECKED"; } if (mysql_result($q400, 0, 6) == "Z") { $zenski = " CHECKED"; } if (mysql_result($q400, 0, 25) == 1) { $boracke_kategorije = " CHECKED"; } // Spisak gradova $q410 = myquery("select id,naziv,opcina,drzava from mjesto order by naziv"); $gradovir = "<option></option>"; $gradovia = "<option></option>"; $gradovilist = array(); while ($r410 = mysql_fetch_row($q410)) { if ($r410[0] == mysql_result($q400, 0, 10)) { $mjestorvalue = $r410[1]; $eopcinarodjenja = $r410[2]; $edrzavarodjenja = $r410[3]; } if ($r410[0] == mysql_result($q400, 0, 15)) { $mjestoavalue = $r410[1]; } $gradovilist[] = $r410[1]; } // Spisak država $q257 = myquery("select id, naziv from drzava order by naziv"); $drzaverodjr = "<option></option>"; $drzavljanstvor = "<option></option>"; while ($r257 = mysql_fetch_row($q257)) { $drzaverodjr .= "<option value=\"{$r257['0']}\""; if ($r257[0] == $edrzavarodjenja) { $drzaverodjr .= " SELECTED"; } $drzaverodjr .= ">{$r257['1']}</option>\n"; $drzavljanstvor .= "<option value=\"{$r257['0']}\""; if ($r257[0] == mysql_result($q400, 0, 13)) { $drzavljanstvor .= " SELECTED"; } $drzavljanstvor .= ">{$r257['1']}</option>\n"; } // Spisak nacionalnosti $q258 = myquery("select id, naziv from nacionalnost order by naziv"); $nacionalnostr = "<option></option>"; while ($r258 = mysql_fetch_row($q258)) { $nacionalnostr .= "<option value=\"{$r258['0']}\""; if ($r258[0] == mysql_result($q400, 0, 12)) { $nacionalnostr .= " SELECTED"; } $nacionalnostr .= ">{$r258['1']}</option>\n"; } // Spisak opičina $q259 = myquery("select id, naziv from opcina order by naziv"); $opcinar = ""; while ($r259 = mysql_fetch_row($q259)) { $opcinar .= "<option value=\"{$r259['0']}\""; if ($r259[0] == $eopcinarodjenja) { $opcinar .= " SELECTED"; } $opcinar .= ">{$r259['1']}</option>\n"; } // Spisak mailova $q260 = myquery("select id, adresa from email where osoba={$osoba}"); $email_adrese = ""; while ($r260 = mysql_fetch_row($q260)) { $email_adrese .= "<input type=\"text\" class=\"default\" name=\"email\" id=\"email{$r260['0']}\" value=\"{$r260['1']}\"> <input type=\"button\" class=\"default\" value=\"Izmijeni\" onclick=\"javascript:location.href='?sta=studentska/osobe&osoba={$osoba}&akcija=podaci&subakcija=izmijenimail&mailid={$r260['0']}&adresa='+document.getElementById('email{$r260['0']}').value;\"> <input type=\"button\" class=\"default\" value=\"Obriši\" onclick=\"javascript:location.href='?sta=studentska/osobe&osoba={$osoba}&akcija=podaci&subakcija=obrisimail&mailid={$r260['0']}';\"><br>\n"; } ?> <script type="text/javascript" src="js/mycombobox.js"></script> <h2><?php echo $ime; ?> <?php echo $prezime; ?> - izmjena ličnih podataka</h2> <p>ID: <b><?php echo $osoba; ?> </b></p> <?php if (mysql_result($q400, 0, 20) == "") { print genform("POST", "\" enctype=\"multipart/form-data"); ?> <input type="hidden" name="subakcija" value="postavisliku"> <p>Dodaj sliku:<br /><input type="file" name="slika"> <input type="submit" value="Dodaj"></p> </form> <?php } else { ?> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="obrisisliku"> <p>Slika:<br /> <img src="?sta=common/slika&osoba=<?php echo $osoba; ?> "><br/> <input type="submit" value="Obriši sliku"><br></form> <?php print genform("POST", "\" enctype=\"multipart/form-data"); ?> <input type="hidden" name="subakcija" value="postavisliku"> <input type="file" name="slika"> <input type="submit" value="Promijeni sliku"></p> </form> <?php } ?> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="potvrda"> <table border="0" width="600"><tr> <td>Ime:</td> <td><input type="text" name="ime" value="<?php echo $ime; ?> " class="default"></td> </tr><tr> <td>Prezime:</td> <td><input type="text" name="prezime" value="<?php echo $prezime; ?> " class="default"></tr> </tr><tr> <td>Spol:</td> <td><input type="radio" name="spol" value="M" <?php echo $muski; ?> > Muški <input type="radio" name="spol" value="Z" <?php echo $zenski; ?> > Ženski</td> </tr><tr> <td>JMBG:</td> <td><input type="text" name="jmbg" value="<?php echo mysql_result($q400, 0, 11); ?> " class="default"></td> </tr><tr> <td>Nacionalnost:</td> <td><select name="nacionalnost" class="default"><?php echo $nacionalnostr; ?> </select></td> </tr><tr> <td>Broj indexa<br>(za studente):</td> <td><input type="text" name="brindexa" value="<?php echo mysql_result($q400, 0, 8); ?> " class="default"></td> </tr><tr><td colspan="2"> </td> </tr><tr> <td>Djevojačko prezime:</td> <td><input type="text" name="imeoca" value="<?php echo mysql_result($q400, 0, 21); ?> " class="default"></td> </tr><tr> <td>Ime oca:</td> <td><input type="text" name="imeoca" value="<?php echo mysql_result($q400, 0, 2); ?> " class="default"></td> </tr><tr> <td>Prezime oca:</td> <td><input type="text" name="prezimeoca" value="<?php echo mysql_result($q400, 0, 3); ?> " class="default"></tr> </tr><tr> <td>Ime majke:</td> <td><input type="text" name="imemajke" value="<?php echo mysql_result($q400, 0, 4); ?> " class="default"></td> </tr><tr> <td>Prezime majke:</td> <td><input type="text" name="prezimemajke" value="<?php echo mysql_result($q400, 0, 5); ?> " class="default"></td> </tr><tr><td colspan="2"> </td> </tr><tr> <td>Datum rođenja:</td> <td><input type="text" name="datum_rodjenja" value="<?php if (mysql_result($q400, 0, 4)) { print date("d. m. Y.", mysql_result($q400, 0, 9)); } ?> " class="default"></td> </tr><tr> <td>Mjesto rođenja:</td> <td><?php echo mycombobox("mjesto_rodjenja", $mjestorvalue, $gradovilist); ?> </td> </tr><tr> <td>Općina rođenja:</td> <td><select name="opcina_rodjenja" class="default"><?php echo $opcinar; ?> </select></td> </tr><tr> <td>Država rođenja:</td> <td><select name="drzava_rodjenja" class="default"><?php echo $drzaverodjr; ?> </select></td> </tr><tr> <td>Državljanstvo:</td> <td><select name="drzavljanstvo" class="default"><?php echo $drzavljanstvor; ?> </select></td> </tr><tr> <td>Boračke kategorije:</td> <td><input type="checkbox" name="boracke_kategorije" <?php echo $boracke_kategorije; ?> ></td> </tr><tr><td colspan="2"> </td> </tr><tr> <td>Adresa:</td> <td><input type="text" name="adresa" value="<?php echo mysql_result($q400, 0, 14); ?> " class="default"><br> <?php echo mycombobox("adresa_mjesto", $mjestoavalue, $gradovilist); ?> </td> </tr><tr> <td>Kanton:</td> <td><?php echo db_dropdown("kanton", mysql_result($q400, 0, 17), "--Izaberite kanton--"); ?> </td> </tr><tr> <td>Telefon:</td> <td><input type="text" name="telefon" value="<?php echo mysql_result($q400, 0, 16); ?> " class="default"></td> </tr><tr> <td valign="top">Kontakt e-mail:</td> <td><?php echo $email_adrese; ?> <input type="text" name="emailnovi" id="emailnovi" class="default"> <input type="button" class="default" value="Dodaj" onclick="javascript:location.href='?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=podaci&subakcija=dodajmail&adresa='+document.getElementById('emailnovi').value;"></td> </tr><tr><td colspan="2"> </td> </tr><tr> <td>Maternji jezik:</td> <td><?php echo db_dropdown("maternji_jezik", mysql_result($q400, 0, 22), " "); ?> </td> </tr><tr> <td>Vozačka dozvola:</td> <td><?php echo db_dropdown("vozacki_kategorija", mysql_result($q400, 0, 23), " "); ?> </td> </tr><tr> <td>Način stanovanja:</td> <td><?php echo db_dropdown("nacin_stanovanja", mysql_result($q400, 0, 24), " "); ?> </td> </tr><tr><td colspan="2"> </td> </tr><tr> <td>Stručni stepen:</td> <td><?php echo db_dropdown("strucni_stepen", mysql_result($q400, 0, 18), " "); ?> </td> </tr><tr> <td>Naučni stepen:</td> <td><?php echo db_dropdown("naucni_stepen", mysql_result($q400, 0, 19), " "); ?> </td> </tr></table> <p> <input type="Submit" value=" Izmijeni "></form> <a href="?sta=studentska/osobe&akcija=edit&osoba=<?php echo $osoba; ?> ">Povratak nazad</a> </p> <?php } else { if ($akcija == "upis") { $student = intval($_REQUEST['osoba']); $studij = intval($_REQUEST['studij']); $semestar = intval($_REQUEST['semestar']); $godina = intval($_REQUEST['godina']); // Neispravni parametri se ne bi trebali desiti, osim u slučaju hackovanja // a i tada je "šteta" samo nekonzistentnost baze $q500 = myquery("select ime, prezime, brindexa from osoba where id={$student}"); $ime = mysql_result($q500, 0, 0); $prezime = mysql_result($q500, 0, 1); $brindexa = mysql_result($q500, 0, 2); $q505 = myquery("select naziv from akademska_godina where id={$godina}"); $naziv_ak_god = mysql_result($q505, 0, 0); ?> <a href="?sta=studentska/osobe&akcija=edit&osoba=<?php echo $student; ?> ">Nazad na podatke o osobi</a><br/><br/> <h2><?php echo $ime; ?> <?php echo $prezime; ?> - upis</h2><?php print genform("POST"); ?> <input type="hidden" name="subakcija" value="upis_potvrda"> <?php // Ako je subakcija, potvrdjujemo da se moze izvrsiti upis $ok_izvrsiti_upis = 0; if ($_POST['subakcija'] == "upis_potvrda" && check_csrf_token()) { $ok_izvrsiti_upis = 1; // Potvrdjujemo promjenu studija napravljenu tokom rada $ns = intval($_REQUEST['novi_studij']); if ($ns > 0) { $studij = $ns; $_REQUEST['novi_studij'] = 0; ?> <input type="hidden" name="studij" value="<?php echo $studij; ?> "> <input type="hidden" name="novi_studij" value="0"> <?php $ok_izvrsiti_upis = 0; // Tražimo novu potvrdu jer od izbora studija ovisi previše stvari // npr. ugovor o učenju } } // Šta je student slušao i kako? $q510 = myquery("select studij, nacin_studiranja, plan_studija, semestar, ponovac from student_studij where student={$student} order by akademska_godina desc, semestar desc limit 1"); $stari_studij = $nacin_studiranja = $plan_studija = $ponovac = $stari_nacin_studiranja = 0; if (mysql_num_rows($q510) > 0) { $stari_studij = mysql_result($q510, 0, 0); $stari_nacin_studiranja = mysql_result($q510, 0, 1); $plan_studija = mysql_result($q510, 0, 2); if (mysql_result($q510, 0, 3) >= $semestar) { $ponovac = 1; } else { if ($semestar % 2 == 0) { $ponovac = mysql_result($q510, 0, 4); } } } if (intval($_REQUEST['nacin_studiranja']) > 0) { $nacin_studiranja = intval($_REQUEST['nacin_studiranja']); } // Ako je promijenjen studij, moramo odrediti i novi plan studija if ($stari_studij != $studij) { $ponovac = 0; $q515 = myquery("select godina_vazenja from plan_studija where studij={$studij} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q515) > 0) { $plan_studija = mysql_result($q515, 0, 0); } } // Novi student $mijenja_studij = 0; if ($stari_studij == 0 && $ns == 0 && $ok_izvrsiti_upis == 0) { // Šta je odabrao na prijemnom? (pretpostavljamo da godine idu hronološkim redom) $izabrani_studij = $studij; $q520 = myquery("select pp.studij_prvi, pt.ciklus_studija from prijemni_prijava as pp, prijemni_termin as pt where pp.osoba={$student} and pp.prijemni_termin=pt.id and pt.akademska_godina={$godina} order by pt.datum desc limit 1"); if (mysql_num_rows($q520) > 0) { $izabrani_studij = mysql_result($q520, 0, 0); $ciklus = mysql_result($q520, 0, 1); } else { // Iz parametra studij ćemo probati odrediti ciklus $q530 = myquery("select ts.ciklus from tipstudija as ts, studij as s where s.id={$studij} and s.tipstudija=ts.id"); if (mysql_num_rows($q530) > 0) { $ciklus = mysql_result($q530, 0, 0); } else { $ciklus = 1; } // nemamo pojma = prvi ciklus } // Lista studija $q550 = myquery("select s.id, s.naziv from studij as s, tipstudija as ts where s.tipstudija=ts.id and ts.ciklus={$ciklus} and ts.moguc_upis=1 order by s.naziv"); ?> <p><b>Izaberite studij koji će student upisati:</b><br/> <?php while ($r550 = mysql_fetch_row($q550)) { if ($r550[0] == $izabrani_studij) { $dodaj = " CHECKED"; } else { $dodaj = ""; } print '<input type="radio" name="novi_studij" value="' . $r550[0] . '"' . $dodaj . '>' . $r550[1] . "<br/>\n"; } print "</p>\n\n"; $mijenja_studij = 1; } // Izbor studija kod zavrsetka prethodnog $q540 = myquery("select ts.trajanje, s.naziv, ts.ciklus, s.institucija from studij as s, tipstudija as ts where s.id={$studij} and s.tipstudija=ts.id"); if (mysql_num_rows($q540) > 0) { $trajanje = mysql_result($q540, 0, 0); $naziv_studija = mysql_result($q540, 0, 1); $ciklus = mysql_result($q540, 0, 2); $institucija = mysql_result($q540, 0, 3); } else { $ok_izvrsiti_upis = 0; } // nepoznat studij // Pošto se akcija "edit" ne bavi određivanjem sljedećeg ciklusa, ona će proslijediti // prevelik broj semestra if ($semestar > $trajanje && $stari_studij != 0) { // Biramo sljedeći ciklus istog studija po tome što ga nudi ista institucija $ciklus++; $q545 = myquery("select s.id from studij as s, tipstudija as ts where s.institucija={$institucija} and s.tipstudija=ts.id and ts.ciklus={$ciklus} and ts.moguc_upis=1"); if (mysql_num_rows($q545) > 0) { $izabrani_studij = mysql_result($q545, 0, 0); } $q550 = myquery("select s.id, s.naziv from studij as s, tipstudija as ts where s.tipstudija=ts.id and ts.ciklus={$ciklus} and ts.moguc_upis=1 order by s.naziv"); ?> <p><b>Izaberite studij koji će student upisati:</b><br/> <?php while ($r550 = mysql_fetch_row($q550)) { if ($r550[0] == $izabrani_studij) { $dodaj = " CHECKED"; } else { $dodaj = ""; } print '<input type="radio" name="novi_studij" value="' . $r550[0] . '"' . $dodaj . '>' . $r550[1] . "<br/>\n"; } print "</p>\n\n"; // Postavljamo semestar na 1 unset($_REQUEST['semestar']); print '<input type="hidden" name="semestar" value="1">' . "\n"; $prijedlog_nacin_studiranja = $nacin_studiranja; $nacin_studiranja = 0; // Ponovo se mora izabrati način studiranja $ok_izvrsiti_upis = 0; $mijenja_studij = 1; } else { if ($stari_studij != 0) { ?> <p>Upis na studij <?php echo $naziv_studija; ?> , <?php echo $semestar; ?> . semestar:</p> <?php } } // Izbor načina studiranja if ($nacin_studiranja == 0) { ?> <p><b>Izaberite način studiranja studenta:</b><br/> <?php $q560 = myquery("select id, naziv from nacin_studiranja where moguc_upis=1"); while ($r560 = mysql_fetch_row($q560)) { if ($r560[0] == $stari_nacin_studiranja) { $dodaj = " CHECKED"; } else { $dodaj = ""; } print '<input type="radio" name="nacin_studiranja" value="' . $r560[0] . '"' . $dodaj . '>' . $r560[1] . "<br/>\n"; } $ok_izvrsiti_upis = 0; } // Da li ima nepoložene predmete sa ranijih semestara? if ($semestar > 1 && $semestar % 2 == 1 && $stari_studij != 0) { // Uvodimo dva načina izbora predmeta - preko plana studija i preko odslušanih predmeta u prošloj godini // U slučaju da nije definisan plan studija, bira se ovaj drugi način, ali on nije pouzdan zbog komplikacije // oko izbornih predmeta i ECTSova if ($plan_studija > 0) { // Prema novom zakonu, uslov za upis je jedan predmet iz prethodne godine $predmeti_pao = array(); $stari_predmet = array(); $q570 = myquery("select predmet, obavezan, semestar from plan_studija where godina_vazenja={$plan_studija} and studij={$stari_studij} and semestar<{$semestar} order by semestar"); $slusao = array(); while ($r570 = mysql_fetch_row($q570)) { $psemestar = $r570[2]; if ($r570[1] == 1) { // obavezan $predmet = $r570[0]; $q580 = myquery("select count(*) from konacna_ocjena where student={$student} and predmet={$predmet} and ocjena>5"); if (mysql_result($q580, 0, 0) < 1) { $q590 = myquery("select ects, naziv from predmet where id={$predmet}"); $predmeti_pao[$predmet] = mysql_result($q590, 0, 1); if ($psemestar < $semestar - 2) { $stari_predmet[$predmet] = 1; } } } else { // izborni $is = $r570[0]; $slusao_id = 0; $polozio = 0; $q600 = myquery("select predmet from izborni_slot where id={$is}"); while ($r600 = mysql_fetch_row($q600)) { $predmet = $r600[0]; if ($slusao[$predmet] != "") { continue; } // kada je isti predmet u dva slota // Koji je od ovih slušao? $q610 = myquery("select count(*) from student_predmet as sp, ponudakursa as pk where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet}"); if (mysql_result($q610, 0, 0) > 0) { $slusao_id = $predmet; $q620 = myquery("select ects, naziv from predmet where id={$predmet}"); $slusao[$predmet] = mysql_result($q620, 0, 1); } // Da li je polozio? $q630 = myquery("select count(*) from konacna_ocjena where student={$student} and predmet={$predmet} and ocjena>5"); if (mysql_result($q630, 0, 0) > 0) { $polozio = 1; break; } } if ($polozio == 0) { // nije položio nijedan od mogućih predmeta u slotu if ($slusao_id > 0) { $predmeti_pao[$slusao_id] = $slusao[$slusao_id]; } else { // Ubacićemo nešto u niz $predmeti_pao da se zna da nema uslov // ali u biti ne znamo šta $predmeti_pao[0] = "X"; } if ($psemestar < $semestar - 2) { $stari_predmet[$slusao_id] = 1; } } } } } else { // if ($plan_studija>0) // Nemamo plana studija, pokušavamo odrediti šta je student slušao ranijih godina // Nepouzdano zbog kolizija, izbornih predmeta itd. $q640 = myquery("select pk.predmet, p.ects, pk.semestar, p.naziv from ponudakursa as pk, student_predmet as sp, predmet as p where sp.student={$student} and sp.predmet=pk.id and pk.semestar<{$semestar} and pk.predmet=p.id"); $predmeti_pao = array(); while ($r650 = mysql_fetch_row($q650)) { $predmet = $r650[0]; $psemestar = $r650[2]; $pnaziv = $r650[3]; $q660 = myquery("select count(*) from konacna_ocjena where student={$student} and predmet={$predmet} and ocjena>5"); if (mysql_result($q660, 0, 0) < 1 && !$predmeti_pao[$predmet]) { $predmeti_pao[$predmet] = $pnaziv; if ($psemestar < $semestar - 2) { $stari_predmet[$predmet] = 1; } } } } // Tabela za unos ocjena na predmetima koje je pao: if (count($predmeti_pao) > 0 && $ok_izvrsiti_upis == 0) { ?> <p><b>Predmeti iz kojih je student ostao neocijenjen - upišite eventualne ocjene u polja lijevo:</b></p> <table border="0"> <?php foreach ($predmeti_pao as $id => $naziv) { if ($id == 0) { // Ovo je jedini pametan razlog da se pojavi id nula ?> <tr><td colspan="2">Student nije slušao nijedan od ponuđenih izbornih predmeta koje je po planu studija trebao slušati.<br/> Pošto ima dovoljan broj ostvarenih ECTS kredita pretpostavićemo da je sve u redu.</td></tr> <?php continue; } ?> <tr><td><input type="text" size="3" name="pao-<?php echo $id; ?> "></td> <td><?php echo $naziv; ?> </td></tr> <?php } ?> </table> <?php } } // if ($semestar%2 ==1) // IZBORNI PREDMETI // novi studij - određujemo najnoviji plan studija za taj studij if ($ns > 0) { $q670 = myquery("select godina_vazenja from plan_studija where studij={$studij} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q670) > 0) { $plan_studija = mysql_result($q670, 0, 0); } } // Nema potrebe gledati dalje ako treba tek izabrati studij $uou = 0; if ($mijenja_studij == 0) { // Da li je popunjen ugovor o učenju? $q680 = myquery("select id from ugovoroucenju where student={$student} and akademska_godina={$godina} and studij={$studij} and semestar={$semestar}"); $uoupk = array(); if (mysql_num_rows($q680) > 0) { $uou = mysql_result($q680, 0, 0); if ($ok_izvrsiti_upis == 0) { print "<p>Popunjen Ugovor o učenju (ID: {$uou}).\n"; } $q690 = myquery("select p.id, p.naziv from ugovoroucenju_izborni as uoui, predmet as p where uoui.ugovoroucenju={$uou} and uoui.predmet=p.id"); if (mysql_num_rows($q690) > 0 && $ok_izvrsiti_upis == 0) { print " Izabrani predmeti u semestru:"; } while ($r690 = mysql_fetch_row($q690)) { $predmet = $r690[0]; if ($ok_izvrsiti_upis == 0) { print "<br/>* {$r690['1']}\n"; } // Da li je već položio predmet $q695 = myquery("select count(*) from konacna_ocjena where student={$student} and predmet={$predmet} and ocjena>5"); if (mysql_result($q695, 0, 0) > 0) { if ($ok_izvrsiti_upis == 0) { print " - već položen! Preskačem"; } } else { // Tražimo ponudukursa $q700 = myquery("select id from ponudakursa where predmet={$predmet} and studij={$studij} and semestar={$semestar} and akademska_godina={$godina}"); if (mysql_num_rows($q700) < 1) { if ($ok_izvrsiti_upis == 0) { print " - nije pronađena ponuda kursa!! Kreiram.\n"; } $q701 = myquery("insert into ponudakursa set predmet={$predmet}, studij={$studij}, semestar={$semestar}, akademska_godina={$godina}, obavezan=0"); $q700 = myquery("select id from ponudakursa where predmet={$predmet} and studij={$studij} and semestar={$semestar} and akademska_godina={$godina}"); zamgerlog("kreirao ponudu kursa pp{$predmet}, studij s{$studij}, sem. {$semestar}, ag{$ag} zbog studenta u{$student}", 2); zamgerlog2("kreirao ponudu kursa zbog studenta", $student, intval($pkid)); } if ($ok_izvrsiti_upis == 0) { print '<input type="hidden" name="izborni-' . mysql_result($q700, 0, 0) . '" value="on">' . "\n"; } } } if ($ok_izvrsiti_upis == 0) { print "</p>\n"; } } else { if ($ok_izvrsiti_upis == 0) { print "<p><b>Nije popunjen Ugovor o učenju!</b> Izaberite izborne predmete ručno.</p>\n"; } } // Nalazim izborne predmete // Ako postoji plan studija, problem je jednostavan if ($plan_studija > 0 && $uou == 0) { $bio_predmet = array(); $q710 = myquery("select predmet from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and semestar={$semestar} and obavezan=0"); while ($r710 = mysql_fetch_row($q710)) { $izborni_slot = $r710[0]; $q720 = myquery("select p.id, p.naziv, p.ects from izborni_slot as iz, predmet as p where iz.id={$izborni_slot} and iz.predmet=p.id"); // Prvi prolaz, za provjere $nastavak = 0; $ispis_predmet = array(); $ispis_predmet_ects = array(); while ($r720 = mysql_fetch_row($q720)) { $predmet = $r720[0]; if (in_array($predmet, $bio_predmet)) { continue; } array_push($bio_predmet, $predmet); // Da li je izabran na formi? foreach ($_REQUEST as $key => $value) { if (substr($key, 0, 8) != "izborni-") { continue; } if ($value == "") { continue; } $ponudakursa = intval(substr($key, 8)); $q566 = myquery("select predmet from ponudakursa where id={$ponudakursa}"); if ($predmet == mysql_result($q566, 0, 0)) { $nastavak = 1; break; } } // Da li je položen? $q730 = myquery("select count(*) from konacna_ocjena where student={$student} and predmet={$predmet}"); if (mysql_result($q730, 0, 0) > 0) { $nastavak = 1; break; } $ispis_predmet[$predmet] = $r720[1]; $ispis_predmet_ects[$predmet] = $r720[2]; } if ($nastavak == 1) { continue; } if ($ok_izvrsiti_upis == 1 && count($ispis_predmet) > 0) { print "<p><b>Morate izabrati jedan od ovih predmeta.</b> Ako to znači da ste sada izabrali viška predmeta, koristite dugme za povratak nazad.</p>\n"; $ok_izvrsiti_upis = 0; } // Drugi prolaz foreach ($ispis_predmet as $predmet => $pnaziv) { // Odredjujemo ponudu kursa $q740 = myquery("select id from ponudakursa where predmet={$predmet} and studij={$studij} and semestar={$semestar} and akademska_godina={$godina}"); if (mysql_num_rows($q740) < 1) { $q701 = myquery("insert into ponudakursa set predmet={$predmet}, studij={$studij}, semestar={$semestar}, akademska_godina={$godina}, obavezan=0"); $q700 = myquery("select id from ponudakursa where predmet={$predmet} and studij={$studij} and semestar={$semestar} and akademska_godina={$godina}"); $pkid = mysql_result($q700, 0, 0); zamgerlog("kreirao ponudu kursa pp{$predmet}, studij s{$studij}, sem. {$semestar}, ag{$ag} zbog studenta u{$student}", 2); zamgerlog2("kreirao ponudu kursa zbog studenta", $student, intval($pkid)); } else { $pkid = mysql_result($q740, 0, 0); } ?> <input type="checkbox" name="izborni-<?php echo $pkid; ?> "> <?php echo $pnaziv; ?> (<?php echo $ispis_predmet_ects[$predmet]; ?> ECTS)<br/> <?php } } } else { if ($uou == 0) { // Nije definisan plan studija - deduciramo izborne predmete iz onoga što se držalo prošle godine // Da li je zbir ECTS bodova sa izbornim predmetima = 30? $q560 = myquery("select p.id, p.naziv, pk.id, p.ects from predmet as p, ponudakursa as pk where pk.akademska_godina={$godina} and pk.studij={$studij} and pk.semestar={$semestar} and obavezan=0 and pk.predmet=p.id"); if (mysql_num_rows($q560) > 0 && $ok_izvrsiti_upis == 1) { $q565 = myquery("select sum(p.ects) from ponudakursa as pk, predmet as p where pk.studij={$studij} and pk.semestar={$semestar} and pk.akademska_godina={$godina} and pk.obavezan=1 and pk.predmet=p.id"); $ects_suma = mysql_result($q565, 0, 0); // Upisujemo na izborne predmete koji su odabrani foreach ($_REQUEST as $key => $value) { if (substr($key, 0, 8) != "izborni-") { continue; } if ($value == "") { continue; } $predmet = intval(substr($key, 8)); $q566 = myquery("select p.ects from ponudakursa as pk, predmet as p where pk.id={$predmet} and pk.predmet=p.id"); $ects_suma += mysql_result($q566, 0, 0); } if ($ects_suma != 30) { $ok_izvrsiti_upis = 0; niceerror("Izabrani izborni predmeti čine sumu {$ects_suma} ECTS kredita, umjesto 30"); } } if (mysql_num_rows($q560) > 0 && $ok_izvrsiti_upis == 0) { ?> <p><b>Izaberite izborne predmete:</b><br/> <?php while ($r560 = mysql_fetch_row($q560)) { $q570 = myquery("select count(*) from konacna_ocjena where student={$student} and predmet={$r560['0']}"); if (mysql_result($q570, 0, 0) < 1) { // Nije polozio/la - koristimo pk ?> <input type="checkbox" name="izborni-<?php echo $r560[2]; ?> "> <?php echo $r560[1]; ?> (<?php echo $r560[3]; ?> ECTS)<br/> <?php } } } } } } // if ($stari_studij!=0 && $semestar<=$trajanje) // Studentu nikada nije zadat broj indexa (npr. prvi put se upisuje) if (($brindexa == 0 || $brindexa == "" || $mijenja_studij == 1) && $ok_izvrsiti_upis == 0 && !isset($_REQUEST['novi_brindexa'])) { if ($brindexa == 0) { $brindexa = ""; } ?> <p><b>Unesite broj indeksa za ovog studenta:</b><br/> <input type="text" name="novi_brindexa" size="10" value="<?php echo $brindexa; ?> "></p> <?php } // ------ Izvrsenje upisa! if ($ok_izvrsiti_upis == 1 && check_csrf_token()) { // Upis u prvi semestar - kandidat za prijemni postaje student! if ($stari_studij == 0) { // Ukidamo privilegiju "prijemni" ako je student imao $q640 = myquery("delete from privilegije where osoba={$student} and privilegija='prijemni'"); // Dodajemo privilegiju "student" samo ako je student nije već imao $q643 = myquery("select count(*) from privilegije where osoba={$student} and privilegija='student'"); if (mysql_result($q643, 0, 0) < 1) { $q646 = myquery("insert into privilegije set osoba={$student}, privilegija='student'"); } // AUTH tabelu cemo srediti naknadno zamgerlog2("proglasen za studenta", $student); print "-- {$prezime} {$ime} proglašen za studenta<br/>\n"; } // Novi broj indexa $nbri = my_escape($_REQUEST['novi_brindexa']); if ($nbri != "") { $q650 = myquery("update osoba set brindexa='{$nbri}' where id={$student}"); zamgerlog2("postavljen broj indeksa", $student, 0, 0, $nbri); print "-- broj indeksa postavljen na {$nbri}<br/>\n"; } // Upisujemo ocjene za predmete koje su dopisane if (count($predmeti_pao) > 0) { foreach ($predmeti_pao as $predmet => $naziv_predmeta) { $ocjena = intval($_REQUEST["pao-{$predmet}"]); if ($ocjena > 5) { // Upisujem dopisanu ocjenu $q590 = myquery("insert into konacna_ocjena set student={$student}, predmet={$predmet}, ocjena={$ocjena}, akademska_godina={$ag}"); zamgerlog("dopisana ocjena {$ocjena} prilikom upisa na studij (predmet pp{$predmet}, student u{$student})", 4); // 4 = audit zamgerlog2("dodana ocjena", $student, $predmet, $ag, $ocjena); print "-- Dopisana ocjena {$ocjena} za predmet {$naziv_predmeta}<br/>\n"; } else { // Student prenio predmet if ($predmet == 0) { continue; } // nije slušao nijedan od mogućih izbornih predmeta // Provjera broja ECTS kredita je obavljena na početnoj strani (akcija "edit") // pa ćemo pretpostaviti sve najbolje :) // Moramo upisati studenta u istu ponudu kursa koju je ranije slušao $q592 = myquery("select pk.studij,pk.semestar from ponudakursa as pk, student_predmet as sp where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} order by pk.akademska_godina desc limit 1"); // Polje predmeti pao sadrži predmete koje je student trebao slušati prema NPP u prošloj godini a nije ih položio // No ako se student direktno upisuje na višu godinu (doktorski studij!?), moguće da je tu predmet koji nikada nije slušao // Stoga moramo provjeriti i to i preskočiti takve predmete if (mysql_num_rows($q592) < 1) { continue; } $q594 = myquery("select id from ponudakursa where predmet={$predmet} and studij=" . mysql_result($q592, 0, 0) . " and semestar=" . mysql_result($q592, 0, 1) . " and akademska_godina={$godina}"); upis_studenta_na_predmet($student, mysql_result($q594, 0, 0)); zamgerlog2("student upisan na predmet (preneseni)", $student, intval(mysql_result($q594, 0, 0))); print "-- Upisan u predmet {$naziv_predmeta} koji je prenio s prethodne godine (ako je ovo greška, zapamtite da ga treba ispisati sa predmeta!)<br/>\n"; } } } // Upisujemo studenta na novi studij $q600 = myquery("insert into student_studij set student={$student}, studij={$studij}, semestar={$semestar}, akademska_godina={$godina}, nacin_studiranja={$nacin_studiranja}, ponovac={$ponovac}, odluka=NULL, plan_studija={$plan_studija}"); // Upisujemo na sve obavezne predmete na studiju $q610 = myquery("select pk.id, p.id, p.naziv from ponudakursa as pk, predmet as p where pk.studij={$studij} and pk.semestar={$semestar} and pk.akademska_godina={$godina} and pk.obavezan=1 and pk.predmet=p.id"); while ($r610 = mysql_fetch_row($q610)) { // Da li ga je vec polozio $q615 = myquery("select count(*) from konacna_ocjena where student={$student} and predmet={$r610['1']}"); if (mysql_result($q615, 0, 0) < 1) { upis_studenta_na_predmet($student, $r610[0]); zamgerlog2("student upisan na predmet (obavezan)", $student, intval($r610[0])); } else { print "-- Student NIJE upisan u {$r610['2']} jer ga je već položio<br/>\n"; } } // Upisujemo na izborne predmete koji su odabrani foreach ($_REQUEST as $key => $value) { if (substr($key, 0, 8) != "izborni-") { continue; } if ($value == "") { continue; } $ponudakursa = intval(substr($key, 8)); // drugi dio ključa je ponudakursa upis_studenta_na_predmet($student, $ponudakursa); zamgerlog2("student upisan na predmet (izborni)", $student, $ponudakursa); $q635 = myquery("select p.naziv from ponudakursa as pk, predmet as p where pk.id={$ponudakursa} and pk.predmet=p.id"); print "-- Student upisan u izborni predmet " . mysql_result($q635, 0, 0) . "<br/>"; } nicemessage("Student uspješno upisan na {$naziv_studija}, {$semestar}. semestar"); zamgerlog("Student u{$student} upisan na studij s{$studij}, semestar {$semestar}, godina ag{$godina}", 4); // 4 - audit return; } else { ?> <p> </p> <input type="submit" value=" Potvrda upisa "> </form> <?php } } else { if ($akcija == "ispis") { // Svi parametri su obavezni! $studij = $_REQUEST['studij']; $semestar = $_REQUEST['semestar']; $ak_god = $_REQUEST['godina']; $q2500 = myquery("select ime, prezime from osoba where id={$osoba}"); $ime = mysql_result($q2500, 0, 0); $prezime = mysql_result($q2500, 0, 1); $q2510 = myquery("select naziv from akademska_godina where id={$ak_god}"); $naziv_ak_god = mysql_result($q2510, 0, 0); ?> <a href="?sta=studentska/osobe&akcija=edit&osoba=<?php echo $osoba; ?> ">Nazad na podatke o osobi</a><br/><br/> <h2><?php echo $ime; ?> <?php echo $prezime; ?> - ispis sa studija</h2> <?php // Gdje je trenutno upisan? $q2520 = myquery("select s.id, s.naziv, ss.semestar from studij as s, student_studij as ss where ss.student={$osoba} and ss.studij=s.id and ss.akademska_godina={$ak_god} and ss.semestar={$semestar}"); if (mysql_num_rows($q2520) < 1) { niceerror("Student nije upisan na fakultet u izabranoj akademskoj godini!"); zamgerlog("pokusao ispisati studenta u{$osoba} koji nije upisan u ag{$ak_god}", 3); zamgerlog2("pokusao ispisati studenta koji nije upisan", $osoba, intval($ak_god)); return; } if (mysql_result($q2520, 0, 0) != $studij) { niceerror("Student nije upisan na izabrani studij u izabranoj akademskoj godini!"); zamgerlog("pokusao ispisati studenta u{$osoba} sa studija {$studij} koji ne slusa u ag{$ak_god}", 3); zamgerlog2("pokusao ispisati studenta sa studija koji ne slusa", $osoba, intval($studij), intval($ak_god)); return; } if (mysql_result($q2520, 0, 2) != $semestar) { niceerror("Student nije upisan na izabrani semestar u izabranoj akademskoj godini!"); zamgerlog("pokusao ispisati studenta u{$osoba} sa semestra {$semestar} koji ne slusa u ag{$ak_god}", 3); zamgerlog2("pokusao ispisati studenta sa semestra koji ne slusa", $osoba, intval($semestar), intval($ak_god)); return; } $naziv_studija = mysql_result($q2520, 0, 1); $zimski_ljetnji = $semestar % 2; ?> <h3>Studij: <?php echo $naziv_studija; ?> , <?php echo $semestar; ?> . semestar, <?php echo $naziv_ak_god; ?> godina</h3> <?php // Ispis sa studija if ($_REQUEST['potvrda'] == "1") { $q530 = myquery("select pk.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$osoba} and sp.predmet=pk.id and pk.akademska_godina={$ak_god} and pk.semestar mod 2={$zimski_ljetnji}"); while ($r530 = mysql_fetch_row($q530)) { $predmet = $r530[0]; ispis_studenta_sa_predmeta($osoba, $predmet, $ak_god); zamgerlog("ispisujem studenta u{$osoba} sa predmeta pp{$predmet} (ispis sa studija)", 4); // 4 - audit zamgerlog2("student ispisan sa predmeta (ispis sa studija)", $osoba, intval($predmet), intval($ak_god)); } $q550 = myquery("delete from student_studij where student={$osoba} and akademska_godina={$ak_god} and semestar={$semestar}"); nicemessage("Ispisujem studenta sa studija {$naziv_studija} i svih predmeta koje trenutno sluša."); zamgerlog("ispisujem studenta u{$osoba} sa studija {$naziv_studija} (ag{$ak_god})", 4); zamgerlog2("student ispisan sa studija", $osoba, intval($ak_god)); } else { ?> <p>Student će biti ispisan sa sljedećih predmeta:<ul> <?php $q520 = myquery("select p.naziv from predmet as p, ponudakursa as pk, student_predmet as sp where sp.student={$osoba} and sp.predmet=pk.id and pk.akademska_godina={$ak_god} and pk.predmet=p.id and pk.semestar mod 2={$zimski_ljetnji}"); while ($r520 = mysql_fetch_row($q520)) { print "<li>{$r520['0']}</li>\n"; } ?> </ul></p> <p>NAPOMENA: Svi bodovi ostvareni na ovim predmetima će biti izgubljeni! Trenutno nema drugog načina da se student ispiše sa studija.</p> <p>Kliknite na dugme "Potvrda" da potvrdite ispis.</p> <?php echo genform("POST"); ?> <input type="hidden" name="potvrda" value="1"> <input type="submit" value=" Potvrda "> </form> <?php } } else { if ($akcija == "kolizija") { ?> <a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=edit">Nazad na podatke o studentu</a><br/><br/> <?php // Odredjujemo u koju akademsku godinu bi se trebao upisivati student $nova_ak_god = intval($_REQUEST['godina']); $q398 = myquery("select naziv from akademska_godina where id={$nova_ak_god}"); $naziv_godine = mysql_result($q398, 0, 0); // Koji studij student sluša? Treba nam radi ponudekursa $q399 = myquery("select s.id, s.naziv from student_studij as ss, studij as s where ss.student={$osoba} and ss.studij=s.id order by ss.akademska_godina desc, ss.semestar desc"); $studij = mysql_result($q399, 0, 0); $studij_naziv = mysql_result($q399, 0, 1); $q400 = myquery("select predmet from kolizija where student={$osoba} and akademska_godina={$nova_ak_god}"); $predmeti = $ponudekursa = array(); $greska = 0; while ($r400 = mysql_fetch_row($q400)) { $predmet = $r400[0]; // Eliminišemo predmete koje je položio u međuvremenu $q410 = myquery("select count(*) from konacna_ocjena where student={$osoba} and predmet={$predmet} and ocjena>5"); if (mysql_result($q410, 0, 0) < 1) { $q420 = myquery("select naziv from predmet where id={$predmet}"); $predmeti[$predmet] = "<b>" . mysql_result($q420, 0, 0) . "</b> ({$studij_naziv}, "; // Odredjujemo ponudu kursa koju bi student trebao slušati $q430 = myquery("select id, semestar, obavezan from ponudakursa where predmet={$predmet} and studij={$studij} and akademska_godina={$nova_ak_god}"); if (mysql_num_rows($q430) < 1) { if ($greska == 0) { niceerror("Nije pronađena ponuda kursa"); } print "Predmet <b>" . mysql_result($q420, 0, 0) . "</b>, studij <b>{$studij_naziv}</b>, godina {$naziv_godine}<br/>"; $greska = 1; } $ponudekursa[$predmet] = mysql_result($q430, 0, 0); $predmeti[$predmet] .= mysql_result($q430, 0, 1) . ". semestar"; if (mysql_result($q430, 0, 2) == 0) { $predmeti[$predmet] .= ", izborni"; } $predmeti[$predmet] .= ")"; } } if ($greska == 1) { return; } // ne idemo dalje if (count($predmeti) == 0) { // nema ništa za koliziju!!! nicemessage("Student je u međuvremenu položio/la sve predmete! Nema se ništa za upisati."); return; } if ($_REQUEST['subakcija'] == "potvrda") { foreach ($ponudekursa as $predmet => $pk) { upis_studenta_na_predmet($osoba, $pk); $q440 = myquery("delete from kolizija where student={$osoba} and akademska_godina={$nova_ak_god} and predmet={$predmet}"); zamgerlog2("student upisan na predmet (kolizija)", $osoba, intval($pk)); } zamgerlog("prihvacen zahtjev za koliziju studenta u{$osoba}", 4); // 4 = audit zamgerlog2("prihvacen zahtjev za koliziju", $osoba); print "<p>Upis je potvrđen.</p>\n"; } else { ?> <p>Student želi upisati sljedeće predmete:</p> <ul> <?php foreach ($predmeti as $tekst) { print "<li>{$tekst}</li>\n"; } ?> </ul> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="potvrda"> <input type="submit" value=" Potvrdi "> </form> <?php } } else { if ($akcija == "predmeti") { ?> <a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=edit">Nazad na podatke o studentu</a><br/><br/> <?php // Parametar "spisak" određuje koji predmeti će biti prikazani $spisak = intval($_REQUEST['spisak']); $q2000 = myquery("select ime, prezime from osoba where id={$osoba}"); if (mysql_num_rows($q2000) < 1) { niceerror("Nepoznata osoba {$osoba}"); return; } $ime = mysql_result($q2000, 0, 0); $prezime = mysql_result($q2000, 0, 1); ?> <h2><?php echo $ime; ?> <?php echo $prezime; ?> - upis/ispis na predmete</h2> <?php // Subakcije: upis i ispis sa predmeta if ($_REQUEST['subakcija'] == "upisi") { $ponudakursa = intval($_REQUEST['ponudakursa']); upis_studenta_na_predmet($osoba, $ponudakursa); $q2200 = myquery("select p.naziv from ponudakursa as pk, predmet as p where pk.id={$ponudakursa} and pk.predmet=p.id"); $naziv_predmeta = mysql_result($q2200, 0, 0); nicemessage("Student upisan na predmet {$naziv_predmeta}"); zamgerlog("student u{$osoba} manuelno upisan na predmet p{$ponudakursa}", 4); // 4 - audit zamgerlog2("student upisan na predmet (manuelno)", $osoba, $ponudakursa); } if ($_REQUEST['subakcija'] == "ispisi") { $ponudakursa = intval($_REQUEST['ponudakursa']); $q2200 = myquery("select p.id, p.naziv, pk.akademska_godina from ponudakursa as pk, predmet as p where pk.id={$ponudakursa} and pk.predmet=p.id"); $predmet = mysql_result($q2200, 0, 0); $naziv_predmeta = mysql_result($q2200, 0, 1); $ag = mysql_result($q2200, 0, 2); // Upozorenje ako ima neke bodove? $q2210 = myquery("select sum(bodovi) from komponentebodovi where student={$osoba} and predmet={$ponudakursa}"); $bodovi = mysql_result($q2210, 0, 0); if ($bodovi != 0 && $bodovi != 10 && $_REQUEST['siguran'] != "da") { // 10 bodova je default za prisustvo nicemessage("Upozorenje! Student je osvojio {$bodovi} bodova na predmetu {$naziv_predmeta}."); ?> Da li ste sigurni da ga želite ispisati?<br/> <?php echo genform("POST"); ?> <input type="hidden" name="siguran" value="da"> <input type="submit" value=" Potvrda "> </form> <?php return; } ispis_studenta_sa_predmeta($osoba, $predmet, $ag); nicemessage("Student ispisan sa predmeta {$naziv_predmeta}"); zamgerlog("student u{$osoba} manuelno ispisan sa predmeta p{$ponudakursa}", 4); // 4 - audit zamgerlog2("student ispisan sa predmeta (manuelno)", $osoba, intval($predmet), intval($ag)); } // Aktuelna akademska godina if ($_REQUEST['ag'] || $_REQUEST['_lv_column_akademska_godina']) { $ak_god = intval($_REQUEST['ag']); if ($_REQUEST['_lv_column_akademska_godina']) { $ak_god = intval($_REQUEST['_lv_column_akademska_godina']); } $q2005 = myquery("select naziv from akademska_godina where id={$ak_god}"); if (mysql_num_rows($q2005) < 1) { biguglyerror("Nepoznata akademska godina"); return; } $naziv_ag = mysql_result($q2005, 0, 0); } else { $q2010 = myquery("select id, naziv from akademska_godina where aktuelna=1"); $ak_god = mysql_result($q2010, 0, 0); $naziv_ag = mysql_result($q2010, 0, 1); } $q2020 = myquery("select studij, semestar, plan_studija from student_studij where student={$osoba} and akademska_godina={$ak_god} order by semestar desc"); if (mysql_num_rows($q2020) > 0) { $studij = mysql_result($q2020, 0, 0); $semestar = mysql_result($q2020, 0, 1); $q2025 = myquery("select naziv from studij where id={$studij}"); $naziv_studija = mysql_result($q2025, 0, 0); print "<p>Student trenutno ({$naziv_ag}) upisan na {$naziv_studija}, {$semestar}. semestar.</p>\n"; // Upozorenje! if (mysql_result($q2020, 0, 2) > 0) { print "<p><b>Napomena:</b> Student je već upisan na sve predmete koje je trebao slušati po odabranom planu studija!<br/> Koristite ovu opciju samo za izuzetke / odstupanja od plana ili u slučaju grešaka u radu Zamgera.<br/>U suprotnom, može se desiti da student nema adekvatan broj ECTS kredita ili da sluša izborni predmet<br/>koji ne bi smio slušati.</p>\n"; } } else { // Student trenutno nije upisan nigdje... biramo zadnji studij koji je slušao if ($spisak == 0) { $spisak = 1; } $q2030 = myquery("select studij, semestar, akademska_godina from student_studij where student={$osoba} order by akademska_godina desc limit 1"); if (mysql_num_rows($q2030) > 0) { $studij = mysql_result($q2030, 0, 0); $ag_studija = mysql_result($q2030, 0, 2); $q2040 = myquery("select naziv from studij where id={$studij}"); $naziv_studija = mysql_result($q2040, 0, 0); $q2050 = myquery("select naziv from akademska_godina where id={$ag_studija}"); if ($ag_studija > $ak_god) { print "<p>Student nije bio upisan u odabranoj akademskoj godini ({$naziv_ag}), ali je upisan na studij {$naziv_studija}, " . mysql_result($q2030, 0, 0) . ". semestar, akademske " . mysql_result($q2050, 0, 0) . " godine.</p>\n"; } else { print "<p>Student trenutno ({$naziv_ag}) nije upisan na fakultet! Posljednji put slušao {$naziv_studija}, " . mysql_result($q2030, 0, 0) . ". semestar, akademske " . mysql_result($q2050, 0, 0) . " godine.</p>\n"; } } else { // Nikada nije bio student? $studij = 0; if ($spisak < 2) { $spisak = 2; } print "<p>Osoba nikada nije bila naš student!</p>\n"; } } // Opcije za spisak predmeta $s0 = $spisak == 0 ? "CHECKED" : ""; $s1 = $spisak == 1 ? "CHECKED" : ""; $s2 = $spisak == 2 ? "CHECKED" : ""; unset($_REQUEST['subakcija']); // da se ne bi ponovila ?> <?php echo genform("GET"); ?> Akademska godina: <?php echo db_dropdown("akademska_godina", $ak_god); ?> <br> <input type="radio" name="spisak" value="0" <?php echo $s0; ?> > Prikaži predmete sa izabranog studija i semestra<br/> <input type="radio" name="spisak" value="1" <?php echo $s1; ?> > Prikaži predmete sa svih semestara<br/> <input type="radio" name="spisak" value="2" <?php echo $s2; ?> > Prikaži predmete sa drugih studija<br/> <input type="submit" value=" Kreni "></form><br><br> <?php // Ispis svih predmeta na studiju semestru je funkcija, pošto pozivanje unutar petlje ovisi o nivou spiska function dajpredmete($studij, $semestar, $student, $ag, $spisak) { $q2100 = myquery("select pk.id, p.id, p.naziv, pk.obavezan from ponudakursa as pk, predmet as p where pk.studij={$studij} and pk.semestar={$semestar} and pk.akademska_godina={$ag} and pk.predmet=p.id order by p.naziv"); while ($r2100 = mysql_fetch_row($q2100)) { $ponudakursa = $r2100[0]; $predmet = $r2100[1]; $predmet_naziv = $r2100[2]; print "<li>{$predmet_naziv}"; if ($r2100[3] != 1) { print " (izborni)"; } // Da li je upisan? // Zbog mogućih bugova, prvo gledamo da li je upisan... $q2120 = myquery("select count(*) from student_predmet where student={$student} and predmet={$ponudakursa}"); if (mysql_result($q2120, 0, 0) > 0) { print " - <a href=\"?sta=studentska/osobe&akcija=predmeti&osoba={$student}&subakcija=ispisi&ponudakursa={$ponudakursa}&spisak={$spisak}&ag={$ag}\">ispiši</a></li>\n"; } else { // Da li je položen? $q2110 = myquery("select count(*) from konacna_ocjena where student={$student} and predmet={$predmet} and ocjena>5"); if (mysql_result($q2110, 0, 0) > 0) { print " - položen</li>\n"; } else { print " - <a href=\"?sta=studentska/osobe&akcija=predmeti&osoba={$student}&subakcija=upisi&ponudakursa={$ponudakursa}&spisak={$spisak}&ag={$ag}\">upiši</a></li>\n"; } } } } // function dajpredmete // Ispis predmeta if ($spisak == 0) { print "<b>{$naziv_studija}, {$semestar}. semestar</b>\n<ul>\n"; dajpredmete($studij, $semestar, $osoba, $ak_god, $spisak); print "</ul>\n"; } else { if ($spisak == 1) { // Broj semestara? $q2060 = myquery("select ts.trajanje from studij as s, tipstudija as ts where s.id={$studij} and s.tipstudija=ts.id"); for ($s = 1; $s <= mysql_result($q2060, 0, 0); $s++) { if ($s == $semestar) { print "<b>{$naziv_studija}, {$s}. semestar</b>\n<ul>\n"; } else { print "{$naziv_studija}, {$s}. semestar\n<ul>\n"; } dajpredmete($studij, $s, $osoba, $ak_god, $spisak); print "</ul>\n"; } } else { if ($spisak == 2) { // Svi studiji $q2070 = myquery("select s.id, s.naziv, ts.trajanje from studij as s, tipstudija as ts where s.tipstudija=ts.id and ts.moguc_upis=1 order by ts.ciklus, s.naziv"); while ($r2070 = mysql_fetch_row($q2070)) { $stud = $r2070[0]; $stud_naziv = $r2070[1]; $stud_trajanje = $r2070[2]; if ($stud == $studij) { print "<b>{$stud_naziv}</b>\n<ul>\n"; } else { print "{$stud_naziv}\n<ul>\n"; } for ($s = 1; $s <= $stud_trajanje; $s++) { if ($stud == $studij && $s == $semestar) { print "<b>{$s}. semestar</b>\n<ul>\n"; } else { print "{$s}. semestar\n<ul>\n"; } dajpredmete($stud, $s, $osoba, $ak_god, $spisak); print "</ul>\n"; } print "</ul>\n"; } } } } } else { if ($akcija == "izbori") { if ($_POST['subakcija'] == "novi" && check_csrf_token()) { $zvanje = intval($_POST['_lv_column_zvanje']); $datum_izbora = mktime(0, 0, 0, intval($_POST['izbormonth']), intval($_POST['izborday']), intval($_POST['izboryear'])); $datum_isteka = mktime(0, 0, 0, intval($_POST['istekmonth']), intval($_POST['istekday']), intval($_POST['istekyear'])); // Ove vrijednosti moraju biti ovakve if ($datum_izbora == mktime(0, 0, 0, 1, 1, 1990)) { $datum_izbora = 0; } if ($datum_isteka == mktime(0, 0, 0, 1, 1, 1990)) { $datum_isteka = 0; } $oblast = intval($_POST['_lv_column_oblast']); $podoblast = intval($_POST['_lv_column_podoblast']); if ($_POST['dopunski']) { $dopunski = 1; } else { $dopunski = 0; } if ($_POST['druga_institucija']) { $drugainst = 1; } else { $drugainst = 0; } if ($_POST['neodredjeno']) { $sqlisteka = "'2999-01-01'"; } else { $sqlisteka = "FROM_UNIXTIME({$datum_isteka})"; } $q3030 = myquery("insert into izbor set osoba={$osoba}, zvanje={$zvanje}, datum_izbora=FROM_UNIXTIME({$datum_izbora}), datum_isteka={$sqlisteka}, oblast={$oblast}, podoblast={$podoblast}, dopunski={$dopunski}, druga_institucija={$drugainst}"); zamgerlog("dodani podaci o izboru za u{$osoba}", 2); } if ($_POST['subakcija'] == "izmjena" && check_csrf_token()) { $izvanje = intval($_POST['_lv_column_zvanje']); $idatum_izbora = mktime(0, 0, 0, intval($_POST['izbormonth']), intval($_POST['izborday']), intval($_POST['izboryear'])); $idatum_isteka = mktime(0, 0, 0, intval($_POST['istekmonth']), intval($_POST['istekday']), intval($_POST['istekyear'])); // Ove vrijednosti moraju biti ovakve if ($idatum_izbora == mktime(0, 0, 0, 1, 1, 1990)) { $idatum_izbora = 0; } if ($idatum_isteka == mktime(0, 0, 0, 1, 1, 1990)) { $idatum_isteka = 0; } $ioblast = intval($_POST['_lv_column_oblast']); $ipodoblast = intval($_POST['_lv_column_podoblast']); if ($_POST['dopunski']) { $idopunski = 1; } else { $idopunski = 0; } if ($_POST['druga_institucija']) { $idrugainst = 1; } else { $idrugainst = 0; } if ($_POST['neodredjeno']) { $isqlisteka = "'2999-01-01'"; } else { $isqlisteka = "FROM_UNIXTIME({$idatum_isteka})"; } // Bice azurirano prilikom ispisa... } $broj_izbora = intval($_REQUEST['broj_izbora']); $q3000 = myquery("select ime, prezime from osoba where id={$osoba}"); $imeprezime = mysql_result($q3000, 0, 0) . " " . mysql_result($q3000, 0, 1); ?> <h3>Izbor nastavnika u zvanja</h3> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=edit">Nazad na podatke o osobi <?php echo $imeprezime; ?> </a></p> <p> </p> <?php $t_zvanje = $t_datumiz = $t_datumis = $t_oblast = $t_podoblast = $t_dopunski = 0; $ispis = ""; $q3010 = myquery("select zvanje, UNIX_TIMESTAMP(datum_izbora), UNIX_TIMESTAMP(datum_isteka), oblast, podoblast, dopunski, druga_institucija from izbor WHERE osoba={$osoba} order by datum_isteka, datum_izbora"); if (mysql_num_rows($q3010) == 1 && $broj_izbora != -1) { $broj_izbora = 1; } // Ako postoji samo jedan izbor, editujemo ga; -1 znači ipak dodavanje novog for ($i = 1; $i <= mysql_num_rows($q3010); $i++) { $zvanje = mysql_result($q3010, $i - 1, 0); $datumiz = mysql_result($q3010, $i - 1, 1); $datumis = mysql_result($q3010, $i - 1, 2); $oblast = mysql_result($q3010, $i - 1, 3); $podoblast = mysql_result($q3010, $i - 1, 4); $dopunski = mysql_result($q3010, $i - 1, 5); $drugainst = mysql_result($q3010, $i - 1, 6); $q3020 = myquery("select naziv from zvanje where id={$zvanje}"); $nzvanje = mysql_result($q3020, 0, 0); $ndatumiz = date("d. m. Y", $datumiz); if ($datumiz == 0) { $ndatumiz = "nepoznato"; } $ndatumis = date("d. m. Y", $datumis); if ($datumis == 0) { $ndatumis = "neodređeno"; } if ($i == $broj_izbora) { $t_zvanje = $zvanje; $t_datumiz = $datumiz; $t_datumis = $datumis; $t_oblast = $oblast; $t_podoblast = $podoblast; $t_dopunski = $dopunski; $t_drugainst = $drugainst; if ($datumis == 0) { $t_neodredjeno = 1; } else { $t_neodredjeno = 0; } if ($_POST['subakcija'] == "izmjena" && check_csrf_token()) { $q3040 = myquery("update izbor set zvanje={$izvanje}, datum_izbora=FROM_UNIXTIME({$idatum_izbora}), datum_isteka={$isqlisteka}, oblast={$ioblast}, podoblast={$ipodoblast}, dopunski={$idopunski}, druga_institucija={$idrugainst} WHERE zvanje={$zvanje} and UNIX_TIMESTAMP(datum_izbora)={$datumiz} and UNIX_TIMESTAMP(datum_isteka)={$datumis} and oblast={$oblast} and podoblast={$podoblast} and dopunski={$dopunski} and druga_institucija={$drugainst}"); zamgerlog("azurirani podaci o izboru za u{$osoba}", 2); zamgerlog2("azurirani podaci o izboru", $osoba); $t_zvanje = $izvanje; $t_datumiz = $idatum_izbora; $t_datumis = $idatum_isteka; $t_oblast = $ioblast; $t_podoblast = $ipodoblast; $t_dopunski = $idopunski; $t_drugainst = $idrugainst; $q3020 = myquery("select naziv from zvanje where id={$izvanje}"); $nzvanje = mysql_result($q3020, 0, 0); $ndatumiz = date("d. m. Y", $t_datumiz); if ($t_datumiz == 0) { $ndatumiz = "nepoznato"; } $ndatumis = date("d. m. Y", $t_datumis); if ($t_datumis == 0) { $ndatumis = "neodređeno"; } } $ispis .= "<br/>* {$nzvanje} ({$ndatumiz} - {$ndatumis})\n"; } else { $ispis .= "<br/>* <a href=\"?sta=studentska/osobe&osoba={$osoba}&akcija=izbori&broj_izbora={$i}\">{$nzvanje} ({$ndatumiz} - {$ndatumis})</a>\n"; } } if (mysql_num_rows($q3010) > 0) { ?> <p><b>Historija izbora:</b> <?php echo $ispis; ?> </p> <?php } if ($broj_izbora < 1) { ?> <p><b>Unos novog izbora:</b></p> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="novi"> <?php } else { ?> <p><b>Izmjena podataka o izboru:</b></p> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="izmjena"> <?php } ?> <table border="0"><tr> <td>Zvanje:</td> <td><?php echo db_dropdown("zvanje", $t_zvanje); ?> </td> </tr><tr> <td>Datum izbora:</td> <td><?php echo datectrl(date("d", $t_datumiz), date("m", $t_datumiz), date("Y", $t_datumiz), "izbor"); ?> </td> </tr><tr> <td valign="top">Datum isteka:</td> <td><input type="checkbox" name="neodredjeno" <?php if ($t_neodredjeno == 1) { print "CHECKED"; } ?> > Neodređeno<br/> <?php echo datectrl(date("d", $t_datumis), date("m", $t_datumis), date("Y", $t_datumis), "istek"); ?> </td> </tr><tr> <td>Oblast:</td> <td><?php echo db_dropdown("oblast", $t_oblast, "--Nepoznato--"); ?> </td> </tr><tr> <td>Podoblast:</td> <td><?php echo db_dropdown("podoblast", $t_podoblast, "--Nepoznato--"); ?> </td> </tr><tr> <td colspan="2"><input type="checkbox" name="dopunski" <?php if ($t_dopunski == 1) { print "CHECKED"; } ?> > Dopunski radni odnos</td> </tr><tr> <td colspan="2"><input type="checkbox" name="druga_institucija" <?php if ($t_drugainst == 1) { print "CHECKED"; } ?> > Biran/a na drugoj VŠO</td> </tr> </table> <input type="submit" value=" Pošalji "> </form> <?php if ($broj_izbora > 0) { ?> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=izbori&broj_izbora=-1">Kliknite ovdje za unos novog izbora</a></p> <?php } } else { if ($akcija == "edit") { $pretraga = my_escape($_REQUEST['search']); $ofset = my_escape($_REQUEST['offset']); ?> <a href="?sta=studentska/osobe&search=<?php echo $pretraga; ?> &offset=<?php echo $ofset; ?> ">Nazad na rezultate pretrage</a><br/><br/><?php // Prvo odredjujemo aktuelnu akademsku godinu - ovaj upit se dosta koristi kasnije $q210 = myquery("select id,naziv from akademska_godina where aktuelna=1 order by id desc"); if (mysql_num_rows($q210) < 1) { // Nijedna godina nije aktuelna - ali mora postojati barem jedna u bazi $q210 = myquery("select id,naziv from akademska_godina order by id desc"); } $id_ak_god = mysql_result($q210, 0, 0); $naziv_ak_god = mysql_result($q210, 0, 1); // Posto se id_ak_god moze promijeniti.... CLEANUP!!! $orig_iag = $id_ak_god; // ======= SUBMIT AKCIJE ========= // Promjena korisničkog pristupa i pristupnih podataka if ($_POST['subakcija'] == "auth" && check_csrf_token()) { $login = my_escape(trim($_REQUEST['login'])); $login_ldap = ldap_escape(trim($_REQUEST['login'])); $stari_login = my_escape($_REQUEST['stari_login']); $password = my_escape($_REQUEST['password']); $aktivan = intval($_REQUEST['aktivan']); if ($login == "") { niceerror("Ne možete postaviti prazan login"); } else { if ($stari_login == "") { // Provjeravamo LDAP? if ($conf_system_auth == "ldap") { do { // Simuliramo GOTO... // Tražimo ovaj login na LDAPu... $ds = ldap_connect($conf_ldap_server); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); if (!ldap_bind($ds)) { zamgerlog("Ne mogu se spojiti na LDAP server", 3); // 3 - greska zamgerlog2("ne mogu se spojiti na LDAP server"); niceerror("Ne mogu se spojiti na LDAP server - nastavljam dalje bez provjere"); break; } $sr = ldap_search($ds, "", "uid={$login_ldap}", array()); if (!$sr) { zamgerlog("ldap_search() nije uspio.", 3); zamgerlog2("ldap_search() nije uspio."); niceerror("ldap_search() nije uspio - nastavljam dalje bez provjere"); break; } $results = ldap_get_entries($ds, $sr); if ($results['count'] > 0) { nicemessage("Login '{$login}' pronađen na LDAP serveru"); break; } // Pokušavamo mail alias $sr = ldap_search($ds, "", "mail={$login_ldap}{$conf_ldap_domain}", array()); if (!$sr) { zamgerlog("ldap_search() 2 nije uspio.", 3); zamgerlog2("ldap_search() nije uspio."); niceerror("ldap_search() nije uspio - nastavljam dalje bez provjere"); break; } $results = ldap_get_entries($ds, $sr); // pretpostavka je da će druga pretraga raditi if ($results['count'] > 0) { nicemessage("Email '{$login}{$conf_ldap_domain}' pronađen na LDAP serveru"); } else { zamgerlog("login ne postoji na LDAPu ({$login})", 3); zamgerlog2("login ne postoji na LDAPu", 0, 0, 0, $login); niceerror("Predloženi login ({$login}) nije pronađen na LDAP serveru!"); print "<p>Nastaviću dalje sa dodavanjem logina, ali korisnik vjerovatno neće moći pristupiti Zamgeru.</p>"; } } while (false); } // Dodavanje novog logina $q120 = myquery("insert into auth set id={$osoba}, login='******', password='******', aktivan={$aktivan}"); nicemessage("Uspješno kreiran novi login za korisnika"); zamgerlog("dodan novi login '{$login}' za korisnika u{$osoba}", 4); zamgerlog2("dodan novi login za korisnika", $osoba, 0, 0, $login); } else { // Izmjena starog logina $q123 = myquery("select count(*) from auth where id={$osoba} and login='******'"); if (mysql_result($q123, 0, 0) < 1) { niceerror("Nije pronađen login... molimo pokušajte ponovo"); zamgerlog("nije pronadjen stari login '{$stari_login}' za korisnika u{$osoba}", 3); zamgerlog2("nije pronadjen stari login za korisnika", $osoba); } else { if ($_REQUEST['brisanje'] == " Obriši ") { $q125 = myquery("delete from auth where id={$osoba} and login='******'"); nicemessage("Uspješno obrisan login '{$stari_login}'"); zamgerlog("obrisan login '{$stari_login}' za korisnika u{$osoba}", 4); zamgerlog2("obrisan login za korisnika", $osoba, 0, 0, $stari_login); } else { $q127 = myquery("update auth set login='******', password='******', aktivan={$aktivan} where id={$osoba} and login='******'"); nicemessage("Uspješno izmijenjen login '{$login}'"); zamgerlog("izmijenjen login '{$stari_login}' u '{$login}' za korisnika u{$osoba}", 4); zamgerlog2("izmijenjen login za korisnika", $osoba, 0, 0, $login); } } } } } // if ($_REQUEST['subakcija'] == "auth") // Pojednostavljena promjena podataka za studentsku službu u slučaju korištenja // eksterne baze korisnika if ($_POST['subakcija'] == "auth_ldap" && check_csrf_token()) { $aktivan = intval($_REQUEST['aktivan']); // Postoji li zapis u tabeli auth? $q103 = myquery("select count(*) from auth where id={$osoba}"); if (mysql_result($q103, 0, 0) > 0) { // Da! // Ako isključujemo pristup, stavljamo aktivan na 0 if ($aktivan != 0) { $q105 = myquery("update auth set aktivan=0 where id={$osoba}"); zamgerlog("ukinut login za korisnika u{$osoba} (ldap)", 4); zamgerlog2("ukinut login za korisnika (ldap)", $osoba); } else { $q105 = myquery("update auth set aktivan=1 where id={$osoba}"); zamgerlog("aktiviran login za korisnika u{$osoba} (ldap)", 4); zamgerlog2("aktiviran login za korisnika (ldap)", $osoba); } } else { if ($aktivan != 0) { // Nema zapisa u tabeli auth // Ako je izabrano isključenje pristupa, ne radimo nista // (ne bi se smjelo desiti) // U suprotnom kreiramo login // predloženi login $suggest_login = gen_ldap_uid($osoba); // Tražimo ovaj login na LDAPu... $ds = ldap_connect($conf_ldap_server); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); if (!ldap_bind($ds)) { zamgerlog("Ne mogu se spojiti na LDAP server", 3); // 3 - greska zamgerlog2("ne mogu se spojiti na LDAP server"); niceerror("Ne mogu se spojiti na LDAP server"); return; } $sr = ldap_search($ds, "", "uid={$suggest_login}", array()); if (!$sr) { zamgerlog("ldap_search() nije uspio.", 3); zamgerlog2("ldap_search() nije uspio."); niceerror("ldap_search() nije uspio."); return; } $results = ldap_get_entries($ds, $sr); if ($results['count'] < 1) { zamgerlog("login ne postoji na LDAPu ({$suggest_login})", 3); zamgerlog2("login ne postoji na LDAPu", 0, 0, 0, $suggest_login); niceerror("Predloženi login ({$suggest_login}) nije pronađen na LDAP serveru!"); print "<p>Da li ste uspravno unijeli broj indeksa, ime i prezime? Ako jeste, kontaktirajte administratora!</p>"; // Nastavljamo dalje sa edit akcijom kako bi studentska mogla popraviti podatke } else { // Dodajemo login, ako nije podešen $q110 = myquery("select login, aktivan from auth where id={$osoba}"); if (mysql_num_rows($q110) == 0) { $q111 = myquery("insert into auth set id={$osoba}, login='******', aktivan=1"); zamgerlog("kreiran login za korisnika u{$osoba} (ldap - upis u tabelu)", 4); zamgerlog2("kreiran login za korisnika (ldap - upis u tabelu)", $osoba); } else { if (mysql_result($q110, 0, 0) == "") { $q112 = myquery("update auth set login='******' where id={$osoba}"); zamgerlog("kreiran login za korisnika u{$osoba} (ldap - postavljeno polje login)", 4); zamgerlog2("kreiran login za korisnika (ldap - postavljeno polje login)", $osoba); } if (mysql_result($q110, 0, 1) == 0) { $q113 = myquery("update auth set aktivan=1 where id={$osoba}"); zamgerlog("kreiran login za korisnika u{$osoba} (ldap - aktivan=1)", 4); zamgerlog2("kreiran login za korisnika (ldap - aktivan=1)", $osoba); } } // Generišemo email adresu ako nije podešena $email_adresa = $suggest_login . $conf_ldap_domain; $q115 = myquery("select sistemska from email where osoba={$osoba} and adresa='{$email_adresa}'"); if (mysql_num_rows($q115) < 1) { $q114 = myquery("insert into email set osoba={$osoba}, adresa='{$email_adresa}', sistemska=1"); zamgerlog("dodana sistemska email adresa za u{$osoba}", 2); zamgerlog2("sistemska email adresa dodana", $osoba, intval(mysql_insert_id()), 0, "{$email_adresa}"); } else { if (mysql_result($q115, 0, 0) == 0) { $q114 = myquery("update email set sistemska=1 where email='{$email_adresa}' and osoba={$osoba}"); zamgerlog("email adresa proglasena za sistemsku za u{$osoba}", 2); zamgerlog2("email adresa proglasena za sistemsku", $osoba, 0, 0, "{$email_adresa}"); } } } } } // else if ($pristup!=0) } // if ($_REQUEST['subakcija'] == "auth") // Upis studenta na predmet if ($_POST['subakcija'] == "upisi" && check_csrf_token()) { $predmet = intval($_POST['predmet']); if ($predmet == 0) { nicemessage("Niste izabrali predmet"); } else { $q130 = myquery("select count(*) from student_predmet where student={$osoba} and predmet={$predmet}"); if (mysql_result($q130, 0, 0) < 1) { upis_studenta_na_predmet($osoba, $predmet); zamgerlog("student u{$osoba} upisan na predmet p{$predmet}", 4); zamgerlog2("student upisan na predmet (manuelno 2)", $osoba, $predmet); $q136 = myquery("select p.naziv from predmet as p, ponudakursa as pk where pk.id={$predmet} and pk.predmet=p.id"); $naziv_predmeta = mysql_result($q136, 0, 0); nicemessage("Student upisan na predmet {$naziv_predmeta}."); } } } // Dodjela prava nastavniku na predmetu if ($_POST['subakcija'] == "daj_prava" && check_csrf_token()) { $predmet = intval($_POST['predmet']); $q115 = myquery("select naziv from predmet where id={$predmet}"); $naziv_predmeta = mysql_result($q115, 0, 0); $q130 = myquery("replace nastavnik_predmet set nastavnik={$osoba}, predmet={$predmet}, akademska_godina={$id_ak_god}, nivo_pristupa='asistent'"); zamgerlog("nastavniku u{$osoba} data prava na predmetu pp{$predmet} (admin: {$admin_predmeta}, akademska godina: {$id_ak_god})", 4); zamgerlog2("nastavniku data prava na predmetu", $osoba, $predmet, intval($id_ak_god)); nicemessage("Nastavniku su dodijeljena prava na predmetu {$naziv_predmeta}."); print "<p>Kliknite na naziv predmeta na spisku ispod kako biste detaljnije podesili privilegije.</p>"; } // Angažman nastavnika na predmetu if ($_POST['subakcija'] == "angazuj" && check_csrf_token()) { $predmet = intval($_POST['predmet']); $status = intval($_POST['_lv_column_angazman_status']); $angazman_ak_god = intval($_POST['_lv_column_akademska_godina']); $q115 = myquery("select naziv from predmet where id={$predmet}"); $naziv_predmeta = mysql_result($q115, 0, 0); $q130 = myquery("replace angazman set osoba={$osoba}, predmet={$predmet}, akademska_godina={$angazman_ak_god}, angazman_status={$status}"); zamgerlog("nastavnik u{$osoba} angazovan na predmetu pp{$predmet} (status: {$status}, akademska godina: {$id_ak_god})", 4); zamgerlog2("nastavnik angazovan na predmetu", $osoba, $predmet, intval($id_ak_god)); nicemessage("Nastavnik angažovan na predmetu {$naziv_predmeta}."); print "<p>Kliknite na naziv predmeta na spisku ispod kako biste detaljnije podesili privilegije.</p>"; } // Promjena uloga korisnika if ($_POST['subakcija'] == "uloga" && check_csrf_token()) { if (!$user_siteadmin) { niceerror("Nemate pravo na promjenu uloga!"); return; } $korisnik['student'] = $korisnik['nastavnik'] = $korisnik['prijemni'] = $korisnik['studentska'] = $korisnik['siteadmin'] = 0; $q150 = myquery("select privilegija from privilegije where osoba={$osoba}"); while ($r150 = mysql_fetch_row($q150)) { if ($r150[0] == "student") { $korisnik['student'] = 1; } if ($r150[0] == "nastavnik") { $korisnik['nastavnik'] = 1; } if ($r150[0] == "prijemni") { $korisnik['prijemni'] = 1; } if ($r150[0] == "studentska") { $korisnik['studentska'] = 1; } if ($r150[0] == "siteadmin") { $korisnik['siteadmin'] = 1; } } foreach ($korisnik as $privilegija => $vrijednost) { if ($_POST[$privilegija] == "1" && $vrijednost == 0) { $q151 = myquery("insert into privilegije set osoba={$osoba}, privilegija='{$privilegija}'"); zamgerlog("osobi u{$osoba} data privilegija {$privilegija}", 4); zamgerlog2("osobi data privilegija", $osoba, 0, 0, $privilegija); nicemessage("Data privilegija {$privilegija}"); } if ($_POST[$privilegija] != "1" && $vrijednost == 1) { $q151 = myquery("delete from privilegije where osoba={$osoba} and privilegija='{$privilegija}'"); zamgerlog("osobi u{$osoba} oduzeta privilegija {$privilegija}", 4); zamgerlog2("osobi oduzeta privilegija", $osoba, $privilegija); nicemessage("Oduzeta privilegija {$privilegija}"); } } } // Osnovni podaci $q200 = myquery("select ime, prezime, 1, brindexa, UNIX_TIMESTAMP(datum_rodjenja), mjesto_rodjenja, jmbg, drzavljanstvo, adresa, adresa_mjesto, telefon, kanton, strucni_stepen, naucni_stepen, slika from osoba where id={$osoba}"); if (!($r200 = mysql_fetch_row($q200))) { zamgerlog("nepostojeca osoba u{$osoba}", 3); zamgerlog2("nepostojeca osoba", $osoba); niceerror("Nepostojeća osoba!"); return; } $ime = mysql_result($q200, 0, 0); $prezime = mysql_result($q200, 0, 1); $slika = mysql_result($q200, 0, 14); // Pripremam neke podatke za ispis // Ovo nije u istom upitu jer nije pravi FK, podaci ne moraju biti definisani // TODO dodati polje "nedefinisano" u sve tabele, po mogućnosti sa IDom nula $mjesto_rodj = ""; if (mysql_result($q200, 0, 5) != 0) { $q201 = myquery("select naziv from mjesto where id=" . mysql_result($q200, 0, 5)); $mjesto_rodj = mysql_result($q201, 0, 0); } $drzavljanstvo = ""; if (mysql_result($q200, 0, 7) != 0) { $q202 = myquery("select naziv from drzava where id=" . mysql_result($q200, 0, 7)); $drzavljanstvo = mysql_result($q202, 0, 0); } $adresa = mysql_result($q200, 0, 8); if (mysql_result($q200, 0, 9) != 0) { $q203 = myquery("select naziv from mjesto where id=" . mysql_result($q200, 0, 9)); $adresa .= ", " . mysql_result($q203, 0, 0); } $kanton = ""; if (mysql_result($q200, 0, 11) > 0) { $q205 = myquery("select naziv from kanton where id=" . mysql_result($q200, 0, 11)); $kanton = mysql_result($q205, 0, 0); } if (mysql_result($q200, 0, 12) != 0) { $q206 = myquery("select naziv from strucni_stepen where id=" . mysql_result($q200, 0, 12)); $strucni_stepen = mysql_result($q206, 0, 0); } if (mysql_result($q200, 0, 13) != 0) { $q207 = myquery("select naziv from naucni_stepen where id=" . mysql_result($q200, 0, 13)); $naucni_stepen = mysql_result($q207, 0, 0); } // Spisak mailova $q260 = myquery("select adresa from email where osoba={$osoba}"); $email_adrese = ""; while ($r260 = mysql_fetch_row($q260)) { if ($email_adrese !== "") { $email_adrese .= ", "; } $email_adrese .= $r260[0]; } ?> <h2><?php echo $ime; ?> <?php echo $prezime; ?> </h2> <?php if ($slika != "") { print "<img src=\"?sta=common/slika&osoba={$osoba}\"><br/>\n"; } ?> <table border="0" width="600"><tr><td valign="top"> Ime: <b><?php echo $ime; ?> </b><br/> Prezime: <b><?php echo $prezime; ?> </b><br/> Broj indexa (za studente): <b><?php echo mysql_result($q200, 0, 3); ?> </b><br/> JMBG: <b><?php echo mysql_result($q200, 0, 6); ?> </b><br/> <br/> Datum rođenja: <b><?php if (mysql_result($q200, 0, 4)) { print date("d. m. Y.", mysql_result($q200, 0, 4)); } ?> </b><br/> Mjesto rođenja: <b><?php echo $mjesto_rodj; ?> </b><br/> Državljanstvo: <b><?php echo $drzavljanstvo; ?> </b><br/> </td><td valign="top"> Adresa: <b><?php echo $adresa; ?> </b><br/> Kanton: <b><?php echo $kanton; ?> </b><br/> Telefon: <b><?php echo mysql_result($q200, 0, 10); ?> </b><br/> Kontakt e-mail: <b><?php echo $email_adrese; ?> </b><br/> <br/> Stručni stepen: <b><?php echo $strucni_stepen; ?> </b><br/> Naučni stepen: <b><?php echo $naucni_stepen; ?> </b><br/> <br/> ID: <b><?php echo $osoba; ?> </b><br/> <br/> </form> <form action="index.php" method="GET"> <input type="hidden" name="sta" value="common/profil"> <input type="hidden" name="osoba" value="<?php echo $osoba; ?> "> <input type="Submit" value=" Izmijeni "></form></td> </tr></table> <?php // Login&password if ($conf_system_auth == "table" || $user_siteadmin) { print "<p>Korisnički pristup:\n"; $q201 = myquery("select aktivan from auth where id={$osoba} and aktivan=1"); if (mysql_num_rows($q201) < 1) { print "<font color=\"red\">NEMA</font>"; } ?> </p> <table border="0"> <tr> <td>Korisničko ime:</td> <td width="80">Šifra:</td> <td>Aktivan:</td> <td> </td> </tr> <?php $q201 = myquery("select login,password,aktivan from auth where id={$osoba}"); while ($r201 = mysql_fetch_row($q201)) { $login = $r201[0]; $password = $r201[1]; $pristup = $r201[2]; ?> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="auth"> <input type="hidden" name="stari_login" value="<?php echo $login; ?> "> <tr> <td><input type="text" size="10" name="login" value="<?php echo $login; ?> "></td> <td valign="center"><?php if ($conf_system_auth == "ldap") { print "<b>LDAP</b>"; } else { ?> <input type="password" size="10" name="password" value="<?php echo $password; ?> "><?php } ?> </td> <td><input type="checkbox" size="10" name="aktivan" value="1" <?php if ($pristup == 1) { print "CHECKED"; } ?> ></td> <td><input type="Submit" value=" Izmijeni "> <input type="Submit" name="brisanje" value=" Obriši "></td> </tr></form> <?php } ?> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="auth"> <input type="hidden" name="stari_login" value=""> <tr> <td><input type="text" size="10" name="login" value=""></td> <td><?php if ($conf_system_auth == "ldap") { print "<b>LDAP</b>"; } else { ?> <input type="password" size="10" name="password" value=""><?php } ?> </td> <td><input type="checkbox" size="10" name="aktivan" value="1"></td> <td><input type="Submit" value=" Dodaj novi "></td> </tr></form></table> <?php } else { if ($conf_system_auth == "ldap") { $q201 = myquery("select aktivan from auth where id={$osoba} and aktivan=1"); if (mysql_num_rows($q201) > 0) { $pristup = 1; } else { $pristup = 0; } ?> <script language="JavaScript"> function upozorenje(pristup) { document.authforma.pristup.value=pristup; document.authforma.submit(); } </script> <?php echo genform("POST", "authforma"); ?> <input type="hidden" name="subakcija" value="auth_ldap"> <input type="hidden" name="pristup" value=""> </form> <table border="0"> <tr> <td colspan="5">Korisnički pristup: <input type="checkbox" name="aktivan" onchange="javascript:upozorenje('<?php echo $pristup; ?> ');" <?php if ($pristup == 1) { print "CHECKED"; } ?> ></td> </tr></table></form> <?php } } // Uloge korisnika $korisnik_student = $korisnik_nastavnik = $korisnik_prijemni = $korisnik_studentska = $korisnik_siteadmin = 0; print "<p>Tip korisnika: "; $q209 = myquery("select privilegija from privilegije where osoba={$osoba}"); while ($r209 = mysql_fetch_row($q209)) { if ($r209[0] == "student") { print "<b>student,</b> "; $korisnik_student = 1; } if ($r209[0] == "nastavnik") { print "<b>nastavnik,</b> "; $korisnik_nastavnik = 1; } if ($r209[0] == "prijemni") { print "<b>kandidat na prijemnom ispitu,</b> "; $korisnik_prijemni = 1; } if ($r209[0] == "studentska") { print "<b>uposlenik studentske službe,</b> "; $korisnik_studentska = 1; } if ($r209[0] == "siteadmin") { print "<b>administrator,</b> "; $korisnik_siteadmin = 1; } } print "</p>\n"; // Admin dio if ($user_siteadmin) { unset($_REQUEST['student'], $_REQUEST['nastavnik'], $_REQUEST['prijemni'], $_REQUEST['studentska'], $_REQUEST['siteadmin']); ?> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="uloga"> <input type="checkbox" name="student" value="1" <?php if ($korisnik_student == 1) { print "CHECKED"; } ?> > Student <input type="checkbox" name="nastavnik" value="1" <?php if ($korisnik_nastavnik == 1) { print "CHECKED"; } ?> > nastavnik <input type="checkbox" name="prijemni" value="1" <?php if ($korisnik_prijemni == 1) { print "CHECKED"; } ?> > prijemni <input type="checkbox" name="studentska" value="1" <?php if ($korisnik_studentska == 1) { print "CHECKED"; } ?> > studentska <input type="checkbox" name="siteadmin" value="1" <?php if ($korisnik_siteadmin == 1) { print "CHECKED"; } ?> > siteadmin<br/> <input type="submit" value=" Promijeni "> </form> <?php } // STUDENT if ($korisnik_student) { ?> <hr> <h3>STUDENT</h3> <?php // Trenutno upisan na semestar: $q220 = myquery("SELECT s.naziv, ss.semestar, ss.akademska_godina, ag.naziv, s.id, ts.trajanje, ns.naziv, ts.ciklus \n\t\tFROM student_studij as ss, studij as s, akademska_godina as ag, tipstudija as ts, nacin_studiranja as ns \n\t\tWHERE ss.student={$osoba} and ss.studij=s.id and ag.id=ss.akademska_godina and s.tipstudija=ts.id and ss.nacin_studiranja=ns.id \n\t\tORDER BY ag.naziv DESC"); $studij = "0"; $studij_id = $semestar = 0; $puta = 1; // Da li je ikada slusao nesto? $ikad_studij = $ikad_studij_id = $ikad_semestar = $ikad_ak_god = $ikad_ciklus = 0; while ($r220 = mysql_fetch_row($q220)) { if ($r220[2] == $id_ak_god && $r220[1] > $semestar) { //trenutna akademska godina $studij = $r220[0]; $semestar = $r220[1]; $studij_id = $r220[4]; $studij_trajanje = $r220[5]; $nacin_studiranja = "kao {$r220['6']}"; $studij_ciklus = $r220[7]; } else { if ($r220[0] == $studij && $r220[1] == $semestar) { // ponovljeni semestri $puta++; } else { if ($r220[2] > $ikad_ak_god || $r220[2] == $ikad_ak_god && $r220[1] > $ikad_semestar) { $ikad_studij = $r220[0]; $ikad_semestar = $r220[1]; $ikad_ak_god = $r220[2]; $ikad_ak_god_naziv = $r220[3]; $ikad_studij_id = $r220[4]; $ikad_studij_trajanje = $r220[5]; $ikad_ciklus = $r220[7]; } } } } $prepisi_ocjena = ""; if ($ikad_ciklus > 1 || $studij_ciklus > 1) { for ($i = 1; $i <= max($ikad_ciklus, $studij_ciklus); $i++) { $prepisi_ocjena .= "<br><a href=\"?sta=izvjestaj/index2&student={$osoba}&ciklus={$i}\">Samo {$i}. ciklus</a>"; } } // Izvjestaji ?> <div style="float:left; margin-right:10px"> <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/historija&student=<?php echo $osoba; ?> "> <img src="images/32x32/izvjestaj.png" border="0"><br/>Historija</a></td></tr> <tr><td align="center"><a href="?sta=izvjestaj/index2&student=<?php echo $osoba; ?> "> <img src="images/32x32/izvjestaj.png" border="0"><br/>Prepis ocjena</a> <?php echo $prepisi_ocjena; ?> </td></tr> <tr><td align="center"><a href="?sta=izvjestaj/progress&student=<?php echo $osoba; ?> &razdvoji_ispite=0"> <img src="images/32x32/izvjestaj.png" border="0"><br/>Bodovi</a></td></tr> <tr><td align="center"><a href="?sta=izvjestaj/progress&student=<?php echo $osoba; ?> &razdvoji_ispite=1"> <img src="images/32x32/izvjestaj.png" border="0"><br/>Bodovi + nepoloženi ispiti</a></td></tr> </table> </div> <?php // Trenutno slusa studij $nova_ak_god = 0; ?> <p align="left">Trenutno (<b><?php echo $naziv_ak_god; ?> </b>) upisan/a na:<br/> <?php if ($studij == "0") { ?> Nije upisan/a niti u jedan semestar!</p> <?php // Proglasavamo zadnju akademsku godinu koju je slusao za tekucu // a tekucu za novu $nova_ak_god = $id_ak_god; $naziv_nove_ak_god = $naziv_ak_god; if ($ikad_semestar != 0) { // Ako je covjek upisan u buducu godinu, onda je u toku upis if ($ikad_ak_god > $id_ak_god) { $nova_ak_god = $ikad_ak_god; $naziv_nove_ak_god = $ikad_ak_god_naziv; $semestar = $ikad_semestar - 1; // da se ne bi ispisivalo da drugi put sluša } else { $id_ak_god = $ikad_ak_god; $naziv_ak_god = $ikad_ak_god_naziv; $semestar = $ikad_semestar; if ($semestar % 2 != 0) { $semestar++; } // Da ga ne bi pokušavalo upisati u parni semestar } // Zelimo da se provjeri ECTS: $studij = $ikad_studij; $studij_id = $ikad_studij_id; $studij_trajanje = $ikad_studij_trajanje; } else { // Nikada nije slušao ništa - ima li podataka o prijemnom ispitu? $q225 = myquery("select pt.akademska_godina, ag.naziv, s.id, s.naziv from prijemni_termin as pt, prijemni_prijava as pp, akademska_godina as ag, studij as s where pp.osoba={$osoba} and pp.prijemni_termin=pt.id and pt.akademska_godina=ag.id and pp.studij_prvi=s.id order by ag.id desc, pt.id desc limit 1"); if (mysql_num_rows($q225) > 0) { $nova_ak_god = mysql_result($q225, 0, 0); $naziv_nove_ak_god = mysql_result($q225, 0, 1); $novi_studij = mysql_result($q225, 0, 3); $novi_studij_id = mysql_result($q225, 0, 2); } } } else { ?> <b>"<?php echo $studij; ?> "</b>, <?php echo $semestar; ?> . semestar (<?php echo $puta; ?> . put) <?php echo $nacin_studiranja; ?> (<a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=ispis&studij=<?php echo $studij_id; ?> &semestar=<?php echo $semestar; ?> &godina=<?php echo $id_ak_god; ?> ">ispiši sa studija</a>)</p> <?php $q230 = myquery("select id, naziv from akademska_godina where id={$id_ak_god}+1"); if (mysql_num_rows($q230) > 0) { $nova_ak_god = mysql_result($q230, 0, 0); $naziv_nove_ak_god = mysql_result($q230, 0, 1); } } // UPIS U SLJEDEĆU AK. GODINU // Aktivni moduli $modul_uou = $modul_kolizija = 0; foreach ($registry as $r) { if ($r[0] == "student/ugovoroucenju") { $modul_uou = 1; } if ($r[0] == "student/kolizija") { $modul_kolizija = 1; } } if ($nova_ak_god != 0) { // Ne prikazuj podatke o upisu dok se ne kreira nova ak. godina ?> <p>Upis u akademsku <b><?php echo $naziv_nove_ak_god; ?> </b> godinu:<br /> <?php // Da li je vec upisan? $q235 = myquery("select s.naziv, ss.semestar, s.id from student_studij as ss, studij as s where ss.student={$osoba} and ss.studij=s.id and ss.akademska_godina={$nova_ak_god} order by ss.semestar desc"); if (mysql_num_rows($q235) > 0) { $novi_studij = mysql_result($q235, 0, 0); $novi_semestar = mysql_result($q235, 0, 1); $novi_studij_id = mysql_result($q235, 0, 2); if ($novi_semestar <= $semestar && $novi_studij == $studij) { $nputa = $puta + 1; } else { $nputa = 1; } ?> Student je upisan na studij: <b><?php echo $novi_studij; ?> </b>, <?php echo $novi_semestar; ?> . semestar (<?php echo $nputa; ?> . put). (<a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=ispis&studij=<?php echo $novi_studij_id; ?> &semestar=<?php echo $novi_semestar; ?> &godina=<?php echo $nova_ak_god; ?> ">ispiši sa studija</a>)</p><?php } else { // Ima li uslove za upis if ($semestar == 0 && $ikad_semestar == 0) { // Upis na prvu godinu ?> Nemamo podataka da je ovaj student ikada bio upisan na fakultet.</p><?php if ($novi_studij_id) { // Podatak sa prijemnog ?> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $novi_studij_id; ?> &semestar=1&godina=<?php echo $nova_ak_god; ?> ">Upiši studenta na <?php echo $novi_studij; ?> , 1. semestar.</a></p> <?php } else { ?> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $novi_studij_id; ?> &semestar=1&godina=<?php echo $nova_ak_god; ?> ">Upiši studenta na Prvu godinu studija, 1. semestar.</a></p> <?php } } else { if ($studij == "0") { if ($ikad_semestar % 2 == 0) { $ikad_semestar--; } // Trenutno nije upisan na fakultet, ali upisacemo ga ?> <a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $ikad_studij_id; ?> &semestar=<?php echo $ikad_semestar; ?> &godina=<?php echo $nova_ak_god; ?> ">Ponovo upiši studenta na <?php echo $ikad_studij; ?> , <?php echo $ikad_semestar; ?> . semestar.</a></p> <?php } else { if ($semestar % 2 != 0) { // S neparnog na parni ide automatski ?> Student je stekao uslove za upis na "<?php echo $studij; ?> ", <?php echo $semestar + 1; ?> semestar</p> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $studij_id; ?> &semestar=<?php echo $semestar + 1; ?> &godina=<?php echo $nova_ak_god; ?> ">Upiši studenta na "<?php echo $studij; ?> ", <?php echo $semestar + 1; ?> semestar.</a></p> <?php } else { // Upis na neparni semestar - da li je student dao uslov? $ima_uslov = 0; // Tekst za ono što upisuje if ($semestar == $studij_trajanje) { $sta = "sljedeći ciklus studija"; } else { $sta = ""{$studij}", " . ($semestar + 1) . ". semestar"; } // Pokusacemo odrediti uslov na osnovu polozenih predmeta... // Od predmeta koje je slušao, koliko je pao? $q250 = myquery("select distinct pk.predmet, p.ects, pk.semestar, pk.obavezan, p.naziv from ponudakursa as pk, student_predmet as sp, predmet as p where sp.student={$osoba} and sp.predmet=pk.id and pk.semestar<={$semestar} and pk.studij={$studij_id} and pk.predmet=p.id order by pk.semestar"); $ects_pao = $predmeti_pao = $izborni_pao = $nize_godine = $ects_polozio = 0; while ($r250 = mysql_fetch_row($q250)) { $q260 = myquery("select count(*) from konacna_ocjena where student={$osoba} and predmet={$r250['0']}"); if (mysql_result($q260, 0, 0) < 1) { // Predmet se ne može prenijeti preko dvije godine if ($r250[2] < $semestar - 1) { $nize_godine++; } if ($r250[3] == 1) { // Obavezni predmeti se ne smiju pasti! $ects_pao += $r250[1]; $predmeti_pao++; } else { $izborni_pao++; // Za izborne cemo uporediti sumu ECTSova kasnije } } else { $ects_polozio += $r250[1]; } } // USLOV ZA UPIS // Prema aktuelnom zakonu može se prenijeti tačno jedan predmet, bez obzira na ECTS // No za sljedeći ciklus studija se ne može prenijeti ništa if ($semestar == $studij_trajanje && $predmeti_pao == 0 && ($ects_pao + $ects_polozio) % 60 == 0) { // Ako je student pao izborni predmet pa polozio drugi umjesto njega, vazice // ($ects_pao+$ects_polozio)%60==0 // Zato sto ects_pao = obavezni predmeti tako da ostaju samo izborni predmeti $ima_uslov = 1; } else { if ($semestar < $studij_trajanje && $predmeti_pao <= 1) { // Provjeravamo broj nepolozenih izbornih predmeta i razliku ects-ova if ($predmeti_pao == 0 && (60 - ($ects_pao + $ects_polozio) % 60 < 7 || ($ects_pao + $ects_polozio) % 60 == 0) && $nize_godine == 0) { // nema izbornog predmeta sa 7 ili više kredita $ima_uslov = 1; } else { if ($predmeti_pao == 1 && ($ects_pao + $ects_polozio) % 60 == 0 && $nize_godine == 0) { $ima_uslov = 1; } else { if ($nize_godine > 0) { $niza_godina = ($semestar - 2) / 2; $objasnjenje = "nije položen predmet sa {$niza_godina}. godine"; } else { if ($predmeti_pao == 1) { $objasnjenje = "nepoložen jedan obavezan i jedan ili više izborni predmet"; } else { $objasnjenje = "nepoloženo dva ili više izbornih predmeta"; } $objasnjenje .= ", nedostaje " . (60 - $ects_polozio % 60) . " ECTS kredita"; } } } } else { $objasnjenje = $predmeti_pao + $izborni_pao . " nepoloženih predmeta, nedostaje " . (60 - $ects_polozio % 60) . " ECTS kredita"; } } // Konačan ispis if ($ima_uslov) { ?> Student je stekao/la uslove za upis na <?php echo $sta; ?> </p> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $studij_id; ?> &semestar=<?php echo $semestar + 1; ?> &godina=<?php echo $nova_ak_god; ?> ">Upiši studenta na <?php echo $sta; ?> .</a></p> <?php } else { ?> Student <b>NIJE</b> stekao/la uslove za <?php echo $sta; ?> <br/> (<?php echo $objasnjenje; ?> )</p> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $studij_id; ?> &semestar=<?php echo $semestar - 1; ?> &godina=<?php echo $nova_ak_god; ?> ">Ponovo upiši studenta na <?php echo $studij; ?> , <?php echo $semestar - 1; ?> . semestar (<?php echo $puta + 1; ?> . put).</a></p> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $studij_id; ?> &semestar=<?php echo $semestar + 1; ?> &godina=<?php echo $nova_ak_god; ?> ">Upiši studenta na <?php echo $sta; ?> .</a></p> <?php } } } } } // if ($q235... else ... -- nije vec upisan nigdje // Ugovor o učenju if ($modul_uou == 1) { $q270 = myquery("select s.naziv, u.semestar from ugovoroucenju as u, studij as s where u.student={$osoba} and u.akademska_godina={$nova_ak_god} and u.studij=s.id order by u.semestar"); if (mysql_num_rows($q270) > 0) { $nazivstudijauu = $semestaruu = ""; while ($r270 = mysql_fetch_row($q270)) { $nazivstudijauu = $r270[0]; $semestaruu .= $r270[1] . ". "; } ?> <p>Student je popunio/la <b>Ugovor o učenju</b> za <?php echo $nazivstudijauu; ?> , <?php echo $semestaruu; ?> semestar</p> <?php } else { ?> <p>Student NIJE popunio/la <b>Ugovor o učenju</b> za sljedeću akademsku godinu.</p> <?php } } } // if (mysql_num_rows($q230 -- da li postoji ak. god. iza aktuelne? // Kolizija if ($modul_kolizija == 1) { $q280 = myquery("select count(*) from kolizija where student={$osoba} and akademska_godina={$nova_ak_god}"); $ima_koliziju = 0; if (mysql_result($q280, 0, 0) > 0) { $ima_koliziju = $nova_ak_god; } else { // Probavamo i za trenutnu $q280 = myquery("select count(*) from kolizija where student={$osoba} and akademska_godina={$id_ak_god}"); if (mysql_result($q280, 0, 0) > 0) { $ima_koliziju = $id_ak_god; } } if ($ima_koliziju) { // provjeravamo septembar $kolizija_ok = true; $qc = myquery("select distinct predmet from septembar where student={$osoba} and akademska_godina={$ima_koliziju}"); while ($rc = mysql_fetch_row($qc)) { $predmet = $rc[0]; // Da li ima ocjenu? $qd = myquery("select count(*) from konacna_ocjena where student={$osoba} and predmet={$predmet} and ocjena>=6"); if (mysql_result($qd, 0, 0) > 0) { continue; } // Da li ima septembarskog roka? $qe = myquery("select i.id, k.prolaz from ispit as i, komponenta as k where i.akademska_godina=" . ($ima_koliziju - 1) . " and (MONTH(i.datum)=8 or MONTH(i.datum)=9) and (select count(*) from ispitocjene as io where io.ispit=i.id)>0 and i.predmet={$predmet} and i.komponenta=k.id and k.naziv NOT LIKE 'Usmeni%'"); if (mysql_num_rows($qe) == 0) { continue; } // nema $polozio = false; $septembar_razlog = ""; while ($re = mysql_fetch_row($qe)) { $qf = myquery("select ocjena from ispitocjene where ispit={$re['0']} and student={$osoba}"); if (mysql_num_rows($qf) > 0 && mysql_result($qf, 0, 0) >= $re[1]) { $polozio = true; break; } } if (!$polozio) { $kolizija_ok = false; $qg = myquery("select naziv from predmet where id={$predmet}"); $paopredmet = mysql_result($qg, 0, 0); break; } } if ($kolizija_ok) { ?> <p>Student je popunio/la <b>Zahtjev za koliziju</b>. <a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=kolizija&godina=<?php echo $ima_koliziju; ?> ">Kliknite ovdje da potvrdite upis na kolizione predmete.</a></p> <?php } else { ?> <p>Student je popunio/la <b>Zahtjev za koliziju</b> koji je neispravan (nije položio/la <?php echo $paopredmet; ?> ). Potrebno ga je ponovo popuniti.</p> <?php } } } // Upis studenta na pojedinačne predmete ?> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=predmeti">Manuelni upis studenta na predmete / ispis sa predmeta.</a></p> <?php print "\n<div style=\"clear:both\"></div>\n"; } // STUDENT // NASTAVNIK // Akademska godina se promijenila :( CLEANUP $id_ak_god = $orig_iag; $q399 = myquery("select naziv from akademska_godina where id={$id_ak_god}"); $naziv_ak_god = mysql_result($q399, 0, 0); if ($korisnik_nastavnik) { ?> <br/><hr> <h3>NASTAVNIK</h3> <p><b>Podaci o izboru</b></p> <?php // Izbori $q400 = myquery("select z.naziv, UNIX_TIMESTAMP(i.datum_izbora), UNIX_TIMESTAMP(i.datum_isteka), i.oblast, i.podoblast, i.dopunski, i.druga_institucija from izbor as i, zvanje as z WHERE i.osoba={$osoba} and i.zvanje=z.id order by i.datum_isteka DESC, i.datum_izbora DESC"); if (mysql_num_rows($q400) == 0) { print "<p>Nema podataka o izboru.</p>\n"; } else { $datum_izbora = date("d. m. Y", mysql_result($q400, 0, 1)); if (mysql_result($q400, 0, 1) == 0) { $datum_izbora = "<font color=\"red\">(nepoznato)</font>"; } $datum_isteka = date("d. m. Y", mysql_result($q400, 0, 2)); if (mysql_result($q400, 0, 2) == 0) { $datum_isteka = "Neodređeno"; } $oblast = mysql_result($q400, 0, 3); if ($oblast < 1) { $oblast = "<font color=\"red\">(nepoznato)</font>"; } else { $q410 = myquery("select naziv from oblast where id={$oblast}"); if (mysql_num_rows($q410) < 1) { $oblast = "<font color=\"red\">GREŠKA</font>"; } else { $oblast = mysql_result($q410, 0, 0); } } $podoblast = mysql_result($q400, 0, 4); if ($podoblast < 1) { $podoblast = "<font color=\"red\">(nepoznato)</font>"; } else { $q420 = myquery("select naziv from podoblast where id={$podoblast}"); if (mysql_num_rows($q420) < 1) { $podoblast = "<font color=\"red\">GREŠKA</font>"; } else { $podoblast = mysql_result($q420, 0, 0); } } if (mysql_result($q400, 0, 5) == 0) { $radniodnos = "Stalni"; } else { $radniodnos = "Dopunski"; } ?> <table border="0"> <tr><td>Zvanje:</td><td><?php echo mysql_result($q400, 0, 0); ?> </td></tr> <tr><td>Datum izbora:</td><td><?php echo $datum_izbora; ?> </td></tr> <tr><td>Datum isteka:</td><td><?php echo $datum_isteka; ?> </td></tr> <tr><td>Oblast:</td><td><?php echo $oblast; ?> </td></tr> <tr><td>Podoblast:</td><td><?php echo $podoblast; ?> </td></tr> <tr><td>Radni odnos:</td><td><?php echo $radniodnos; ?> </td></tr> <?php if (mysql_result($q400, 0, 6) == 1) { print "<tr><td colspan=\"2\">Biran/a na drugoj VŠO</td></tr>\n"; } ?> </table> <?php } ?> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=izbori">Izmijenite podatke o izboru ili pogledajte historijske podatke</a></p> <?php // Angažman ?> <p><b>Angažman u nastavi (akademska godina <?php echo $naziv_ak_god; ?> )</b></p> <ul> <?php $q430 = myquery("select p.id, p.naziv, angs.naziv, i.kratki_naziv from angazman as a, angazman_status as angs, predmet as p, institucija as i where a.osoba={$osoba} and a.akademska_godina={$id_ak_god} and a.predmet=p.id and a.angazman_status=angs.id and p.institucija=i.id order by angs.id, p.naziv"); if (mysql_num_rows($q430) < 1) { print "<li>Uposlenik nije angažovan niti na jednom predmetu u ovoj godini.</li>\n"; } while ($r430 = mysql_fetch_row($q430)) { print "<li><a href=\"?sta=studentska/predmeti&akcija=edit&predmet={$r430['0']}&ag={$id_ak_god}\">{$r430['1']} ({$r430['3']})</a> - {$r430['2']}</li>\n"; } // Angažman ?> </ul> <p>Angažuj nastavnika na predmetu: <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="angazuj"> <select name="predmet" class="default"><?php $q190 = myquery("select p.id, p.naziv, i.kratki_naziv from predmet as p, ponudakursa as pk, institucija as i where pk.predmet=p.id and pk.akademska_godina={$id_ak_god} and p.institucija=i.id group by p.id order by p.naziv"); while ($r190 = mysql_fetch_row($q190)) { print "<option value=\"{$r190['0']}\">{$r190['1']} ({$r190['2']})</a>\n"; } ?> </select><br/> <?php echo db_dropdown("angazman_status"); ?> <?php echo db_dropdown("akademska_godina", $id_ak_god); ?> <input type="submit" value=" Dodaj "></form></p> <?php // Prava pristupa ?> <p><b>Prava pristupa (akademska godina <?php echo $naziv_ak_god; ?> )</b></p> <ul> <?php $q180 = myquery("select p.id, p.naziv, np.nivo_pristupa, i.kratki_naziv from nastavnik_predmet as np, predmet as p, institucija as i where np.nastavnik={$osoba} and np.predmet=p.id and np.akademska_godina={$id_ak_god} and p.institucija=i.id order by np.nivo_pristupa, p.naziv"); // FIXME: moze li se ovdje izbaciti tabela ponudakursa? studij ili institucija? if (mysql_num_rows($q180) < 1) { print "<li>Nijedan</li>\n"; } while ($r180 = mysql_fetch_row($q180)) { print "<li><a href=\"?sta=studentska/predmeti&akcija=edit&predmet={$r180['0']}&ag={$id_ak_god}\">{$r180['1']} ({$r180['3']})</a>"; if ($r180[2] == "nastavnik") { print " (Nastavnik)"; } else { if ($r180[2] == "super_asistent") { print " (Super asistent)"; } } print "</li>\n"; } ?> </ul> <p>Za prava pristupa na prethodnim akademskim godinama, koristite pretragu na kartici "Predmeti"<br/></p> <?php // Dodjela prava pristupa ?> <p>Dodijeli prava za predmet: <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="daj_prava"> <select name="predmet" class="default"><?php $q190 = myquery("select p.id, p.naziv, i.kratki_naziv from predmet as p, ponudakursa as pk, institucija as i where pk.predmet=p.id and pk.akademska_godina={$id_ak_god} and p.institucija=i.id group by p.id order by p.naziv"); while ($r190 = mysql_fetch_row($q190)) { print "<option value=\"{$r190['0']}\">{$r190['1']} ({$r190['2']})</a>\n"; } ?> </select> <input type="submit" value=" Dodaj "></form></p> <?php } // PRIJEMNI $q600 = myquery("select prijemni_termin, broj_dosjea, nacin_studiranja, studij_prvi, studij_drugi, studij_treci, studij_cetvrti, izasao, rezultat from prijemni_prijava where osoba={$osoba}"); if (mysql_num_rows($q600) > 0) { ?> <br/><hr> <h3>KANDIDAT NA PRIJEMNOM ISPITU</h3> <?php while ($r600 = mysql_fetch_row($q600)) { $q610 = myquery("select ag.id, ag.naziv, UNIX_TIMESTAMP(pt.datum), pt.ciklus_studija from prijemni_termin as pt, akademska_godina as ag where pt.id={$r600['0']} and pt.akademska_godina=ag.id"); ?> <b>Za akademsku <?php echo mysql_result($q610, 0, 1); ?> godinu (<?php echo mysql_result($q610, 0, 3); ?> . ciklus studija), održan <?php echo date("d. m. Y", mysql_result($q610, 0, 2)); ?> </b> <ul><li><?php if ($r600[7] > 0) { print "{$r600['8']} bodova"; } else { print "(nije izašao/la)"; } ?> </li> <li>Broj dosjea: <?php echo $r600[1]; ?> , <?php $q615 = myquery("select naziv from nacin_studiranja where id={$r600['2']}"); if (mysql_num_rows($q615) > 0) { print mysql_result($q615, 0, 0); } else { print "nepoznato"; } for ($i = 3; $i <= 6; $i++) { if ($r600[$i] > 0) { $q620 = myquery("select kratkinaziv from studij where id=" . $r600[$i]); print ", " . mysql_result($q620, 0, 0); } } ?> </li> <?php // Link na upis prikazujemo samo za ovogodišnji prijemni $godina_prijemnog = mysql_result($q610, 0, 0); // $q630 = myquery("select id from akademska_godina where aktuelna=1"); // $nova_ak_god = mysql_result($q630,0,0)+1; // if ($godina_prijemnog==$nova_ak_god) { // Moguće je da se asistent upisuje na 3. ciklus pa je $korisnik_nastavnik==true if (!$korisnik_student) { ?> <li><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $r600[3]; ?> &semestar=1&godina=<?php echo $godina_prijemnog; ?> ">Upiši kandidata na <?php $q630 = myquery("select naziv from studij where id={$r600['3']}"); if (mysql_num_rows($q630) > 0) { print """ . mysql_result($q630, 0, 0) . """; } else { print "prvu godinu studija"; } ?> , 1. semestar, u akademskoj <?php echo mysql_result($q610, 0, 1); ?> godini</a></li> <?php } ?> </ul><?php } $q640 = myquery("select ss.naziv, us.opci_uspjeh, us.kljucni_predmeti, us.dodatni_bodovi, us.ucenik_generacije from srednja_skola as ss, uspjeh_u_srednjoj as us where us.srednja_skola=ss.id and us.osoba={$osoba}"); if (mysql_num_rows($q640) > 0) { ?> <b>Uspjeh u srednjoj školi:</b> <ul> <li>Škola: <?php echo mysql_result($q640, 0, 0); ?> </li> <li>Opći uspjeh: <?php echo mysql_result($q640, 0, 1); ?> . Ključni predmeti: <?php echo mysql_result($q640, 0, 2); ?> . Dodatni bodovi: <?php echo mysql_result($q640, 0, 3); ?> . <?php if (mysql_result($q640, 0, 4) > 0) { print "Učenik generacije."; } ?> </li> </ul> <?php } } ?> </td></tr></table></center><?php // Vanjska tabela } else { $src = my_escape($_REQUEST["search"]); $limit = 20; $offset = intval($_REQUEST["offset"]); // Naucni stepeni $naucni_stepen = array(); $q99 = myquery("select id, titula from naucni_stepen"); while ($r99 = mysql_fetch_row($q99)) { $naucni_stepen[$r99[0]] = $r99[1]; } ?> <p><h3>Studentska služba - Studenti i nastavnici</h3></p> <table width="500" border="0"><tr><td align="left"> <p><b>Pretraži osobe:</b><br/> Unesite dio imena i prezimena ili broj indeksa<br/> <?php echo genform("GET"); ?> <input type="hidden" name="offset" value="0"> <?php /*resetujem offset*/ ?> <input type="text" size="50" name="search" value="<?php if ($src != "sve") { print $src; } ?> "> <input type="Submit" value=" Pretraži "></form> <a href="<?php echo genuri(); ?> &search=sve">Prikaži sve osobe</a><br/><br/> <?php if ($src) { $rezultata = 0; if ($src == "sve") { $q100 = myquery("select count(*) from osoba"); $q101 = myquery("select id, ime, prezime, brindexa, naucni_stepen from osoba order by prezime,ime limit {$offset},{$limit}"); $rezultata = mysql_result($q100, 0, 0); } else { $src = preg_replace("/\\s+/", " ", $src); $src = trim($src); $dijelovi = explode(" ", $src); $query = ""; // Probavamo traziti ime i prezime istovremeno if (count($dijelovi) == 2) { $q100 = myquery("select count(*) from osoba where ime like '%{$dijelovi['0']}%' and prezime like '%{$dijelovi['1']}%'"); $q101 = myquery("select id,ime,prezime,brindexa,naucni_stepen from osoba where ime like '%{$dijelovi['0']}%' and prezime like '%{$dijelovi['1']}%' order by prezime,ime limit {$offset},{$limit}"); if (mysql_result($q100, 0, 0) == 0) { $q100 = myquery("select count(*) from osoba where ime like '%{$dijelovi['1']}%' and prezime like '%{$dijelovi['0']}%'"); $q101 = myquery("select id,ime,prezime,brindexa,naucni_stepen from osoba where ime like '%{$dijelovi['1']}%' and prezime like '%{$dijelovi['0']}%' order by prezime,ime limit {$offset},{$limit}"); } $rezultata = mysql_result($q100, 0, 0); } // Nismo nasli ime i prezime, pokusavamo bilo koji dio if ($rezultata == 0) { foreach ($dijelovi as $dio) { if ($query != "") { $query .= "or "; } $query .= "ime like '%{$dio}%' or prezime like '%{$dio}%' or brindexa like '%{$dio}%' "; if (intval($dio) > 0) { $query .= "or id=" . intval($dio) . " "; } } $q100 = myquery("select count(*) from osoba where ({$query})"); $q101 = myquery("select id,ime,prezime,brindexa,naucni_stepen from osoba where ({$query}) order by prezime,ime limit {$offset},{$limit}"); $rezultata = mysql_result($q100, 0, 0); } // Nismo nasli nista, pokusavamo login if ($rezultata == 0) { $query = ""; foreach ($dijelovi as $dio) { if ($query != "") { $query .= "or "; } $query .= "a.login like '%{$dio}%' "; } $q100 = myquery("select count(*) from osoba as o, auth as a where ({$query}) and a.id=o.id"); $q101 = myquery("select o.id,o.ime,o.prezime,o.brindexa,o.naucni_stepen from osoba as o, auth as a where ({$query}) and a.id=o.id order by o.prezime,o.ime limit {$offset},{$limit}"); $rezultata = mysql_result($q100, 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}\">{$br}</a> "; } } print "<br/>"; } } // else // print "$rezultata rezultata:"; print "<br/>"; print '<table width="100%" border="0">'; $i = $offset + 1; while ($r101 = mysql_fetch_row($q101)) { print "<tr "; if ($i % 2 == 0) { print "bgcolor=\"#EEEEEE\""; } print "><td>{$i}. {$r101['2']} "; if ($r101[4] > 0) { print $naucni_stepen[$r101[4]] . " "; } print $r101[1]; if (intval($r101[3]) > 0) { print " ({$r101['3']})"; } print "</td><td><a href=\"" . genuri() . "&akcija=edit&osoba={$r101['0']}\">Detalji</a></td></tr>"; $i++; } print "</table>"; } ?> <br/> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="novi"> <b>Unesite novu osobu:</b><br/> <table border="0" cellspacing="0" cellpadding="0" width="100%"> <tr><td>Ime<?php if ($conf_system_auth == "ldap") { print " ili login"; } ?> :</td><td>Prezime:</td><td> </td></tr> <tr> <td><input type="text" name="ime" size="15"></td> <td><input type="text" name="prezime" size="15"></td> <td><input type="submit" value=" Dodaj "></td> </tr></table> </form> <?php ?> </td></tr></table> <?php } } } } } } } ?> </td></tr></table></center> <?php }
function admin_log2() { global $userid; global $_lv_; // We use form generators // LOG v2.0 $maxlogins = 20; $stardate = intval($_GET['stardate']); if ($stardate == 0) { $q199 = myquery("select id from log order by id desc limit 1"); $stardate = mysql_result($q199, 0, 0) + 1; } $nivo = intval($_GET['nivo']); if ($nivo < 1) { $nivo = 2; } if ($nivo > 4) { $nivo = 4; } // Pretraga / filtriranje $pretraga = $_REQUEST['pretraga']; if ($pretraga) { $src = preg_replace("/\\s+/", " ", $pretraga); $src = trim($src); $dijelovi = explode(" ", $src); $query = ""; $filterupita = ""; // Probavamo traziti ime i prezime istovremeno if (count($dijelovi) == 2) { $q100 = myquery("select id from osoba where ime like '%{$dijelovi['0']}%' and prezime like '%{$dijelovi['1']}%'"); if (mysql_num_rows($q100) == 0) { $q100 = myquery("select id from osoba where ime like '%{$dijelovi['1']}%' and prezime like '%{$dijelovi['0']}%'"); } $rezultata = mysql_num_rows($q100); } // Nismo nasli ime i prezime, pokusavamo bilo koji dio if ($rezultata == 0) { foreach ($dijelovi as $dio) { if ($query != "") { $query .= "or "; } $query .= "ime like '%{$dio}%' or prezime like '%{$dio}%' or brindexa like '%{$dio}%' "; if (intval($dio) > 0) { $query .= "or id=" . intval($dio) . " "; } } $q100 = myquery("select id from osoba where ({$query})"); $rezultata = mysql_num_rows($q100); } // Nismo nasli nista, pokusavamo login if ($rezultata == 0) { $query = ""; foreach ($dijelovi as $dio) { if ($query != "") { $query .= "or "; } $query .= "a.login like '%{$dio}%' "; } $q100 = myquery("select o.id from osoba as o, auth as a where ({$query}) and a.id=o.id"); $rezultata = mysql_num_rows($q100); } if ($rezultata > 0) { while ($r100 = mysql_fetch_row($q100)) { if ($filterupita != "") { $filterupita .= " OR "; } $filterupita .= "userid={$r100['0']} OR dogadjaj like '%u{$r100['0']}%'"; if ($rezultata == 1) { $nasaokorisnika = $r100[0]; } // najčešće nađemo tačno jednog... } } // Probavamo predmete if ($rezultata == 0) { $q101 = myquery("select id from predmet where naziv like '%{$src}%' or kratki_naziv='{$src}'"); if (mysql_num_rows($q101) > 0) { $pp = mysql_result($q101, 0, 0); if ($filterupita != "") { $filterupita .= " OR "; } $filterupita .= "dogadjaj like '%pp{$pp}%'"; $q102 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet={$pp} and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r102 = mysql_fetch_row($q102)) { $filterupita .= " OR dogadjaj like '%p{$r102['0']}%'"; } } } // Kraj, dodajemo and if ($filterupita != "") { $filterupita = " AND ({$filterupita})"; } } // Izbor nivoa logiranja (JavaScript) ?> <h3>Pregled logova</h3> <p>Izaberite logging nivo:<br/> <?php echo genform("GET"); ?> <table width="100%"><tr> <td><input type="radio" name="nivo" value="1" onchange="document.forms[0].submit()" <?php if ($nivo == 1) { print "CHECKED"; } ?> ><img src="images/16x16/log_info.png" width="16" height="16" align="center"> Posjete stranicama</td> <td><input type="radio" name="nivo" value="2" onchange="document.forms[0].submit()" <?php if ($nivo == 2) { print "CHECKED"; } ?> ><img src="images/16x16/log_edit.png" width="16" height="16" align="center"> Izmjene</td> <td><input type="radio" name="nivo" value="3" onchange="document.forms[0].submit()" <?php if ($nivo == 3) { print "CHECKED"; } ?> ><img src="images/16x16/log_error.png" width="16" height="16" align="center"> Greške</td> <td><input type="radio" name="nivo" value="4" onchange="document.forms[0].submit()" <?php if ($nivo == 4) { print "CHECKED"; } ?> ><img src="images/16x16/log_audit.png" width="16" height="16" align="center"> Kritične izmjene</td> </tr></table> </form> <br/><br/> <center> <form action="index.php" method="GET"> <input type="hidden" name="sta" value="admin/log"> <input type="hidden" name="nivo" value="<?php echo $nivo; ?> "> <input type="text" name="pretraga" size="40" value="<?php echo $pretraga; ?> "> <input type="submit" value=" Traži "> </form> </center> <?php // Skripta daj_stablo se sada nalazi u js/stablo.js, a ukljucena je u index.php // Funkcije koje cachiraju imena korisnika i predmeta function get_user_link($id) { static $users = array(); if (!$users[$id]) { $q20 = myquery("select ime, prezime from osoba where id={$id}"); if (mysql_num_rows($q20) > 0) { $link = "?sta=studentska/osobe&akcija=edit&osoba={$id}"; $users[$id] = "<a href=\"{$link}\" target=\"_new\">" . mysql_result($q20, 0, 0) . " " . mysql_result($q20, 0, 1) . "</a>"; } else { return $id; } } return $users[$id]; } function get_pk_link($id) { static $predmeti = array(); if (!$predmeti[$id]) { $q30 = myquery("select p.id, p.naziv, pk.akademska_godina from ponudakursa as pk, predmet as p where pk.id={$id} and pk.predmet=p.id"); if (mysql_num_rows($q30) > 0) { $predmeti[$id] = "<a href=\"?sta=studentska/predmeti&akcija=edit&predmet=" . mysql_result($q30, 0, 0) . "&ag=" . mysql_result($q30, 0, 2) . "\" target=\"_new\">" . mysql_result($q30, 0, 1) . "</a>"; } else { return $id; } } return $predmeti[$id]; } function get_predmet_link($id) { static $aktuelna_ag = 0; // Aktuelna akademska godina if ($aktuelna_ag == 0) { $q35 = myquery("select id from akademska_godina where aktuelna=1 order by id desc"); $aktuelna_ag = mysql_result($q35, 0, 0); } static $predmeti = array(); if (!$predmeti[$id]) { $q40 = myquery("select naziv from predmet where id={$id}"); if (mysql_num_rows($q40) > 0) { $predmeti[$id] = "<a href=\"?sta=studentska/predmeti&akcija=edit&predmet={$id}&ag={$aktuelna_ag}\" target=\"_new\">" . mysql_result($q40, 0, 0) . "</a>"; } else { return $id; } } return $predmeti[$id]; } function get_predmet_ag_link($predmet, $ag) { static $godine = array(); if (!$godine[$ag]) { $q50 = myquery("select naziv from akademska_godina where id={$ag}"); if (mysql_num_rows($q50) > 0) { $godine[$ag] = mysql_result($q50, 0, 0); } else { return "{$predmet}, {$ag}"; } } static $predmeti = array(); if (!$predmeti[$predmet]) { $q40 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q40) > 0) { $predmeti[$predmet] = mysql_result($q40, 0, 0); } else { return "{$predmet}, {$ag}"; } } return "<a href=\"?sta=studentska/predmeti&akcija=edit&predmet={$predmet}&ag={$ag}\" target=\"_new\">" . $predmeti[$predmet] . " " . $godine[$ag] . "</a>"; } function get_zadaca_link($id, $usr) { $q50 = myquery("select z.naziv,z.predmet,z.akademska_godina, p.naziv from zadaca as z, predmet as p where z.id={$id} and z.predmet=p.id"); if (mysql_num_rows($q50) > 0) { $naziv = mysql_result($q50, 0, 0); if (!preg_match("/\\w/", $naziv)) { $naziv = "[Bez imena]"; } $predmet = mysql_result($q50, 0, 1); $ag = mysql_result($q50, 0, 2); $pnaziv = mysql_result($q50, 0, 3); if (intval($usr) > 0) { $q55 = myquery("select l.id from student_labgrupa as sl, labgrupa as l where sl.student={$usr} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag} order by virtualna"); if (mysql_num_rows($q55) > 0) { $link = "?sta=saradnik/grupa&id=" . mysql_result($q55, 0, 0); } else { $link = "?sta=nastavnik/zadace&predmet={$predmet}&ag={$ag}"; } return "<a href=\"{$link}\" target=\"_blank\">{$naziv} ({$pnaziv})</a>"; } } return "{$id}"; } function get_cas_link($id) { $q70 = myquery("select l.id, p.naziv, l.naziv from cas as c, labgrupa as l, predmet as p where c.id={$id} and c.labgrupa=l.id and l.predmet=p.id"); if (mysql_num_rows($q70) > 0) { $link = "?sta=saradnik/grupa&id=" . mysql_result($q70, 0, 0); $tekst = mysql_result($q70, 0, 2) . " (" . mysql_result($q70, 0, 1) . ")"; return "<a href=\"{$link}\" target=\"_blank\">{$tekst}</a>"; } return "{$id}"; } function get_ispit_link($id) { static $ispiti = array(); if (!$ispiti[$id]) { $q60 = myquery("select p.naziv, k.gui_naziv, i.predmet, i.akademska_godina from ispit as i, predmet as p, komponenta as k where i.id={$id} and i.predmet=p.id and i.komponenta=k.id"); if (mysql_num_rows($q60) > 0) { $link = "?sta=nastavnik/ispiti&predmet=" . mysql_result($q60, 0, 2) . "&ag=" . mysql_result($q60, 0, 3); $tekst = mysql_result($q60, 0, 1) . " (" . mysql_result($q60, 0, 0) . ")"; $ispiti[$id] = "<a href=\"{$link}\" target=\"_blank\">{$tekst}</a>"; } else { return "{$id}"; } } return $ispiti[$id]; } function get_termin($id) { static $termini = array(); if (!$termini[$id]) { $q60 = myquery("select p.naziv, k.gui_naziv, i.predmet, i.akademska_godina, UNIX_TIMESTAMP(it.datumvrijeme) from ispit as i, predmet as p, komponenta as k, ispit_termin as it where it.id={$id} and it.ispit=i.id and i.predmet=p.id and i.komponenta=k.id"); if (mysql_num_rows($q60) > 0) { $link = "?sta=nastavnik/ispiti&predmet=" . mysql_result($q60, 0, 2) . "&ag=" . mysql_result($q60, 0, 3); $tekst = mysql_result($q60, 0, 1) . ", " . date("j.n. H:i", mysql_result($q60, 0, 4)) . " (" . mysql_result($q60, 0, 0) . ")"; $termini[$id] = "<a href=\"{$link}\" target=\"_blank\">{$tekst}</a>"; } else { return "{$id}"; } } return $termini[$id]; } function get_grupa_link($id) { static $grupe = array(); if (!$grupe[$id]) { $q80 = myquery("select p.naziv, l.naziv from labgrupa as l, predmet as p where l.id={$id} and l.predmet=p.id"); if (mysql_num_rows($q80) > 0) { $link = "?sta=saradnik/grupa&id={$id}"; $tekst = mysql_result($q80, 0, 1) . " (" . mysql_result($q80, 0, 0) . ")"; $grupe[$id] = "<a href=\"{$link}\" target=\"_blank\">{$tekst}</a>"; } else { return "{$id}"; } } return $grupe[$id]; } function get_komp_link($id) { static $komponente = array(); if (!$komponente[$id]) { $q70 = myquery("select gui_naziv from komponenta where id={$id}"); if (mysql_num_rows($q70) > 0) { $komponente[$id] = mysql_result($q70, 0, 0); } else { return "{$id}"; } } return $komponente[$id]; } function get_projekat_link($id) { static $projekti = array(); if (!$projekti[$id]) { $q90 = myquery("select p.naziv, p2.naziv, p2.id, p.akademska_godina from projekat as p, predmet as p2 where p.id={$id} and p.predmet=p2.id"); if (mysql_num_rows($q90) > 0) { $link = "?sta=nastavnik/projekti&predmet=" . mysql_result($q90, 0, 2) . "&ag=" . mysql_result($q90, 0, 3) . "&akcija=projektna_stranica&projekat={$id}"; $tekst = mysql_result($q90, 0, 0) . " (" . mysql_result($q90, 0, 1) . ")"; $projekti[$id] = "<a href=\"{$link}\" target=\"_blank\">{$tekst}</a>"; } else { return "{$id}"; } } return $projekti[$id]; } function get_studij($id) { static $studiji = array(); if (!$studiji[$id]) { $q100 = myquery("select naziv from studij where id={$id}"); $studiji[$id] = mysql_result($q100, 0, 0); } return $studiji[$id]; } function get_ag($id) { static $ags = array(); if (!$ags[$id]) { $q110 = myquery("select naziv from akademska_godina where id={$id}"); $ags[$id] = mysql_result($q110, 0, 0); } return $ags[$id]; } function add_string($s1, $s2, $s3) { if ($s1 == "") { return $s3; } return $s1 . $s2 . $s3; } // Glavni upit i petlja $q10 = myquery("SELECT l.id, UNIX_TIMESTAMP(l.vrijeme), l.userid, lm.naziv, l.dogadjaj, ld.opis, ld.nivo, l.objekat1, l.objekat2, l.objekat3 \nFROM log2 AS l, log2_dogadjaj AS ld, log2_modul AS lm \nWHERE l.modul=lm.id AND l.dogadjaj=ld.id AND l.id<{$stardate} and ((ld.nivo>={$nivo} {$filterupita}) or ld.opis='login') \nORDER BY l.id DESC"); $lastlogin = array(); $eventshtml = array(); $logins = 0; $prvidatum = $zadnjidatum = 0; $stardate = 1; while ($r10 = mysql_fetch_row($q10)) { if ($prvidatum == 0) { $prvidatum = $r10[1]; } $zadnjidatum = $r10[1]; $nicedate = " (" . date("d.m.Y. H:i:s", $r10[1]) . ")"; $usr = $r10[2]; // ID korisnika $modul = $r10[3]; $evt_id = $r10[4]; $opis = $r10[5]; // string koji opisuje dogadjaj // ne prikazuj login ako je to jedina stavka, ako je nivo veci od 1 ili ako nema pretrage if ($lastlogin[$usr] == 0 && ($nivo == 1 && $pretraga == "" || $opis != "login")) { $lastlogin[$usr] = $r10[0]; $logins++; if ($logins > $maxlogins) { $stardate = $r10[0] + 1; break; // izlaz iz while } } if ($r10[6] == 1) { $nivoimg = "log_info"; } else { if ($r10[6] == 2) { $nivoimg = "log_edit"; } else { if ($r10[6] == 3) { $nivoimg = "log_error"; } else { if ($r10[6] == 4) { $nivoimg = "log_audit"; } } } } $evt = ""; if ($modul != "") { $evt .= "{$modul}: "; } $evt .= "{$opis}"; $objekti = ""; // Log transformacije opisa if (substr($opis, 0, 14) == "poslana zadaca" || substr($opis, 0, 24) == "greska pri slanju zadace" || $opis == "poslao praznu zadacu" || $opis == "ne postoji fajl za zadacu" || $opis == "zadaca nema toliko zadataka") { $objekti = get_zadaca_link($r10[7], $usr) . ", zadatak {$r10['8']}"; } else { if ($opis == "isteklo vrijeme za slanje zadace" || $opis == "pogresan tip datoteke" || $opis == "student ne slusa predmet za zadacu" || $opis == "nije nastavnik na predmetu za zadacu" || $opis == "ogranicenje na predmet za zadacu" || $opis == "postavka ne postoji" || $opis == "obrisana postavka zadace" || $opis == "smanjen broj zadataka u zadaci" || $opis == "azurirana zadaca" || $opis == "niko nije poslao zadacu" || $opis == "kreiranje arhive zadaca nije uspjelo") { $objekti = get_zadaca_link($r10[7], $usr); } else { if ($opis == "ne postoji attachment" || $opis == "bodovanje zadace" || $opis == "autotestiran student") { $objekti = get_user_link($r10[7]) . ", " . get_zadaca_link($r10[8], $r10[7]) . ", zadatak {$r10['9']}"; } else { if ($opis == "prisustvo azurirano") { $objekti = get_user_link($r10[7]) . ", " . get_cas_link($r10[8]) . ", prisustvo: {$r10['9']}"; } else { if ($opis == "prisustvo - nije nastavnik na predmetu" || $opis == "prisustvo - ima ogranicenje za grupu" || $opis == "registrovan cas") { $objekti = get_cas_link($r10[7]); } else { if ($opis == "student ne slusa predmet" || $opis == "ne postoji moodle ID za predmet" || substr($opis, 0, 25) == "nije saradnik na predmetu" || $opis == "svi projekti su jos otkljucani" || $opis == "nije nastavnik na predmetu" || $opis == "predmet nema virtuelnu grupu" || $opis == "nije definisan tip predmeta" || substr($opis, 0, 22) == "dosegnut limit za broj projekata" || substr($opis, 0, 19) == "projekti zakljucani" || $opis == "nije ni na jednom projektu (odjava)" || $opis == "prekopirane labgrupe" || $opis == "izmijenjeni parametri projekata na predmetu" || $opis == "kreiran tip predmeta") { $objekti = get_predmet_ag_link($r10[7], $r10[8]); } else { if ($opis == "ne postoji komponenta za zadace" || $opis == "promijenjen tip predmeta" || $opis == "nije definisana komponenta za prisustvo" || $opis == "nepostojeca virtualna labgrupa" || $opis == "nije ponudjen predmet") { $objekti = get_predmet_ag_link($r10[7], $r10[8]); } else { if (substr($opis, 0, 17) == "obrisana labgrupa") { $objekti = "{$r10['9']}, " . get_predmet_ag_link($r10[7], $r10[8]); } else { if ($opis == "dodana ocjena" || $opis == "obrisana ocjena" || $opis == "izmjena ocjene" || $opis == "promijenjen datum ocjene" || substr($opis, 0, 27) == "student ispisan sa predmeta" || $opis == "nastavniku data prava na predmetu" || $opis == "nastavnik angazovan na predmetu" || $opis == "nastavniku oduzeta prava na predmetu" || $opis == "nastavnik deangazovan sa predmeta") { $objekti = get_user_link($r10[7]) . ", " . get_predmet_ag_link($r10[8], $r10[9]); } else { if ($opis == "nijedna zadaca nije aktivna" || $opis == "popunjena anketa" || $opis == "odabrana tema za zadacu" || $opis == "ponisten datum za izvoz") { $objekti = get_predmet_link($r10[7]); } else { if ($opis == "student ne slusa ponudukursa") { $objekti = get_pk_link($r10[7]); } else { if ($opis == "kreirao ponudu kursa zbog studenta" || substr($opis, 0, 25) == "student upisan na predmet") { $objekti = get_user_link($r10[7]) . ", " . get_pk_link($r10[8]); } else { if ($opis == "upisan rezultat ispita" || $opis == "izbrisan rezultat ispita" || $opis == "izmjenjen rezultat ispita" || $opis == "ispit - vrijednost > max") { $objekti = get_user_link($r10[7]) . ", " . get_ispit_link($r10[8]); } else { if ($opis == "promijenjen tip ispita" || $opis == "promijenjen datum ispita") { $objekti = get_ispit_link($r10[7]); } else { if ($opis == "kreiran novi ispit") { $objekti = get_ispit_link($r10[7]) . ", " . get_predmet_ag_link($r10[8], $r10[9]); } else { if ($opis == "prijavljen na termin" || $opis == "odjavljen sa termina" || $opis == "izmijenjen ispitni termin") { $objekti = get_termin($r10[7]); } else { if ($opis == "kreiran novi ispitni termin") { $objekti = get_termin($r10[7]); //.", ".get_predmet_ag_link($r10[8], $r10[9]); - sadržano u prethodnom linku } else { if ($opis == "izmjena bodova za fiksnu komponentu") { $objekti = get_user_link($r10[7]) . ", " . get_pk_link($r10[8]) . ", " . get_komp_link($r10[9]); } else { if ($opis == "nije na projektu" || $opis == "dodao link na projektu" || $opis == "uredio link na projektu" || $opis == "obrisao link na projektu" || $opis == "dodao rss feed na projektu" || $opis == "uredio rss feed na projektu" || $opis == "obrisao rss feed na projektu" || $opis == "dodao clanak na projektu" || $opis == "uredio clanak na projektu" || $opis == "obrisao clanak na projektu" || $opis == "dodao fajl na projektu" || $opis == "uredio fajl na projektu" || $opis == "obrisao fajl na projektu" || $opis == "dodao temu na projektu" || $opis == "obrisao post na projektu" || substr($opis, 0, 18) == "projekat zakljucan" || substr($opis, 0, 17) == "projekat popunjen" || $opis == "dodao projekat na predmetu" || $opis == "izmijenio projekat" || $opis == "dodao biljesku na projekat") { $objekti = get_projekat_link($r10[7]); // $objekti = $r10[7]; } else { if ($opis == "student prijavljen na projekat" || $opis == "student prebacen na projekat" || $opis == "student odjavljen sa projekta") { $objekti = get_user_link($r10[7]) . ", " . get_projekat_link($r10[8]); } else { if ($opis == "poslana poruka" || $opis == "osoba nema sliku" || $opis == "nema datoteke za sliku" || $opis == "nepoznat tip slike" || $opis == "citanje fajla za sliku nije uspjelo" || $opis == "nije studentska, a pristupa tudjem izvjestaju" || $opis == "korisnik nikada nije studirao" || $opis == "prihvacen zahtjev za promjenu podataka" || $opis == "odbijen zahtjev za promjenu podataka" || $opis == "korisnik vec postoji u bazi" || $opis == "dodan novi korisnik" || $opis == "promijenjeni licni podaci korisnika" || $opis == "postavljena slika za korisnika" || $opis == "obrisana slika za korisnika" || $opis == "proglasen za studenta") { $objekti = get_user_link($r10[7]); } else { if ($opis == "postavljen broj indeksa" || $opis == "prihvacen zahtjev za koliziju" || $opis == "dodani podaci o izboru" || $opis == "azurirani podaci o izboru" || $opis == "promijenjen email za korisnika" || $opis == "izmjena kandidata za prijemni" || $opis == "novi kandidat za prijemni") { $objekti = get_user_link($r10[7]); } else { if ($opis == "greska prilikom slanja fajla na zavrsni" || $opis == "dodao fajl na zavrsni" || $opis == "azuriran sazetak zavrsnog rada" || $opis == "izmijenio temu zavrsnog rada" || $opis == "dodao biljesku na zavrsni rad" || $opis == "dodana tema zavrsnog rada") { // $objekti = get_zavrsni_link($r10[7]); $objekti = $r10[7]; } else { if (substr($opis, 0, 24) == "student ispisan sa grupe" || substr($opis, 0, 22) == "student upisan u grupu" || $opis == "dodan komentar na studenta" || $opis == "promijenjena grupa studenta") { $objekti = get_user_link($r10[7]) . ", " . get_grupa_link($r10[8]); } else { if ($opis == "preimenovana labgrupa" || $opis == "ima ogranicenje na labgrupu") { $objekti = get_grupa_link($r10[7]); } else { if (substr($opis, 0, 17) == "kreirana labgrupa") { $objekti = get_grupa_link($r10[7]) . ", " . get_predmet_ag_link($r10[8], $r10[9]); } else { if ($opis == "student upisan na studij" || $opis == "pokusao ispisati studenta sa studija koji ne slusa") { $objekti = get_user_link($r10[7]) . ", " . get_studij($r10[8]) . " " . get_ag($r10[9]); } else { // Kreiranje log zapisa if ($r10[7] > 0) { $objekti = add_string($objekti, ", ", $r10[7]); } if ($r10[8] > 0) { $objekti = add_string($objekti, ", ", $r10[8]); } if ($r10[9] > 0) { $objekti = add_string($objekti, ", ", $r10[9]); } } } } } } } } } } } } } } } } } } } } } } } } } } } } $q20 = myquery("SELECT tekst FROM log2_blob WHERE log2={$r10['0']}"); if (mysql_num_rows($q20) > 0) { $objekti = add_string($objekti, ", ", mysql_result($q20, 0, 0)); } if ($objekti !== "") { $evt .= " ({$objekti})"; } $analyze_link = "<a href=\"?sta=admin/log&analyze={$r10['0']}\">*</a>"; /* while (preg_match("/\Wu(\d+)/", $evt, $m)) { // korisnik $evt = str_replace("u$m[1]",get_user_link($m[1]), $evt); $zadnjikorisnik = $m[1]; // Ovo ce omoguciti neke dodatne upite kasnije } while (preg_match("/\Wpp(\d+)/", $evt, $m)) { // predmet $evt = str_replace("pp$m[1]",get_ppredmet_link($m[1]),$evt); } while (preg_match("/\Wp(\d+)/", $evt, $m)) { // ponudakursa $evt = str_replace("p$m[1]",get_predmet_link($m[1]),$evt); } while (preg_match("/\Wg(\d+)/", $evt, $m)) { // labgrupa $q39 = myquery("select naziv from labgrupa where id=$m[1]"); if (mysql_num_rows($q39)>0) { $evt = str_replace("g$m[1]","<a href=\"?sta=saradnik/grupa&id=$m[1]\" target=\"_blank\">".mysql_result($q39,0,0)."</a>",$evt); } else { $evt = str_replace("g$m[1]","$m[1]",$evt); } } while (preg_match("/\Wc(\d+)/", $evt, $m)) { // cas $q40 = myquery("select labgrupa from cas where id=$m[1]"); if (mysql_num_rows($q40)>0) { $link="?sta=saradnik/grupa&id=".mysql_result($q40,0,0); $evt = str_replace("c$m[1]","<a href=\"$link\" target=\"_blank\">$m[1]</a>",$evt); } else { $evt = str_replace("c$m[1]","$m[1]",$evt); } } if (preg_match("/\Wz(\d+)/", $evt, $m)) { // zadaca $q50 = myquery("select naziv,predmet,akademska_godina from zadaca where id=$m[1]"); if (mysql_num_rows($q50)>0) { $naziv=mysql_result($q50,0,0); if (!preg_match("/\w/",$naziv)) $naziv="[Bez imena]"; $predmet=mysql_result($q50,0,1); $ag=mysql_result($q50,0,2); if (intval($usr)>0) { $q55 = myquery("select l.id from student_labgrupa as sl, labgrupa as l where sl.student=$usr and sl.labgrupa=l.id and l.predmet=$predmet and l.akademska_godina=$ag"); if (mysql_num_rows($q55)<1 && $zadnjikorisnik>0) { $q55 = myquery("select l.id from student_labgrupa as sl, labgrupa as l where sl.student=$zadnjikorisnik and sl.labgrupa=l.id and l.predmet=$predmet and l.akademska_godina=$ag"); } if (mysql_num_rows($q55)<1) { $q55 = myquery("select id from labgrupa where predmet=$predmet and akademska_godina=$ag and virtualna=1"); } $link="?sta=saradnik/grupa&id=".mysql_result($q55,0,0); $evt = str_replace("z$m[1]","<a href=\"$link\" target=\"_blank\">$naziv</a>",$evt); } } } while (preg_match("/\Wi(\d+)/", $evt, $m)) { // ispit $q60 = myquery("select k.gui_naziv, i.predmet, p.naziv, i.akademska_godina from ispit as i, komponenta as k, predmet as p where i.id=$m[1] and i.komponenta=k.id and i.predmet=p.id"); if (mysql_num_rows($q60)>0) { $naziv=mysql_result($q60,0,0); if (!preg_match("/\w/",$naziv)) $naziv="[Bez imena]"; $predmet=mysql_result($q60,0,1); $predmetnaziv=mysql_result($q60,0,2); $ag=mysql_result($q60,0,3); $evt = str_replace("i$m[1]","<a href=\"?sta=nastavnik/ispiti&predmet=$predmet&ag=$ag\" target=\"_blank\">$naziv ($predmetnaziv)</a>",$evt); } else { $evt = str_replace("i$m[1]","$m[1]",$evt); } } while (preg_match("/\Wag(\d+)/", $evt, $m)) { // akademska godina $q70 = myquery("select naziv from akademska_godina where id=$m[1]"); if (mysql_num_rows($q70)>0) { $naziv=mysql_result($q70,0,0); $evt = str_replace("ag$m[1]","$naziv",$evt); } else { $evt = str_replace("ag$m[1]","$m[1]",$evt); } } while (preg_match("/\Ws(\d+)/", $evt, $m)) { // studij $q80 = myquery("select naziv from studij where id=$m[1]"); if (mysql_num_rows($q80)>0) { $naziv=mysql_result($q80,0,0); $evt = str_replace("s$m[1]","$naziv",$evt); } else { $evt = str_replace("s$m[1]","$m[1]",$evt); } }*/ // Pošto idemo unazad, login predstavlja kraj zapisa za korisnika if ($opis == "login") { if ($lastlogin[$usr] && $lastlogin[$usr] != 0) { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> login (ID: {$usr}) {$nicedate} {$analyze_link}\n" . $eventshtml[$lastlogin[$usr]]; $lastlogin[$usr] = 0; } } else { if (strstr($evt, " su=")) { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> SU to ID: {$usr} {$nicedate} {$analyze_link}\n" . $eventshtml[$lastlogin[$usr]]; $lastlogin[$usr] = 0; } else { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> " . $evt . $nicedate . " " . $analyze_link . "\n" . $eventshtml[$lastlogin[$usr]]; } } } if ($stardate == 1) { $zadnjidatum = 1; } // Nije doslo do breaka... /* // Insertujem masovni unos ocjena i rezultata ispita if ($rezultata==1) { // Konacne ocjene $q300 = myquery("select predmet, ocjena, UNIX_TIMESTAMP(datum) from konacna_ocjena where student=$nasaokorisnika AND datum>=FROM_UNIXTIME($zadnjidatum) AND datum<=FROM_UNIXTIME($prvidatum)"); while ($r300 = mysql_fetch_row($q300)) { $predmet=$r300[0]; $ocjena=$r300[1]; $datum=$r300[2]; $nicedate = " (".date("d.m.Y. H:i:s", $datum).")"; // Prvo cemo varijantu sa predmetom pa sa ponudom kursa $q310 = myquery("select id from log where dogadjaj='masovno upisane ocjene na predmet pp$predmet' and vrijeme=FROM_UNIXTIME($datum)"); if (mysql_num_rows($q310)>0) { $eventshtml[mysql_result($q310,0,0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovno upisane ocjene na predmet ".get_ppredmet_link($predmet)." (".get_user_link($nasaokorisnika)." dobio: $ocjena)".$nicedate."\n"; } $q320 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet=$predmet and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r320 = mysql_fetch_row($q320)) { $q310 = myquery("select id from log where dogadjaj='masovno upisane ocjene na predmet p$r320[0]' and vrijeme=FROM_UNIXTIME($datum)"); if (mysql_num_rows($q310)>0) { $eventshtml[mysql_result($q310,0,0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovno upisane ocjene na predmet ".get_ppredmet_link($predmet)." (".get_user_link($nasaokorisnika)." dobio: $ocjena)".$nicedate."\n"; } } } // Isto ovo za ispite $q330 = myquery("select i.predmet, io.ocjena, UNIX_TIMESTAMP(i.vrijemeobjave) from ispit as i, ispitocjene as io where io.student=$nasaokorisnika AND io.ispit=i.id AND i.datum>=FROM_UNIXTIME($zadnjidatum) AND i.datum<=FROM_UNIXTIME($prvidatum)"); while ($r330 = mysql_fetch_row($q330)) { $predmet=$r330[0]; $ocjena=$r330[1]; $datum=$r330[2]; // Datum je zaokruzen :( // Prvo cemo varijantu sa predmetom pa sa ponudom kursa $q340 = myquery("select id, vrijeme from log where dogadjaj='masovni rezultati ispita za predmet pp$predmet' and vrijeme=FROM_UNIXTIME($datum)"); if (mysql_num_rows($q340)>0) { $nicedate = " (".date("d.m.Y. H:i:s", mysql_result($q340,0,1)).")"; $eventshtml[mysql_result($q340,0,0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovni rezultati ispita za predmet ".get_ppredmet_link($predmet)." (".get_user_link($nasaokorisnika)." dobio: $ocjena)".$nicedate."\n"; } $q320 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet=$predmet and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r320 = mysql_fetch_row($q320)) { $q340 = myquery("select id, vrijeme from log where dogadjaj='masovni rezultati ispita za predmet p$r320[0]' and vrijeme=FROM_UNIXTIME($datum)"); if (mysql_num_rows($q340)>0) { $nicedate = " (".date("d.m.Y. H:i:s", mysql_result($q340,0,1)).")"; $eventshtml[mysql_result($q340,0,0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovni rezultati ispita za predmet ".get_ppredmet_link($predmet)." (".get_user_link($nasaokorisnika)." dobio: $ocjena)".$nicedate."\n"; } } } krsort($eventshtml); } */ // Dodajemo zaglavlja sa [+] poljem (prebaciti iznad) foreach ($eventshtml as $logid => $event) { if (substr($event, 0, 4) != "<img") { // Login počinje sa <br/> // TODO: optimizovati upite! $q201 = myquery("select userid, UNIX_TIMESTAMP(vrijeme) from log2 where id=" . intval($logid)); $userid = intval(mysql_result($q201, 0, 0)); $nicedate = " (" . date("d.m.Y. H:i:s", mysql_result($q201, 0, 1)) . ")"; if ($userid == 0) { $imeprezime = "ANONIMNI PRISTUPI"; $usrimg = "zad_bug"; } else { $q202 = myquery("select ime, prezime from osoba where id={$userid}"); $imeprezime = mysql_result($q202, 0, 0) . " " . mysql_result($q202, 0, 1); $q203 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='nastavnik'"); $q204 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='studentska'"); $q205 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='siteadmin'"); if (mysql_result($q205, 0, 0) > 0) { $usrimg = "admin"; } else { if (mysql_result($q204, 0, 0) > 0) { $usrimg = "teta"; } else { if (mysql_result($q203, 0, 0) > 0) { $usrimg = "tutor"; } else { $usrimg = "user"; } } } } $link = "?sta=studentska/osobe&akcija=edit&osoba={$userid}"; print "<img src=\"images/plus.png\" width=\"13\" height=\"13\" id=\"img-{$logid}\" onclick=\"daj_stablo('{$logid}')\">\n<img src=\"images/16x16/{$usrimg}.png\" width=\"16\" height=\"16\" align=\"center\">\n<a href=\"{$link}\">{$imeprezime}</a> {$nicedate}\n<div id=\"{$logid}\" style=\"display:none\">\n"; } print "{$event}</div><br/>\n"; } print "<p> </p><p><a href=\"" . genuri() . "&stardate={$stardate}\">Sljedećih {$maxlogins}</a></p>"; }
print "<a href=\"?sta=saradnik/intro\">Spisak predmeta i grupa</a><br/>\n"; } if ($user_studentska && !strstr($sta, "studentska/")) { print "<a href=\"?sta=studentska/intro\">Studentska služba</a><br/>\n"; } if ($user_siteadmin && !strstr($sta, "admin/")) { print "<a href=\"?sta=admin/intro\">Site admin</a><br/>\n"; } if ($user_studentska && !$user_siteadmin && !$user_nastavnik && !$user_student && strstr($sta, "studentska/")) { print "<p> </p>"; } } // Polje sa imenom i linkovima na inbox, profil i odjavu if ($userid > 0) { user_box(); zamgerlog(urldecode(genuri()), 1); // nivo 1 = posjet stranici } // Prikaz modula uglavljenog u template $uspjeh = 1; include "{$sta}.php"; $uspjeh = 2; // Prikaz menija specificnih za odredjene grupe modula if (strstr($sta, "nastavnik/") || strstr($sta, "admin/")) { malimeni("{$staf}();"); } else { if (strstr($sta, "studentska/")) { horizontalni_meni("{$staf}();"); } else { if (strstr($sta, "student/")) { studentski_meni("{$staf}();");
function nastavnik_opterecenje() { global $userid, $user_siteadmin, $user_nastavnik; $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); if (!$user_siteadmin && !$user_nastavnik) { zamgerlog("nastavnik/opterećenje privilegije (predmet pp$predmet)", 3); biguglyerror("Nemate pravo pristupa ovoj opciji"); return; } if (!isset($_REQUEST['opt_svi'])) { $q = myquery("SELECT p.naziv, p.sati_predavanja, p.sati_tutorijala, p.sati_vjezbi " . "FROM predmet p, nastavnik_predmet np " . "WHERE p.id = np.predmet and np.akademska_godina = $ag and np.nastavnik = $userid and p.id=$predmet;"); } else if (intval($_REQUEST['opt_svi']) == 1) { $q = myquery("SELECT p.naziv, p.sati_predavanja, p.sati_tutorijala, p.sati_vjezbi " . "FROM predmet p, nastavnik_predmet np " . "WHERE p.id = np.predmet and np.akademska_godina = $ag and np.nastavnik = $userid;"); } $json = array(); while ($red = mysql_fetch_assoc($q)) { $json[] = $red; } ?> <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.7/css/jquery.dataTables.min.css"> <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> <script src="//cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script> <p> </p> <div style="width: 75%;"> <table id="table_opt" class="display"> <thead> <tr> <th>Predmet</th> <th>Predavanja</th> <th>Tutorijali</th> <th>Vježbe</th> </tr> </thead> <tbody> </tbody> <tfoot> <tr> <th>Ukupno:</th> <th></th> <th></th> <th></th> </tr> </tfoot> </table> </div> <script type="text/javascript"> var table_data = <?php echo json_encode($json); ?> ; $(document).ready(function () { $('#table_opt').DataTable({ data: table_data, columns: [ {data: 'naziv'}, {data: 'sati_predavanja'}, {data: 'sati_tutorijala'}, {data: 'sati_vjezbi'} ], language: { url: "//cdn.datatables.net/plug-ins/1.10.7/i18n/Croatian.json" }, footerCallback: function (row, data, start, end, display) { var tabela = this.api(); if(tabela.column(0).data().length > 1) { var intVal = function (i) { return typeof i === 'string' ? i.replace(/[\$,]/g, '') * 1 : typeof i === 'number' ? i : 0; }; for (var i = 1; i < 4; i++) { var ukupno = tabela .column(i) .data() .reduce(function (a, b) { return intVal(a) + intVal(b); }); $(tabela.column(i).footer()).html(ukupno); } } else $("tfoot").remove(); } }); }); </script> <? if (isset($_REQUEST['opt_svi'])) { $uri = str_replace('&opt_svi=1', '', genuri()); print '<a href="' . $uri . '">Prikaži samo za ovaj predmet</a>'; } else print '<a href="' . genuri() . '&opt_svi=1">Prikaži za sve predmete</a>'; }
function saradnik_komentar() { global $userid, $user_siteadmin; ?> <body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0" bgcolor="#FFFFFF"> <?php $stud_id = intval($_REQUEST['student']); $labgrupa = intval($_REQUEST['labgrupa']); // Da li neko spoofa predmet/studenta? $q10 = myquery("select sl.labgrupa from student_labgrupa as sl where sl.student={$stud_id} and sl.labgrupa={$labgrupa}"); if (mysql_num_rows($q10) < 1) { zamgerlog("student u{$stud_id} nije u labgrupi g{$labgrupa}", 3); zamgerlog2("id studenta i labgrupe ne odgovaraju", $stud_id, $labgrupa); niceerror("Nemate pravo pristupa ovom studentu!"); return; } // Prava pristupa i odredjivanje predmeta if ($user_siteadmin) { $q20 = myquery("select predmet, akademska_godina from labgrupa where id={$labgrupa}"); if (mysql_num_rows($q20) < 1) { zamgerlog("nepoznata labgrupa (labgrupa {$labgrupa} predmet pp{$predmet})", 3); zamgerlog2("nepoznata labgrupa", $labgrupa); niceerror("Nepoznata grupa {$labgrupa}"); return; } } else { $q20 = myquery("select np.predmet, np.akademska_godina from labgrupa as l, nastavnik_predmet as np where l.id={$labgrupa} and l.predmet=np.predmet and l.akademska_godina=np.akademska_godina and np.nastavnik={$userid}"); if (mysql_num_rows($q20) < 1) { zamgerlog("nastavnik nije na predmetu (labgrupa g{$labgrupa})", 3); zamgerlog2("nije saradnik na predmetu", $predmet, $ag); niceerror("Nemate pravo pristupa ovom studentu!"); return; } } $predmet = mysql_result($q20, 0, 0); $ag = mysql_result($q20, 0, 1); // Limit... $q30 = 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($q30) > 0) { $nasao = 0; while ($r30 = mysql_fetch_row($q30)) { if ($r30[0] == $labgrupa) { $nasao = 1; break; } } if ($nasao == 0) { zamgerlog("ogranicenje (labgrupa g{$labgrupa} predmet pp{$predmet})", 3); zamgerlog2("ima ogranicenje na labgrupu", $labgrupa); niceerror("Nemate pravo pristupa ovom studentu!"); return; } } $q40 = myquery("select ime, prezime, brindexa from osoba where id={$stud_id}"); if ($r40 = mysql_fetch_row($q40)) { print "<h3>{$r40['0']} {$r40['1']} ({$r40['2']})</h3>\n"; } else { zamgerlog("nepostojeci student {$stud_id}", 3); zamgerlog2("nepostojeci student", $stud_id); niceerror("Nemate pravo pristupa ovom studentu!"); return; } // Odredjujem ponudukursa koju tabela komentar za sada jos uvijek koristi $q45 = myquery("select pk.id from ponudakursa as pk, student_predmet as sp where sp.student={$stud_id} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); $ponudakursa = mysql_result($q45, 0, 0); // ------------------------ // Akcije // ------------------------ if ($_POST['akcija'] == "dodaj" && check_csrf_token()) { list($h, $m, $s) = explode(":", $_POST['vrijeme']); $datum = date("Y-m-d H:i:s", mktime($h, $m, $s, $_POST['month'], $_POST['day'], $_POST['year'])); $komentar = my_escape($_POST['komentar']); $q50 = myquery("insert into komentar set student={$stud_id}, nastavnik={$userid}, labgrupa={$labgrupa}, predmet={$ponudakursa}, datum='{$datum}', komentar='{$komentar}'"); zamgerlog("dodan komentar na studenta u{$stud_id} labgrupa g{$labgrupa}", 2); zamgerlog2("dodan komentar na studenta", $stud_id, $labgrupa); } if ($_GET['akcija'] == "obrisi") { $id = intval($_GET['id']); $q60 = myquery("delete from komentar where id={$id}"); zamgerlog("obrisan komentar {$id}", 2); zamgerlog2("obrisan komentar", $id); } // Spisak komentara $q70 = myquery("select k.id, a.ime, a.prezime, UNIX_TIMESTAMP(k.datum), k.komentar from komentar as k, osoba as a where k.student={$stud_id} and k.labgrupa={$labgrupa} and k.nastavnik=a.id"); if (mysql_num_rows($q70) < 1) { print "<ul><li>Nijedan komentar nije unesen.</li></ul>\n"; } while ($r70 = mysql_fetch_row($q70)) { $datum = date("d. m. Y. H:i:s", $r70[3]); print "<p><b>{$datum} ({$r70['1']} {$r70['2']}):</b> (<a href=\"" . genuri() . "&akcija=obrisi&id={$r70['0']}\">Obriši</a>)<br/>{$r70['4']}<br/></p>\n"; } // Dodaj komentar ?> <p><hr></p> <p><b>Dodajte komentar:</b><br/> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="dodaj"> Trenutni datum i vrijeme:<br/> <?php echo datectrl(date("d"), date("m"), date("Y")); ?> <input type="text" size="10" name="vrijeme" value="<?php echo date("H:i:s"); ?> " class="default"><br/><br/> <textarea cols="35" rows="5" name="komentar"></textarea><br/> <input type="submit" value=" Pošalji " class="default"></form> </p> <?php }
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%"> </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> <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> <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 <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> </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"> <b>UKUPNO</b> </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} {$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; ?> . <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> </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> "; //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 . "\"> " . $zb . "</a>"; // if ($i<$zad_brz_array[$zid]) $zadace_ispis .= "<br/>"; $bodova += $zb; } } $zadace_ispis .= " </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("&kreiranje=1", "", genuri()); ?> <a href="<?php echo $k; ?> ">Sakrij dugmad za kreiranje zadataka</a><?php } else { ?> <a href="<?php echo genuri(); ?> &kreiranje=1">Prikaži dugmad za kreiranje zadataka</a><?php } ?> * <a href="?sta=saradnik/grupa&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> </p> <?php }
function studentska_anketa() { global $userid, $user_siteadmin, $user_studentska, $conf_site_url; global $_lv_; // Potrebno za genform() iz libvedran // Provjera privilegija if (!$user_studentska && !$user_siteadmin) { zamgerlog("nije studentska", 3); // 3: error zamgerlog2("nije studentska"); // 3: error biguglyerror("Pristup nije dozvoljen."); return; } // JavaScript ?> <script type="text/javascript"> function setVal(){ document.getElementById('tekst_novo_pitanje').value = pitanje_array[document.getElementById('pitanja').selectedIndex]; document.getElementById('tip_novo_pitanja').selectedIndex = tip_array[document.getElementById('pitanja').selectedIndex]; } var pitanje_array = new Array(); var tip_array = new Array(); var par=1; function switch_poredjenje(){ if (par==1){ document.getElementById('poredjenje_1').style.display = ''; par=0; } else { document.getElementById('poredjenje_1').style.display = 'none'; par=1; } } var help=1; function switch_izvjestaj(){ if (help==1) { document.getElementById('semestralni').style.display = ''; help=0; } else { document.getElementById('semestralni').style.display = 'none'; help=1; } } var help2=1; function switch_izvjestaj2() { if (help2==1) { document.getElementById('po_smjerovima').style.display = ''; help2=0; } else { document.getElementById('po_smjerovima').style.display = 'none'; help2=1; } } </script> <?php // Određujemo akciju $akcija = $_REQUEST['akcija']; $anketa = intval($_REQUEST['anketa']); $id = intval($_REQUEST['anketa']); // Deaktivacija ankete if ($_REQUEST['akcija'] == "deaktivacija") { $q500 = myquery("update anketa_anketa set aktivna=0 where id={$id}"); $q510 = myquery("update anketa_predmet set aktivna=0 where anketa={$id}"); zamgerlog("deaktivirana anketa {$id}", 4); // nivo 4 = audit zamgerlog2("deaktivirana anketa", $id); } // Aktivacija ankete if ($_REQUEST['akcija'] == "aktivacija") { // Prvo sve ankete postavimo na neaktivne $q520 = myquery("update anketa_anketa set aktivna=0"); $q530 = myquery("update anketa_predmet set aktivna=0 where anketa={$id}"); // ...a zatim datu postavimo kao aktivnu jer u datom trenutku samo jedna anketa može biti aktivna. // Automatski postavljamo i to da vise nije moguće editovati pitanja date ankete pošto je postala aktivna $q540 = myquery("update anketa_anketa set aktivna=1, editable=0 where id={$id}"); $q550 = myquery("update anketa_predmet set aktivna=1 where anketa={$id}"); print "<center><span style='color:#009900'>Anketa je postavljena kao aktivna!</span></center>"; zamgerlog("aktivirana anketa {$id}", 4); zamgerlog2("aktivirana anketa", $id); } // Promjena podataka o anketi if ($akcija == "podaci") { if ($_POST['subakcija'] == "potvrda" && check_csrf_token()) { $naziv = my_escape($_REQUEST['naziv']); $opis = my_escape($_REQUEST['opis']); $dan = intval($_POST['1day']); $mjesec = intval($_POST['1month']); $godina = intval($_POST['1year']); $sat = intval($_POST['sat1']); $minuta = intval($_POST['minuta1']); $sekunda = intval($_POST['sekunda1']); $dan2 = intval($_POST['2day']); $mjesec2 = intval($_POST['2month']); $godina2 = intval($_POST['2year']); $sat2 = intval($_POST['sat2']); $minuta2 = intval($_POST['minuta2']); $sekunda2 = intval($_POST['sekunda2']); if (!checkdate($mjesec, $dan, $godina)) { niceerror("Odabrani datum je nemoguć"); return 0; } if (!checkdate($mjesec2, $dan2, $godina2)) { 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; } $mysqlvrijeme1 = time2mysql(mktime($sat, $minuta, $sekunda, $mjesec, $dan, $godina)); $mysqlvrijeme2 = time2mysql(mktime($sat2, $minuta2, $sekunda2, $mjesec2, $dan2, $godina2)); $q560 = myquery("update anketa_anketa set naziv='{$naziv}', datum_otvaranja='{$mysqlvrijeme1}', datum_zatvaranja='{$mysqlvrijeme2}', opis='{$opis}' where id={$anketa}"); zamgerlog("promijenjeni podaci za anketu {$anketa}", 2); zamgerlog2("promijenjeni podaci za anketu", $anketa); ?> <script language="JavaScript"> location.href='?sta=studentska/anketa&anketa=<?php echo $anketa; ?> &akcija=edit'; </script> <?php return; } print "<a href='?sta=studentska/anketa&akcija=edit&anketa={$anketa}'>Povratak nazad</a>"; $q580 = myquery("select id,UNIX_TIMESTAMP(datum_otvaranja),UNIX_TIMESTAMP(datum_zatvaranja),naziv,opis from anketa_anketa where id={$id}"); $datum_otvaranja = mysql_result($q580, 0, 1); $datum_zatvaranja = mysql_result($q580, 0, 2); $naziv = mysql_result($q580, 0, 3); ?> <center> <h2> <?php echo $naziv; ?> - izmjena podataka </h2> <?php $odan = date('d', $datum_otvaranja); $omjesec = date('m', $datum_otvaranja); $ogodina = date('Y', $datum_otvaranja); $osat = date('H', $datum_otvaranja); $ominuta = date('i', $datum_otvaranja); $osekunda = date('s', $datum_otvaranja); $zdan = date('d', $datum_zatvaranja); $zmjesec = date('m', $datum_zatvaranja); $zgodina = date('Y', $datum_zatvaranja); $zsat = date('H', $datum_zatvaranja); $zminuta = date('i', $datum_zatvaranja); $zsekunda = date('s', $datum_zatvaranja); ?> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="potvrda"> <table border="0" width="600"> <tr> <td valign="top" align="right" > Naziv: </td> <td valign="top"> <b><input type="text" name="naziv" value="<?php echo $naziv; ?> " class="default"></b><br/> </td> </tr> <tr> <td valign="top" align="right"> Datum otvaranja: </td> <td valign="top"> <b> <?php echo datectrl($odan, $omjesec, $ogodina, "1"); ?> <input type="text" name="sat1" size="1" value="<?php echo $osat; ?> "> <b>:</b> <input type="text" name="minuta1" size="1" value="<?php echo $ominuta; ?> "> <b>:</b> <input type="text" name="sekunda1" size="1" value="<?php echo $osekunda; ?> "> <br></b><br/> </td> </tr> <tr> <td valign="top" align="right"> Datum zatvaranja: </td> <td valign="top"> <b><b><?php echo datectrl($zdan, $zmjesec, $zgodina, "2"); ?> <input type="text" name="sat2" size="1" value="<?php echo $zsat; ?> "> <b>:</b> <input type="text" name="minuta2" size="1" value="<?php echo $zminuta; ?> "> <b>:</b> <input type="text" name="sekunda2" size="1" value="<?php echo $zsekunda; ?> "> <br></b><br/> </td> </tr> <tr> <td valign="top" align="right"> Opis: </td> <td valign="top"> <b><b><textarea name="opis" cols="50" rows="15" class="default"><?php echo mysql_result($q580, 0, 4); ?> </textarea></b><br/> </td> </tr> </table> <p> <input type="Submit" value=" Izmijeni "></form> </p> </center> <?php } else { if ($_POST['akcija'] == "novi" && check_csrf_token()) { // TODO dodati provjeru naziva $ak_godina = intval($_POST['akademska_godina']); $naziv = my_escape(substr($_POST['naziv'], 0, 100)); $prethodna_anketa = intval($_POST['prethodna_anketa']); print "Nova anketa je kreirana. Molimo sačekajte.<br/><br/>"; $q393 = myquery("insert into anketa_anketa set naziv='{$naziv}', datum_otvaranja=NOW(), datum_zatvaranja=NOW(), opis='', aktivna=0, editable=1, akademska_godina={$ak_godina}"); $anketa = mysql_insert_id(); $r394 = myquery("insert into anketa_predmet set anketa={$anketa}, predmet=NULL, akademska_godina={$ak_godina}, aktivna=0"); // FIXME Ovim je kreirana anketa za sve predmete... zamgerlog("kreirana nova anketa '{$naziv}' sa id-om {$anketa}", 4); zamgerlog2("kreirana nova anketa", $anketa); // Da li ćemo prekopirati pitanja od prošlogodišnje ankete ? if ($prethodna_anketa != 0) { // Ubaci pitanja od izabrane ankete za ponavljanje $q377 = myquery("insert into anketa_pitanje (anketa,tip_pitanja,tekst) select {$anketa},tip_pitanja,tekst from anketa_pitanje where anketa={$prethodna_anketa}"); } ?> <script language="JavaScript"> location.href='<?php echo genuri(); ?> &akcija=edit&anketa=<?php echo $anketa; ?> '; </script> <?php } else { if ($_REQUEST['akcija'] == "edit") { print "<a href='?sta=studentska/anketa'>Povratak nazad</a>"; // Subakcija koja se izvrsava kada se edituje neko od pitanja if ($_POST['subakcija'] == "edit_pitanje" && check_csrf_token()) { $pitanje = intval($_REQUEST['column_id']); if (isset($_REQUEST['obrisi'])) { $q800 = myquery("delete from anketa_pitanje where id={$pitanje}"); print " <center> <span style='color:#009900'> Pitanje uspješno obrisano! </span> </center>"; zamgerlog("obrisano pitanje na anketi {$anketa}", 2); zamgerlog2("obrisano pitanje na anketi", $anketa); } else { $tekst_pitanja = $_REQUEST['tekst_pitanja']; $tip_pitanja = $_REQUEST['tip_pitanja']; $q810 = myquery("update anketa_pitanje set tip_pitanja={$tip_pitanja}, tekst='{$tekst_pitanja}' where id={$pitanje}"); print " <center> <span style='color:#009900'> Pitanje uspješno izmjenjeno! </span> </center>"; zamgerlog("izmijenjeno pitanje na anketi {$anketa}", 2); zamgerlog2("izmijenjeno pitanje na anketi", $anketa); } } // subakcija koja se izvrsava kada se dodaje novo pitanje if ($_POST['subakcija'] == "novo_pitanje" && check_csrf_token()) { $tekst_pitanja = my_escape($_REQUEST['tekst_novo_pitanje']); $tip_pitanja = intval($_REQUEST['tip_novo_pitanja']); $q891 = myquery("select id from anketa_pitanje ORDER BY id desc limit 1"); $id_pitanja = mysql_result($q891, 0, 0) + 1; $q800 = myquery("insert into anketa_pitanje (anketa,tip_pitanja,tekst) values ({$anketa},{$tip_pitanja},'{$tekst_pitanja}')"); print " <center> <span style='color:#009900'> Pitanje uspješno dodano! </span> </center>"; zamgerlog("dodano pitanje na anketi {$anketa}", 2); zamgerlog2("dodano pitanje na anketi", $anketa); } // Osnovni podaci $id_ankete = intval($_REQUEST['anketa']); $q201 = myquery("select datum_otvaranja,datum_zatvaranja,naziv,opis,editable,akademska_godina from anketa_anketa where id={$id_ankete}"); $datum_otvaranja = mysql_result($q201, 0, 0); $datum_zatvaranja = mysql_result($q201, 0, 1); $naziv = mysql_result($q201, 0, 2); $opis = mysql_result($q201, 0, 3); $editable = mysql_result($q201, 0, 4); $ak_godina_ankete = mysql_result($q201, 0, 5); // broj pitanja $q203 = myquery("SELECT count(*) FROM anketa_pitanje WHERE anketa={$id_ankete}"); $broj_pitanja = mysql_result($q203, 0, 0); //kupimo pitanja $q202 = myquery("SELECT p.id, p.tekst,t.tip FROM anketa_pitanje p,anketa_tip_pitanja t WHERE p.tip_pitanja = t.id and p.anketa = {$id_ankete} order by p.id"); // id aktelne akademske godine $q010 = myquery("select id,naziv from akademska_godina where aktuelna=1"); $aktuelna_ak_god = mysql_result($q010, 0, 0); $q125 = myquery("select naziv from akademska_godina where id={$ak_godina_ankete}"); $naziv_ak_godina_ankete = mysql_result($q125, 0, 0); ?> <center> <table border="0" width="600" > <tr> <td valign="top" colspan="2" align="center"> <h2><?php echo $naziv; ?> za godinu <?php echo $naziv_ak_godina_ankete; ?> </h2> </td> </tr> <?php if ($ak_godina_ankete == $aktuelna_ak_god) { ?> <tr> <td valign="top" align="right" > Naziv: </td> <td valign="top"> <b><?php echo $naziv; ?> </b><br/> </td> </tr> <tr> <td valign="top" align="right"> Datum otvaranja: </td> <td valign="top"> <b><?php echo $datum_otvaranja; ?> </b><br/> </td> </tr> <tr> <td valign="top" align="right"> Datum zatvaranja: </td> <td valign="top"> <b><?php echo $datum_zatvaranja; ?> </b><br/> </td> </tr> <tr> <td valign="top" align="right"> Opis: </td> <td valign="top"> <b><?php echo $opis; ?> </b><br/></td> </tr> <tr> <td valign="top" align="right"> </td> <td valign="top"> <br /> <a href="?sta=izvjestaj/anketa_sumarno&anketa=<?php echo $id_ankete; ?> ">Sumarni izvještaj za anketu</a><br/></td> </tr> <tr> <td valign="top" colspan="2" align="center"> <hr/></td> </tr> <tr> <td valign="top" colspan="2" align="center"> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="podaci"> <input type="button" value=" Pregled " onclick="javascript:window.open('<?php echo $conf_site_url; ?> /index.php?sta=public/anketa&akcija=preview&anketa=<?php echo $id_ankete; ?> ');"> <input type="Submit" value=" Izmijeni "></form> </td> </tr> </table> <?php } else { print "</table>"; } // podaci o pitanjima koja pripadaju toj anketi function dropdown_anketa($tip) { $q283 = myquery("SELECT id, tip from anketa_tip_pitanja"); if ($tip == 1) { $lista = "<select id='tip_novo_pitanja' name='tip_novo_pitanja'>"; } else { $lista = "<select name='tip_pitanja'>"; } while ($r283 = mysql_fetch_row($q283)) { $lista .= "<option value='{$r283['0']}'"; if ($r283[1] == $tip) { $lista .= " selected"; } $lista .= ">{$r283['1']}</option>"; } $lista .= "</select>"; return $lista; } ?> <br/> <table width="800" border="0"> <tr bgcolor='#00AAFF'> <td><strong>Tekst pitanja</strong></td> <td><strong>Tip pitanja</strong></td> <?php // Da li se mogu dodavati nova pitanja ili mijenjati postojeća if ($editable == 0) { print "</tr>"; $i = 1; while ($r202 = mysql_fetch_row($q202)) { ?> <tr> <td colspan='2'><hr/></td> </tr> <tr <?php if ($i % 2 == 0) { print "bgcolor=\"#EEEEEE\""; } ?> > <td><?php echo $i; ?> . <?php echo $r202[1]; ?> </td> <td width='150'><?php echo $r202[2]; ?> </td> </tr> <?php $i++; } } else { print "<td> </td></tr>"; $i = 1; while ($r202 = mysql_fetch_row($q202)) { print genform("POST"); ?> <tr> <td colspan='3'> <hr/> </td> </tr> <input type='hidden' name='subakcija' value='edit_pitanje'> <tr <?php if ($i % 2 == 0) { print "bgcolor=\"#EEEEEE\""; } ?> > <input type='hidden' name='column_id' value='<?php echo $r202[0]; ?> '> <td><input name ='tekst_pitanja' size='100' value='<?php echo $r202[1]; ?> '/> </td> <td><?php echo dropdown_anketa($r202[2]); ?> </td> <td><input type='submit' value='Pošalji '><input type='submit' name='obrisi' value=' Obriši '></td> </tr> </form> <?php $i++; } $q284 = myquery("SELECT id, tekst, tip_pitanja FROM anketa_pitanje"); $lista_pitanja = "<select id = 'pitanja' name='pitanja' onChange=\"javascript:setVal();\">"; $Counter = 0; /* while ($r283=mysql_fetch_row($q284)) { $lista_pitanja.="<option value='$r283[0]'>$r283[1]</option>"; $lista_pitanja.="<script>pitanje_array[$Counter]='$r283[1]'; tip_array[$Counter]=$r283[2]-1; </script>"; $Counter++; }*/ $lista_pitanja .= "</select>"; ?> <tr><td colspan='3'><hr/><br> </td> </tr> <tr><td colspan='3'>Dodajte novo pitanje: </td> </tr> <tr><td colspan='3'>Odaberite postojeće pitanje za izmjenu: </td> </tr> <tr><td colspan='3'><?php echo $lista_pitanja; ?> </td> </tr> <tr><td colspan='3'>Novo pitanje: </td> </tr> <form name='' action="<?php echo genuri(); ?> &akcija=edit&anketa=<?php echo $anketa; ?> " method='POST'> <input type='hidden' name='subakcija' value='novo_pitanje'> <tr > <td>Tekst: <input name='tekst_novo_pitanje' id = 'tekst_novo_pitanje' size='100' /> </td> <td> Tip: <?php echo dropdown_anketa(1); ?> </td> <td><input type='submit' value=' Dodaj '><input type='reset' value='Poništi'></td> </tr> </form> <?php } print "</table>"; ?> </center> <?php } else { $q10 = myquery("select id,naziv from akademska_godina where aktuelna=1"); $ag = mysql_result($q10, 0, 0); ?> <center> <table width="600" border="0"> <tr><td align="left"> <p><h3>Studentska služba - Anketa</h3></p> <div class="anketa_naslov"> <p><h4>Aktuelna akademska godina</h4></p> </div> <?php // Gledamo da li je za ovu akademsku godinu kreirana ijedna anketa $q199 = myquery("select id,naziv,opis,aktivna from anketa_anketa where akademska_godina={$ag}"); if (mysql_num_rows($q199) == 0) { print "Za ovu akademsku godinu nije kreirana nijedna anketa"; } else { ?> <table width="100%" border="0"><?php while ($anketa_row = mysql_fetch_row($q199)) { ?> <tr><td width='50%'><?php echo $anketa_row[1]; ?> </td> <td><?php if ($anketa_row[3] == 0) { print "<a href='" . genuri() . "&akcija=aktivacija&anketa={$anketa_row['0']}'>Aktiviraj</a>"; } else { print "<a href='" . genuri() . "&akcija=deaktivacija&anketa={$anketa_row['0']}'>Deaktiviraj</a>"; } ?> </td> <td><a href="<?php echo genuri(); ?> &akcija=edit&anketa=<?php echo $anketa_row[0]; ?> ">Detalji</a></td></tr> <?php } print "</table>"; } // Forma za kreiranje ankete // Spisak anketa od prošlih godina, radi ponavljanja pitanja $q199b = myquery("select a.id, a.naziv, ak.naziv from anketa_anketa a, akademska_godina ak where a.akademska_godina = ak.id order by a.akademska_godina desc"); ?> <hr> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="novi"> <input type="hidden" name="akademska_godina" value="<?php echo $ag; ?> "> <p><br><b>Nova anketa</b><br/><br/> Naziv ankete:<br/> <input type="text" name="naziv" size="50"> <input type="submit" value=" Dodaj "> <br />Ponovi pitanja od: <select title="Ponovi pitanja od" name="prethodna_anketa" id="prethodna_anketa"> <option value='0'> Bez ponavljanja </option> <?php while ($r199b = mysql_fetch_row($q199b)) { print "<option value='{$r199b['0']}'> {$r199b['1']} ({$r199b['2']})</option>"; } ?> </select> </form> <?php // Spisak anketa u prethodnim akademskim godinama ?> <hr /> <div class="anketa_naslov"> <p><h4>Prethodne akademske godine</h4></p> </div> <?php $q200 = myquery("select a.id, a.datum_otvaranja, a.datum_zatvaranja, a.naziv, a.opis, a.aktivna, ak.naziv from anketa_anketa a, akademska_godina ak where a.akademska_godina = ak.id and akademska_godina!={$ag}"); print '<table width="100%" border="0">'; if (mysql_num_rows($q200) == 0) { ?> <tr><td>Prethodnih akademskih godina nije bila definisana nijedna anketa</td></tr><?php } else { while ($r200 = mysql_fetch_row($q200)) { ?> <tr> <td width="50%"><?php echo $r200[3]; ?> (<?php echo $r200[6]; ?> )</td> <td><a href="<?php echo genuri(); ?> &akcija=edit&anketa=<?php echo $r200[0]; ?> ">Detalji</a></td> </tr> <?php } } ?> </table> <!-- ------------------------------- REZULTATI --------------------------------------------------> <hr /> <div class="anketa_naslov"> <p><h4>Rezultati ankete </h4></p> </div> <a onclick="switch_poredjenje()" style="cursor:pointer">Sumarni izvještaji</a> <div id="poredjenje_1" style="display:none" class="izvjestaji"> <ul> <li> <a onclick="switch_izvjestaj()" style="cursor:pointer"> Semestralni izvještaj </a> </li> <div id="semestralni" style="display:none"> <form method="GET" action="index.php"> <input type="hidden" name="sta" value="izvjestaj/anketa_semestralni"> <table width="450" align="center"> <tr> <td width="200">Odaberite akademsku godinu:</td> <td> <select name="akademska_godina"> <?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] == $ag) { print " selected"; } ?> ><?php echo $r295[1]; ?> </option> <?php } ?> </select><br/> </td> </tr> <tr> <td>Odaberite studij:</td> <td> <select name="studij" id="studij"> <option value="-1">--- Prva godina studija ---</option> <?php $q295 = myquery("select s.id, s.naziv, ts.trajanje from studij as s, tipstudija as ts where s.tipstudija=ts.id and s.moguc_upis=1 order by s.tipstudija, s.naziv"); $maxsemestara = 0; while ($r295 = mysql_fetch_row($q295)) { ?> <option value="<?php echo $r295[0]; ?> "><?php echo $r295[1]; ?> </option> <?php if ($r295[2] > $maxsemestara) { $maxsemestara = $r295[2]; } } ?> </select><br/> </td> </tr> <tr> <td> Odaberite semestar:</td> <td> <div id="pgs"> <select name="semestar" id="semestar"> <?php for ($sem = 1; $sem <= $maxsemestara; $sem++) { ?> <option value="<?php echo $sem; ?> "> <?php echo $sem; ?> </option> <?php } ?> </select> </div> </td> </tr> <tr> <td colspan="2"> <input type="hidden" name="akcija" value="semestralni"> <input size="100px" type="submit" value="Kreiraj izvještaj"> </td> </tr> </table> </form> </div> <li> <a onclick="switch_izvjestaj2()" style="cursor:pointer"> Izvještaj po smjerovima</a> </li> <div id="po_smjerovima" style="display:none"> <form method="post" action="?sta=izvjestaj/anketa_semestralni"> <table width="450" align="center" > <tr> <td width="200"> Odaberite akademsku godinu: </td> <td align="left"> <select name="akademska_godina"> <?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] == $ag) { print " selected"; } ?> ><?php echo $r295[1]; ?> </option> <?php } ?> </select><br/> </td> </tr> <tr> <td>Odaberite semestar:</td> <td> <div id="semestar"> <select name="semestar" id="semestar"> <option value="1"> Zimski</option> <option value="2"> Ljetni</option> <option value="3"> Cijela godina </option> </select> </div> </td> </tr> <tr> <td colspan="2"> <input type="hidden" name="akcija" value="po_smjerovima"> <input size="100px" type="submit" value="Kreiraj izvjestaj"> </td> </tr> </table> </form> </div> </ul> </div> <hr /> <?php $src = my_escape($_REQUEST["search"]); $limit = 20; $offset = intval($_REQUEST["offset"]); $ak_god = intval($_REQUEST["akademska_godina"]); 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>Pregled izvjestaja po predmetu :<br/> <small>Za prikaz svih predmeta na akademskoj godini, ostavite polje za pretragu prazno.</small> </br> <?php echo genform("GET"); ?> <input type="hidden" name="offset" value="0"> <?php /*resetujem offset*/ ?> <select name="akademska_godina"> <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=" Pretrazi "> </form> <br/> <?php if ($ak_god > 0 && $src != "") { $q300 = myquery("select count( distinct predmet) from ponudakursa as pk, predmet as p where pk.akademska_godina={$ak_god} and \r\n\t\t\t\t\t\tp.naziv like '%{$src}%' and pk.predmet=p.id "); } else { if ($ak_god > 0) { $q300 = myquery("select count(distinct predmet) from ponudakursa where akademska_godina={$ak_god}"); } else { if ($src != "") { $q300 = myquery("select sum(br) from (select count(distinct predmet) as br from ponudakursa as pk, predmet as p where pk.predmet=p.id and p.naziv like \r\n\t\t\t\t\t\t'%{$src}%' GROUP BY pk.akademska_godina) as tb1"); } else { $q300 = myquery("select sum(br) from (select count(distinct predmet) as br from ponudakursa GROUP BY akademska_godina ) as tb1"); } } } $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=\"?sta=studentska/anketa&offset={$i}&_lv_column_akademska_godina={$ak_god}\">{$br}</a> "; } } print "<br/>"; } if ($ak_god > 0 && $src != "") { $q301 = myquery("select p.id, p.naziv, ag.naziv, i.kratki_naziv, ag.id 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}%' and pk.predmet=p.id and p.institucija=i.id GROUP BY p.id, ag.id order by ag.naziv desc, p.naziv limit {$offset},{$limit}"); } else { if ($ak_god > 0) { $q301 = myquery("select p.id, p.naziv, ag.naziv, i.kratki_naziv, ag.id 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 GROUP BY p.id, ag.id order by ag.naziv desc, p.naziv limit {$offset},{$limit}"); } else { if ($src != "") { $q301 = myquery("select p.id, p.naziv, ag.naziv, i.kratki_naziv, ag.id from predmet as p, ponudakursa as pk, akademska_godina as ag, institucija as i where pk.akademska_godina=ag.id and p.naziv like '%{$src}%' and pk.predmet=p.id and p.institucija=i.id GROUP BY p.id, ag.id order by ag.naziv desc, p.naziv limit {$offset},{$limit}"); } else { $q301 = myquery("select p.id, p.naziv, ag.naziv, i.kratki_naziv, ag.id from predmet as p, ponudakursa as pk, akademska_godina as ag, institucija as i where pk.akademska_godina=ag.id and pk.predmet=p.id and p.institucija=i.id GROUP BY p.id, ag.id order by ag.naziv desc,p.naziv limit {$offset},{$limit}"); } } } print '<table width="100%" border="0">'; $i = $offset + 1; while ($r301 = mysql_fetch_row($q301)) { if ($ak_god > 0) { if ($r301[5] == 1 || $r301[5] == 2) { print "<tr><td>{$i}. {$r301['1']} (PGS)</td>\n"; } else { print "<tr><td>{$i}. {$r301['1']} ({$r301['3']})</td>\n"; } } else { if ($r301[5] == 1 || $r301[5] == 2) { print "<tr><td>{$i}. {$r301['1']} (PGS) - {$r301['2']}</td>\n"; } else { print "<tr><td>{$i}. {$r301['1']} ({$r301['3']}) - {$r301['2']}</td>\n"; } } print "<td align='right'><a href= '?sta=izvjestaj/anketa&predmet={$r301['0']}&ag={$r301['4']}&rank=da'>Izvjestaj rank</a></td>\n"; print "<td align='right' ><a href='?sta=izvjestaj/anketa&predmet={$r301['0']}&ag={$r301['4']}&komentar=da'>Izvjestaj komentari</a></td>\n"; $i++; } print "</table>"; } ?> <br/> </table> </td> </tr> </table> </center> <?php } } } }
function saradnik_intro() { global $userid, $user_siteadmin, $registry, $posljednji_pristup; // Dobrodošlica $q1 = myquery("select ime, spol from osoba where id={$userid}"); $ime = mysql_result($q1, 0, 0); $spol = mysql_result($q1, 0, 1); if ($spol == 'Z' || $spol == '' && spol($ime) == "Z") { print "<h1>Dobro došla, " . vokativ($ime, "Z") . "</h1>"; } else { print "<h1>Dobro došao, " . vokativ($ime, "M") . "</h1>"; } // Sakrij raspored ako ga nema u registry-ju $nasao = 0; foreach ($registry as $r) { if ($r[0] == "common/raspored1") { $nasao = 1; break; } } if ($nasao == 1) { require "common/raspored1.php"; common_raspored1("nastavnik"); } // Prikaz obavještenja za saradnike $prikaz_sekundi = 600; // Koliko dugo se prikazuje obavještenje $vrijeme = $posljednji_pristup - $prikaz_sekundi; // globalna $q30 = myquery("select id from poruka where tip=1 and (opseg=0 or opseg=2) and UNIX_TIMESTAMP(vrijeme)>{$vrijeme} order by vrijeme desc limit 1"); if (mysql_num_rows($q30) > 0) { ?> <p><a href="?sta=common/inbox&poruka=<?php echo mysql_result($q30, 0, 0); ?> "><div style="color:red; text-decoration: underline">Imate novo sistemsko obavještenje. Kliknite ovdje.</div></a></p><?php } // Spisak grupa po predmetima, predmeti po akademskoj godini ?> <table border="0" cellspacing="5"><tr> <?php if ($_REQUEST['sve']) { $q1a = myquery("select id,naziv from akademska_godina order by naziv desc"); } else { $q1a = myquery("select id,naziv from akademska_godina where aktuelna=1 order by naziv desc limit 1"); } while ($r1a = mysql_fetch_row($q1a)) { $ag = $r1a[0]; $ag_naziv = $r1a[1]; // Prikaži sve predmete siteadminu $uslov = ""; $nppolje = "nastavnik"; $uslov = "np.predmet=p.id and np.akademska_godina={$ag} and np.nastavnik={$userid} and"; $nppolje = "np.nivo_pristupa"; // Upit za spisak predmeta $q10 = myquery("select distinct p.id, {$nppolje}, p.naziv, i.kratki_naziv from predmet as p, nastavnik_predmet as np, institucija as i, ponudakursa as pk where {$uslov} p.institucija=i.id and pk.predmet=p.id and pk.akademska_godina={$ag} order by pk.semestar, pk.studij, p.naziv"); // Format - šest predmeta u jednom redu $nr = mysql_num_rows($q10); if ($nr == 0) { continue; } // sljedeća akademska godina if ($nr > 6) { $nr = 6; } print '<td colspan="' . $nr * 2 . '" align="center" bgcolor="#88BB99">Predmeti (' . $ag_naziv . ')</td></tr><tr>'; $br = 0; while ($r10 = mysql_fetch_row($q10)) { $predmet = $r10[0]; $privilegija = $r10[1]; $naziv_predmeta = $r10[2]; $studij = $r10[3]; // Spacer if ($br > 0) { print '<td bgcolor="#666666" width="1"></td>' . "\n"; } print '<td valign="top">' . "\n"; // Siteadmin moze vidjeti i tudje predmete, pa ih prikazujemo drugom bojom $moj = 1; if ($user_siteadmin) { $q20 = myquery("select count(*) from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_result($q20, 0, 0) < 1) { $moj = 0; } } if ($moj == 0) { print "<b><font color=\"#664444\">{$naziv_predmeta} ({$studij})</font></b>\n"; } else { print "<b>{$naziv_predmeta} ({$studij})</b>\n"; } // Edit link if ($user_siteadmin || $privilegija == "nastavnik" || $privilegija == "super_asistent") { print ' [<b><a href="?sta=nastavnik/predmet&predmet=' . $predmet . '&ag=' . $ag . '"><font color="red">EDIT</font></a></b>]' . "\n"; } // Provjeri limit na prikazivanje labgrupa $limit = array(); $q30 = 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($q30) > 0) { while ($r30 = mysql_fetch_row($q30)) { array_push($limit, $r30[0]); } } // Lab grupe print "<ul>\n"; $q4 = myquery("select id,naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag}"); $result = array(); while ($r4 = mysql_fetch_row($q4)) { $result[$r4[0]] = $r4[1]; } natsort($result); foreach ($result as $gid => $gname) { if (!preg_match("/\\w/", $gname)) { $gname = "[Nema imena]"; } if (count($limit) == 0 || in_array($gid, $limit)) { print "<li><a href=\"?sta=saradnik/grupa&id={$gid}\">{$gname}</a></li>\n"; } } print "</ul>\n"; // Kraj print "</td>\n"; $br++; if ($br == 6) { $br = 0; print "</tr><tr>\n"; } } print '</tr><tr>' . "\n"; } print '</tr></table>'; if (!$_REQUEST['sve']) { print '<a href="' . genuri() . '&sve=1">Prikaži ranije akademske godine</a>'; } }