function greska_u_modulima() { global $uspjeh, $sta; if ($uspjeh == 0) { ?> <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head> <body> <p><font color='red'><b>GREŠKA: U toku su radovi na Zamgeru</b></font></p> <p>Molimo Vas da pokušate ponovo za par minuta koristeći dugme <a href="javascript:location.reload(true)">Refresh</a>.</p> </body></html> <?php } if ($uspjeh == 1) { if (function_exists('error_get_last')) { $err = error_get_last(); $file = $err['file']; $line = $err['line']; $msg = $err['message']; $file = substr($file, strlen($file) - 20); zamgerlog("sintaksna greska u {$sta}, {$line}: '{$msg}'", 2); zamgerlog2("sintaksna greska", $line, 0, 0, $msg); } else { $file = $sta; zamgerlog("sintaksna greska u {$sta}", 2); zamgerlog2("sintaksna greska"); $msg = ""; } niceerror("U toku su radovi na modulu {$sta}"); print "<p>Molimo Vas da pokušate ponovo za par minuta koristeći dugme <a href=\"javascript:location.reload(true)\">Refresh</a>.</p>"; } }
function student_moodle() { global $conf_moodle, $conf_moodle_url; if (!$conf_moodle) { biguglyerror("Moodle integracija nije uključena."); print "Kontaktirajte vašeg administratora."; return; } $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); $tip = $_REQUEST['tip']; $q = myquery("select moodle_id from moodle_predmet_id where predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q) < 1) { zamgerlog("ne postoji moodle ID za predmet pp{$predmet}, ag{$ag}", 3); zamgerlog2("ne postoji moodle ID za predmet", $predmet, $ag); niceerror("Pogrešan predmet/akademska_godina ili za ovaj predmet nije definisan moodle ID."); return; } $moodle_id = mysql_result($q, 0, 0); if ($tip == "forum") { header("Location: {$conf_moodle_url}" . "mod/forum/index.php?id={$moodle_id}"); } else { header("Location: {$conf_moodle_url}" . "course/view.php?id={$moodle_id}"); } }
function common_slika() { global $conf_files_path, $user_nastavnik, $user_studentska, $user_siteadmin, $userid; // Poslani parametar $osoba = intval($_REQUEST['osoba']); $promjena = intval($_REQUEST['promjena']); // Studenti mogu vidjeti samo svoju sliku if (!$user_nastavnik && !$user_studentska && !$user_siteadmin && $osoba != $userid) { niceerror("Možete vidjeti samo svoju sliku"); zamgerlog("pristupa slici za osobu {$osoba} a student je", 3); zamgerlog2("pristupa tudjoj slici a student je", $osoba); return; } if ($promjena == 1) { $q = myquery("select slika from promjena_podataka where osoba={$osoba}"); } else { $q = myquery("select slika from osoba where id={$osoba}"); } if (mysql_num_rows($q) < 1) { // Ova poruka se neće vidjeti iz <img> taga, ali neko može otvoriti sliku u posebnom prozoru/tabu niceerror("Nepostojeća osoba {$osoba}"); zamgerlog("slika: nepostojeca osoba {$osoba}", 3); zamgerlog2("nepostojeca osoba", $osoba); return; } $slika = mysql_result($q, 0, 0); if ($slika == "") { niceerror("Osoba {$osoba} nema sliku"); zamgerlog("osoba u{$osoba} nema sliku", 3); zamgerlog2("osoba nema sliku", $osoba); return; } $lokacija_slike = "{$conf_files_path}/slike/{$slika}"; if (!file_exists($lokacija_slike)) { niceerror("Slika za osobu {$osoba} je definisana, ali datoteka ne postoji"); zamgerlog("nema datoteke za sliku osobe u{$osoba}", 3); zamgerlog2("nema datoteke za sliku", $osoba); return; } // Odredjujemo mimetype $podaci = getimagesize($lokacija_slike); $mimetype = image_type_to_mime_type($podaci[2]); if ($mimetype == "") { niceerror("Nepoznat tip slike za osobu {$osoba}"); zamgerlog("nepoznat tip slike za osobu u{$osoba}", 3); zamgerlog2("nepoznat tip slike", $osoba); return; } header("Content-Type: {$mimetype}"); $k = readfile($lokacija_slike, false); if ($k == false) { //print "Otvaranje slike nije uspjelo! Kontaktirajte administratora"; // Pošto je header već poslan, nema smisla ispisivati grešku zamgerlog("citanje fajla za sliku nije uspjelo u{$osoba}", 3); zamgerlog2("citanje fajla za sliku nije uspjelo", $osoba); } exit; }
function common_savjet_dana() { global $userid; global $user_student, $user_nastavnik, $user_studentska, $user_siteadmin; if ($_REQUEST['akcija'] == "ne_prikazuj" && $_REQUEST['ne_prikazuj'] && check_csrf_token()) { ?> <h2>Da li ste znali...</h2> <p>Prozor "Da li ste znali..." više neće biti prikazivan.</p> <p>Ako ga kasnije budete željeli reaktivirati, možete to učiniti kroz vaš Profil.</p> <?php $q20 = myquery("delete from preference where korisnik={$userid} and preferenca='savjet_dana'"); $q30 = myquery("insert into preference set korisnik={$userid}, preferenca='savjet_dana', vrijednost=0"); zamgerlog("iskljucio savjet dana", 2); zamgerlog2("iskljucio savjet dana"); return; } if ($user_nastavnik) { $upit .= "vrsta_korisnika='nastavnik' or "; } if ($user_student) { $upit .= "vrsta_korisnika='student' or "; } if ($user_siteadmin) { $upit .= "vrsta_korisnika='siteadmin' or "; } if ($user_studentska) { $upit .= "vrsta_korisnika='studentska' or "; } $q10 = myquery("select tekst from savjet_dana where {$upit} 0 order by rand() limit 1"); // 0 zbog zadnjeg or ?> <h2>Da li ste znali...</h2> <img src="images/savjet_dana.gif" align="left" width="92" height="150" style="margin: 0px 20px"> <?php echo mysql_result($q10, 0, 0); ?> <hr> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="ne_prikazuj"> <input type="checkbox" name="ne_prikazuj"> Ne prikazuj više savjet dana <input type="submit" value="Potvrda" class="default"> <input type="button" onclick="window.close()" value="Zatvori" class="default"> <input type="button" onclick="window.location.reload(true)" value="Novi savjet" class="default"> </form> <?php }
function common_cron() { global $conf_files_path, $user_siteadmin; $force = intval($_GET['force']); if ($force > 0) { if (!$user_siteadmin) { niceerror("Nemate dozvolu da ovo izvršite."); zamgerlog("forsira cron a nije admin", 3); zamgerlog2("forsira cron a nije admin"); return; } $upit = "id={$force}"; } else { $upit = "aktivan=1 AND sljedece_izvrsenje<NOW()"; } $q10 = myquery("SELECT id, path, UNIX_TIMESTAMP(zadnje_izvrsenje), godina, mjesec, dan, sat, minuta, sekunda FROM cron WHERE {$upit}"); if (mysql_num_rows($q10) == 0 && $force > 0) { niceerror("Nije pronađen zadatak koji odgovara upitu."); return; } while ($r10 = mysql_fetch_row($q10)) { // Određujemo sljedeće vrijeme izvršenja $localtime = localtime(); $localtime = cron_find($localtime, 0, $r10[8]); $localtime = cron_find($localtime, 1, $r10[7]); $localtime = cron_find($localtime, 2, $r10[6]); $localtime = cron_find($localtime, 3, $r10[5]); $localtime = cron_find($localtime, 4, $r10[4]); $localtime = cron_find($localtime, 5, $r10[3]); $nexttime = mktime($localtime[2], $localtime[1], $localtime[0], $localtime[4] + 1, $localtime[3], $localtime[5] + 1900); // Ažuriramo bazu $q20 = myquery("UPDATE cron SET zadnje_izvrsenje=NOW(), sljedece_izvrsenje=FROM_UNIXTIME({$nexttime}) WHERE id={$r10['0']}"); $q30 = myquery("INSERT INTO cron_rezultat SET cron={$r10['0']}, izlaz='(Nije završeno)', return_value=0, vrijeme=NOW()"); $id = mysql_insert_id(); // Pripremamo za izvršenje $exec = str_replace("---LASTTIME---", $r10[2], $r10[1]); $exec = "php {$conf_files_path}/{$exec}"; $return = 0; $blah = array(); // Izvršavamo skriptu $k = exec($exec, $blah, $return); // Stavljamo izlaz u bazu $izlaz = my_escape(iconv("UTF-8", "UTF-8//IGNORE", join("\n", $blah))); $q40 = myquery("UPDATE cron_rezultat SET return_value={$return}, izlaz='{$izlaz}' WHERE id={$id}"); if ($force > 0) { nicemessage("Uspješno izvršena skripta."); $izlaz = str_replace("\\n", "\n", $izlaz); print "<p>Izlaz:</p>\n<pre>{$izlaz}</pre>\n"; } } }
function common_articleImageDownload() { global $userid, $user_nastavnik, $user_student, $conf_files_path, $user_siteadmin; $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); $projekat = intval($_REQUEST['projekat']); $articleID = intval($_REQUEST['a']); $authorID = intval($_REQUEST['u']); $imageName = $_GET['i']; if ($predmet <= 0 || $projekat <= 0 || $authorID <= 0 || $ag <= 0 || $articleID <= 0) { //hijack attempt? zamgerlog("korisnik u{$userid} pokusao pristupiti modulu common/articleImageDownload sa ID predmeta ili ID projekta ili ID autora slike ili ag ili clanak koji nije integer ili je <=0", 3); zamgerlog2("neispravni parametri", $predmet, $ag, $projekat, "{$authorID}, {$articleID}"); return; } if ($user_nastavnik && !$user_siteadmin) { $q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q10) < 1 || mysql_result($q10, 0, 0) < 1) { zamgerlog("common/projektneStrane privilegije (predmet pp{$predmet})", 3); zamgerlog2("nije saradnik na predmetu", $predmet, $ag); biguglyerror("Nemate pravo ulaska u ovu grupu!"); return; } } require_once "lib/projekti.php"; if ($user_student && !$user_siteadmin) { $actualProject = getActualProjectForUserInPredmet($userid, $predmet, $ag); if ($actualProject[id] != $projekat) { //user is not in this project in this predmet...hijack attempt? zamgerlog("korisnik u{$userid} pokusao pristupiti modulu common/articleImageDownload i projektu na kojem nije prijavljen ID={$projekat} na predmetu p{$predmet}", 3); zamgerlog2("nije na projektu", $projekat); biguglyerror("Nemate pravo ulaska u ovu grupu!"); return; } } $imageName = strip_tags($imageName); $imageName = trim($imageName); $article = getArticle($articleID); if (empty($article) || ($article['osoba'] != $authorID || $article['slika'] != $imageName || $article['projekat'] != $projekat)) { zamgerlog("korisnik u{$userid} pokusao pristupiti modulu common/articleImageDownload sa losim authorID, imageName, projekat ili ID clanka", 3); zamgerlog2("clanak se ne poklapa sa projektom", $articleID, $projekat); return; } $lokacijaclanaka = "{$conf_files_path}/projekti/clanci/{$projekat}/" . $article['osoba'] . "/"; $filepath = $lokacijaclanaka . $article['slika']; $type = `file -bi '{$filepath}'`; header("Content-Type: {$type}"); header('Content-Length: ' . filesize($filepath)); echo file_get_contents($filepath); }
function nastavnik_ocjena() { global $userid, $user_siteadmin; require "lib/manip.php"; global $mass_rezultat; // za masovni unos studenata u grupe // Parametri $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // Naziv predmeta $q10 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q10) < 1) { biguglyerror("Nepoznat predmet"); zamgerlog("ilegalan predmet {$predmet}", 3); //nivo 3: greska zamgerlog2("nepoznat predmet", $predmet); return; } $predmet_naziv = mysql_result($q10, 0, 0); // Da li korisnik ima pravo ući u modul? if (!$user_siteadmin) { $q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q10) < 1 || mysql_result($q10, 0, 0) != "nastavnik") { zamgerlog("nastavnik/ispiti privilegije (predmet pp{$predmet})", 3); zamgerlog2("nije nastavnik na predmetu", $predmet, $ag); biguglyerror("Nemate pravo pristupa ovoj opciji"); return; } } ?> <p> </p> <p><h3><?php echo $predmet_naziv; ?> - Konačna ocjena</h3></p> <p><a href="?sta=nastavnik/unos_ocjene&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> ">Pojedinačni unos konačnih ocjena</a></p> <?php # Masovni unos konačnih ocjena if ($_POST['akcija'] == "massinput" && strlen($_POST['nazad']) < 1 && check_csrf_token()) { if ($_POST['fakatradi'] != 1) { $ispis = 1; } else { $ispis = 0; } // fakatradi=0 --> ispis=1 if ($_REQUEST['datum']) { $uneseni_datumi = true; $_REQUEST['brpodataka'] = 2; } else { $uneseni_datumi = false; $_REQUEST['brpodataka'] = 1; } if ($ispis) { ?> Akcije koje će biti urađene:<br/><br/> <?php echo genform("POST"); ?> <input type="hidden" name="fakatradi" value="1"> <table border="0" cellspacing="1" cellpadding="2"> <!-- FIXME: prebaciti stilove u CSS? --> <thead> <tr bgcolor="#999999"> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Prezime</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Ime</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Ocjena / Komentar</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Datum</font></td> </tr> </thead> <tbody> <?php } $greska = mass_input($ispis); // Funkcija koja parsira podatke if (count($mass_rezultat) == 0) { // niceerror("Niste unijeli ništa."); // return; print "Niste unijeli nijedan upotrebljiv podatak<br/><br/>\n"; $greska = 1; } // Obrada rezultata $boja1 = "#EEEEEE"; $boja2 = "#DDDDDD"; $boja = $boja1; $bojae = "#FFE3DD"; foreach ($mass_rezultat['ime'] as $student => $ime) { $prezime = $mass_rezultat['prezime'][$student]; $ocjena = $mass_rezultat['podatak1'][$student]; // Student neocijenjen (prazno mjesto za ocjenu) if (intval($ocjena) == 0 && strpos($ocjena, "0") === FALSE) { if ($ispis) { ?> <tr bgcolor="<?php echo $boja; ?> "> <td><?php echo $prezime; ?> </td><td><?php echo $ime; ?> </td> <td colspan="2">nije ocijenjen/a (unesena je ocjena: <?php echo $ocjena; ?> )</td> </tr> <?php if ($boja == $boja1) { $boja = $boja2; } else { $boja = $boja1; } } continue; } // Ocjena mora biti u opsegu 6-10 $ocjena = intval($ocjena); if ($ocjena < 6 || $ocjena > 10) { if ($ispis) { ?> <tr bgcolor="<?php echo $bojae; ?> "> <td><?php echo $prezime; ?> </td><td><?php echo $ime; ?> </td> <td colspan="2">ocjena nije u opsegu 6-10 (ocjena: <?php echo $ocjena; ?> )</td> </tr> <?php $greska = 1; continue; } } // Da li vec ima ocjena u bazi? $q100 = myquery("select ocjena from konacna_ocjena where student={$student} and predmet={$predmet}"); if (mysql_num_rows($q100) > 0) { $oc2 = mysql_result($q100, 0, 0); if ($oc2 > 5 && $ispis) { ?> <tr bgcolor="<?php echo $bojae; ?> "> <td><?php echo $prezime; ?> </td><td><?php echo $ime; ?> </td> <td colspan="2">već ima ocjenu <?php echo $oc2; ?> ; koristite pogled grupe za izmjenu</td> </tr> <?php $greska = 1; continue; } } // Ako je unesen datum, taj datum postaje datum_u_indeksu i provjeren je if ($uneseni_datumi) { $datum_ulaz = str_replace("/", ".", $mass_rezultat['podatak2'][$student]); $datum_ulaz = str_replace(". ", ".", $datum_ulaz); $matches = array(); if (preg_match("/^(\\d\\d)\\.(\\d\\d)\\.(\\d\\d)\\.?\$/", $datum_ulaz, $matches)) { if ($matches[3] < 20) { $godina = "20" . $matches[3]; } else { $godina = "19" . $matches[3]; } $datum_ulaz = $matches[1] . "." . $matches[2] . "." . $godina; } //$datum_ulaz = $mass_rezultat['podatak2'][$student]; //if ( $datum_u_indeksu = strtotime($datum_ulaz); $datum_provjeren = 1; } else { // Određivanje datuma za indeks $q105 = myquery("SELECT UNIX_TIMESTAMP(it.datumvrijeme) \n\t\t\tFROM ispit as i, ispit_termin as it, student_ispit_termin as sit \n\t\t\tWHERE sit.student={$student} and sit.ispit_termin=it.id and it.ispit=i.id and i.predmet={$predmet} and i.akademska_godina={$ag}\n\t\t\tORDER BY i.datum DESC LIMIT 1"); if (mysql_num_rows($q105) > 0) { $datum_u_indeksu = mysql_result($q105, 0, 0); if ($datum_u_indeksu > time()) { $datum_provjeren = 0; } else { $datum_provjeren = 1; } } else { $datum_u_indeksu = time(); $datum_provjeren = 0; } } if ($ispis) { ?> <tr bgcolor="<?php echo $boja; ?> "> <td><?php echo $prezime; ?> </td><td><?php echo $ime; ?> </td> <td>ocjena: <?php echo $ocjena; ?> </td> <td><?php echo date("d. m. Y", $datum_u_indeksu); ?> </td> </tr> <?php if ($boja == $boja1) { $boja = $boja2; } else { $boja = $boja1; } } else { if (mysql_num_rows($q100) > 0) { $q110 = myquery("UPDATE konacna_ocjena SET student={$student}, predmet={$predmet}, akademska_godina={$ag}, ocjena={$ocjena}, datum=NOW(), datum_u_indeksu=FROM_UNIXTIME({$datum_u_indeksu}), datum_provjeren={$datum_provjeren} WHERE student={$student} AND predmet={$predmet}"); } else { $q110 = myquery("INSERT INTO konacna_ocjena SET student={$student}, predmet={$predmet}, akademska_godina={$ag}, ocjena={$ocjena}, datum=NOW(), datum_u_indeksu=FROM_UNIXTIME({$datum_u_indeksu}), datum_provjeren={$datum_provjeren}"); } zamgerlog("masovno dodana ocjena {$ocjena} (predmet pp{$predmet}, student u{$student})", 4); zamgerlog2("dodana ocjena", $student, $predmet, $ag, $ocjena); } } if ($ispis) { if ($greska == 0) { ?> </tbody></table> <p>Potvrdite upis ocjena ili se vratite na prethodni ekran.</p> <p><input type="submit" name="nazad" value=" Nazad "> <input type="submit" value=" Potvrda"></p> </form> <?php } else { ?> </tbody></table> <p>U unesenim podacima ima grešaka. Da li ste izabrali ispravan format ("Prezime[TAB]Ime" vs. "Prezime Ime")? Vratite se nazad kako biste ovo popravili.</p> <p><input type="submit" name="nazad" value=" Nazad "></p> </form> <?php } return; } else { zamgerlog("masovno upisane ocjene na predmet pp{$predmet}", 4); ?> Ocjene su upisane. <script language="JavaScript"> location.href='?sta=nastavnik/ocjena&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> '; </script> <?php } } // Masovni unos konačnih ocjena $format = intval($_POST['format']); if (!$_POST['format']) { $q110 = myquery("select vrijednost from preference where korisnik={$userid} and preferenca='mass-input-format'"); if (mysql_num_rows($q110) > 0) { $format = mysql_result($q110, 0, 0); } else { //default vrijednost $format = 0; } } $separator = intval($_POST['separator']); if (!$_POST['separator']) { $q120 = myquery("select vrijednost from preference where korisnik={$userid} and preferenca='mass-input-separator'"); if (mysql_num_rows($q120) > 0) { $separator = mysql_result($q120, 0, 0); } else { //default vrijednost $separator = 0; } } ?> <p><b>Masovni unos konačnih ocjena</b><br/> <?php echo genform("POST"); ?> <input type="hidden" name="fakatradi" value="0"> <input type="hidden" name="akcija" value="massinput"> <input type="hidden" name="nazad" value=""> <input type="hidden" name="brpodataka" value="1"> <input type="hidden" name="duplikati" value="0"> <textarea name="massinput" cols="50" rows="10"><?php if (strlen($_POST['nazad']) > 1) { print $_POST['massinput']; } ?> </textarea><br/> <br/>Format imena i prezimena: <select name="format" class="default"> <option value="0" <?php if ($format == 0) { print "SELECTED"; } ?> >Prezime[TAB]Ime</option> <option value="1" <?php if ($format == 1) { print "SELECTED"; } ?> >Ime[TAB]Prezime</option> <option value="2" <?php if ($format == 2) { print "SELECTED"; } ?> >Prezime Ime</option> <option value="3" <?php if ($format == 3) { print "SELECTED"; } ?> >Ime Prezime</option></select> Separator: <select name="separator" class="default"> <option value="0" <?php if ($separator == 0) { print "SELECTED"; } ?> >Tab</option> <option value="1" <?php if ($separator == 1) { print "SELECTED"; } ?> >Zarez</option></select><br/><br/> <input type="checkbox" name="datum"> Treća kolona: datum u formatu D. M. G.<br/><br/> <input type="submit" value=" Dodaj "> </form></p> <?php }
function nastavnik_obavjestenja() { global $userid, $user_siteadmin, $conf_ldap_domain; // Parametri $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // Naziv predmeta $q10 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q10) < 1) { biguglyerror("Nepoznat predmet"); zamgerlog("ilegalan predmet {$predmet}", 3); //nivo 3: greska zamgerlog2("nepoznat predmet", $predmet); return; } $predmet_naziv = mysql_result($q10, 0, 0); // Da li korisnik ima pravo ući u modul? if (!$user_siteadmin) { $q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q10) < 1 || mysql_result($q10, 0, 0) == "asistent") { zamgerlog("nastavnik/ispiti privilegije (predmet pp{$predmet})", 3); zamgerlog2("nije nastavnik na predmetu", $predmet, $ag); biguglyerror("Nemate pravo pristupa ovoj opciji"); return; } } ?> <p> </p> <p><h3><?php echo $predmet_naziv; ?> - Obavještenja za studente</h3></p> <script language="JavaScript"> function upozorenje(obavjest) { var a = confirm("Želite li obrisati ovo obavještenje? Ako ste odabrali opciju Slanje maila, ne možete poništiti njen efekat!"); if (a) { document.brisanjeobavjestenja.obavjestenje.value=obavjest; document.brisanjeobavjestenja.submit(); } } </script> <?php echo genform("POST", "brisanjeobavjestenja"); ?> <input type="hidden" name="akcija" value="obrisi_obavjestenje"> <input type="hidden" name="obavjestenje" value=""></form> <?php // LEGENDA tabele poruke // Tip: // 1 - obavjestenja // 2 - lične poruke // Opseg: // 0 - svi korisnici Zamgera // 1 - svi studenti // 2 - svi nastavnici // 3 - svi studenti na studiju (primalac - id studija) // 4 - svi studenti na godini (primalac - id akademske godine) // 5 - svi studenti na predmetu (primalac - id predmeta) // 6 - korisnik (primalac - user id) // Parametri $naslov = $tekst = ""; $citava = intval($_REQUEST['citava']); $izmijeni = intval($_REQUEST['izmijeni']); // Brisanje obavjestenja if ($_POST['akcija'] == "obrisi_obavjestenje" && check_csrf_token()) { $obavjestenje = intval($_POST['obavjestenje']); // Provjera predmeta $q15 = myquery("select primalac, opseg from poruka where id={$obavjestenje}"); if (mysql_num_rows($q15) < 1) { zamgerlog("poruka {$obavjestenje} ne postoji", 3); zamgerlog2("nepostojeca poruka", $obavjestenje); nicemessage("Pogrešan ID poruke! Poruka nije obrisana"); } else { // Provjeravamo prava za brisanje $primalac = mysql_result($q15, 0, 0); $opseg = mysql_result($q15, 0, 1); if ($opseg == 5 && $primalac != $predmet) { zamgerlog("poruka {$obavjestenje} nije za predmet pp{$predmet} nego pp{$primalac}", 3); zamgerlog2("primalac poruke ne odgovara predmetu", $obavjestenje, $predmet, $ag); nicemessage("Pogrešan ID poruke! Poruka nije obrisana"); return; } else { if ($opseg == 6) { $q17 = myquery("select predmet, akademska_godina from labgrupa where id={$primalac}"); if (mysql_result($q17, 0, 0) != $predmet || mysql_result($q17, 0, 1) != $ag) { zamgerlog("poruka {$obavjestenje} je za labgrupu {$primalac} koja nije sa pp{$predmet}", 3); zamgerlog2("primalac poruke ne odgovara labgrupi", $obavjestenje, $predmet, $ag); nicemessage("Pogrešan ID poruke! Poruka nije obrisana"); return; } } } $q20 = myquery("delete from poruka where id={$obavjestenje}"); zamgerlog("obrisano obavjestenje (id {$obavjestenje} )", 2); zamgerlog2("obrisana poruka", $obavjestenje); } } // Novo obavještenje / izmjena obavještenja if ($_POST['akcija'] == 'novo' && check_csrf_token()) { $naslov = my_escape($_REQUEST['naslov']); $tekst = my_escape($_REQUEST['tekst']); $primalac = intval($_REQUEST['primalac']); if ($_REQUEST['email']) { $email = 1; } else { $email = 0; } $io = intval($_REQUEST['izmjena_obavjestenja']); if (strlen($naslov) < 5) { zamgerlog("tekst vijesti je prekratak ({$naslov})", 3); zamgerlog2("tekst poruke je prekratak", 0, 0, 0, $naslov); niceerror("Tekst vijesti je prekratak"); } else { if ($io > 0) { $q6 = myquery("update poruka set tip=1, opseg=5, primalac={$predmet}, posiljalac={$userid}, ref=0, naslov='{$naslov}', tekst='{$tekst}' where id={$io}"); zamgerlog("izmjena obavjestenja (id {$io})", 2); zamgerlog2("poruka izmijenjena", $io); } else { if ($primalac > 0) { $q6 = myquery("insert into poruka set tip=1, opseg=6, primalac={$primalac}, posiljalac={$userid}, vrijeme=NOW(), ref=0, naslov='{$naslov}', tekst='{$tekst}'"); $io = mysql_insert_id(); // Upit za spisak studenata u grupi $upit = "select o.id, o.ime, o.prezime from osoba as o, student_labgrupa as sl where sl.labgrupa={$primalac} and sl.student=o.id"; } else { $q6 = myquery("insert into poruka set tip=1, opseg=5, primalac={$predmet}, posiljalac={$userid}, vrijeme=NOW(), ref=0, naslov='{$naslov}', tekst='{$tekst}'"); $io = mysql_insert_id(); // Upit za spisak studenata na predmetu $upit = "select o.id, o.ime, o.prezime from osoba as o, student_predmet as sp, ponudakursa as pk where sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and sp.student=o.id"; } // Šaljem mail studentima if ($email == 1) { // Podaci za konverziju naših slova $nasaslova = array("č", "ć", "đ", "š", "ž", "Č", "Ć", "Đ", "Š", "Ž"); $beznasihslova = array("c", "c", "d", "s", "z", "C", "C", "D", "S", "Z"); // Subject email poruke $subject = "OBAVJEŠTENJE: {$predmet_naziv}"; if ($primalac > 0) { $q8 = myquery("select naziv from labgrupa where id={$primalac}"); $subject .= " (" . mysql_result($q8, 0, 0) . ")"; } $subject = iconv("UTF-8", "ISO-8859-2", $subject); // neki mail klijenti ne znaju prikazati utf-8 u subjektu $preferences = array("input-charset" => "ISO-8859-2", "output-charset" => "ISO-8859-2", "line-length" => 76, "line-break-chars" => "\n"); $preferences["scheme"] = "Q"; // quoted-printable $subject = iconv_mime_encode("", $subject, $preferences); // Vraćamo naslov i tekst obavještenja koji su ranije escapovani // mail() nema poznatih eksploita po tom pitanju $naslov = $_REQUEST['naslov']; $tekst = $_REQUEST['tekst']; $mail_body = "\n=== OBAVJEŠTENJE ZA STUDENTE ===\n\nNastavnik ili saradnik na predmetu {$predmet_naziv} poslao vam je sljedeće obavještenje:\n\n{$naslov}\n\n{$tekst}"; // Podaci za from polje $q9 = myquery("select o.ime, o.prezime from osoba as o where o.id={$userid}"); $from = mysql_result($q9, 0, 0) . " " . mysql_result($q9, 0, 1); $from = str_replace($nasaslova, $beznasihslova, $from); $q9a = myquery("SELECT adresa FROM email WHERE osoba={$userid} ORDER BY sistemska DESC, id"); if (mysql_num_rows($q9a) < 1) { niceerror("Ne možemo poslati mail jer nemate definisanu adresu."); print "Da bi se mail mogao poslati, mora biti definisana odlazna adresa (adresa pošiljaoca). Molimo vas da u vašem <a href=\"?sta=common/profil\">profilu</a> podesite vašu e-mail adresu."; return 0; } $from .= " <" . mysql_result($q9a, 0, 0) . ">"; $add_header = "From: {$from}\r\nContent-Type: text/plain; charset=utf-8\r\n"; $broj = 0; $q7 = myquery($upit); while ($r7 = mysql_fetch_row($q7)) { $student_id = $r7[0]; $student_ime_prezime = str_replace($nasaslova, $beznasihslova, "{$r7['1']} {$r7['2']}"); // Određujemo email adrese studenta $q9b = myquery("SELECT adresa FROM email WHERE osoba={$student_id} ORDER BY sistemska DESC, id"); $mail_to = ""; $mail_cc = ""; // Prvu adresu stavljamo u To: a sve ostale u Cc: kako bi mail server otkrio eventualne aliase while ($r9b = mysql_fetch_row($q9b)) { if ($mail_to == "") { $mail_to = $r9b[0]; } $mail_cc .= "{$student_ime_prezime} <{$r9b['0']}>; "; } if ($mail_to != "") { // Da li student ima ijednu adresu? mail($mail_to, $subject, $mail_body, "{$add_header}" . "Cc: {$mail_cc}"); nicemessage("Mail poslan za {$student_ime_prezime} <{$mail_to}>"); } } } // if ($email==1)... zamgerlog("novo obavjestenje (predmet pp{$predmet})", 2); zamgerlog2("nova poruka poslana", $io); } $naslov = $tekst = ""; } } // Stara obavjestenja // Obavjestenja od proslih akademskih godina nisu relevantna: $q5 = myquery("select naziv from akademska_godina where id={$ag}"); $manjidatum = intval(mysql_result($q5, 0, 0)) . "-09-01"; $vecidatum = intval(mysql_result($q5, 0, 0) + 1) . "-10-01"; $q10 = myquery("select distinct p.id, UNIX_TIMESTAMP(p.vrijeme), p.naslov, p.tekst, p.opseg, p.primalac from poruka as p, labgrupa as l where p.tip=1 and (p.opseg=5 and p.primalac={$predmet} and p.vrijeme>'{$manjidatum}' and p.vrijeme<'{$vecidatum}' or p.opseg=6 and p.primalac=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}) order by vrijeme"); if (mysql_num_rows($q10) > 0) { print "<p>Do sada unesena obavještenja:</p>\n<ul>\n"; } else { print "<p>Do sada niste unijeli nijedno obavještenje.</p>"; } while ($r10 = mysql_fetch_row($q10)) { if ($obrisi == $r10[0]) { $q20 = myquery("delete from poruka where id={$obrisi}"); zamgerlog("obrisano obavjestenje (id {$obrisi})", 2); zamgerlog2("obrisana poruka", $obrisi); continue; } print "<li><b>(" . date("d.m.Y", $r10[1]) . ")</b> " . $r10[2]; $tekst_poruke = str_replace("\n", "<br/>", $r10[3]); if (strlen($tekst_poruke) > 0) { if ($citava == $r10[0]) { print "<br/><br/>" . $tekst_poruke; } else { print " (<a href=\"?sta=nastavnik/obavjestenja&predmet={$predmet}&ag={$ag}&citava={$r10['0']}\">Dalje...</a>)"; } } if ($izmijeni == $r10[0]) { $naslov = $r10[2]; $tekst = $r10[3]; if ($r10[4] == 5) { $labgrupa = 0; } else { $labgrupa = $r10[5]; } } print "<br/> <a href=\"?sta=nastavnik/obavjestenja&predmet={$predmet}&ag={$ag}&izmijeni={$r10['0']}\">[Izmijeni]</a> <a href=\"javascript:onclick=upozorenje('{$r10['0']}')\">[Obriši]</a></li>\n"; } if (mysql_num_rows($q10) > 0) { print "</ul>\n"; } // Formular za novo obavještenje ?> <hr> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="novo"> <?php if ($izmijeni > 0) { ?> <input type="hidden" name="izmjena_obavjestenja" value="<?php echo $izmijeni; ?> "> <p><b>Izmjena postojećeg obavještenja</b></p> <?php } else { ?> <input type="hidden" name="izmjena_obavjestenja" value="0"> <p><b>Unos novog obavještenja</b></p> <?php } ?> <p>Obavještenje za: <select name="primalac" class="default"><option value="0">Sve studente</option> <?php $q20 = myquery("select id,naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag} order by naziv"); while ($r20 = mysql_fetch_row($q20)) { if ($r20[0] == $labgrupa) { $sel = "SELECTED"; } else { $sel = ""; } ?> <option value="<?php echo $r20[0]; ?> " <?php echo $sel; ?> ><?php echo $r20[1]; ?> </option> <?php } ?> </select> <input type="checkbox" name="email" value="1"> Slanje e-maila </p> <p>Kraći tekst (2-3 rečenice):<br/> <textarea rows="5" cols="80" name="naslov"><?php echo $naslov; ?> </textarea> <br/><br/> Detaljan tekst (nije obavezan):<br/> <textarea rows="20" cols="80" name="tekst"><?php echo $tekst; ?> </textarea> <br/><br/> <input type="submit" value=" Pošalji "> <input type="reset" value=" Poništi "> </p></form> <?php }
function akcijaslanje() { global $userid, $conf_files_path; require "lib/manip.php"; // update komponente nakon slanja // Parametri $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); $zadaca = intval($_POST['zadaca']); $zadatak = intval($_POST['zadatak']); $program = $_POST['program']; $povratak_url = "?sta=student/zadaca&predmet={$predmet}&ag={$ag}&zadaca={$zadaca}&zadatak={$zadatak}"; $povratak_html = "<a href=\"{$povratak_url}\">Nastavak</a>"; $povratak_js = "<script>window.onload = function() { setTimeout('redirekcija()', 3000); }\nfunction redirekcija() { window.location='{$povratak_url}'; } </script>\n"; // Da li student slusa predmet? $q195 = myquery("select sp.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$userid} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); if (mysql_num_rows($q195) < 1) { biguglyeerror("Ova zadaća nije iz vašeg predmeta"); return; } $ponudakursa = mysql_result($q195, 0, 0); // Standardna lokacija zadaca $lokacijazadaca = "{$conf_files_path}/zadace/{$predmet}-{$ag}/{$userid}/"; if (!file_exists("{$conf_files_path}/zadace/{$predmet}-{$ag}")) { mkdir("{$conf_files_path}/zadace/{$predmet}-{$ag}", 0777, true); } // Da li neko pokušava da spoofa zadaću? $q200 = myquery("SELECT count(*) FROM zadaca as z, student_predmet as sp, ponudakursa as pk\n\tWHERE sp.student={$userid} and sp.predmet=pk.id and pk.predmet=z.predmet and pk.akademska_godina=z.akademska_godina and z.id={$zadaca}"); if (mysql_result($q200, 0, 0) == 0) { biguglyeerror("Ova zadaća nije iz vašeg predmeta"); return; } // Ovo je potrebno radi pravljenja diff-a if (get_magic_quotes_gpc()) { $program = stripslashes($program); } // Podaci o zadaći $q210 = myquery("select programskijezik, UNIX_TIMESTAMP(rok), attachment, naziv, komponenta, dozvoljene_ekstenzije, automatsko_testiranje from zadaca where id={$zadaca}"); $jezik = mysql_result($q210, 0, 0); $rok = mysql_result($q210, 0, 1); $attach = mysql_result($q210, 0, 2); $naziv_zadace = mysql_result($q210, 0, 3); $komponenta = mysql_result($q210, 0, 4); $zadaca_dozvoljene_ekstenzije = mysql_result($q210, 0, 5); $automatsko_testiranje = mysql_result($q210, 0, 6); // Ako je aktivno automatsko testiranje, postavi status na 1 (automatska kontrola), inace na 4 (ceka pregled) if ($automatsko_testiranje == 1) { $prvi_status = 1; } else { $prvi_status = 4; } // Provjera roka if ($rok <= time()) { niceerror("Vrijeme za slanje zadaće je isteklo!"); zamgerlog("isteklo vrijeme za slanje zadaće z{$zadaca}", 3); // nivo 3 - greska zamgerlog2("isteklo vrijeme za slanje zadace", $zadaca); // nivo 3 - greska print $povratak_html; return; } // Prepisane zadaće se ne mogu ponovo slati $q240 = myquery("select status from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$userid} order by id desc limit 1"); if (mysql_num_rows($q240) > 0 && mysql_result($q240, 0, 0) == 2) { // status = 2 - prepisana zadaća niceerror("Zadaća je prepisana i ne može se ponovo poslati."); print $povratak_html; return; } // Pravimo potrebne puteve if (!file_exists($lokacijazadaca)) { mkdir($lokacijazadaca, 0777); } if ($zadaca > 0 && !file_exists("{$lokacijazadaca}{$zadaca}")) { mkdir("{$lokacijazadaca}{$zadaca}", 0777); } // Temp fajl radi određivanja diff-a if (file_exists("{$lokacijazadaca}{$zadaca}/difftemp")) { unlink("{$lokacijazadaca}{$zadaca}/difftemp"); } // Vrsta zadaće: textarea ili attachment if ($attach == 0) { // textarea if (!check_csrf_token()) { niceerror("Forma za slanje zadaće je istekla."); print "<p>Kada otvorite prozor za unos zadaće, imate određeno vrijeme (npr. 15 minuta) da pošaljete zadaću, u suprotnom zahtjev neće biti prihvaćen iz sigurnosnih razloga. Preporučujemo da zadaću ne radite direktno u prozoru za slanje zadaće nego u nekom drugom programu (npr. CodeBlocks) iz kojeg kopirate u Zamger.</p>"; print $povratak_html; return; } // Određivanje ekstenzije iz jezika $q220 = myquery("select ekstenzija from programskijezik where id={$jezik}"); $ekst = mysql_result($q220, 0, 0); $filename = "{$lokacijazadaca}{$zadaca}/{$zadatak}{$ekst}"; // Kreiranje datoteke if (strlen($program) <= 10) { niceerror("Pokušali ste poslati praznu zadaću!"); print "<p>Vjerovatno ste zaboravili kopirati kod u prozor za slanje.</p>"; zamgerlog("poslao praznu zadacu z{$zadaca} zadatak {$zadatak}", 3); // nivo 3 - greska zamgerlog2("poslao praznu zadacu", $zadaca, $zadatak); // nivo 3 - greska print $povratak_html; return; } else { if ($zadaca > 0 && $zadatak > 0) { // Pravimo backup fajla za potrebe računanja diff-a $postoji_prosla_verzija = false; if (file_exists($filename)) { rename($filename, "{$lokacijazadaca}{$zadaca}/difftemp"); $postoji_prosla_verzija = true; } $f = fopen($filename, 'w'); if (!$f) { niceerror("Greška pri pisanju fajla za zadaću."); zamgerlog("greska pri pisanju zadace z{$zadaca} zadatak {$zadatak}", 3); // nivo 3 - greska zamgerlog2("greska pri pisanju zadace", $zadaca, $zadatak); // nivo 3 - greska if ($postoji_prosla_verzija) { rename("{$lokacijazadaca}{$zadaca}/difftemp", $filename); } print $povratak_html; return; } fwrite($f, $program); fclose($f); // Tabela "zadatak" funkcioniše kao log događaja u // koji se stvari samo dodaju $q230 = myquery("insert into zadatak set zadaca={$zadaca}, redni_broj={$zadatak}, student={$userid}, status={$prvi_status}, vrijeme=now(), filename='{$zadatak}{$ekst}', userid={$userid}"); $id_zadatka = mysql_insert_id(); // Pravljenje diffa if ($postoji_prosla_verzija) { $diff = `/usr/bin/diff -u {$lokacijazadaca}{$zadaca}/difftemp {$filename}`; $diff = my_escape($diff); if (strlen($diff) > 1) { $q250 = myquery("insert into zadatakdiff set zadatak={$id_zadatka}, diff='{$diff}'"); } unlink("{$lokacijazadaca}{$zadaca}/difftemp"); } nicemessage($naziv_zadace . "/Zadatak " . $zadatak . " uspješno poslan!"); update_komponente($userid, $ponudakursa); zamgerlog("poslana zadaca z{$zadaca} zadatak {$zadatak}", 2); // nivo 2 - edit zamgerlog2("poslana zadaca (textarea)", $zadaca, $zadatak); // nivo 2 - edit print $povratak_html; print $povratak_js; return; } else { zamgerlog("greska pri slanju zadace (zadaca z{$zadaca} zadatak {$zadatak} filename {$filename})", 3); zamgerlog2("greska pri slanju zadace (textarea)", $zadaca, $zadatak); // nivo 2 - edit niceerror("Greška pri slanju zadaće. Kontaktirajte tutora."); print $povratak_html; return; } } } else { // if ($attach==0)... $program = $_FILES['attachment']['tmp_name']; if ($program && file_exists($program) && $_FILES['attachment']['error'] === UPLOAD_ERR_OK) { $ime_fajla = strip_tags(basename($_FILES['attachment']['name'])); // Ukidam HTML znakove radi potencijalnog XSSa $ime_fajla = str_replace("&", "", $ime_fajla); $ime_fajla = str_replace("\"", "", $ime_fajla); $puni_put = "{$lokacijazadaca}{$zadaca}/{$ime_fajla}"; // Provjeravamo da li je ekstenzija na spisku dozvoljenih $ext = "." . pathinfo($ime_fajla, PATHINFO_EXTENSION); // FIXME: postojeći kod očekuje da ekstenzije počinju tačkom... $db_doz_eks = explode(',', $zadaca_dozvoljene_ekstenzije); if ($zadaca_dozvoljene_ekstenzije != "" && !in_array($ext, $db_doz_eks)) { niceerror("Tip datoteke koju ste poslali nije dozvoljen."); print "<p>Na ovoj zadaći dozvoljeno je slati samo datoteke jednog od sljedećih tipova: <b>{$zadaca_dozvoljene_ekstenzije}</b>.<br>\n\t\t\t\tVi ste poslali datoteku tipa: <b>{$ext}</b>.</p>"; zamgerlog("pogresan tip datoteke (z{$zadaca})", 3); zamgerlog2("pogresan tip datoteke", $zadaca); print $povratak_html; return; } // Diffing $diff = ""; $q255 = myquery("SELECT filename FROM zadatak WHERE zadaca={$zadaca} AND redni_broj={$zadatak} AND student={$userid} ORDER BY id DESC LIMIT 1"); if (mysql_num_rows($q255) > 0) { $stari_filename = "{$lokacijazadaca}{$zadaca}/" . mysql_result($q255, 0, 0); // Podržavamo diffing ako je i stara i nova ekstenzija ZIP (TODO ostale vrste arhiva) if (ends_with($stari_filename, ".zip") && ends_with($puni_put, ".zip")) { // Pripremamo temp dir $zippath = "/tmp/difftemp"; if (!file_exists($zippath)) { mkdir($zippath, 0777, true); } else { if (!is_dir($zippath)) { unlink($zippath); mkdir($zippath); } else { rmMinusR($zippath); } } $oldpath = "{$zippath}/old"; $newpath = "{$zippath}/new"; mkdir($oldpath); mkdir($newpath); `unzip -j "{$stari_filename}" -d {$oldpath}`; `unzip -j "{$program}" -d {$newpath}`; $diff = `/usr/bin/diff -ur {$oldpath} {$newpath}`; $diff = clear_unicode(my_escape($diff)); } } if (file_exists($puni_put)) { unlink($puni_put); } rename($program, $puni_put); chmod($puni_put, 0640); // Escaping za SQL $ime_fajla = my_escape($ime_fajla); $q260 = myquery("insert into zadatak set zadaca={$zadaca}, redni_broj={$zadatak}, student={$userid}, status={$prvi_status}, vrijeme=now(), filename='{$ime_fajla}', userid={$userid}"); $id_zadatka = mysql_insert_id(); if (strlen($diff) > 1) { $q270 = myquery("insert into zadatakdiff set zadatak={$id_zadatka}, diff='{$diff}'"); } nicemessage("Z" . $naziv_zadace . "/" . $zadatak . " uspješno poslan!"); update_komponente($userid, $ponudakursa, $komponenta); zamgerlog("poslana zadaca z{$zadaca} zadatak {$zadatak} (attachment)", 2); // nivo 2 - edit zamgerlog2("poslana zadaca (attachment)", $zadaca, $zadatak); print $povratak_html; print $povratak_js; return; } else { switch ($_FILES['attachment']['error']) { case UPLOAD_ERR_OK: $greska = "Poslali ste praznu ili nepostojeću datoteku."; break; case UPLOAD_ERR_INI_SIZE: $greska = "Poslana datoteka je veća od dozvoljene. Trenutno maksimalna dozvoljena veličina je " . ini_get('upload_max_filesize'); break; case UPLOAD_ERR_FORM_SIZE: $greska = "Poslana datoteka je veća od dozvoljene."; // jednom ćemo omogućiti nastavniku da ograniči veličinu kroz formu break; case UPLOAD_ERR_PARTIAL: $greska = "Slanje datoteke je prekinuto, vjerovatno zbog problema sa vašom konekcijom. Molimo pokušajte ponovo."; break; case UPLOAD_ERR_NO_FILE: $greska = "Poslali ste praznu ili nepostojeću datoteku."; break; case UPLOAD_ERR_NO_TMP_DIR: $greska = "1 Greška u konfiguraciji Zamgera: nepostojeći TMP direktorij."; break; case UPLOAD_ERR_CANT_WRITE: $greska = "2 Greška u konfiguraciji Zamgera: nemoguće pisati u TMP direktorij."; break; case UPLOAD_ERR_EXTENSION: $greska = "3 Greška u konfiguraciji Zamgera: neka ekstenzija sprječava upload."; break; default: $greska = "Nepoznata greška u slanju datoteke. Kod: " . $_FILES['attachment']['error']; } zamgerlog("greska kod attachmenta (z{$zadaca}): {$greska}", 3); zamgerlog2("greska pri slanju zadace (attachment)", $zadaca, $zadatak, 0, $greska); niceerror("{$greska}"); print $povratak_html; return; } } }
function studentska_prijemni() { global $_lv_; // Default akcija je unos novog studenta if ($_REQUEST['akcija'] == "") { $_REQUEST['akcija'] = "unos"; } ?> <center> <table border="0" width="100%"> <?php // ODREDJIVANJE TERMINA I NASLOVA $termin = intval($_REQUEST['termin']); if ($termin == 0) { // Daj najskoriji ispit $q10 = myquery("select pt.id, ag.naziv, UNIX_TIMESTAMP(pt.datum), pt.ciklus_studija from prijemni_termin as pt, akademska_godina as ag where pt.akademska_godina=ag.id order by pt.datum desc limit 1"); if (mysql_num_rows($q10) < 1) { $_REQUEST['akcija'] = "novi_ispit"; $termin = 0; } else { $termin = mysql_result($q10, 0, 0); } } else { $q10 = myquery("select pt.id, ag.naziv, UNIX_TIMESTAMP(pt.datum), pt.ciklus_studija from prijemni_termin as pt, akademska_godina as ag where pt.id={$termin} and pt.akademska_godina=ag.id"); if (mysql_num_rows($q10) < 1) { niceerror("Nepostojeći termin."); zamgerlog("nepostojeci termin {$termin}", 3); zamgerlog2("nepostojeci termin prijemnog ispita", $termin); return; } } if (mysql_num_rows($q10) < 1) { // Ovo će se desiti samo ako nije kreiran niti jedan termin $datum = "/"; $ciklus_studija = 1; } else { $datum = date("d. m. Y.", mysql_result($q10, 0, 2)); $ciklus_studija = mysql_result($q10, 0, 3); $naziv = " za " . mysql_result($q10, 0, 1) . " akademsku godinu (" . mysql_result($q10, 0, 3) . " ciklus studija), {$datum}"; } // MENI S LIJEVE STRANE // (ne prikazuje se ako je akcija "pregled") if ($_REQUEST['akcija'] != "pregled") { ?> <tr><td valign="top" width="220"> <!-- Termini prijemnog ispita --> * <a href="?sta=studentska/prijemni&akcija=novi_ispit">Novi prijemni ispit</a><br /> * <a href="?sta=studentska/prijemni&akcija=arhiva_ispita">Arhiva prijemnih ispita</a><br /><br /><br /> <!-- Tabela za linkove koji otvaraju ostale stranice vezane za modul --> <?php echo $datum; ?> :<br /> <table bgcolor="" style="border:1px;border-style:solid;border-color:black"> <tr> <td align="left"><a href="?sta=studentska/prijemni&akcija=unos&termin=<?php echo $termin; ?> ">Unos kandidata</a></td> </tr> <tr> </tr> <tr> <td align="left"><a href="?sta=studentska/prijemni&akcija=brzi_unos&termin=<?php echo $termin; ?> ">Brzi unos</a></td> </tr> <tr> </tr> <tr> <td align="left"><a href="?sta=studentska/prijemni&akcija=pregled&termin=<?php echo $termin; ?> ">Tabelarni pregled kandidata</a></td> </tr> <tr> </tr> <tr> <td><a href="?sta=studentska/prijemni&akcija=prijemni&termin=<?php echo $termin; ?> ">Unos bodova sa prijemnog ispita</a></td> </tr> <tr> </tr> <tr> <td align="left"><a href="?sta=studentska/prijemni&akcija=prijemni_sifre&termin=<?php echo $termin; ?> ">Unos bodova po šiframa</a></td> </tr> <tr> </tr> <tr> <td><a href="?sta=studentska/prijemni&akcija=upis_kriterij&termin=<?php echo $termin; ?> ">Kriteriji za upis</a></td> </tr> <tr> </tr> <tr> <td><a href="?sta=studentska/prijemni&akcija=spisak&termin=<?php echo $termin; ?> ">Spisak kandidata</a></td> </tr> <tr> </tr> <tr> <td><a href="?sta=izvjestaj/prijemni_top10posto&termin=<?php echo $termin; ?> ">Najboljih 10% po školama</a></td> </tr> <tr> </tr> <tr> <td><a href="?sta=studentska/prijemni&akcija=rang_liste&termin=<?php echo $termin; ?> ">Rang liste kandidata</a></td> </tr> </table> </td><td width="10"> </td> <?php } // if ($_REQUEST['akcija'] != "pregled" ) // NASLOV ?> <td valign="top"> <h1>Prijemni ispit</h1> <?php // NOVI PRIJEMNI ISPIT if ($_POST['akcija'] == "novi_ispit_potvrda" && check_csrf_token()) { $ciklus = intval($_REQUEST['ciklus']); if ($ciklus != 1 && $ciklus != 2 && $ciklus != 3) { biguglyerror("Neispravan ciklus studija"); return; } $ag = intval($_REQUEST['_lv_column_akademska_godina']); if (preg_match("/(\\d+).*?(\\d+).*?(\\d+)/", $_REQUEST['datum'], $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; } } } else { biguglyerror("Neispravan datum"); return; } $q20 = myquery("insert into prijemni_termin set akademska_godina={$ag}, datum='{$godina}-{$mjesec}-{$dan}', ciklus_studija={$ciklus}"); zamgerlog("kreiran novi termin za prijemni ispit", 4); // 4 = audit zamgerlog2("kreiran novi termin za prijemni ispit", mysql_insert_id()); ?> <p>Novi termin kreiran. <a href="?sta=studentska/prijemni">Kliknite ovdje za nastavak</a></p> </td></tr></table></center> <?php return; // Necemo da se ispise naziv } if ($_REQUEST['akcija'] == "novi_ispit") { unset($_REQUEST['akcija']); ?> <h2>Novi termin prijemnog ispita:</h2> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="novi_ispit_potvrda"> <table border="0"><tr><td> Ciklus studija:</td><td><select name="ciklus"><option value="1">Prvi</option><option value="2">Drugi</option><option value="3">Treći</option></select> </td></tr><tr><td> Akademska godina:</td><td><?php echo db_dropdown("akademska_godina"); ?> </td></tr><tr><td> Datum održavanja ispita:</td><td><input type="text" name="datum" size="20"> </td></tr><tr><td> </td><td> <input type="submit" value=" Kreiraj "> </td></tr></table> </form> <p>Za povratak, kliknite na link "Unos kandidata" sa lijeve strane.</p> </td></tr></table></center> <?php return; // Necemo da se ispise naziv } // ARHIVA PRIJEMNIH ISPITA if ($_REQUEST['akcija'] == "arhiva_ispita") { ?> <p>Do sada održani prijemni ispiti (po datumu ispita):</p> <ul> <?php $q30 = myquery("select pt.id, ag.naziv, UNIX_TIMESTAMP(pt.datum), pt.ciklus_studija from prijemni_termin as pt, akademska_godina as ag where pt.akademska_godina=ag.id order by pt.datum"); while ($r30 = mysql_fetch_row($q30)) { $datum = date("d. m. Y.", $r30[2]); ?> <li><a href="?sta=studentska/prijemni&termin=<?php echo $r30[0]; ?> ">(<?php echo $datum; ?> ) Akademska <?php echo $r30[1]; ?> godina, <?php echo $r30[3]; ?> . ciklus studija</a></li> <?php } ?> </ul> </td></tr></table></center> <?php return; // Necemo da se ispise naziv } // ISPIS NAZIVA ODABRANOG TERMINA ISPITA ?> <p><?php echo $naziv; ?> </p> <?php // BRZI UNOS SA AUTOMATSKOM OBRADOM if ($_REQUEST['akcija'] == "promijeni_kod") { $osoba = intval($_REQUEST['osoba']); do { $sifra = chr(ord('A') + rand(0, 7)) . chr(ord('A') + rand(0, 7)) . chr(ord('A') + rand(0, 7)) . rand(1, 8) . rand(1, 8); $q3015 = myquery("select count(*) from prijemni_obrazac where sifra='{$sifra}' and prijemni_termin={$termin}"); } while (mysql_result($q3015, 0, 0) > 0); $q3040 = myquery("update prijemni_obrazac set sifra='{$sifra}' where prijemni_termin={$termin} and osoba={$osoba}"); print "Kod promijenjen"; return; } if ($_REQUEST['akcija'] == "prijemni_sifre_submit" && check_csrf_token()) { if ($_POST['fakatradi'] != 1) { $ispis = 1; } else { $ispis = 0; } $redovi = explode("\n", $_POST['massinput']); $separator = intval($_REQUEST['separator']); if ($separator == 1) { $sepchar = ','; } else { $sepchar = "\t"; } $kolona = 2; unset($_REQUEST['fakatradi']); if ($ispis) { print genform("POST"); ?> <input type="hidden" name="fakatradi" value="1"> <?php } $sifra_izasao = array(); $q6 = myquery("select sifra from prijemni_obrazac where prijemni_termin={$termin}"); while ($r6 = mysql_fetch_row($q6)) { $sifra_izasao[$r6[0]] = "nije"; } foreach ($redovi as $red) { $red = trim($red); if (strlen($red) < 2) { continue; } // prazan red // popravljamo nbsp Unicode karakter $red = str_replace("¡", " ", $red); $red = str_replace(" ", " ", $red); $red = my_escape($red); $nred = explode($sepchar, $red, $kolona); $sifra = $nred[0]; $bodovi = floatval(str_replace(",", ".", $nred[1])); // Da li korisnik postoji u bazi? $q10 = myquery("select osoba from prijemni_obrazac where sifra='{$sifra}' and prijemni_termin={$termin}"); if (mysql_num_rows($q10) < 1) { if ($ispis) { print "<font color=\"red\">Nepoznata šifra {$sifra}</font><br>\n"; } $greska = 1; continue; } else { $osoba = mysql_result($q10, 0, 0); $q20 = myquery("select izasao from prijemni_prijava where prijemni_termin={$termin} and osoba={$osoba}"); /*if (mysql_result($q20,0,0)==1) { if ($ispis) { print "<font color=\"red\">Kandidatu pod šifrom $sifra je već evidentiran izlazak na prijemni.</font><br>\n"; } $greska=1; continue; }*/ if ($ispis) { print "-- Upisujem {$bodovi} bodova za kandidata pod šifrom {$sifra}<br>\n"; } else { $q20 = myquery("update prijemni_prijava set izasao=1, rezultat={$bodovi} where prijemni_termin={$termin} and osoba={$osoba}"); } $sifra_izasao[$sifra] = "jeste"; } } // Potvrda i Nazad if ($ispis) { foreach ($sifra_izasao as $sifra => $izasao) { if ($izasao == "nije") { print "Nije izasao: {$sifra}<br />\n"; } } print '<input type="submit" name="nazad" value=" Nazad "> '; if ($greska == 0) { print '<input type="submit" value=" Potvrda ">'; } print "</form>"; return; } else { ?> Upisani rezultati prijemnog. <?php } } if ($_REQUEST['akcija'] == "prijemni_sifre") { ?> <p><hr/></p><p><b>Masovni unos rezultata prijemnog ispita po šiframa</b><br/> <?php echo genform("POST"); ?> <input type="hidden" name="fakatradi" value="0"> <input type="hidden" name="akcija" value="prijemni_sifre_submit"> <input type="hidden" name="nazad" value=""> <input type="hidden" name="visestruki" value="1"> <input type="hidden" name="duplikati" value="0"> <input type="hidden" name="brpodataka" value="1"> <textarea name="massinput" cols="50" rows="10"><?php if (strlen($_POST['nazad']) > 1) { print $_POST['massinput']; } ?> </textarea><br/> <br/>Separator: <select name="separator" class="default"> <option value="0" <?php if ($separator == 0) { print "SELECTED"; } ?> >Tab</option> <option value="1" <?php if ($separator == 1) { print "SELECTED"; } ?> >Zarez</option></select><br/><br/> <br/><br/> <input type="submit" value=" Dodaj "> </form></p><?php } if ($_REQUEST['akcija'] == "brzi_unos") { $bojaime = $bojaimerod = $bojaprezime = $bojajmbg = "#FFFF00"; $rjezik = 'bs'; if ($_REQUEST['subakcija'] == "potvrda" && check_csrf_token()) { $rime = my_escape($_REQUEST['ime']); $rprezime = my_escape($_REQUEST['prezime']); $rimeroditelja = my_escape($_REQUEST['imeroditelja']); $rjmbg = my_escape($_REQUEST['jmbg']); $rjezik = my_escape($_REQUEST['jezik']); if (!preg_match("/\\w/", $rime)) { niceerror("Ime nije ispravno"); $greska = 1; $greskaime = 1; $bojaime = "#FF0000"; } if (!preg_match("/\\w/", $rprezime)) { niceerror("Prezime nije ispravno"); $greska = 1; $greskaprezme = 1; $bojaprezime = "#FF0000"; } if (!preg_match("/\\w/", $rimeroditelja)) { niceerror("Ime roditelja nije ispravno"); $greska = 1; $greskaime = 1; $bojaimerod = "#FF0000"; } if (testjmbg($rjmbg) != "") { niceerror("JMBG neispravan: " . testjmbg($rjmbg)); $greska = 1; $greskajmbg = 1; $bojajmbg = "#FF0000"; } $q2995 = myquery("select count(*) from osoba where jmbg='{$rjmbg}'"); if (mysql_result($q2995, 0, 0) > 0) { niceerror("Osoba sa ovim JMBGom već postoji u bazi"); print "<p>Moguće je da sljedeće:<br />\n\t\t\t1. Pogrešno unesen JMBG. Molimo da ga popravite ispod.<br />\n\t\t\t2. Moguće je da ste ovog kandidata već unijeli! Koristite tabelarni pregled da biste ušli u dosje kandidata, a zatim kliknite na link <i>Odštampaj obrazac</i> koji se nalazi odmah ispod broja dosjea.<br />\n\t\t\t3. Ako se isti kandidat ponovo prijavljuje za prijemni ispit, kliknite na link <i>Unos kandidata</i> a zatim koristite pretragu po broju JMBGa kako biste automatski povukli podatke ovog kandidata i generisali novi obrazac za njega.</p>"; $greska = 1; $greskajmbg = 1; $bojajmbg = "#FF0000"; } if ($greska == 0) { $q3000 = myquery("select broj_dosjea from prijemni_prijava where prijemni_termin={$termin} order by broj_dosjea desc limit 1"); if (mysql_num_rows($q3000) > 0) { $broj_dosjea = mysql_result($q3000, 0, 0) + 1; } else { $broj_dosjea = 1; } $q3010 = myquery("select id from osoba order by id desc limit 1"); $osoba = mysql_result($q3010, 0, 0) + 1; // Određivanje šifre do { $sifra = chr(ord('A') + rand(0, 7)) . chr(ord('A') + rand(0, 7)) . chr(ord('A') + rand(0, 7)) . rand(1, 8) . rand(1, 8); $q3015 = myquery("select count(*) from prijemni_obrazac where sifra='{$sifra}' and prijemni_termin={$termin}"); } while (mysql_result($q3015, 0, 0) > 0); // Određivanje datuma rođenja iz JMBGa $datumrod = mktime(0, 0, 0, substr($rjmbg, 2, 2), substr($rmjbg, 0, 2), substr($rjmbg, 4, 3) + 1000); $q3020 = myquery("insert into osoba set id={$osoba}, ime='{$rime}', prezime='{$rprezime}', imeoca='{$rimeroditelja}', jmbg='{$rjmbg}', datum_rodjenja=FROM_UNIXTIME({$datumrod})"); $q3030 = myquery("insert into prijemni_prijava set prijemni_termin={$termin}, osoba={$osoba}, broj_dosjea={$broj_dosjea}, izasao=0, rezultat=0"); $q3040 = myquery("insert into prijemni_obrazac set prijemni_termin={$termin}, osoba={$osoba}, sifra='{$sifra}', jezik='{$rjezik}'"); if ($ciklus_studija == 1) { $q3050 = myquery("select count(*) from uspjeh_u_srednjoj where osoba={$osoba}"); if (mysql_result($q3050, 0, 0) == 0) { // Kreiramo blank zapis u tabeli uspjeh u srednjoj kako bi kandidat bio prikazan u tabeli, a naknadno se može popuniti podacima $q3060 = myquery("insert into uspjeh_u_srednjoj set osoba={$osoba}"); } } else { $q3050 = myquery("select count(*) from prosliciklus_uspjeh where osoba={$osoba}"); if (mysql_result($q3050, 0, 0) == 0) { // Kreiramo blank zapis u tabeli uspjeh u srednjoj kako bi kandidat bio prikazan u tabeli, a naknadno se može popuniti podacima $q3060 = myquery("insert into prosliciklus_uspjeh set osoba={$osoba}"); } } zamgerlog("brzo unesen kandidat {$rime} {$rprezime} za termin {$termin}", 2); zamgerlog2("brzo unesen kandidat za prijemni", $termin, 0, 0, "{$rime} {$rprezime}"); ?> <table border="1" cellspacing="0" cellpadding="3"><tr><td> <table border="0"> <tr><td>Broj dosjea:</td><td><b><?php echo $broj_dosjea; ?> </b></td></tr> <tr><td>Šifra za prijemni ispit:</td><td><b><?php echo $sifra; ?> </b></td></tr> <tr><td>Ime:</td><td><b><?php echo $rime; ?> </b></td></tr> <tr><td>Prezime:</td><td><b><?php echo $rprezime; ?> </b></td></tr> <tr><td>Ime roditelja:</td><td><b><?php echo $rimeroditelja; ?> </b></td></tr> <tr><td>JMBG:</td><td><b><?php echo $rjmbg; ?> </b></td></tr> </table> </td></tr></table> <p><a href="?sta=izvjestaj/prijemni_brzi_unos&termin=<?php echo $termin; ?> &osoba=<?php echo $osoba; ?> " target="_new">Odštampaj obrazac</a></p> <p><a href="?sta=studentska/prijemni&termin=<?php echo $termin; ?> &akcija=brzi_unos">Unos sljedećeg studenta</a></p> <?php return; } } ?> <script language="JavaScript"> // Kada korisnik ukuca nesto u obavezno polje, ono prestaje biti zuto (postaje bijelo) function odzuti(nesto) { nesto.style.backgroundColor = '#FFFFFF'; } // Predji na sljedece polje pritiskom na dugme enter function enterhack(e,gdje) { if(e.keyCode==13) { document.getElementById(gdje).focus(); return false; } } function provjeri(varijablu) { var nesto = document.getElementById(varijablu); if(nesto.value=="") { alert("Niste unijeli "+varijablu); nesto.focus(); self.scrollTo(nesto.offsetLeft,nesto.offsetTop); return false; } return true; } function provjeri_sve() { if (!provjeri('ime')) return false; if (!provjeri('imeroditelja')) return false; if (!provjeri('prezime')) return false; if (!provjeri('jmbg')) return false; document.getElementById('slanje').disabled = true; document.getElementsByName('brzaforma')[0].submit(); return true; } </script> <?php echo genform("POST", "brzaforma"); ?> <input type="hidden" name="subakcija" value="potvrda"> <h2>Brzi unos kandidata za prijemni ispit</h2> <table border="0"> <tr> <td>Ime:</td><td><input type="text" name="ime" id="ime" size="20" style="background-color:<?php echo $bojaime; ?> " oninput="odzuti(this)" autocomplete="off" onkeypress="return enterhack(event,'prezimeoca')" value="<?php echo $rime; ?> " /></td> </tr> <tr> <td>Ime roditelja:</td><td><input type="text" name="imeroditelja" id="imeroditelja" size="20" style="background-color:<?php echo $bojaimerod; ?> " oninput="odzuti(this)" autocomplete="off" onkeypress="return enterhack(event,'prezimeoca')" value="<?php echo $rimeroditelja; ?> " /></td> </tr> <tr> <td>Prezime:</td><td><input type="text" name="prezime" id="prezime" size="20" style="background-color:<?php echo $bojaprezime; ?> " oninput="odzuti(this)" autocomplete="off" onkeypress="return enterhack(event,'prezimeoca')" value="<?php echo $rprezime; ?> " /></td> </tr> <tr> <td>JMBG:</td><td><input type="text" name="jmbg" id="jmbg" size="20" style="background-color:<?php echo $bojajmbg; ?> " oninput="odzuti(this)" autocomplete="off" onkeypress="return enterhack(event,'prezimeoca')" value="<?php echo $rjmbg; ?> " /></td> </tr> <tr> <td>Jezik:</td><td> <select name="jezik"> <option value="bs" <?php if ($rjezik == "bs") { print "CHECKED"; } ?> >Bosanski</option> <option value="en" <?php if ($rjezik == "en") { print "CHECKED"; } ?> >Engleski</option> </select> </td> </tr> <tr> <td> </td><td><input type="button" id="slanje" value="Pošalji" onclick="provjeri_sve()"></td> </tr> </table> </form> <?php } // GENERATORI IZVJEŠTAJA if ($_REQUEST['akcija'] == "spisak") { ?> <form action="index.php" method="GET"> <input type="hidden" name="sta" value="izvjestaj/prijemni"> <input type="hidden" name="akcija" value="kandidati"> <input type="hidden" name="termin" value="<?php echo $termin; ?> "> <h2>Spisak kandidata za prijemni ispit</h2> <p>Studij: <select name="studij"><option value="0">Svi zajedno</option><?php $q1000 = myquery("select s.id, s.naziv from studij as s, tipstudija as ts where s.tipstudija=ts.id and ts.ciklus={$ciklus_studija} and ts.moguc_upis=1 and s.moguc_upis=1 order by s.naziv"); while ($r1000 = mysql_fetch_row($q1000)) { print "<option value=\"{$r1000['0']}\">{$r1000['1']}</option>\n"; } ?> </select></p> <p>Državljanstvo: <select name="iz"><option value="bih">BiH</option> <option value="strani">Strani državljani</option> <option>Svi zajedno</option> </select></p> <p>Sortirano po: <select name="sort"><option value="abecedno">imenu i prezimenu</option> <option>ukupnom broju bodova</option> </select></p> <input type="submit" value=" Kreni "> </form> <?php } if ($_REQUEST['akcija'] == "rang_liste") { ?> <form action="index.php" method="GET"> <input type="hidden" name="sta" value="izvjestaj/prijemni"> <input type="hidden" name="akcija" value="rang_liste"> <input type="hidden" name="termin" value="<?php echo $termin; ?> "> <h2>Rang liste kandidata</h2> <p>Vrsta izvještaja: <select name="vrsta"><option value="preliminarni">Preliminarni rezultati</option> <option value="konacni">Konačni rezultati</option></select></p> <p>Studij: <select name="studij"><?php $q1000 = myquery("select s.id, s.naziv from studij as s, tipstudija as ts where s.tipstudija=ts.id and ts.ciklus={$ciklus_studija} and ts.moguc_upis=1 and s.moguc_upis=1 order by s.naziv"); while ($r1000 = mysql_fetch_row($q1000)) { print "<option value=\"{$r1000['0']}\">{$r1000['1']}</option>\n"; } ?> </select></p> <p>Državljanstvo: <select name="iz"><option value="bih">BiH</option> <option value="strani">Strani državljani</option> <option>Svi zajedno</option> </select></p> <p>Način studiranja: <select name="nacin"> <option value="o_trosku_kantona">O trošku kantona</option> <option value="samofinansirajuci">Samofinansirajući</option> <option value="redovni">O trošku kantona i samofinansirajući</option> <option value="vanredni">Vanredni</option> <option>Svi zajedno</option> </select></p> <input type="submit" value=" Kreni "> </form> <?php } // UNOS KRITERIJA ZA UPIS if ($_REQUEST['akcija'] == "upis_kriterij") { if ($_POST['spremi'] && check_csrf_token()) { $rdonja = intval($_REQUEST['donja_granica']); $rgornja = intval($_REQUEST['gornja_granica']); $rkandidatisd = intval($_REQUEST['kandidati_sd']); $rkandidatisp = intval($_REQUEST['kandidati_sp']); $rkandidatikp = intval($_REQUEST['kandidati_kp']); $rkandidativan = intval($_REQUEST['kandidati_van']); $rprijemnimax = floatval($_REQUEST['prijemni_max']); $rstudij = intval($_REQUEST['rstudij']); $qInsert = myquery("REPLACE upis_kriterij SET donja_granica={$rdonja}, gornja_granica={$rgornja}, kandidati_strani={$rkandidatisd}, kandidati_sami_placaju={$rkandidatisp}, kandidati_kanton_placa={$rkandidatikp}, kandidati_vanredni={$rkandidativan}, prijemni_max={$rprijemnimax}, studij={$rstudij}, prijemni_termin={$termin}"); $_REQUEST['prikazi'] = true; // prikazi upravo unesene podatke zamgerlog("promijenjeni kriteriji za prijemni ispit termin {$termin}, studij {$rstudij}", 4); zamgerlog2("promijenjeni kriteriji za prijemni ispit", $termin); } if ($_REQUEST['prikazi']) { $rstudij = intval($_REQUEST['rstudij']); $q120 = myquery("select donja_granica, gornja_granica, kandidati_strani, kandidati_sami_placaju, kandidati_kanton_placa, kandidati_vanredni, prijemni_max from upis_kriterij where studij={$rstudij} and prijemni_termin={$termin}"); if (mysql_num_rows($q120) < 1) { $pdonja = $pgornja = $pksd = $pksp = $pkkp = $ppmax = 0; } else { $pdonja = mysql_result($q120, 0, 0); $pgornja = mysql_result($q120, 0, 1); $pksd = mysql_result($q120, 0, 2); $pksp = mysql_result($q120, 0, 3); $pkkp = mysql_result($q120, 0, 4); $pkvan = mysql_result($q120, 0, 5); $ppmax = mysql_result($q120, 0, 6); } } // Spisak dostupnih studija $q130 = myquery("select s.id, s.naziv from studij as s, tipstudija as ts where s.moguc_upis=1 and s.tipstudija=ts.id and ts.ciklus={$ciklus_studija}"); $spisak_studija = ""; while ($r130 = mysql_fetch_row($q130)) { $spisak_studija .= "<option value=\"{$r130['0']}\""; if ($r130[0] == $rstudij) { $spisak_studija .= " selected"; } $spisak_studija .= ">{$r130['1']}</option>\n"; } unset($_REQUEST['spremi']); ?> <SCRIPT language="JavaScript"> function odzuti(nesto) { nesto.style.backgroundColor = '#FFFFFF'; } </SCRIPT> <h3>Unos kriterija za upis</h3> <br/> <?php echo genform("POST"); ?> <table align="left" border="0" width="70%" bgcolor=""> <tr> <td colspan="2" align="left">Odsjek:</td> </tr> <tr> <td><select name="rstudij"><?php echo $spisak_studija; ?> </select></td> <td><input type="submit" name="prikazi" value=" Prikaži "></td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> <tr> <td width="70%" align="left">Maksimalni broj bodova na prijemnom ispitu:</td> <td><input type="text" size="12" name="prijemni_max" style="background-color:#FFFF00" oninput="odzuti(this)" autocomplete="off" value="<?php echo $ppmax; ?> "></td> </tr> <tr> <td width="70%" align="left">Hard limit:</td> <td><input type="text" size="12" name="donja_granica" style="background-color:#FFFF00" oninput="odzuti(this)" autocomplete="off" value="<?php echo $pdonja; ?> "></td> </tr> <tr> <td width="70%" align="left">Soft limit:</td> <td><input type="text" size="12" name="gornja_granica" style="background-color:#FFFF00" oninput="odzuti(this)" autocomplete="off" value="<?php echo $pgornja; ?> "></td> </tr> <tr> <td width="70%" align="left">Broj kandidata (strani državljani):</td> <td><input type="text" size="12" name="kandidati_sd" style="background-color:#FFFF00" oninput="odzuti(this)" autocomplete="off" value="<?php echo $pksd; ?> "></td> </tr> <tr> <td width="70%" align="left">Broj kandidata (sami plaćaju školovanje):</td> <td><input type="text" size="12" name="kandidati_sp" style="background-color:#FFFF00" oninput="odzuti(this)" autocomplete="off" value="<?php echo $pksp; ?> "></td> </tr> <tr> <td width="70%" align="left">Broj kandidata (kanton plaća školovanje):</td> <td><input type="text" size="12" name="kandidati_kp" style="background-color:#FFFF00" oninput="odzuti(this)" autocomplete="off" value="<?php echo $pkkp; ?> "></td> </tr> <tr> <td width="70%" align="left">Broj kandidata (vanrednih):</td> <td><input type="text" size="12" name="kandidati_van" style="background-color:#FFFF00" oninput="odzuti(this)" autocomplete="off" value="<?php echo $pkvan; ?> "></td> </tr> <tr> <td> <td> </tr> <tr> <td><input type="submit" name="spremi" value="Spremi"></td> </tr> </table> </form> <?php } // TABELARNI UNOS BODOVA SA PRIJEMNOG ISPITA if ($_REQUEST['akcija'] == "prijemni") { ?> <h3>Unos bodova sa prijemnog ispita</h3> <br /> <hr color="black" width="100%"> <a href="index.php?sta=studentska/prijemni&akcija=prijemni&sort=prezime&termin=<?php echo $termin; ?> ">Sortirano po prezimenu</a> <a href="index.php?sta=studentska/prijemni&akcija=prijemni&sort=unos&termin=<?php echo $termin; ?> ">Sortirano po broju dosjea</a> <hr color="black" width="100%"> <?php // AJAH i prateće funkcije print ajah_box(); ?> <SCRIPT language="JavaScript"> function dobio_focus(element) { element.style.borderColor='red'; if (element.value == "/") element.value=""; } function izgubio_focus(element) { element.style.borderColor='black'; var id = parseInt(element.id.substr(8)); if (element.value == "") element.value="/"; var vrijednost = element.value; if (vrijednost!=origval[id]) ajah_start("index.php?c=N&sta=common/ajah&akcija=prijemni_unos&osoba="+id+"&vrijednost="+vrijednost+"&termin=<?php echo $termin; ?> ","document.getElementById('prijemni'+"+id+").focus()"); origval[id]=vrijednost; } function enterhack(element,e,gdje) { if(e.keyCode==13) { element.blur(); document.getElementById('prijemni'+gdje).focus(); document.getElementById('prijemni'+gdje).select(); } } var origval=new Array(); </SCRIPT> <table border="1" bordercolordark="grey" cellspacing="0"> <tr><td><b>R. br.</b></td><td width="300"><b>Prezime i ime</b></td> <td><b>Bodovi (srednja šk.)</b></td> <td><b>Bodovi (prijemni)</b></td></tr> <?php $upit = ""; $upit = "SELECT o.id, o.ime, o.prezime, pp.rezultat, pp.izasao, us.opci_uspjeh+us.kljucni_predmeti+us.dodatni_bodovi, pp.broj_dosjea from osoba as o, prijemni_prijava as pp, uspjeh_u_srednjoj as us where o.id=pp.osoba and pp.prijemni_termin={$termin} and us.osoba=o.id"; if ($_REQUEST['sort'] == "prezime") { $upit .= " ORDER BY o.prezime, o.ime"; } else { $upit .= " ORDER BY pp.broj_dosjea"; } $q = myquery($upit); $id = 0; while ($r = mysql_fetch_row($q)) { if ($id != 0) { print "{$r['0']})\"></tr>\n"; } $id = $r[0]; if ($r[4] == 0) { $bodova = "/"; } else { $bodova = $r[3]; } // izasao na prijemni? ?> <SCRIPT language="JavaScript"> origval[<?php echo $id; ?> ]="<?php echo $bodova; ?> ";</SCRIPT> <tr><td><?php echo $r[6]; ?> </td> <td><?php echo $r[2]; ?> <?php echo $r[1]; ?> </td> <td align="center"><?php echo round($r[5] * 10) / 10; ?> </td> <td align="center"><input type="text" id="prijemni<?php echo $id; ?> " size="2" value="<?php echo $bodova; ?> " style="border:1px black solid" onblur="izgubio_focus(this)" onfocus="dobio_focus(this)" onkeydown="enterhack(this,event,<?php } if ($id != 0) { ?> 0)"><?php } ?> </tr> <?php ?> </table> <?php } // BRISANJE KANDIDATA (poziva se sa vise mjesta) if ($_REQUEST["akcija"] == "obrisi") { $osoba = intval($_GET['osoba']); if ($osoba > 0) { myquery("DELETE FROM prijemni_prijava WHERE osoba={$osoba} AND prijemni_termin={$termin} LIMIT 1"); myquery("DELETE FROM prijemni_obrazac WHERE osoba={$osoba} AND prijemni_termin={$termin} LIMIT 1"); // Necemo brisati osobu i ostale podatke zamgerlog("brisem osobu u{$osoba} sa prijemnog - termin {$termin}", 4); zamgerlog2("brisem osobu sa prijemnog", $osoba, $termin); nicemessage("Kandidat ispisan sa prijemnog ispita"); } $_REQUEST['akcija'] = "pregled"; } // SPISAK KANDIDATA - TABELA if ($_REQUEST['akcija'] == "pregled") { if ($ciklus_studija == 1) { $sirina = "4000"; } else { $sirina = "3000"; } ?> <p><a href="?sta=studentska/prijemni&termin=<?php echo $termin; ?> ">< < Nazad na unos kandidata</a></p> <h3>Pregled kandidata</h3> <br /> <hr color="black" width="<?php echo $sirina; ?> "> <a href="index.php?sta=studentska/prijemni&akcija=pregled&sort=prezime&termin=<?php echo $termin; ?> ">Sortirano po prezimenu</a> <a href="index.php?sta=studentska/prijemni&akcija=pregled&sort=bd&termin=<?php echo $termin; ?> ">Sortirano po broju dosjea</a> <a href="index.php?sta=studentska/prijemni&akcija=unos&termin=<?php echo $termin; ?> ">Dodaj kandidata</a> <a href="index.php?sta=studentska/prijemni&akcija=prijemni&termin=<?php echo $termin; ?> ">Unos bodova sa prijemnog ispita</a> <a href="index.php?sta=studentska/prijemni&akcija=kandidati&iz=bih&termin=<?php echo $termin; ?> ">Kandidati BiH</a> <a href="index.php?sta=studentska/prijemni&akcija=kandidati&iz=strani&termin=<?php echo $termin; ?> ">Kandidati (strani državljani)</a> <hr color="black" width="<?php echo $sirina; ?> "> <?php $imena_godina = array(); $q = myquery("select id, naziv from akademska_godina"); while ($r = mysql_fetch_row($q)) { $imena_godina[$r[0]] = $r[1]; } $imena_studija = array(); $q = myquery("select id,kratkinaziv from studij"); while ($r = mysql_fetch_row($q)) { $imena_studija[$r[0]] = $r[1]; } $imena_opcina = array(); $q = myquery("select id, naziv from opcina"); while ($r = mysql_fetch_row($q)) { $imena_opcina[$r[0]] = $r[1]; } $imena_drzava = array(); $q = myquery("select id, naziv from drzava"); while ($r = mysql_fetch_row($q)) { $imena_drzava[$r[0]] = $r[1]; } $imena_nacionalnosti = array(); $q = myquery("select id, naziv from nacionalnost"); while ($r = mysql_fetch_row($q)) { $imena_nacionalnosti[$r[0]] = $r[1]; } $imena_skola = $opcina_skola = $domaca_skola = array(); $q = myquery("select id, naziv, opcina, domaca from srednja_skola"); while ($r = mysql_fetch_row($q)) { $imena_skola[$r[0]] = $r[1]; $opcina_skola[$r[0]] = $imena_opcina[$r[2]]; $domaca_skola[$r[0]] = $r[3]; } $imena_mjesta = $opcine_mjesta = $drzave_mjesta = array(); $q = myquery("select id, naziv, opcina, drzava from mjesto"); while ($r = mysql_fetch_row($q)) { $imena_mjesta[$r[0]] = $r[1]; $opcine_mjesta[$r[0]] = $imena_opcina[$r[2]]; $drzave_mjesta[$r[0]] = $imena_drzava[$r[3]]; } $imena_kantona = array(); $q = myquery("select id, naziv from kanton"); while ($r = mysql_fetch_row($q)) { $imena_kantona[$r[0]] = $r[1]; } if ($ciklus_studija == 1) { $sqlSelect = "SELECT o.id, o.ime, o.prezime, o.imeoca, o.prezimeoca, o.imemajke, o.prezimemajke, o.spol, UNIX_TIMESTAMP(o.datum_rodjenja), o.mjesto_rodjenja, o.nacionalnost, o.drzavljanstvo, o.boracke_kategorije, o.jmbg, us.srednja_skola, us.godina, us.ucenik_generacije, o.adresa, o.adresa_mjesto, o.telefon, o.kanton, us.opci_uspjeh, us.kljucni_predmeti, us.dodatni_bodovi, pp.broj_dosjea, ns.naziv, pp.rezultat, pp.izasao, pp.studij_prvi, pp.studij_drugi, pp.studij_treci, pp.studij_cetvrti, pp.broj_dosjea\n\t\tFROM osoba as o, uspjeh_u_srednjoj as us, prijemni_prijava as pp, nacin_studiranja as ns\n\t\tWHERE pp.osoba=o.id and pp.prijemni_termin={$termin} and us.osoba=o.id and pp.nacin_studiranja=ns.id "; } else { $sqlSelect = "SELECT o.id, o.ime, o.prezime, o.imeoca, o.prezimeoca, o.imemajke, o.prezimemajke, o.spol, UNIX_TIMESTAMP(o.datum_rodjenja), o.mjesto_rodjenja, o.nacionalnost, o.drzavljanstvo, o.boracke_kategorije, o.jmbg, 0, 0, 0, o.adresa, o.adresa_mjesto, o.telefon, o.kanton, pcu.opci_uspjeh, 0, pcu.dodatni_bodovi, pp.broj_dosjea, ns.naziv, pp.rezultat, pp.izasao, pp.studij_prvi, pp.studij_drugi, pp.studij_treci, pp.studij_cetvrti, pp.broj_dosjea\n\t\tFROM osoba as o, prosliciklus_uspjeh as pcu, prijemni_prijava as pp, nacin_studiranja as ns\n\t\tWHERE pp.osoba=o.id and pp.prijemni_termin={$termin} and pcu.osoba=o.id and pp.nacin_studiranja=ns.id "; } if ($_REQUEST['sort'] == "bd") { $sqlSelect .= "ORDER BY pp.broj_dosjea"; } else { $sqlSelect .= "ORDER BY o.prezime, o.ime"; } $q = myquery($sqlSelect); ?> <table width="<?php echo $sirina; ?> " border="1" cellpadding="1" cellspacing="1" bordercolor="#000000"> <tr> <td width="10"><b>R.br.</b></td> <td align="center"><b>Opcije</b></td> <td><b>Prezime</b></td> <td><b>Ime</b></td> <td><b>Prezime oca</b></td> <td><b>Ime oca</b></td> <td><b>Prezime majke</b></td> <td><b>Ime majke</b></td> <td><b>Spol</b></td> <td width="100"><b>Datum rođenja</b></td> <td><b>Mjesto rođenja</b></td> <td><b>Općina rođenja</b></td> <td><b>Država rođenja</b></td> <td><b>Nacionalnost</b></td> <td><b>Državljanstvo</b></td> <td><b>Por. šeh / RVI</b></td> <td><b>JMBG</b></td> <?php if ($ciklus_studija == 1) { ?> <td><b>Završena škola</b></td> <td><b>Općina</b></td> <td><b>Domaća škola</b></td> <td><b>Šk. god.</b></td> <td><b>Uč. gen.</b></td><?php } ?> <td><b>Adresa</b></td> <td width="200"><b>Kanton</b></td> <td><b>Telefon</b></td> <?php if ($ciklus_studija == 1) { ?> <td width="90"><b>Opći uspjeh</b></td> <td width="90"><b>Ključni pred.</b></td> <td width="90"><b>Dodatni bod.</b></td> <td width="90"><b>Prijemni ispit</b></td><?php } else { ?> <td width="90"><b>Prethodni ciklus</b></td> <td width="90"><b>Dodatni bod.</b></td><?php } ?> <td width="70"><b>Tip studija</b></td> <?php if ($ciklus_studija == 1) { ?> <td width="80"><b>Odsjek prvi</b></td> <td width="80"><b>Odsjek drugi</b></td> <td width="80"><b>Odsjek treći</b></td> <td width="80"><b>Odsjek četvrti</b></td> <?php } else { ?> <td width="80"><b>Odsjek</b></td><?php } ?> <td width="10"><b>R.br.</b></td> <td align="center"><b>Opcije</b></td> </tr> <?php $brojac = 1; while ($kandidat = mysql_fetch_row($q)) { ?> <tr> <td align="center"><?php echo $kandidat[24]; ?> </td> <td align="center"> <a href="?sta=studentska/prijemni&akcija=obrisi&osoba=<?php echo $kandidat[0]; ?> &termin=<?php echo $termin; ?> ">Obriši </a> <a href="?sta=studentska/prijemni&akcija=unos&izmjena=<?php echo $kandidat[0]; ?> &termin=<?php echo $termin; ?> ">Izmijeni</a> </td> <td><?php echo $kandidat[2]; ?> </td> <td><?php echo $kandidat[1]; ?> </td> <td><?php echo $kandidat[4]; ?> </td> <td><?php echo $kandidat[3]; ?> </td> <td><?php echo $kandidat[6]; ?> </td> <td><?php echo $kandidat[5]; ?> </td> <td><?php echo $kandidat[7]; ?> </td> <td><?php echo date("d. m. Y", $kandidat[8]); ?> </td> <td><?php echo $imena_mjesta[$kandidat[9]]; ?> </td> <td><?php echo $opcine_mjesta[$kandidat[9]]; ?> </td> <td><?php echo $drzave_mjesta[$kandidat[9]]; ?> </td> <td><?php echo $imena_nacionalnosti[$kandidat[10]]; ?> </td> <td><?php echo $imena_drzava[$kandidat[11]]; ?> </td> <td><?php if ($kandidat[12] == 1) { print "DA"; } else { print " "; } ?> </td> <td><?php echo $kandidat[13]; ?> </td> <?php if ($ciklus_studija == 1) { ?> <td><?php echo $imena_skola[$kandidat[14]]; ?> </td> <td><?php echo $opcina_skola[$kandidat[14]]; ?> </td> <td><?php if ($domaca_skola[$kandidat[14]] > 0) { print "DA"; } else { print " "; } ?> </td> <td><?php echo $imena_godina[$kandidat[15]]; ?> </td> <td><?php if ($kandidat[16] > 0) { print "DA"; } else { print " "; } ?> </td><?php } ?> <td><?php echo $kandidat[17]; ?> , <?php echo $imena_mjesta[$kandidat[18]]; ?> </td> <td><?php echo $imena_kantona[$kandidat[20]]; ?> </td> <td><?php echo $kandidat[19]; ?> </td> <?php if ($ciklus_studija == 1) { ?> <td align="center"><?php echo $kandidat[21]; ?> </td> <td align="center"><?php echo $kandidat[22]; ?> </td> <td align="center"><?php echo $kandidat[23]; ?> </td> <td align="center"><?php echo $kandidat[26]; ?> </td><?php } else { ?> <td align="center"><?php echo $kandidat[21]; ?> </td> <td align="center"><?php echo $kandidat[22]; ?> </td><?php } ?> <td align="center"><?php echo $kandidat[25]; ?> </td> <td align="center"><?php echo $imena_studija[$kandidat[28]]; ?> </td> <?php if ($ciklus_studija == 1) { ?> <td align="center"><?php echo $imena_studija[$kandidat[29]]; ?> </td> <td align="center"><?php echo $imena_studija[$kandidat[30]]; ?> </td> <td align="center"><?php echo $imena_studija[$kandidat[31]]; ?> </td><?php } ?> <td align="center"><?php echo $kandidat[24]; ?> </td> <td align="center"> <a href="?sta=studentska/prijemni&akcija=obrisi&osoba=<?php echo $kandidat[0]; ?> &termin=<?php echo $termin; ?> ">Obriši </a> <a href="?sta=studentska/prijemni&akcija=unos&izmjena=<?php echo $kandidat[0]; ?> &termin=<?php echo $termin; ?> ">Izmijeni</a> </td> </tr> <?php $brojac++; } ?> </table> <hr color="black" width="<?php echo $sirina; ?> "> <a href="index.php?sta=studentska/prijemni&akcija=pregled&sort=prezime&termin=<?php echo $termin; ?> ">Sortirano po prezimenu</a> <a href="index.php?sta=studentska/prijemni&akcija=pregled&sort=bd&termin=<?php echo $termin; ?> ">Sortirano po broju dosjea</a> <a href="index.php?sta=studentska/prijemni&akcija=unos&termin=<?php echo $termin; ?> ">Dodaj kandidata </a> <a href="index.php?sta=studentska/prijemni&akcija=prijemni&termin=<?php echo $termin; ?> ">Unos bodova sa prijemnog ispita </font></a> <a href="index.php?sta=studentska/prijemni&akcija=kandidati&iz=bih&termin=<?php echo $termin; ?> ">Kandidati BiH </font></a> <a href="index.php?sta=studentska/prijemni&akcija=kandidati&iz=strani&termin=<?php echo $termin; ?> ">Kandidati (strani državljani)</font></a> <hr color="black" width="<?php echo $sirina; ?> "> <?php } // POTVRDA UNOSA KANDIDATA // Polje vrstaunosa moze biti: // - novi - kreiraju se novi zapisi u tabelama // - novigreska - edituju se postojeci zapisi, ali korisnik nema mogucnost unosa ocjena // - editovanje - ima mogucnost unosa ocjena // - sljedeci - prelazak na unos sljedeceg kandidata if ($_POST['akcija'] == 'unospotvrda' && check_csrf_token()) { $rosoba = intval($_REQUEST['osoba']); $rbrojdosjea = intval($_REQUEST['broj_dosjea']); $rime = my_escape(trim($_REQUEST['ime'])); $rprezime = my_escape(trim($_REQUEST['prezime'])); $rimeoca = my_escape(trim($_REQUEST['imeoca'])); $rprezimeoca = my_escape(trim($_REQUEST['prezimeoca'])); $rimemajke = my_escape(trim($_REQUEST['imemajke'])); $rprezimemajke = my_escape(trim($_REQUEST['prezimemajke'])); $rspol = $_REQUEST['spol']; // Moze biti samo 'M', 'Z' ili '' $rmjestorod = my_escape(trim($_REQUEST['mjesto_rodjenja'])); $ropcinarod = intval($_REQUEST['opcina_rodjenja']); $ropcinavanbihrod = my_escape(trim($_REQUEST['opcina_rodjenja_van_bih'])); $rdrzavarod = intval($_REQUEST['drzava_rodjenja']); $rnacionalnost = my_escape(trim($_REQUEST['nacionalnost'])); $rdrzavljanstvo = intval($_REQUEST['drzavljanstvo']); $rjmbg = $_REQUEST['jmbg']; // Bice bolje provjeren $rborac = intval($_REQUEST['borac']); $rzavrskola = my_escape(trim($_REQUEST['zavrsena_skola'])); $rskolaopcina = intval($_REQUEST['zavrsena_skola_opcina']); $rskoladomaca = intval($_REQUEST['zavrsena_skola_domaca']); $rskolagodina = intval($_REQUEST['zavrsena_skola_godina']); if ($_REQUEST['ucenik_generacije']) { $rgener = 1; } else { $rgener = 0; } $radresa = my_escape(trim($_REQUEST['adresa'])); $radresamjesto = my_escape(trim($_REQUEST['adresa_mjesto'])); $rtelefon = my_escape(trim($_REQUEST['telefon_roditelja'])); $rkanton = intval($_REQUEST['kanton']); $rnacinstudiranja = intval($_REQUEST['nacin_studiranja']); $opi = intval($_REQUEST['studij_prvi_izbor']); $odi = intval($_REQUEST['studij_drugi_izbor']); $oti = intval($_REQUEST['studij_treci_izbor']); $oci = intval($_REQUEST['studij_cetvrti_izbor']); $ropci = floatval(str_replace(",", ".", $_REQUEST['opci_uspjeh'])); $rkljucni = floatval(str_replace(",", ".", $_REQUEST['kljucni_predmeti'])); $rdodatni = floatval(str_replace(",", ".", $_REQUEST['dodatni_bodovi'])); $rprijemni = floatval(str_replace(",", ".", $_REQUEST['prijemni'])); if ($ciklus_studija == 1) { $rstrucni_stepen = 5; // 5 = bez akademskog zvanja } else { if ($ciklus_studija == 2) { $rstrucni_stepen = 2; // 2 = bakalaureat elektrotehnike - ovo bi vjerovatno trebalo unositi } else { if ($ciklus_studija == 3) { $rstrucni_stepen = 1; // 2 = magistar elektrotehnike - ovo bi vjerovatno trebalo unositi } } } // Obrada datuma 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; } } } // Pronalazak mjesta i srednje skole i dodavanje u bazu $rmjrid = 0; if ($rmjestorod != "") { $q300 = myquery("select id from mjesto where naziv like '{$rmjestorod}'"); if (mysql_num_rows($q300) < 1) { if ($ropcinarod == 143) { $q301 = myquery("insert into mjesto set naziv='{$rmjestorod}', opcina={$ropcinarod}, drzava={$rdrzavarod}, opcina_van_bih='{$ropcinavanbihrod}'"); } else { $q301 = myquery("insert into mjesto set naziv='{$rmjestorod}', opcina={$ropcinarod}, drzava={$rdrzavarod}"); } $q300 = myquery("select id from mjesto where naziv='{$rmjestorod}'"); zamgerlog("upisano novo mjesto rodjenja {$rmjestorod}", 2); zamgerlog2("upisano novo mjesto rodjenja", intval(mysql_result($q300, 0, 0)), 0, 0, $rmjestorod); } else { $q300 = myquery("select id from mjesto where naziv like '{$rmjestorod}' and opcina={$ropcinarod} and drzava={$rdrzavarod}"); if (mysql_num_rows($q300) < 1) { // Napravicemo novo mjesto if ($ropcinarod == 143) { $q301 = myquery("insert into mjesto set naziv='{$rmjestorod}', opcina={$ropcinarod}, drzava={$rdrzavarod}, opcina_van_bih='{$ropcinavanbihrod}'"); } else { $q301 = myquery("insert into mjesto set naziv='{$rmjestorod}', opcina={$ropcinarod}, drzava={$rdrzavarod}"); } $q300 = myquery("select id from mjesto where naziv='{$rmjestorod}' and opcina={$ropcinarod} and drzava={$rdrzavarod}"); zamgerlog("promjena opcine/drzave za mjesto rodjenja {$rmjestorod}", 2); zamgerlog2("promjena opcine/drzave za mjesto rodjenja", intval(mysql_result($q300, 0, 0)), 0, 0, $rmjestorod); } } $rmjrid = mysql_result($q300, 0, 0); } $rnacid = 0; if ($rnacionalnost != "") { $q302 = myquery("select id from nacionalnost where naziv like '{$rnacionalnost}'"); if (mysql_num_rows($q302) < 1) { $q303 = myquery("insert into nacionalnost set naziv='{$rnacionalnost}'"); $q302 = myquery("select id from nacionalnost where naziv='{$rnacionalnost}'"); zamgerlog("upisana nova nacionalnost {$rnacionalnost}", 2); zamgerlog2("upisana nova nacionalnost", intval(mysql_result($q302, 0, 0)), 0, 0, $rnacionalnost); } $rnacid = mysql_result($q302, 0, 0); } $radmid = 0; if ($radresamjesto != "") { $q302 = myquery("select id from mjesto where naziv like '{$radresamjesto}'"); if (mysql_num_rows($q302) < 1) { $q303 = myquery("insert into mjesto set naziv='{$radresamjesto}'"); $q302 = myquery("select id from mjesto where naziv='{$radresamjesto}'"); zamgerlog("upisano novo mjesto (adresa) {$radresamjesto}", 2); zamgerlog2("upisano novo mjesto (adresa)", intval(mysql_result($q302, 0, 0)), 0, 0, $radresamjesto); } $radmid = mysql_result($q302, 0, 0); } $rskolaid = 0; if ($rzavrskola != "") { // $rzavrskola = str_replace(""", "\\\"", $rzavrskola); $rzavrskola = str_replace("\\\\'", "\\'", $rzavrskola); $q304 = myquery("select id from srednja_skola where naziv like '{$rzavrskola}'"); if (mysql_num_rows($q304) < 1) { $q305 = myquery("insert into srednja_skola set naziv='{$rzavrskola}', opcina={$rskolaopcina}, domaca={$rskoladomaca}"); $q304 = myquery("select id from srednja_skola where naziv='{$rzavrskola}' and opcina={$rskolaopcina} and domaca={$rskoladomaca}"); zamgerlog("upisana nova srednja skola {$rzavrskola}", 2); zamgerlog2("upisana nova srednja skola", intval(mysql_result($q304, 0, 0)), 0, 0, $rzavrskola); } else { $q304 = myquery("select id from srednja_skola where naziv like '{$rzavrskola}' and opcina={$rskolaopcina} and domaca={$rskoladomaca}"); if (mysql_num_rows($q304) < 1) { $q305 = myquery("insert into srednja_skola set naziv='{$rzavrskola}', opcina={$rskolaopcina}, domaca={$rskoladomaca}"); $q304 = myquery("select id from srednja_skola where naziv='{$rzavrskola}' and opcina={$rskolaopcina} and domaca={$rskoladomaca}"); zamgerlog("promjena opcine / statusa domacinstva za skolu {$rzavrskola}", 2); zamgerlog2("promjena opcine / statusa domacinstva za skolu", intval(mysql_result($q304, 0, 0)), 0, 0, $rzavrskola); } } $rskolaid = mysql_result($q304, 0, 0); } // Dodatne provjere integriteta koje je lakše uraditi u PHPu nego u JavaScriptu $greska = 0; if (!preg_match("/\\w/", $rime)) { niceerror("Ime nije ispravno"); $greska = 1; $greskaime = 1; } if (!preg_match("/\\w/", $rprezime)) { niceerror("Prezime nije ispravno"); $greska = 1; $greskaprezme = 1; } if ($rspol != 'M' && $rspol != 'Z' && $rspol != '') { niceerror("Spol nije ispravan"); $greska = 1; } if ($rmjrid == 0) { niceerror("Nije uneseno mjesto rođenja"); $greska = 1; $greskamjestorod = 1; } if ($rdrzavljanstvo != 1 && $rkanton != 13) { // 1 = bih niceerror("Državljanstvo je različito od 'BiH' (" . $rdrzavljanstvo . "), a kanton nije stavljen na 'Strani državljanin'"); $greska = 1; $greskadrzavljanstvo = 1; } if (testjmbg($rjmbg) != "") { niceerror("JMBG neispravan: " . testjmbg($rjmbg)); $greska = 1; $greskajmbg = 1; } if (preg_match("/(\\d+).*?(\\d+).*?(\\d+)/", $_REQUEST['datum_rodjenja'], $matches)) { // Ovo je već urađeno: // $dan=$matches[1]; $mjesec=$matches[2]; $godina=$matches[3]; if (!checkdate($mjesec, $dan, $godina)) { niceerror("Datum rođenja je kalendarski nemoguć ({$dan}. {$mjesec}. {$godina})"); $greskadatumrod = 1; $greska = 1; } $jdan = intval(substr($_REQUEST['jmbg'], 0, 2)); $jmjesec = intval(substr($_REQUEST['jmbg'], 2, 2)); $jgodina = intval(substr($_REQUEST['jmbg'], 4, 3)); if ($jgodina > 900) { $jgodina += 1000; } else { $jgodina += 2000; } if ($dan != $jdan || $mjesec != $jmjesec || $godina != $jgodina) { niceerror("Uneseni datum rođenja se ne poklapa s onim u JMBGu"); $greska = 1; $greskadatumrod = 1; } } else { niceerror("Datum rođenja nije ispravan - ne sadrži dovoljan broj cifara."); $greska = 1; $greskadatumrod = 1; } // Transakcija! $q305 = myquery("lock tables osoba write, prijemni_prijava write, uspjeh_u_srednjoj write, log write, prosliciklus_uspjeh write"); // Da li se broj dosjea ponavlja?? if ($_REQUEST['vrstaunosa'] == "novi" || $rosoba == 0) { $q308 = myquery("select count(*) from prijemni_prijava where broj_dosjea={$rbrojdosjea} and prijemni_termin={$termin}"); } else { $q308 = myquery("select count(*) from prijemni_prijava where broj_dosjea={$rbrojdosjea} and prijemni_termin={$termin} and osoba!={$rosoba}"); } if (mysql_result($q308, 0, 0) > 0) { niceerror("Broj dosjea {$rbrojdosjea} je već unesen! Izaberite neki drugi redni broj."); $greska = 1; $greskabrojdos = 1; } // Dodajemo novog kandidata u tabele osoba, prijemni_prijava i uspjeh_u_srednjoj if ($_REQUEST['vrstaunosa'] == "novi" || $rosoba == 0) { // Nova osoba //$min_id=1; $min_id = 2500; // radi lakseg grupisanja brojeva $q310 = myquery("select id+1 from osoba where id>={$min_id} order by id desc limit 1"); if (mysql_num_rows($q310) < 1) { $rosoba = $min_id; } else { $rosoba = mysql_result($q310, 0, 0); } $q320 = myquery("insert into osoba set id={$rosoba}, ime='{$rime}', prezime='{$rprezime}', imeoca='{$rimeoca}', prezimeoca='{$rprezimeoca}', imemajke='{$rimemajke}', prezimemajke='{$rprezimemajke}', spol='{$rspol}', brindexa='', datum_rodjenja='{$godina}-{$mjesec}-{$dan}', mjesto_rodjenja={$rmjrid}, drzavljanstvo={$rdrzavljanstvo}, nacionalnost={$rnacid}, boracke_kategorije={$rborac}, jmbg='{$rjmbg}', adresa='{$radresa}', adresa_mjesto={$radmid}, telefon='{$rtelefon}', kanton={$rkanton}, treba_brisati=0, strucni_stepen={$rstrucni_stepen}, naucni_stepen=6"); // 6 = bez naucnog stepena // Nova prijava prijemni $q330 = myquery("insert into prijemni_prijava set prijemni_termin={$termin}, osoba={$rosoba}, broj_dosjea={$rbrojdosjea}, nacin_studiranja={$rnacinstudiranja}, studij_prvi={$opi}, studij_drugi={$odi}, studij_treci={$oti}, studij_cetvrti={$oci}, izasao=0, rezultat=0"); // Novi uspjeh u srednjoj -- samo za prvi ciklus if ($ciklus_studija == 1) { $q340 = myquery("insert into uspjeh_u_srednjoj set osoba={$rosoba}, srednja_skola={$rskolaid}, godina={$rskolagodina}, opci_uspjeh=0, kljucni_predmeti=0, dodatni_bodovi=0, ucenik_generacije={$rgener}"); } else { $broj_semestara = intval($_REQUEST['broj_semestara']); $q340 = myquery("insert into prosliciklus_uspjeh set osoba={$rosoba}, fakultet=0, akademska_godina=0, broj_semestara={$broj_semestara}, opci_uspjeh=0, dodatni_bodovi=0"); } zamgerlog("novi kandidat za prijemni u{$rosoba} broj dosjea {$rbrojdosjea}", 2); // Nastavljamo sa unosom ocjena: $_REQUEST['akcija'] = "unos"; $vrstaunosa = "editovanje"; $osoba = $rosoba; // Ako dodje do greske, mi cemo ubaciti podatke u bazu ali cemo jednostavno traziti da se ponovo unesu if ($greska == 1) { $vrstaunosa = "novigreska"; } } else { // Editovanje postojeceg kandidata // Updatujem osobu $q350 = myquery("update osoba set ime='{$rime}', prezime='{$rprezime}', imeoca='{$rimeoca}', prezimeoca='{$rprezimeoca}', imemajke='{$rimemajke}', prezimemajke='{$rprezimemajke}', spol='{$rspol}', datum_rodjenja='{$godina}-{$mjesec}-{$dan}', mjesto_rodjenja={$rmjrid}, drzavljanstvo={$rdrzavljanstvo}, nacionalnost={$rnacid}, boracke_kategorije={$rborac}, jmbg='{$rjmbg}', adresa='{$radresa}', adresa_mjesto={$radmid}, telefon='{$rtelefon}', kanton={$rkanton}, treba_brisati=0 where id={$rosoba}"); // Updatujem prijavu prijemnog $q360 = myquery("update prijemni_prijava set broj_dosjea={$rbrojdosjea}, nacin_studiranja={$rnacinstudiranja}, studij_prvi={$opi}, studij_drugi={$odi}, studij_treci={$oti}, studij_cetvrti={$oci}, rezultat={$rprijemni} where osoba={$rosoba} and prijemni_termin={$termin}"); // Updatujem uspjeh u srednjoj -- samo za prvi ciklus if ($ciklus_studija == 1) { $q370 = myquery("update uspjeh_u_srednjoj set srednja_skola={$rskolaid}, godina={$rskolagodina}, opci_uspjeh={$ropci}, kljucni_predmeti={$rkljucni}, dodatni_bodovi={$rdodatni}, ucenik_generacije={$rgener} where osoba={$rosoba}"); } else { $broj_semestara = intval($_REQUEST['broj_semestara']); $q340 = myquery("update prosliciklus_uspjeh set broj_semestara={$broj_semestara}, opci_uspjeh={$ropci}, dodatni_bodovi={$rdodatni} where osoba={$rosoba}"); } zamgerlog("izmjena kandidata za prijemni u{$rosoba} broj dosjea {$rbrojdosjea}", 2); $_REQUEST['akcija'] = "unos"; // Ako je prethodni unos bio posljedica greske... if ($_REQUEST['vrstaunosa'] == "novigreska") { // ...prelazimo na unos ocjena $vrstaunosa = "editovanje"; $osoba = $rosoba; // zaboravi osobu if ($greska == 1) { $vrstaunosa = "novigreska"; } // osim ako nije opet greska // Kod editovanja... } else { // ...unosimo sljedeceg kandidata $vrstaunosa = "novi"; $osoba = 0; // zaboravi osobu if ($greska == 1) { // u slucaju greske ponovo editujemo $vrstaunosa = "editovanje"; $osoba = $rosoba; } } } // Kraj transakcije $q380 = myquery("unlock tables"); if ($_REQUEST['vrstaunosa'] == "novi" || $rosoba == 0) { zamgerlog2("novi kandidat za prijemni", intval($rosoba), 0, 0, $rbrojdosjea); } else { zamgerlog2("izmjena kandidata za prijemni", intval($rosoba), 0, 0, $rbrojdosjea); } } // AKCIJA=UNOS NOVOG STUDENTA if ($_REQUEST['akcija'] == "unos") { // Polje vrstaunosa moze biti: // - novi - kreiraju se novi zapisi u tabelama // - novigreska - edituju se postojeci zapisi, ali korisnik nema mogucnost unosa ocjena // - editovanje - ima mogucnost unosa ocjena // - sljedeci - prelazak na unos sljedeceg kandidata if (!$vrstaunosa) { // ako je prosli put unosen novi kandidat, varijabla $osoba je definisana u akciji unospotvrda if (intval($_REQUEST['izmjena']) > 0) { $vrstaunosa = "editovanje"; $osoba = intval($_REQUEST['izmjena']); } else { $vrstaunosa = "novi"; } } // Traženje postojeće osobe po JMBGu if (intval($_REQUEST['trazijmbg']) > 0) { $jmbg = my_escape($_REQUEST['trazijmbg']); // u biti ne znamo format JMBGa $q1 = myquery("select id from osoba where jmbg='{$jmbg}'"); if (mysql_num_rows($q1) < 1) { niceerror("Traženi JMBG nije pronađen ({$jmbg})."); $vrstaunosa = "novi"; $ejmbg = $jmbg; } else { $osoba = mysql_result($q1, 0, 0); $vrstaunosa = "editovanje"; // Da li je osoba vec na prijemnom? $q2 = myquery("select count(*) from prijemni_prijava where prijemni_termin={$termin} and osoba={$osoba}"); if (mysql_result($q2, 0, 0) > 0) { nicemessage("Osoba sa JMBGom već prijavljena na prijemni"); } else { // Broj dosjea postavljamo na prvi slobodan $q3 = myquery("select broj_dosjea+1 from prijemni_prijava where prijemni_termin={$termin} order by broj_dosjea desc limit 1"); if (mysql_num_rows($q3) < 1) { $nbrojdosjea = 1; } else { $nbrojdosjea = mysql_result($q3, 0, 0); } // Kod upisa na više cikluse, pretpostavljamo da će upisati isti studij // što određujemo na osnovu institucije $sp = 0; if ($ciklus_studija > 1) { $q4 = myquery("select s.institucija from studij as s, student_studij as ss where ss.student={$osoba} and ss.studij=s.id order by ss.akademska_godina desc, ss.semestar desc limit 1"); if (mysql_num_rows($q4) > 0) { // Da li je ikada studirao išta ovdje? $q5 = myquery("select s.id from studij as s, tipstudija as ts where s.institucija=" . mysql_result($q4, 0, 0) . " and s.tipstudija=ts.id and ts.ciklus<={$ciklus_studija}"); $sp = mysql_result($q5, 0, 0); } // Brišemo ranije podatke o uspjehu kako ne bismo stvorili konflikt sa podacima sa prošlog prijemnog (MSc -> PhD) $q5a = myquery("delete from prosliciklus_ocjene where osoba={$osoba}"); $q5b = myquery("delete from prosliciklus_uspjeh where osoba={$osoba}"); } $q6 = myquery("insert into prijemni_prijava set prijemni_termin={$termin}, osoba={$osoba}, broj_dosjea={$nbrojdosjea}, studij_prvi={$sp}"); // Treba li kreirati novi obrazac? $q6a = myquery("select count(*) from prijemni_obrazac where prijemni_termin={$termin} and osoba={$osoba}"); if (mysql_result($q6a, 0, 0) == 0) { do { $sifra = chr(ord('A') + rand(0, 7)) . chr(ord('A') + rand(0, 7)) . chr(ord('A') + rand(0, 7)) . rand(1, 8) . rand(1, 8); $q3015 = myquery("select count(*) from prijemni_obrazac where sifra='{$sifra}' and prijemni_termin={$termin}"); } while (mysql_result($q3015, 0, 0) > 0); $q6b = myquery("insert into prijemni_obrazac set prijemni_termin={$termin}, osoba={$osoba}, sifra='{$sifra}', jezik='bs'"); } nicemessage("Prijavljujem osobu na prijemni ispit"); } // Da li je potrebno kreirati zapis u tabeli "uspjeh u srednjoj"? samo za prvi ciklus if ($ciklus_studija == 1) { $q7 = myquery("select count(*) from uspjeh_u_srednjoj where osoba={$osoba}"); if (mysql_result($q7, 0, 0) < 1) { $q8 = myquery("insert into uspjeh_u_srednjoj set osoba={$osoba}"); // Ostale stvari ce biti popunjene kroz formular } } else { // Za više cikluse, popunićemo tabelu podacima o prethodnom ciklusu iz Zamgera $q9 = myquery("select ko.ocjena, p.ects, pk.semestar from konacna_ocjena as ko, ponudakursa as pk, predmet as p, student_predmet as sp, studij as s, tipstudija as ts where ko.student={$osoba} and ko.predmet=pk.predmet and ko.akademska_godina=pk.akademska_godina and pk.predmet=p.id and pk.id=sp.predmet and sp.student={$osoba} and pk.studij=s.id and s.tipstudija=ts.id and ts.ciklus=" . ($ciklus_studija - 1)); $bodovi = 0; // Odmah izracunavamo i bodove $rednibroj = 1; $maxsemestar = 0; $sumaects = 0; $sumaocjena = 0; $brojocjena = 0; while ($r9 = mysql_fetch_row($q9)) { $q10 = myquery("insert into prosliciklus_ocjene set osoba={$osoba}, redni_broj={$rednibroj}, ocjena={$r9['0']}, ects={$r9['1']}"); $rednibroj++; $bodovi += $r9[0] * $r9[1]; $sumaects += $r9[1]; if ($r9[2] > $maxsemestar) { $maxsemestar = $r9[2]; } $sumaocjena += $r9[0]; $brojocjena++; } // bodovi = suma od (ocjena*ects) / suma ects / brojsemestara //$bodovi = $bodovi / $sumaects / $maxsemestar; // Po novom konkursu od 2010. godine za rangiranje se uzima samo prosjek // Po konkursu iz 2012. godine prosjek se množi sa 10 (max. 100 bodova) da bi se sabrao sa 40 bodova sa prijemnog ispita if ($brojocjena > 0) { $bodovi = round($sumaocjena / $brojocjena * 100) / 10; } else { $bodovi = 0; } $q11 = myquery("insert into prosliciklus_uspjeh set osoba={$osoba}, opci_uspjeh={$bodovi}, broj_semestara={$maxsemestar}"); } } } // Preuzimanje podataka iz baze u slučaju editovanja // Neke default vrijednosti $enacinstudiranja = 1; // Redovni studij $eopci = $ekljucni = $edodatni = $eprijemni = 0; // Bodove postavljamo na nulu $edrzavarodjenja = $edrzavljanstvo = 1; // BiH $eskoladomaca = 1; // domaća škola je default $eskolazavrsena = 0; // godina završetka škole će biti prošla if ($osoba > 0) { $q = myquery("select o.ime, o.prezime, o.imeoca, o.prezimeoca, o.imemajke, o.prezimemajke, o.spol, UNIX_TIMESTAMP(o.datum_rodjenja), o.mjesto_rodjenja, o.drzavljanstvo, o.nacionalnost, o.jmbg, o.boracke_kategorije, o.adresa, o.adresa_mjesto, o.telefon, o.kanton, pp.nacin_studiranja, pp.studij_prvi, pp.studij_drugi, pp.studij_treci, pp.studij_cetvrti, pp.rezultat, pp.broj_dosjea, pp.izasao from osoba as o, prijemni_prijava as pp where o.id={$osoba} and o.id=pp.osoba and pp.prijemni_termin={$termin}"); $eime = mysql_result($q, 0, 0); $eprezime = mysql_result($q, 0, 1); $eimeoca = mysql_result($q, 0, 2); $eprezimeoca = mysql_result($q, 0, 3); $eimemajke = mysql_result($q, 0, 4); $eprezimemajke = mysql_result($q, 0, 5); $espol = mysql_result($q, 0, 6); $edatum = date("d. m. Y.", mysql_result($q, 0, 7)); $emjesto = mysql_result($q, 0, 8); $edrzavljanstvo = mysql_result($q, 0, 9); $enacionalnost = mysql_result($q, 0, 10); $ejmbg = mysql_result($q, 0, 11); $eborac = mysql_result($q, 0, 12); $eadresa = mysql_result($q, 0, 13); $eadresamjesto = mysql_result($q, 0, 14); $etelefon = mysql_result($q, 0, 15); $ekanton = mysql_result($q, 0, 16); $enacinstudiranja = mysql_result($q, 0, 17); $eopi = mysql_result($q, 0, 18); $eodi = mysql_result($q, 0, 19); $eoti = mysql_result($q, 0, 20); $eoci = mysql_result($q, 0, 21); $eprijemni = mysql_result($q, 0, 22); $ebrojdosjea = mysql_result($q, 0, 23); $eizasao = mysql_result($q, 0, 24); if ($ciklus_studija == 1) { // Uzimamo podatke za srednju skolu - samo ako se upisuje na prvi ciklus $q300 = myquery("select srednja_skola, godina, opci_uspjeh, kljucni_predmeti, dodatni_bodovi, ucenik_generacije from uspjeh_u_srednjoj where osoba={$osoba}"); $eskola = mysql_result($q300, 0, 0); $eskolazavr = mysql_result($q300, 0, 1); $eopci = mysql_result($q300, 0, 2); $ekljucni = mysql_result($q300, 0, 3); $edodatni = mysql_result($q300, 0, 4); $egener = mysql_result($q300, 0, 5); } else { // podaci za prosli ciklus $q310 = myquery("select fakultet, akademska_godina, opci_uspjeh, dodatni_bodovi, broj_semestara from prosliciklus_uspjeh where osoba={$osoba}"); $efakultet = mysql_result($q310, 0, 0); $eskolazavr = mysql_result($q300, 0, 1); $eopci = mysql_result($q310, 0, 2); $edodatni = mysql_result($q310, 0, 3); $ebrojsem = mysql_result($q310, 0, 4); } } else { if ($vrstaunosa == "novigreska") { $ebrojdosjea = $rbrojdosjea; } else { // Nova osoba // Odredjujemo broj dosjea $q220 = myquery("select broj_dosjea+1 from prijemni_prijava where prijemni_termin={$termin} order by broj_dosjea desc limit 1"); if (mysql_num_rows($q220) < 1) { $ebrojdosjea = 1; } else { $ebrojdosjea = mysql_result($q220, 0, 0); } } } // Spisak dostupnih studija ovisno o ciklusu studija $q230 = myquery("select s.id, s.kratkinaziv from studij as s, tipstudija as ts where s.moguc_upis=1 and s.tipstudija=ts.id and ts.ciklus={$ciklus_studija} order by s.kratkinaziv"); $studiji = array(); $sstudimena = ""; $sstudbrojevi = ""; while ($r230 = mysql_fetch_row($q230)) { $studiji[$r230[0]] = $r230[1]; if ($sstudimena != "") { $sstudimena .= ","; } $sstudimena .= "'" . $r230[1] . "'"; if ($sstudbrojevi != "") { $sstudbrojevi .= ","; } $sstudbrojevi .= "'" . $r230[0] . "'"; } // Spisak gradova za mjesto rodjenja i adresu $q240 = myquery("select id, naziv, opcina, drzava, opcina_van_bih from mjesto order by naziv"); $gradovir = "<option></option>"; $gradovia = "<option></option>"; $eopcinarodjenja = $edrzavarodjenja = 0; while ($r240 = mysql_fetch_row($q240)) { $gradovir .= "<option"; $gradovia .= "<option"; if ($r240[0] == $emjesto) { $gradovir .= " SELECTED"; $mjestorvalue = $r240[1]; $eopcinarodjenja = $r240[2]; $edrzavarodjenja = $r240[3]; if ($edrzavarodjenja == 1) { $eopcinavanbih = ""; } else { $eopcinavanbih = $r240[4]; } } if ($r240[0] == $eadresamjesto) { $gradovia .= " SELECTED"; $adresarvalue = $r240[1]; } $gradovir .= " onClick=\"javascript:selectujOpcinuRodjenja('{$r240['2']}', '{$r240['3']}');\">{$r240['1']}</option>\n"; $gradovia .= ">{$r240['1']}</option>\n"; } // Spisak srednjih skola $q250 = myquery("select id, naziv, opcina, domaca from srednja_skola order by naziv"); $srednjer = "<option></option>"; $eskolaopcina = $eskoladomaca = 0; while ($r250 = mysql_fetch_row($q250)) { $srednjer .= "<option"; if ($r250[0] == $eskola) { $srednjer .= " SELECTED"; $skolarvalue = $r250[1]; $eskolaopcina = $r250[2]; $eskoladomaca = $r250[3]; } $srednjer .= " onClick=\"javascript:selectujOpcinuSkola('{$r250['2']}', '{$r250['3']}');\">{$r250['1']}</option>\n"; } // Spisak opština $q255 = myquery("select id, naziv from opcina order by naziv"); $opciner = "<option></option>"; $opcinerodjr = "<option></option>"; while ($r255 = mysql_fetch_row($q255)) { $opciner .= "<option value=\"{$r255['0']}\" "; if ($r255[0] == $eskolaopcina) { $opciner .= " SELECTED"; } $opciner .= ">{$r255['1']}</option>\n"; $opcinerodjr .= "<option value=\"{$r255['0']}\" "; if ($r255[0] == $eopcinarodjenja) { $opcinerodjr .= " SELECTED"; } $opcinerodjr .= ">{$r255['1']}</option>\n"; } // Spisak nacionalnosti $q256 = myquery("select id, naziv from nacionalnost order by naziv"); $nacionalnostr = "<option></option>"; while ($r256 = mysql_fetch_row($q256)) { $nacionalnostr .= "<option"; if ($r256[0] == $enacionalnost) { $nacionalnostr .= " SELECTED"; $nacionalnostrvalue = $r256[1]; } $nacionalnostr .= ">{$r256['1']}</option>\n"; } // 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] == $edrzavljanstvo) { $drzavljanstvor .= " SELECTED"; } $drzavljanstvor .= ">{$r257['1']}</option>\n"; } // Spisak ak. godina $q258 = myquery("select id, naziv, aktuelna from akademska_godina order by naziv"); $skolazavr = "<option></option>"; while ($r258 = mysql_fetch_row($q258)) { $skolazavr .= "<option value=\"{$r258['0']}\" "; if ($r258[0] == $eskolazavrsena) { $skolazavr .= " SELECTED"; } if ($r258[2] == 1 && $eskolazavrsena == 0) { $skolazavr .= " SELECTED"; } $skolazavr .= ">{$r258['1']}</option>\n"; } // Spisak kantona $q259 = myquery("select id, naziv from kanton order by naziv"); $kantonr = "<option></option>"; while ($r259 = mysql_fetch_row($q259)) { $kantonr .= "<option value=\"{$r259['0']}\" "; if ($r259[0] == $ekanton) { $kantonr .= " SELECTED"; } $kantonr .= ">{$r259['1']}</option>\n"; } // Spisak načina studiranja $q259a = myquery("select id, naziv from nacin_studiranja where moguc_upis=1 order by id"); $nacinstudiranjar = ""; // Nema blank opcije while ($r259a = mysql_fetch_row($q259a)) { $nacinstudiranjar .= "<option value=\"{$r259a['0']}\" "; if ($r259a[0] == $enacinstudiranja) { $nacinstudiranjar .= " SELECTED"; } $nacinstudiranjar .= ">{$r259a['1']}</option>\n"; } // Tabela za unos podataka - design ?> <h3>Unos kandidata</h3> <br /> <SCRIPT language="JavaScript"> // Funkcija update_izobre() kod izbora studija kao "prvi izbor" izbacuje taj studij iz liste za drugi, treci itd. // Slicno radi i za drugi i treci izbor. function update_izbore() { var studijiimena = new Array(<?php echo $sstudimena; ?> ); var studijibrojevi = new Array(<?php echo $sstudbrojevi; ?> ); var prvi = document.getElementById('studij_prvi_izbor'); odzuti(prvi); var drugi = document.getElementById('studij_drugi_izbor'); var treci = document.getElementById('studij_treci_izbor'); var cetvrti = document.getElementById('studij_cetvrti_izbor'); var drugval = drugi.value; while (drugi.length>1) drugi.options[1]=null; for (i=0; i<4; i++) { if (studijibrojevi[i] != prvi.value) { drugi.options[drugi.length]=new Option(studijiimena[i],studijibrojevi[i]); if (drugval==studijibrojevi[i]) drugi.selectedIndex=drugi.length-1; } } var trecval = treci.value; while (treci.length>1) treci.options[1]=null; for (i=0; i<4; i++) { if (studijibrojevi[i] != prvi.value && studijibrojevi[i] != drugi.value) { treci.options[treci.length]=new Option(studijiimena[i],studijibrojevi[i]); if (trecval==studijibrojevi[i]) treci.selectedIndex=treci.length-1; } } var cetval = cetvrti.value; while (cetvrti.length>1) cetvrti.options[1]=null; for (i=0; i<4; i++) { if (studijibrojevi[i] != prvi.value && studijibrojevi[i] != drugi.value && studijibrojevi[i] != treci.value) { cetvrti.options[cetvrti.length]=new Option(studijiimena[i],studijibrojevi[i]); if (cetval==studijibrojevi[i]) cetvrti.selectedIndex=cetvrti.length-1; } } } // Kada korisnik ukuca nesto u obavezno polje, ono prestaje biti zuto (postaje bijelo) function odzuti(nesto) { nesto.style.backgroundColor = '#FFFFFF'; } // Predji na sljedece polje pritiskom na dugme enter function enterhack(e,gdje) { if(e.keyCode==13) { document.getElementById(gdje).focus(); return false; } } // Trazimo osobu sa datim JMBGom u bazi function jmbg_trazi() { var jmbg = document.getElementById('jmbg').value; document.location.replace('index.php?sta=studentska/prijemni&akcija=unos&trazijmbg='+jmbg+'&termin=<?php echo $termin; ?> '); } // Automatski izbor općine za školu function selectujOpcinuSkola(idOpcine, domaca) { var selOpcine = document.getElementById('zavrsena_skola_opcina'); for (i=0; i<selOpcine.length; i++) if (parseInt(selOpcine.options[i].value)==idOpcine) selOpcine.selectedIndex=i; if (idOpcine==0) selOpcine.selectedIndex=0; else odzuti(selOpcine); // Ovo moze ne raditi... if (document.glavnaforma && document.glavnaforma.zavrsena_skola_domaca) { var radioDomaca = document.glavnaforma.zavrsena_skola_domaca; for (i=0; i<radioDomaca.length; i++) { //alert ("forma "+i); if (parseInt(radioDomaca[i].value) == domaca) radioDomaca[i].checked=true; } } } // Automatski izbor općine za mjesto rođenja function selectujOpcinuRodjenja(idOpcine, idDrzave) { var selOpcine = document.getElementById('opcina_rodjenja'); for (i=0; i<selOpcine.length; i++) if (parseInt(selOpcine.options[i].value)==idOpcine) selOpcine.selectedIndex=i; if (idOpcine==0) selOpcine.selectedIndex=0; else odzuti(selOpcine); var selDrzave = document.getElementById('drzava_rodjenja'); for (i=0; i<selDrzave.length; i++) if (parseInt(selDrzave.options[i].value)==idDrzave) selDrzave.selectedIndex=i; if (idDrzave==0) selDrzave.selectedIndex=0; else odzuti(selDrzave); } </SCRIPT> <script type="text/javascript" src="js/mycombobox.js"></script> <?php // Nećemo da se ove varijable pojavljuju u genform unset($_REQUEST['osoba']); unset($_REQUEST['vrstaunosa']); unset($_REQUEST['broj_dosjea']); unset($_REQUEST['ime']); unset($_REQUEST['prezime']); unset($_REQUEST['imeoca']); unset($_REQUEST['prezimeoca']); unset($_REQUEST['imemajke']); unset($_REQUEST['prezimemajke']); unset($_REQUEST['spol']); unset($_REQUEST['datum_rodjenja']); unset($_REQUEST['mjesto_rodjenja']); unset($_REQUEST['opcina_rodjenja']); unset($_REQUEST['drzava_rodjenja']); unset($_REQUEST['nacionalnost']); unset($_REQUEST['drzavljanstvo']); unset($_REQUEST['jmbg']); unset($_REQUEST['borac']); unset($_REQUEST['zavrsena_skola']); unset($_REQUEST['zavrsena_skola_opcina']); unset($_REQUEST['zavrsena_skola_godina']); unset($_REQUEST['zavrsena_skola_domaca']); unset($_REQUEST['adresa']); unset($_REQUEST['adresa_mjesto']); unset($_REQUEST['telefon_roditelja']); unset($_REQUEST['tip_studija']); unset($_REQUEST['ucenik_generacije']); unset($_REQUEST['studij_prvi_izbor']); unset($_REQUEST['studij_drugi_izbor']); unset($_REQUEST['studij_treci_izbor']); unset($_REQUEST['studij_cetvrti_izbor']); unset($_REQUEST['prijemni']); unset($_REQUEST['opci_uspjeh']); unset($_REQUEST['kljucni_predmeti']); unset($_REQUEST['dodatni_bodovi']); unset($_REQUEST['trazijmbg']); // Navigacija na sljedeći i prethodni broj dosjea // Dostupna samo ako postoji broj $q260 = myquery("select osoba from prijemni_prijava where broj_dosjea<" . intval($ebrojdosjea) . " and prijemni_termin={$termin} order by broj_dosjea desc limit 1"); if (mysql_num_rows($q260) > 0) { $lijevodugme = '<input type="button" value=" << " onclick="javascript:document.location.replace(\'index.php?sta=studentska/prijemni&akcija=unos&izmjena=' . mysql_result($q260, 0, 0) . '&termin=' . $termin . '\')"> '; } else { $lijevodugme = '<input type="button" value=" << " disabled> '; } $q270 = myquery("select osoba from prijemni_prijava where broj_dosjea>" . intval($ebrojdosjea) . " and prijemni_termin={$termin} order by broj_dosjea limit 1"); if (mysql_num_rows($q270) > 0) { $desnodugme = '<input type="button" value=" >> " onclick="javascript:document.location.replace(\'index.php?sta=studentska/prijemni&akcija=unos&izmjena=' . mysql_result($q270, 0, 0) . '&termin=' . $termin . '\')"> '; } else { $desnodugme = '<input type="button" value=" >> " disabled> '; } print genform("POST", "glavnaforma"); ?> <input type="hidden" name="akcija" value="unospotvrda"> <input type="hidden" name="osoba" value="<?php echo $osoba; ?> "> <input type="hidden" name="vrstaunosa" value="<?php echo $vrstaunosa; ?> "> <table border="0" cellpadding="3" cellspacing="0"> <tr> <td width="130" align="left">Broj dosjea:</td> <td><?php echo $lijevodugme; ?> <input maxlength="50" size="5" name="broj_dosjea" id="broj_dosjea" type="text" value="<?php echo $ebrojdosjea; ?> " autocomplete="off" onkeypress="enterhack(event,'ime')" class="default" <?php if ($greskabrojdos) { ?> style="background-color:#FF0000" oninput="odzuti(this)" <?php } ?> ><font color="#FF0000">*</font> <?php echo $desnodugme; ?> </td> </tr> <?php if ($osoba > 0) { ?> <tr><td colspan="2"> <a href="?sta=izvjestaj/prijemni_brzi_unos&termin=<?php echo $termin; ?> &osoba=<?php echo $osoba; ?> " target="_new">Odštampaj obrazac</a> </tr></tr> <?php } ?> <tr><td colspan="2"><br>LIČNI PODACI:</td></tr> <tr> <td width="130" align="left">Ime kandidata:</td> <td><input maxlength="50" size="17" name="ime" id="ime" type="text" class="default" <?php if ($greskaime) { ?> value="<?php echo $eime; ?> " style="background-color:#FF0000" oninput="odzuti(this)" <?php } else { if ($eime) { ?> value="<?php echo $eime; ?> "<?php } else { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } } ?> autocomplete="off" onkeypress="return enterhack(event,'prezime')"><font color="#FF0000">*</font></td> </tr> <tr> <td width="125" align="left">Prezime kandidata:</td> <td><input maxlength="50" size="17" name="prezime" id="prezime" type="text" class="default" <?php if ($greskaprezime) { ?> value="<?php echo $eprezime; ?> " style="background-color:#FF0000" oninput="odzuti(this)" <?php } else { if ($eprezime) { ?> value="<?php echo $eprezime; ?> "<?php } else { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } } ?> autocomplete="off" onkeypress="return enterhack(event,'imeoca')"><font color="#FF0000">*</font></td> </tr> <tr> <td width="125" align="left">Ime oca:</td> <td><input maxlength="50" size="17" name="imeoca" id="imeoca" type="text" class="default" value="<?php echo $eimeoca; ?> " <?php if (!$eimeoca) { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } ?> autocomplete="off" onkeypress="return enterhack(event,'prezimeoca')"></td> </tr> <tr> <td width="125" align="left">Prezime oca:</td> <td><input maxlength="50" size="17" name="prezimeoca" id="prezimeoca" type="text" class="default" value="<?php echo $eprezimeoca; ?> " <?php if (!$eprezimeoca) { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } ?> autocomplete="off" onkeypress="return enterhack(event,'imemajke')"></td> </tr> <tr> <td width="125" align="left">Ime majke:</td> <td><input maxlength="50" size="17" name="imemajke" id="imemajke" type="text" class="default" value="<?php echo $eimemajke; ?> " <?php if (!$eimemajke) { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } ?> autocomplete="off" onkeypress="return enterhack(event,'prezimemajke')"></td> </tr> <tr> <td width="125" align="left">Prezime majke:</td> <td><input maxlength="50" size="17" name="prezimemajke" id="prezimemajke" type="text" class="default" value="<?php echo $eprezimemajke; ?> " <?php if (!$eprezimemajke) { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } ?> autocomplete="off" onkeypress="return enterhack(event,'datum_rodjenja')"></td> </tr> <tr> <td width="125" align="left">Spol:</td> <td><input type="radio" name="spol" id="spol" value="M" <?php if ($espol == 'M') { print "CHECKED"; } ?> > Muški <input type="radio" name="spol" id="spol" value="Z" <?php if ($espol == 'Z') { print "CHECKED"; } ?> > Ženski </td> </tr> <tr> <td width="125" align="left">Datum rođenja:</td> <td><input maxlength="20" size="17" name="datum_rodjenja" id="datum_rodjenja" type="text" class="default" <?php if ($greskadatumrod) { ?> value="<?php echo $edatum; ?> " style="background-color:#FF0000" oninput="odzuti(this)" <?php } else { if ($edatum) { ?> value="<?php echo $edatum; ?> "<?php } else { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } } ?> autocomplete="off" onkeypress="return enterhack(event,'mjesto_rodjenja')"> <font color="#FF0000">*</font></td> </tr> <tr> <td width="125" align="left">Mjesto rođenja:</td> <td><input type="text" name="mjesto_rodjenja" id="mjesto_rodjenja" value="<?php echo $mjestorvalue; ?> " class="default" onKeyDown="return comboBoxEdit(event, 'mjesto_rodjenja'); this.style.backgroundColor = '#FFFFFF';" autocomplete="off" size="17" onInput="this.style.backgroundColor = '#FFFFFF';" onBlur="comboBoxHide('<?php echo $name; ?> ')" <?php if ($greskamjestorod) { ?> style="background-color:#FF0000" onChange="this.style.backgroundColor = '#FFFFFF'"<?php } else { if ($emjesto == 0) { ?> style="background-color:#FFFF00" onChange="this.style.backgroundColor = '#FFFFFF'"<?php } else { ?> style="background-color:#FFFFFF"<?php } } ?> ><img src="images/cb_up.png" width="19" height="18" onClick="comboBoxShowHide('mjesto_rodjenja')" id="comboBoxImg_mjesto_rodjenja" valign="bottom"> <!-- Rezultati pretrage primaoca --> <div id="comboBoxDiv_mjesto_rodjenja" style="position:absolute;visibility:hidden"> <select name="comboBoxMenu_mjesto_rodjenja" id="comboBoxMenu_mjesto_rodjenja" size="10" onClick="comboBoxOptionSelected('mjesto_rodjenja')" onFocus="this.focused=true;" onBlur="this.focused=false;"><?php echo $gradovir; ?> </select> </div><font color="#FF0000">*</font></td> </tr> <tr> <td width="125" align="left">Općina rođenja:</td> <td><select name="opcina_rodjenja" id="opcina_rodjenja" class="default" onChange="this.style.backgroundColor = '#FFFFFF'; if (this.value == 143) document.getElementById('opcina_rodjenja_van_bih').disabled = false; else document.getElementById('opcina_rodjenja_van_bih').disabled = true;" <?php if ($eopcinarodjenja == 0) { ?> style="background-color:#FFFF00" <?php } ?> ><?php echo $opcinerodjr; ?> </select> <font color="#FF0000">*</font></td> </tr> <tr> <td width="125" align="left">Općina rođenja (van BiH):</td> <td><input maxlength="40" size="17" name="opcina_rodjenja_van_bih" id="opcina_rodjenja_van_bih" type="text" class="default" autocomplete="off" <?php if ($eopcinarodjenja != 143) { echo "disabled"; } ?> value="<?php echo $eopcinavanbih; ?> "></td> </tr> <tr> <td width="125" align="left">Država rođenja:</td> <td><select name="drzava_rodjenja" id="drzava_rodjenja" class="default" <?php if ($edrzavarodjenja == 0) { ?> style="background-color:#FFFF00" onChange="this.style.backgroundColor = '#FFFFFF';" <?php } ?> ><?php echo $drzaverodjr; ?> </select> <font color="#FF0000">*</font></td> </tr> <tr> <td width="125" align="left">Nacionalnost:</td> <td><input type="text" name="nacionalnost" id="nacionalnost" value="<?php echo $nacionalnostrvalue; ?> " class="default" onKeyDown="return comboBoxEdit(event, 'nacionalnost'); this.style.backgroundColor = '#FFFFFF';" autocomplete="off" size="17" onInput="this.style.backgroundColor = '#FFFFFF';" <?php if ($enacionalnost == 0) { ?> style="background-color:#FFFF00" onChange="this.style.backgroundColor = '#FFFFFF'"<?php } else { ?> style="background-color:#FFFFFF"<?php } ?> ><img src="images/cb_up.png" width="19" height="18" onClick="comboBoxShowHide('nacionalnost')" id="comboBoxImg_nacionalnost" valign="bottom"> <!-- Rezultati pretrage primaoca --> <div id="comboBoxDiv_nacionalnost" style="position:absolute;visibility:hidden"> <select name="comboBoxMenu_nacionalnost" id="comboBoxMenu_nacionalnost" size="10" onClick="comboBoxOptionSelected('nacionalnost')" onFocus="this.focused=true;" onBlur="this.focused=false;"><?php echo $nacionalnostr; ?> </select> </div><font color="#FF0000">*</font></td> </tr> <tr> <td width="125" align="left">Državljanstvo:</td> <!-- Nije žute boje zato što ima default vrijednost --> <td><select name="drzavljanstvo" id="drzavljanstvo" class="default" <?php if ($greskadrzavljanstvo) { ?> style="background-color:#FF0000" onChange="this.style.backgroundColor = '#FFFFFF'"<?php } ?> ><?php echo $drzavljanstvor; ?> </select> <font color="#FF0000">*</font></td> </tr> <tr> <td width="125" align="left">JMBG:</td> <td><input maxlength="13" size="17" name="jmbg" id="jmbg" type="text" class="default" <?php if ($greskajmbg) { ?> value="<?php echo $ejmbg; ?> " style="background-color:#FF0000" oninput="odzuti(this)" <?php } else { if ($ejmbg) { ?> value="<?php echo $ejmbg; ?> "<?php } else { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } } ?> autocomplete="off" onkeypress="return enterhack(event,'adresa')"><font color="#FF0000">*</font> <input type="button" value=" Traži " onclick="javascript:jmbg_trazi();"></td> </tr> <tr> <td width="125" align="left"> </td> <td><input type="checkbox" name="borac" <?php if ($eborac) { ?> checked="checked" <?php } ?> value="1"> Dijete šehida / borca / pripadnik RVI</td> </tr> <tr><td colspan="2"><br>PODACI O ZAVRŠENOM PRETHODNOM OBRAZOVANJU:</td></tr> <?php // Srednju školu prikazujemo samo za prvi ciklus if ($ciklus_studija == 1) { ?> <tr> <td width="125" align="left">Završena škola:</td> <td><input type="text" name="zavrsena_skola" id="zavrsena_skola" value="<?php echo $skolarvalue; ?> " class="default" onKeyDown="return comboBoxEdit(event, 'zavrsena_skola'); this.style.backgroundColor = '#FFFFFF';" autocomplete="off" size="35" onInput="this.style.backgroundColor = '#FFFFFF';" <?php if ($eskola == 0) { ?> style="background-color:#FFFF00" onChange="this.style.backgroundColor = '#FFFFFF'"<?php } else { ?> style="background-color:#FFFFFF"<?php } ?> ><img src="images/cb_up.png" width="19" height="18" onClick="comboBoxShowHide('zavrsena_skola')" id="comboBoxImg_zavrsena_skola" valign="bottom"> <!-- Rezultati pretrage primaoca --> <div id="comboBoxDiv_zavrsena_skola" style="position:absolute;visibility:hidden"> <select name="comboBoxMenu_zavrsena_skola" id="comboBoxMenu_zavrsena_skola" size="10" onClick="comboBoxOptionSelected('zavrsena_skola')" onFocus="this.focused=true;" onBlur="this.focused=false;"><?php echo $srednjer; ?> </select> </div></td> </tr> <tr> <td width="125" align="left">Općina škole:</td> <td><select name="zavrsena_skola_opcina" id="zavrsena_skola_opcina" class="default" <?php if ($eskolaopcina == 0) { ?> style="background-color:#FFFF00" onChange="this.style.backgroundColor = '#FFFFFF';" <?php } ?> ><?php echo $opciner; ?> </select></td> </tr> <tr> <td width="125" align="left"> </td> <td><input type="radio" name="zavrsena_skola_domaca" id="zavrsena_skola_domaca" value="1" <?php if ($eskoladomaca == 1) { print "CHECKED"; } ?> > Domaća škola <input type="radio" name="zavrsena_skola_domaca" id="zavrsena_skola_domaca" value="0" <?php if ($eskoladomaca == 0) { print "CHECKED"; } ?> > Strana škola </td> </tr> <tr> <td width="125" align="left">U školskoj godini:</td> <!-- Nije žute boje zato što ima default vrijednost --> <td><select name="zavrsena_skola_godina" id="zavrsena_skola_godina" class="default"><?php echo $skolazavr; ?> </select></td> </tr> <tr> <td width="125" align="left">Učenik generacije?</td> <td><input type="checkbox" name="ucenik_generacije" <?php if ($egener) { ?> checked="checked" <?php } ?> value="1"></td> </tr> <?php } ?> <tr><td colspan="2"><br>KONTAKT PODACI:</td></tr> <tr> <td width="125" align="left">Adresa:</td> <td><input maxlength="50" size="17" name="adresa" id="adresa" type="text" class="default" <?php if ($eadresa) { ?> value="<?php echo $eadresa; ?> "<?php } else { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } ?> autocomplete="off" onkeypress="return enterhack(event,'telefon_roditelja')"></td> </tr> <tr> <td width="125" align="left">Adresa (mjesto):</td> <td><input type="text" name="adresa_mjesto" id="adresa_mjesto" value="<?php echo $adresarvalue; ?> " class="default" onKeyDown="return comboBoxEdit(event, 'adresa_mjesto'); this.style.backgroundColor = '#FFFFFF';" autocomplete="off" size="17" onInput="this.style.backgroundColor = '#FFFFFF';" <?php if ($eadresamjesto == 0) { ?> style="background-color:#FFFF00" onChange="this.style.backgroundColor = '#FFFFFF'"<?php } else { ?> style="background-color:#FFFFFF"<?php } ?> ><img src="images/cb_up.png" width="19" height="18" onClick="comboBoxShowHide('adresa_mjesto')" id="comboBoxImg_adresa_mjesto" valign="bottom"> <!-- Rezultati pretrage primaoca --> <div id="comboBoxDiv_adresa_mjesto" style="position:absolute;visibility:hidden"> <select name="comboBoxMenu_adresa_mjesto" id="comboBoxMenu_adresa_mjesto" size="10" onClick="comboBoxOptionSelected('adresa_mjesto')" onFocus="this.focused=true;" onBlur="this.focused=false;"><?php echo $gradovia; ?> </select> </div><font color="#FF0000">*</font></td> </tr> <tr> <td width="125" align="left">Kanton:</td> <td><select name="kanton" id="kanton" class="default" <?php if ($ekanton == 0) { ?> style="background-color:#FFFF00" onChange="this.style.backgroundColor = '#FFFFFF';" <?php } ?> ><?php echo $kantonr; ?> </select> <font color="#FF0000">*</font></td> </tr> <tr> <td width="125" align="left">Telefon roditelja:</td> <td><input maxlength="30" size="17" name="telefon_roditelja" id="telefon_roditelja" type="text" class="default" <?php if ($etelefon) { ?> value="<?php echo $etelefon; ?> "<?php } else { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } ?> autocomplete="off" onkeypress="return enterhack(event,'kanton')"></td> </tr> <tr><td colspan="2"><br>IZBOR STUDIJA:</td></tr> <tr> <td width="125" align="left">Način studiranja</td> <td><select name="nacin_studiranja" id="kanton" class="default" style="background-color:#FFFF00" onChange="this.style.backgroundColor = '#FFFFFF';"><?php echo $nacinstudiranjar; ?> </select></td> </tr> <?php // Više izbora nudimo samo za prvi ciklus studija (svakako je to hack) if ($ciklus_studija == 1) { ?> <tr> <td width="125" align="left">Studij:</td> <td> <table width="100%" border="0" align="center"> <tr><td>Prvi izbor</td><td>Drugi izbor</td><td>Treći izbor</td><td>Četvrti izbor</td></tr> <tr> <td><select name="studij_prvi_izbor" id="studij_prvi_izbor" onchange="update_izbore()" <?php if (!$eopi) { ?> style="background-color:#FFFF00"<?php } ?> ><option></option><?php foreach ($studiji as $id => $naziv) { print "<option value=\"{$id}\""; if ($id == $eopi) { print " selected"; } print ">{$naziv}</option>"; } ?> </select></td> <td><select name="studij_drugi_izbor" id="studij_drugi_izbor" onchange="update_izbore()"><option></option><?php foreach ($studiji as $id => $naziv) { print "<option value=\"{$id}\""; if ($id == $eodi) { print " selected"; } print ">{$naziv}</option>"; } ?> </select></td> <td><select name="studij_treci_izbor" id="studij_treci_izbor" onchange="update_izbore()"><option></option><?php foreach ($studiji as $id => $naziv) { print "<option value=\"{$id}\""; if ($id == $eoti) { print " selected"; } print ">{$naziv}</option>"; } ?> </select></td> <td><select name="studij_cetvrti_izbor" id="studij_cetvrti_izbor" onchange="update_izbore()"><option></option><?php foreach ($studiji as $id => $naziv) { print "<option value=\"{$id}\""; if ($id == $eoci) { print " selected"; } print ">{$naziv}</option>"; } ?> </select></td> </tr> </table> </td> </tr> <?php } else { // Samo jedan izbor -- TODO (mozda) omogućiti konfigurisanje da li je izbor samo jedan ili višestruki na nivou termina ?> <tr> <td width="125" align="left">Studij:</td> <td><select name="studij_prvi_izbor" id="studij_prvi_izbor" <?php if (!$eopi) { ?> style="background-color:#FFFF00"<?php } ?> ><option></option><?php foreach ($studiji as $id => $naziv) { print "<option value=\"{$id}\""; if ($id == $eopi) { print " selected"; } print ">{$naziv}</option>"; } ?> </select> </td> </tr> <?php } if ($eizasao > 0) { ?> <tr> <td width="125" align="left">Bodovi na prijemnom:</td> <td><input maxlength="50" size="17" name="prijemni" id="prijemni" type="text" value="<?php echo $eprijemni; ?> " autocomplete="off"></td> </tr> <?php } else { ?> <input type="hidden" name="prijemni" value="0"> <?php } ?> </table> <br /> <!-- Provjera ispravnosti svih polja na formularu prije slanja --> <SCRIPT language="JavaScript"> function provjeri(varijablu) { var nesto = document.getElementById(varijablu); if(nesto.value=="") { alert("Niste unijeli "+varijablu); nesto.focus(); self.scrollTo(nesto.offsetLeft,nesto.offsetTop); return false; } return true; } function provjeri_sve() { if (!provjeri('ime')) return false; if (!provjeri('prezime')) return false; if (!provjeri('datum_rodjenja')) return false; if (!provjeri('mjesto_rodjenja')) return false; if (!provjeri('opcina_rodjenja')) return false; if (!provjeri('drzava_rodjenja')) return false; if (!provjeri('nacionalnost')) return false; if (!provjeri('drzavljanstvo')) return false; if (!provjeri('broj_dosjea')) return false; if (!provjeri('jmbg')) return false; <?php if ($ciklus_studija == 1) { ?> if (!provjeri('studij_prvi_izbor')) return false; <?php } ?> // Da li je broj dosjea pozitivan broj? var nesto = document.getElementById('broj_dosjea'); if (parseInt(nesto.value) < 1) { alert ("Broj dosjea mora biti veći od nule."); nesto.focus(); self.scrollTo(nesto.offsetLeft, nesto.offsetTop); return false; } var nesto = document.getElementsByName('kanton'); if (nesto[0].value=='-1') { alert("Niste izabrali kanton"); nesto[0].focus(); self.scrollTo(nesto[0].offsetLeft,nesto[0].offsetTop); return false; } var nesto = document.getElementById('studij_prvi_izbor'); if (nesto.value=='') { alert("Niste izabrali odsjek"); nesto.focus(); self.scrollTo(nesto.offsetLeft,nesto.offsetTop); return false; } document.getElementsByName('glavnaforma')[0].submit(); return true; } </script> <?php // UNOS OCJENA IZ SREDNJE SKOLE // Unos ocjena ce se prikazati samo prilikom editovanja, posto su ocjene u zasebnoj tabeli koja se vezuje // za osobu, na taj nacin se osigurava da osoba postoji prilikom editovanja. // Ukoliko bismo se oslonili na prvi slobodan ID u tabeli osoba, postojala bi mogucnost da dva korisnika // unose ocjene za istu osobu (ta bi osoba mogla biti registrovana pod novim IDom ali ne bi imala ocjene, // dok bi druga osoba imala pogresne ocjene) if ($vrstaunosa != "editovanje") { ?> </form> <p><font color="#FF0000">*</font> - Sva polja označena zvjezdicom su obavezna.<br/> <input type="hidden" name="unosocjena" value="1"> <input type="button" value="Unos ocjena" onclick="provjeri_sve()"></p> <p> </p> <?php } else { if ($ciklus_studija == 1) { // Ocjene iz srednje škole ?> <b>Ocjene iz srednje škole:</b><br/> <?php // AJAH i prateće funkcije print ajah_box(); ?> <SCRIPT language="JavaScript"> // Funkcija koja racuna bodove za opci uspjeh i kljucne predmete function izracunaj_bodove() { // Opci uspjeh var sumaocjena=0, brojocjena=0; for (i=1; i<=20; i++) { for (j=1; j<=4; j++) { var id = <?php echo $osoba; ?> *1000 + j*100 + i; var val = document.getElementById('prijemniocjene'+id).value; if (val != "/" && val != "") { sumaocjena += parseInt(val); brojocjena++; } } } var prosjeku; if (brojocjena>0) prosjeku=Math.round((sumaocjena/brojocjena)*100)/100; else prosjeku=0; document.getElementById('opci_uspjeh').value = prosjeku * 4; // Kljucni predmeti var sumekljucni=new Array(), brojkljucni=new Array(), prosjecikljucni=new Array(); for (var i=1; i<=3; i++) { sumekljucni[i]=0; brojkljucni[i]=0; var pocni_od=1; if (i==3) pocni_od=3; for (var j=pocni_od; j<=4; j++) { var id = <?php echo $osoba; ?> *1000 + j*100 + i+90; var val = document.getElementById('prijemniocjene'+id).value; if (val != "/" && val != "") { sumekljucni[i] += parseInt(val); brojkljucni[i]++; } } if (brojkljucni[i]>0) prosjecikljucni[i] = sumekljucni[i]/brojkljucni[i]; else prosjecikljucni[i]=0; } var bodovi_kljucni = (prosjecikljucni[1]+prosjecikljucni[2]+prosjecikljucni[3])/3 * 8; bodovi_kljucni = Math.round(bodovi_kljucni*10)/10; document.getElementById('kljucni_predmeti').value=bodovi_kljucni; } function dobio_focus(element) { element.style.borderColor='red'; } function izgubio_focus(element) { element.style.borderColor='black'; var vrijednost = element.value; var id = parseInt(element.id.substr(14)); var osoba = Math.floor(id/1000); var razred = Math.floor((id-osoba*1000)/100); var tipocjene = id-osoba*1000-razred*100; var rednibroj = 0; if (tipocjene>=90) { tipocjene -= 90; rednibroj=0; } else { rednibroj=tipocjene; tipocjene=0; } if (vrijednost == "") { vrijednost="/"; } if (origval[id]=="") origval[id]="/"; if (vrijednost != "/" && vrijednost != "0" && (!parseInt(vrijednost) || parseInt(vrijednost)<0 || parseInt(vrijednost)>5)) { alert("Neispravna ocjena: "+vrijednost+" !\nOcjena mora biti u opsegu 0-5 ili znak / za poništavanje "+id); element.value = origval[id]; if (origval[id]=="/") element.value=""; element.focus(); element.select(); return false; } if (zamger_ajah_sending) { element.focus(); element.select(); return false; } if (origval[id]=="/" && vrijednost!="/") ajah_start("index.php?c=N&sta=common/ajah&akcija=prijemni_ocjene&osoba="+osoba+"&nova="+vrijednost+"&subakcija=dodaj&razred="+razred+"&tipocjene="+tipocjene+"&rednibroj="+rednibroj,"document.getElementById('prijemniocjene'+"+id+").focus()"); else if (origval[id]!="/" && vrijednost=="/") ajah_start("index.php?c=N&sta=common/ajah&akcija=prijemni_ocjene&osoba="+osoba+"&stara="+origval[id]+"&subakcija=obrisi&razred="+razred+"&tipocjene="+tipocjene+"&rednibroj="+rednibroj,"document.getElementById('prijemniocjene'+"+id+").focus()"); else if (origval[id]!=vrijednost) ajah_start("index.php?c=N&sta=common/ajah&akcija=prijemni_ocjene&osoba="+osoba+"&nova="+vrijednost+"&stara="+origval[id]+"&subakcija=izmijeni&razred="+razred+"&tipocjene="+tipocjene+"&rednibroj="+rednibroj,"document.getElementById('prijemniocjene'+"+id+").focus()"); origval[id]=vrijednost; izracunaj_bodove(); } function enterhack2(element,e,gdje) { if(e.keyCode==13) { element.blur(); document.getElementById('prijemniocjene'+gdje).focus(); document.getElementById('prijemniocjene'+gdje).select(); return false; } } var origval=new Array(); </SCRIPT> <table border="0" cellspacing="0" cellpadding="1"> <tr><td valign="top"> <table border="0" cellspacing="0" cellpadding="1"> <tr><td> </td><td align="center"><b> I </b></td><td align="center"><b> II </b></td><td align="center"><b> III </b></td><td align="center"><b> IV </b></td></tr> <?php $q = myquery("SELECT razred, ocjena, tipocjene,redni_broj FROM srednja_ocjene WHERE osoba={$osoba}"); $razred = array(); $kljucni = array(); while ($r = mysql_fetch_row($q)) { if ($r[2] == 0 && $r[3] == 0) { $razred[$r[0]][] = $r[1]; } else { if ($r[2] == 0) { $razred[$r[0]][$r[3]] = $r[1]; } else { $kljucni[$r[0]][$r[2]] = $r[1]; } } } for ($i = 1; $i <= 20; $i++) { ?> <tr><td align="right"><?php echo $i; ?> .</td> <?php for ($j = 1; $j <= 4; $j++) { $id = $osoba * 1000 + $j * 100 + $i; if ($i <= 19) { $nextid = $id + 1; } else { if ($j < 4) { $nextid = $osoba * 1000 + ($j + 1) * 100 + $i; } else { $nextid = $osoba * 1000 + 100 + 91; } } if (is_array($razred[$j]) && array_key_exists($i, $razred[$j])) { $vr = $razred[$j][$i]; } else { $vr = ""; } ?> <SCRIPT language="JavaScript"> origval[<?php echo $id; ?> ]='<?php echo $vr; ?> '</SCRIPT> <td align="center"><input type="text" id="prijemniocjene<?php echo $id; ?> " size="4" value="<?php echo $vr; ?> " style="border:1px black solid" onblur="izgubio_focus(this)" onfocus="dobio_focus(this)" onkeydown="return enterhack2(this,event,<?php echo $nextid; ?> )"></td> <?php } ?> </tr><?php } ?> </table> </td><td width="30"> </td> <td valign="top"> <table border="0" cellspacing="0" cellpadding="1"> <tr><td> </td><td align="center"><b> I </b></td><td align="center"><b> II </b></td><td align="center"><b> III </b></td><td align="center"><b> IV </b></td></tr> <?php for ($i = 1; $i <= 3; $i++) { if ($i == 1) { print "<tr><td><b>Jezik</b></td>\n"; } else { if ($i == 2) { print "<tr><td><b>Matematika</b></td>\n"; } else { if ($i == 3) { print "<tr><td><b>Fizika</b></td>\n"; } } } $pocni_od = 1; if ($i == 3) { $pocni_od = 3; } for ($j = 1; $j < $pocni_od; $j++) { print "<td> </td>\n"; } for ($j = $pocni_od; $j <= 4; $j++) { $id = $osoba * 1000 + $j * 100 + $i + 90; if (is_array($kljucni[$j]) && array_key_exists($i, $kljucni[$j])) { $vr = $kljucni[$j][$i]; } else { $vr = ""; } if ($j < 4) { $nextid = $osoba * 1000 + ($j + 1) * 100 + $i + 90; } else { if ($i == 1) { $nextid = $osoba * 1000 + 100 + $i + 90 + 1; } else { if ($i == 2) { $nextid = $osoba * 1000 + 3 * 100 + $i + 90 + 1; } else { $nextid = 0; } } } ?> <SCRIPT language="JavaScript"> origval[<?php echo $id; ?> ]='<?php echo $vr; ?> '</SCRIPT> <td align="center"><input type="text" id="prijemniocjene<?php echo $id; ?> " size="4" value="<?php echo $vr; ?> " style="border:1px black solid" onblur="izgubio_focus(this)" onfocus="dobio_focus(this)" onkeydown="enterhack2(this,event,<?php echo $nextid; ?> )"></td> <?php } } ?> </table> </td></tr></table> <?php ?> <br /><br /> <!-- Tablica bodova --> <fieldset style="width:200px" style="background-color:#0099FF"> <legend>Bodovi</legend> <table align="center" width="600" border="0"> <tr> <td align="left">Opći uspjeh: <input maxlength="10" size="5" name="opci_uspjeh" id="opci_uspjeh" type="text" value="<?php echo $eopci; ?> "><font color="#FF0000">*</font></td> <td align="left">Ključni predmeti: <input maxlength="10" size="5" name="kljucni_predmeti" id="kljucni_predmeti" type="text" value="<?php echo $ekljucni; ?> "><font color="#FF0000">*</font></td> <td align="left">Dodatni bodovi: <input maxlength="10" size="5" name="dodatni_bodovi" type="text" value="<?php echo $edodatni; ?> "></td> </tr> </table> </fieldset> </form> <!-- Provjera zajedno sa bodovima --> <SCRIPT language="JavaScript"> function provjeri_sve_bodovi() { var nesto = document.getElementById('opci_uspjeh'); if (parseInt(nesto.value)==0) { alert("Opći uspjeh je nula!"); nesto.focus(); return false; } var nesto = document.getElementById('kljucni_predmeti'); if (parseInt(nesto.value)==0) { alert("Bodovi za ključne predmete su nula!"); nesto.focus(); return false; } return provjeri_sve(); } </script> <p><font color="#FF0000">*</font> - Sva polja označena zvjezdicom su obavezna.<br/> <input type="button" value="Snimi" onclick="provjeri_sve_bodovi()"></p> <p> </p> <?php } else { // Unos ocjena sa prethodnog ciklusa studija ?> <b>Ocjene iz prethodnog ciklusa studija:</b><br/><br/> <table border="0" cellpadding="3" cellspacing="0"> <tr> <td width="250" align="left">Broj semestara na prethodnom ciklusu:</td> <td><input maxlength="50" size="5" name="broj_semestara" id="broj_semestara" type="text" class="default" <?php if ($ebrojsem) { ?> value="<?php echo $ebrojsem; ?> "<?php } else { ?> style="background-color:#FFFF00" oninput="odzuti(this)" <?php } ?> autocomplete="off"><font color="#FF0000">*</font></td> </tr> <?php // AJAH i prateće funkcije print ajah_box(); ?> <SCRIPT language="JavaScript"> // Funkcija koja racuna bodove za prethodni ciklus studija function izracunaj_bodove() { // Po konkursu iz 2010. godine, za rangiranje se koristi samo prosjek var suma=0, broj=0; for (i=1; i<=50; i++) { var idoc=2*i-1; var idec=2*i; var ocjena = document.getElementById('prijemniocjene'+idoc).value; var ects = document.getElementById('prijemniocjene'+idec).value; if (ocjena != "/" && ocjena != "" && ects != "/" && ects != "") { suma += parseInt(ocjena); broj++; } } if (broj>0) { var rezultat = suma / broj; rezultat = Math.round(rezultat*100) / 10; // Konkurs 2012. document.getElementById('opci_uspjeh').value = rezultat; } else { document.getElementById('opci_uspjeh').value = "0"; } } function dobio_focus(element) { element.style.borderColor='red'; } function izgubio_focus(element) { element.style.borderColor='black'; var vrijednost = element.value; var id = parseInt(element.id.substr(14)); var rednibroj = Math.ceil(id/2); var osoba = <?php echo $osoba; ?> ; if (vrijednost == "") { vrijednost="/"; } if (vrijednost==origval[id]) return true; // ne radi nista ako nije promijenjeno // Blokiraj ako je slanje u toku if (zamger_ajah_sending) { element.focus(); element.select(); return false; } if (id%2==1) { // Ocjena // Provjera ispravnosti if (vrijednost != "/" && (!parseInt(vrijednost) || parseInt(vrijednost)<6 || parseInt(vrijednost)>10)) { alert("Neispravna ocjena: "+vrijednost+" !\nOcjena mora biti u opsegu 6-10 ili znak / za poništavanje "+id); element.value = origval[id]; if (origval[id]=="/") element.value=""; element.focus(); element.select(); return false; } ajah_start("index.php?c=N&sta=common/ajah&akcija=prosli_ciklus_ocjena&osoba="+osoba+"&nova="+vrijednost+"&rednibroj="+rednibroj,"document.getElementById('prijemniocjene'+"+id+").focus()"); } else { // ECTS if (vrijednost != "/" && (!parseFloat(vrijednost) || parseFloat(vrijednost)<=0 || parseFloat(vrijednost)>20)) { alert("Neispravan ECTS: "+vrijednost+" !\nECTS mora biti u opsegu 0-20 ili znak / za poništavanje "+id); element.value = origval[id]; if (origval[id]=="/") element.value=""; element.focus(); element.select(); return false; } ajah_start("index.php?c=N&sta=common/ajah&akcija=prosli_ciklus_ects&osoba="+osoba+"&nova="+vrijednost+"&rednibroj="+rednibroj,"document.getElementById('prijemniocjene'+"+id+").focus()"); } origval[id]=vrijednost; izracunaj_bodove(); } function enterhack2(element,e,gdje) { if(e.keyCode==13) { element.blur(); document.getElementById('prijemniocjene'+gdje).focus(); document.getElementById('prijemniocjene'+gdje).select(); return false; } } var origval=new Array(); </SCRIPT> <table border="0" cellspacing="0" cellpadding="1"> <tr><td valign="top"> <table border="0" cellspacing="0" cellpadding="1"> <tr><td>Predmet </td><td align="center"><b>Ocjena</b></td><td align="center"><b>ECTS</b></td></td></tr> <?php $q = myquery("SELECT ocjena, ects, redni_broj FROM prosliciklus_ocjene WHERE osoba={$osoba}"); $ocjene = $ects = array(); while ($r = mysql_fetch_row($q)) { if ($r[2] == 0) { $ocjene[] = $r[0]; $ects[] = $r[1]; } else { $ocjene[$r[2]] = $r[0]; $ects[$r[2]] = $r[1]; } } for ($i = 1; $i <= 25; $i++) { ?> <tr><td align="right"><?php echo $i; ?> .</td> <SCRIPT language="JavaScript"> origval[<?php echo $i * 2 - 1; ?> ]='<?php echo $ocjene[$i]; ?> '</SCRIPT> <td align="center"><input type="text" id="prijemniocjene<?php echo $i * 2 - 1; ?> " size="4" value="<?php echo $ocjene[$i]; ?> " style="border:1px black solid" onblur="izgubio_focus(this)" onfocus="dobio_focus(this)" onkeydown="return enterhack2(this,event,<?php echo $i * 2; ?> )"></td> <SCRIPT language="JavaScript"> origval[<?php echo $i * 2; ?> ]='<?php echo $ects[$i]; ?> '</SCRIPT> <td align="center"><input type="text" id="prijemniocjene<?php echo $i * 2; ?> " size="4" value="<?php echo $ects[$i]; ?> " style="border:1px black solid" onblur="izgubio_focus(this)" onfocus="dobio_focus(this)" onkeydown="return enterhack2(this,event,<?php echo $i * 2 + 1; ?> )"></td> </tr><?php } ?> </table> </td><td width="30"> </td> <td valign="top"> <table border="0" cellspacing="0" cellpadding="1"> <tr><td>Predmet </td><td align="center"><b>Ocjena</b></td><td align="center"><b>ECTS</b></td></td></tr> <?php for ($i = 26; $i <= 50; $i++) { ?> <tr><td align="right"><?php echo $i; ?> .</td> <td align="center"><input type="text" id="prijemniocjene<?php echo $i * 2 - 1; ?> " size="4" value="<?php echo $ocjene[$i]; ?> " style="border:1px black solid" onblur="izgubio_focus(this)" onfocus="dobio_focus(this)" onkeydown="return enterhack2(this,event,<?php echo $i * 2; ?> )"></td> <td align="center"><input type="text" id="prijemniocjene<?php echo $i * 2; ?> " size="4" value="<?php echo $ects[$i]; ?> " style="border:1px black solid" onblur="izgubio_focus(this)" onfocus="dobio_focus(this)" onkeydown="return enterhack2(this,event,<?php echo $i * 2 + 1; ?> )"></td> </tr><?php } ?> </table> </td></tr></table> <?php ?> <br /><br /> <!-- Tablica bodova --> <fieldset style="width:200px" style="background-color:#0099FF"> <legend>Bodovi</legend> <table align="center" width="600" border="0"> <tr> <td align="left">Prethodni ciklus: <input maxlength="20" size="10" name="opci_uspjeh" id="opci_uspjeh" type="text" value="<?php echo $eopci; ?> "><font color="#FF0000">*</font></td> <td align="left">Dodatni bodovi: <input maxlength="20" size="10" name="dodatni_bodovi" type="text" value="<?php echo $edodatni; ?> "></td> </tr> </table> </fieldset> </form> <!-- Provjera zajedno sa bodovima --> <SCRIPT language="JavaScript"> function provjeri_sve_bodovi() { var nesto = document.getElementById('opci_uspjeh'); if (parseInt(nesto.value)==0) { alert("Opći uspjeh je nula!"); nesto.focus(); return false; } var nesto = document.getElementById('broj_semestara'); if (parseInt(nesto.value)==0) { alert("Broj semestara je nula!"); nesto.focus(); return false; } return provjeri_sve(); } </script> <p><font color="#FF0000">*</font> - Sva polja označena zvjezdicom su obavezna.<br/> <input type="button" value="Snimi" onclick="provjeri_sve_bodovi()"></p> <p> </p> <?php } } // if ($vrstaunosa) ... else if ... else { } // ne znam od cega je ovo? ?> </td></tr></table></center> <?php }
function nastavnik_raspored() { ?> <link href="css/raspored1.css" rel="stylesheet" type="text/css"> <?php function vrijemeZaIspis($vrijeme) { $vrijemeS = floor(($vrijeme - 1) / 4 + 8); $vrijemeMin = $vrijeme % 4; if ($vrijemeMin == 1) { $vrijemeM = "00"; } elseif ($vrijemeMin == 2) { $vrijemeM = "15"; } elseif ($vrijemeMin == 3) { $vrijemeM = "30"; } elseif ($vrijemeMin == 0) { $vrijemeM = "45"; } $vrijemeIspis = "{$vrijemeS}:{$vrijemeM}"; return $vrijemeIspis; } global $userid, $user_siteadmin; // Parametri $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // Naziv predmeta $q10 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q10) < 1) { biguglyerror("Nepoznat predmet"); zamgerlog("ilegalan predmet {$predmet}", 3); //nivo 3: greska zamgerlog2("nepoznat predmet", $predmet); return; } $predmet_naziv = mysql_result($q10, 0, 0); // Da li korisnik ima pravo ući u modul? if (!$user_siteadmin) { $q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q10) < 1 || mysql_result($q10, 0, 0) == "asistent") { zamgerlog("nastavnik/ispiti privilegije (predmet pp{$predmet})", 3); zamgerlog2("nije nastavnik na predmetu", $predmet, $ag); biguglyerror("Nemate pravo ulaska u ovu grupu!"); return; } } if ($_POST['akcija'] == "promjena_grupe" && check_csrf_token()) { $novagrupa = intval($_POST['grupa']); $id_stavke = intval($_POST['stavka_rasporeda']); $q01 = myquery("update raspored_stavka set labgrupa={$novagrupa} where id={$id_stavke}"); $q02 = myquery("update raspored_stavka set labgrupa={$novagrupa} where dupla={$id_stavke}"); $uspjesno_promijenjena_grupa = 1; zamgerlog("promijenjena grupa za stavku rasporeda na predmetu {$predmet_naziv}", 2); zamgerlog2("promijenjena grupa za stavku rasporeda", $novagrupa, $id_stavke); } if ($_POST['akcija'] == "sjeckanje termina" && check_csrf_token()) { $presjek = intval($_POST['presjek']); $id_stavke = intval($_POST['stavka_rasp']); $q0 = myquery("select raspored,dan_u_sedmici,predmet,vrijeme_pocetak,vrijeme_kraj,sala,tip,labgrupa,dupla,isjeckana from raspored_stavka where id={$id_stavke}"); $raspored = mysql_result($q0, 0, 0); $dan_u_sedmici = mysql_result($q0, 0, 1); $predmet = mysql_result($q0, 0, 2); $pocetak = mysql_result($q0, 0, 3); $kraj = mysql_result($q0, 0, 4); $sala = mysql_result($q0, 0, 5); $tip = mysql_result($q0, 0, 6); $labgrupa = mysql_result($q0, 0, 7); $dupla = mysql_result($q0, 0, 8); $isjeckana = mysql_result($q0, 0, 9); // $isjeckana=0 znaci da stavka nije nikako isjeckana i prikazuje se u rasporedu // $isjeckana=1 znači da je stavka izrezana i ne prikazuje se u rasporedu, a cuva sa u bazi radi vracanja na pocetne casove prije nego sto je nastavnik ista mijenjao // $isjeckana=2 predstavlja dijelove od isjeckane stavke $q1 = myquery("update raspored_stavka set isjeckana=1 where id={$id_stavke}"); $q2 = myquery("insert into raspored_stavka set id='NULL', raspored={$raspored}, dan_u_sedmici={$dan_u_sedmici}, predmet={$predmet},\n\t\t\t\t\t\tvrijeme_pocetak={$pocetak},vrijeme_kraj={$presjek},sala={$sala},tip='{$tip}',labgrupa={$labgrupa},dupla={$dupla},isjeckana=2"); $q21 = myquery("select max(id) from raspored_stavka"); $id_prve_stavke = mysql_result($q21, 0, 0); $q3 = myquery("insert into raspored_stavka set id='NULL', raspored={$raspored}, dan_u_sedmici={$dan_u_sedmici}, predmet={$predmet},\n\t\t\t\t\t\tvrijeme_pocetak={$presjek},vrijeme_kraj={$kraj},sala={$sala},tip='{$tip}',labgrupa={$labgrupa},dupla={$dupla},isjeckana=2"); $q31 = myquery("select max(id) from raspored_stavka"); $id_druge_stavke = mysql_result($q31, 0, 0); $q0 = myquery("select raspored,dan_u_sedmici,predmet,vrijeme_pocetak,vrijeme_kraj,sala,tip,labgrupa,dupla,isjeckana,id from raspored_stavka where dupla={$id_stavke}"); for ($i = 0; $i < mysql_num_rows($q0); $i++) { $raspored = mysql_result($q0, $i, 0); $dan_u_sedmici = mysql_result($q0, $i, 1); $predmet = mysql_result($q0, $i, 2); $pocetak = mysql_result($q0, $i, 3); $kraj = mysql_result($q0, $i, 4); $sala = mysql_result($q0, $i, 5); $tip = mysql_result($q0, $i, 6); $labgrupa = mysql_result($q0, $i, 7); $dupla = mysql_result($q0, $i, 8); $isjeckana = mysql_result($q0, $i, 9); $id_duple_stavke = mysql_result($q0, $i, 10); $q1 = myquery("update raspored_stavka set isjeckana=1 where id={$id_duple_stavke}"); $q2 = myquery("insert into raspored_stavka set id='NULL', raspored={$raspored}, dan_u_sedmici={$dan_u_sedmici}, predmet={$predmet},\n\t\t\t\t\t\t\tvrijeme_pocetak={$pocetak},vrijeme_kraj={$presjek},sala={$sala},tip='{$tip}',labgrupa={$labgrupa},dupla={$id_prve_stavke},isjeckana=2"); $q3 = myquery("insert into raspored_stavka set id='NULL', raspored={$raspored}, dan_u_sedmici={$dan_u_sedmici}, predmet={$predmet},\n\t\t\t\t\t\t\tvrijeme_pocetak={$presjek},vrijeme_kraj={$kraj},sala={$sala},tip='{$tip}',labgrupa={$labgrupa},dupla={$id_druge_stavke},isjeckana=2"); } $uspjesno_razdvojena_stavka = 1; zamgerlog("Isjeckana stavka rasporeda", 2); zamgerlog2("isjeckana stavka rasporeda", $id_stavke); } ?> <p> </p> <p><h3><?php echo $predmet_naziv; ?> - Raspored grupa</h3></p> <h4>Početni spisak časova:</h4> <table class="nastavnik_raspored" cellspacing="0" border="1"> <tr> <th>Dan</th> <th>Početak</th> <th>Kraj</th> <th>Sala</th> <th>Tip</th> <th>Grupa</th> </tr> <?php $q0 = myquery("select rs.dan_u_sedmici,rs.vrijeme_pocetak,rs.vrijeme_kraj,rs.sala,rs.tip,rs.labgrupa,rs.id from raspored_stavka rs,raspored r where rs.predmet={$predmet} \n\t and rs.dupla=0 and rs.raspored=r.id and r.akademska_godina={$ag} and (rs.tip='T' or rs.tip='L') and (rs.isjeckana=0 or rs.isjeckana=1)\n\t order by rs.dan_u_sedmici asc,rs.vrijeme_pocetak asc,rs.labgrupa asc"); $qgrupe = myquery("select id,naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag}"); for ($i = 0; $i < mysql_num_rows($q0); $i++) { $dan = mysql_result($q0, $i, 0); $pocetak = mysql_result($q0, $i, 1); $kraj = mysql_result($q0, $i, 2); $sala = mysql_result($q0, $i, 3); $tip = mysql_result($q0, $i, 4); $labgrupa = mysql_result($q0, $i, 5); $id_stavke = mysql_result($q0, $i, 6); if ($dan == 1) { $dan_naziv = "Ponedjeljak"; } elseif ($dan == 2) { $dan_naziv = "Utorak"; } elseif ($dan == 3) { $dan_naziv = "Srijeda"; } elseif ($dan == 4) { $dan_naziv = "Četvrtak"; } elseif ($dan == 5) { $dan_naziv = "Petak"; } elseif ($dan == 6) { $dan_naziv = "Subota"; } $q1 = myquery("select naziv from raspored_sala where id={$sala}"); $sala_naziv = mysql_result($q1, 0, 0); $vrijemeP = vrijemeZaIspis($pocetak); $vrijemeK = vrijemeZaIspis($kraj); if ($tip == 'P') { $tip_naziv = "Predavanje"; } elseif ($tip == 'T') { $tip_naziv = "Tutorijal"; } elseif ($tip == 'L') { $tip_naziv = "Laboratorija"; } if ($labgrupa != -1) { $q2 = myquery("select naziv from labgrupa where id={$labgrupa}"); $labgrupa_naziv = mysql_result($q2, 0, 0); } else { $labgrupa_naziv = "prazno"; } ?> <tr> <td><?php echo $dan_naziv; ?> </td> <td><?php echo $vrijemeP; ?> </td> <td><?php echo $vrijemeK; ?> </td> <td><?php echo $sala_naziv; ?> </td> <td><?php echo $tip_naziv; ?> </td> <td><?php echo $labgrupa_naziv; ?> </td> </tr> <?php } ?> </tr> </table> <br><hr></hr> <h4>Izmjena grupa i termina časova:</h4><br> <?php if ($uspjesno_promijenjena_grupa == 1) { nicemessage("Grupa je uspješno promijenjena."); } if ($uspjesno_razdvojena_stavka == 1) { nicemessage("Stavka je uspješno razdvojena na 2 termina."); } ?> <table class="nastavnik_raspored" cellspacing="0" border="1"> <tr> <th>Dan</th> <th>Početak</th> <th>Kraj</th> <th>Sala</th> <th>Tip</th> <th>Grupa</th> <th>Promjena grupe</th> <th>Razdvajanje časa na 2 termina</th> </tr> <?php $q0 = myquery("select rs.dan_u_sedmici,rs.vrijeme_pocetak,rs.vrijeme_kraj,rs.sala,rs.tip,rs.labgrupa,rs.id from raspored_stavka rs,raspored r where rs.predmet={$predmet} \n\t and rs.dupla=0 and rs.raspored=r.id and r.akademska_godina={$ag} and (rs.tip='T' or rs.tip='L') and (rs.isjeckana=0 or rs.isjeckana=2) order by rs.dan_u_sedmici asc,rs.vrijeme_pocetak asc,rs.labgrupa asc"); $qgrupe = myquery("select id,naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag}"); for ($i = 0; $i < mysql_num_rows($q0); $i++) { $dan = mysql_result($q0, $i, 0); $pocetak = mysql_result($q0, $i, 1); $kraj = mysql_result($q0, $i, 2); $sala = mysql_result($q0, $i, 3); $tip = mysql_result($q0, $i, 4); $labgrupa = mysql_result($q0, $i, 5); $id_stavke = mysql_result($q0, $i, 6); if ($dan == 1) { $dan_naziv = "Ponedjeljak"; } elseif ($dan == 2) { $dan_naziv = "Utorak"; } elseif ($dan == 3) { $dan_naziv = "Srijeda"; } elseif ($dan == 4) { $dan_naziv = "Četvrtak"; } elseif ($dan == 5) { $dan_naziv = "Petak"; } elseif ($dan == 6) { $dan_naziv = "Subota"; } $q1 = myquery("select naziv from raspored_sala where id={$sala}"); $sala_naziv = mysql_result($q1, 0, 0); $vrijemeP = vrijemeZaIspis($pocetak); $vrijemeK = vrijemeZaIspis($kraj); if ($tip == 'P') { $tip_naziv = "Predavanje"; } elseif ($tip == 'T') { $tip_naziv = "Tutorijal"; } elseif ($tip == 'L') { $tip_naziv = "Laboratorija"; } if ($labgrupa != -1) { $q2 = myquery("select naziv from labgrupa where id={$labgrupa}"); $labgrupa_naziv = mysql_result($q2, 0, 0); } else { $labgrupa_naziv = "prazno"; } ?> <tr> <td><?php echo $dan_naziv; ?> </td> <td><?php echo $vrijemeP; ?> </td> <td><?php echo $vrijemeK; ?> </td> <td><?php echo $sala_naziv; ?> </td> <td><?php echo $tip_naziv; ?> </td> <td><?php echo $labgrupa_naziv; ?> </td> <td> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="promjena_grupe"> <input type="hidden" name="stavka_rasporeda" value="<?php echo $id_stavke; ?> "> <select name="grupa"> <option value="-1" <?php if ($labgrupa == -1) { print " selected=\"selected\""; } ?> >--prazno--</option> <?php for ($j = 0; $j < mysql_num_rows($qgrupe); $j++) { $id = mysql_result($qgrupe, $j, 0); $naziv = mysql_result($qgrupe, $j, 1); print "<option value=\"{$id}\""; if ($id == $labgrupa) { print " selected=\"selected\""; } print ">{$naziv}</option>"; } ?> </select> <input type="submit" value=" Promijeni "> </form> </td> <td> <?php if ($pocetak + 1 != $kraj) { ?> <table> <tr> <td> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="sjeckanje termina"> <input type="hidden" name="stavka_rasp" value="<?php echo $id_stavke; ?> "> <select name="presjek"> <?php for ($j = $pocetak + 1; $j < $kraj; $j++) { $sredina = vrijemeZaIspis($j); print "<option value=\"{$j}\">{$vrijemeP} - {$sredina}      i      {$sredina} - {$vrijemeK}</option>"; } ?> </select> </td> <td> <input type="submit" value=" Razdvoji "> </td> </form> </tr> </table> <?php } else { print "<p>Ne može se više razdvajati!</p>"; } ?> </td> </tr> <?php } ?> </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 common_attachment() { global $userid, $conf_files_path, $user_student, $user_nastavnik, $user_siteadmin; // Kakav fajl se downloaduje? $tip = $_REQUEST['tip']; if ($tip == "") { $tip = "zadaca"; } // privremeno // PROVJERA PRIVILEGIJA I ODREĐIVANJE LOKACIJE FAJLA NA SERVERU // Tip: zadaća if ($tip == "zadaca") { // Poslani parametri $zadaca = intval($_REQUEST['zadaca']); $zadatak = intval($_REQUEST['zadatak']); $student = intval($_REQUEST['student']); $q5 = myquery("select predmet, akademska_godina from zadaca where id={$zadaca}"); if (mysql_num_rows($q5) < 1) { zamgerlog("nepostojeca zadaca {$zadaca}", 3); zamgerlog2("nepostojeca zadaca", $zadaca); niceerror("Nepostojeća zadaća"); return; } $predmet = mysql_result($q5, 0, 0); $ag = mysql_result($q5, 0, 1); if ($student == 0) { // student otvara vlastitu zadaću if ($user_student) { $student = $userid; } else { zamgerlog("pokusao otvoriti attachment bez ID studenta, a sam nije student", 3); zamgerlog2("pokusao otvoriti attachment bez ID studenta, a sam nije student"); niceerror("Čiju zadaću pokušavate otvoriti?"); return; } } else { // student je odredjen kao parametar if (!$user_nastavnik && !$user_siteadmin) { zamgerlog("attachment: nije nastavnik (student u{$student} zadaca z{$zadaca})", 3); zamgerlog2("nije nastavnik"); niceerror("Nemate pravo pregleda ove zadaće"); return; } if (!$user_siteadmin) { $q10 = myquery("select count(*) from nastavnik_predmet where predmet={$predmet} and akademska_godina={$ag} and nastavnik={$userid}"); if (mysql_result($q10, 0, 0) < 1) { zamgerlog("attachment: nije nastavnik na predmetu (student u{$student} zadaca z{$zadaca})", 3); zamgerlog2("nije nastavnik na predmetu za zadacu", $zadaca); niceerror("Nemate pravo pregleda ove zadaće"); return; } // Provjera ograničenja $q20 = myquery("select o.labgrupa from ogranicenje as o, labgrupa as l where o.nastavnik={$userid} and o.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}"); if (mysql_num_rows($q20) > 0) { // Ako ograničenja postoje, dozvoljavamo korisniku da otvori zadaće samo studenata u labgrupama kojima inače može pristupiti $nasao = 0; while ($r20 = mysql_fetch_row($q20)) { $q25 = myquery("select count(*) from student_labgrupa where student={$student} and labgrupa={$r20['0']}"); if (mysql_result($q25, 0, 0) > 0) { $nasao = 1; break; } } if ($nasao == 0) { zamgerlog("ogranicenje na predmet (student u{$student} predmet p{$ponudakursa})", 3); zamgerlog2("ogranicenje na predmet za zadacu", $zadaca); niceerror("Nemate pravo pregleda ove zadaće"); return; } } } } // Da li neko pokušava da spoofa zadaću? $q30 = myquery("SELECT count(*) FROM student_predmet as sp, ponudakursa as pk WHERE sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); if (mysql_result($q30, 0, 0) < 1) { zamgerlog("student nije upisan na predmet (student u{$student} zadaca z{$zadaca})", 3); zamgerlog2("student ne slusa predmet za zadacu", $zadaca); niceerror("Student nije upisan na predmet"); return; } // Lokacija zadaće $lokacijazadaca = "{$conf_files_path}/zadace/{$predmet}-{$ag}/{$student}/{$zadaca}/"; $q40 = myquery("select filename from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$student} order by id desc limit 1"); if (mysql_num_rows($q40) < 1) { zamgerlog("ne postoji attachment (zadaca {$zadaca} zadatak {$zadatak} student {$student})", 3); zamgerlog2("ne postoji attachment", intval($student), $zadaca, $zadatak); niceerror("Ne postoji attachment"); return; } $filename = mysql_result($q40, 0, 0); $filepath = $lokacijazadaca . $filename; } // Tip: postavka zadaće if ($tip == "postavka") { $zadaca = intval($_REQUEST['zadaca']); $q100 = myquery("select predmet, akademska_godina, postavka_zadace from zadaca where id={$zadaca}"); if (mysql_num_rows($q100) < 1) { zamgerlog("nepostojeca zadaca {$zadaca}", 3); zamgerlog2("nepostojeca zadaca", $zadaca); niceerror("Nepostojeća zadaća"); return; } $predmet = mysql_result($q100, 0, 0); $ag = mysql_result($q100, 0, 1); $postavka_zadace = mysql_result($q100, 0, 2); if ($postavka_zadace == "") { niceerror("Postavka ne postoji"); zamgerlog("postavka ne postoji z{$zadaca}", 3); zamgerlog2("postavka ne postoji", $zadaca); return; } $ok = false; if ($user_siteadmin) { $ok = true; } if ($user_nastavnik && !$ok) { $q110 = myquery("select count(*) from nastavnik_predmet where predmet={$predmet} and akademska_godina={$ag} and nastavnik={$userid}"); if (mysql_result($q110, 0, 0) > 0) { $ok = true; } } if ($user_student && !$ok) { $q120 = myquery("SELECT count(*) FROM student_predmet as sp, ponudakursa as pk WHERE sp.student={$userid} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); if (mysql_result($q120, 0, 0) > 0) { $ok = true; } } if (!$ok) { zamgerlog("nema pravo pristupa postavci zadace (z{$zadaca})", 3); zamgerlog2("nema pravo pristupa postavci zadace", $zadaca); niceerror("Nemate pravo pristupa ovoj postavci"); return; } $filename = $postavka_zadace; $filepath = "{$conf_files_path}/zadace/{$predmet}-{$ag}/postavke/{$filename}"; } // Tip: projektni fajl if ($tip == "projekat") { $projekat = intval($_REQUEST['projekat']); $id = intval($_REQUEST['id']); //file ID $q200 = myquery("select predmet, akademska_godina from projekat where id={$projekat}"); if (mysql_num_rows($q200) < 1) { zamgerlog("nepostojeci projekat {$projekat}", 3); zamgerlog2("nepostojeci projekat", $projekat); niceerror("Nepostojeći projekat"); return; } $predmet = mysql_result($q200, 0, 0); $ag = mysql_result($q200, 0, 1); $ok = false; if ($user_siteadmin) { $ok = true; } if ($user_nastavnik && !$ok) { $q210 = myquery("select nivo_pristupa from nastavnik_predmet where predmet={$predmet} and akademska_godina={$ag} and nastavnik={$userid}"); if (mysql_num_rows($q210) > 0 && mysql_result($q210, 0, 0) != "asistent") { $ok = true; } } if ($user_student && !$ok) { $q220 = myquery("SELECT count(*) FROM student_projekat WHERE student={$userid} and projekat={$projekat}"); if (mysql_result($q220, 0, 0) > 0) { $ok = true; } } if (!$ok) { zamgerlog("nema pravo pristupa projektu {$projekat}", 3); zamgerlog2("nije na projektu", $projekat); niceerror("Nemate pravo pristupa ovom projektu."); return; } $q230 = myquery("select osoba, revizija, filename from projekat_file where id={$id}"); if (mysql_num_rows($q230) < 1) { zamgerlog("nepostojeci file {$id} na projektu {$projekat}", 3); zamgerlog2("nepostojeci file na projektu", $projekat, $id); niceerror("Nepoznat ID {$id}"); return; } $fileosoba = mysql_result($q230, 0, 0); $revizija = mysql_result($q230, 0, 1); $filename = mysql_result($q230, 0, 2); $filepath = "{$conf_files_path}/projekti/fajlovi/{$projekat}/{$fileosoba}/{$filename}/v{$revizija}/{$filename}"; } // Tip: završni rad if ($tip == "zavrsni") { $zavrsni = intval($_REQUEST['zavrsni']); $id = intval($_REQUEST['id']); //file ID $q300 = myquery("select predmet, akademska_godina from zavrsni where id={$zavrsni}"); if (mysql_num_rows($q300) < 1) { zamgerlog("nepostojeca tema zavrsnog rada {$zavrsni}", 3); zamgerlog2("nepostojeca tema zavrsnog rada", $zavrsni); niceerror("Nepostojeća tema završnog rada."); return; } $predmet = mysql_result($q300, 0, 0); $ag = mysql_result($q300, 0, 1); $ok = false; if ($user_siteadmin) { $ok = true; } if ($user_nastavnik && !$ok) { $q310 = myquery("select nivo_pristupa from nastavnik_predmet where predmet={$predmet} and akademska_godina={$ag} and nastavnik={$userid}"); if (mysql_num_rows($q310) > 0 && mysql_result($q310, 0, 0) != "asistent") { $ok = true; } } if ($user_student && !$ok) { $q320 = myquery("SELECT count(*) FROM zavrsni WHERE student={$userid} and id={$zavrsni}"); if (mysql_result($q320, 0, 0) > 0) { $ok = true; } } if (!$ok) { zamgerlog("nema pravo pristupa zavrsnom radu {$zavrsni}", 3); zamgerlog2("nema pravo pristupa zavrsnom radu", $zavrsni); niceerror("Nemate pravo pristupa ovom završnom radu."); return; } $q330 = myquery("select revizija, filename from zavrsni_file where id={$id}"); if (mysql_num_rows($q330) < 1) { zamgerlog("nepostojeci file {$id} na zavrsnom radu {$zavrsni}", 3); zamgerlog2("nepostojeci file na zavrsnom radu", $zavrsni, $id); niceerror("Nepoznat ID {$id}"); return; } $revizija = mysql_result($q330, 0, 0); $filename = mysql_result($q330, 0, 1); $filepath = "{$conf_files_path}/zavrsni/fajlovi/{$zavrsni}/{$filename}/v{$revizija}/{$filename}"; } // DOWNLOAD $type = `file -bi '{$filepath}'`; header("Content-Type: {$type}"); header('Content-Disposition: attachment; filename="' . $filename . '"', false); header("Content-Length: " . (string) filesize($filepath)); // workaround za http://support.microsoft.com/kb/316431 (zamger bug 94) header("Pragma: dummy=bogus"); header("Cache-Control: private"); $k = readfile($filepath, false); if ($k == false) { print "Otvaranje attachmenta nije uspjelo! Kontaktirajte administratora"; zamgerlog("citanje fajla za attachment nije uspjelo (z{$zadaca} zadatak {$zadatak} student {$stud_id})", 3); if ($tip == "zadaca") { zamgerlog2("citanje fajla za attachment nije uspjelo - zadaca", $zadaca, $zadatak); } if ($tip == "postavka") { zamgerlog2("citanje fajla za attachment nije uspjelo - postavka", $zadaca); } if ($tip == "projekat") { zamgerlog2("citanje fajla za attachment nije uspjelo - projekat", $projekat, $id); } if ($tip == "zavrsni") { zamgerlog2("citanje fajla za attachment nije uspjelo - zavrsni", $zavrsni, $id); } } exit; }
function student_ugovoroucenju() { global $userid; require "lib/manip.php"; // Naslov ?> <h3>Ugovor o učenju</h3> <?php // Za koju godinu se prijavljuje? $q1 = myquery("select id, naziv from akademska_godina where aktuelna=1"); $q2 = myquery("select id, naziv from akademska_godina where id>" . mysql_result($q1, 0, 0) . " order by id limit 1"); if (mysql_num_rows($q2) < 1) { // nicemessage("U ovom trenutku nije aktiviran upis u sljedeću akademsku godinu."); // return; // Pretpostavljamo da se upisuje u aktuelnu? $zagodinu = mysql_result($q1, 0, 0); $zagodinunaziv = mysql_result($q1, 0, 1); $q3 = myquery("select id from akademska_godina where id<{$zagodinu} order by id desc limit 1"); $proslagodina = mysql_result($q3, 0, 0); } else { $proslagodina = mysql_result($q1, 0, 0); $zagodinu = mysql_result($q2, 0, 0); $zagodinunaziv = mysql_result($q2, 0, 1); } ?> <p>Za akademsku <?php echo $zagodinunaziv; ?> godinu.</p> <?php // Ulazni podaci $studij = intval($_REQUEST['studij']); $godina = intval($_REQUEST['godina']); // Provjera ispravnosti podataka if ($studij != 0) { $q5 = myquery("select zavrsni_semestar from studij where id={$studij}"); if (mysql_num_rows($q5) < 1) { niceerror("Neispravan studij"); $studij = 0; unset($_POST['akcija']); } else { if ($godina < 1 || $godina > mysql_result($q5, 0, 0) / 2) { $godina = 1; } } } else { unset($_POST['akcija']); } // Odabir plana studija $plan_studija = 0; if ($studij > 0) { $q5a = myquery("SELECT studij, plan_studija FROM student_studij WHERE student={$userid} AND akademska_godina<={$zagodinu} ORDER BY akademska_godina DESC LIMIT 1"); if (mysql_num_rows($q5a) > 0 && $studij == mysql_result($q5a, 0, 0)) { $plan_studija = mysql_result($q5a, 0, 1); } if ($plan_studija == 0) { // Student nije prethodno studirao na istom studiju ili plan studija nije bio definisan // Uzimamo najnoviji plan za odabrani studij $q6 = myquery("select godina_vazenja from plan_studija where studij={$studij} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q6) < 1) { niceerror("Nepostojeći studij"); return; } $plan_studija = mysql_result($q6, 0, 0); } } // Akcija - kreiranje ugovora if ($_POST['akcija'] == "kreiraj_ugovor") { // Provjera da li student ima minimalno 30 ECTS kredita po semestru // Ako je ovaj uslov ispunjen za oba semestra, slijedi i da ima minimalno // 60 ECTS kredita po godini $s1predmeti = $s2predmeti = array(); // Ujedno punimo nizove izbornih predmeta for ($sem = $godina * 2 - 1; $sem <= $godina * 2; $sem++) { $semestar_ects = 0; $q100 = myquery("select p.ects, p.naziv from predmet as p, plan_studija as ps where ps.godina_vazenja={$plan_studija} and ps.studij={$studij} and ps.semestar={$sem} and ps.obavezan=1 and ps.predmet=p.id"); while ($r100 = mysql_fetch_row($q100)) { $semestar_ects += $r100[0]; } $q110 = myquery("select distinct predmet from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and semestar={$sem} and obavezan=0"); while ($r110 = mysql_fetch_row($q110)) { $izabran = $_REQUEST["is{$r110['0']}"]; if ($izabran == "odsjek{$sem}") { // izborni predmet sa drugog odsjeka $izabran = intval($_REQUEST["odsjek-{$r110['0']}"]); } else { $izabran = intval($izabran); } if ($izabran > 0) { $q120 = myquery("select ects, naziv from predmet where id={$izabran}"); if (mysql_num_rows($q120) < 1) { niceerror("Ilegalan izborni predmet"); return; } if (provjeri_kapacitet($izabran, $zagodinu, $plan_studija) == 0) { niceerror("Predmet " . mysql_result($q120, 0, 1) . " se ne može izabrati jer su dostupni kapaciteti za taj predmet popunjeni"); zamgerlog2("popunjen kapacitet za predmet", $izabran); return; } $semestar_ects += mysql_result($q120, 0, 0); if ($sem == $godina * 2 - 1) { $s1predmeti[] = $izabran; } else { $s2predmeti[] = $izabran; } // Ako spisak izbornih predmeta nije radio buttons // nego checkboxes, $izabran ce biti 0 } else { foreach ($_REQUEST as $ime => $vrijednost) { $komad = "iz{$r110['0']}-"; if (substr($ime, 0, strlen($komad)) == $komad) { // izborni predmet sa drugog odsjeka if (substr($ime, strlen($komad)) == "odsjek") { $izabran = intval($_REQUEST["odsjek-{$r110['0']}"]); } else { $izabran = intval($vrijednost); } $q130 = myquery("select ects, naziv from predmet where id={$izabran}"); if (mysql_num_rows($q130) < 1) { niceerror("Ilegalan izborni predmet"); return; } if (provjeri_kapacitet($izabran, $zagodinu, $plan_studija) == 0) { niceerror("Predmet " . mysql_result($q130, 0, 1) . " se ne može izabrati jer su dostupni kapaciteti za taj predmet popunjeni"); zamgerlog2("popunjen kapacitet za predmet", $izabran); return; } $semestar_ects += mysql_result($q130, 0, 0); if ($sem == $godina * 2 - 1) { $s1predmeti[] = $izabran; } else { $s2predmeti[] = $izabran; } } } } } if ($semestar_ects < 30) { niceerror("Niste izabrali dovoljno izbornih predmeta u {$sem}. semestru (ukupno {$semestar_ects} ECTS kredita, a potrebno je 30)"); return; } } // Sve ok, brišemo stari ugovor iz baze $q140 = myquery("select id from ugovoroucenju where student={$userid} and akademska_godina={$zagodinu}"); while ($r140 = mysql_fetch_row($q140)) { $q145 = myquery("delete from ugovoroucenju where id={$r140['0']}"); $q145 = myquery("delete from ugovoroucenju_izborni where ugovoroucenju={$r140['0']}"); } // Ubacujemo novi ugovor u bazu $q150 = myquery("insert into ugovoroucenju set student={$userid}, akademska_godina={$zagodinu}, studij={$studij}, semestar=" . ($godina * 2 - 1)); // Uzimamo ID ugovora $q160 = myquery("select id from ugovoroucenju where student={$userid} and akademska_godina={$zagodinu} and studij={$studij} and semestar=" . ($godina * 2 - 1)); $id1 = mysql_result($q160, 0, 0); foreach ($s1predmeti as $predmet) { $q170 = myquery("insert into ugovoroucenju_izborni set ugovoroucenju={$id1}, predmet={$predmet}"); } // Isto za parni semestar $q180 = myquery("insert into ugovoroucenju set student={$userid}, akademska_godina={$zagodinu}, studij={$studij}, semestar=" . $godina * 2); $q190 = myquery("select id from ugovoroucenju where student={$userid} and akademska_godina={$zagodinu} and studij={$studij} and semestar=" . $godina * 2); $id2 = mysql_result($q190, 0, 0); foreach ($s2predmeti as $predmet) { $q200 = myquery("insert into ugovoroucenju_izborni set ugovoroucenju={$id2}, predmet={$predmet}"); } zamgerlog("student u{$userid} kreirao ugovor o ucenju (ID: {$id1} i {$id2})", 2); // 2 - edit zamgerlog2("kreirao ugovor o ucenju", intval($id1), intval($id2)); nicemessage("Kreirali ste Ugovor o učenju!"); ?> <p><a href="?sta=student/ugovoroucenjupdf">Kliknite ovdje da biste ga isprintali.</a></p> <?php return; } // Da li student već ima kreiran ugovor o učenju za sljedeću godinu? $q9 = myquery("select count(*) from ugovoroucenju where student={$userid} and akademska_godina={$zagodinu}"); if (mysql_result($q9, 0, 0) > 0) { ?> <p>Već imate kreiran Ugovor o učenju.<br />Možete ga preuzeti <a href="?sta=student/ugovoroucenjupdf">klikom ovdje</a>, ili možete kreirati novi ugovor ispod (pri čemu će stari biti pobrisan).</p> <p> </p> <?php } // --- Prikaz formulara za kreiranje ugovora // Studij nije odabran, biramo onaj koji student trenutno sluša if ($studij == 0) { $q10 = myquery("select ss.studij, ss.semestar, s.zavrsni_semestar, s.institucija, s.tipstudija, ss.plan_studija from student_studij as ss, studij as s where ss.student={$userid} and ss.akademska_godina={$proslagodina} and ss.studij=s.id order by semestar desc limit 1"); if (mysql_num_rows($q10) > 0) { $studij = mysql_result($q10, 0, 0); $godina = mysql_result($q10, 0, 1) / 2 + 1; $plan_studija = mysql_result($q10, 0, 5); if (mysql_result($q10, 0, 1) >= mysql_result($q10, 0, 2)) { $q20 = myquery("select id from studij where moguc_upis=1 and institucija=" . mysql_result($q10, 0, 3) . " and tipstudija>" . mysql_result($q10, 0, 4)); // FIXME pretpostavka je da su tipovi studija poredani po ciklusima if (mysql_num_rows($q20) > 0) { $studij = mysql_result($q20, 0, 0); $godina = 1; $plan_studija = 0; // Uzećemo najnoviji plan za odabrani studij } else { // Nema gdje dalje... postavljamo sve na nulu $studij = 0; $godina = 1; } } if ($plan_studija == 0) { // Određujemo najnoviji plan za novi studij $q6 = myquery("select godina_vazenja from plan_studija where studij={$studij} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q6) < 1) { niceerror("Nepostojeći studij"); return; } $plan_studija = mysql_result($q6, 0, 0); } } else { niceerror("Niste nikada bili naš student!"); // Radi testiranja dozvolićemo nestudentima da uđu $godina = 1; } } ?> <SCRIPT language="JavaScript"> // Refresh stranice sa novim izbornim predmetima function refresh() { var studij = parseInt(document.getElementById('studij').value); var godina = parseInt(document.getElementById('godina').value); location.replace("index.php?sta=student/ugovoroucenju&studij="+studij+"&godina="+godina); } // Da bismo spriječili da pritisak na Enter submituje formu function noenter() { if (window.event && window.event.keyCode == 13) { refresh(); return false; } } // Funckija koja ne dozvoljava da se selektuje različit broj polja od navedenog var globalna; function jedanod(slot, clicked) { var template = "iz"+slot; var found=false; for (var i=0; i<document.mojaforma.length; i++) { var el = document.mojaforma.elements[i]; if (el.type != "checkbox") continue; if (el==clicked) continue; if (template == el.name.substr(0,template.length)) { if (clicked.checked==true && el.checked==true) { el.checked=false; found=true; break; } if (clicked.checked==false && el.checked==false) { el.checked=true; found=true; break; } } } if (!found) { globalna=clicked; setTimeout("revertuj()", 100); } return found; } function drugiodsjek(slot, semestar, enable) { var template = "iz"+slot; for (var i=0; i<document.mojaforma.length; i++) { var el = document.mojaforma.elements[i]; if (el.type != "checkbox" && el.type != "radio") continue; if (el.name.substr(0,template.length) == template) continue; if (el.name.substr(0,template.length) == "is"+slot) continue; if (el.value == "odsjek"+semestar) el.disabled=enable; } } function revertuj() { if (globalna.checked) globalna.checked=false; else globalna.checked=true; } </SCRIPT> <form action="index.php" method="POST" name="mojaforma"> <input type="hidden" name="sta" value="student/ugovoroucenju"> <input type="hidden" name="akcija" value="kreiraj_ugovor"> <p>Bjanko Ugovor o učenju: <a href="images/content/150dpi/domestic-contract-0.png">stranica 1</a>, <a href="images/content/150dpi/domestic-contract-1.png">stranica 2</a>!</p> <p>Studij: <select name="studij" id="studij" onchange="javascript:refresh()"><option></option> <?php // Spisak studija $q30 = myquery("select id, naziv from studij where moguc_upis=1 order by tipstudija, naziv"); while ($r30 = mysql_fetch_row($q30)) { print "<option value=\"{$r30['0']}\""; if ($r30[0] == $studij) { print " selected"; } print ">{$r30['1']}</option>\n"; } $semestar = $godina * 2 - 1; ?> </select></p> <p>Godina studija: <input type="text" name="godina" id="godina" value="<?php echo $godina; ?> " onchange="javascript:refresh()" onkeypress="javascript:return noenter()"></p> <p> </p> <p><b>Izborni predmeti:</b></p> <p><?php echo $semestar; ?> . semestar:<br /> <?php // Spisak izbornih predmeta $ops = $count = 0; $q40 = myquery("select predmet from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and semestar={$semestar} and obavezan=0 order by predmet"); if (mysql_num_rows($q40) < 1) { print "Nema izbornih predmeta."; } else { $ops = $count = 0; $slotovi = array(); while ($r40 = mysql_fetch_row($q40)) { $slotovi[] = $r40[0]; } $slotovi[] = 0; foreach ($slotovi as $slot) { if ($ops == 0) { /* nop */ } else { if ($slot == $ops) { $count++; } else { if ($count == 0) { $q45 = myquery("select p.id, p.naziv from predmet as p, izborni_slot as iz where iz.id={$ops} and iz.predmet=p.id"); $prvi = 1; while ($r45 = mysql_fetch_row($q45)) { print "<input type=\"radio\" name=\"is{$ops}\" value=\"{$r45['0']}\" onchange=\"drugiodsjek('{$ops}',{$semestar},false);\""; if ($prvi) { print " CHECKED"; $prvi = 0; } print ">{$r45['1']}</input><br />\n"; } // Predmet sa drugog studija print "<input type=\"radio\" name=\"is{$ops}\" value=\"odsjek{$semestar}\" onchange=\"drugiodsjek('{$ops}',{$semestar},true);\">Predmet sa drugog odsjeka</input><br />\n"; print "<select name=\"odsjek-{$ops}\">\n"; $spisak_predmeta_drugi_studij = array(); $drugi_studiji = array(); $q46 = myquery("select tipstudija from studij where id={$studij}"); $studij_ts = intval(mysql_result($q46, 0, 0)); $q47 = myquery("select ps.predmet, p.naziv, s.kratkinaziv, s.id from plan_studija as ps, studij as s, predmet as p where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=1 and ps.studij=s.id and s.tipstudija={$studij_ts} and ps.predmet=p.id order by s.kratkinaziv, ps.semestar, p.naziv"); while ($r47 = mysql_fetch_row($q47)) { $drugi_studiji[$r47[3]] = $r47[2]; // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r47['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio // $q49 = myquery("select count(*) from konacna_ocjena where student=$userid and predmet=$r47[0] and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r47[0]] = "{$r47['1']} ({$r47['2']})"; //print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } // A sada i izborni $q51 = myquery("select ps.predmet, s.kratkinaziv, s.id from plan_studija as ps, studij as s where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=0 and ps.studij=s.id and s.tipstudija={$studij_ts} order by s.kratkinaziv"); while ($r51 = mysql_fetch_row($q51)) { $drugi_studiji[$r51[2]] = $r51[1]; $q52 = myquery("select izs.predmet, p.naziv from izborni_slot as izs, predmet as p where izs.id={$r51['0']} and izs.predmet=p.id order by p.naziv"); while ($r52 = mysql_fetch_row($q52)) { // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r52['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio // $q49 = myquery("select count(*) from konacna_ocjena where student=$userid and predmet=$r52[0] and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r52[0]] = "{$r52['1']} ({$r51['1']})"; } // print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } sort($drugi_studiji); // sort($spisak_predmeta_drugi_studij); foreach ($drugi_studiji as $studij_id => $studij_naziv) { foreach ($spisak_predmeta_drugi_studij as $predmet_id => $predmet_naziv) { if (strstr($predmet_naziv, "({$studij_naziv})")) { print "<option value=\"{$predmet_id}\">{$predmet_naziv}</option>\n"; } } } print "</select><br>\n"; } else { print "(izaberite " . ($count + 1) . " predmeta)<br />\n"; $q45 = myquery("select p.id, p.naziv from predmet as p, izborni_slot as iz where iz.id={$ops} and iz.predmet=p.id and p.moguc_upis=1"); $prvi = $count + 1; while ($r45 = mysql_fetch_row($q45)) { print "<input type=\"checkbox\" name=\"iz{$ops}-{$r45['0']}\" value=\"{$r45['0']}\""; if ($prvi) { print " CHECKED"; $prvi--; } print " onchange=\"javascript:jedanod('{$ops}',this)\">{$r45['1']}</input><br />\n"; } // Predmet sa drugog studija print "<input type=\"checkbox\" name=\"iz{$ops}-odsjek\" value=\"odsjek{$semestar}\" onchange=\"javascript:jedanod('{$ops}',this); drugiodsjek('{$ops}',{$semestar},this.checked);\">Predmet sa drugog odsjeka</input><br />\n"; print "<select name=\"odsjek-{$ops}\">\n"; $spisak_predmeta_drugi_studij = array(); $drugi_studiji = array(); $q46 = myquery("select tipstudija from studij where id={$studij}"); $studij_ts = intval(mysql_result($q46, 0, 0)); $q47 = myquery("select ps.predmet, p.naziv, s.kratkinaziv, s.id from plan_studija as ps, studij as s, predmet as p where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=1 and ps.studij=s.id and s.tipstudija={$studij_ts} and ps.predmet=p.id order by s.kratkinaziv, ps.semestar, p.naziv"); while ($r47 = mysql_fetch_row($q47)) { $drugi_studiji[$r47[3]] = $r47[2]; // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r47['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio // $q49 = myquery("select count(*) from konacna_ocjena where student=$userid and predmet=$r47[0] and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r47[0]] = "{$r47['1']} ({$r47['2']})"; //print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } // A sada i izborni $q51 = myquery("select ps.predmet, s.kratkinaziv, s.id from plan_studija as ps, studij as s where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=0 and ps.studij=s.id and s.tipstudija={$studij_ts} order by s.kratkinaziv"); while ($r51 = mysql_fetch_row($q51)) { $drugi_studiji[$r51[2]] = $r51[1]; $q52 = myquery("select izs.predmet, p.naziv from izborni_slot as izs, predmet as p where izs.id={$r51['0']} and izs.predmet=p.id order by p.naziv"); while ($r52 = mysql_fetch_row($q52)) { // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r52['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio // $q49 = myquery("select count(*) from konacna_ocjena where student=$userid and predmet=$r52[0] and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r52[0]] = "{$r52['1']} ({$r51['1']})"; } // print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } sort($drugi_studiji); // sort($spisak_predmeta_drugi_studij); foreach ($drugi_studiji as $studij_id => $studij_naziv) { foreach ($spisak_predmeta_drugi_studij as $predmet_id => $predmet_naziv) { if (strstr($predmet_naziv, "({$studij_naziv})")) { print "<option value=\"{$predmet_id}\">{$predmet_naziv}</option>\n"; } } } print "</select><br>\n"; } } } $ops = $slot; } } $semestar = $godina * 2; ?> </p> <p><?php echo $semestar; ?> . semestar:<br /> <?php $q40 = myquery("select predmet from plan_studija as ps where godina_vazenja={$plan_studija} and studij={$studij} and semestar={$semestar} and obavezan=0 order by predmet"); if (mysql_num_rows($q40) < 1) { print "Nema izbornih predmeta."; } else { $ops = $count = 0; $slotovi = array(); while ($r40 = mysql_fetch_row($q40)) { $slotovi[] = $r40[0]; } $slotovi[] = 0; foreach ($slotovi as $slot) { if ($ops == 0) { /* nop */ } else { if ($slot == $ops) { $count++; } else { if ($count == 0) { $q45 = myquery("select p.id, p.naziv from predmet as p, izborni_slot as iz where iz.id={$ops} and iz.predmet=p.id"); $prvi = 1; while ($r45 = mysql_fetch_row($q45)) { print "<input type=\"radio\" name=\"is{$ops}\" value=\"{$r45['0']}\" onchange=\"drugiodsjek('{$ops}',{$semestar},false);\""; if ($prvi) { print " CHECKED"; $prvi = 0; } print ">{$r45['1']}</input><br />\n"; } // Predmet sa drugog studija print "<input type=\"radio\" name=\"is{$ops}\" value=\"odsjek{$semestar}\" onchange=\"drugiodsjek('{$ops}',{$semestar},true);\">Predmet sa drugog odsjeka</input><br />\n"; print "<select name=\"odsjek-{$ops}\">\n"; $spisak_predmeta_drugi_studij = array(); $drugi_studiji = array(); $q46 = myquery("select tipstudija from studij where id={$studij}"); $studij_ts = intval(mysql_result($q46, 0, 0)); $q47 = myquery("select ps.predmet, p.naziv, s.kratkinaziv, s.id from plan_studija as ps, studij as s, predmet as p where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=1 and ps.studij=s.id and s.tipstudija={$studij_ts} and ps.predmet=p.id order by s.kratkinaziv, ps.semestar, p.naziv"); while ($r47 = mysql_fetch_row($q47)) { $drugi_studiji[$r47[3]] = $r47[2]; // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r47['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio $q49 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r47['0']} and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r47[0]] = "{$r47['1']} ({$r47['2']})"; //print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } // A sada i izborni $q51 = myquery("select ps.predmet, s.kratkinaziv, s.id from plan_studija as ps, studij as s where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=0 and ps.studij=s.id and s.tipstudija={$studij_ts} order by s.kratkinaziv"); while ($r51 = mysql_fetch_row($q51)) { $drugi_studiji[$r51[2]] = $r51[1]; $q52 = myquery("select izs.predmet, p.naziv from izborni_slot as izs, predmet as p where izs.id={$r51['0']} and izs.predmet=p.id order by p.naziv"); while ($r52 = mysql_fetch_row($q52)) { // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r52['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio $q49 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r52['0']} and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r52[0]] = "{$r52['1']} ({$r51['1']})"; } // print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } sort($drugi_studiji); //sort($spisak_predmeta_drugi_studij); foreach ($drugi_studiji as $studij_id => $studij_naziv) { foreach ($spisak_predmeta_drugi_studij as $predmet_id => $predmet_naziv) { if (strstr($predmet_naziv, "({$studij_naziv})")) { print "<option value=\"{$predmet_id}\">{$predmet_naziv}</option>\n"; } } } print "</select><br>\n"; } else { print "(izaberite " . ($count + 1) . " predmeta)<br />\n"; $q45 = myquery("select p.id, p.naziv from predmet as p, izborni_slot as iz where iz.id={$ops} and iz.predmet=p.id"); $prvi = $count + 1; while ($r45 = mysql_fetch_row($q45)) { print "<input type=\"checkbox\" name=\"iz{$ops}-{$r45['0']}\" value=\"{$r45['0']}\""; if ($prvi) { print " CHECKED"; $prvi--; } print " onchange=\"javascript:jedanod('{$ops}',this)\">{$r45['1']}</input><br />\n"; } // Predmet sa drugog studija print "<input type=\"checkbox\" name=\"iz{$ops}-odsjek\" value=\"odsjek{$semestar}\" onchange=\"javascript:jedanod('{$ops}',this); drugiodsjek('{$ops}',{$semestar},this.checked);\">Predmet sa drugog odsjeka</input><br />\n"; print "<select name=\"odsjek-{$ops}\">\n"; $spisak_predmeta_drugi_studij = array(); $drugi_studiji = array(); $q46 = myquery("select tipstudija from studij where id={$studij}"); $studij_ts = intval(mysql_result($q46, 0, 0)); $q47 = myquery("select ps.predmet, p.naziv, s.kratkinaziv, s.id from plan_studija as ps, studij as s, predmet as p where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=1 and ps.studij=s.id and s.tipstudija={$studij_ts} and ps.predmet=p.id order by s.kratkinaziv, ps.semestar, p.naziv"); while ($r47 = mysql_fetch_row($q47)) { $drugi_studiji[$r47[3]] = $r47[2]; // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r47['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio $q49 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r47['0']} and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r47[0]] = "{$r47['1']} ({$r47['2']})"; //print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } // A sada i izborni $q51 = myquery("select ps.predmet, s.kratkinaziv, s.id from plan_studija as ps, studij as s where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=0 and ps.studij=s.id and s.tipstudija={$studij_ts} order by s.kratkinaziv"); while ($r51 = mysql_fetch_row($q51)) { $drugi_studiji[$r51[2]] = $r51[1]; $q52 = myquery("select izs.predmet, p.naziv from izborni_slot as izs, predmet as p where izs.id={$r51['0']} and izs.predmet=p.id order by p.naziv"); while ($r52 = mysql_fetch_row($q52)) { // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r52['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio $q49 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r52['0']} and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r52[0]] = "{$r52['1']} ({$r51['1']})"; } // print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } sort($drugi_studiji); //sort($spisak_predmeta_drugi_studij); foreach ($drugi_studiji as $studij_id => $studij_naziv) { foreach ($spisak_predmeta_drugi_studij as $predmet_id => $predmet_naziv) { if (strstr($predmet_naziv, "({$studij_naziv})")) { print "<option value=\"{$predmet_id}\">{$predmet_naziv}</option>\n"; } } } print "</select><br>\n"; } } } $ops = $slot; } } ?> </p> <input type="button" value="Osvježi spisak predmeta" onclick="javascript:refresh()"><br /><br /> <input type="submit" value="Kreiraj ugovor"></form> <p><b>Napomene:</b><br> * Ukoliko obnavljate godinu, trebate ponovo izabrati one predmete koje ste već položili.<br> * Možete izabrati najviše jedan predmet s drugog odsjeka po semestru, a u zbiru trebate imati najmanje 30 ECTS kredita po semestru odnosno 60 ECTS kredita po godini.<br> * Ako želite slušati izborni predmet sa drugog fakulteta, sada ovdje izaberite neki predmet sa našeg fakulteta a ujedno pokrenite proceduru (koja podrazumijeva odobrenje oba fakulteta).</p> <?php }
function student_popuni_kviz() { global $userid; $kviz = intval($_REQUEST['kviz']); if ($_REQUEST['akcija'] == "salji") { // Ako je akcija salji, dodajemo vrijeme aktivacije $q5 = myquery("select vrijeme_aktivacije from kviz_student where student={$userid} and kviz={$kviz}"); if (mysql_num_rows($q5) < 1) { niceerror("Molimo ponovite kviz"); zamgerlog("poslao popunjen kviz {$kviz} a nema stavke u student_kviz", 3); zamgerlog2("poslao popunjen kviz a nema stavke u student_kviz", $kviz); return; } $vrijeme_kraja = "'" . mysql_result($q5, 0, 0) . "' + INTERVAL (trajanje_kviza+60) SECOND"; // Dodajemo 60 sekundi na trajanje, zbog evt. problema sa konekcijom } else { $vrijeme_kraja = "vrijeme_kraj"; } $q10 = myquery("select naziv, predmet, akademska_godina, aktivan, vrijeme_pocetak<NOW(), {$vrijeme_kraja} > NOW(), labgrupa, ip_adrese, broj_pitanja, trajanje_kviza, prolaz_bodova FROM kviz where id={$kviz}"); if (mysql_num_rows($q10) < 1) { // Postoji li kviz niceerror("Kviz ne postoji"); zamgerlog("pristup nepostojecem kvizu {$kviz}", 3); zamgerlog2("pristup nepostojecem kvizu", $kviz); return; } $naziv_ankete = mysql_result($q10, 0, 0); $predmet = mysql_result($q10, 0, 1); $ag = mysql_result($q10, 0, 2); $broj_pitanja = mysql_result($q10, 0, 8); $trajanje_kviza = mysql_result($q10, 0, 9); // u sekundama $prolaz_bodova = mysql_result($q10, 0, 10); // Da li student sluša predmet? Ujedno i naziv predmeta $q20 = myquery("select p.naziv from student_predmet as sp, ponudakursa as pk, predmet as p where sp.student={$userid} and sp.predmet=pk.id and pk.predmet=p.id and p.id={$predmet} and pk.akademska_godina={$ag}"); if (mysql_num_rows($q20) < 1) { niceerror("Nemate pristup ovom kvizu"); zamgerlog("student nije na predmetu za kviz {$kviz}", 3); zamgerlog2("student nije na predmetu", $kviz); return; } $naziv_predmeta = mysql_result($q20, 0, 0); // Da li je aktivan kviz if (mysql_result($q10, 0, 3) != 1) { niceerror("Kviz nije aktivan"); zamgerlog("kviz nije aktivan {$kviz}", 3); zamgerlog2("kviz nije aktivan", $kviz); return; } // Da li je vrijeme za kviz if (mysql_result($q10, 0, 4) != 1 || mysql_result($q10, 0, 5) != 1) { niceerror("Vrijeme za ovaj kviz je isteklo " . mysql_result($q10, 0, 4)); zamgerlog("vrijeme isteklo za kviz {$kviz}", 3); zamgerlog2("vrijeme isteklo", $kviz); return; } // Da li je u labgrupi? $labgrupa = mysql_result($q10, 0, 6); if ($labgrupa > 0) { $q30 = myquery("select count(*) from student_labgrupa where student={$userid} and labgrupa={$labgrupa}"); if (mysql_result($q30, 0, 0) == 0) { niceerror("Nemate pristup ovom kvizu"); zamgerlog("student nije u labgrupi {$labgrupa} za kviz {$kviz}", 3); zamgerlog2("student nije u odgovarajucoj labgrupi", intval($labgrupa), intval($kviz)); return; } } // Provjera IP adrese if (mysql_result($q10, 0, 7) != "") { $moja_ip = getip(); $ispravna = false; $blokovi = explode(",", mysql_result($q10, 0, 7)); foreach ($blokovi as $blok) { if (strstr($blok, "/")) { // adresa u CIDR formatu // Npr. 192.168.0.1/24 // Preuzeto sa: http://pgregg.com/blog/2009/04/php-algorithms-determining-if-an-ip-is-within-a-specific-range.html list($baza, $maska) = explode("/", $blok); $moja_f = ip2float($moja_ip); $baza_f = ip2float($baza); $netmask_dec = bindec(str_pad('', $maska, '1') . str_pad('', 32 - $maska, '0')); $wildcard_dec = pow(2, 32 - $maska) - 1; $netmask_dec = ~$wildcard_dec; if (($moja_f & $netmask_dec) == ($baza_f & $netmask_dec)) { $ispravna = true; break; } } else { if (strstr($blok, "-")) { // Raspon sa crticom // Npr. 10.0.0.1 - 10.0.0.15 list($prva, $zadnja) = explode("-", $blok); $moja_f = ip2float($moja_ip); $prva_f = ip2float($prva); $zadnja_f = ip2float($zadnja); if ($moja_f >= $prva_f && $moja_f <= $zadnja_f) { $ispravna = true; break; } } else { // Pojedinačna adresa if ($moja_ip == $blok) { $ispravna = true; break; } } } } // if ($ispravna == false) { niceerror("Nemate pristup ovom kvizu"); zamgerlog("losa ip adresa za kviz {$kviz}", 3); zamgerlog2("losa ip adresa", $kviz); return; } } // AKCIJA šalji // Sve ove provjere smo iskoristili da ih ne bismo ponovo kucali if ($_REQUEST['akcija'] == "salji" && check_csrf_token()) { $uk_bodova = 0; $rbr = 1; for ($i = 1; $i <= $broj_pitanja; $i++) { // MCSA - ako je dato više tačnih odgovora na pitanje, uvažavamo bilo koji $id_pitanja = $_REQUEST["rbrpitanje{$i}"]; $tacan_odgovor = false; $q200 = myquery("select kp.tekst, kp.bodova, ko.id from kviz_pitanje as kp, kviz_odgovor as ko where kp.id={$id_pitanja} and ko.kviz_pitanje=kp.id and ko.tacan=1"); while ($r200 = mysql_fetch_row($q200)) { $tekst_pitanja = $r200[0]; $bodova_pitanje = $r200[1]; if ($_REQUEST["odgovor"][$id_pitanja] == $r200[2]) { $tacan_odgovor = true; } } $ispis_rezultata .= "<tr><td>{$rbr}.</td><td>" . substr($tekst_pitanja, 0, 20) . "...</td><td>"; $rbr++; if ($tacan_odgovor) { $uk_bodova += $bodova_pitanje; $ispis_rezultata .= '<img src="images/16x16/zad_ok.png" width="16" height="16">' . "</td><td>{$bodova_pitanje}</td></tr>"; $q205 = myquery("UPDATE kviz_pitanje SET ukupno=ukupno+1, tacnih=tacnih+1 WHERE id={$id_pitanja}"); } else { $ispis_rezultata .= '<img src="images/16x16/brisanje.png" width="16" height="16">' . "</td><td>0</td></tr>"; $q208 = myquery("UPDATE kviz_pitanje SET ukupno=ukupno+1 WHERE id={$id_pitanja}"); } } /* $q200 = myquery("select kp.id, kp.bodova, ko.id, ko.tacan, kp.tekst from kviz_pitanje as kp, kviz_odgovor as ko where ko.kviz_pitanje=kp.id and kp.kviz=$kviz"); $ispis_rezultata = ""; $rbr=1; while ($r200 = mysql_fetch_row($q200)) { $id_pitanja = $r200[0]; $id_odgovora = $r200[2]; if ($_REQUEST["odgovor"][$id_pitanja] == $id_odgovora && $r200[3]==1) $uk_bodova += $r200[1]; $tekst = $r200[4]; if ($r200[3]!=1 || $_REQUEST["odgovor"][$id_pitanja]==0) continue; $ispis_rezultata .= "<tr><td>$rbr.</td><td>".substr($tekst,0,20)."...</td><td>"; $rbr++; if ($_REQUEST["odgovor"][$id_pitanja] == $id_odgovora && $r200[3]==1) $ispis_rezultata .= '<img src="images/16x16/zad_ok.png" width="16" height="16">'."</td><td>$r200[1]</td></tr>"; else $ispis_rezultata .= '<img src="images/16x16/brisanje.png" width="16" height="16">'."</td><td>0</td></tr>"; } */ $q210 = myquery("update kviz_student set dovrsen=1, bodova={$uk_bodova} where student={$userid} and kviz={$kviz}"); print "<center><h1>Kviz završen</h1></center>\n"; nicemessage("Osvojili ste {$uk_bodova} bodova."); if ($uk_bodova >= $prolaz_bodova) { nicemessage("Čestitamo"); } ?> <p><b>Tabela odgovora</b></p> <table border="1" cellspacing="0" cellpadding="2"> <tr><td>R.br.</td><td>Pitanje</td><td>Tačno?</td><td>Bodova</td></tr> <?php print $ispis_rezultata; print "</table>\n<br><br>\n"; ?> <p><a href="#" onclick="window.close();">Zatvorite ovaj prozor</a></p><?php zamgerlog("uradio kviz {$kviz}", 2); zamgerlog2("uradio kviz", $kviz); return; } // Da li je već ranije popunjavao kviz? $q40 = myquery("select count(*) from kviz_student where student={$userid} and kviz={$kviz}"); if (mysql_result($q40, 0, 0) > 0) { niceerror("Već ste popunjavali ovaj kviz"); zamgerlog("vec popunjavan kviz {$kviz}", 3); zamgerlog2("vec popunjavan kviz", $kviz); return; } // Ubacujemo da je započeo kviz $q50 = myquery("insert into kviz_student set student={$userid}, kviz={$kviz}, dovrsen=0, bodova=0, vrijeme_aktivacije=NOW()"); // Student može sudjelovati u kvizu pa šaljemo HTML ?> <html> <head> <title>Kviz</title> <script> var Tpocetak=new Date(); var Tkraj=new Date(); var active_element; function onBlur() { if (/*@cc_on!@*/false) { // check for Internet Explorer if (active_element != document.activeElement) { active_element = document.activeElement; return; } } alert('Vaš kviz je obustavljen jer ste pokušali raditi nešto što nije popunjavanje kviza!\nIzgubili ste bodove.'); var forma=document.getElementsByName('slanje'); forma[0].submit(); } function ucitavanje() { Tkraj.setTime((new Date()).getTime()+<?php echo $trajanje_kviza; ?> *1000); // vrijeme je u milisekundama var t = setTimeout("provjeriVrijeme()",1000); if (/*@cc_on!@*/false) { // check for Internet Explorer active_element = document.activeElement; document.onfocusout = onBlur; } else { window.onblur = onBlur; } setTimeout("clp_clear();",1000); } function clp_clear() { var content=window.clipboardData.getData("Text"); if (content==null) { window.clipboardData.clearData(); } setTimeout("clp_clear();",1000); } function provjeriVrijeme() { var diff=new Date(); diff.setTime(Tkraj-(new Date())); var vrijeme=document.getElementById('vrijeme'); if (Tkraj<=(new Date())) { var forma=document.getElementsByName('slanje'); forma[0].submit(); return; } if (diff.getMinutes()==0 && diff.getSeconds()<30) { vrijeme.style.color='#FF0000'; } var s = diff.getSeconds(); if (s<10) s = "0"+s; vrijeme.innerHTML = diff.getMinutes()+":"+s; setTimeout("provjeriVrijeme()", 1000); } </script> </head> <body onload="ucitavanje()"> <center><h2><?php echo $naziv_predmeta; ?> </h2> <h2><?php echo $naziv_ankete; ?> </h2></center> <div id="vrijemeinfo" style="width:150px; position:fixed; right:10px; top:20px; background-color: #303030; color:white;">Preostalo vrijeme: <span id="vrijeme"></span></div> <?php // Ispisujemo pitanja kviza ?> <br> <?php echo genform("POST", "slanje"); ?> <input type="hidden" name="akcija" value="salji"> <table width=600px align=center> <?php // ISPISI PITANJA $i = 0; $q100 = myquery("select id, tip, tekst from kviz_pitanje where vidljivo=1 and kviz={$kviz} order by RAND() limit 0,{$broj_pitanja}"); while ($r100 = mysql_fetch_array($q100)) { $i++; $pitanje_id = $r100[0]; $pitanje = $r100[2]; ?> <tr> <td valign=top><font size="5" face="serif"><?php echo $i; ?> .</font></td> <td><font size="5" face="serif"><?php echo $pitanje; ?> </font> <input type="hidden" name="rbrpitanje<?php echo $i; ?> " value="<?php echo $pitanje_id; ?> "> <br> <table> <?php // ISPISI ODGOVORE ZA PITANJE $q110 = mysql_query("select id, tekst from kviz_odgovor where vidljiv=1 and kviz_pitanje=" . $pitanje_id . " order by RAND()"); while ($r110 = mysql_fetch_array($q110)) { $odgovor = $r110[1]; $odgovor_id = $r110[0]; // FIXME: moze mapipulirati id odgovora i pitanja kada salje... ?> <tr> <td><font size="5" face="serif"> <input name="odgovor[<?php echo $pitanje_id; ?> ]" type="radio" value=<?php echo $odgovor_id; ?> > <?php echo $odgovor; ?> </font></td> </tr> <?php } // kraj ispisa odgovora ?> </table> </td> </tr> <tr><td colspan="2"><font size="5" face="serif"> <br> <br> <br> <br> </font></td></tr> <?php } // Kraj ispisa pitanja ?> </table> <br><br> <input type="submit" value="Predaj"> </form> <!-- <div id=navbox style="width:150px; position:fixed; right:10px; top:120px"> <b><div id=showTime2 style="width:100%; background-color: #303030; color:white;" ></div></b> <?php for ($j = 1; $j < $i + 1; $j++) { ?> <a href="#pitanje<?php echo $j; ?> " style="text-decoration: none; color:white;"><div style="width:100%; background-color: darkgray;" ><b>Pitanje <?php echo $j; ?> </b></div> <?php } ?> </div> --> </body> </html> <?php }
function studentska_intro() { global $userid, $user_siteadmin, $user_studentska, $conf_files_path; // Provjera privilegija if (!$user_studentska && !$user_siteadmin) { zamgerlog("nije studentska", 3); // 3: error biguglyerror("Pristup nije dozvoljen."); return; } // Akcije function promjena($nominativ, $u, $iz) { if ($iz == $u) { return; } if ($iz == "" || $iz == "0" || $iz == "01. 01. 1970." || !preg_match("/\\w/", $iz)) { print "<li>Upis novog podatka <b>{$nominativ}</b> (vrijednost: <b>{$u}</b>)</li>\n"; } else { if ($u == "" || $u == "0" || !preg_match("/\\w/", $u)) { print "<li>Brisanje podatka <b>{$nominativ}</b> (stara vrijednost: <b>{$iz}</b>)</li>\n"; } else { print "<li>Promjena podatka <b>{$nominativ}</b> iz vrijednosti <b>{$iz}</b> u vrijednost <b>{$u}</b></li>\n"; } } } if ($_POST['akcija'] == "Prihvati zahtjev" && check_csrf_token()) { $id = intval($_REQUEST['id']); $osoba = intval($_REQUEST['osoba']); $q100 = myquery("select pp.osoba, pp.ime, pp.prezime, pp.brindexa, pp.datum_rodjenja, pp.mjesto_rodjenja, pp.drzavljanstvo, pp.jmbg, pp.adresa, pp.adresa_mjesto, pp.telefon, pp.kanton, pp.imeoca, pp.prezimeoca, pp.imemajke, pp.prezimemajke, pp.spol, pp.nacionalnost, pp.slika, UNIX_TIMESTAMP(pp.vrijeme_zahtjeva), djevojacko_prezime, maternji_jezik, vozacka_dozvola, nacin_stanovanja from promjena_podataka as pp where pp.id={$id} order by pp.vrijeme_zahtjeva"); while ($r100 = mysql_fetch_row($q100)) { // Sve parametre treba ponovo escape-ati // Npr: korisnik je ukucao Meho' // - prilikom inserta u tabelu promjena podataka ovo se pretvara u Meho\' // - u tabeli se ustvari nalazi Meho' // - vrijednost varijable $r100[1] je Meho' $ime = mysql_real_escape_string($r100[1]); $prezime = mysql_real_escape_string($r100[2]); $brindexa = mysql_real_escape_string($r100[3]); $datum_rodjenja = mysql_real_escape_string($r100[4]); // mjesto rodjenja je tipa int // drzavljanstvo je tipa int $jmbg = mysql_real_escape_string($r100[7]); $adresa = mysql_real_escape_string($r100[8]); // adresa_mjesto je tipa int $telefon = mysql_real_escape_string($r100[10]); // kanton je tipa int $imeoca = mysql_real_escape_string($r100[12]); $prezimeoca = mysql_real_escape_string($r100[13]); $imemajke = mysql_real_escape_string($r100[14]); $prezimemajke = mysql_real_escape_string($r100[15]); // spol je tipa enum // nacionalnost je tipa int $slikapromjena = $r100[18]; $djevojacko_prezime = mysql_real_escape_string($r100[20]); // maternji_jezik je tipa integer // vozacka_dozvola je tipa int // nacin_stanovanja je tipa integer $q110 = myquery("update osoba set ime='{$ime}', prezime='{$prezime}', brindexa='{$brindexa}', datum_rodjenja='{$datum_rodjenja}', mjesto_rodjenja={$r100['5']}, drzavljanstvo={$r100['6']}, jmbg='{$jmbg}', adresa='{$adresa}', adresa_mjesto={$r100['9']}, telefon='{$telefon}', kanton={$r100['11']}, imeoca='{$imeoca}', prezimeoca='{$prezimeoca}', imemajke='{$imemajke}', prezimemajke='{$prezimemajke}', spol='{$r100['16']}', nacionalnost={$r100['17']}, djevojacko_prezime='{$djevojacko_prezime}', maternji_jezik={$r100['21']}, vozacka_dozvola={$r100['22']}, nacin_stanovanja={$r100['23']} where id={$r100['0']}"); $vrijeme_zahtjeva = $r100[19]; // Provjera izmjene slike $q115 = myquery("select slika from osoba where id={$r100['0']}"); $staraslika = mysql_result($q115, 0, 0); if ($staraslika != $slikapromjena) { $novaslika = $slikapromjena; $novaslika = str_replace("-promjena", "", $novaslika); $prefiks = "{$conf_files_path}/slike/"; if (file_exists($prefiks . $staraslika)) { unlink($prefiks . $staraslika); } if ($slikapromjena != "") { rename($prefiks . $slikapromjena, $prefiks . $novaslika); } $q117 = myquery("update osoba set slika='{$novaslika}' where id={$r100['0']}"); } } $q120 = myquery("delete from promjena_podataka where id={$id}"); zamgerlog("prihvacen zahtjev za promjenu podataka korisnika u{$osoba}", 4); print "Zahtjev je prihvaćen"; // Poruka korisniku $tekst_poruke = "Na dan " . date("d. m. Y.", $vrijeme_zahtjeva) . ", u " . date("H:i:s", $vrijeme_zahtjeva) . " poslali ste zahtjev za promjenu ličnih podataka. Vaš zahtjev je prihvaćen. Klikom na link Profil možete vidjeti vaše nove podatke."; if (strlen($_REQUEST['komentar']) > 2) { $tekst_poruke .= "\n\nPovodom Vašeg zahtjeva, Studentska služba vam je uputila sljedeći komentar:\n\t" . $_REQUEST['komentar']; } $q310 = myquery("insert into poruka set tip=2, opseg=7, primalac={$osoba}, posiljalac={$userid}, vrijeme=NOW(), ref=0, naslov='Vaš zahtjev za promjenu podataka je prihvaćen', tekst='{$tekst_poruke}'"); return; } if ($_POST['akcija'] == "Odbij zahtjev" && check_csrf_token()) { $id = intval($_REQUEST['id']); $osoba = intval($_REQUEST['osoba']); $q195 = myquery("select UNIX_TIMESTAMP(vrijeme_zahtjeva), slika from promjena_podataka where id={$id}"); if (mysql_num_rows($q195) < 1) { niceerror("Nepostojeci zahtjev sa IDom {$id}."); zamgerlog("nepostojeci zahtjev sa IDom {$id}", 3); return; } $vrijeme_zahtjeva = mysql_result($q195, 0, 0); $slikapromjena = mysql_result($q195, 0, 1); // Treba li obrisati viška sliku? $q197 = myquery("select slika from osoba where id={$osoba}"); if ($slikapromjena != "" && mysql_result($q197, 0, 0) != $slikapromjena) { unlink("{$conf_files_path}/slike/{$slikapromjena}"); } $q200 = myquery("delete from promjena_podataka where id={$id}"); zamgerlog("odbijen zahtjev za promjenu podataka korisnika u{$osoba}", 2); print "Zahtjev je odbijen"; // Poruka korisniku $tekst_poruke = "Na dan " . date("d. m. Y.", $vrijeme_zahtjeva) . ", u " . date("H:i:s", $vrijeme_zahtjeva) . " poslali ste zahtjev za promjenu ličnih podataka. Vaš zahtjev je odbijen."; if (strlen($_REQUEST['komentar']) > 2) { $tekst_poruke .= "\n\nRazlog odbijanja zahtjeva je:\n\t" . $_REQUEST['komentar']; } $q310 = myquery("insert into poruka set tip=2, opseg=7, primalac={$osoba}, posiljalac={$userid}, vrijeme=NOW(), ref=0, naslov='Vaš zahtjev za promjenu podataka je odbijen!', tekst='{$tekst_poruke}'"); return; } if ($_GET['akcija'] == "zahtjev") { $id = intval($_REQUEST['id']); $q100 = myquery("select pp.osoba, pp.ime, pp.prezime, pp.brindexa, UNIX_TIMESTAMP(pp.datum_rodjenja), pp.mjesto_rodjenja, pp.drzavljanstvo, pp.jmbg, pp.adresa, pp.adresa_mjesto, pp.telefon, pp.kanton, o.ime, o.prezime, o.brindexa, UNIX_TIMESTAMP(o.datum_rodjenja), o.mjesto_rodjenja, o.drzavljanstvo, o.jmbg, o.adresa, o.adresa_mjesto, o.telefon, o.kanton, pp.imeoca, o.imeoca, pp.prezimeoca, o.prezimeoca, pp.imemajke, o.imemajke, pp.prezimemajke, o.prezimemajke, pp.spol, o.spol, pp.nacionalnost, o.nacionalnost, pp.slika, o.slika, pp.djevojacko_prezime, o.djevojacko_prezime, pp.maternji_jezik, o.maternji_jezik, pp.vozacka_dozvola, o.vozacka_dozvola, pp.nacin_stanovanja, o.nacin_stanovanja from promjena_podataka as pp, osoba as o where o.id=pp.osoba and pp.id={$id}"); if (mysql_num_rows($q100) < 1) { niceerror("Nepoznat ID zahtjeva {$id}."); zamgerlog("nepoznat id zahtjeva za promjenu podataka {$id}", 3); return; } $osoba = mysql_result($q100, 0, 0); ?> <p>Korisnik <b><?php echo mysql_result($q100, 0, 12); ?> <?php echo mysql_result($q100, 0, 13); ?> </b> zatražio je sljedeće izmjene svojih ličnih podataka: <ul> <?php promjena("ime", mysql_result($q100, 0, 1), mysql_result($q100, 0, 12)); promjena("prezime", mysql_result($q100, 0, 2), mysql_result($q100, 0, 13)); promjena("djevojačko prezime", mysql_result($q100, 0, 37), mysql_result($q100, 0, 38)); promjena("ime oca", mysql_result($q100, 0, 23), mysql_result($q100, 0, 24)); promjena("prezime oca", mysql_result($q100, 0, 25), mysql_result($q100, 0, 26)); promjena("ime majke", mysql_result($q100, 0, 27), mysql_result($q100, 0, 28)); promjena("prezime majke", mysql_result($q100, 0, 29), mysql_result($q100, 0, 30)); $starispol = mysql_result($q100, 0, 31); $novispol = mysql_result($q100, 0, 32); if ($starispol != $novispol) { if ($starispol == "M") { $starispol = "muški"; } if ($starispol == "Z") { $starispol = "ženski"; } if ($novispol == "M") { $novispol = "muški"; } if ($novispol == "Z") { $novispol = "ženski"; } promjena("spol", $starispol, $novispol); } promjena("broj indexa", mysql_result($q100, 0, 3), mysql_result($q100, 0, 14)); promjena("datum rođenja", date("d. m. Y.", mysql_result($q100, 0, 4)), date("d. m. Y.", mysql_result($q100, 0, 15))); // Mjesto rodjenja $staromj = mysql_result($q100, 0, 5); $novomj = mysql_result($q100, 0, 16); if ($staromj != $novomj) { if ($staromj != 0) { $q101 = myquery("select naziv from mjesto where id={$staromj}"); $staromjn = mysql_result($q101, 0, 0); } if ($novomj != 0) { $q102 = myquery("select naziv from mjesto where id={$novomj}"); $novomjn = mysql_result($q102, 0, 0); } if ($staromjn == $novomjn) { $q101 = myquery("select o.naziv from mjesto as m, opcina as o where m.id={$staromj} and m.opcina=o.id"); $staromjn .= " (" . mysql_result($q101, 0, 0) . ")"; $q102 = myquery("select o.naziv from mjesto as m, opcina as o where m.id={$novomj} and m.opcina=o.id"); $novomjn .= " (" . mysql_result($q102, 0, 0) . ")"; } promjena("mjesto rođenja", $staromjn, $novomjn); } // Drzavljanstvo $starodrz = mysql_result($q100, 0, 6); $novodrz = mysql_result($q100, 0, 17); if ($starodrz != $novodrz) { if ($starodrz != 0) { $q101 = myquery("select naziv from drzava where id={$starodrz}"); $starodrz = mysql_result($q101, 0, 0); } if ($novodrz != 0) { $q102 = myquery("select naziv from drzava where id={$novodrz}"); $novodrz = mysql_result($q102, 0, 0); } promjena("državljanstvo", $starodrz, $novodrz); } // Nacionalnost $staronac = mysql_result($q100, 0, 33); $novonac = mysql_result($q100, 0, 34); if ($staronac != $novonac) { if ($staronac != 0) { $q101 = myquery("select naziv from nacionalnost where id={$staronac}"); $staronac = mysql_result($q101, 0, 0); } if ($novonac != 0) { $q102 = myquery("select naziv from nacionalnost where id={$novonac}"); $novonac = mysql_result($q102, 0, 0); } promjena("nacionalnost", $staronac, $novonac); } promjena("JMBG", mysql_result($q100, 0, 7), mysql_result($q100, 0, 18)); // Adresa $staraadr = mysql_result($q100, 0, 8); $novaadr = mysql_result($q100, 0, 19); $said = mysql_result($q100, 0, 9); $naid = mysql_result($q100, 0, 20); if ($said != 0) { $q103 = myquery("select naziv from mjesto where id={$said}"); $staraadr .= ", " . mysql_result($q103, 0, 0); } if ($naid != 0) { $q103 = myquery("select naziv from mjesto where id={$naid}"); $novaadr .= ", " . mysql_result($q103, 0, 0); } promjena("adresa", $staraadr, $novaadr); promjena("telefon", mysql_result($q100, 0, 10), mysql_result($q100, 0, 21)); $starikanton = mysql_result($q100, 0, 11); $novikanton = mysql_result($q100, 0, 22); if ($starikanton != $novikanton) { if ($starikanton != 0) { $q110 = myquery("select naziv from kanton where id={$starikanton}"); $starikanton = mysql_result($q110, 0, 0); } if ($novikanton != 0) { $q112 = myquery("select naziv from kanton where id={$novikanton}"); $novikanton = mysql_result($q112, 0, 0); } promjena("kanton", $starikanton, $novikanton); } $starimaternji = mysql_result($q100, 0, 39); $novimaternji = mysql_result($q100, 0, 40); if ($starimaternji != $novimaternji) { if ($starimaternji != 0) { $q110 = myquery("select naziv from maternji_jezik where id={$starimaternji}"); $starimaternji = mysql_result($q110, 0, 0); } if ($novimaternji != 0) { $q112 = myquery("select naziv from maternji_jezik where id={$novimaternji}"); $novimaternji = mysql_result($q112, 0, 0); } promjena("maternji jezik", $starimaternji, $novimaternji); } $staravozacka = mysql_result($q100, 0, 41); $novavozacka = mysql_result($q100, 0, 42); if ($staravozacka != $novavozacka) { if ($staravozacka != 0) { $q110 = myquery("select naziv from vozacki_kategorija where id={$staravozacka}"); $staravozacka = mysql_result($q110, 0, 0); } if ($novavozacka != 0) { $q112 = myquery("select naziv from vozacki_kategorija where id={$novavozacka}"); $novavozacka = mysql_result($q112, 0, 0); } promjena("vozačka dozvola", $staravozacka, $novimaternji); } $starinacinst = mysql_result($q100, 0, 43); $novinacinst = mysql_result($q100, 0, 44); if ($starinacinst != $novinacinst) { if ($starinacinst != 0) { $q110 = myquery("select naziv from nacin_stanovanja where id={$starinacinst}"); $starinacinst = mysql_result($q110, 0, 0); } if ($novinacinst != 0) { $q112 = myquery("select naziv from nacin_stanovanja where id={$novinacinst}"); $novinacinst = mysql_result($q112, 0, 0); } promjena("način stanovanja", $starinacinst, $novinacinst); } ?> </ul><p> </p> <?php $staraslika = mysql_result($q100, 0, 36); $novaslika = mysql_result($q100, 0, 35); if ($staraslika != $novaslika) { if ($staraslika == "") { ?> <p>Dodavanje slike:<br><img src="?sta=common/slika&osoba=<?php echo $osoba; ?> &promjena=1"></p> <?php } else { if ($novaslika == "") { ?> <p>Brisanje slike (stara slika):<br><img src="?sta=common/slika&osoba=<?php echo $osoba; ?> "></p> <?php } else { ?> <p>Promjena slike</p> <table border="0"><tr><td valign="top">Iz:<br><img src="?sta=common/slika&osoba=<?php echo $osoba; ?> "></td> <td valign="top">U<br><img src="?sta=common/slika&osoba=<?php echo $osoba; ?> &promjena=1"></td></tr></table> <?php } } print "<p> </p>\n"; } ?> <?php echo genform("POST"); ?> <input type="hidden" name="osoba" value="<?php echo $osoba; ?> "> <input type="submit" name="akcija" value="Prihvati zahtjev"> <input type="submit" name="akcija" value="Odbij zahtjev"><br><br> Eventualno upišite komentar koji želite poslati studentu:<br> <input type="text" size="50" name="komentar"> </form> <?php return; } // Zahtjevi za dokumenta / potvrde if ($_GET['akcija'] == "obradi_potvrdu") { $id = intval($_GET['id']); $status = intval($_GET['status']); $q210 = myquery("UPDATE zahtjev_za_potvrdu SET status={$status} WHERE id={$id}"); zamgerlog("obradjen zahtjev za potvrdu {$id} (status: {$status})", 2); zamgerlog2("obradjen zahtjev za potvrdu", $id, $status); nicemessage("Zahtjev obrađen"); // Poruka korisniku $q215 = myquery("SELECT UNIX_TIMESTAMP(datum_zahtjeva), student FROM zahtjev_za_potvrdu WHERE id={$id}"); $vrijeme_zahtjeva = mysql_result($q215, 0, 0); $student = mysql_result($q215, 0, 1); $tekst_poruke = "Na dan " . date("d. m. Y.", $vrijeme_zahtjeva) . ", u " . date("H:i:s", $vrijeme_zahtjeva) . " poslali ste zahtjev za ovjereno uvjerenje ili potvrdu o redovnom studiju. Vaše uvjerenje je spremno i možete ga preuzeti u studentskoj službi."; $q310 = myquery("insert into poruka set tip=2, opseg=7, primalac={$student}, posiljalac={$userid}, vrijeme=NOW(), ref=0, naslov='Vaša potvrda/uvjerenje je spremno', tekst='{$tekst_poruke}'"); // Slanje GCM poruke require "gcm/push_message.php"; push_message(array($student), "Potvrde", "Vaša potvrda/uvjerenje je spremno"); $_GET['akcija'] = "potvrda"; } if ($_GET['akcija'] == "obrisi_potvrdu") { $id = intval($_GET['id']); $q210 = myquery("DELETE FROM zahtjev_za_potvrdu WHERE id={$id}"); zamgerlog("obrisan zahtjev za potvrdu {$id}", 2); zamgerlog2("obrisan zahtjev za potvrdu", $id, $status); nicemessage("Zahtjev obrisan"); $_GET['akcija'] = "potvrda"; } if ($_GET['akcija'] == "potvrda") { if ($_REQUEST['sort'] == "prezime") { $order_by = "ORDER BY o.prezime, o.ime"; $link1 = "prezime_desc"; $link2 = "brindexa"; $link3 = "datum"; } else { if ($_REQUEST['sort'] == "prezime_desc") { $order_by = "ORDER BY o.prezime DESC, o.ime DESC"; $link1 = "prezime"; $link2 = "brindexa"; $link3 = "datum"; } else { if ($_REQUEST['sort'] == "datum") { $order_by = "ORDER BY zzp.datum_zahtjeva"; $link1 = "prezime"; $link2 = "brindexa"; $link3 = "datum_desc"; } else { if ($_REQUEST['sort'] == "datum_desc") { $order_by = "ORDER BY zzp.datum_zahtjeva DESC"; $link1 = "prezime"; $link2 = "brindexa"; $link3 = "datum"; } else { if ($_REQUEST['sort'] == "brindexa") { $order_by = "ORDER BY o.brindexa"; $link1 = "prezime"; $link2 = "brindexa_desc"; $link3 = "datum"; } else { if ($_REQUEST['sort'] == "brindexa_desc") { $order_by = "ORDER BY o.brindexa DESC"; $link1 = "prezime"; $link2 = "brindexa"; $link3 = "datum"; } else { // Default $order_by = "ORDER BY zzp.datum_zahtjeva"; $link1 = "prezime"; $link2 = "brindexa"; $link3 = "datum_desc"; } } } } } } ?> <p><b>Neobrađeni zahtjevi</b></p> <table border="1" cellspacing="0" cellpadding="2"> <tr> <th>R.br.</th><th><a href="?sta=studentska/intro&akcija=potvrda&sort=<?php echo $link1; ?> ">Prezime i ime studenta</a></th><th><a href="?sta=studentska/intro&akcija=potvrda&sort=<?php echo $link2; ?> ">Broj indeksa</a></th><th>Tip zahtjeva</th><th><a href="?sta=studentska/intro&akcija=potvrda&sort=<?php echo $link3; ?> ">Datum</a></th><th>Opcije</th> </tr> <?php $q200 = myquery("SELECT zzp.id, o.ime, o.prezime, tp.id, tp.naziv, UNIX_TIMESTAMP(zzp.datum_zahtjeva), o.id, zzp.svrha_potvrde, o.brindexa FROM zahtjev_za_potvrdu as zzp, osoba as o, tip_potvrde as tp WHERE zzp.student=o.id AND zzp.tip_potvrde=tp.id AND zzp.status=1 {$order_by}"); $rbr = 1; while ($r200 = mysql_fetch_row($q200)) { if ($r200[3] == 1) { $link_printanje = "?sta=izvjestaj/potvrda&student={$r200['6']}&svrha={$r200['7']}"; } else { $link_printanje = "?sta=izvjestaj/index2&student={$r200['6']}"; } print "<tr><td>{$rbr}</td><td>{$r200['2']} {$r200['1']}</td><td>{$r200['8']}</td><td>{$r200['4']}</td><td>" . date("d.m.Y. H:i:s", $r200[5]) . "</td><td><a href=\"{$link_printanje}\">printaj</a> * <a href=\"?sta=studentska/intro&akcija=obradi_potvrdu&id={$r200['0']}&status=2\">obradi</a>"; // Dodatne kontrole $error = 0; $q210 = myquery("SELECT count(*) FROM student_studij AS ss, akademska_godina AS ag WHERE ss.student={$r200['6']} AND ss.akademska_godina=ag.id AND ag.aktuelna=1"); if (mysql_result($q210, 0, 0) == 0) { print " - <font color=\"red\">trenutno nije upisan na studij!</font>"; $error = 1; } $q220 = myquery("SELECT mjesto_rodjenja, datum_rodjenja, jmbg FROM osoba WHERE id={$r200['6']}"); if (mysql_result($q220, 0, 0) == 0) { print " - <font color=\"red\">nedostaje mjesto rođenja</font>"; $error = 1; } if (mysql_result($q220, 0, 1) == '0000-00-00') { print " - <font color=\"red\">nedostaje datum rođenja</font>"; $error = 1; } if (mysql_result($q220, 0, 2) == "") { print " - <font color=\"red\">nedostaje JMBG</font>"; $error = 1; } if ($error == 1) { print " <a href=\"?sta=studentska/osobe&akcija=edit&osoba={$r200['6']}\">popravi</a>"; } print "</td></tr>\n"; $rbr++; } ?> </table> <p><b>Obrađeni zahtjevi</b></p> <?php if ($_REQUEST['subakcija'] == "arhiva") { ?> <p><a href="?sta=studentska/intro&akcija=potvrda">Sakrij zahtjeve starije od mjesec dana</a></p> <?php } else { ?> <p><a href="?sta=studentska/intro&akcija=potvrda&subakcija=arhiva">Prikaži zahtjeve starije od mjesec dana</a></p> <?php } ?> <table border="1" cellspacing="0" cellpadding="2"> <tr> <th>R.br.</th><th><a href="?sta=studentska/intro&akcija=potvrda&sort=<?php echo $link1; ?> ">Prezime i ime studenta</a></th><th><a href="?sta=studentska/intro&akcija=potvrda&sort=<?php echo $link2; ?> ">Broj indeksa</a></th><th>Tip zahtjeva</th><th><a href="?sta=studentska/intro&akcija=potvrda&sort=<?php echo $link3; ?> ">Datum</a></th><th>Opcije</th> </tr> <?php if ($_REQUEST['subakcija'] == "arhiva") { $arhiva = ""; } else { $arhiva = "AND zzp.datum_zahtjeva > DATE_SUB(NOW(), INTERVAL 1 MONTH)"; } $q200 = myquery("SELECT zzp.id, o.ime, o.prezime, tp.id, tp.naziv, UNIX_TIMESTAMP(zzp.datum_zahtjeva), o.id, zzp.svrha_potvrde, o.brindexa FROM zahtjev_za_potvrdu as zzp, osoba as o, tip_potvrde as tp WHERE zzp.student=o.id AND zzp.tip_potvrde=tp.id AND zzp.status=2 {$arhiva} {$order_by}"); $rbr = 1; while ($r200 = mysql_fetch_row($q200)) { if ($r200[3] == 1) { $link_printanje = "?sta=izvjestaj/potvrda&student={$r200['6']}&svrha={$r200['7']}"; } else { $link_printanje = "?sta=izvjestaj/index2&student={$r200['6']}"; } print "<tr><td>{$rbr}</td><td>{$r200['2']} {$r200['1']}</td><td>{$r200['8']}</td><td>{$r200['4']}</td><td>" . date("d.m.Y. H:i:s", $r200[5]) . "</td><td><a href=\"{$link_printanje}\">printaj</a> * <a href=\"?sta=studentska/intro&akcija=obradi_potvrdu&id={$r200['0']}&status=1\">postavi kao neobrađen</a> * <a href=\"?sta=studentska/intro&akcija=obrisi_potvrdu&id={$r200['0']}\">obriši</a></td></tr>\n"; $rbr++; } print "</table>\n"; return; } // ----------------------------------------- // // POCETNA STRANICA // // ----------------------------------------- // 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>"; } // Zahtjevi za promjenu ličnih podataka $q10 = myquery("select pp.id, pp.osoba, UNIX_TIMESTAMP(pp.vrijeme_zahtjeva), o.ime, o.prezime from promjena_podataka as pp, osoba as o where o.id=pp.osoba order by pp.vrijeme_zahtjeva"); if (mysql_num_rows($q10) < 1) { ?> <p>Nema novih zahtjeva za promjenu ličnih podataka.</p> <?php } else { ?> <p><b>Zahtjevi za promjenu ličnih podataka:</b> <ul> <?php } while ($r10 = mysql_fetch_row($q10)) { ?> <li><a href="?sta=studentska/intro&akcija=zahtjev&id=<?php echo $r10[0]; ?> "><?php echo $r10[3]; ?> <?php echo $r10[4]; ?> </a> (<?php echo date("d. m. Y. H:i", $r10[2]); ?> )</li> <?php } if (mysql_num_rows($q10) > 0) { ?> </ul> Kliknite na zahtjev da biste ga prihvatili ili odbili. </p> <?php } // Zathjevi za dokumenta $q40 = myquery("SELECT count(*) FROM zahtjev_za_potvrdu WHERE status=1"); $br_zahtjeva = mysql_result($q40, 0, 0); if ($br_zahtjeva > 0) { print "<p><a href=\"?sta=studentska/intro&akcija=potvrda\">Imate {$br_zahtjeva} neobrađenih zahtjeva za dokumenta.</a></p>"; } else { print "<p>Nema neobrađenih zahtjeva za dokumenta.</p>"; } }
function izvjestaj_index2() { global $userid, $user_studentska, $user_siteadmin; // Ulazni parametri $student = intval($_REQUEST['student']); $param_ciklus = intval($_REQUEST['ciklus']); // Prava pristupa if (!$user_studentska && !$user_siteadmin && $userid != $student) { biguglyerror("Nemate pravo pristupa ovom izvještaju"); zamgerlog("nije studentska, a pristupa tudjem izvjestaju ({$student})", 3); zamgerlog2("nije studentska, a pristupa tudjem izvjestaju", $student); return; } // Deklaracije nizova $imena_semestara = array("", "prvi", "drugi", "treći", "četvrti", "peti", "šesti"); $rimski_brojevi = array("", "I", "II", "III", "IV", "V", "VI"); $imena_ocjena = array("", "", "", "", "", "5 (pet)", "6 (šest)", "7 (sedam)", "8 (osam)", "9 (devet)", "10 (deset)", "ispunio/la obaveze"); $ects_ocjene = array("", "", "", "", "", "F", "E", "D", "C", "B", "A", "IO"); // Podaci o studentu $q100 = myquery("select ime, prezime, brindexa, jmbg, spol from osoba where id={$student}"); if (!($r100 = mysql_fetch_row($q100))) { biguglyerror("Student se ne nalazi u bazi podataka."); zamgerlog("nepoznat ID {$student}", 3); // 3 = greska zamgerlog2("nepoznat id korisnika", $student); // 3 = greska return; } $ime_prezime = "{$r100['0']} {$r100['1']}"; $brindexa = $r100[2]; $jmbg = $r100[3]; if ($param_ciklus != 0) { $upit_dodaj = " AND ts.ciklus={$param_ciklus}"; } $q110 = myquery("SELECT s.naziv, ag.naziv, ss.semestar, ns.naziv, ss.ponovac, s.id, ts.ciklus, s.institucija, ts.trajanje, ts.ects \nFROM student_studij as ss, studij as s, nacin_studiranja as ns, akademska_godina as ag, tipstudija as ts \nWHERE ss.student={$student} and ss.studij=s.id and ss.akademska_godina=ag.id and ss.nacin_studiranja=ns.id and s.tipstudija=ts.id {$upit_dodaj}\nORDER BY ag.id desc, ss.semestar DESC LIMIT 1"); if (!($r110 = mysql_fetch_row($q110))) { niceerror("Nemamo podataka o studiju za studenta " . $r100[0] . " " . $r100[1]); zamgerlog("student u{$student} nikada nije studirao", 3); zamgerlog2("korisnik nikada nije studirao", $student); return; } $naziv_studija = $r110[0]; $naziv_ag = $r110[1]; $trenutno_semestar = $r110[2]; $nacin_studiranja = $r110[3]; $ponovac = $r110[4]; $studij_ciklus = $r110[6]; $studij_trajanje = $r110[8]; $studij_ects = $r110[9]; if ($ponovac == 1) { $q120 = myquery("select count(*) from student_studij where student={$student} and studij={$r110['5']} and semestar={$r110['2']}"); $koji_put = mysql_result($q120, 0, 0); } else { $koji_put = "1"; } // Kod izvještaja za sve cikluse sumiramo ECTS bodove na svim studijima koje je student slušao if ($studij_ciklus == 2 && $param_ciklus == 0) { $q115 = myquery("select ts.ects from student_studij as ss, studij as s, tipstudija as ts where ss.student={$student} and ss.studij=s.id and s.tipstudija=ts.id and ts.ciklus=1 and ss.semestar=ts.trajanje order by ss.akademska_godina desc limit 1"); if (mysql_num_rows($q115) > 0) { $studij_ects += mysql_result($q115, 0, 0); } } ?> <img src="images/content/ETF-memorandum.png"> <p> </p> <p>Na osnovu člana 169. Zakona o upravnom postupku FBiH (Službene novine FBiH, broj 2/98, 48/99), člana 147. (4) Zakona o visokom obrazovanju Kantona Sarajevo (Službene novine Kantona Sarajevo, broj 22/10, 15/13) i člana 198. stav (1) Statuta Univerziteta u Sarajevu, Elektrotehnički fakultet u Sarajevu izdaje</p> <h2>Uvjerenje o prepisu ocjena</h2> <p> <br /> <table border="0"> <tr> <td>Ime i prezime studenta:</td> <td><b><?php echo $ime_prezime; ?> </b></td> </tr> <tr> <td>Broj dosijea:</td> <td><b><?php echo $brindexa; ?> </b></td> </tr> <tr> <td>JMBG:</td> <td><b><?php echo $jmbg; ?> </b></td> </tr> </table> <?php $spol = $r100[4]; if ($spol == "") { $spol = spol($r100[0]); } // Da li je student završio/la studij? $q88 = myquery("SELECT COUNT(*), SUM(p.ects) \nFROM konacna_ocjena as ko, ponudakursa as pk, predmet as p, student_predmet as sp, studij as s, tipstudija as ts\nWHERE ko.student={$student} and ko.predmet=p.id and ko.predmet=pk.predmet and ko.akademska_godina=pk.akademska_godina and pk.id=sp.predmet \nand sp.student={$student} and pk.studij=s.id and s.tipstudija=ts.id and ko.ocjena>5 {$upit_dodaj}"); $broj_polozenih_predmeta = mysql_result($q88, 0, 0); $suma_ects = mysql_result($q88, 0, 1); // Određujemo na osnovu sume ECTS kredita if ($suma_ects >= $studij_ects && $trenutno_semestar == $studij_trajanje) { $q89 = myquery("SELECT UNIX_TIMESTAMP(ko.datum_u_indeksu) \n\tFROM konacna_ocjena as ko, predmet as p, ponudakursa as pk, student_predmet as sp, studij as s, tipstudija as ts, akademska_godina_predmet as agp\n\tWHERE ko.student={$student} and ko.predmet=p.id and ko.predmet=pk.predmet and ko.akademska_godina=pk.akademska_godina and pk.id=sp.predmet and sp.student={$student} and pk.studij=s.id and s.tipstudija=ts.id and agp.predmet=p.id and agp.akademska_godina=pk.akademska_godina and agp.tippredmeta=1000 {$upit_dodaj}\n\tORDER BY ko.datum_u_indeksu desc"); // 1000 = tip predmeta "Završni rad" if (mysql_num_rows($q89) == 0) { niceerror("Greška! Ne može se generisati izvještaj."); print "Student je završio studij jer trenutno nije upisan, ima sve potrebne ECTS kredite, ali nije unesena ocjena za Završni rad tako da se ne može odrediti datum diplomiranja. Nešto nije u redu sa podacima vezanim za ovog studenta (suma ECTS kredita ne bi trebala biti ispravna) STUDIJ: {$studij_ects} SUMA {$suma_ects}."; return; } $datum_diplomiranja = date("d. m. Y.", mysql_result($q89, 0, 0)); if ($spol == "Z") { ?> <p>Studentica <?php echo $ime_prezime; ?> je završila <?php echo $studij_ciklus; ?> . ciklus studija dana <?php echo $datum_diplomiranja; ?> kao <?php echo $nacin_studiranja; ?> student, studij "<?php echo $naziv_studija; ?> " , pri čemu je položila sljedeće predmete:</p> <?php } else { ?> <p>Student <?php echo $ime_prezime; ?> je završio <?php echo $studij_ciklus; ?> . ciklus studija dana <?php echo $datum_diplomiranja; ?> kao <?php echo $nacin_studiranja; ?> student, studij "<?php echo $naziv_studija; ?> ", pri čemu je položio sljedeće predmete:</p> <?php } } else { if ($spol == "Z") { ?> <p>Studentica <?php echo $ime_prezime; ?> je upisana u akademskoj <?php echo $naziv_ag; ?> . godini u <?php echo $rimski_brojevi[$trenutno_semestar]; ?> (<?php echo $imena_semestara[$trenutno_semestar]; ?> ) semestar <?php echo $koji_put; ?> . put kao <?php echo $nacin_studiranja; ?> student, studij "<?php echo $naziv_studija; ?> " (<?php echo $studij_ciklus; ?> . ciklus), pri čemu je položila sljedeće predmete:</p> <?php } else { ?> <p>Student <?php echo $ime_prezime; ?> je upisan u akademskoj <?php echo $naziv_ag; ?> . godini u <?php echo $rimski_brojevi[$trenutno_semestar]; ?> (<?php echo $imena_semestara[$trenutno_semestar]; ?> ) semestar <?php echo $koji_put; ?> . put kao <?php echo $nacin_studiranja; ?> student, studij "<?php echo $naziv_studija; ?> " (<?php echo $studij_ciklus; ?> . ciklus), pri čemu je položio sljedeće predmete:</p> <?php } } $sumagodine = $brojgodine = $sumauk = $brojuk = $sumaects = 0; // Ocjene po odluci: $q105 = myquery("select ko.ocjena, p.naziv, UNIX_TIMESTAMP(o.datum), o.broj_protokola, p.ects from konacna_ocjena as ko, odluka as o, predmet as p where ko.odluka=o.id and ko.predmet=p.id and ko.student={$student}"); if (mysql_num_rows($q105) > 0) { ?> <p><b>Ocjene donesene odlukom (nostrifikacija, promjena studija itd.):</b><br/><ul> <?php } while ($r105 = mysql_fetch_row($q105)) { print "<li><b>{$r105['1']}</b> - ocjena: " . $imena_ocjena[$r105[0]] . "<br/>(odluka br. {$r105['3']} od " . date("d. m. Y.", $r105[2]) . ")</li>\n"; $sumauk += $r105[0]; $brojuk++; $sumaects += $r105[4]; } if (mysql_num_rows($q105) > 0) { print "</ul></p><p> </p>\n"; } // Ocjene priznavanje if ($param_ciklus != 0) { $dod_priznavanje = " and ciklus={$param_ciklus}"; } else { $dod_priznavanje = ""; } $q125 = myquery("select naziv_predmeta, sifra_predmeta, ects, ocjena, odluka, akademska_godina, strana_institucija from priznavanje where student={$student} {$dod_priznavanje} order by odluka, akademska_godina, naziv_predmeta"); if (mysql_num_rows($q125) > 0) { ?> <p><b>Priznavanje ocjena ostvarenih na drugoj instituciji po osnovu mobilnosti studenata:</b></p> <table width="700" border="1" cellspacing="0" cellpadding="3"><tr bgcolor="#AAAAAA"> <td width="20"><b>R.br.</b></td> <td width="60"><b>Šifra</b></td> <td width="280"><b>Naziv predmeta</b></td> <td width="30"><b>ECTS bodovi</b></td> <td width="60"><b>Konačna ocjena</b></td> <td width="40"><b>ECTS ocjena</b></td> </tr> <?php } $i = 1; $stara_odluka = $stara_ag = $stara_inst = 0; while ($r125 = mysql_fetch_row($q125)) { if ($r125[4] != $stara_odluka || $r125[5] != $stara_ag || $r125[6] != $stara_inst) { $stara_odluka = $r125[4]; $stara_ag = $r125[5]; $stara_inst = $r125[6]; $q115 = myquery("select UNIX_TIMESTAMP(datum), broj_protokola from odluka where id={$stara_odluka}"); if (mysql_num_rows($q115) > 0) { $odluka_ispis = " (odluka br. " . mysql_result($q115, 0, 1) . " od " . date("d. m. Y.", mysql_result($q115, 0, 0)) . ")"; } $q127 = myquery("SELECT naziv FROM akademska_godina WHERE id={$stara_ag}"); ?> <tr bgcolor="#CCCCCC"> <td colspan="6"><b><?php echo $stara_inst; ?> , akademska <?php echo mysql_result($q127, 0, 0); ?> . godina <?php echo $odluka_ispis; ?> :</b></td> </tr> <?php } ?> <tr> <td><?php echo $i++; ?> </td><td><?php echo $r125[1]; ?> </td><td><?php echo $r125[0]; ?> </td> <td><?php echo $r125[2]; ?> </td> <td><?php echo $imena_ocjena[$r125[3]]; ?> </td> <td align="center"><?php echo $ects_ocjene[$r125[3]]; ?> </td> </tr> <?php $sumauk += $r125[3]; $brojuk++; $sumaects += $r125[2]; } if (mysql_num_rows($q125) > 0) { print "</table><p> </p><p><b>Ocjene ostvarene na matičnoj instituciji:</b></p>\n"; } ?> <table width="700" border="1" cellspacing="0" cellpadding="3"><tr bgcolor="#AAAAAA"> <td width="20"><b>R.br.</b></td> <td width="60"><b>Šifra</b></td> <td width="280"><b>Naziv predmeta</b></td> <td width="30"><b>ECTS bodovi</b></td> <td width="60"><b>Konačna ocjena</b></td> <td width="40"><b>ECTS ocjena</b></td> <td width="80"><b>Datum polaganja</b></td> </tr> <?php function nuliraj($broj) { if ($broj == round($broj)) { $broj .= ",0"; } else { $broj = str_replace(".", ",", $broj); } return $broj; } $upisanagodina = round($r110[2] / 2); $oldgodina = 0; $i = 1; $q130 = myquery("SELECT p.sifra, p.naziv, p.ects, ko.ocjena, UNIX_TIMESTAMP(ko.datum_u_indeksu), UNIX_TIMESTAMP(ko.datum), pk.semestar, ts.ciklus\nFROM konacna_ocjena as ko, ponudakursa as pk, predmet as p, student_predmet as sp, studij as s, tipstudija as ts\nWHERE ko.student={$student} and ko.predmet=p.id and ko.predmet=pk.predmet and ko.akademska_godina=pk.akademska_godina and pk.id=sp.predmet \nand sp.student={$student} and pk.studij=s.id and s.tipstudija=ts.id and ko.ocjena>5 {$upit_dodaj}\nORDER BY ts.ciklus, pk.semestar, p.naziv"); while ($r130 = mysql_fetch_row($q130)) { $godina = round($r130[6] / 2); if ($oldgodina != $godina) { // Koliziju preskačemo if ($godina > $upisanagodina && $r130[7] == $r110[6]) { break; } if ($oldgodina != 0 && $brojgodine != 0) { ?> <tr bgcolor="#DDDDDD"> <td colspan="7"><b>Prosjek godine: <?php echo nuliraj(round($sumagodine / $brojgodine, 2)); ?> </b></td> </tr> <?php $sumagodine = $brojgodine = 0; } ?> <tr bgcolor="#CCCCCC"> <td colspan="7"><b><?php echo $godina; ?> . GODINA <?php echo $r130[7]; ?> . CIKLUSA STUDIJA</b></td> </tr> <?php $oldgodina = $godina; } $datum = $r130[4]; if ($datum == 0) { $datum = $r130[5]; } ?> <tr> <td><?php echo $i++; ?> .</td> <td><?php echo $r130[0]; ?> </td> <td><?php echo $r130[1]; ?> </td> <td align="center"><?php echo nuliraj($r130[2]); ?> </td> <td align="center"><?php echo $imena_ocjena[$r130[3]]; ?> </td> <td align="center"><?php echo $ects_ocjene[$r130[3]]; ?> </td> <td align="center"><?php echo date("d. m. Y", $datum); ?> </td> </tr> <?php $sumagodine += $r130[3]; $sumauk += $r130[3]; $brojgodine++; $brojuk++; $sumaects += $r130[2]; } if ($oldgodina != 0 && $brojgodine != 0) { ?> <tr bgcolor="#DDDDDD"> <td colspan="7"><b>Prosjek godine: <?php echo nuliraj(round($sumagodine / $brojgodine, 2)); ?> </b></td> </tr> <?php } if ($brojuk == 0) { $prosjek = 0; } else { $prosjek = $sumauk / $brojuk; } ?> </table> <p> </p> <table border="1" cellspacing="0" cellpadding="3"> <tr> <td>Ukupan broj položenih predmeta:</td> <td><b><?php echo $brojuk; ?> </b></td> </tr> <tr> <td>Prosječna ocjena položenih predmeta:</td> <td><b><?php echo nuliraj(round($prosjek, 2)); ?> </b></td> </tr> <tr> <td>Ukupan broj ECTS bodova:</td> <td><b><?php echo nuliraj($sumaects); ?> </b></td> </tr> </table> <?php // Određivanje dekana i broja protokola $institucija = $r110[7]; do { $q140 = myquery("select tipinstitucije, roditelj, dekan, broj_protokola from institucija where id={$institucija}"); if (!($r140 = mysql_fetch_row($q140))) { return; } if ($r140[0] == 1 && $r140[2] != 0) { $dekan = $r140[2]; if ($r140[3] !== "") { $dodaj_broj_protokola = "<p>Broj protokola: {$r140['3']}</p>"; } else { $dodaj_broj_protokola = ""; } break; } $institucija = $r140[1]; } while (true); ?> <p> </p> <p>Sarajevo, <?php echo date("d. m. Y."); ?> godine</p> <?php echo $dodaj_broj_protokola; ?> <table border="0" width="100%"> <tr> <td width="60%"> </td> <td width="40%" align="center"><p>DEKAN<br /><br /><br /><?php echo tituliraj($dekan); ?> </p></td> </tr> </table> <?php // Označi izvještaj kao obrađen - FIXME: ovo treba biti event na klik u studentska/intro if ($user_studentska) { $q200 = myquery("SELECT id, status FROM zahtjev_za_potvrdu WHERE student={$student} AND svrha_potvrde=1"); while ($r200 = mysql_fetch_row($q200)) { if ($r200[1] == 1) { $q210 = myquery("UPDATE zahtjev_za_potvrdu SET status=2 WHERE id={$r200['0']}"); } } } }
function student_anketa() { global $userid; $predmet = intval($_REQUEST['predmet']); $q10 = myquery("select id,naziv from akademska_godina where aktuelna=1"); $ag = mysql_result($q10, 0, 0); $q09 = myquery("select id,naziv,UNIX_TIMESTAMP(datum_zatvaranja) from anketa_anketa where aktivna=1 and akademska_godina={$ag}"); $anketa = mysql_result($q09, 0, 0); $naziv = mysql_result($q09, 0, 1); $rok = mysql_result($q09, 0, 2); if (time() > $rok) { biguglyerror("Isteklo vrijeme za ispunjavanje ankete"); return; } // Podaci za zaglavlje $q10 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q10) < 1) { zamgerlog("nepoznat predmet {$predmet}", 3); // nivo 3: greska zamgerlog2("nepoznat predmet", $predmet); // nivo 3: greska biguglyerror("Nepoznat predmet"); return; } $q15 = myquery("select naziv from akademska_godina where id={$ag}"); if (mysql_num_rows($q10) < 1) { zamgerlog("nepoznata akademska godina {$ag}", 3); // nivo 3: greska zamgerlog2("nepoznata akademska godina", $ag); // nivo 3: greska biguglyerror("Nepoznata akademska godina"); return; } // Da li student slusa predmet? //print "select sp.predmet from student_predmet as sp, ponudakursa as pk where sp.student=$userid and sp.predmet=pk.id and pk.predmet=$predmet and pk.akademska_godina=$ag"; $q17 = myquery("select sp.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$userid} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); if (mysql_num_rows($q17) < 1) { zamgerlog("student ne slusa predmet pp{$predmet}", 3); zamgerlog2("student ne slusa predmet", $predmet, $ag); biguglyerror("Niste upisani na ovaj predmet"); return; } $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!"; } else { $studij = mysql_result($q20, 0, 0); $semestar = mysql_result($q20, 0, 1); } $ponudakursa = mysql_result($q17, 0, 0); ?> <br/> <p style="font-size: small;">Predmet: <b><?php echo mysql_result($q10, 0, 0); ?> (<?php echo mysql_result($q15, 0, 0); ?> )</b><br/> <?php // kreiramo novi slog u tabeli rezultat $result700 = myquery("SELECT id FROM anketa_rezultat ORDER BY id desc limit 1"); //$result700 = mysql_query($q700); if (mysql_num_rows($result700) == 0) { $id_rezultata = 1; } else { $id_rezultata = mysql_result($result700, 0, 0) + 1; } // jedan student (userID ) moze isputniti anektu za jedna predmet samo jednom u jednoj akademskoj godini $unique_hash_code = md5($userid . $predmet . $ag); // da li je vec taj slog u tabeli $q589 = myquery("select count(*) from anketa_rezultat where unique_id='{$unique_hash_code}'"); $postoji_slog = mysql_result($q589, 0, 0); if (!$postoji_slog) { $q590 = myquery("INSERT INTO anketa_rezultat (id ,anketa, zavrsena, predmet,unique_id,akademska_godina,studij,semestar)\r\n\t\t\tVALUES ({$id_rezultata}, {$anketa}, 'N', {$predmet}, '{$unique_hash_code}',{$ag},{$studij},{$semestar})"); } ?> <center> <p>Ovdje ćete dobiti kod koji ćete iskoristiti za ispunjavanje ankete za ovaj predmet: <br/> <br/> <table width="300" cellpadding="0" cellspacing="2" > <tr height="30"> <td width="300">Vaš kod za ovaj predmet je:<br /></td> </tr> <tr> ` <td align="center" bgcolor="#CCFFCC"> <?php echo $unique_hash_code; ?> </td> </tr> </table> <p>Zapišite ovaj broj jer bez njega ne možete popunjavati anketu!</p> </center> <?php }
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 student_projekti() { require_once "lib/projekti.php"; //debug mod aktivan global $userid, $user_student; $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // Da li student slusa predmet? $q10 = myquery("select sp.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$userid} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); if (mysql_num_rows($q10) < 1) { zamgerlog("student ne slusa predmet pp{$predmet}", 3); zamgerlog2("student ne slusa predmet", $predmet, $ag); biguglyerror("Niste upisani na ovaj predmet"); return; } $linkprefix = "?sta=student/projekti&predmet={$predmet}&ag={$ag}"; $akcija = $_REQUEST['akcija']; $id = intval($_REQUEST['id']); // KORISNI UPITI // Spisak svih projekata $q20 = myquery("SELECT id, naziv, opis, vrijeme FROM projekat WHERE predmet={$predmet} AND akademska_godina={$ag} ORDER BY vrijeme DESC"); $svi_projekti = array(); while ($r20 = mysql_fetch_assoc($q20)) { $svi_projekti[] = $r20; } // Broj članova po projektu $broj_studenata = array(); $q30 = myquery("select p.id, count(sp.student) FROM projekat as p, student_projekat as sp WHERE p.id=sp.projekat AND p.predmet={$predmet} AND p.akademska_godina={$ag} GROUP BY sp.projekat"); while ($r30 = mysql_fetch_row($q30)) { $broj_studenata[$r30[0]] = $r30[1]; } // Da li je student upisan u neki projekat? $clan_projekta = 0; $q40 = myquery("SELECT p.id FROM projekat as p, student_projekat as sp WHERE p.id=sp.projekat AND sp.student={$userid} AND p.predmet={$predmet} AND p.akademska_godina={$ag} LIMIT 1"); if (mysql_num_rows($q40) > 0) { $clan_projekta = mysql_result($q40, 0, 0); } // Parametri projekata na predmetu $q50 = myquery("SELECT min_timova, max_timova, min_clanova_tima, max_clanova_tima, zakljucani_projekti FROM predmet_projektni_parametri WHERE predmet='{$predmet}' AND akademska_godina='{$ag}' LIMIT 1"); if (mysql_num_rows($q50) < 1) { niceerror("Predmetni nastavnik nije podesio parametre projekata."); print "Prijavljivanje na projekte za sada nije moguće. Obratite se predmetnom nastavniku ili asistentu za dodatne informacije."; return; } $min_timova = mysql_result($q50, 0, 0); $max_timova = mysql_result($q50, 0, 1); $min_clanova_tima = mysql_result($q50, 0, 2); $max_clanova_tima = mysql_result($q50, 0, 3); $zakljucani_projekti = mysql_result($q50, 0, 4); // Da li je dostignut limit broja timova? $brtimova = 0; foreach ($svi_projekti as $projekat) { if ($broj_studenata[$projekat[id]] > 0) { $brtimova++; } } $limit_timova = false; if ($brtimova >= $max_timova) { $limit_timova = true; // No ako je student trenutno član projekta sa samo jednim članom, // istupanjem iz tima otvoriće se mogućnost kreiranja novog tima if ($clan_projekta > 0 && $broj_studenata[$clan_projekta] == 1) { $limit_timova = false; } } // Stylesheet... čemu? ?> <LINK href="css/projekti.css" rel="stylesheet" type="text/css"> <?php // Akcije if ($akcija == 'prijava') { $projekat = intval($_REQUEST['projekat']); // Da li je projekat sa ovog predmeta? $nasao = false; foreach ($svi_projekti as $proj) { if ($proj[id] == $projekat) { $nasao = true; break; } } if ($nasao == false) { niceerror("Nepoznat projekat!"); zamgerlog("prijava na projekat {$projekat} koji nije sa predmeta pp{$predmet}", 3); zamgerlog2("projekat i predmet ne odgovaraju", $projekat, $predmet); } else { if ($zakljucani_projekti) { niceerror("Zaključane su prijave na projekte."); zamgerlog("prijava na projekat {$projekat} koji je zaključan na predmetu pp{$predmet}", 3); zamgerlog2("projekat zakljucan", $projekat); } else { if ($broj_studenata[$projekat] >= $max_clanova_tima) { niceerror("Dosegnut je limit broja članova po projektu."); zamgerlog("prijava na projekat {$projekat} koji je popunjen", 3); zamgerlog2("projekat popunjen", $projekat); } else { if ($broj_studenata[$projekat] == 0 && $limit_timova) { niceerror("Dosegnut je maksimalan broj timova. Ne možete kreirati novi tim."); zamgerlog("dosegnut limit broja timova na predmetu pp{$predmet}", 3); zamgerlog2("dosegnut limit broja timova", $predmet); } else { // Upisujemo u novi projekat $q110 = myquery("INSERT INTO student_projekat SET student={$userid}, projekat={$projekat}"); nicemessage("Uspješno ste prijavljeni na projekat"); zamgerlog("student upisan na projekat {$projekat} (predmet pp{$predmet})", 2); zamgerlog2("prijavljen na projekat", $projekat); // Ispisujemo studenta sa postojećih projekata if ($clan_projekta > 0) { $q100 = myquery("DELETE FROM student_projekat WHERE student={$userid} AND projekat={$clan_projekta}"); nicemessage("Odjavljeni ste sa starog projekta"); zamgerlog("student ispisan sa projekta {$projekat} (predmet pp{$predmet})", 2); zamgerlog2("odjavljen sa starog projekta", $projekat); } } } } } print '<a href="' . $linkprefix . '">Povratak.</a>'; return; } // akcija == prijava if ($akcija == 'odjava') { $projekat = intval($_REQUEST['projekat']); // Da li je projekat sa ovog predmeta? $nasao = false; foreach ($svi_projekti as $proj) { if ($proj[id] == $projekat) { $nasao = true; break; } } if ($nasao == false) { niceerror("Nepoznat projekat!"); zamgerlog("odjava sa projekta {$projekat} koji nije sa predmeta pp{$predmet}", 3); zamgerlog2("projekat i predmet ne odgovaraju (odjava)", $projekat, $predmet); } else { if ($zakljucani_projekti) { niceerror("Zaključane su liste timova za projekte. Odustajanja nisu dozvoljena."); zamgerlog("odjava sa projekta {$projekat} koji je zakljucan na predmetu pp{$predmet}", 3); zamgerlog2("projekat zakljucan (odjava)", $projekat); } else { if ($projekat != $clan_projekta) { niceerror("Niste prijavljeni na ovaj projekat"); zamgerlog("odjava sa projekta {$projekat} na koji nije prijavljen", 3); zamgerlog2("odjava sa projekta na koji nije prijavljen", $projekat); } else { $q120 = myquery("DELETE FROM student_projekat WHERE student={$userid} AND projekat={$projekat}"); nicemessage("Uspješno ste odjavljeni sa projekta"); zamgerlog("student ispisan sa projekta {$projekat} (predmet pp{$predmet})", 2); zamgerlog2("odjavljen sa projekta", $projekat); } } } print '<a href="' . $linkprefix . '">Povratak.</a>'; return; } // akcija == odjava if ($akcija == 'projektnastranica') { require_once 'common/projektneStrane.php'; common_projektneStrane(); return; } //akcija == projektnastranica // Glavni ekran ?> <h2>Projekti</h2> <span class="notice"> Nastavnik je definisao sljedeće parametre svih projekata na ovom predmetu: <ul> <li>Broj timova: <?php if ($min_timova == $max_timova) { print "tačno {$max_timova}"; } else { print "od {$min_timova} do {$max_timova}"; } ?> </li> <li>Broj članova tima: <?php if ($min_clanova_tima == $max_clanova_tima) { print "tačno {$max_clanova_tima}"; } else { print "od {$min_clanova_tima} do {$max_clanova_tima}"; } ?> </li> </ul> Prijavite se na projekat i automatski se učlanjujete u projektni tim ili kreirate novi tim. Da biste promijenili tim, prijavite se u drugi tim. </span><br /><?php // Ispis - zakljucani projekti if ($zakljucani_projekti == 1) { ?> <span class="notice">Onemogućene su prijave u projektne timove. Otvorene su projektne stranice.</span> <?php } else { ?> <span class="noticeGreen">Moguće su prijave u projetne timove. Nastavnik još uvijek nije kompletirao prijave.</span> <?php } // Ako je upisivanje zaključano, ispisaćemo samo onaj projekat u koji je student upisan $projekti_za_ispis = array(); if ($zakljucani_projekti == 1 && $clan_projekta > 0) { foreach ($svi_projekti as $projekat) { if ($projekat[id] == $clan_projekta) { $projekti_za_ispis[] = $projekat; } } } else { $projekti_za_ispis = $svi_projekti; } // Nema projekata if (count($svi_projekti) == 0) { nicemessage("Predmetni nastavnik još uvijek nije definisao projekte na ovom predmetu. Imajte strpljenja."); } // Ispis projektnih kocki foreach ($projekti_za_ispis as $projekat) { ?> <h3><?php echo $projekat['naziv']; ?> </h3> <div class="links"> <ul class="clearfix"> <?php if ($zakljucani_projekti == 0) { if ($projekat[id] == $clan_projekta) { ?> <li class="last"><a href="<?php echo $linkprefix . "&projekat=" . $projekat[id] . "&akcija=odjava"; ?> ">Odustani od prijave na ovom projektu</a></li> <?php } else { if ($broj_studenata[$projekat[id]] >= $max_clanova_tima) { ?> <li style="color:red" class="last">Projekat je popunjen i ne prima prijave.</li> <?php } else { if ($broj_studenata[$projekat[id]] == 0 && $limit_timova) { ?> <div style="color:red; margin-top: 10px;">Limit za broj timova dostignut. Ne možete kreirati novi tim. Prijavite se na projekte u kojima ima mjesta.</div> <?php } else { if ($clan_projekta == 0) { ?> <li class="last"><a href="<?php echo $linkprefix . "&projekat=" . $projekat[id] . "&akcija=prijava"; ?> ">Prijavi se na ovaj projekat</a></li> <?php } else { ?> <li class="last"><a href="<?php echo $linkprefix . "&projekat=" . $projekat[id] . "&akcija=prijava"; ?> ">Prijavi se na ovaj projekat / Promijeni članstvo</a></li> <?php } } } } } else { // Projekti su zaključani ?> <li class="last"><a href="<?php echo $linkprefix . "&projekat=" . $projekat[id] . "&akcija=projektnastranica"; ?> ">Projektna stranica</a></li> <?php } // Ispis ostalih podataka o projektu ?> </ul> </div> <table class="projekti" border="0" cellspacing="0" cellpadding="2"> <tr> <th width="200" align="left" valign="top" scope="row">Naziv</th> <td width="490" align="left" valign="top"><?php echo $projekat['naziv']; ?> </td> </tr> <tr> <th width="200" align="left" valign="top" scope="row">Prijavljeni tim / student</th> <td width="490" align="left" valign="top"> <?php // Spisak članova projekta $q200 = myquery("select o.ime, o.prezime, o.brindexa from osoba as o, student_projekat as sp where sp.student=o.id and sp.projekat=" . $projekat[id] . " order by o.prezime, o.ime"); if (mysql_num_rows($q200) < 1) { print 'Nema prijavljenih studenata.'; } else { print "<ul>\n"; } while ($r200 = mysql_fetch_row($q200)) { ?> <li><?php echo $r200[1] . ' ' . $r200[0] . ', ' . $r200[2]; ?> </li> <?php } if (mysql_num_rows($q200) > 0) { print "</ul>\n"; } ?> </td> </tr> <tr> <th width="200" align="left" valign="top" scope="row">Opis</th> <td width="490" align="left" valign="top"><?php echo nl2br($projekat['opis']); ?> </td> </tr> </table> <?php } // foreach ($projekti_za_ispis... }
function student_kviz() { global $userid; // Akcije if ($_REQUEST['akcija'] == "slanje") { akcijaslanje(); } // Poslani parametri $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); $q10 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q10) < 1) { zamgerlog("nepoznat predmet {$predmet}", 3); // nivo 3: greska zamgerlog2("nepoznat predmet", $predmet); // nivo 3: greska biguglyerror("Nepoznat predmet"); return; } $q15 = myquery("select naziv from akademska_godina where id={$ag}"); if (mysql_num_rows($q10) < 1) { zamgerlog("nepoznata akademska godina {$ag}", 3); // nivo 3: greska zamgerlog2("nepoznata akademska godina", $ag); // nivo 3: greska biguglyerror("Nepoznata akademska godina"); return; } // Da li student slusa predmet? $q17 = myquery("select sp.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$userid} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); if (mysql_num_rows($q17) < 1) { zamgerlog("student ne slusa predmet pp{$predmet}", 3); zamgerlog2("student ne slusa predmet", $predmet, $ag); biguglyerror("Niste upisani na ovaj predmet"); return; } $ponudakursa = mysql_result($q17, 0, 0); print "<h2>Kvizovi</h2>\n"; // Spisak grupa u kojima je student $upit_labgrupa = ""; $q20 = myquery("select sl.labgrupa from labgrupa as l, student_labgrupa as sl where sl.student={$userid} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag} and l.virtualna=0"); while ($r20 = mysql_fetch_row($q20)) { $upit_labgrupa .= "or labgrupa={$r20['0']} "; } // Ima li aktivnih kvizova $q30 = myquery("select id, naziv, ip_adrese, prolaz_bodova from kviz where predmet={$predmet} and akademska_godina={$ag} and vrijeme_pocetak<=NOW() and vrijeme_kraj>=NOW() and aktivan=1 and (labgrupa=0 {$upit_labgrupa})"); if (mysql_num_rows($q30) < 1) { print "Trenutno nema aktivnih kvizova za ovaj predmet."; return; } // Spisak kvizova ?> <script language="JavaScript"> function otvoriKviz(k) { if (/*@cc_on!@*/false) { // check for Internet Explorer window.open('index.php?sta=student/popuni_kviz&kviz='+k, 'Kviz', 'fullscreen,scrollbars'); } else { var sir = screen.width; var vis = screen.height; mywindow = window.open('index.php?sta=student/popuni_kviz&kviz='+k, 'Kviz', 'status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=0,scrollbars=1,width='+sir+',height='+vis); mywindow.moveTo(0,0); setTimeout('window.location.reload();', 5000); } } </script> <div id="spisak_kvizova"> <p>Trenutno su aktivni kvizovi:</p> <ul> <?php while ($r30 = mysql_fetch_row($q30)) { // Da li je ip adresa u datom rasponu if ($r30[2] != "") { $moja_ip = getip(); $ispravna = false; $blokovi = explode(",", $r30[2]); foreach ($blokovi as $blok) { if (strstr($blok, "/")) { // adresa u CIDR formatu // Npr. 192.168.0.1/24 // Preuzeto sa: http://pgregg.com/blog/2009/04/php-algorithms-determining-if-an-ip-is-within-a-specific-range.html list($baza, $maska) = explode("/", $blok); $moja_f = ip2float($moja_ip); $baza_f = ip2float($baza); $netmask_dec = bindec(str_pad('', $maska, '1') . str_pad('', 32 - $maska, '0')); $wildcard_dec = pow(2, 32 - $maska) - 1; $netmask_dec = ~$wildcard_dec; if (($moja_f & $netmask_dec) == ($baza_f & $netmask_dec)) { $ispravna = true; break; } } else { if (strstr($blok, "-")) { // Raspon sa crticom // Npr. 10.0.0.1 - 10.0.0.15 list($prva, $zadnja) = explode("-", $blok); $moja_f = ip2float($moja_ip); $prva_f = ip2float($prva); $zadnja_f = ip2float($zadnja); if ($moja_f >= $prva_f && $moja_f <= $zadnja_f) { $ispravna = true; break; } } else { // Pojedinačna adresa if ($moja_ip == $blok) { $ispravna = true; break; } } } } // if ($ispravna == false) { print "<li>{$r30['1']} - kviz je nedostupan sa vaše adrese ({$moja_ip})</li>\n"; continue; } } // Da li je student već popunjavao ovaj kviz $q40 = myquery("select dovrsen, bodova from kviz_student where student={$userid} and kviz={$r30['0']}"); if (mysql_num_rows($q40) > 0) { print "<li>{$r30['1']} - "; if (mysql_result($q40, 0, 0) == 0) { print "nedovršen</li>\n"; } else { $bodova = mysql_result($q40, 0, 1); print "završen, osvojili ste {$bodova} bodova."; if ($bodova >= $r30[3]) { // prolaz print " Čestitamo!"; } print "</li>\n"; } continue; } print "<li><a href=\"#\" onclick=\"otvoriKviz({$r30['0']});\">{$r30['1']}</a></li>\n"; } print "</ul>\n"; ?> <p>Kliknite na naziv kviza da pristupite popunjavanju kviza.</p> <br> <p><b><font color="red">VAŽNA NAPOMENA</font></b>: Kada započnete popunjavanje kviza ne smijete se prebaciti na drugi prozor! Svaki pokušaj da računar koristite za bilo šta osim popunjavanje kviza može izazvati prekid kviza bez mogućnosti kasnijeg ponovnog popunjavanja.</p> <p><a href="#" onclick="window.close();">Zatvorite ovaj prozor</a></p> </div> <!--div id="nema_js"> Za pristup kvizovima potrebno je da aktivirate JavaScript u vašem web pregledniku. </div--> <?php }
function izvjestaj_historija() { // Ulazni parametar $student = intval($_REQUEST['student']); ?> <p>Univerzitet u Sarajevu<br/> Elektrotehnički fakultet Sarajevo</p> <p>Datum i vrijeme izvještaja: <?php echo date("d. m. Y. H:i"); ?> </p> <?php // Podaci o studentu $q100 = myquery("select ime,prezime,brindexa from osoba where id={$student}"); if (!($r100 = mysql_fetch_row($q100))) { biguglyerror("Student se ne nalazi u bazi podataka."); zamgerlog("nepoznat ID {$student}", 3); // 3 = greska zamgerlog2("nepoznat id korisnika", $student); // 3 = greska return; } /*if ($r100[3] != 1) { biguglyerror("Nepoznat student"); zamgerlog("korisnik u$student nema status studenta",3); return; }*/ ?> <p> </br> Student:</br> <h1><?php echo $r100[0] . " " . $r100[1]; ?> </h1> Broj indeksa: <?php echo $r100[2]; ?> <br/></p> <h2>Historija studenta</h2> <?php // Spol if (spol($r100[0]) == "Z") { $upisa = "Upisala"; $polozi = "položila"; $ppolozi = "Položila"; $izasa = "Izašla"; } else { $upisa = "Upisao"; $polozi = "položio"; $ppolozi = "Položio"; $izasa = "Izašao"; } // Glavni upit su akademske godine $q10 = myquery("select id,naziv from akademska_godina order by id"); while ($r10 = mysql_fetch_row($q10)) { $ag = $r10[0]; $agnaziv = $r10[1]; // Prijemni ispit $q15 = myquery("SELECT s.naziv, uus.opci_uspjeh, uus.kljucni_predmeti, uus.dodatni_bodovi, pp.rezultat, UNIX_TIMESTAMP(pt.datum)\n\tFROM prijemni_prijava as pp, uspjeh_u_srednjoj as uus, studij as s, prijemni_termin as pt \n\tWHERE pp.osoba={$student} and uus.osoba={$student} and pp.studij_prvi=s.id AND pp.prijemni_termin=pt.id AND pt.akademska_godina={$ag}\n\tORDER BY pp.prijemni_termin"); while ($r15 = mysql_fetch_row($q15)) { $total = $r15[1] + $r15[2] + $r15[3] + $r15[4]; $datum = date("d. m. Y.", $r15[5]); print "<p><b>{$agnaziv}</b>: {$izasa} na prijemni ispit {$datum} (za {$r15['0']}): ukupno {$total} bodova ({$r15['4']} bodova na prijemnom ispitu)</p>"; } // Upisi u studije $q20 = myquery("select s.naziv, ss.semestar, ns.naziv, ss.ponovac, ss.odluka from studij as s, student_studij as ss, nacin_studiranja as ns where s.id=ss.studij and ns.id=ss.nacin_studiranja and ss.student={$student} and ss.akademska_godina={$ag} order by ss.akademska_godina,ss.semestar"); while ($r20 = mysql_fetch_row($q20)) { $semestar = $r20[1]; $parni = $semestar % 2; print "<p><b>{$agnaziv}</b>: {$upisa} studij \"{$r20['0']}\", {$semestar}. semestar, kao {$r20['2']} student"; if ($r20[3] > 0) { print " (ponovac)"; } if ($r20[4] > 0) { $q25 = myquery("select UNIX_TIMESTAMP(datum), broj_protokola from odluka where id={$r20['4']}"); print " na osnovu odluke " . mysql_result($q25, 0, 1) . " od " . date("d. m. Y", mysql_result($q25, 0, 0)); } print ".<br />\n"; $q30 = myquery("select p.id, p.naziv from student_predmet as sp, ponudakursa as pk, predmet as p where sp.student={$student} and sp.predmet=pk.id and pk.akademska_godina={$ag} and pk.semestar mod 2 = {$parni} and pk.predmet=p.id order by p.naziv"); if (mysql_num_rows($q30) > 0) { print "<ul>\n"; } while ($r30 = mysql_fetch_row($q30)) { $q40 = myquery("select ocjena from konacna_ocjena where student={$student} and predmet={$r30['0']} and akademska_godina={$ag}"); if (mysql_num_rows($q40) < 1) { print "NIJE {$polozi} predmet {$r30['1']}<br />\n"; } else { $ocjena = mysql_result($q40, 0, 0); if ($ocjena == 11) { $ocjena = "ispunio/la obaveze"; } else { $ocjena = "ocjena {$ocjena}"; } print "{$ppolozi} predmet {$r30['1']}, {$ocjena}<br />\n"; } } if (mysql_num_rows($q30) > 0) { print "</ul></p>\n"; } } } }
function myquery($query) { global $_lv_, $conf_script_path; if ($r = @mysql_query($query)) { return $r; } # Error handling if ($_lv_["debug"]) { print "<br/><hr/><br/>MYSQL query:<br/><pre>" . $query . "</pre><br/>MYSQL error:<br/><pre>" . mysql_error() . "</pre>"; } $backtrace = debug_backtrace(); $file = $backtrace[0]['file']; $file = str_replace($conf_script_path . "/", "", $file); $line = intval($backtrace[0]['line']); $error = mysql_error(); $error = str_replace("You have an error in your SQL syntax;", "", $error); $error = str_replace("check the manual that corresponds to your MySQL server version for the right syntax to use", "", $error); zamgerlog("SQL greska ({$file} : {$line}): {$error}", 3); zamgerlog2("SQL greska", 0, 0, 0, "{$file}:{$line}: {$error}"); exit; }
function autotest_admin($zadaca, $linkPrefix, $backLink) { if ($_REQUEST['subakcija'] == "promijeni_uslov") { $id = intval($_REQUEST['id']); $zadatak = intval($_REQUEST['zadatak']); $q300 = myquery("SELECT specifikacija FROM autotest_replace WHERE zadaca={$zadaca} AND zadatak={$zadatak} AND tip='funkcija' AND zamijeni='' AND id={$id}"); if (mysql_num_rows($q300) < 1) { niceerror("Nepostojeći uslov"); zamgerlog("spoofing uslovne funkcije {$id}", 3); zamgerlog2("spoofing uslovne funkcije", $id); return 0; } if ($_POST['subakcija'] == "promijeni_uslov" && check_csrf_token()) { $specifikacija = my_escape($_REQUEST['specifikacija']); $q310 = myquery("UPDATE autotest_replace SET specifikacija='{$specifikacija}' WHERE id={$id}"); nicemessage("Izmijenjen uslov za autotest"); zamgerlog("izmijenjen uslov {$id} za autotest (zadaca z{$zadaca})", 2); zamgerlog2("izmijenjen uslov za autotest", $id); print "<a href=\"{$linkPrefix}\">Nazad</a>\n"; return 0; } print genform("POST"); ?> <b>Izmjena prototipa funkcije koja mora postojati u zadatku:</b><br> <input type="text" name="specifikacija" size="50" value="<?php echo mysql_result($q300, 0, 0); ?> "><br> <input type="submit" value="Izmijeni"> <input type="button" value="Nazad" onclick="javascript:history.go(-1);"> </form> <?php return 0; } if ($_REQUEST['subakcija'] == "obrisi_uslov") { $id = intval($_REQUEST['id']); $zadatak = intval($_REQUEST['zadatak']); $q300 = myquery("SELECT specifikacija FROM autotest_replace WHERE zadaca={$zadaca} AND zadatak={$zadatak} AND tip='funkcija' AND zamijeni='' AND id={$id}"); if (mysql_num_rows($q300) < 1) { niceerror("Nepostojeći uslov"); zamgerlog("spoofing uslovne funkcije {$id}", 3); zamgerlog2("spoofing uslovne funkcije", $id); return 0; } if ($_POST['subakcija'] == "obrisi_uslov" && check_csrf_token()) { $q320 = myquery("DELETE FROM autotest_replace WHERE id={$id}"); nicemessage("Obrisan uslov za autotest"); zamgerlog("obrisan uslov {$id} za autotest (zadaca z{$zadaca})", 2); zamgerlog2("obrisan uslov za autotest", $id); print "<a href=\"{$linkPrefix}\">Nazad</a>\n"; return 0; } print genform("POST"); ?> <b>Da li ste sigurni da želite obrisati obavezni prototip "<?php echo mysql_result($q300, 0, 0); ?> " ?</b><br> <input type="submit" value="Da"> <input type="button" value="Ne" onclick="javascript:history.go(-1);"> </form> <?php return 0; } if ($_REQUEST['subakcija'] == "dodaj_uslov") { $zadatak = intval($_REQUEST['zadatak']); if ($_POST['subakcija'] == "dodaj_uslov" && check_csrf_token()) { $specifikacija = my_escape($_REQUEST['specifikacija']); $q330 = myquery("INSERT INTO autotest_replace SET zadaca={$zadaca}, zadatak={$zadatak}, tip='funkcija', zamijeni='', specifikacija='{$specifikacija}'"); nicemessage("Dodan uslov za autotest"); $id = mysql_insert_id(); zamgerlog("dodan uslov {$id} za autotest (zadaca z{$zadaca})", 2); zamgerlog2("dodan uslov za autotest", $id); print "<a href=\"{$linkPrefix}\">Nazad</a>\n"; return 0; } print genform("POST"); ?> <b>Unesite prototip funkcije koja mora postojati u zadatku:</b><br> <input type="text" name="specifikacija" size="50" value=""><br> <input type="submit" value="Dodaj"> <input type="button" value="Nazad" onclick="javascript:history.go(-1);"> </form> <?php return 0; } if ($_REQUEST['subakcija'] == "promijeni_at") { $id = intval($_REQUEST['id']); $zadatak = intval($_REQUEST['zadatak']); $q340 = myquery("SELECT kod, rezultat, alt_rezultat, fuzzy, global_scope, stdin, partial_match, aktivan, sakriven FROM autotest WHERE zadaca={$zadaca} AND zadatak={$zadatak} AND id={$id}"); if (mysql_num_rows($q340) < 1) { niceerror("Nepostojeći autotest"); zamgerlog("spoofing autotesta {$id}", 3); zamgerlog2("spoofing autotesta", $id); return 0; } if ($_POST['subakcija'] == "promijeni_at" && check_csrf_token()) { // Ne možemo koristiti my_escape jer htmlspecialchars zezne znakove < > (između ostalog) $kod = mysql_real_escape_string($_REQUEST['kod']); $rezultat = mysql_real_escape_string($_REQUEST['rezultat']); $alt_rezultat = mysql_real_escape_string($_REQUEST['alt_rezultat']); $fuzzy = intval($_REQUEST['fuzzy']); $global_scope = mysql_real_escape_string($_REQUEST['global_scope']); $stdin = mysql_real_escape_string($_REQUEST['stdin']); $stdin = str_replace("\\n", "\n", $stdin); $partial_match = intval($_REQUEST['partial_match']); $aktivan = intval($_REQUEST['aktivan']); $sakriven = intval($_REQUEST['sakriven']); if ($sakriven == 0) { $sakriven = 1; } else { $sakriven = 0; } $q350 = myquery("UPDATE autotest SET kod='{$kod}', rezultat='{$rezultat}', alt_rezultat='{$alt_rezultat}', fuzzy={$fuzzy}, global_scope='{$global_scope}', stdin='{$stdin}', partial_match='{$partial_match}', aktivan={$aktivan}, sakriven={$sakriven} WHERE id={$id}"); nicemessage("Izmijenjen autotest"); zamgerlog("izmijenjen autotest {$id} (zadaca z{$zadaca})", 2); zamgerlog2("izmijenjen autotest", $id); print "<a href=\"{$linkPrefix}\">Nazad</a>\n"; return 0; } print genform("POST"); // Pošto nije pozvan htmlspecialchars prilikom ubacivanja u bazu, moramo ga pozvati sada (prilikom prikaza) $stdin = htmlspecialchars(mysql_result($q340, 0, 5)); $stdin = str_replace("\n", "\\n", $stdin); ?> <b>Izmjena autotesta:</b><br><br> Kod testa:<br><textarea name="kod" rows="10" cols="50"><?php echo htmlspecialchars(mysql_result($q340, 0, 0)); ?> </textarea><br> Standardni ulaz: <input type="text" name="stdin" size="50" value="<?php echo $stdin; ?> "><br><br> (Koristite \n da označite ENTER tipku)<br><br> Rezultat: <input type="text" name="rezultat" size="50" value="<?php echo htmlspecialchars(mysql_result($q340, 0, 1)); ?> "><br><br> Alt. rezultat: <input type="text" name="alt_rezultat" size="50" value="<?php echo htmlspecialchars(mysql_result($q340, 0, 2)); ?> "><br> (Ostaviti prazno ako ne želite da ponudite dvije varijante rezultata)<br><br> Fuzzy matching rezultata: <input type="checkbox" name="fuzzy" value="1" <?php if (mysql_result($q340, 0, 3) == 1) { print "CHECKED"; } ?> ><br><br> Traženje podstringa u rezultatu: <input type="checkbox" name="partial_match" value="1" <?php if (mysql_result($q340, 0, 6) == 1) { print "CHECKED"; } ?> ><br><br> Kod koji treba ubaciti u globalni opseg:<br><textarea name="global_scope" rows="10" cols="50"><?php echo htmlspecialchars(mysql_result($q340, 0, 4)); ?> </textarea><br> Aktivan: <input type="checkbox" name="aktivan" value="1" <?php if (mysql_result($q340, 0, 7) == 1) { print "CHECKED"; } ?> ><br><br> Javni test (vidljiv studentima): <input type="checkbox" name="sakriven" value="1" <?php if (mysql_result($q340, 0, 8) == 0) { print "CHECKED"; } ?> ><br><br> <input type="submit" value="Izmijeni"> <input type="button" value="Nazad" onclick="javascript:history.go(-1);"> </form> <?php return 0; } if ($_REQUEST['subakcija'] == "obrisi_at") { $id = intval($_REQUEST['id']); $zadatak = intval($_REQUEST['zadatak']); $q340 = myquery("SELECT kod FROM autotest WHERE zadaca={$zadaca} AND zadatak={$zadatak} AND id={$id}"); if (mysql_num_rows($q340) < 1) { niceerror("Nepostojeći autotest"); zamgerlog("spoofing autotesta {$id}", 3); zamgerlog2("spoofing autotesta", $id); return 0; } if ($_POST['subakcija'] == "obrisi_at" && check_csrf_token()) { $q345 = myquery("DELETE FROM autotest_rezultat WHERE autotest={$id}"); $q350 = myquery("DELETE FROM autotest WHERE id={$id}"); nicemessage("Obrisan autotest"); zamgerlog("obrisan autotest {$id} (zadaca z{$zadaca})", 2); zamgerlog2("obrisan autotest", $id); print "<a href=\"{$linkPrefix}\">Nazad</a>\n"; return 0; } print genform("POST"); ?> <b>Brisanje autotesta:</b><br><br> Da li ste sigurni da želite obrisati autotest sa sljedećim kodom:<br> <textarea name="kod" rows="10" cols="50"><?php echo mysql_result($q340, 0, 0); ?> </textarea><br> <input type="submit" value="Da"> <input type="button" value="Ne" onclick="javascript:history.go(-1);"> </form> <?php return 0; } if ($_REQUEST['subakcija'] == "dodaj_at") { $zadatak = intval($_REQUEST['zadatak']); if ($_POST['subakcija'] == "dodaj_at" && check_csrf_token()) { // Ne možemo koristiti my_escape jer htmlspecialchars zezne znakove < > (između ostalog) $kod = mysql_real_escape_string($_REQUEST['kod']); $rezultat = mysql_real_escape_string($_REQUEST['rezultat']); $alt_rezultat = mysql_real_escape_string($_REQUEST['alt_rezultat']); $fuzzy = intval($_REQUEST['fuzzy']); $global_scope = mysql_real_escape_string($_REQUEST['global_scope']); $stdin = mysql_real_escape_string($_REQUEST['stdin']); $stdin = str_replace("\\n", "\n", $stdin); $partial_match = intval($_REQUEST['partial_match']); $aktivan = intval($_REQUEST['aktivan']); $sakriven = intval($_REQUEST['sakriven']); if ($sakriven == 0) { $sakriven = 1; } else { $sakriven = 0; } $q350 = myquery("INSERT INTO autotest SET zadaca={$zadaca}, zadatak={$zadatak}, kod='{$kod}', rezultat='{$rezultat}', alt_rezultat='{$alt_rezultat}', fuzzy={$fuzzy}, global_scope='{$global_scope}', stdin='{$stdin}', partial_match='{$partial_match}', aktivan={$aktivan}, sakriven={$sakriven}"); nicemessage("Dodan novi autotest"); $id = mysql_insert_id(); zamgerlog("dodan novi autotest {$id} (zadaca z{$zadaca})", 2); zamgerlog2("dodan novi autotest", $id); print "<a href=\"{$linkPrefix}\">Nazad</a>\n"; return 0; } print genform("POST"); ?> <b>Novi autotest:</b><br><br> Kod testa:<br><textarea name="kod" rows="10" cols="50"></textarea><br> Standardni ulaz: <input type="text" name="stdin" size="50" value=""><br><br> (Koristite \n da označite ENTER tipku)<br><br> Rezultat: <input type="text" name="rezultat" size="50" value=""><br><br> Alt. rezultat: <input type="text" name="alt_rezultat" size="50" value=""><br> (Ostaviti prazno ako ne želite da ponudite dvije varijante rezultata)<br><br> Fuzzy matching rezultata: <input type="checkbox" name="fuzzy" value="1"><br><br> Traženje podstringa u rezultatu: <input type="checkbox" name="partial_match" value="1"><br><br> Kod koji treba ubaciti u globalni opseg:<br><textarea name="global_scope" rows="10" cols="50"></textarea><br> Aktivan: <input type="checkbox" name="aktivan" value="1" CHECKED><br><br> Javni test (vidljiv studentima): <input type="checkbox" name="sakriven" value="1" CHECKED><br><br> <input type="submit" value="Dodaj"> <input type="button" value="Nazad" onclick="javascript:history.go(-1);"> </form> <?php return 0; } if ($_POST['subakcija'] == "kopiraj_at" && check_csrf_token()) { $stara_zadaca = intval($_REQUEST['stara_zadaca']); $q190 = myquery("SELECT zadatak, kod, rezultat, alt_rezultat, fuzzy, global_scope, pozicija_globala, stdin, partial_match FROM autotest WHERE zadaca={$stara_zadaca}"); while ($r190 = mysql_fetch_row($q190)) { $q195 = myquery("INSERT INTO autotest SET zadaca={$zadaca}, zadatak={$r190['0']}, kod='" . mysql_real_escape_string($r190[1]) . "', rezultat='" . mysql_real_escape_string($r190[2]) . "', alt_rezultat='" . mysql_real_escape_string($r190[3]) . "', fuzzy={$r190['4']}, global_scope='" . mysql_real_escape_string($r190[5]) . "', pozicija_globala='{$r190['6']}', stdin='" . mysql_real_escape_string($r190[7]) . "', partial_match={$r190['8']}"); } nicemessage("Iskopirani testovi sa stare zadaće."); zamgerlog("iskopirani autotestovi sa zadace z{$stara_zadaca} na zadacu z{$zadaca})", 2); zamgerlog2("iskopirani autotestovi", $stara_zadaca, $zadaca); } $q200 = myquery("SELECT naziv, zadataka, predmet, akademska_godina FROM zadaca WHERE id={$zadaca}"); if (mysql_num_rows($q200) < 1) { niceerror("Nepoznata zadaća."); return; } $naziv_zadace = mysql_result($q200, 0, 0); $broj_zadataka = mysql_result($q200, 0, 1); $predmet = mysql_result($q200, 0, 2); $ag = mysql_result($q200, 0, 3); ?> <h2>Autotestovi, <?php echo $naziv_zadace; ?> </h2> <p><?php echo $backLink; ?> </p> <?php $q205 = myquery("SELECT distinct z.id, z.naziv, ag.naziv FROM zadaca as z, autotest as a, akademska_godina as ag WHERE z.predmet={$predmet} AND z.akademska_godina<{$ag} AND z.akademska_godina=ag.id AND a.zadaca=z.id ORDER BY ag.id desc, z.id"); if (mysql_num_rows($q205) > 0) { ?> <h3>Kopiraj testove sa ranijih godina</h3> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="kopiraj_at"> <select name="stara_zadaca"> <?php } $found = 0; while ($r205 = mysql_fetch_row($q205)) { print "<option value=\"{$r205['0']}\""; if ($r205[1] == $naziv_zadace && $found == 0) { $found = 1; print " CHECKED"; } print ">{$r205['1']} ({$r205['2']})</option>\n"; } if (mysql_num_rows($q205) > 0) { print "</select> <input type=\"submit\" value=\" Kreni \"></form>\n"; } for ($zadatak = 1; $zadatak <= $broj_zadataka; $zadatak++) { print "<h3>Zadatak {$zadatak}</h3>\n"; print "<p>Prototipovi funkcija koje moraju postojati u zadatku:\n"; $q210 = myquery("SELECT id,specifikacija FROM autotest_replace WHERE zadaca={$zadaca} AND zadatak={$zadatak} AND tip='funkcija' AND zamijeni=''"); while ($r210 = mysql_fetch_row($q210)) { print "<br>\n* {$r210['1']} (<a href=\"{$linkPrefix}&subakcija=promijeni_uslov&id={$r210['0']}&zadatak={$zadatak}\">promijeni</a>) (<a href=\"{$linkPrefix}&subakcija=obrisi_uslov&id={$r210['0']}&zadatak={$zadatak}\">obriši</a>)"; } if (mysql_num_rows($q210) < 1) { print "<br>\n* nema"; } print "</p>\n<p><a href=\"{$linkPrefix}&subakcija=dodaj_uslov&id={$r210['0']}&zadatak={$zadatak}\">Dodaj zahtijevanu funkciju</a></p>\n"; ?> <p><b>Autotestovi:</b></p> <table border="1" cellspacing="0" cellpadding="5"> <tr bgcolor="#CCCCCC"><td>R.br.</td><td>Kod</td><td>Ulaz</td><td>Rezultat</td><td>Alternativni rezultat</td><td>Fuzzy matching?</td><td>Naredbe u globalnom opsegu</td><td>Akcije</td></tr> <?php $q220 = myquery("SELECT id, kod, rezultat, alt_rezultat, fuzzy, global_scope, stdin, partial_match FROM autotest WHERE zadaca={$zadaca} AND zadatak={$zadatak}"); if (mysql_num_rows($q220) < 1) { ?> <tr><td colspan="8">nije definisan nijedan autotest</td></tr> <?php } $rbr = 1; while ($r220 = mysql_fetch_row($q220)) { $kod = htmlentities($r220[1]); $altrez = $r220[3]; if ($altrez == "") { $altrez = " "; } $global_kod = htmlentities($r220[5]); if ($r220[4] == 0) { $fuzzy = "NE"; } else { $fuzzy = "L" . $r220[4]; } if ($r220[7] == 1) { if ($fuzzy == "NE") { $fuzzy = "substr"; } else { $fuzzy .= " substr"; } } $stdin = htmlentities($r220[6]); ?> <tr> <td><?php echo $rbr++; ?> </td> <td><pre><?php echo $kod; ?> </pre></td> <td><pre><?php echo $stdin; ?> </pre></td> <td><?php echo $r220[2]; ?> </td> <td><?php echo $altrez; ?> </td> <td><?php echo $fuzzy; ?> </td> <td><pre><?php echo $global_kod; ?> </pre></td> <td>(<a href="<?php echo $linkPrefix; ?> &subakcija=promijeni_at&id=<?php echo $r220[0]; ?> &zadatak=<?php echo $zadatak; ?> ">promijeni</a>) (<a href="<?php echo $linkPrefix; ?> &subakcija=obrisi_at&id=<?php echo $r220[0]; ?> &zadatak=<?php echo $zadatak; ?> ">obriši</a>)</td> </tr> <?php } print "</table>\n"; print "</p>\n<p><a href=\"{$linkPrefix}&subakcija=dodaj_at&id={$r210['0']}&zadatak={$zadatak}\">Dodaj autotest</a></p>\n"; } }
function izvjestaj_potvrda() { global $userid, $user_studentska, $user_siteadmin; $imena_semestara = array("", "prvi", "drugi", "treći", "četvrti", "peti", "šesti"); $rimski_brojevi = array("", "I", "II", "III", "IV", "V", "VI"); // Ulazni parametar $student = intval($_REQUEST['student']); $svrha = intval($_REQUEST['svrha']); // Prava pristupa if (!$user_studentska && !$user_siteadmin && $userid != $student) { biguglyerror("Nemate pravo pristupa ovom izvještaju"); zamgerlog("nije studentska, a pristupa tudjem izvjestaju ({$student})", 3); zamgerlog2("nije studentska, a pristupa tudjem izvjestaju", $student); return; } $q100 = myquery("SELECT ime, prezime, brindexa, jmbg, UNIX_TIMESTAMP(datum_rodjenja), mjesto_rodjenja, spol FROM osoba WHERE id={$student}"); if (mysql_num_rows($q100) < 1) { biguglyerror("Nepoznat student"); return; } $r100 = mysql_fetch_row($q100); $q110 = myquery("SELECT m.naziv, o.naziv, d.naziv FROM mjesto as m, opcina as o, drzava as d WHERE m.id={$r100['5']} AND m.opcina=o.id and m.drzava=d.id"); $r110 = mysql_fetch_row($q110); if ($r100[5] == 1) { // Sarajevo $r110[0] = "Sarajevo"; $r110[1] = "Centar Sarajevo"; $r110[2] = "Bosna i Hercegovina"; } $q120 = myquery("SELECT naziv FROM svrha_potvrde WHERE id={$svrha}"); if (mysql_num_rows($q120) < 1) { biguglyerror("Nepoznata svrha"); return; } $r120 = mysql_fetch_row($q120); // Treba nam ID aktuelne godine $q200 = myquery("SELECT id, naziv FROM akademska_godina WHERE aktuelna=1"); $id_ak_god = mysql_result($q200, 0, 0); $naziv_ak_god = mysql_result($q200, 0, 1); // Trenutno upisan na semestar: $q220 = myquery("SELECT s.naziv, ss.semestar, ss.akademska_godina, ag.naziv, s.id, ts.trajanje, ns.naziv, ts.ciklus, s.institucija from student_studij as ss, studij as s, akademska_godina as ag, tipstudija as ts, nacin_studiranja as ns where ss.student={$student} and ss.studij=s.id and ag.id=ss.akademska_godina and s.tipstudija=ts.id and ss.nacin_studiranja=ns.id order 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 = $institucija = 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']}"; $ciklus = $r220[7]; $institucija = $r220[8]; } 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]; } } } } if ($institucija == 0) { niceerror("Trenutno niste upisani na studij."); print "Ako je ovo greška, hitno kontaktirajte Studentsku službu."; return 0; } // Određivanje institucije do { $q140 = myquery("select tipinstitucije, roditelj, dekan, broj_protokola from institucija where id={$institucija}"); if (!($r140 = mysql_fetch_row($q140))) { return; } if ($r140[0] == 1 && $r140[2] != 0) { $dekan = $r140[2]; if ($r140[3] !== "") { $dodaj_broj_protokola = "<p>Broj protokola: {$r140['3']}</p>"; } else { $dodaj_broj_protokola = ""; } break; } $institucija = $r140[1]; } while (true); $spol = $r100[6]; if ($spol == "") { $spol = spol($r100[0]); } if ($spol == "Z") { $upisana = "upisana"; } else { $upisana = "upisan"; } ?> <img src="images/content/ETF-memorandum.png"> <p> </p> <p>Na osnovu člana 169. Zakona o upravnom postupku FBiH (Službene novine FBiH, broj 2/98, 48/99) izdaje se:</p> <center><h2>P O T V R D A</h2></center> <p> <br /> <table border="0"> <tr> <td>Ime i prezime studenta:</td> <td><b><?php echo $r100[0] . " " . $r100[1]; ?> </b></td> </tr> <tr> <td>Broj dosijea:</td> <td><b><?php echo $r100[2]; ?> </b></td> </tr> <tr> <td>Datum rođenja:</td> <td><b><?php echo date("d. m. Y", $r100[4]); ?> </b></td> </tr> <tr> <td>Mjesto rođenja:</td> <td><b><?php echo $r110[0]; ?> </b></td> </tr> <tr> <td>Općina rođenja:</td> <td><b><?php echo $r110[1]; ?> </b></td> </tr> <tr> <td>Država rođenja:</td> <td><b><?php echo $r110[2]; ?> </b></td> </tr> </table> <p> </p> <p>Potvrđuje se da je <?php echo $r100[0] . " " . $r100[1]; ?> <?php echo $upisana; ?> <?php echo $puta; ?> . put u akademskoj <?php echo $naziv_ak_god; ?> godini u <?php echo $rimski_brojevi[$semestar]; ?> (<?php echo $imena_semestara[$semestar]; ?> ) semestar - <?php echo $imena_semestara[$ciklus]; ?> ciklus <?php echo $nacin_studiranja; ?> student, na studiju <?php echo $studij; ?> .</p> <p>Ova potvrda se izdaje u svrhu <b><?php echo $r120[0]; ?> </b>, te se u druge svrhe ne može koristiti.</p> <p> </p> <p>Sarajevo, <?php echo date("d. m. Y."); ?> godine</p> <?php echo $dodaj_broj_protokola; ?> <table border="0" width="100%"> <tr> <td width="60%"> </td> <td width="40%" align="center"><p>DEKAN<br /><br /><br /><?php echo tituliraj($dekan); ?> </p></td> </tr> </table> <?php // Označi izvještaj kao obrađen if ($user_studentska) { require "gcm/push_message.php"; $q200 = myquery("SELECT id, status FROM zahtjev_za_potvrdu WHERE student={$student} AND svrha_potvrde={$svrha}"); while ($r200 = mysql_fetch_row($q200)) { if ($r200[1] == 1) { $q210 = myquery("UPDATE zahtjev_za_potvrdu SET status=2 WHERE id={$r200['0']}"); // Slanje GCM poruke push_message(array($student), "Potvrde", "Vaša potvrda/uvjerenje je spremno"); } } } }
function student_kolizija() { global $userid; require "lib/manip.php"; // Naslov ?> <h3>Kolizija</h3> <?php // Za koju godinu se prijavljuje? $q1 = myquery("select id, naziv from akademska_godina where aktuelna=1"); $q2 = myquery("select id, naziv from akademska_godina where id>" . mysql_result($q1, 0, 0) . " order by id limit 1"); if (mysql_num_rows($q2) < 1) { // nicemessage("U ovom trenutku nije aktiviran upis u sljedeću akademsku godinu."); // return; // Pretpostavljamo da se upisuje u aktuelnu? $zagodinu = mysql_result($q1, 0, 0); $zagodinunaziv = mysql_result($q1, 0, 1); $q3 = myquery("select id from akademska_godina where id<{$zagodinu} order by id desc limit 1"); $proslagodina = mysql_result($q3, 0, 0); if (mysql_num_rows($q3) < 1) { // Definisana je samo jedna akademska godina u bazi nicemessage("U ovom trenutku nije aktiviran upis u sljedeću akademsku godinu."); return; } } else { $proslagodina = mysql_result($q1, 0, 0); $zagodinu = mysql_result($q2, 0, 0); $zagodinunaziv = mysql_result($q2, 0, 1); } ?> <p>Za akademsku <?php echo $zagodinunaziv; ?> godinu.</p> <?php // Ulazni podaci $studij = intval($_REQUEST['studij']); $godina = intval($_REQUEST['godina']); $prenosi = intval($_REQUEST['prenosi']); // Provjera ispravnosti podataka if ($studij != 0) { $q5 = myquery("select naziv, zavrsni_semestar from studij where id={$studij}"); if (mysql_num_rows($q5) < 1) { niceerror("Neispravan studij"); $studij = 0; unset($_POST['akcija']); } else { if ($godina < 1 || $godina > mysql_result($q5, 0, 1) / 2) { $godina = 1; } } $naziv_studija = mysql_result($q5, 0, 0); } else { unset($_POST['akcija']); } // Šta trenutno sluša student? $q10 = myquery("select ss.studij, ss.semestar, s.zavrsni_semestar, s.institucija, s.tipstudija, s.naziv, ss.plan_studija from student_studij as ss, studij as s where ss.student={$userid} and ss.akademska_godina={$proslagodina} and ss.studij=s.id order by semestar desc limit 1"); if (mysql_num_rows($q10) > 0) { $trenutni_studij = mysql_result($q10, 0, 0); $trenutni_semestar = mysql_result($q10, 0, 1); // Podaci koji nam trebaju radi prelaska sa BSc na MSc $szavrsni_semestar = mysql_result($q10, 0, 2); $sinstitucija = mysql_result($q10, 0, 3); $stipstudija = mysql_result($q10, 0, 4); $snazivstudija = mysql_result($q10, 0, 5); $najnoviji_plan = mysql_result($q10, 0, 6); } else { niceerror("Niste nikada bili naš student!"); return; // dozvoliti testiranje nestudentima bi bilo prilično komplikovano, obzirom na dio "provjera uslova za koliziju" } // Modul kolizija zahtijeva plan studija if ($najnoviji_plan == 0) { niceerror("Modul za koliziju ne može biti aktiviran ako nije definisan plan studija"); print "Kontaktirajte vašeg administratora."; return; } // PROVJERA USLOVA ZA KOLIZIJU // Od predmeta koje je slušao, koliko je pao? $predmet_naziv = $predmet_ects = $predmet_semestar = $predmet_stari = array(); $izborni = array(); $q30 = myquery("select semestar, predmet, obavezan from plan_studija where godina_vazenja={$najnoviji_plan} and studij={$trenutni_studij} and semestar<={$trenutni_semestar} order by semestar"); while ($r30 = mysql_fetch_row($q30)) { if ($r30[2] == 1) { // obavezan $q50 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r30['1']} and ocjena>5"); if (mysql_result($q50, 0, 0) < 1) { $q40 = myquery("select naziv,ects from predmet where id={$r30['1']}"); $predmet_naziv[$r30[1]] = mysql_result($q40, 0, 0); $predmet_ects[$r30[1]] = mysql_result($q40, 0, 1); $predmet_semestar[$r30[1]] = $r30[0]; if ($r30[0] < $trenutni_semestar - 1) { $predmet_stari[$r30[1]] = 1; } else { $predmet_stari[$r30[1]] = 0; } } } else { // izborni predmet $izborni[$r30[1]]++; $q60 = myquery("select p.id, p.naziv, p.ects from izborni_slot as iz, predmet as p, ponudakursa as pk, student_predmet as sp where iz.id={$r30['1']} and iz.predmet=p.id and p.id=pk.predmet and pk.akademska_godina={$proslagodina} and pk.id=sp.predmet and sp.student={$userid}"); // Upit vraća više redova ako postoji više slotova za isti skup predmeta while ($r60 = mysql_fetch_row($q60)) { $predmet_tmp = $r60[0]; $q70 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$predmet_tmp} and ocjena>5"); if (mysql_result($q70, 0, 0) < 1) { $predmet_naziv[$predmet_tmp] = $r60[1]; $predmet_ects[$predmet_tmp] = $r60[2]; $predmet_semestar[$predmet_tmp] = $r30[0]; if ($r30[0] < $trenutni_semestar - 1) { $predmet_stari[$predmet_tmp] = 1; } else { $predmet_stari[$r30[1]] = 0; } } } // Student nije slušao dovoljan broj ponuđenih izbornih predmeta // Dešava se u slučaju da je izabran predmet sa drugog odsjeka if (mysql_num_rows($q60) < $izborni[$r30[1]]) { $q60 = myquery("select p.id, p.naziv, p.ects from izborni_slot as iz, predmet as p where iz.id={$r30['1']} and iz.predmet=p.id"); $naziv = "Izborni predmet ("; // Kombinovani naziv svih predmeta $polozio = 0; $ects = 100; // treba nam minimalni ects while ($r60 = mysql_fetch_row($q60)) { if (strlen($naziv) > 18) { $naziv .= ", "; } $naziv .= $r60[1]; if ($r60[2] < $ects) { $ects = $r60[2]; } $q70 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r60['0']} and ocjena>5"); if (mysql_result($q70, 0, 0) > 0) { $polozio++; } } if ($polozio < $izborni[$r30[1]]) { // nije polozio dovoljno izbornih predmeta predmet // Spisak izbornih $q71 = myquery("select iz.predmet from izborni_slot as iz, plan_studija as ps where ps.godina_vazenja={$najnoviji_plan} and ps.studij={$trenutni_studij} and ps.semestar<={$trenutni_semestar} and ps.obavezan=0 and ps.predmet=iz.id"); $validni_izborni = array(); while ($r71 = mysql_fetch_row($q71)) { $validni_izborni[] = $r71[0]; } // Određujemo predmet sa drugog odsjeka koji je slušao $nadjen = 0; $q72 = myquery("select pk.predmet, p.naziv, p.ects, pk.semestar from ponudakursa as pk, student_predmet as sp, predmet as p where sp.student={$userid} and sp.predmet=pk.id and pk.akademska_godina={$proslagodina} and pk.semestar={$r30['0']} and pk.obavezan=0 and pk.predmet=p.id"); while ($r72 = mysql_fetch_row($q72)) { if (!in_array($r72[0], $validni_izborni)) { $nadjen = 1; // Da li ga je položio? $q74 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r72['0']} and ocjena>5"); if (mysql_result($q74, 0, 0) == 0) { $predmet_naziv[$r72[0]] = $r72[1]; $predmet_ects[$r72[0]] = $r72[2]; $predmet_semestar[$r72[0]] = $r72[3]; if ($r72[3] < $trenutni_semestar - 1) { $predmet_stari[$r72[0]] = 1; } else { $predmet_stari[$r72[0]] = 0; } } } } // Nismo pronašli predmet sa drugog odsjeka koji je student slušao // Znači da student nije ni upisao sve potrebne izborne predmete if ($nadjen == 0) { $predmet_naziv[$r30[1]] = $naziv . ")"; $predmet_ects[$r30[1]] = $ects; $predmet_semestar[$r30[1]] = $r30[0]; if ($r30[0] < $trenutni_semestar - 1) { $predmet_stari[$r30[1]] = 1; } else { $predmet_stari[$r30[1]] = 0; } } } } } } // Da li je već u koliziji? $q15 = myquery("select count(*) from student_predmet as sp, ponudakursa as pk where sp.student={$userid} and sp.predmet=pk.id and pk.studij={$trenutni_studij} and pk.semestar>{$trenutni_semestar} and pk.akademska_godina={$zagodinu}"); if (mysql_result($q15, 0, 0) > 0) { ?> <p>Vaš zahtjev za koliziju je prihvaćen. Upisani ste u odabrane predmete (vidjećete ih na spisku predmeta kada zvanično počne sljedeća akademska godina).</p><?php return; } // Uslov za upis u sljedeću godinu if (count($predmet_naziv) == 0) { ?> <p>Vi ste dali uslov za upis u <?php echo $snazivstudija; ?> , <?php echo $trenutni_semestar + 1; ?> . semestar bez kolizije! Možete popuniti <a href="?sta=student/ugovoroucenju">Ugovor o učenju</a> kako biste izabrali izborne predmete.</p> <?php return; } else { if (count($predmet_naziv) <= 1) { $da_stari_je = 0; foreach ($predmet_stari as $stari) { if ($stari) { $da_stari_je = 1; } } if ($da_stari_je == 0) { ?> <p>Vi ste dali uslov za upis u <?php echo $snazivstudija; ?> , <?php echo $trenutni_semestar + 1; ?> . semestar bez kolizije! Možete popuniti <a href="?sta=student/ugovoroucenju">Ugovor o učenju</a> kako biste izabrali izborne predmete.</p> <?php return; } // else ide na koliziju } else { if (count($predmet_naziv) > 3) { ?> <p>Trenutno ne ispunjavate uslov za koliziju jer imate <?php echo count($predmet_naziv); ?> nepoložena predmeta, a možete imati maksimalno tri.</p> <?php /* <p>Prema trenutnoj evidenciji, Vaši nepoloženi predmeti su:</p> <ul><? foreach ($predmet_naziv as $id=>$naziv) { print "<li>$naziv"; if ($predmet_stari[$id]) print " (predmet sa nižih godina, ne može se prenijeti)"; print "</li>\n"; } ?> </ul>*/ ?> <p>Ukoliko je ovo greška i položili ste neki od ovih predmeta, hitno kontaktirajte predmetnog nastavnika kako bi unio ocjenu!!!</p> <?php // return; } } } // Nemoguće je da student ima previše starih predmeta (trenutno: više od jedan) jer onda ne bi mogao upisati godinu. Eventualno je mogao koristiti koliziju prošle godine, ali bi onda varijabla $trenutni_semestar bila niža pa ti predmeti ne bi bili "stari" // Da li već postoji zahtjev za koliziju? $q18 = myquery("select count(*) from kolizija where student={$userid} and akademska_godina={$zagodinu}"); if (mysql_result($q18, 0, 0) > 0) { ?> <p>Već imate jedan zahtjev za koliziju. Možete ponovo popuniti zahtjev, pri čemu se stari briše.</p> <p>Kliknite na jedan od linkova ispod za printanje zahtjeva za:<br> - <a href="?sta=student/kolizijapdf&semestar=1">zimski semestar</a><br> - <a href="?sta=student/kolizijapdf&semestar=2">ljetnji semestar</a></p> <?php } // UNOS U BAZU // Akcija za unos podataka o koliziji u bazu if ($_POST['akcija'] == "korak2" && $studij > 0 && $godina > 0 && $prenosi > 0) { // Provjeravamo da li je odabran ispravan broj ECTSova po semestru foreach ($predmet_ects as $id => $ects) { if ($id == $_POST['prenosi'] || $_POST["polaze-{$id}"]) { continue; } if ($predmet_semestar[$id] % 2 == 1) { $zimskiects += $ects; } else { $ljetnjiects += $ects; } } $zze = $zle = 0; $predmeti1 = $predmeti2 = array(); foreach ($_POST as $key => $value) { if (substr($key, 0, 10) == "obavezni1-" || substr($key, 0, 10) == "izborni1--") { $predmet = intval(substr($key, 10)); $q200 = myquery("select ects from predmet where id={$predmet}"); if (mysql_num_rows($q200) < 1) { niceerror("Izabran je nepoznat predmet!"); return; } $zze += mysql_result($q200, 0, 0); array_push($predmeti1, $predmet); } if (substr($key, 0, 10) == "obavezni2-" || substr($key, 0, 10) == "izborni2--") { $predmet = intval(substr($key, 10)); $q200 = myquery("select ects from predmet where id={$predmet}"); if (mysql_num_rows($q200) < 1) { niceerror("Izabran je nepoznat predmet!"); return; } $zle += mysql_result($q200, 0, 0); array_push($predmeti2, $predmet); } } if ($zze > 30 - $zimskiects || $zle > 30 - $ljetnjiects) { niceerror("Izabrano je previše ECTS kredita u jednom od semestara! {$zze}>" . (30 - $zimskiects) . " {$zle}>" . (30 - $ljetnjiects)); return; } // Provjera kapaciteta foreach (array_merge($predmeti1, $predmeti2) as $predmet) { if (provjeri_kapacitet($predmet, $zagodinu, $najnoviji_plan) == 0) { $q117 = myquery("SELECT naziv FROM predmet WHERE id={$predmet}"); niceerror("Predmet " . mysql_result($q117, 0, 0) . " se ne može izabrati jer su dostupni kapaciteti za taj predmet popunjeni"); zamgerlog2("popunjen kapacitet za predmet", $predmet); return; } } // Sve ok, ubacujemo $q210 = myquery("delete from kolizija where student={$userid} and akademska_godina={$zagodinu}"); // Brisem prethodnu koliziju $q212 = myquery("delete from septembar where student={$userid} and akademska_godina={$zagodinu}"); // Brisem prethodnu koliziju foreach ($predmeti1 as $predmet) { $q210 = myquery("insert into kolizija set student={$userid}, akademska_godina={$zagodinu}, semestar=1, predmet={$predmet}"); } foreach ($predmeti2 as $predmet) { $q210 = myquery("insert into kolizija set student={$userid}, akademska_godina={$zagodinu}, semestar=2, predmet={$predmet}"); } foreach ($predmet_ects as $id => $ects) { if ($_POST["polaze-{$id}"]) { $q210 = myquery("insert into septembar set student={$userid}, akademska_godina={$zagodinu}, predmet={$id}"); } } zamgerlog("student u{$userid} kreirao zahtjev za koliziju", 2); // 2 - edit nicemessage("Kreirali ste zahtjev za koliziju."); ?> <p>Studentska služba će vas upisati na odgovarajuće predmete prilikom upisa na godinu.</p> <p>Kliknite na jedan od linkova ispod za printanje zahtjeva za:<br> - <a href="?sta=student/kolizijapdf&semestar=1">zimski semestar</a><br> - <a href="?sta=student/kolizijapdf&semestar=2">ljetnji semestar</a></p> <?php return; } // PRVI EKRAN - IZBOR STUDIJA I PREDMETA ZA PRENOS // Ako je bilo koji od primljenih parametara nula, dajemo izbor studija, godine i prenesenog predmeta if (!$_POST['akcija'] == "korak1" || $studij == 0 || $godina == 0 || $prenosi == 0) { // Odredjujemo ciljni studij $studij = $trenutni_studij; $godina = intval(($trenutni_semestar + 3) / 2); if ($trenutni_semestar >= $szavrsni_semestar) { $q20 = myquery("select id, naziv from studij where moguc_upis=1 and institucija={$sinstitucija} and tipstudija>{$stipstudija}"); // FIXME pretpostavka je da su tipovi studija poredani po ciklusima if (mysql_num_rows($q20) > 0) { $studij = mysql_result($q20, 0, 0); $snazivstudija = mysql_result($q20, 0, 1); $godina = 1; } else { // Nema gdje dalje... postavljamo sve na nulu $studij = 0; $godina = 1; } } // Određujemo najnoviji plan, ali ovaj put za ciljni studij // FIXME: prebaciti gore unutar if(mys...($q2)>0) { ??? $q6 = myquery("select godina_vazenja from plan_studija where studij={$studij} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q6) < 1) { niceerror("Nepostojeći studij"); return; } $najnoviji_plan = mysql_result($q6, 0, 0); ?> <form action="index.php" method="POST" name="mojaforma"> <input type="hidden" name="sta" value="student/kolizija"> <input type="hidden" name="akcija" value="korak1"> <?php // Ispis ponude za polaganje if (count($predmet_naziv) > 3) { ?> <p><b>Izaberite predmete koje ste položili ili ih planirate položiti do kraja septembarskog roka:</b><br /> <?php foreach ($predmet_naziv as $id => $naziv) { ?> <input type="checkbox" name="polaze-<?php echo $id; ?> " <?php ?> ><?php echo $naziv; ?> (<?php echo $predmet_semestar[$id]; ?> . semestar, <?php echo $predmet_ects[$id]; ?> ECTS)<br /> <?php } ?> <p>VAŽNO: Ako ne položite neki od ovih predmeta, Vaš zahtjev za koliziju se poništava!</p> <?php } // Ispis izbora predmeta koji će student prenijeti // Ima li ijedan predmet koji se može prenijeti? $ima = 0; foreach ($predmet_stari as $id => $stari) { if ($stari == 0) { $ima = 1; } } if ($ima) { ?> <p><b>Izaberite predmet koji prenosite redovno:</b><br /> <?php foreach ($predmet_naziv as $id => $naziv) { ?> <input type="radio" name="prenosi" value="<?php echo $id; ?> "<?php if ($predmet_stari[$id]) { print " DISABLED"; } ?> ><?php echo $naziv; ?> (<?php echo $predmet_semestar[$id]; ?> . semestar, <?php echo $predmet_ects[$id]; ?> ECTS)<br /> <?php } ?> <p>Ostale predmete prenosite "koliziono" što znači da u odgovarajućem semestru (ljetnom ili zimskom) ne možete slušati odgovarajući broj ECTS kredita.</p> <?php } else { print '<input type="hidden" name="prenosi" value="-1">'; } // Izbor studija ?> <p><hr><br /> Studij: <select name="studij" id="studij" onchange="javascript:refresh()"><option></option> <?php // Spisak studija $q30 = myquery("select id, naziv from studij where moguc_upis=1 order by tipstudija, naziv"); while ($r30 = mysql_fetch_row($q30)) { print "<option value=\"{$r30['0']}\""; if ($r30[0] == $studij) { print " selected"; } print ">{$r30['1']}</option>\n"; } ?> </select></p> <p>Godina studija: <input type="text" name="godina" id="godina" value="<?php echo $godina; ?> "></p> <p><input type="submit" value="Dalje >>"></p> </form> <?php return; } // if ($studij==0 || $godina==0 || $prenosi==0) // ISPIS IZBORA PREDMETA // (odnosno korak 2 wizarda) ?> <form action="index.php" method="POST" name="mojaforma"> <input type="hidden" name="sta" value="student/kolizija"> <input type="hidden" name="akcija" value="korak2"> <?php // Odredjujemo najnoviji plan studija za odabrani studij $q6 = myquery("select godina_vazenja from plan_studija where studij={$studij} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q6) < 1) { niceerror("Nepostojeći studij"); return; } $najnoviji_plan = mysql_result($q6, 0, 0); foreach ($predmet_naziv as $id => $naziv) { if ($_POST["polaze-{$id}"] && $id == $_POST['prenosi']) { niceerror("Pogrešni podaci!"); ?> Ne možete istovremeno izabrati da ćete predmet položiti i da ga prenosite. <?php return; } } $br_polozice = 0; foreach ($predmet_naziv as $id => $naziv) { if ($_POST["polaze-{$id}"]) { $br_polozice++; } } if ($br_polozice > count($predmet_naziv) - 2) { niceerror("Pa nećete sve položiti :)"); ?> <p>Vratite se nazad i ostavite barem dva predmeta koja nećete položiti kako biste bili kolizija. Ako sve položite onda niste kolizija.</p> <?php return; } // Ispisujemo izabrani studij, godinu i preneseni predmet ?> <input type="hidden" name="studij" value="<?php echo $studij; ?> "> <input type="hidden" name="godina" value="<?php echo $godina; ?> "> <p>Kolizija za studij <b><?php echo $naziv_studija; ?> </b> (<b><?php echo $godina; ?> .</b> godina)<br /> <?php foreach ($predmet_naziv as $id => $naziv) { if ($_POST["polaze-{$id}"]) { ?> Položiće: <b><?php echo $naziv; ?> </b> (<?php echo $predmet_ects[$id]; ?> ECTS)<br /> <input type="hidden" name="polaze-<?php echo $id; ?> " value="on"> <?php } } foreach ($predmet_naziv as $id => $naziv) { if ($id == $_POST['prenosi']) { ?> Preneseni predmet: <b><?php echo $naziv; ?> </b> (<?php echo $predmet_ects[$id]; ?> ECTS)<br /> <input type="hidden" name="prenosi" value="<?php echo $prenosi; ?> "> <?php } } $broj_kolizionih_predmeta = 0; foreach ($predmet_naziv as $id => $naziv) { if ($id != $_POST['prenosi'] && !$_POST["polaze-{$id}"]) { ?> Kolizioni predmet: <b><?php echo $naziv; ?> </b> (<?php echo $predmet_ects[$id]; ?> ECTS)<br /> <?php $broj_kolizionih_predmeta++; } } if ($broj_kolizionih_predmeta > 3) { ?> <?php nicemessage("Izabrali ste više od dva koliziona predmeta"); ?> <p>Možete imati maksimalno dva predmeta u koliziji, ostale predmete trebate ili položiti ili prenijeti.</p> <p><a href="?sta=student/kolizija">Nazad na izbor studija, godine i prenesenog predmeta</a></p> <?php return; } // Računamo broj ECTSova u zimskom i ljetnjem periodu foreach ($predmet_ects as $id => $ects) { if ($id == $_POST['prenosi'] || $_POST["polaze-{$id}"]) { continue; } if ($predmet_semestar[$id] % 2 == 1) { $zimskiects += $ects; } else { $ljetnjiects += $ects; } } // JavaScript ?> <SCRIPT language="JavaScript"> // Funckija koja ne dozvoljava da se selektuje različit broj polja od navedenog var globalna; function jedanod(slot, clicked) { var template = "izborni-"+slot; var found=false; for (var i=0; i<document.mojaforma.length; i++) { var el = document.mojaforma.elements[i]; if (el.type != "checkbox") continue; if (el==clicked) continue; if (template == el.name.substr(0,template.length)) { if (clicked.checked==true && el.checked==true) { el.checked=false; found=true; break; } if (clicked.checked==false && el.checked==false) { el.checked=true; found=true; break; } } } if (!found) { globalna=clicked; setTimeout("revertuj()", 100); } return found; } function revertuj() { if (globalna.checked) globalna.checked=false; else globalna.checked=true; } function updateects(sta, zakoliko, radio) { var layer; if (sta==0) layer=document.getElementById('zimskiizbor'); else layer=document.getElementById('ljetnjiizbor'); var vrijednost=parseFloat(layer.innerHTML); if (radio.checked) vrijednost+=zakoliko; else vrijednost-=zakoliko; layer.innerHTML=vrijednost; if (sta==0 && vrijednost><?php echo 30 - $zimskiects; ?> ) document.getElementById('zimskicrveno').style.color="red"; else if (sta==0) document.getElementById('zimskicrveno').style.color="black"; if (sta==1 && vrijednost><?php echo 30 - $ljetnjiects; ?> ) document.getElementById('ljetnjicrveno').style.color="red"; else if (sta==1) document.getElementById('ljetnjicrveno').style.color="black"; } function provjeri_submit() { var zimski=parseFloat(document.getElementById('zimskiizbor').innerHTML); var ljetnji=parseFloat(document.getElementById('ljetnjiizbor').innerHTML); if (zimski><?php echo 30 - $zimskiects; ?> || ljetnji><?php echo 30 - $ljetnjiects; ?> ) { alert ("Izabrali ste previše ECTS kredita u koliziji!"); return false; } return true; } </SCRIPT> <?php // Ispis ?> <p><a href="?sta=student/kolizija">Nazad na izbor studija, godine i prenesenog predmeta</a></p> <p><hr><br /> Izaberite predmete koje želite slušati. Možete izabrati maksimalno <?php echo 30 - $zimskiects; ?> kredita na zimskom semestru i <?php echo 30 - $ljetnjiects; ?> kredita na ljetnom.</p> <p>NAPOMENA: Morate popuniti i <a href="?sta=student/ugovoroucenju">Ugovor o učenju</a>, ali za prethodnu godinu (za <?php echo $godina - 1; ?> . godinu studija).</p> <p><span id="zimskicrveno"><b><?php echo $godina * 2 - 1; ?> . semestar (izabrano <span id="zimskiizbor">0</span> kredita, max. <?php echo 30 - $zimskiects; ?> ):</b></span><br /> <?php $q40 = myquery("select predmet, obavezan from plan_studija where godina_vazenja={$najnoviji_plan} and studij={$studij} and semestar=" . ($godina * 2 - 1) . " order by obavezan desc, predmet"); $is_bilo = array(); while ($r40 = mysql_fetch_row($q40)) { if ($r40[1] == 1) { // obavezan // Ako je vec polozen predmet preskacemo $q45 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r40['0']}"); if (mysql_result($q45, 0, 0) > 0) { continue; } // Ako je vec polozen predmet preskacemo $q50 = myquery("select naziv, ects from predmet where id={$r40['0']}"); $pnaziv = mysql_result($q50, 0, 0); $pects = mysql_result($q50, 0, 1); // Zavrsni rad se ne moze izabrati u koliziji if ($pects == 12) { continue; } ?> <input type="checkbox" name="obavezni1-<?php echo $r40[0]; ?> " onchange="javascript:updateects(0, <?php echo $pects; ?> , this)"> <?php echo $pnaziv; ?> (<?php echo $pects; ?> ECTS)<br /> <?php } else { // izborni if (count($is_bilo) == 0) { print "Izborni predmeti:<br />\n"; } // Da li je već bio izborni slot? if (in_array($r40[0], $is_bilo)) { continue; } array_push($is_bilo, $r40[0]); $q60 = myquery("select p.id, p.naziv, p.ects from predmet as p, izborni_slot as iz where iz.id={$r40['0']} and iz.predmet=p.id"); while ($r60 = mysql_fetch_row($q60)) { // Ako je vec polozen predmet preskacemo $q65 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r60['0']}"); if (mysql_result($q65, 0, 0) > 0) { continue; } // Ako je vec polozen predmet preskacemo $pnaziv = $r60[1]; $pects = $r60[2]; ?> <input type="checkbox" name="izborni1--<?php echo $r60[0]; ?> " onchange="javascript:updateects(0, <?php echo $pects; ?> , this)"> <?php echo $pnaziv; ?> (<?php echo $pects; ?> ECTS)<br /> <?php } } } ?> <p><span id="ljetnjicrveno"><b><?php echo $godina * 2; ?> . semestar (izabrano <span id="ljetnjiizbor">0</span> kredita, max. <?php echo 30 - $ljetnjiects; ?> ):</b></span><br /> <?php $q40 = myquery("select predmet, obavezan from plan_studija where godina_vazenja={$najnoviji_plan} and studij={$studij} and semestar=" . $godina * 2 . " order by obavezan desc, predmet"); $is_bilo = array(); while ($r40 = mysql_fetch_row($q40)) { if ($r40[1] == 1) { // obavezan // Ako je vec polozen predmet preskacemo $q45 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r40['0']}"); if (mysql_result($q45, 0, 0) > 0) { continue; } // Ako je vec polozen predmet preskacemo $q50 = myquery("select naziv, ects from predmet where id={$r40['0']}"); $pnaziv = mysql_result($q50, 0, 0); $pects = mysql_result($q50, 0, 1); // Zavrsni rad se ne moze izabrati u koliziji if ($pects == 12) { continue; } ?> <input type="checkbox" name="obavezni2-<?php echo $r40[0]; ?> " onchange="javascript:updateects(1, <?php echo $pects; ?> , this)"> <?php echo $pnaziv; ?> (<?php echo $pects; ?> ECTS)<br /> <?php } else { // izborni if (count($is_bilo) == 0) { print "Izborni predmeti:<br />\n"; } // Da li je već bio izborni slot? if (in_array($r40[0], $is_bilo)) { continue; } array_push($is_bilo, $r40[0]); $q60 = myquery("select p.id, p.naziv, p.ects from predmet as p, izborni_slot as iz where iz.id={$r40['0']} and iz.predmet=p.id"); while ($r60 = mysql_fetch_row($q60)) { // Ako je vec polozen predmet preskacemo $q65 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r60['0']}"); if (mysql_result($q65, 0, 0) > 0) { continue; } // Ako je vec polozen predmet preskacemo $pnaziv = $r60[1]; $pects = $r60[2]; ?> <input type="checkbox" name="izborni2--<?php echo $r60[0]; ?> " onchange="javascript:updateects(1, <?php echo $pects; ?> , this)"> <?php echo $pnaziv; ?> (<?php echo $pects; ?> ECTS)<br /> <?php } } } ?> </p> <p> <input type="submit" value="Potvrđujem koliziju" onclick="javascript:return provjeri_submit()"></form></p> <?php }
function studentska_prodsjeka() { global $userid, $user_siteadmin, $user_studentska; // Provjera privilegija if (!$user_studentska && !$user_siteadmin) { zamgerlog("nije studentska", 3); // 3: error zamgerlog2("nije studentska"); // 3: error biguglyerror("Pristup nije dozvoljen."); return; } // Odredjujemo akademsku godinu $ak_god = intval($_REQUEST['ak_god']); if ($ak_god == 0) { // Aktuelna $q1 = myquery("select id, naziv from akademska_godina where aktuelna=1"); $ak_god = mysql_result($q1, 0, 0); $ak_god_naziv = mysql_result($q1, 0, 1); // Da li postoji godina iza aktuelne? $q2 = myquery("select id, naziv from akademska_godina where id>{$ak_god} order by id limit 1"); if (mysql_num_rows($q2) > 0) { $ak_god = mysql_result($q2, 0, 0); $ak_god_naziv = mysql_result($q2, 0, 1); } } else { $q3 = myquery("select naziv from akademska_godina where id={$ak_god}"); $ak_god_naziv = mysql_result($q3, 0, 0); } ?> <h3>Studentska služba - Zahtjevi za promjenu odsjeka</h3> <?php // Akcija: brisanje zahtjeva if ($_REQUEST['akcija'] == "obrisi") { $id = intval($_REQUEST['id']); $q5 = myquery("delete from promjena_odsjeka where id={$id}"); zamgerlog("obrisan zahtjev za promjenu odsjeka sa IDom {$id}", 2); // 2 = edit zamgerlog2("obrisan zahtjev za promjenu odsjeka", $id); } // Akcija: dodavanje zahtjeva if ($_POST['akcija'] == "dodaj" && check_csrf_token()) { $prezime = trim(malaslova(my_escape($_REQUEST['prezime']))); $ime = trim(malaslova(my_escape($_REQUEST['ime']))); $iz_odsjeka = intval($_REQUEST['iz_odsjeka']); $u_odsjek = intval($_REQUEST['u_odsjek']); $q100 = myquery("select id from osoba where ime='{$ime}' and prezime='{$prezime}'"); if (mysql_num_rows($q100) < 1) { niceerror("Nepoznat student pod imenom: \"{$ime} {$prezime}\""); } else { if ($iz_odsjeka == 0 || $u_odsjek == 0) { niceerror("Niste odabrali odsjek"); } else { $osoba = mysql_result($q100, 0, 0); $q105 = myquery("select count(*) from promjena_odsjeka where osoba={$osoba} and akademska_godina={$ak_god}"); if (mysql_result($q105, 0, 0) > 0) { niceerror("Već postoji zahtjev za promjenu odsjeka za studenta \"{$ime} {$prezime}\""); } else { $q110 = myquery("insert into promjena_odsjeka set osoba={$osoba}, iz_odsjeka={$iz_odsjeka}, u_odsjek={$u_odsjek}, akademska_godina={$ak_god}"); $q115 = myquery("select id from promjena_odsjeka where osoba={$osoba} and iz_odsjeka={$iz_odsjeka} and u_odsjek={$u_odsjek} and akademska_godina={$ak_god}"); zamgerlog("dodan zahtjev za promjenu odsjeka za osobu u{$osoba} (iz {$iz_odsjeka} u {$u_odsjek})", 2); zamgerlog2("dodan zahtjev za promjenu odsjeka", intval($osoba), $iz_odsjeka, $u_odsjek); } } } } // Akcija: prihvatanje zahtjeva // Ustvari ćemo samo dati linkove na modul studentska/osobe if ($_REQUEST['akcija'] == "prihvati") { $id = intval($_REQUEST['id']); $potvrda = intval($_REQUEST['potvrda']); $q500 = myquery("select osoba, iz_odsjeka, u_odsjek from promjena_odsjeka where id={$id} and akademska_godina={$ak_god}"); if (mysql_num_rows($q500) < 1) { niceerror("Nepoznat zahtjev ID"); return; } $osoba = mysql_result($q500, 0, 0); $iz_odsjeka = mysql_result($q500, 0, 1); $u_odsjek = mysql_result($q500, 0, 2); // Da li trenutno studira $q510 = 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} order by ss.semestar desc"); if (mysql_num_rows($q510) > 0) { $studij = mysql_result($q510, 0, 0); $naziv_studija = mysql_result($q510, 0, 1); $semestar = mysql_result($q510, 0, 2); if ($studij == $u_odsjek) { nicemessage("Student je već upisan na studij {$naziv_studija}"); return; } if ($studij != $iz_odsjeka) { niceerror("Student je trenutno upisan na studij {$naziv_studija} a ne na izabrani studij!"); print "Vaš zahtjev nije ispravan. Obrišite ga i napravite novi."; return; } // Ispis sa studija ?> <p>Najprije morate ispisati studenta sa studija <?php echo $naziv_studija; ?> . <a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=ispis&studij=<?php echo $iz_odsjeka; ?> &semestar=<?php echo $semestar; ?> &godina=<?php echo $ak_god; ?> ">Kliknite ovdje da ispišete studenta sa studija,</a> a zatim se vratite na stranicu "Promjena odsjeka" kako biste ga/je upisali na novi studij.</p> <?php return; } // Koji je zadnji semestar slušao? $q560 = myquery("select ss.studij, ss.semestar, 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($q560, 0, 0); $zadnji_semestar = mysql_result($q560, 0, 1); $naziv_studija = mysql_result($q560, 0, 2); if ($studij != $iz_odsjeka) { niceerror("Student je prošle godine bio upisan na studij {$naziv_studija}, a ne na odabrani studij!"); print "Vaš zahtjev nije ispravan. Obrišite ga i napravite novi."; return; } $q570 = myquery("select naziv from studij where id={$u_odsjek}"); $naziv_ciljnog = mysql_result($q570, 0, 0); print "<p>Provjerite da li student ima uslove za upis u viši semestar ili nema!!!</p>\n"; if ($zadnji_semestar % 2 == 1) { $manji = $zadnji_semestar - 1; $veci = $zadnji_semestar + 1; ?> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $u_odsjek; ?> &semestar=<?php echo $manji; ?> &godina=<?php echo $ak_god; ?> ">Ponovo upiši studenta na <?php echo $naziv_ciljnog; ?> , <?php echo $manji; ?> . semestar.</a></p> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $u_odsjek; ?> &semestar=<?php echo $veci; ?> &godina=<?php echo $ak_god; ?> ">Upiši studenta na <?php echo $naziv_ciljnog; ?> , <?php echo $veci; ?> . semestar.</a></p> <?php } else { ?> <p><a href="?sta=studentska/osobe&osoba=<?php echo $osoba; ?> &akcija=upis&studij=<?php echo $u_odsjek; ?> &semestar=<?php echo $zadnji_semestar; ?> &godina=<?php echo $ak_god; ?> ">Ponovo upiši studenta na <?php echo $naziv_ciljnog; ?> , <?php echo $zadnji_semestar; ?> . semestar.</a></p> <?php } return; } // Akcija: kratki izvjestaj if ($_REQUEST['akcija'] == "kratkiizvj") { $q220 = myquery("select s.id, s.naziv from studij as s, tipstudija as ts where s.tipstudija=ts.id and ts.moguc_upis=1 and ts.ciklus=1"); while ($r220 = mysql_fetch_row($q220)) { $ime_odsjeka[$r220[0]] = $r220[1]; } $q400 = myquery("select iz_odsjeka,u_odsjek from promjena_odsjeka where akademska_godina={$ak_god}"); $total = 0; while ($r400 = mysql_fetch_row($q400)) { $iz[$r400[0]]++; $u[$r400[1]]++; $total++; } ?> <table border="1"><tr bgcolor="#CCCCCC"><td><b>Studij</b></td> <td><b>Sa studija</b></td> <td><b>Na studij</b></td> <td><b>Razlika</b></td></tr> <?php foreach ($ime_odsjeka as $id => $ime) { ?> <tr><td><?php echo $ime; ?> </td><td><?php echo $iz[$id]; ?> </td> <td><?php echo $u[$id]; ?> </td> <td bgcolor="#EEEEEE"><?php echo $u[$id] - $iz[$id]; ?> </td></tr> <?php } ?> <tr><td>UKUPNO</td><td colspan="3" align="right"><?php echo $total; ?> zahtjeva</td></tr></table> <?php return; } // Akcija: izvjestaj if ($_REQUEST['akcija'] == "izvjestaj") { $suma = 0; foreach ($_REQUEST as $key => $value) { if (substr($key, 0, 6) == "limit-") { $studij = intval(substr($key, 6)); $limit[$studij] = intval($value); $suma += intval($value); } } if ($suma != 0) { niceerror("Suma svih limita mora biti nula!"); return; } // Zahtjeve sortiramo po broju polozenih predmeta i prosjecnoj ocjeni $zahtjevi = array(); global $brojpredmeta, $prosjek; // zbog usort() :( $q200 = myquery("select po.osoba, po.iz_odsjeka, po.u_odsjek, o.ime, o.prezime from promjena_odsjeka as po, osoba as o where po.osoba=o.id and po.akademska_godina={$ak_god}"); while ($r200 = mysql_fetch_row($q200)) { $zahtjevi[] = $r200[0]; $imeiprezime[$r200[0]] = "{$r200['3']} {$r200['4']}"; $izodsjeka[$r200[0]] = $r200[1]; $uodsjek[$r200[0]] = $r200[2]; $uk_izodsjeka[$r200[1]]++; $uk_uodsjek[$r200[2]]++; // Prosjek $q210 = myquery("select ko.ocjena from konacna_ocjena as ko, ponudakursa as pk where ko.student={$r200['0']} and ko.predmet=pk.predmet and pk.semestar<3"); while ($r210 = mysql_fetch_row($q210)) { $brojpredmeta[$r200[0]]++; $prosjek[$r200[0]] += $r210[0]; } $prosjek[$r200[0]] = $prosjek[$r200[0]] / $brojpredmeta[$r200[0]]; } // Sort preko korisnicke funkcije function po_broju_i_prosjeku($s1, $s2) { global $brojpredmeta, $prosjek; if ($brojpredmeta[$s1] < $brojpredmeta[$s2]) { return 1; } else { if ($brojpredmeta[$s1] > $brojpredmeta[$s2]) { return -1; } else { if ($prosjek[$s1] < $prosjek[$s2]) { return 1; } else { if ($prosjek[$s1] > $prosjek[$s2]) { return -1; } } } } return 0; } usort($zahtjevi, po_broju_i_prosjeku); // Da li je zahtjev prihvacen ili odbijen? $odbijen = array(); // Status -1 znaci da nije jos uvijek razmatran for ($i = 0; $i < count($zahtjevi); $i++) { $odbijen[$zahtjevi[$i]] = -1; } for ($i = 0; $i < count($zahtjevi); $i++) { if ($brojpredmeta[$zahtjevi[$i]] < 9) { // Ponovci svakako ne mogu mijenjati odsjek $odbijen[$zahtjevi[$i]] = 1; } } for ($i = 0; $i < count($zahtjevi); $i++) { $osoba = $zahtjevi[$i]; if ($odbijen[$osoba] != -1) { continue; } // Vec obradjen if ($limit[$uodsjek[$osoba]] > 0 && $limit[$izodsjeka[$osoba]] < 0) { // Ulazi u limit $odbijen[$osoba] = 0; $limit[$izodsjeka[$osoba]]++; $limit[$uodsjek[$osoba]]--; continue; } // Trazimo osobu s kojom ce se mijenjati for ($j = $i + 1; $j < count($zahtjevi); $j++) { $osoba2 = $zahtjevi[$j]; if ($odbijen[$osoba2] != -1) { continue; } // Vec obradjen if ($izodsjeka[$osoba] == $uodsjek[$osoba2] && $uodsjek[$osoba] == $izodsjeka[$osoba2]) { // Klasicna zamjena $odbijen[$osoba] = 0; $odbijen[$osoba2] = 0; break; } if ($izodsjeka[$osoba] == $uodsjek[$osoba2]) { if ($limit[$uodsjek[$osoba]] > 0 && $limit[$izodsjeka[$osoba2]] < 0) { // Zamjena ulazi u limit $odbijen[$osoba] = 0; $odbijen[$osoba2] = 0; $limit[$izodsjeka[$osoba2]]++; $limit[$uodsjek[$osoba]]--; break; } // Trazimo trecu osobu za 1->2->3->1 zamjenu for ($k = $j + 1; $k < count($zahtjevi); $k++) { $osoba3 = $zahtjevi[$k]; if ($odbijen[$osoba3] != -1) { continue; } if ($izodsjeka[$osoba2] == $uodsjek[$osoba3] && $izodsjeka[$osoba3] == $uodsjek[$osoba]) { $odbijen[$osoba] = 0; $odbijen[$osoba2] = 0; $odbijen[$osoba3] = 0; break; } } } if ($odbijen[$osoba] == 0) { break; } // Zbog $k petlje // Da li u limit ulazi kontra-zamjena? if ($izodsjeka[$osoba2] == $uodsjek[$osoba]) { if ($limit[$uodsjek[$osoba2]] > 0 && $limit[$izodsjeka[$osoba1]] < 0) { $odbijen[$osoba] = 0; $odbijen[$osoba2] = 0; $limit[$izodsjeka[$osoba]]++; $limit[$uodsjek[$osoba2]]--; break; } } } // Nista nismo nasli, ovaj je odbijen if ($odbijen[$osoba] == -1) { $odbijen[$osoba] = 1; } } // Ispis $q220 = myquery("select id,kratkinaziv from studij where moguc_upis=1"); while ($r220 = mysql_fetch_row($q220)) { $ime_odsjeka[$r220[0]] = $r220[1]; } ?> <b>Prihvaćeni zahtjevi:</b> <table border="1"><tr><td>R. br.</td><td>Ime i prezime</td><td>Iz odsjeka</td><td>U odsjek</td><td>Broj pol.</td><td>Prosjek</td></tr> <?php $rbr = 1; foreach ($zahtjevi as $osoba) { if ($odbijen[$osoba] == 1) { continue; } print "<tr> \n<td>" . $rbr++ . "</td> <td>" . $imeiprezime[$osoba] . "</td> \n<td>" . $ime_odsjeka[$izodsjeka[$osoba]] . "</td> <td>" . $ime_odsjeka[$uodsjek[$osoba]] . "</td> <td>" . $brojpredmeta[$osoba] . "</td> <td>" . round($prosjek[$osoba], 2) . "</td></tr>\n"; } ?> </table> <p> </p> <b>Odbijeni zahtjevi:</b> <table border="1"><tr><td>R. br.</td><td>Ime i prezime</td><td>Iz odsjeka</td><td>U odsjek</td><td>Broj pol.</td><td>Prosjek</td></tr> <?php $rbr = 1; foreach ($zahtjevi as $osoba) { if ($odbijen[$osoba] == 0) { continue; } print "<tr> \n<td>" . $rbr++ . "</td> <td>" . $imeiprezime[$osoba] . "</td> \n<td>" . $ime_odsjeka[$izodsjeka[$osoba]] . "</td> <td>" . $ime_odsjeka[$uodsjek[$osoba]] . "</td> <td>" . $brojpredmeta[$osoba] . "</td> <td>" . round($prosjek[$osoba], 2) . "</td></tr>\n"; } print "</table>\n"; /* foreach ($delta as $odsjek=>$broj) { print "Delta ".$ime_odsjeka[$odsjek]." je $broj<br/>"; print "Odobreno ".$ime_odsjeka[$odsjek]." je ".$odobreno[$odsjek]."<br/>"; }*/ return; } // Spisak zahtjeva ?> <b>Aktuelni zahtjevi (akademska <?php echo $ak_god_naziv; ?> ):</b> <ul> <?php $q10 = myquery("select po.id, o.ime, o.prezime, s.naziv, po.u_odsjek, o.id from promjena_odsjeka as po, osoba as o, studij as s where po.osoba=o.id and po.iz_odsjeka=s.id and po.akademska_godina={$ak_god}"); if (mysql_num_rows($q10) < 1) { print "<li>Nema zahtjeva</li\n"; } $total = 0; while ($r10 = mysql_fetch_row($q10)) { $q20 = myquery("select naziv from studij where id={$r10['4']}"); ?> <li><a href="?sta=studentska/osobe&akcija=edit&osoba=<?php echo $r10[5]; ?> "><?php echo $r10[1]; ?> <?php echo $r10[2]; ?> </a> - sa "<?php echo $r10[3]; ?> " na "<?php echo mysql_result($q20, 0, 0); ?> " (<a href="?sta=studentska/prodsjeka&akcija=obrisi&id=<?php echo $r10[0]; ?> &ak_god=<?php echo $ak_god; ?> ">obriši zahtjev</a>) (<a href="?sta=studentska/prodsjeka&akcija=prihvati&id=<?php echo $r10[0]; ?> &ak_god=<?php echo $ak_god; ?> ">prihvati zahtjev</a>)</li> <?php $total++; } print "</ul><p>Ukupno: {$total} zahtjeva * <a href=\"?sta=studentska/prodsjeka&akcija=kratkiizvj\">Statistički pregled</a></p>\n\n"; // Novi zahtjev // Upit za spisak odsjeka $spisak_odsjeka = "<option></option>\n"; $q30 = myquery("select s.id, s.kratkinaziv from studij as s, tipstudija as ts where s.tipstudija=ts.id and ts.moguc_upis=1 and ts.ciklus=1 order by s.kratkinaziv"); // Promjena odsjeka ima smisla samo na prvom ciklusu while ($r30 = mysql_fetch_row($q30)) { $spisak_odsjeka .= "<option value=\"{$r30['0']}\">{$r30['1']}</option>\n"; } ?> <hr><br/> <b>Upišite novi zahtjev za promjenu odsjeka:</b><br/><br/> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="dodaj"> Ime: <input type="text" name="ime" size="10"> Prezime: <input type="text" name="prezime" size="10"><br/> Želi preći sa odsjeka: <select name="iz_odsjeka"> <?php echo $spisak_odsjeka; ?> </select> Na odsjek: <select name="u_odsjek"> <?php echo $spisak_odsjeka; ?> </select> <br/> <input type="submit" value=" Dodaj "></form> <?php // Izvjestaji ?> <hr><br/> <b>Spisak prihvaćenih i odbijenih zahtjeva:</b><br/><br/> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="izvjestaj"> Iznos maksimalne promjene broja studenata po odsjeku:<br/> <?php $q40 = myquery("select s.id, s.kratkinaziv from studij as s, tipstudija as ts where s.tipstudija=ts.id and ts.moguc_upis=1 and ts.ciklus=1 order by s.kratkinaziv"); // hardkodirano samo za prvi ciklus // zato što promjena studija na drugom ciklusu (koji traje 1-2 godine) baš i nema smisla while ($r40 = mysql_fetch_row($q40)) { print "{$r40['1']}: <input type=\"text\" name=\"limit-{$r40['0']}\" value=\"0\" size=\"3\"> "; } ?> <input type="submit" value=" Prikaži "> </form> <br/> <?php }
function izvjestaj_anketa_sumarno() { ?> <p>Univerzitet u Sarajevu<br/> Elektrotehnički fakultet Sarajevo</p> <p>Datum i vrijeme izvještaja: <?php echo date("d. m. Y. H:i"); ?> </p> <?php $anketa = intval($_REQUEST['anketa']); $q10 = myquery("SELECT UNIX_TIMESTAMP(aa.datum_otvaranja), UNIX_TIMESTAMP(aa.datum_zatvaranja), aa.naziv, ag.naziv, ag.id, ap.semestar, ap.predmet \r\n\t\tFROM anketa_anketa as aa, akademska_godina as ag, anketa_predmet as ap \r\n\t\tWHERE aa.id={$anketa} and ap.anketa={$anketa} and aa.akademska_godina=ag.id"); if (mysql_num_rows($q10) < 1) { biguglyerror("Nepostojeća anketa!"); zamgerlog("Pristup nepostojećoj anketi {$anketa}", 3); zamgerlog2("pristup nepostojećoj anketi", $anketa); return; } $datum_otvaranja = mysql_result($q10, 0, 0); $datum_zatvaranja = mysql_result($q10, 0, 1); $naziv_ankete = mysql_result($q10, 0, 2); $naziv_ag = mysql_result($q10, 0, 3); $ag = mysql_result($q10, 0, 4); $semestar = mysql_result($q10, 0, 5); $anketa_predmet = mysql_result($q10, 0, 6); // Ova vrsta izvještaja nema smisla za ankete koje su samo za jedan predmet // Stoga ćemo prikazati sve predmete u datoj akademskoj godini i semestru if ($anketa_predmet != 0) { niceerror("Ova anketa je vezana samo za jedan predmet"); print "Nema smisla prikazivati sumarni izvještaj za takvu anketu."; return; } if (!isset($_REQUEST['tip']) || $_REQUEST['tip'] == "izlaznost") { ?> <h2>Izlaznost na anketu <?php echo $naziv_ankete; ?> (godina <?php echo $naziv_ag; ?> )</h2> <?php } else { if ($_REQUEST['tip'] == "sveukupna") { ?> <h2>Sveukupna ocjena predmeta, anketa <?php echo $naziv_ankete; ?> (godina <?php echo $naziv_ag; ?> )</h2> <?php } } if ($datum_otvaranja > time()) { print "<p><font color=\"red\">Anketa još uvijek nije održana! Datum otvaranja je u budućnosti.</font></p>\n"; } else { if ($datum_zatvaranja > time()) { print "<p><font color=\"red\">Anketa je još uvijek otvorena! Datum zatvaranja je u budućnosti.</font></p>\n"; } } // Cachiramo broj studenata po predmetu u nizove $broj_studenata = array(); $q15 = myquery("SELECT pk.predmet, count(*) FROM student_predmet as sp, ponudakursa as pk WHERE sp.predmet=pk.id and pk.akademska_godina={$ag} and pk.semestar mod 2={$semestar} GROUP BY pk.id"); while ($r15 = mysql_fetch_row($q15)) { $broj_studenata[$r15[0]] += $r15[1]; } if (!isset($_REQUEST['tip']) || $_REQUEST['tip'] == "izlaznost") { // Glavna tabela ?> <table cellspacing="0" border="1"> <tr><th>Predmet</th><th>Uk. studenata</th><th>Nije popunilo anketu</th><th>Poništilo anketu</th><th>Učestvovalo u anketi</th></tr> <?php $predmet_bio = array(); $stari_studij = $stari_semestar = 0; $q20 = myquery("SELECT p.id, p.naziv, pk.studij, pk.semestar, s.naziv, p.institucija, s.institucija\r\n\t\tFROM predmet as p, ponudakursa as pk, studij as s\r\n\t\tWHERE pk.akademska_godina={$ag} and pk.semestar mod 2={$semestar} and pk.predmet=p.id and pk.studij=s.id\r\n\t\tand s.id<=10 " . "\r\n\t\tORDER BY s.tipstudija, s.naziv, pk.semestar, p.naziv"); while ($r20 = mysql_fetch_row($q20)) { // Svrstavamo predmete pod njihov odsjek if ($r20[5] != $r20[6] && $r20[5] != 1) { continue; } // Da li je predmet bio? $predmet = $r20[0]; if (in_array($predmet, $predmet_bio)) { continue; } array_push($predmet_bio, $predmet); // Preskačemo predmete bez studenata if ($broj_studenata[$predmet] == 0) { continue; } // Da li je novi studij $naziv_predmeta = $r20[1]; $studij = $r20[2]; $semestar = $r20[3]; if ($studij != $stari_studij || $semestar != $stari_semestar) { $naziv_studija = $r20[4]; print "<tr><td colspan='5'><b>{$naziv_studija}, {$semestar} semestar</b></td></tr>\n"; $stari_studij = $studij; $stari_semestar = $semestar; } print "<tr><td>{$naziv_predmeta}</td>\n"; /*$q30 = myquery("select count(*) from student_predmet as sp, ponudakursa as pk where sp.predmet=pk.id and pk.predmet=$r20[0] and pk.akademska_godina=$r20[4]"); $broj_studenata = mysql_result($q30,0,0);*/ $bs = $broj_studenata[$predmet]; // Kraće pisanje print "<td>{$bs}</td>\n"; $q40 = myquery("select id from anketa_rezultat where anketa={$anketa} and zavrsena='Y' and predmet={$r20['0']}"); $broj_neuradjenih = $bs - mysql_num_rows($q40); print "<td>{$broj_neuradjenih} (" . procenat($broj_neuradjenih, $bs) . ")</td>\n"; $ponistenih = $uradjenih = 0; while ($r40 = mysql_fetch_row($q40)) { $q50 = myquery("select count(*) from anketa_odgovor_rank where rezultat={$r40['0']}"); // TODO: dodati i ostale tipove pitanja if (mysql_result($q50, 0, 0) == 0) { $ponistenih++; } else { $uradjenih++; } } print "<td>{$ponistenih} (" . procenat($ponistenih, $bs) . ")</td>\n"; print "<td>{$uradjenih} (" . procenat($uradjenih, $bs) . ")</td>\n"; print "</tr>\n"; $suma_bs += $bs; $suma_neuradjenih += $broj_neuradjenih; $suma_ponistenih += $ponistenih; $suma_uradjenih += $uradjenih; } print "<tr><td colspan='5'><b>UKUPNO:</b></td></tr>\n"; print "<tr><td> </td><td>{$suma_bs}</td><td>{$suma_neuradjenih} (" . procenat($suma_neuradjenih, $suma_bs) . ")</td><td>{$suma_ponistenih} (" . procenat($suma_ponistenih, $suma_bs) . ")</td><td>{$suma_uradjenih} (" . procenat($suma_uradjenih, $suma_bs) . ")</td></tr>\n"; print "</table>\n"; return; } if ($_REQUEST['tip'] == "sveukupna") { // Anketno pitanje "sveukupna ocjena predmeta" $q17 = myquery("SELECT p.id, p.tekst FROM anketa_pitanje as p,anketa_tip_pitanja as t WHERE p.tip_pitanja = t.id and p.anketa={$anketa} and p.tip_pitanja=1 order by p.id"); $the_pitanje = 0; while ($r17 = mysql_fetch_row($q17)) { if (strstr($r17[1], "ocjena predmeta")) { $the_pitanje = $r17[0]; } } if ($the_pitanje == 0) { biguglyerror("Nije pronađeno anketno pitanje 'sveukupna ocjena predmeta'"); return; } // Glavna tabela ?> <table cellspacing="0" border="1"> <tr><th>Predmet</th><th>Sveukupna ocjena</th><th>Odgovora</th></tr> <?php $predmet_bio = array(); $stari_studij = $stari_semestar = 0; $q20 = myquery("SELECT p.id, p.naziv, pk.studij, pk.semestar, s.naziv, p.institucija, s.institucija\r\n\t\tFROM predmet as p, ponudakursa as pk, studij as s\r\n\t\tWHERE pk.akademska_godina={$ag} and pk.semestar mod 2={$semestar} and pk.predmet=p.id and pk.studij=s.id\r\n\t\tand s.id<=10 " . "\r\n\t\tORDER BY s.tipstudija, s.naziv, pk.semestar, p.naziv"); while ($r20 = mysql_fetch_row($q20)) { // Svrstavamo predmete pod njihov odsjek if ($r20[5] != $r20[6] && $r20[5] != 1) { continue; } // Da li je predmet bio? $predmet = $r20[0]; if (in_array($predmet, $predmet_bio)) { continue; } array_push($predmet_bio, $predmet); // Preskačemo predmete bez studenata if ($broj_studenata[$predmet] == 0) { continue; } // Da li je novi studij $naziv_predmeta = $r20[1]; $studij = $r20[2]; $semestar = $r20[3]; if ($studij != $stari_studij || $semestar != $stari_semestar) { $naziv_studija = $r20[4]; print "<tr><td colspan='3'><b>{$naziv_studija}, {$semestar} semestar</b></td></tr>\n"; $stari_studij = $studij; $stari_semestar = $semestar; } print "<tr><td>{$naziv_predmeta}</td>\n"; $bs = $broj_studenata[$predmet]; // Kraće pisanje $q40 = myquery("select id from anketa_rezultat where anketa={$anketa} and zavrsena='Y' and predmet={$r20['0']}"); $suma_ocjena = $br_ocjena = 0; while ($r40 = mysql_fetch_row($q40)) { $q50 = myquery("select izbor_id from anketa_odgovor_rank where rezultat={$r40['0']} and pitanje={$the_pitanje}"); if (mysql_num_rows($q50) > 0) { $suma_ocjena += mysql_result($q50, 0, 0); $br_ocjena++; } } if ($br_ocjena > 0) { $prosjek = round($suma_ocjena / $br_ocjena, 2); $suma_suma_ocjena += $suma_ocjena / $br_ocjena; } else { $prosjek = 0; } print "<td>{$prosjek}</td><td>{$br_ocjena} (" . procenat($br_ocjena, $bs) . ")</td>\n"; print "</tr>\n"; $suma_uradjenih += $br_ocjena; $suma_bs += $bs; $br_predmeta++; } print "<tr><td colspan='3'><b>UKUPNO:</b></td></tr>\n"; print "<tr><td> </td><td>" . round($suma_suma_ocjena / $br_predmeta, 2) . "</td><td>{$suma_uradjenih} (" . procenat($suma_uradjenih, $suma_bs) . ")</td></tr>\n"; print "</table>\n"; return; } // if ($_REQUEST['tip'] == "sveukupna") // naziv predmeta $q10 = myquery("select p.naziv,pk.akademska_godina,p.id from predmet as p, ponudakursa as pk where pk.predmet=p.id and p.id={$predmet} and pk.akademska_godina={$ag}; "); $naziv_predmeta = mysql_result($q10, 0, 0); // provjera da li je dati profesor zadužen na predmetu za koji želi pogledat izvještaj if (!$user_siteadmin && !$user_studentska) { $q20 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q20) == 0) { zamgerlog("nastavnik/izvjestaj_anketa privilegije", 3); zamgerlog2("privilegije"); biguglyerror("Nemate pravo pregledati ovaj izvještaj!"); return; } } // naziv akademske godine $q30 = myquery("select naziv from akademska_godina where id={$ag}"); $naziv_ak_god = mysql_result($q30, 0, 0); // da li postoji anketa? if ($anketa > 0) { $q40 = myquery("select id, aktivna from anketa_anketa where akademska_godina= {$ag} and id={$anketa}"); } else { $q40 = myquery("select aa.id, aa.aktivna from anketa_anketa as aa where aa.akademska_godina={$ag} and (select count(*) from anketa_rezultat as ar where ar.anketa=aa.id and ar.predmet={$predmet})>0 order by id desc"); // prikaži anketu koju je neko popunjavao if (mysql_num_rows($q40) < 1) { $q40 = myquery("select id, aktivna from anketa_anketa where akademska_godina={$ag}"); } } if (mysql_num_rows($q40) == 0) { biguglyerror("Za datu akademsku godinu nije kreirana anketa!"); return; } $anketa = mysql_result($q40, 0, 0); $aktivna = mysql_result($q40, 0, 1); if (!$user_siteadmin && !$user_studentska && $aktivna == 1) { ?> <h2>Pristup rezultatima ankete nije moguć</h2> <p>Odlukom uprave <?php echo $conf_skr_naziv_institucije_genitiv; ?> , nastavni ansambl ne može pristupiti rezultatima ankete do isteka određenog roka. Za dodatne informacije predlažemo da kontaktirate službe <?php echo $conf_skr_naziv_institucije_genitiv; ?> </p> <?php return; } if ($_REQUEST['komentar'] == "da") { // --------------------------------------------- IZVJESTAJ ZA KOMENTARE --------------------------------------------- $limit = 5; // broj kometara prikazanih po stranici $offset = intval($_REQUEST["offset"]); $q50 = myquery("select count(*) from anketa_rezultat where predmet={$predmet} and anketa = {$anketa} AND zavrsena='Y'"); $broj_anketa = mysql_result($q50, 0, 0); ?> <center> <h2>Prikaz svih komentara za predmet <?php echo $naziv_predmeta; ?> za akademsku godinu <?php echo $naziv_ak_god; ?> </h2> <h3>Broj studenata koji su pristupili anketi je: <?php echo $broj_anketa; ?> </h3> <?php // pokupimo sve komentare za dati predmet $q60 = myquery("SELECT count(*) FROM anketa_odgovor_text WHERE odgovor<>'' and rezultat IN (SELECT id FROM anketa_rezultat WHERE predmet={$predmet} and anketa={$anketa} AND zavrsena='Y')"); $broj_odgovora = mysql_result($q60, 0, 0); $q61 = myquery(" SELECT odgovor FROM anketa_odgovor_text WHERE odgovor<>'' and rezultat IN (SELECT id FROM anketa_rezultat WHERE predmet ={$predmet} and anketa={$anketa}) limit {$offset}, {$limit}"); if ($broj_odgovora == 0) { print "Nema rezultata!"; } else { if ($broj_odgovora > $limit) { $donja_granica = $offset + 1; $gornja_granica = $offset + 5; if ($gornja_granica > $broj_odgovora) { $gornja_granica = $broj_odgovora; } print "Prikazujem rezultate {$donja_granica}-{$gornja_granica} od {$broj_odgovora}. Stranica: "; for ($i = 0; $i < $broj_odgovora; $i += $limit) { $br = intval($i / $limit) + 1; if ($i == $offset) { print "<b>{$br}</b> "; } else { print "<a href=\"?sta=izvjestaj/anketa&predmet={$predmet}&ag={$ag}&komentar=da&offset={$i}\">{$br}</a> "; } } print "<br/>"; } } ?> <table width="650px" > <tr> <td bgcolor="#6699CC" height="10"> </td> </tr> <?php $i = 0; while ($r61 = mysql_fetch_row($q61)) { $komentar = str_replace("\n", "<br/>\n", $r61[0]); ?> <tr> <td><hr/></td> </tr> <tr> <td><?php echo $komentar; ?> </td> </tr> <?php $i++; } ?> </table> </center> <?php } else { if ($_REQUEST['rank'] == "da") { print "<center>"; print "<h2>Statistika za predmet {$naziv_predmeta} za akademsku godinu {$naziv_ak_god}</h2>\n"; $q100 = myquery("select count(*) from anketa_rezultat where predmet={$predmet} and anketa = {$anketa} AND zavrsena='Y'"); $broj_anketa = mysql_result($q100, 0, 0); print "<h3> Broj studenata koji su pristupili anketi je : {$broj_anketa} </h3>"; // broj rank pitanja $q110 = myquery("SELECT id FROM anketa_pitanje WHERE anketa ={$anketa} and tip_pitanja =1"); $i = 0; while ($r110 = mysql_fetch_row($q110)) { $j = $i + 1; $q120 = myquery("SELECT avg(izbor_id), count(izbor_id) FROM anketa_odgovor_rank WHERE rezultat IN (SELECT id FROM anketa_rezultat WHERE predmet={$predmet} and anketa={$anketa} AND zavrsena='Y') AND pitanje = {$r110['0']}"); $prosjek[$i] = mysql_result($q120, 0, 0); $broj_odgovora[$i] = mysql_result($q120, 0, 1); $i++; } // kupimo pitanja $q130 = 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 ={$anketa} and p.tip_pitanja=1"); ?> <table width="800px"> <tr> <td bgcolor="#6699CC"> Pitanje</td><td bgcolor="#6699CC" width='350px'> Prosjek odgovora</td> </tr> <tr> <td colspan="2"><hr/></td> </tr> <tr> <td> </td><td bgcolor="#FF0000" width='350px'> MAX </td> </tr> <?php $i = 0; while ($r130 = mysql_fetch_row($q130)) { $tekst = $r130[1]; $procenat = $prosjek[$i] / 5 * 100; ?> <tr height='35'> <td><?php echo $i + 1; ?> . <?php echo $tekst; ?> <br><font color="#999999"><small>(<?php echo $broj_odgovora[$i]; ?> odgovora)</small></font></td> <td> <table border='0' width='350px'> <tr> <td height='30' width='<?php echo $procenat; ?> %' bgcolor="#CCCCFF"> <?php echo round($prosjek[$i], 2); ?> </td> <td width='<?php echo 100 - $procenat; ?> %'> </td> </tr></table> </td> </tr> <?php $i++; } $prosjek = array_sum($prosjek) / count($prosjek); // PITANJA TIPA IZBOR //kupimo pitanja $q200 = 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 ={$anketa} and (p.tip_pitanja=3 or p.tip_pitanja=4)"); if (mysql_num_rows($q200) > 0) { ?> <table width="800px" > <tr> <td bgcolor="#6699CC"> Pitanje </td> <td bgcolor="#6699CC" width='350px'> Odgovori </td> </tr> <tr> <td colspan="2"> <hr/> </td> </tr> <tr > <td > </td> <td bgcolor="#FF0000" width='350px'> MAX </td> </tr> <?php $i = 0; while ($r200 = mysql_fetch_row($q200)) { $id_pitanja = $r200[0]; $tekst = $r200[1]; $ispis_odgovori = ""; $q210 = myquery("select ip.id, ip.izbor, ip.dopisani_odgovor, count(oi.rezultat) from anketa_izbori_pitanja as ip, anketa_odgovor_izbori as oi where ip.pitanje={$id_pitanja} and oi.pitanje={$id_pitanja} and oi.izbor_id=ip.id group by ip.id"); while ($r210 = mysql_fetch_row($q210)) { $ispis_odgovori .= $r210[1] . " - " . $r210[3] . " (" . round($r210[3] / $broj_anketa, 4) * 100 . "%)<br>\n"; if ($r210[2] == 1) { $q220 = myquery("select odgovor from anketa_odgovor_dopisani where pitanje={$id_pitanja}"); if (mysql_num_rows($q220) == 0) { continue; } $ispis_odgovori .= "<font color=\"#BBBBBB\">"; while ($r220 = mysql_fetch_row($q220)) { $ispis_odgovori .= """ . $r220[0] . "" "; } $ispis_odgovori .= "</font><br>\n"; } } $q230 = myquery("select count(distinct rezultat) from anketa_odgovor_izbori where pitanje={$id_pitanja}"); $q240 = myquery("select count(*) from anketa_odgovor_izbori where pitanje={$id_pitanja} and izbor_id=0"); $neodg = $broj_anketa - mysql_result($q230, 0, 0) + mysql_result($q240, 0, 0); $ispis_odgovori .= "<i>neodgovoreno: {$neodg} (" . round($neodg / $broj_anketa, 4) * 100 . "%)</i>"; ?> <tr height='35'> <td><?php echo $i + 1; ?> . <?php echo $tekst; ?> </td> <td width="100"><?php echo $ispis_odgovori; ?> </td> </tr> <tr><td colspan="2"><hr></td></tr> <?php $i++; } } // mysql_num_rows($result202) ?> <tr> <td colspan="2"> <hr/> </td> </tr> <!--tr > <td align="right"> Prosjek predmeta : </td> <td width='350px'> <strong><?php echo round($prosjek, 2); ?> </strong> </td> </tr--> </table> </center> <?php } } }
function studentska_izvjestaji() { global $userid, $user_siteadmin, $user_studentska; // Provjera privilegija if (!$user_studentska && !$user_siteadmin) { zamgerlog("nije studentska", 3); // 3: error zamgerlog2("nije studentska"); // 3: error biguglyerror("Pristup nije dozvoljen."); return; } // Kada se klikne na generisanje izvještaja, biće zasivljen ekran i prikazan prozor koji // obavjestava da je u toku generisanje izvještaja. // Razlog: Nihada (among else) ima običaj da klika na link sve dok se stranica ne otvori, // što ne samo da nema efekta nego i opterećuje server ?> <p><h3>Studentska služba - Izvještaji</h3></p> <script language="JavaScript"> var mywidth,myheight; if (window.innerWidth && window.innerHeight) { mywidth=window.innerWidth; myheight=window.innerHeight; } else if (document.body.clientWidth && document.body.clientHeight) { mywidth=document.body.clientWidth; myheight=document.body.clientHeight; } function izvjestaj() { var n = ""; // Stupid hack for stupid specification document.getElementById('prekrivac').style.width = n.concat(mywidth, "px"); document.getElementById('prekrivac').style.height = n.concat(myheight, "px"); document.getElementById('prekrivac').style.display="inline"; document.getElementById('obavijest').style.top = n.concat(myheight/2-25, "px"); document.getElementById('obavijest').style.left = n.concat(mywidth/2-150, "px"); document.getElementById('obavijest').style.display="inline"; //alert(n); return true; } </script> <img src="images/blur.gif" width="1" height="1" border="0"> <!-- preloading --> <div id="prekrivac" name="prekrivac" style="display:none; position: absolute; left: 0px; top: 55px; background-image:url('images/blur.gif'); background-repeat:repeat;"> </div> <div id="obavijest" name="obavijest" style="display:none; position: absolute; left: 0px; top: 55px"> <table width="300" height="50" border="1" cellspacing="0" cellpadding="0"><tr><td align="center" valign="center" width="50" bgcolor="#DDDDDD"><img src="images/Animated-Hourglass.gif" width="38" height="38"></td><td align="center" valign="center" bgcolor="#DDDDDD">U toku je kreiranje izvještaja<br>Molimo sačekajte</td></tr></table> </div> <?php // Razne forme za pojedinačne izvještaje if ($_REQUEST['akcija'] == "po_prosjeku") { ?> <h3>Spiskovi studenata po prosječnoj ocjeni</h3> <form action="index.php" method="GET" name="studijForm" onsubmit="return izvjestaj();"> <input type="hidden" name="sta" value="izvjestaj/genijalci"> <table border="0"> <tr><td>Akademska godina:</td><td><select name="akademska_godina"> <?php $q500 = myquery("select id,naziv,aktuelna from akademska_godina order by naziv desc"); while ($r500 = mysql_fetch_row($q500)) { print "<option value=\"{$r500['0']}\""; if ($r500[2] == 1) { print " selected"; } print ">{$r500['1']}</option>\n"; } ?> </select></td></tr> <tr><td>Studij:</td><td><select name="studij"> <option value="-1">Svi studiji (BSc)</option> <option value="-2">Svi studiji (MSc)</option> <option value="-3">Svi studiji (MSc bez BSca)</option> <?php $q505 = myquery("select id, naziv from studij where moguc_upis=1 order by naziv"); while ($r505 = mysql_fetch_row($q505)) { print "<option value=\"{$r505['0']}\">{$r505['1']}</option>\n"; } ?> </select></td></tr> <tr><td>Godina:</td><td><input type="text" name="godina_studija" size="5" value="1"></td></tr> <tr><td>Limit prosjeka:</td><td><input type="text" name="limit_prosjek" value="8.0"></td></tr> <tr><td>Maksimalan broj<br>nepoloženih predmeta:</td><td><input type="text" name="limit_predmet" value="1"></td></tr> <tr><td colspan="2"><input type="radio" name="samo_tekuca_gs" value="da" checked> Prosjek samo za odabranu godinu studija<br> <input type="radio" name="samo_tekuca_gs" value="ne"> Prosjek za odabrani studij</td></tr> </table> <input type="submit" value=" Prikaži "></form> <?php } if ($_REQUEST['akcija'] == "po_nepolozenim") { ?> <h3>Spiskovi studenata po broju nepoloženih predmeta (GRANIČNI SLUČAJEVI)</h3> <form action="index.php" method="GET" name="studijForm" onsubmit="return izvjestaj();"> <input type="hidden" name="sta" value="izvjestaj/granicni"> <input type="hidden" name="varijanta" value="1"> <table border="0"> <tr><td>Akademska godina:</td><td><select name="akademska_godina"> <?php $q500 = myquery("select id,naziv,aktuelna from akademska_godina order by naziv desc"); while ($r500 = mysql_fetch_row($q500)) { print "<option value=\"{$r500['0']}\""; if ($r500[2] == 1) { print " selected"; } print ">{$r500['1']}</option>\n"; } ?> </select></td></tr> <tr> <td colspan="2"> <br><input type="radio" name="studij_godina" value="svi" onclick="javascript:document.getElementById('studij').disabled=true; document.getElementById('godina_studija').disabled=true;" checked> Svi studiji i godine<br> <input type="radio" name="studij_godina" value="izbor" onclick="javascript:document.getElementById('studij').disabled=false; document.getElementById('godina_studija').disabled=false;"> Izabrani studij i godina:<br> Studij: <select name="studij" id="studij" disabled> <option value="-1">Svi studiji (BSc)</option> <option value="-2">Svi studiji (MSc)</option> <?php $q505 = myquery("select id, naziv from studij where moguc_upis=1 order by naziv"); while ($r505 = mysql_fetch_row($q505)) { print "<option value=\"{$r505['0']}\">{$r505['1']}</option>\n"; } ?> </select> Godina: <input type="text" name="godina_studija" id="godina_studija" size="5" value="1" disabled><br> </td></tr> <tr><td colspan="2"> Broj nepoloženih ispita:<br> <br><input type="radio" name="vrste_granicnih" value="sve" onclick="javascript:document.getElementById('predmeta').disabled=true; document.getElementById('parcijalnih').disabled=true; document.getElementById('douslova').disabled=true;" checked> Sve vrste graničnih slučajeva<br> <input type="radio" name="vrste_granicnih" value="izbor" onclick="javascript:document.getElementById('predmeta').disabled=false; document.getElementById('parcijalnih').disabled=false; document.getElementById('douslova').disabled=false;"> Samo studenti koji imaju nepoloženih:<br> <input type="text" name="predmeta" id="predmeta" size="5" value="1" disabled> čitavih predmeta i <input type="text" name="parcijalnih" id="parcijalnih" size="5" value="1" disabled> parcijalnih ispita <input type="checkbox" name="douslova" id="douslova" disabled> Do uslova<br> </td></tr> <tr><td>Prikaži podatke:</td><td> <input type="radio" name="prikaz" value="sumarno" checked> Sumarno <input type="radio" name="prikaz" value="po_predmetu"> Grupisano po predmetu <input type="radio" name="prikaz" value="po_studiju"> Grupisano po studiju </td></tr> </table> <br> <br> <input type="submit" value=" Prikaži "></form> <?php } if ($_REQUEST['akcija'] == "prolaznost") { ?> <p><h3>Prolaznost studenata na predmetima</h3></p> <script type="text/javascript"> function setCheckedValue(radioObj, newValue) { if(!radioObj) return; var radioLength = radioObj.length; if(radioLength == undefined) { radioObj.checked = (radioObj.value == newValue.toString()); return; } for(var i = 0; i < radioLength; i++) { radioObj[i].checked = false; if(radioObj[i].value == newValue.toString()) { radioObj[i].checked = true; } } } </script> <table width="550" border="0"><tr><td align="left"> <form action="index.php" method="GET" name="studijForm" onsubmit="return izvjestaj();"> <input type="hidden" name="sta" value="izvjestaj/prolaznost"> Akademska godina: <select name="_lv_column_akademska_godina"> <?php $q500 = myquery("select id,naziv,aktuelna from akademska_godina order by naziv desc"); while ($r500 = mysql_fetch_row($q500)) { print "<option value=\"{$r500['0']}\""; if ($r500[2] == 1) { print " selected"; } print ">{$r500['1']}</option>\n"; } ?> </select><br/><br/> Studij: <select name="_lv_column_studij"><option value="-1">Prva godina studija</option><?php $q505 = myquery("select id, naziv from studij where moguc_upis=1 order by naziv"); while ($r505 = mysql_fetch_row($q505)) { print "<option value=\"{$r505['0']}\">{$r505['1']}</option>\n"; } ?> </select><br/><br/> <input type="radio" name="period" value="0" CHECKED> Semestar: <input type="text" name="semestar" size="5" onclick="setCheckedValue(document.forms['studijForm'].elements['period'], '0');"> <input type="radio" name="period" value="1"> Cijela godina: <input type="text" name="godina" size="5" onclick="setCheckedValue(document.forms['studijForm'].elements['period'], '1');"><br/><br/> Statistika za:<br/> <input type="radio" name="ispit" value="1" CHECKED> I parcijalni <input type="radio" name="ispit" value="2"> II parcijalni <input type="radio" name="ispit" value="3"> Ukupan broj bodova <input type="radio" name="ispit" value="4"> Konačna ocjena <input type="radio" name="ispit" value="5"> Uslov <br/><br/> Studenti:<br/> <input type="radio" name="cista_gen" value="0" CHECKED> Svi studenti (uključujući ponovce i one koji su prenijeli predmete)<br/> <input type="radio" name="cista_gen" value="1"> Svi koji slušaju godinu (uključujući ponovce, ali bez prenijetih predmeta)<br/> <input type="radio" name="cista_gen" value="2"> Bez ponovaca<br/> <input type="radio" name="cista_gen" value="3"> Čista generacija (studenti koji nemaju ponovljenih godina ni prenesenih predmeta)<br/><br/> <input type="checkbox" name="studenti" value="1"> Prikaži podatke za svakog pojedinačnog studenta<br/> NAPOMENA: Zbog kompleksnosti izvještaja, izračunavanje podataka za pojedinačne studente može trajati do par minuta.<br/><br/> Sortiraj spisak po: <ul> <input type="radio" name="sortiranje" value="0" CHECKED> Prezimenu<br/> <input type="radio" name="sortiranje" value="1"> Broju položenih ispita i bodova<br/> <input type="radio" name="sortiranje" value="2"> Broju indeksa</ul> <input type="submit" value=" Prikaži "></form> <?php } if ($_REQUEST['akcija'] == "pregled") { ?> <p><h3>Pregled broja upisanih studenata u aktuelnoj akademskoj godini</h3></p> <form action="index.php" method="GET" name="studijForm" onsubmit="return izvjestaj();"> Tip izvještaja: <select name="sta"> <option value="izvjestaj/pregled">Po tipu studiranja</option> <option value="izvjestaj/pregled_nacin">Po tipu i načinu studiranja</option> <option value="izvjestaj/po_kantonima">Po kantonima</option> </select><br><br> Akademska godina: <select name="akademska_godina"> <?php $q500 = myquery("select id,naziv,aktuelna from akademska_godina order by naziv desc"); while ($r500 = mysql_fetch_row($q500)) { print "<option value=\"{$r500['0']}\""; if ($r500[2] == 1) { print " selected"; } print ">{$r500['1']}</option>\n"; } ?> </select><br/><br/> <input type="submit" value=" Prikaži "></form> <?php } if ($_REQUEST['akcija'] == "ugovoroucenju") { ?> <p><h3>Detaljan broj studenata po predmetu u aktuelnoj akademskoj godini</h3></p> <p>Ukoliko upis u akademsku godinu nije završen, prikazuje se procjena broja studenata na osnovu popunjenih Ugovora o učenju i Zahtjeva za koliziju. Ova procjena je data pod sljedećim pretpostavkama: <ul><li>da se nijedan student neće ispisati sa fakulteta</li> <li>da će svi zahtjevi za promjenu odsjeka biti odobreni</li> <li>da će student koji u septembru položi pismeni ispit koji ranije nije položio vjerovatno položiti i završni ispit</li></ul> <form action="index.php" method="GET" name="studijForm" onsubmit="return izvjestaj();"> <input type="hidden" name="sta" value="izvjestaj/ugovoroucenju"> Akademska godina: <select name="akademska_godina"> <?php $q500 = myquery("select id,naziv,aktuelna from akademska_godina order by naziv desc"); while ($r500 = mysql_fetch_row($q500)) { print "<option value=\"{$r500['0']}\""; if ($r500[2] == 1) { print " selected"; } print ">{$r500['1']}</option>\n"; } ?> </select><br/><br/> <input type="submit" value=" Prikaži "></form> <?php } if ($_REQUEST['akcija'] == "uspjesnost") { ?> <h3>Uspješnost studenata i prosječno trajanje studija</h3> <form action="index.php" method="GET" name="studijForm" onsubmit="return izvjestaj();"> <input type="hidden" name="sta" value="izvjestaj/uspjesnost"> <p>Izaberite studij:<br> <?php echo db_dropdown("studij"); ?> <br/><br/> <input type="submit" value=" Prikaži "></form> <?php } if ($_REQUEST['akcija'] == "svi_studenti") { ?> <h3>Spisak svih studenata abecedno</h3> <form action="index.php" method="GET" name="studijForm" onsubmit="return izvjestaj();"> <input type="hidden" name="sta" value="izvjestaj/svi_studenti"> <p><input type="checkbox" name="ime_oca">Ime oca<br /> <input type="checkbox" name="jmbg">JMBG<br /> <input type="checkbox" name="nacin_studiranja">Način studiranja (redovni, samofinansirajući...)<br /> <input type="checkbox" name="vanredni">Uključi i vanredne studente<br /> <input type="checkbox" name="login">Korisničko ime<br /><br /> <input type="checkbox" name="tabelarno">Prikaži u obliku tabele umjesto numerisane liste<br /> Akademska godina: <select name="ag"> <?php $q506 = myquery("select id, naziv, aktuelna from akademska_godina order by naziv"); while ($r506 = mysql_fetch_row($q506)) { print "<option value=\"{$r506['0']}\""; if ($r506[2] == 1) { print " selected"; } print ">{$r506['1']}</option>\n"; } ?> </select><br /> Studij: <select name="studij"> <option value="0">Svi studiji</option> <option value="-1">Prvi ciklus</option> <option value="-2">Drugi ciklus</option> <?php $q505 = myquery("select id, naziv from studij order by naziv"); //TODO neke virtualne studije izostaviti? while ($r505 = mysql_fetch_row($q505)) { print "<option value=\"{$r505['0']}\">{$r505['1']}</option>\n"; } ?> </select><br /> Godina studija: <select name="godina"><option value="0">Sve godine</option><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><br /> <input type="checkbox" name="prvi_put">Prvi put (bez ponovaca)<br /> <input type="submit" value=" Prikaži "></form> <?php } // SPISAK IZVJEŠTAJA ?> <hr/> <p>Najčešći izvještaji: <ul> <li><a href="?sta=studentska/izvjestaji&akcija=prolaznost">Prolaznost studenata po predmetima</a></li> <li><a href="?sta=izvjestaj/prolaznosttab" onclick="return izvjestaj();">Tabelarni pregled prolaznosti (sumarno za sve godine)</a></li> <li><a href="?sta=studentska/izvjestaji&akcija=pregled">Pregled broja upisanih studenata u aktuelnoj akademskoj godini</a></li> <li><a href="?sta=izvjestaj/ugovoroucenju" onclick="return izvjestaj();">Detaljan broj studenata po predmetu u aktuelnoj akademskoj godini i/ili Procjena za sljedeću akademsku godinu</a> - <a href="?sta=studentska/izvjestaji&akcija=ugovoroucenju">ranije akademske godine</a></li> <li><a href="?sta=studentska/izvjestaji&akcija=po_nepolozenim">Spisak studenata po broju nepoloženih predmeta (GRANIČNI SLUČAJEVI)</a></li> <li><a href="?sta=studentska/izvjestaji&akcija=po_prosjeku">Spisak studenata po prosječnoj ocjeni</a></li> <li><a href="?sta=studentska/izvjestaji&akcija=svi_studenti">Spisak svih studenata abecedno</a></li> <li><a href="?sta=studentska/izvjestaji&akcija=uspjesnost">Uspješnost studenata i prosječno trajanje studija</a></li> </ul></p> <hr/> <?php }
} else { if ($_REQUEST['action'] == "setProgramStatus") { $id = intval($_REQUEST['program']); $q = myquery("SELECT zadaca, redni_broj, student, bodova, izvjestaj_skripte, komentar, filename FROM zadatak WHERE id={$id}"); if (mysql_num_rows($q) < 1) { $result['success'] = "false"; $result['code'] = "ERR007"; $result["message"] = "Unknown program id {$id}"; } else { $r = mysql_fetch_row($q); $zadaca = $r[0]; $zadatak = $r[1]; $student = $r[2]; $privilegija = nastavnik_pravo_pristupa($zadaca); zamgerlog("autotestiran student u{$student} z{$zadaca} zadatak {$zadatak}", 2); zamgerlog2("autotestiran student", intval($student), intval($zadaca), intval($zadatak)); if (!$user_siteadmin && !$user_autotester && ($privilegija === false || $privilegija == "asistent" && !nastavnik_ogranicenje($zadaca, $student))) { $result['success'] = "false"; $result['code'] = "ERR003"; $result["message"] = "Access denied"; } else { $q = myquery("SELECT zadaca, redni_broj, student, bodova, izvjestaj_skripte, komentar, filename FROM zadatak WHERE zadaca={$zadaca} AND redni_broj={$zadatak} AND student={$student} ORDER BY id DESC LIMIT 1"); $r = mysql_fetch_row($q); $status = intval($_REQUEST['status']); $izvjestaj_skripte = mysql_real_escape_string($r[4]); if ($status == 6) { $status = 3; $izvjestaj_skripte .= "\nNije pronađena nijedna datoteka sa kodom u odabranom programskom jeziku."; } $q2 = myquery("INSERT INTO zadatak SET zadaca={$zadaca}, redni_broj={$zadatak}, student={$student}, status={$status}, bodova={$r['3']}, izvjestaj_skripte='{$izvjestaj_skripte}', vrijeme=NOW(), komentar='" . mysql_real_escape_string($r[5]) . "', filename='" . mysql_real_escape_string($r[6]) . "', userid={$userid}"); $q3 = myquery("DELETE FROM buildservice_tracking WHERE zadatak={$id}");