function ispis_studenta_sa_predmeta($student, $predmet, $ag) { // Ovo bi se dalo optimizovati global $conf_files_path; // Odredjujem ponudukursa sto je potrebno za naredna dva upita $q225 = myquery("select sp.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); if (mysql_num_rows($q225) == 0) { biguglyerror("Student nije upisan na odabrani predmet"); return; } $ponudakursa = mysql_result($q225, 0, 0); // Odredjivanje labgrupa ciji je student eventualno clan $q40 = myquery("select sl.labgrupa from student_labgrupa as sl,labgrupa as l where sl.student={$student} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}"); while ($r40 = mysql_fetch_row($q40)) { ispis_studenta_sa_labgrupe($student, $r40[0]); } // Ocjene na ispitima $q50 = myquery("select id from ispit where predmet={$predmet} and akademska_godina={$ag}"); while ($r50 = mysql_fetch_row($q50)) { $q60 = myquery("delete from ispitocjene where student={$student} and ispit={$r50['0']}"); } // Konacne ocjene $q70 = myquery("delete from konacna_ocjena where student={$student} and predmet={$predmet} and akademska_godina={$ag}"); // Ima li smisla brisati konacnu ocjenu kod ispisa sa predmeta!? // Ima, zato što bi u suprotnom student imao položen predmet koji nikada nije slušao // Zadace $lokacijazadaca = "{$conf_files_path}/zadace/{$predmet}-{$ag}/{$student}/"; $q90 = myquery("select z.id, pj.ekstenzija, z.attachment from zadaca as z, programskijezik as pj where z.predmet={$predmet} and z.akademska_godina={$ag} and z.programskijezik=pj.id"); while ($r90 = mysql_fetch_row($q90)) { $q100 = myquery("select id,redni_broj,filename from zadatak where student={$student} and zadaca={$r90['0']}"); while ($r100 = mysql_fetch_row($q100)) { // Fizicko brisanje zadace if ($r90[2] == 1) { //attachment $the_file = "{$lokacijazadaca}{$r90['0']}/{$r100['1']}{$r90['2']}"; } else { $the_file = "{$lokacijazadaca}{$r90['0']}/{$r100['2']}"; } if (file_exists($the_file)) { unlink($the_file); } $q110 = myquery("delete from zadatakdiff where zadatak={$r100['0']}"); } $q120 = myquery("delete from zadatak where student={$student} and zadaca={$r90['0']}"); } // Brisanje komponenti $q230 = myquery("delete from komponentebodovi where student={$student} and predmet={$ponudakursa}"); // Ispis sa predmeta $q240 = myquery("delete from student_predmet where student={$student} and predmet={$ponudakursa}"); // zamgerlog("studenta u$student ispisan sa predmeta pp$predmet", 4); // nivo 4: audit // Logging treba raditi tamo gdje se funkcija poziva! }
function nastavnik_grupe() { 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) == "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; ?> - Grupe</h3></p> <?php ############### # Akcije ############### // Dodaj grupu if ($_POST['akcija'] == "nova_grupa" && check_csrf_token()) { $ime = my_escape($_POST['ime']); $tip = my_escape($_POST['tip']); $q2 = myquery("insert into labgrupa set naziv='{$ime}', predmet={$predmet}, tip='{$tip}', akademska_godina={$ag}, virtualna=0"); zamgerlog2("kreirana labgrupa", mysql_insert_id(), $predmet, $ag, $ime); zamgerlog("dodana nova labgrupa '{$ime}' (predmet pp{$predmet} godina ag{$ag})", 4); // nivo 4: audit } // Obrisi grupu if ($_POST['akcija'] == "obrisi_grupu" && check_csrf_token()) { $grupaid = intval($_POST['grupaid']); // Provjera ispravnosti podataka $q29 = myquery("select predmet, akademska_godina from labgrupa where id={$grupaid}"); if (mysql_num_rows($q29) < 1) { zamgerlog("nepostojeca labgrupa {$grupaid}", 3); zamgerlog2("nepostojeca labgrupa (brisanje)", $grupaid); niceerror("Pokušavate obrisati labgrupu koja ne postoji"); return; } if (mysql_result($q29, 0, 0) != $predmet || mysql_result($q29, 0, 1) != $ag) { zamgerlog("labgrupa g{$grupaid} nije sa predmeta pp{$predmet} (ag{$ag})", 3); zamgerlog2("predmet i labgrupa se ne poklapaju (brisanje)", $predmet, $ag, $grupaid); niceerror("Predmet se ne poklapa"); return; } // ispis svih studenata iz labgrupe $q30 = myquery("select student from student_labgrupa where labgrupa={$grupaid}"); while ($r30 = mysql_fetch_row($q30)) { ispis_studenta_sa_labgrupe($r30[0], $grupaid); zamgerlog2("student ispisan sa grupe (brisanje)", intval($r30[0]), $grupaid); } // Sada mozemo obrisati casove jer je funkcija ispis_studenta... obrisala prisustvo $q35 = myquery("delete from cas where labgrupa={$grupaid}"); // Konacno brišem grupu $q40 = myquery("delete from labgrupa where id={$grupaid}"); zamgerlog("obrisana labgrupa {$grupaid} (predmet pp{$predmet})", 4); // nivo 4: audit zamgerlog2("obrisana labgrupa", intval($predmet), $ag, $grupaid); } // Promjena imena grupe if ($_POST['akcija'] == "preimenuj_grupu" && check_csrf_token()) { $grupaid = intval($_POST['grupaid']); $ime = my_escape($_POST['ime']); $tip = my_escape($_POST['tip']); // Provjera ispravnosti podataka $q29 = myquery("select predmet, akademska_godina from labgrupa where id={$grupaid}"); if (mysql_num_rows($q29) < 1) { zamgerlog("nepostojeca labgrupa {$grupaid}", 3); zamgerlog2("nepostojeca labgrupa (preimenovanje)", $grupaid); niceerror("Pokušavate obrisati labgrupu koja ne postoji"); return; } if (mysql_result($q29, 0, 0) != $predmet || mysql_result($q29, 0, 1) != $ag) { zamgerlog("labgrupa g{$grupaid} nije sa predmeta pp{$predmet} (ag{$ag})", 3); zamgerlog2("predmet i labgrupa se ne poklapaju (preimenovanje)", $predmet, $ag, $grupaid); niceerror("Predmet se ne poklapa"); return; } $q50 = myquery("update labgrupa set naziv='{$ime}', tip='{$tip}' where id={$grupaid}"); // Grupa treba ostati otvorena: $_GET['akcija'] = "studenti_grupa"; $_GET['grupaid'] = $grupaid; zamgerlog("preimenovana labgrupa {$grupaid} u '{$ime}' (predmet pp{$predmet} godina ag{$ag})", 2); // nivo 2: edit zamgerlog2("preimenovana labgrupa", $grupaid, 0, 0, $ime); } // Kopiraj grupe if ($_POST['akcija'] == "kopiraj_grupe" && check_csrf_token()) { $kopiraj = intval($_POST['kopiraj']); if ($kopiraj == $predmet) { zamgerlog("kopiranje sa istog predmeta pp{$predmet}", 3); zamgerlog2("kopiranje grupa sa istog predmeta", $predmet, $ag); niceerror("Ne možete kopirati grupe sa istog predmeta."); return; } // Spisak labgrupa na odabranom predmetu $q60 = myquery("select id, naziv, tip from labgrupa where predmet={$kopiraj} and akademska_godina={$ag} and virtualna=0"); if (mysql_num_rows($q60) == 0) { zamgerlog("kopiranje sa predmeta pp{$kopiraj} na kojem nema grupa", 3); zamgerlog2("kopiranje sa predmeta na kojem nema grupa", $kopiraj, $ag, $predmet); niceerror("Na odabranom predmetu nije definisana nijedna grupa."); } while ($r60 = mysql_fetch_row($q60)) { $staragrupa = $r60[0]; $imegrupe = $r60[1]; $tipgrupe = $r60[2]; // Da li već postoji grupa sa tim imenom? $q70 = myquery("select id from labgrupa where predmet={$predmet} and naziv='{$imegrupe}' and akademska_godina={$ag}"); if (mysql_num_rows($q70) == 0) { $q80 = myquery("insert into labgrupa set naziv='{$imegrupe}', predmet={$predmet}, akademska_godina={$ag}, tip='{$tipgrupe}'"); $q70 = myquery("select id from labgrupa where predmet={$predmet} and naziv='{$imegrupe}' and akademska_godina={$ag}"); zamgerlog2("kreirana labgrupa (kopiranje)", intval(mysql_result($q70, 0, 0)), $predmet, $ag, $imegrupe); } $novagrupa = mysql_result($q70, 0, 0); // Spisak studenata u grupi koja se kopira $q100 = myquery("select student from student_labgrupa where labgrupa={$staragrupa}"); while ($r100 = mysql_fetch_row($q100)) { $student = $r100[0]; // Da li student uopste slusa ovaj predmet? $q110 = myquery("select o.ime, o.prezime from student_predmet as sp, osoba as o, ponudakursa as pk where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and o.id={$student}"); if (mysql_num_rows($q110) < 1) { // Pošto upit nije vratio ništa, moramo nekako saznati ime i prezime $q120 = myquery("select ime, prezime from osoba where id={$student}"); print "-- Student " . mysql_result($q120, 0, 0) . " " . mysql_result($q120, 0, 1) . " ne sluša ovaj predmet, pa ćemo ga preskočiti.<br/>"; continue; } // Ispis studenta sa svih grupa u kojima je trenutno $q130 = myquery("select sl.labgrupa from student_labgrupa as sl, labgrupa as l where sl.student={$student} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag} and sl.labgrupa!={$novagrupa} and l.virtualna=0"); while ($r130 = mysql_fetch_row($q130)) { ispis_studenta_sa_labgrupe($student, $r130[0]); zamgerlog2("student ispisan sa grupe (kopiranje)", $student, $r130[0]); } // Upis u novu grupu $q140 = myquery("select count(*) from student_labgrupa where student={$student} and labgrupa={$novagrupa}"); if (mysql_result($q140, 0, 0) < 1) { $q150 = myquery("insert into student_labgrupa set labgrupa={$novagrupa}, student={$student}"); zamgerlog2("student upisan u grupu (kopiranje)", intval($student), intval($novagrupa)); //print "Upisujem studenta $student u grupu $novagrupa<br/>"; } } } zamgerlog("prekopirane labgrupe sa predmeta pp{$kopiraj} u pp{$predmet}", 4); zamgerlog2("prekopirane labgrupe", $kopiraj, $ag); } // Masovni unos studenata u grupe if ($_POST['akcija'] == "massinput" && strlen($_POST['nazad']) < 1 && check_csrf_token()) { if ($_POST['fakatradi'] != 1) { $ispis = 1; } else { $ispis = 0; } if ($ispis) { ?> Akcije koje će biti urađene:<br/><br/> <?php echo genform("POST"); ?> <input type="hidden" name="fakatradi" value="1"> <table border="0" cellspacing="1" cellpadding="2"> <!-- FIXME: prebaciti stilove u CSS? --> <thead> <tr bgcolor="#999999"> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Prezime</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Ime</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Akcije</font></td> </tr> </thead> <tbody> <?php } $greska = mass_input($ispis); // Funkcija koja parsira podatke // Cache IDova grupa prema imenu $idovi_grupa = array(); // Spisak studenata $boja1 = "#EEEEEE"; $boja2 = "#DDDDDD"; $boja = $boja1; $bojae = "#FFE3DD"; foreach ($mass_rezultat['ime'] as $student => $ime) { $prezime = $mass_rezultat['prezime'][$student]; // Ispis studenta iz svih grupa $ispisispis = ""; $ispis_grupe = $upis_grupe = array(); $q230 = myquery("select l.id,l.naziv from labgrupa as l, student_labgrupa as sl where sl.student={$student} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag} and l.virtualna=0"); $found = 1; while ($r230 = mysql_fetch_row($q230)) { $ispis_grupe[$r230[0]] = $r230[1]; if (!in_array($r230[1], $mass_rezultat['podatak1'][$student])) { $found = 0; } } if ($found == 1 && mysql_num_rows($q230) > 0) { if ($ispis) { ?> <tr bgcolor="<?php echo $boja; ?> "> <td><?php echo $prezime; ?> </td><td><?php echo $ime; ?> </td> <td>Već upisan u grupu <?php foreach ($ispis_grupe as $gid => $gime) { print "'{$gime}' "; } ?> - preskačem</td> </tr> <?php if ($boja == $boja1) { $boja = $boja2; } else { $boja = $boja1; } } continue; } // spisak grupa u koje treba upisati studenta foreach ($mass_rezultat['podatak1'][$student] as $imegrupe) { $imegrupe = trim($imegrupe); if ($imegrupe == "") { continue; } // Da li grupa postoji u cache-u ? if (array_key_exists($imegrupe, $idovi_grupa)) { $labgrupa = $idovi_grupa[$imegrupe]; // Ne postoji, tražimo u bazi } else { // Da li je ime ispravno? if (!preg_match("/\\w/", $imegrupe)) { ?> <tr bgcolor="<?php echo $bojae; ?> "> <td><?php echo $prezime; ?> </td><td><?php echo $ime; ?> </td> <td>neispravno ime grupe '<?php echo $imegrupe; ?> '</td> </tr> <?php $greska = 1; continue; } // Određujemo ID grupe $q210 = myquery("select id from labgrupa where naziv='{$imegrupe}' and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q210) < 1) { // Grupa ne postoji - kreiramo je if ($ispis) { ?> <tr bgcolor="<?php echo $boja; ?> "> <td colspan="3">Kreiranje nove grupe '<?php echo $imegrupe; ?> '</td> </tr> <?php if ($boja == $boja1) { $boja = $boja2; } else { $boja = $boja1; } } else { $q220 = myquery("insert into labgrupa set naziv='{$imegrupe}', predmet={$predmet}, akademska_godina={$ag}, tip='vjezbe+tutorijali', virtualna=0"); $labgrupa = mysql_insert_id(); zamgerlog2("kreirana labgrupa (masovni unos)", intval($labgrupa), 0, 0, $imegrupe); } } else { $labgrupa = mysql_result($q210, 0, 0); } $idovi_grupa[$imegrupe] = $labgrupa; } // Da li je grupa već jednom spomenuta? foreach ($upis_grupe as $gid => $gime) { if ($gid == $labgrupa) { if ($ispis) { ?> <tr bgcolor="<?php echo $bojae; ?> "> <td><?php echo $prezime; ?> </td><td><?php echo $ime; ?> </td> <td>Grupa '<?php echo $gime; ?> ' je navedena dvaput - greška?</td> </tr> <?php } continue; } } $upis_grupe[$labgrupa] = $imegrupe; } // Obavljam ispisivanje i upisivanje u grupe if ($ispis) { // na ekran ?> <tr bgcolor="<?php echo $boja; ?> "> <td><?php echo $prezime; ?> </td><td><?php echo $ime; ?> </td> <td> <?php foreach ($ispis_grupe as $gid => $gime) { print "Ispis iz grupe '{$gime}'<br />\n"; } foreach ($upis_grupe as $gid => $gime) { print "Upis u grupu '{$gime}'<br />\n"; } print "</td></tr>\n"; if ($boja == $boja1) { $boja = $boja2; } else { $boja = $boja1; } } else { foreach ($ispis_grupe as $gid => $gime) { ispis_studenta_sa_labgrupe($student, $gid); zamgerlog2("student ispisan sa grupe (masovni unos)", $student, $gid); } foreach ($upis_grupe as $gid => $gime) { $q240 = myquery("insert into student_labgrupa set student={$student}, labgrupa={$gid}"); zamgerlog2("student upisan u grupu (masovni unos)", $student, $gid); } } } // Potvrda i Nazad if ($ispis) { if ($greska != 0) { ?> </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>NAPOMENA: Upis studenata na predmet može vršiti samo studentska služba. Ukoliko na spisku nedostaje neki student koji sluša vaš predmet, kontaktirajte službu radi razjašnjenja nesporazuma.</p> <p><input type="submit" name="nazad" value=" Nazad "></p> </form> <?php } else { if (count($mass_rezultat) == 0) { ?> </tbody></table> <p>Niste unijeli nijedan koristan podatak.</p> <p><input type="submit" name="nazad" value=" Nazad "></p> </form> <?php } else { ?> </tbody></table> <p>Potvrdite kreiranje grupa i upis studenata u grupe ili se vratite na prethodni ekran.</p> <p><input type="submit" name="nazad" value=" Nazad "> <input type="submit" value=" Potvrda"></p> </form> <?php } } return; } else { zamgerlog("masovan upis grupa za predmet pp{$predmet}", 4); ?> Masovan upis studenata u grupe je uspješno obavljen. <script language="JavaScript"> location.href='?sta=nastavnik/grupe&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> '; </script> <?php } } ############### # Prikaz grupa ############### ?> <script language="JavaScript"> function upozorenje(grupa) { var a = confirm("Svi studenti će biti ispisani iz ove grupe."); if (a) { document.getElementById('grupaid').value=grupa; document.brisanjegrupe.submit(); } } </script> <?php echo genform("POST", "brisanjegrupe"); ?> <input type="hidden" name="akcija" value="obrisi_grupu"> <input type="hidden" name="grupaid" id="grupaid" value=""></form> Spisak grupa:<br/> <?php $q100 = myquery("select id, naziv, tip from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=0 order by id"); // TODO: koristiti natsort za sortiranje grupa print "<ul>\n"; if (mysql_num_rows($q100) == 0) { print "<li>Nema definisanih grupa</li>\n"; } $tip_selektovan = array(); while ($r100 = mysql_fetch_row($q100)) { $grupa = $r100[0]; $naziv = $r100[1]; if (!preg_match("/\\w/", $naziv)) { print "<li>[Nema imena] - "; } else { print "<li>{$naziv} - "; } $q110 = myquery("select count(*) from student_labgrupa where labgrupa={$grupa}"); $brstud = mysql_result($q110, 0, 0); print "(<a href=\"?sta=nastavnik/grupe&predmet={$predmet}&ag={$ag}&akcija=studenti_grupa&grupaid={$grupa}\">{$brstud} studenata</a>) - "; print "<a href=\"javascript:onclick=upozorenje('{$grupa}')\">Obriši grupu</a></li>"; //print "</li>\n"; if ($_GET['akcija'] == "studenti_grupa" && $_GET['grupaid'] == $grupa) { print "<ul>\n"; $q102 = myquery("select osoba.id,osoba.prezime,osoba.ime from student_labgrupa,osoba where student_labgrupa.student=osoba.id and student_labgrupa.labgrupa={$grupa} order by osoba.prezime,osoba.ime"); while ($r102 = mysql_fetch_row($q102)) { ?> <li><a href="#" onclick="javascript:window.open('?sta=saradnik/izmjena_studenta&student=<?php echo $r102[0]; ?> &predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> ','blah6','width=320,height=320');"><?php print $r102[1] . " " . $r102[2] . "</a></li>\n"; } print "</ul>"; $zapamti_grupu = $naziv; $tip_selektovan[$r100[2]] = " SELECTED"; } } print "</ul>\n"; # Editovanje grupe if ($_GET['akcija'] == "studenti_grupa") { $gg = intval($_GET['grupaid']); ?> <p> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="preimenuj_grupu"> <input type="hidden" name="grupaid" value="<?php echo $gg; ?> "> Promijenite naziv grupe: <input type="text" name="ime" size="20" value="<?php echo $zapamti_grupu; ?> "> Promijenite tip grupe: <select name="tip"> <option value="predavanja" <?php echo $tip_selektovan['predavanja']; ?> >Grupa za predavanja</a> <option value="vjezbe" <?php echo $tip_selektovan['vjezbe']; ?> >Grupa za vježbe</a> <option value="tutorijali" <?php echo $tip_selektovan['tutorijali']; ?> >Grupa za tutorijale</a> <option value="vjezbe+tutorijali" <?php echo $tip_selektovan['vjezbe+tutorijali']; ?> >Grupa za vježbe i tutorijale</a> </select> <input type="submit" value="Izmijeni"></form></p> <?php } // Dodavanje grupe ?> <p> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="nova_grupa"> Dodaj grupu: <input type="text" name="ime" size="20"> Tip grupe:<select name="tip"> <option value="predavanja">Grupa za predavanja</a> <option value="vjezbe">Grupa za vježbe</a> <option value="tutorijali">Grupa za tutorijale</a> <option value="vjezbe+tutorijali" SELECTED>Grupa za vježbe i tutorijale</a> </select> <input type="submit" value="Dodaj"></form></p> <?php // Kopiranje grupa sa predmeta ?> <p> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="kopiraj_grupe"> Prekopiraj grupe sa predmeta: <select name="kopiraj"> <?php $q103a = myquery("select p.id, p.naziv from predmet as p, ponudakursa as pk where pk.predmet=p.id and pk.akademska_godina={$ag} order by p.naziv"); // TODO: Sortirati po semestru i studiju while ($r103a = mysql_fetch_row($q103a)) { print "<option value=\"{$r103a['0']}\">{$r103a['1']}</a>\n"; } ?> </select> <input type="submit" value="Dodaj"> </form></p><?php // Masovni unos $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><hr/></p><p><b>Masovni upis studenata u grupe</b><br/> U prozoru ispod navedite ime i prezime studenta, znak za separator i naziv grupe u koju želite da ga/je upišete.<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="visestruki" value="1"> <input type="hidden" name="duplikati" value="1"> <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/>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="submit" value=" Dodaj "> </form></p><?php }
function saradnik_student() { global $userid, $user_siteadmin, $conf_ldap_domain; require "lib/manip.php"; // radi ispisa studenta sa predmeta print '<p><a href="index.php?sta=saradnik/intro">Spisak predmeta i grupa</a></p>' . "\n"; // Ulazni parametri $student = intval($_REQUEST['student']); $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // Provjera ulaznih podataka i podaci za naslov // Student $q40 = myquery("select ime, prezime, brindexa, slika from osoba where id={$student}"); if (mysql_num_rows($q40) < 1) { biguglyerror("Nepoznat student"); zamgerlog("nepoznat student {$student}", 3); zamgerlog2("nepoznat student", $student); return; } $ime = mysql_result($q40, 0, 0); $prezime = mysql_result($q40, 0, 1); $brindexa = mysql_result($q40, 0, 2); $slika = mysql_result($q40, 0, 3); $mailprint = ""; $q45 = myquery("SELECT adresa FROM email WHERE osoba={$student} ORDER BY sistemska DESC, id"); while ($r45 = mysql_fetch_row($q45)) { if ($mailprint) { $mailprint .= ", "; } $mailprint .= "<a href=\"mailto:{$r45['0']}\">{$r45['0']}</a>"; } // Predmet $q5 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q5) < 1) { biguglyerror("Nepoznat predmet"); zamgerlog("nepoznat predmet {$predmet}", 3); return; } $nazivpredmeta = mysql_result($q5, 0, 0); $q15 = myquery("SELECT tippredmeta FROM akademska_godina_predmet WHERE akademska_godina={$ag} AND predmet={$predmet}"); $tippredmeta = mysql_result($q15, 0, 0); if ($tippredmeta == 1000) { $q4 = myquery("SELECT id FROM zavrsni WHERE student={$student} AND predmet={$predmet} AND akademska_godina={$ag}"); if (mysql_num_rows($q4) > 0) { $zavrsni = mysql_result($q4, 0, 0); ?> <script language="JavaScript"> location.href='?sta=nastavnik/zavrsni&akcija=zavrsni_stranica&zavrsni=<?php echo $zavrsni; ?> &predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> '; </script> <?php return; } } // Akademska godina $q6 = myquery("select naziv from akademska_godina where id={$ag}"); if (mysql_num_rows($q6) < 1) { biguglyerror("Nepoznata akademska godina"); zamgerlog("nepoznata ag {$ag}", 3); zamgerlog2("nepoznata ag", $ag); return; } $nazivag = mysql_result($q6, 0, 0); // Da li student sluša predmet $q7 = myquery("select pk.id, pk.semestar from student_predmet as sp, ponudakursa as pk, studij as s where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and pk.studij=s.id"); if (mysql_num_rows($q7) < 1) { biguglyerror("Student nije upisan na ovaj predmet"); zamgerlog("student u{$student} ne slusa predmet pp{$predmet} ag{$ag}", 3); zamgerlog2("id studenta i predmeta ne odgovaraju", $student, $predmet, $ag); return; } $ponudakursa = mysql_result($q7, 0, 0); $semestar = mysql_result($q7, 0, 1); // Koji studij student sluša, koji put $q8 = myquery("select s.naziv, ss.semestar, ns.naziv, ss.ponovac from student_studij as ss, studij as s, nacin_studiranja as ns where ss.student={$student} and ss.akademska_godina={$ag} and ss.semestar mod 2 = " . $semestar % 2 . " and ss.studij=s.id and ss.nacin_studiranja=ns.id"); if (mysql_num_rows($q8) < 1) { $q8 = myquery("select s.naziv, ss.semestar, ns.naziv, ss.ponovac from student_studij as ss, studij as s, nacin_studiranja as ns where ss.student={$student} and ss.akademska_godina={$ag} and ss.semestar mod 2 = 1 and ss.studij=s.id and ss.nacin_studiranja=ns.id"); } if (mysql_num_rows($q8) < 1) { $nazivstudija = "Nije upisan na studij!"; $kolpren = $ponovac = $nacin_studiranja = ""; } else { $nazivstudija = mysql_result($q8, 0, 0); if (mysql_result($q8, 0, 1) < $semestar) { $kolpren = ", kolizija"; } else { if (mysql_result($q8, 0, 1) > $semestar) { $kolpren = ", prenio predmet"; } else { $kolpren = ""; } } $semestar = mysql_result($q8, 0, 1); $nacin_studiranja = mysql_result($q8, 0, 2); if (mysql_result($q8, 0, 3) == 1) { $ponovac = ", ponovac"; } else { $ponovac = ""; } } $q9 = myquery("select ag.id, ag.naziv from student_predmet as sp, ponudakursa as pk, akademska_godina as ag where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina<{$ag} and pk.akademska_godina=ag.id order by ag.id"); if (mysql_num_rows($q9) > 0) { $kojiput = "(" . (mysql_num_rows($q9) + 1) . ". put sluša predmet)"; $dosjei = " Pogledajte dosje za: "; $zarez = 0; while ($r9 = mysql_fetch_row($q9)) { if ($zarez == 0) { $zarez = 1; } else { $dosjei .= ", "; } $dosjei .= "<a href=\"?sta=saradnik/student&student={$student}&predmet={$predmet}&ag={$r9['0']}\">{$r9['1']}</a>"; } $dosjei .= "<br />\n"; } else { $kojiput = ""; $dosjei = ""; } // U kojoj je grupi student $q20 = myquery("select l.id, l.naziv from student_labgrupa as sl, labgrupa as l where sl.student={$student} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag} order by l.virtualna"); if (mysql_num_rows($q20) > 0) { $labgrupa = mysql_result($q20, 0, 0); $lgnaziv = mysql_result($q20, 0, 1); } else { $labgrupa = 0; // Nema labgrupa ili nije ni u jednoj } // Provjera prava pristupa if (!$user_siteadmin) { $q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q10) < 1) { biguglyerror("Nemate pravo pristupa ovom studentu"); zamgerlog("nastavnik nije na predmetu (pp{$predmet} ag{$ag})", 3); zamgerlog2("nije saradnik na predmetu", $predmet, $ag); return; } $privilegija = mysql_result($q10, 0, 0); // Provjera ogranicenja $q30 = myquery("select o.labgrupa from ogranicenje as o, labgrupa as l, student_labgrupa as sl where o.nastavnik={$userid} and o.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}"); if (mysql_num_rows($q30) > 0) { $nasao = 0; while ($r30 = mysql_fetch_row($q30)) { if ($r30[0] == $labgrupa) { $nasao = 1; break; } } if ($nasao == 0) { biguglyerror("Student je u grupi za koju vam je ograničen pristup"); zamgerlog("ogranicenje na labgrupu g{$labgrupa}", 3); zamgerlog2("ima ogranicenje na labgrupu", intval($labgrupa)); return; } } } // ---- AKCIJE // Akcija: ispis studenta sa predmeta if ($_GET['akcija'] == "ispis" && $user_siteadmin) { ispis_studenta_sa_predmeta($student, $predmet, $ag); zamgerlog("student ispisan sa predmeta (student u{$student} predmet pp{$predmet})", 4); // nivo 4: audit zamgerlog2("student ispisan sa predmeta", $student, $predmet, $ag); nicemessage("Student ispisan sa predmeta."); return; } if ($_POST['akcija'] == "promjena_grupe" && check_csrf_token()) { $novagrupa = intval($_POST['grupa']); $staragrupa = 0; // Da li je student u nekoj grupi i u kojoj? // (Ne smijemo se osloniti na vrijednost varijable $labgrupa jer // to može biti virtualna grupa iz koje ga ne smijemo ispisati) $q53 = myquery("select l.id, l.naziv from student_labgrupa as sl, labgrupa as l where sl.student={$student} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag} and l.virtualna=0"); if (mysql_num_rows($q53) > 0) { $staragrupa = mysql_result($q53, 0, 0); $naziv_stare_grupe = mysql_result($q53, 0, 1); if ($novagrupa == $staragrupa) { nicemessage("Student se već nalazi u grupi {$naziv_stare_grupe}!"); print '<a href="?sta=saradnik/student&student=' . $student . '&predmet=' . $predmet . '&ag=' . $ag . '">Nazad</a>' . "\n"; return; } ispis_studenta_sa_labgrupe($student, $staragrupa); nicemessage("Student ispisan iz grupe {$naziv_stare_grupe}. Podaci o prisustvu su izgubljeni."); } if ($novagrupa > 0) { $q55 = myquery("insert into student_labgrupa set student={$student}, labgrupa={$novagrupa}"); $q57 = myquery("select naziv from labgrupa where id={$novagrupa}"); nicemessage("Student upisan u grupu " . mysql_result($q57, 0, 0) . ". Kreirani su default podaci o prisustvu."); } // Potrebno je updatovati komponentu za prisustvo jer su podaci sada promijenjeni $q4 = myquery("select k.id from tippredmeta_komponenta as tpk,komponenta as k, akademska_godina_predmet as agp where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and k.tipkomponente=3"); while ($r4 = mysql_fetch_row($q4)) { update_komponente($student, $ponudakursa, $r4[0]); } // Pametni logging if ($staragrupa > 0 && $novagrupa > 0) { zamgerlog("student u{$student} prebacen iz grupe g{$staragrupa} u g{$novagrupa}", 2); // 2 = edit zamgerlog2("promijenjena grupa studenta", $student, $novagrupa, 0, $staragrupa); } else { if ($staragrupa > 0) { zamgerlog("student u{$student} ispisan iz grupe g{$staragrupa}", 2); zamgerlog2("student ispisan sa grupe", $student, intval($staragrupa)); } else { zamgerlog("student u{$student} upisan u grupu g{$novagrupa}", 2); zamgerlog2("student upisan u grupu", $student, $novagrupa); } } // Linkovi za dalje print "<p>Gdje želite sada ići?:<br />\n"; if ($staragrupa > 0) { print '- <a href="?sta=saradnik/grupa&id=' . $staragrupa . '">Spisak studenata u grupi ' . mysql_result($q53, 0, 1) . '</a><br />' . "\n"; } else { print '- <a href="?sta=saradnik/grupa&predmet=' . $predmet . '&ag=' . $ag . '">Spisak svih studenata na predmetu</a><br />' . "\n"; } // Ovo je jedini slučaj kad $staragrupa može biti nula if ($novagrupa > 0) { print '- <a href="?sta=saradnik/grupa&id=' . $novagrupa . '">Spisak studenata u grupi ' . mysql_result($q57, 0, 0) . '</a><br />' . "\n"; } print '- <a href="?sta=saradnik/student&student=' . $student . '&predmet=' . $predmet . '&ag=' . $ag . '">Nazad na detalje studenta ' . $ime . ' ' . $prezime . '</a>' . "\n"; return; } if ($_GET['akcija'] == "ponisti_kviz") { $kviz = intval($_REQUEST['kviz']); $q2000 = myquery("DELETE FROM kviz_student WHERE student={$student} AND kviz={$kviz}"); } // --- ISPIS if ($slika != "") { print "<img src=\"?sta=common/slika&osoba={$student}\" align=\"left\" style=\"margin: 10px\">\n"; } // Određujemo username radi slanja poruke $poruka_link = ""; $q59 = myquery("select login from auth where id={$student}"); if (mysql_num_rows($q59) > 0) { $poruka_link = "<br><a href=\"?sta=common/inbox&akcija=compose&primalac=" . mysql_result($q59, 0, 0) . "\">Pošaljite Zamger poruku</a>"; } // Naslov ?> <h1><?php echo $ime; ?> <?php echo $prezime; ?> (<?php echo $brindexa; ?> )</h1> <p>Upisan na (<?php echo $nazivag; ?> ): <b><?php echo $nazivstudija; ?> , <?php echo $semestar; ?> . semestar <?php echo $ponovac; ?> <?php echo $kolpren; ?> <?php echo $kojiput; ?> </b> <br /> <?php echo $dosjei; ?> <b>Email: <?php echo $mailprint; echo $poruka_link; ?> </b></p> <h3>Predmet: <?php echo $nazivpredmeta; ?> <br /> <?php if ($labgrupa > 0) { print "Grupa: <a href=\"?sta=saradnik/grupa&id={$labgrupa}\">{$lgnaziv}</a>"; } else { print "(nije ni u jednoj grupi)"; } ?> </h3> <?php // Promjena grupe $q60 = myquery("select id,naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=0 order by naziv"); if (mysql_num_rows($q60) > 0) { ?> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="promjena_grupe"> <p>Promijenite grupu: <select name="grupa" class="default"><option value="0"<?php echo $nijedna; ?> >-- Nije ni u jednoj grupi --</option> <?php while ($r60 = mysql_fetch_row($q60)) { if ($r60[0] == $labgrupa) { $value = "SELECTED"; } else { $value = ""; } ?> <option value="<?php echo $r60[0]; ?> " <?php echo $value; ?> ><?php echo $r60[1]; ?> </option> <?php } ?> </select> <input type="submit" value=" Promijeni grupu " class="default"> </form> <?php } // PROGRESS BAR // Kod kopiran iz student/predmet - trebalo bi izdvojiti u lib $q30 = myquery("select kb.bodovi, k.maxbodova, k.tipkomponente, k.id from komponentebodovi as kb, komponenta as k where kb.student={$student} and kb.predmet={$ponudakursa} and kb.komponenta=k.id"); $bodova = $mogucih = 0; while ($r30 = mysql_fetch_row($q30)) { $bodova += $r30[0]; if ($r30[2] == 4) { // Tip komponente: zadaće $q35 = myquery("select sum(bodova) from zadaca where predmet={$predmet} and akademska_godina={$ag} and komponenta={$r30['3']}"); $do_sada_zadace = round(mysql_result($q35, 0, 0), 2); // Zbir bodova za zadaće ne može preći ono koliko nosi komponenta if ($do_sada_zadace > $r30[1]) { $mogucih += $r30[1]; } else { $mogucih += $do_sada_zadace; } } else { $mogucih += $r30[1]; } } if ($bodova > $mogucih) { $bodova = $mogucih; } //ne bi se trebalo desiti // boja označava napredak studenta if ($mogucih == 0) { $procent = 0; } else { $procent = intval($bodova / $mogucih * 100); } if ($procent >= 75) { $color = "#00FF00"; } else { if ($procent >= 50) { $color = "#FFFF00"; } else { $color = "#FF0000"; } } $tabela1 = $procent * 2; $tabela2 = 200 - $tabela1; $ispis1 = "<img src=\"images/fnord.gif\" width=\"{$tabela1}\" height=\"10\">"; $ispis2 = "<img src=\"images/fnord.gif\" width=\"{$tabela2}\" height=\"1\"><br/> {$bodova} bodova"; if ($tabela1 > $tabela2) { $ispis1 = "<img src=\"images/fnord.gif\" width=\"{$tabela1}\" height=\"1\"><br/> {$bodova} bodova"; $ispis2 = "<img src=\"images/fnord.gif\" width=\"{$tabela2}\" height=\"10\">"; } ?> <!-- progress bar --> <table border="0"><tr><td align="left"> <p> <table style="border:1px;border-style:solid" width="206" cellpadding="0" cellspacing="2"><tr> <td width="<?php echo $tabela1; ?> " bgcolor="<?php echo $color; ?> "><?php echo $ispis1; ?> </td> <td width="<?php echo $tabela2; ?> " bgcolor="#FFFFFF"><?php echo $ispis2; ?> </td></tr></table> <table width="208" border="0" cellspacing="0" cellpadding="0"><tr> <td width="68">0</td> <td align="center" width="68">50</td> <td align="right" width="69">100</td></tr></table> što je <?php echo $procent; ?> % od trenutno mogućih <?php echo round($mogucih, 2); ?> bodova.</p> </td></tr></table> <!-- end progress bar --> <?php // Nekoliko korisnih operacija za site admina if ($user_siteadmin) { ?> <p><a href="index.php?sta=saradnik/student&student=<?php echo $student; ?> &predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &akcija=ispis">Ispiši studenta sa predmeta</a> * <a href="index.php?sta=studentska/osobe&akcija=edit&osoba=<?php echo $student; ?> ">Detaljnije o studentu</a> * <a href="index.php?su=<?php echo $student; ?> ">Prijavi se kao student</a></p> <?php } // PRISUSTVO: print ajah_box(); ?> <script language="JavaScript"> // Funkcija koja se poziva klikom na polje u tabeli function prisustvo(student,cas) { if (zamger_ajah_sending) { alert("Slanje u toku. Sačekajte malo."); return false; } var prisutan = invert(student,cas); ajah_start("index.php?c=N&sta=common/ajah&akcija=prisustvo&student="+student+"&cas="+cas+"&prisutan="+prisutan, "invert("+student+","+cas+")"); // U slucaju da ajah ne uspije, ponovo se poziva funkcija invert } // Switchuje DA i NE function invert(student,cas) { var val = document.getElementById("danetekst-"+student+"-"+cas).innerHTML; if (val == "DA") { document.getElementById("dane-"+student+"-"+cas).style.background = "#FFCCCC"; document.getElementById("danetekst-"+student+"-"+cas).innerHTML = "NE"; return 1; } else { document.getElementById("dane-"+student+"-"+cas).style.background="#CCFFCC"; document.getElementById("danetekst-"+student+"-"+cas).innerHTML = "DA"; return 2; } } function openzadaca(student,zadaca,zadatak) { var url='index.php?sta=saradnik/zadaca&student='+student+'&zadaca='+zadaca+'&zadatak='+zadatak; window.open(url,'blah','width=600,height=600,scrollbars=yes'); } function toggleVisibilityObj(ime){ var me = document.getElementById(ime); if (me.style.display=="none"){ me.style.display="inline"; } else { me.style.display="none"; } return false; // da ne bi radio link } </script> <?php // Ispis tablice prisustva za jednu od grupa u kojima je student function prisustvo_ispis($idgrupe, $imegrupe, $komponenta, $student) { if (!preg_match("/\\w/", $imegrupe)) { $imegrupe = "[Bez naziva]"; } $odsustva = 0; $q70 = myquery("select id,UNIX_TIMESTAMP(datum), vrijeme from cas where labgrupa={$idgrupe} and komponenta={$komponenta}"); if (mysql_num_rows($q70) < 1) { return; } // Ne ispisuj grupe u kojima nema registrovanih časova $datumi = $vremena = $statusi = ""; while ($r70 = mysql_fetch_row($q70)) { $datumi .= "<td>" . date("d.m", $r70[1]) . "</td>\n"; list($sati, $minute, $sekunde) = explode(":", $r70[2]); $vremena .= "<td>{$sati}<sup>{$minute}</sup></td>\n"; $q80 = myquery("select prisutan from prisustvo where student={$student} and cas={$r70['0']}"); if (mysql_num_rows($q80) < 1) { $statusi .= "<td bgcolor=\"#FFFFCC\" align=\"center\" id=\"dane-" . $student . "-" . $r70[0] . "\" onclick=\"javascript:prisustvo(" . $student . "," . $r70[0] . ")\"><div id=\"danetekst-" . $student . "-" . $r70[0] . "\"> / </div></td>\n"; } else { if (mysql_result($q80, 0, 0) == 1) { $statusi .= "<td bgcolor=\"#CCFFCC\" align=\"center\" id=\"dane-" . $student . "-" . $r70[0] . "\" onclick=\"javascript:prisustvo(" . $student . "," . $r70[0] . ")\"><div id=\"danetekst-" . $student . "-" . $r70[0] . "\">DA</div></td>\n"; } else { $statusi .= "<td bgcolor=\"#FFCCCC\" align=\"center\" id=\"dane-" . $student . "-" . $r70[0] . "\" onclick=\"javascript:prisustvo(" . $student . "," . $r70[0] . ")\"><div id=\"danetekst-" . $student . "-" . $r70[0] . "\">NE</div></td>\n"; $odsustva++; } } } ?> <b>Prisustvo (<?php echo $imegrupe; ?> ):</b><br/> <table cellspacing="0" cellpadding="2" border="0" id="prisustvo"> <tr> <th>Datum</th> <?php echo $datumi; ?> </tr> <tr> <th>Vrijeme</th> <?php echo $vremena; ?> </tr> <tr> <th>Prisutan</th> <?php echo $statusi; ?> </tr> </table> </p> <?php return $odsustva; } $q40 = myquery("select k.id,k.maxbodova,k.prolaz,k.opcija from komponenta as k, tippredmeta_komponenta as tpk, akademska_godina_predmet as agp\nwhere agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and k.tipkomponente=3"); // 3 = prisustvo while ($r40 = mysql_fetch_row($q40)) { $id_komponente = $r40[0]; $max_bodova = $r40[1]; $min_bodova = $r40[2]; $max_izostanaka = $r40[3]; $odsustva = $casova = 0; $q60 = myquery("select l.id,l.naziv from labgrupa as l, student_labgrupa as sl where l.predmet={$predmet} and l.akademska_godina={$ag} and l.id=sl.labgrupa and sl.student={$student}"); while ($r60 = mysql_fetch_row($q60)) { $odsustva += prisustvo_ispis($r60[0], $r60[1], $id_komponente, $student); $q71 = myquery("select count(*) from cas where labgrupa={$r60['0']} and komponenta={$id_komponente}"); $casova += mysql_result($q71, 0, 0); } if ($max_izostanaka == -1) { if ($casova == 0) { $bodovi = 10; } else { $bodovi = $min_bodova + round(($max_bodova - $min_bodova) * (($casova - $odsustva) / $casova), 2); } } else { if ($max_izostanaka == -2) { // Paraproporcionalni sistem TP if ($odsustva <= 2) { $bodovi = $max_bodova; } else { if ($odsustva <= 2 + ($max_bodova - $min_bodova) / 2) { $bodovi = $max_bodova - ($odsustva - 2) * 2; } else { $bodovi = $min_bodova; } } } else { if ($odsustva <= $max_izostanaka) { $bodovi = $max_bodova; } else { $bodovi = $min_bodova; } } } ?> <p>Ukupno na prisustvo: <b><?php echo $bodovi; ?> </b> bodova.</p> <?php } // KVIZOVI $q200 = myquery("SELECT id, naziv, prolaz_bodova FROM kviz WHERE predmet={$predmet} AND akademska_godina={$ag}"); if (mysql_num_rows($q200) > 0) { ?> <b>Kvizovi:</b><br/> <table cellspacing="0" cellpadding="2" border="0" id="kvizovi"> <thead> <tr> <th>Naziv kviza</th> <th>Rezultat</th> <th>Akcije</th> </tr> </thead> <?php while ($r200 = mysql_fetch_row($q200)) { $q210 = myquery("SELECT dovrsen, bodova FROM kviz_student WHERE student={$student} AND kviz={$r200['0']}"); $tekst = ""; if (mysql_num_rows($q210) > 0) { $bodova = mysql_result($q210, 0, 1); if (mysql_result($q210, 0, 0) == 0) { $tekst = "<img src=\"images/16x16/zad_cekaj.png\" width=\"8\" height=\"8\"> Nije završio/la"; } else { if ($bodova < $r200[2]) { $tekst = "<img src=\"images/16x16/brisanje.png\" width=\"8\" height=\"8\"> {$bodova} bodova"; } else { $tekst = "<img src=\"images/16x16/zad_ok.png\" width=\"8\" height=\"8\"> {$bodova} bodova"; } } } ?> <tr> <td><?php echo $r200[1]; ?> </td> <td><?php echo $tekst; ?> </td> <td><?php if ($tekst !== "") { ?> <a href="?sta=saradnik/student&student=<?php echo $student; ?> &predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &akcija=ponisti_kviz&kviz=<?php echo $r200[0]; ?> ">Poništi kviz</a><?php } ?> </td> </tr> <?php } ?> </table> </p> <?php } // ZADAĆE // Statusne ikone: $stat_icon = array("zad_bug", "zad_preg", "zad_copy", "zad_bug", "zad_preg", "zad_ok"); $stat_tekst = array("Bug u programu", "Pregled u toku", "Zadaća prepisana", "Bug u programu", "Pregled u toku", "Zadaća OK"); ?> <!-- zadace --> <b>Zadaće:</b><br/> <table cellspacing="0" cellpadding="2" border="0" id="zadace"> <thead> <tr> <td> </td> <?php // Zaglavlje tabele - potreban nam je max. broj zadataka u zadaci $q20 = myquery("select zadataka from zadaca where predmet={$predmet} and akademska_godina={$ag} order by zadataka desc limit 1"); if (mysql_num_rows($q20) > 0) { $broj_zadataka = mysql_result($q20, 0, 0); for ($i = 1; $i <= $broj_zadataka; $i++) { ?> <td>Zadatak <?php echo $i; ?> .</td><?php } } ?> <td><b>Ukupno bodova</b></td> </tr> </thead> <tbody> <?php // Tijelo tabele // LEGENDA STATUS POLJA: // 0 - nepoznat status // 1 - nova zadaća // 2 - prepisana // 3 - ne može se kompajlirati // 4 - prošla test, predstoji kontrola // 5 - pregledana /* Ovo se sve moglo kroz SQL rijesiti, ali necu iz razloga: 1. PHP je citljiviji 2. MySQL <4.1 ne podrzava subqueries */ $bodova_sve_zadace = 0; $q21 = myquery("select id,naziv,bodova,zadataka from zadaca where predmet={$predmet} and akademska_godina={$ag} order by komponenta,id"); while ($r21 = mysql_fetch_row($q21)) { $zadaca = $r21[0]; $mogucih += $r21[2]; $zzadataka = $r21[3]; ?> <tr> <th><?php echo $r21[1]; ?> </th> <?php $bodova_zadaca = 0; for ($zadatak = 1; $zadatak <= $broj_zadataka; $zadatak++) { // Ako tekuća zadaća nema toliko zadataka, ispisujemo blank polje if ($zadatak > $zzadataka) { ?> <td> </td><?php continue; } // Uzmi samo rjesenje sa zadnjim IDom $q22 = myquery("select status,bodova,komentar from zadatak where student={$student} and zadaca={$zadaca} and redni_broj={$zadatak} order by id desc limit 1"); if (mysql_num_rows($q22) < 1) { ?> <td> </td><?php } else { $status = mysql_result($q22, 0, 0); $bodova_zadatak = mysql_result($q22, 0, 1); $bodova_zadaca += $bodova_zadatak; if (strlen(mysql_result($q22, 0, 2)) > 2) { $imakomentar = "<img src=\"images/16x16/komentar.png\" width=\"15\" height=\"14\" border=\"0\" title=\"Ima komentar\" alt=\"Ima komentar\" align=\"center\">"; } else { $imakomentar = ""; } ?> <td><a href="javascript:openzadaca('<?php echo $student; ?> ', '<?php echo $zadaca; ?> ', '<?php echo $zadatak; ?> ')"><img src="images/16x16/<?php echo $stat_icon[$status]; ?> .png" width="16" height="16" border="0" align="center" title="<?php echo $stat_tekst[$status]; ?> " alt="<?php echo $stat_tekst[$status]; ?> "> <?php echo $bodova_zadatak; ?> <?php echo $imakomentar; ?> </a></td> <?php } } ?> <td><?php echo $bodova_zadaca; ?> </td> </tr> <?php $bodova_sve_zadace += $bodova_zadaca; } // Ukupno bodova za studenta $bodova += $bodova_sve_zadace; ?> <tr><td colspan="<?php echo $broj_zadataka + 1; ?> " align="right">UKUPNO: </td> <td><?php echo $bodova_sve_zadace; ?> </td></tr> </tbody> </table> <p>Za historiju izmjena kliknite na željeni zadatak. <a href="#" onclick="javascript:window.open('legenda-zadace.html','blah6','width=320,height=130'); return false;">Legenda simbola</a></p> <br/> <!-- end zadace --> <?php // Importujemo kod za coolbox cool_box('ajah_start("index.php?c=N&sta=common/ajah&akcija=izmjena_ispita&idpolja="+zamger_coolbox_origcaller.id+"&vrijednost="+coolboxedit.value, "undo_coolbox()", "zamger_coolbox_origcaller=false");'); ?> <script language="JavaScript"> function undo_coolbox() { var greska = document.getElementById("zamger_ajah-info").innerText || document.getElementById("zamger_ajah-info").textContent; if (!greska.match(/\S/)) greska = "Došlo je do greške. Molimo kontaktirajte administratora."; alert(greska); zamger_coolbox_origcaller.innerHTML = zamger_coolbox_origvalue; zamger_coolbox_origcaller=false; } </script> <?php // FIKSNE KOMPONENTE $q25 = myquery("select k.id, k.gui_naziv from komponenta as k, tippredmeta_komponenta as tpk, akademska_godina_predmet as agp where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and k.tipkomponente=5"); // 5 = fiksna komponenta if (mysql_num_rows($q25) > 0) { ?> <!-- fiksne komponente --> <table cellspacing="0" cellpadding="2" border="0" id="zadace"> <thead> <tr> <td><b>Komponenta ocjene</b></td> <td><b>Bodovi</b></td> <td><b>Dnevnik izmjena</b></td> </tr> </thead> <tbody> <?php } while ($r25 = mysql_fetch_row($q25)) { $komponenta = $r25[0]; $q27 = myquery("select bodovi from komponentebodovi where student={$student} and predmet={$ponudakursa} and komponenta={$komponenta}"); if (mysql_num_rows($q27) < 1) { $ocjenaedit = "/"; } else { $ocjenaedit = mysql_result($q27, 0, 0); } ?> <tr> <td><?php echo $r25[1]; ?> </td> <td id="fiksna-<?php echo $student; ?> -<?php echo $predmet; ?> -<?php echo $komponenta; ?> -<?php echo $ag; ?> " ondblclick="coolboxopen(this)"><?php echo $ocjenaedit; ?> </td> <td><?php if ($privilegija == "nastavnik" || $privilegija == "super_asistent" || $user_siteadmin) { ?> <div id="fiksnalog<?php echo $komponenta; ?> "></div><?php } else { print "/"; } ?> </td> </tr> <?php } if (mysql_num_rows($q25) > 0) { ?> </tbody> </table> <p> </p> <?php } // ISPITI ?> <!-- ispiti --> <b>Ispiti:</b><br/> <?php $q30 = myquery("select i.id, UNIX_TIMESTAMP(i.datum), k.gui_naziv, k.id, k.prolaz from ispit as i, komponenta as k where i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=k.id order by i.datum,i.komponenta"); if (mysql_num_rows($q30) == 0) { print "<p>Nije bilo parcijalnih ispita.</p>"; } else { ?> <table cellspacing="0" cellpadding="2" border="0" id="zadace"> <thead> <tr> <td><b>Tip ispita</b></td> <td><b>Datum ispita</b></td> <td><b>Položio/la?</b></td> <td><b>Bodovi</b></td> <td><b>Dnevnik izmjena</b></td> </tr> </thead> <tbody> <?php } while ($r30 = mysql_fetch_row($q30)) { $ispit = $r30[0]; $q40 = myquery("select ocjena from ispitocjene where ispit={$ispit} and student={$student}"); if (mysql_num_rows($q40) < 1) { $ocjenaedit = "/"; $ispitocjena = "Nije izašao/la"; } else { $ocjenaedit = mysql_result($q40, 0, 0); $ispitocjena = "<b>" . mysql_result($q40, 0, 0) . " bodova</b>"; } /* ?> <p><?=$r30[2]?> (<?=date("d. m. Y",$r30[1])?>): <?=$ispitocjena?> <?*/ ?> <tr> <td><?php echo $r30[2]; ?> </td> <td><?php echo date("d. m. Y", $r30[1]); ?> </td> <td><?php if ($ocjenaedit == "/") { print " "; } else { if ($ocjenaedit >= $r30[4]) { print "<img src=\"images/16x16/zad_ok.png\" width=\"16\" height=\"16\">"; } else { print "<img src=\"images/16x16/brisanje.png\" width=\"16\" height=\"16\">"; } } // najljepše slike ?> </td> <td id="ispit-<?php echo $student; ?> -<?php echo $ispit; ?> " ondblclick="coolboxopen(this)"><?php echo $ocjenaedit; ?> </td> <td><?php if ($privilegija == "nastavnik" || $privilegija == "super_asistent" || $user_siteadmin) { ?> <div id="ispitlog<?php echo $ispit; ?> "></div><?php } else { print "/"; } ?> </td> </tr> <?php /* if ($predmet_admin || $user_siteadmin) { ?> <span id="ispitlink<?=$ispit?>">(<a href="#" onclick="return toggleVisibilityObj('ispitlog<?=$ispit?>');">dnevnik izmjena</a>)</span> (<a href="#" onclick="return toggleVisibilityObj('ispitunos<?=$ispit?>');">upišite rezultat</a>)</p> <p><div id="ispitlog<?=$ispit?>" style="display:none"></div></p> <p><div id="ispitunos<?=$ispit?>" style="display:none"> <table border="0" cellspacing="0" cellpadding="2" height="16"><tr height="16"> <td width="37"> </td> <td align="left">Unesite bodove ili znak "kosa crta" (/):</td> <td width="5"> <br/> </td> <td id="ispit-<?=$student?>-<?=$ispit?>" ondblclick="coolboxopen(this)" width="32" height="32" style="font-size:11px; border:1px solid black"><?=$ocjenaedit?></td> </tr></table> </div></p> <? } else { print "</p>\n"; }*/ } if (mysql_num_rows($q30) > 0) { ?> </tbody></table> <p>Dvokliknite na bodove da promijenite podatak ili upišete novi. Za brisanje rezultata, pobrišite postojeći podatak i pritisnite Enter.</p> <?php } // KONAČNA OCJENA $vrijeme_konacne_ocjene = 0; $q50 = myquery("select ocjena, UNIX_TIMESTAMP(datum), UNIX_TIMESTAMP(datum_u_indeksu) from konacna_ocjena where student={$student} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q50) > 0) { $konacnaocjena = mysql_result($q50, 0, 0); $vrijeme_konacne_ocjene = mysql_result($q50, 0, 1); $datum_u_indeksu = mysql_result($q50, 0, 2); } else { $konacnaocjena = "/"; } ?> <p> </p> <table cellspacing="0" cellpadding="2" border="0" id="zadace"> <tr> <td> </td> <td>Ocjena:</td> <td>Datum u indeksu:</td> <td>Dnevnik izmjena:</td> </tr> <tr> <td><b>Konačna ocjena:</b></td> <?php if ($privilegija == "nastavnik" || $user_siteadmin) { ?> <td id="ko-<?php echo $student; ?> -<?php echo $predmet; ?> -<?php echo $ag; ?> " ondblclick="coolboxopen(this)"><?php echo $konacnaocjena; ?> </td> <td id="kodatum-<?php echo $student; ?> -<?php echo $predmet; ?> -<?php echo $ag; ?> " ondblclick="coolboxopen(this)"><?php echo date("d. m. Y", $datum_u_indeksu); ?> </td> <td><div id="kolog"></div></td> <?php } else { ?> <td><?php echo $konacnaocjena; ?> </td> <?php } print "</tr></table>\n"; // ************************************** // POPUNA LOGOVA // ************************************** // Ne radimo ništa ako korisnik nema privilegije if ($privilegija != "nastavnik" && $privilegija != "super_asistent" && !$user_siteadmin) { return; } ?> <SCRIPT language="JavaScript"> <?php // Spisak ponuda kursa, za slucaj da nema rezultata $q90 = myquery("select id from ponudakursa where predmet={$predmet} and akademska_godina={$ag}"); $pkovi = array(); while ($r90 = mysql_fetch_row($q90)) { array_push($pkovi, $r90[0]); } // Log za ispite $q100 = myquery("select i.id, UNIX_TIMESTAMP(i.vrijemeobjave) from ispit as i, komponenta as k where i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=k.id order by i.datum,i.komponenta"); while ($r100 = mysql_fetch_row($q100)) { $vrijeme_ispita = $r100[1]; // Utvrdjujemo ocjenu da bismo lakse mogli rekonstruisati izmjene kroz log $q105 = myquery("select ocjena from ispitocjene where ispit={$r100['0']} and student={$student}"); if (mysql_num_rows($q105) < 1) { $ispitocjena = "/"; } else { $ispitocjena = mysql_result($q105, 0, 0); } // Spisak izmjena ocjene $q110 = myquery("select dogadjaj, UNIX_TIMESTAMP(vrijeme), userid from log where \n\tdogadjaj like 'AJAH ispit - upisan novi rezultat % (ispit i{$r100['0']}, student u{$student})' or \n\tdogadjaj like 'AJAH ispit - izbrisan rezultat % (ispit i{$r100['0']}, student u{$student})' or \n\tdogadjaj like 'AJAH ispit - izmjena rezultata % (ispit i{$r100['0']}, student u{$student})' order by id desc"); while ($r110 = mysql_fetch_row($q110)) { $datum = date("d.m.Y. H:i:s", $r110[1]); $q120 = myquery("select ime,prezime from osoba where id=" . $r110[2]); if (mysql_num_rows($q120) > 0) { $korisnik = mysql_result($q120, 0, 0) . " " . mysql_result($q120, 0, 1); } else { $korisnik = "/nepoznat korisnik {$r110['2']}/"; } if (strstr($r110[0], "upisan novi rezultat")) { $rezultat = floatval(substr($r110[0], 34)); if ($rezultat != $ispitocjena) { $rezultat .= " ?"; } $ispitocjena = "/"; ?> document.getElementById('ispitlog<?php echo $r100[0]; ?> ').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> upisan rezultat <b><?php echo $rezultat; ?> </b> (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('ispitlog<?php echo $r100[0]; ?> ').innerHTML; <?php } else { if (strstr($r110[0], "izbrisan rezultat")) { $rezultat = floatval(substr($r110[0], 31)); if ($ispitocjena != "/") { $rezultat .= " ?"; } else { $ispitocjena = $rezultat; } ?> document.getElementById('ispitlog<?php echo $r100[0]; ?> ').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> izbrisan rezultat (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('ispitlog<?php echo $r100[0]; ?> ').innerHTML; <?php } else { if (preg_match("/izmjena rezultata ([\\d\\.]+) u ([\\d\\.]+)/", $r110[0], $matches)) { $starirezultat = floatval($matches[1]); $rezultat = floatval($matches[2]); if ($ispitocjena != $rezultat) { $rezultat .= " ?"; } $ispitocjena = $starirezultat; ?> document.getElementById('ispitlog<?php echo $r100[0]; ?> ').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> promijenjen rezultat u <b><?php echo $rezultat; ?> </b> (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('ispitlog<?php echo $r100[0]; ?> ').innerHTML; <?php } } } } // Necemo traziti masovne unose ako student nije ni izlazio na ispit if ($ispitocjena == "/") { continue; } // Masovni unosi $q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet pp{$predmet}' AND UNIX_TIMESTAMP(vrijeme)>{$r100['1']}-10 ORDER BY vrijeme"); // uzimamo razliku 10 sekundi, jer moze doci do malog kasnjenja prilikom unosa u log if (mysql_num_rows($q110) > 0) { $datum = date("d.m.Y. H:i:s", mysql_result($q110, 0, 0)); $q120 = myquery("select ime,prezime from osoba where id=" . mysql_result($q110, 0, 1)); if (mysql_num_rows($q120) > 0) { $korisnik = mysql_result($q120, 0, 0) . " " . mysql_result($q120, 0, 1); } else { $korisnik = "/nepoznat korisnik " . mysql_result($q110, 0, 1) . "/"; } ?> document.getElementById('ispitlog<?php echo $r100[0]; ?> ').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?php echo $ispitocjena; ?> </b> (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('ispitlog<?php echo $r100[0]; ?> ').innerHTML; <?php // Nema pod oznakom predmeta, pokusacemo ponudu kursa } else { foreach ($pkovi as $ponudakursa) { $q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet p{$ponudakursa}' AND UNIX_TIMESTAMP(vrijeme)>{$r100['1']}-10"); if (mysql_num_rows($q110) > 0) { $datum = date("d.m.Y. H:i:s", mysql_result($q110, 0, 0)); $q120 = myquery("select ime,prezime from osoba where id=" . mysql_result($q110, 0, 1)); if (mysql_num_rows($q120) > 0) { $korisnik = mysql_result($q120, 0, 0) . " " . mysql_result($q120, 0, 1); } else { $korisnik = "/nepoznat korisnik " . mysql_result($q110, 0, 1) . "/"; } ?> document.getElementById('ispitlog<?php echo $r100[0]; ?> ').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?php echo $ispitocjena; ?> </b> (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('ispitlog<?php echo $r100[0]; ?> ').innerHTML; <?php break; } } } } // Log za konacnu ocjenu $bilo = 0; $upit = "\ndogadjaj like 'AJAH ko - dodana ocjena % (predmet pp{$predmet}, student u{$student})' or \ndogadjaj like 'AJAH ko - obrisana ocjena % (predmet pp{$predmet}, student u{$student})' or \ndogadjaj like 'AJAH ko - izmjena ocjene % (predmet pp{$predmet}, student u{$student})' or \ndogadjaj like 'dopisana ocjena % prilikom upisa na studij (predmet pp{$predmet}, student u{$student})' or \ndogadjaj like 'masovno dodana ocjena % (predmet pp{$predmet}, student u{$student})'"; $q150 = myquery("select dogadjaj, UNIX_TIMESTAMP(vrijeme), userid from log where {$upit} order by id desc"); while ($r150 = mysql_fetch_row($q150)) { $bilo = 1; $datum = date("d.m.Y. H:i:s", $r150[1]); $q160 = myquery("select ime,prezime from osoba where id={$r150['2']}"); if (mysql_num_rows($q160) > 0) { $korisnik = mysql_result($q160, 0, 0) . " " . mysql_result($q160, 0, 1); } else { $korisnik = "/nepoznat korisnik {$r150['2']}/"; } if (strstr($r150[0], " - dodana ocjena")) { $rezultat = intval(substr($r150[0], 24)); if ($rezultat != $konacnaocjena) { $rezultat .= " ?"; } $konacnaocjena = "/"; ?> document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> dodana ocjena <b><?php echo $rezultat; ?> </b> (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('kolog').innerHTML; <?php } else { if (strstr($r150[0], "obrisana ocjena")) { $rezultat = intval(substr($r150[0], 26)); if ($konacnaocjena != "/") { $rezultat .= " ?"; } else { $konacnaocjena = $rezultat; } ?> document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> obrisana ocjena (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('kolog').innerHTML; <?php } else { if (preg_match("/izmjena ocjene (\\d+) u (\\d+)/", $r150[0], $matches)) { $starirezultat = intval($matches[1]); $rezultat = intval($matches[2]); if ($konacnaocjena != $rezultat) { $rezultat .= " ?"; } $konacnaocjena = $starirezultat; ?> document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> promijenjena ocjena u <b><?php echo $rezultat; ?> </b> (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('kolog').innerHTML; <?php } else { if (strstr($r150[0], "dopisana ocjena")) { $rezultat = intval(substr($r150[0], 16)); if ($konacnaocjena != $rezultat) { $rezultat .= " ?"; } $konacnaocjena = "/"; ?> document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> studentska služba dopisala ocjenu <b><?php echo $rezultat; ?> </b> prilikom upisa u sljedeći semestar (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('kolog').innerHTML; <?php } else { if (strstr($r150[0], "masovno dodana ocjena")) { $rezultat = intval(substr($r150[0], 22)); if ($konacnaocjena != $rezultat) { $rezultat .= " ?"; } $konacnaocjena = "/"; ?> document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovno upisana ocjena <b><?php echo $rezultat; ?> </b> (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('kolog').innerHTML; <?php } } } } } } /*if (mysql_num_rows($q150)<1) foreach ($pkovi as $ponudakursa) { $q150 = myquery("select dogadjaj, UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj like 'AJAH ko - dodana ocjena % (predmet p$ponudakursa, student u$student)' or dogadjaj like 'AJAH ko - obrisana ocjena % (predmet p$ponudakursa, student u$student)' or dogadjaj like 'AJAH ko - izmjena ocjene % (predmet p$ponudakursa, student u$student)' order by id desc"); while ($r150 = mysql_fetch_row($q150)) { $bilo=1; $datum = date("d.m.Y. H:i:s", $r150[1]); $q160 = myquery("select ime,prezime from osoba where id=$r150[2]"); if (mysql_num_rows($q160)>0) { $korisnik = mysql_result($q160,0,0)." ".mysql_result($q160,0,1); } else { $korisnik = "/nepoznat korisnik $r150[2]/"; } if (strstr($r150[0], "dodana ocjena")) { $rezultat = intval(substr($r150[0], 24)); if ($rezultat != $konacnaocjena) $rezultat .= " ?"; $konacnaocjena = "/"; $vrijeme_konacne_ocjene=$r150[1]; ?> document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> dodana ocjena <b><?=$rezultat?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('kolog').innerHTML; <? } else if (strstr($r150[0], "obrisana ocjena")) { $rezultat = intval(substr($r150[0], 26)); if ($konacnaocjena != "/") $rezultat .= " ?"; else $konacnaocjena=$rezultat; $vrijeme_konacne_ocjene=0; ?> document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> obrisana ocjena (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('kolog').innerHTML; <? } else if (preg_match("/izmjena ocjene (\d+) u (\d+)/", $r150[0], $matches)) { $starirezultat = intval($matches[1]); $rezultat = intval($matches[2]); if ($konacnaocjena != $rezultat) $rezultat .= " ?"; $konacnaocjena = $starirezultat; $vrijeme_konacne_ocjene=$r150[1]; ?> document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> promijenjena ocjena u <b><?=$rezultat?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('kolog').innerHTML; <? } //print "$r150[0] $r150[1] $r150[2]\n"; } }*/ if (mysql_num_rows($q150) == 0 && $vrijeme_konacne_ocjene > 0) { $bilo = 1; $q170 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovno upisane ocjene na predmet pp{$predmet}' AND ABS(UNIX_TIMESTAMP(vrijeme)-{$vrijeme_konacne_ocjene})<10"); // uzimamo apsolutnu razliku 10 sekundi, jer moze doci do malog kasnjenja prilikom unosa u log if (mysql_num_rows($q170) > 0) { $datum = date("d.m.Y. H:i:s", mysql_result($q170, 0, 0)); $q180 = myquery("select ime,prezime from osoba where id=" . mysql_result($q170, 0, 1)); if (mysql_num_rows($q180) > 0) { $korisnik = mysql_result($q180, 0, 0) . " " . mysql_result($q180, 0, 1); } else { $korisnik = "/nepoznat korisnik " . mysql_result($q170, 0, 1) . "/"; } ?> document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovno unesene ocjene - <b><?php echo $konacnaocjena; ?> </b> (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('kolog').innerHTML; <?php // Nema pod oznakom predmeta, pokusacemo ponudu kursa } else { foreach ($pkovi as $ponudakursa) { $q170 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovno upisane ocjene na predmet p{$ponudakursa}' AND ABS(UNIX_TIMESTAMP(vrijeme)-" . mysql_result($q50, 0, 1) . ")<10"); // uzimamo apsolutnu razliku 10 sekundi, jer moze doci do malog kasnjenja prilikom unosa u log if (mysql_num_rows($q170) > 0) { $datum = date("d.m.Y. H:i:s", mysql_result($q170, 0, 0)); $q180 = myquery("select ime,prezime from osoba where id=" . mysql_result($q170, 0, 1)); if (mysql_num_rows($q180) > 0) { $korisnik = mysql_result($q180, 0, 0) . " " . mysql_result($q180, 0, 1); } else { $korisnik = "/nepoznat korisnik " . mysql_result($q170, 0, 1) . "/"; } ?> document.getElementById('kolog').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovno unesene ocjene - <b><?php echo $konacnaocjena; ?> </b> (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('kolog').innerHTML; <?php } } } } // Ako nema nista u logu, sakrivamo ga if ($bilo == 0) { ?> toggleVisibilityObj('kolink'); <?php } // Log za fiksne komponente // Radimo samo ako ima fiksnih komponenti $q200 = myquery("select k.id from komponenta as k, tippredmeta_komponenta as tpk, akademska_godina_predmet as agp where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and agp.akademska_godina={$ag} and tpk.komponenta=k.id and k.tipkomponente=5"); // 5 = fiksna komponenta while ($r200 = mysql_fetch_row($q200)) { $komponenta = $r200[0]; // Utvrdjujemo ocjenu da bismo lakse mogli rekonstruisati izmjene kroz log $q205 = myquery("select bodovi from komponentebodovi where student={$student} and predmet={$ponudakursa} and komponenta={$komponenta}"); if (mysql_num_rows($q205) < 1) { $ispitocjena = "/"; } else { $ispitocjena = mysql_result($q205, 0, 0); } // Izmjene fiksne komponente putem AJAHa $q210 = myquery("select dogadjaj, UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj like 'AJAH fiksna - upisani bodovi % za fiksnu komponentu {$komponenta} (predmet pp{$predmet}, student u{$student})' order by id desc"); while ($r210 = mysql_fetch_row($q210)) { $datum = date("d.m.Y. H:i:s", $r210[1]); $q220 = myquery("select ime,prezime from osoba where id=" . $r210[2]); if (mysql_num_rows($q220) > 0) { $korisnik = mysql_result($q220, 0, 0) . " " . mysql_result($q220, 0, 1); } else { $korisnik = "/nepoznat korisnik {$r210['2']}/"; } $rezultat = floatval(substr($r210[0], 29)); ?> document.getElementById('fiksnalog<?php echo $komponenta; ?> ').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> upisan rezultat <b><?php echo $rezultat; ?> </b> (<?php echo $korisnik; ?> , <?php echo $datum; ?> )<br />' + document.getElementById('fiksnalog<?php echo $komponenta; ?> ').innerHTML; <?php } // Masovni unosi - jednog dana kad bude /* $q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet pp$predmet' AND ABS(UNIX_TIMESTAMP(vrijeme)-$r100[1])<10"); // uzimamo apsolutnu razliku 10 sekundi, jer moze doci do malog kasnjenja prilikom unosa u log if (mysql_num_rows($q110)>0) { $datum = date("d.m.Y. H:i:s", mysql_result($q110,0,0)); $q120 = myquery("select ime,prezime from osoba where id=".mysql_result($q110,0,1)); if (mysql_num_rows($q120)>0) { $korisnik = mysql_result($q120,0,0)." ".mysql_result($q120,0,1); } else { $korisnik = "/nepoznat korisnik/"; } ?> document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?=$ispitocjena?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML; <? // Nema pod oznakom predmeta, pokusacemo ponudu kursa } else foreach ($pkovi as $ponudakursa) { $q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet p$ponudakursa' AND ABS(UNIX_TIMESTAMP(vrijeme)-$r100[1])<10"); if (mysql_num_rows($q110)>0) { $datum = date("d.m.Y. H:i:s", mysql_result($q110,0,0)); $q120 = myquery("select ime,prezime from osoba where id=".mysql_result($q110,0,1)); if (mysql_num_rows($q120)>0) { $korisnik = mysql_result($q120,0,0)." ".mysql_result($q120,0,1); } else { $korisnik = "/nepoznat korisnik/"; } ?> document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?=$ispitocjena?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML; <? } }*/ } /*$q100 = myquery("select i.id, UNIX_TIMESTAMP(i.vrijemeobjave) from ispit as i, komponenta as k where i.predmet=$predmet and i.akademska_godina=$ag and i.komponenta=k.id order by i.datum,i.komponenta"); while ($r100 = mysql_fetch_row($q100)) { // Utvrdjujemo ocjenu da bismo lakse mogli rekonstruisati izmjene kroz log $q105 = myquery("select ocjena from ispitocjene where ispit=$r100[0] and student=$student"); if (mysql_num_rows($q105)<1) $ispitocjena="/"; else $ispitocjena=mysql_result($q105,0,0); // Spisak izmjena ocjene $q110 = myquery("select dogadjaj, UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj like 'AJAH ispit - upisan novi rezultat % (ispit i$r100[0], student u$student)' or dogadjaj like 'AJAH ispit - izbrisan rezultat % (ispit i$r100[0], student u$student)' or dogadjaj like 'AJAH ispit - izmjena rezultata % (ispit i$r100[0], student u$student)' order by id desc"); while ($r110 = mysql_fetch_row($q110)) { $datum = date("d.m.Y. H:i:s", $r110[1]); $q120 = myquery("select ime,prezime from osoba where id=".$r110[2]); if (mysql_num_rows($q120)>0) { $korisnik = mysql_result($q120,0,0)." ".mysql_result($q120,0,1); } else { $korisnik = "/nepoznat korisnik $r110[2]/"; } if (strstr($r110[0], "upisan novi rezultat")) { $rezultat = floatval(substr($r110[0], 34)); if ($rezultat != $ispitocjena) $rezultat .= " ?"; $ispitocjena = "/"; ?> document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> upisan rezultat <b><?=$rezultat?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML; <? } else if (strstr($r110[0], "izbrisan rezultat")) { $rezultat = floatval(substr($r110[0], 31)); if ($ispitocjena != "/") $rezultat .= " ?"; else $ispitocjena=$rezultat; ?> document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> izbrisan rezultat (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML; <? } else if (preg_match("/izmjena rezultata ([\d\.]+) u ([\d\.]+)/", $r110[0], $matches)) { $starirezultat = floatval($matches[1]); $rezultat = floatval($matches[2]); if ($ispitocjena != $rezultat) $rezultat .= " ?"; $ispitocjena = $starirezultat; ?> document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> promijenjen rezultat u <b><?=$rezultat?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML; <? } } // Sakrivamo link na log ako nema ništa u njemu if ($ispitocjena == "/" && mysql_num_rows($q110)<1) { /* ?> toggleVisibilityObj('ispitlink<?=$r100[0]?>'); <?*/ /* } // Necemo traziti masovne unose ako student nije ni izlazio na ispit if ($ispitocjena == "/") continue; // Masovni unosi $q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet pp$predmet' AND ABS(UNIX_TIMESTAMP(vrijeme)-$r100[1])<10"); // uzimamo apsolutnu razliku 10 sekundi, jer moze doci do malog kasnjenja prilikom unosa u log if (mysql_num_rows($q110)>0) { $datum = date("d.m.Y. H:i:s", mysql_result($q110,0,0)); $q120 = myquery("select ime,prezime from osoba where id=".mysql_result($q110,0,1)); if (mysql_num_rows($q120)>0) { $korisnik = mysql_result($q120,0,0)." ".mysql_result($q120,0,1); } else { $korisnik = "/nepoznat korisnik ".mysql_result($q110,0,1)."/"; } ?> document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?=$ispitocjena?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML; <? // Nema pod oznakom predmeta, pokusacemo ponudu kursa } else foreach ($pkovi as $ponudakursa) { $q110 = myquery("select UNIX_TIMESTAMP(vrijeme), userid from log where dogadjaj='masovni rezultati ispita za predmet p$ponudakursa' AND ABS(UNIX_TIMESTAMP(vrijeme)-$r100[1])<10"); if (mysql_num_rows($q110)>0) { $datum = date("d.m.Y. H:i:s", mysql_result($q110,0,0)); $q120 = myquery("select ime,prezime from osoba where id=".mysql_result($q110,0,1)); if (mysql_num_rows($q120)>0) { $korisnik = mysql_result($q120,0,0)." ".mysql_result($q120,0,1); } else { $korisnik = "/nepoznat korisnik ".mysql_result($q110,0,1)."/"; } ?> document.getElementById('ispitlog<?=$r100[0]?>').innerHTML = '<img src="images/16x16/log_edit.png" width="16" height="16" align="center"> masovni rezultati ispita - <b><?=$ispitocjena?></b> (<?=$korisnik?>, <?=$datum?>)<br />' + document.getElementById('ispitlog<?=$r100[0]?>').innerHTML; <? } } }*/ ?> </SCRIPT> <?php }