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_projektneStrane() { //debug mod aktivan global $userid, $user_nastavnik, $user_student, $conf_files_path, $user_siteadmin; $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); $projekat = intval($_REQUEST['projekat']); $action = $_REQUEST['action']; //for project page only: $section = $_REQUEST['section']; $subaction = $_REQUEST['subaction']; $id = intval($_REQUEST['id']); //editing links, rss.... 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("projektne strane: korisnik nije na projektu {$projekat} (pp{$predmet}, ag{$ag})", 3); zamgerlog2("nije na projektu", $projekat); return; } } $params = getPredmetParams($predmet, $ag); $project = getProject($projekat); $members = fetchProjectMembers($project[id]); if ($params[zakljucani_projekti] == 0) { zamgerlog("projektne strane: jos nisu otvorene! (pp{$predmet}, ag{$ag})", 3); zamgerlog2("svi projekti su jos otkljucani", $predmet, $ag); return; } if ($user_student && !$user_siteadmin) { $linkPrefix = "?sta=student/projekti&akcija=projektnastranica&projekat={$projekat}&predmet={$predmet}&ag={$ag}"; } elseif ($user_nastavnik) { $linkPrefix = "?sta=nastavnik/projekti&akcija=projektna_stranica&projekat={$projekat}&predmet={$predmet}&ag={$ag}"; } else { return; } ?> <h2><?php echo filtered_output_string($project[naziv]); ?> </h2> <div class="links"> <ul class="clearfix"> <li><a href="<?php echo $linkPrefix; ?> ">Početna strana</a></li> <li><a href="<?php echo $linkPrefix . "§ion=info"; ?> ">Informacije o projektu</a></li> <li><a href="<?php echo $linkPrefix . "§ion=links"; ?> ">Korisni linkovi</a></li> <li><a href="<?php echo $linkPrefix . "§ion=rss"; ?> ">RSS feedovi</a></li> <li><a href="<?php echo $linkPrefix . "§ion=bl"; ?> ">Članci</a></li> <li><a href="<?php echo $linkPrefix . "§ion=file"; ?> ">Fajlovi</a></li> <li class="last"><a href="<?php echo $linkPrefix . "§ion=bb"; ?> ">Grupa za diskusiju</a></li> </ul> </div> <?php if (!isset($section)) { //display project start page ?> <div id="mainWrapper" class="clearfix"> <div id="leftBlocks"> <div class="blockRow clearfix"> <div class="block" id="latestPosts"> <a class="blockTitle" href="<?php echo $linkPrefix . "§ion=bb"; ?> " title="Grupa za diskusiju">Najnoviji postovi</a> <div class="items"> <?php $latestPosts = fetchLatestPostsForProject($project[id], 4); foreach ($latestPosts as $post) { ?> <div class="item"> <span class="date"><?php echo date('d.m H:i ', mysql2time($post[vrijeme])); ?> </span> <a href="<?php echo $linkPrefix . "§ion=bb&subaction=view&tid={$post['tema']}#p{$post['id']}"; ?> " title="<?php echo $post['naslov']; ?> " target="_blank"><?php $maxLen = 100; $len = strlen($post[naslov]); echo filtered_output_string(substr($post['naslov'], 0, $maxLen - 1)); if ($len > $maxLen) { echo '...'; } ?> </a> <span class="author"> - <?php echo filtered_output_string($post[osoba][prezime] . ' ' . $post[osoba][ime]); ?> </span> <div class="desc"><?php $maxLen = 200; $len = strlen($post[tekst]); echo filtered_output_string(substr($post['tekst'], 0, $maxLen - 1)); if ($len > $maxLen) { echo '...'; } ?> </div><!--desc--> </div><!--item--> <?php } ?> </div><!--items--> </div><!--block--> </div><!--blockRow--> <div class="blockRow clearfix"> <div class="block" id="latestArticles"> <a class="blockTitle" href="<?php echo $linkPrefix . "§ion=bl"; ?> " title="Članci">Najnoviji članci</a> <div class="items"> <?php $latestArticles = fetchArticlesForProject($project[id], 0, 4); foreach ($latestArticles as $article) { $author = getAuthorOfArticle($article[id]); ?> <div class="item"> <span class="date"><?php echo date('d.m H:i ', mysql2time($article[vrijeme])); ?> </span> <a href="<?php echo $linkPrefix . "§ion=bl&subaction=view&id={$article['id']}"; ?> " title="<?php echo $article['naslov']; ?> " target="_blank"><?php $maxLen = 100; $len = strlen($article[naslov]); echo filtered_output_string(substr($article['naslov'], 0, $maxLen - 1)); if ($len > $maxLen) { echo '...'; } ?> </a> <span class="author"> - <?php echo filtered_output_string($author[prezime] . ' ' . $author[ime]); ?> </span> <div class="desc"><?php $maxLen = 200; $len = strlen($article[tekst]); echo filtered_output_string(substr($article['tekst'], 0, $maxLen - 1)); if ($len > $maxLen) { echo '...'; } ?> </div><!--desc--> </div><!--item--> <?php } ?> </div><!--items--> </div><!--block--> </div><!--blockRow--> </div><!--leftBlocks--> <div id="rightBlocks" class="clearfix"> <div class="blockRow"> <div class="block" id="latestLinks"> <a class="blockTitle" href="<?php echo $linkPrefix . "§ion=links"; ?> " title="Korisni linkovi">Korisni linkovi</a> <div class="items"> <?php //get latest entries $links = fetchLinksForProject($project[id], 0, 4); foreach ($links as $link) { $url = $link[url]; $scheme = parse_url($url); $scheme = $scheme['scheme']; if ($scheme == '') { //only www part $url = 'http://' . $url; } $maxLen = 150; $len = strlen($link[naziv]); if ($len > $maxLen) { echo '...'; } $author = getAuthorOfLink($link[id]); ?> <div class="item"> <a href="<?php echo $url; ?> " title="<?php echo $link['naziv']; ?> " target="_blank"><?php $maxLen = 35; $len = strlen($link[naziv]); echo filtered_output_string(substr($link['naziv'], 0, $maxLen - 1)); if ($len > $maxLen) { echo '...'; } ?> </a> <span class="author"> - <?php echo filtered_output_string($author[prezime] . ' ' . $author[ime]); ?> </span> <?php if ($link[opis] != '') { ?> <div class="desc"><?php $maxLen = 200; $len = strlen($link[opis]); echo filtered_output_string(substr($link['opis'], 0, $maxLen - 1)); if ($len > $maxLen) { echo '...'; } ?> </div><!--desc--> <?php } ?> </div><!--item--> <?php } //foreach ?> </div><!--items--> </div><!--block--> </div><!--blockRow--> <div class="blockRow"> <div class="block" id="latestRSS"> <a class="blockTitle" href="<?php echo $linkPrefix . "§ion=rss"; ?> " title="RSS feedovi">RSS feedovi</a> <div class="items"> <?php //get latest entries $links = fetchRSSForProject($project[id], 0, 4); foreach ($links as $link) { $url = $link[url]; $scheme = parse_url($url); $scheme = $scheme['scheme']; if ($scheme == '') { //only www part $url = 'http://' . $url; } $maxLen = 150; $len = strlen($link[naziv]); if ($len > $maxLen) { echo '...'; } $author = getAuthorOfRSS($link[id]); ?> <div class="item"> <a href="<?php echo $url; ?> " title="<?php echo $link['naziv']; ?> " target="_blank"><?php $maxLen = 35; $len = strlen($link[naziv]); echo filtered_output_string(substr($link['naziv'], 0, $maxLen - 1)); if ($len > $maxLen) { echo '...'; } ?> </a> <span class="author"> - <?php echo filtered_output_string($author[prezime] . ' ' . $author[ime]); ?> </span> <?php if ($link[opis] != '') { ?> <div class="desc"><?php $maxLen = 200; $len = strlen($link[opis]); echo filtered_output_string(substr($link['opis'], 0, $maxLen - 1)); if ($len > $maxLen) { echo '...'; } ?> </div><!--desc--> <?php } ?> </div><!--item--> <?php } //foreach ?> </div><!--items--> </div><!--block--> </div><!--blockRow--> <div class="blockRow"> <div class="block" id="latestFiles"> <a class="blockTitle" href="<?php echo $linkPrefix . "§ion=file"; ?> " title="Fajlovi">Fajlovi</a> <div class="items"> <?php //get latest entries $files = fetchFilesForProjectLatestRevisions($project[id], 0, 4); foreach ($files as $file) { $author = getAuthorOfFile($file[id]); ?> <div class="item"> <span class="date"><?php echo date('d.m H:i ', mysql2time($file[vrijeme])); ?> </span> <a href="<?php echo "index.php?sta=common/attachment&tip=projekat&projekat={$projekat}&id={$file['id']}"; ?> " title="<?php echo $file['filename']; ?> " ><?php $maxLen = 100; $len = strlen($file[filename]); echo filtered_output_string(substr($file['filename'], 0, $maxLen - 1)); if ($len > $maxLen) { echo '...'; } ?> </a> <span class="author"> - <?php echo filtered_output_string($author[prezime] . ' ' . $author[ime]); ?> </span> </div><!--item--> <?php } //foreach ?> </div><!--items--> </div><!--block--> </div><!--blockRow--> </div><!--rightBlocks--> </div><!--mainWrapper--> <?php } else { if ($section == 'info') { // display project info ?> <h2>Informacije o projektu</h2> <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 filtered_output_string($project['naziv']); ?> </td> </tr> <tr> <th width="200" align="left" valign="top" scope="row">Prijavljeni studenti</th> <td width="490" align="left" valign="top"> <?php if (empty($members)) { echo 'Nema prijavljenih studenata.'; } else { ?> <ul> <?php foreach ($members as $member) { ?> <li><?php echo filtered_output_string($member[prezime] . ' ' . $member[ime] . ', ' . $member[brindexa]); ?> </li> <?php } ?> </ul> <?php } ?> </td> </tr> <tr> <th width="200" align="left" valign="top" scope="row">Opis</th> <td width="490" align="left" valign="top"><?php echo filtered_output_string($project['opis']); ?> </td> </tr> </table> <?php } elseif ($section == 'links') { //links management $linkPrefix .= '§ion=links'; ?> <h2>Korisni linkovi</h2> <div class="links" id="link"> <ul class="clearfix"> <li><a href="<?php echo $linkPrefix; ?> ">Lista linkova</a></li> <li><a href="<?php echo $linkPrefix . "&subaction=add"; ?> ">Novi link</a></li> </ul> </div> <?php if (!isset($subaction)) { $rowsPerPage = 20; $pageNum = 1; if (isset($_REQUEST['page'])) { $pageNum = $_REQUEST['page']; } // counting the offset $offset = ($pageNum - 1) * $rowsPerPage; //display links for this project, with links to edit and delete $links = fetchLinksForProject($project[id], $offset, $rowsPerPage); foreach ($links as $link) { if (isUserAuthorOfLink($link[id], $userid)) { ?> <div class="links" id="link"> <ul class="clearfix"> <li><a href="<?php echo $linkPrefix . "&subaction=edit&id={$link['id']}"; ?> ">Uredi</a></li> <li><a href="<?php echo $linkPrefix . "&subaction=del&id={$link['id']}"; ?> ">Briši</a></li> </ul> </div> <?php } //if user is author of this item ?> <table class="linkovi" border="0" cellspacing="0" cellpadding="2"> <tr> <th width="200" align="left" valign="top" scope="row">URL</th> <td width="490" align="left" valign="top"> <?php $url = $link[url]; $scheme = parse_url($url); $scheme = $scheme['scheme']; if ($scheme == '') { //only www part $url = 'http://' . $url; } ?> <a href="<?php echo $url; ?> " title="<?php echo $link['naziv']; ?> " target="_blank"><?php echo filtered_output_string($link[naziv]); ?> </a> </td> </tr> <?php if ($link['opis'] != '') { ?> <tr> <th width="200" align="left" valign="top" scope="row">Opis</th> <td width="490" align="left" valign="top"><?php echo filtered_output_string($link['opis']); ?> </td> </tr> <?php } //opis ?> </table> <?php } //foreach link $numrows = getCountLinksForProject($project[id]); $maxPage = ceil($numrows / $rowsPerPage); $self = $linkPrefix; if ($maxPage > 0) { echo "<span class=\"newsPages\">"; if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"{$self}&page={$page}\">[Prethodna]</a> "; $first = " <a href=\"{$self}&page=1\">[Prva]</a> "; } if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"{$self}&page={$page}\">[Sljedeća]</a> "; $last = " <a href=\"{$self}&page={$maxPage}\">[Zadnja]</a> "; } echo $first . $prev . " Strana <strong>{$pageNum}</strong> od ukupno <strong>{$maxPage}</strong> " . $next . $last; echo "</span>"; //newsPages span } } else { if ($subaction == 'add') { if (!isset($_REQUEST['submit'])) { ?> <h3>Novi link</h3> <?php print genform("POST", "addForm"); ?> <div id="formDiv"> Polja sa * su obavezna. <br /> <div class="row"> <span class="label">Naziv *</span> <span class="formw"><input name="naziv" type="text" id="naziv" size="70" /></span> </div> <div class="row"> <span class="label">URL *</span> <span class="formw"><input name="url" type="text" id="url" size="70" /></span> </div> <div class="row"> <span class="label">Opis</span> <span class="formw"><textarea name="opis" cols="60" rows="15" wrap="physical" id="opis"></textarea></span> </div> <div class="row"> <span class="formw" style="margin-left:150px;"><input name="submit" type="submit" id="submit" value="Potvrdi"/></span> </div> </div><!--formDiv--> </form> <?php } else { $errorText = formProcess_links('add'); if ($errorText == '') { nicemessage('Novi link uspješno dodan.'); zamgerlog("dodao link na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("dodao link na projektu", $projekat); $link = $linkPrefix; } else { niceerror($errorText); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } //submitted the form } elseif ($subaction == 'edit') { if (!isUserAuthorOfLink($id, $userid)) { return; } //edit item if (!isset($_REQUEST['submit'])) { $entry = getLink($id); ?> <h3>Uredi link</h3> <?php print genform("POST", "editForm"); ?> <div id="formDiv"> Polja sa * su obavezna. <br /> <div class="row"> <span class="label">Naziv *</span> <span class="formw"><input name="naziv" type="text" id="naziv" size="70" value="<?php echo $entry['naziv']; ?> " /></span> </div> <div class="row"> <span class="label">URL *</span> <span class="formw"><input name="url" type="text" id="url" size="70" value="<?php echo $entry['url']; ?> " /></span> </div> <div class="row"> <span class="label">Opis</span> <span class="formw"><textarea name="opis" cols="60" rows="15" wrap="physical" id="opis"><?php echo $entry['opis']; ?> </textarea></span> </div> <div class="row"> <span class="formw" style="margin-left:150px;"><input name="submit" type="submit" id="submit" value="Potvrdi"/></span> </div> </div><!--formDiv--> </form> <?php } else { $errorText = formProcess_links('edit'); if ($errorText == '') { nicemessage('Uspješno ste uredili link.'); zamgerlog("uredio link na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("uredio link na projektu", $projekat); $link = $linkPrefix; } else { //an error occured trying to process the form niceerror($errorText); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } //submitted the form } elseif ($subaction == 'del') { if (!isUserAuthorOfLink($id, $userid)) { return; } //delete item if (isset($id) && is_int($id) && $id > 0) { if (!isset($_REQUEST['c'])) { echo "Da li ste sigurni da zelite obrisati ovaj link?<br />"; echo '<a href="' . $linkPrefix . '&subaction=del&id=' . $id . '&c=true">Da</a> | <a href="' . $linkPrefix . '">Odustani</a>'; } else { if ($_REQUEST['c'] == 'true') { //delete the record if (deleteLink($id)) { nicemessage('Uspješno ste obrisali link.'); zamgerlog("obrisao link na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("obrisao link na projektu", $projekat); $link = $linkPrefix; } else { niceerror('Doslo je do greske prilikom brisanja linka. Molimo kontaktirajte administratora.'); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } } //else isset c get parameter } //id is okay } //subaction == del } //subaction set } elseif ($section == 'rss') { //links management $linkPrefix .= '§ion=rss'; ?> <h2>RSS feedovi</h2> <div class="links clearfix" id="rss"> <ul> <li><a href="<?php echo $linkPrefix; ?> ">Lista RSS feedova</a></li> <li><a href="<?php echo $linkPrefix . "&subaction=add"; ?> ">Novi RSS feed</a></li> </ul> </div> <?php if (!isset($subaction)) { $rowsPerPage = 20; $pageNum = 1; if (isset($_REQUEST['page'])) { $pageNum = $_REQUEST['page']; } // counting the offset $offset = ($pageNum - 1) * $rowsPerPage; //display links for this project, with links to edit and delete $feeds = fetchRSSForProject($project[id], $offset, $rowsPerPage); foreach ($feeds as $link) { if (isUserAuthorOfRSS($link[id], $userid)) { ?> <div class="links clearfix" id="rss"> <ul> <li><a href="<?php echo $linkPrefix . "&subaction=edit&id={$link['id']}"; ?> ">Uredi</a></li> <li><a href="<?php echo $linkPrefix . "&subaction=del&id={$link['id']}"; ?> ">Briši</a></li> </ul> </div> <?php } //if user is author of this item ?> <table class="rss" border="0" cellspacing="0" cellpadding="2"> <tr> <th width="200" align="left" valign="top" scope="row">URL</th> <td width="490" align="left" valign="top"> <?php $url = $link[url]; $scheme = parse_url($url); $scheme = $scheme['scheme']; if ($scheme == '') { //only www part $url = 'http://' . $url; } ?> <a href="<?php echo $url; ?> " title="<?php echo $link['naziv']; ?> " target="_blank"><?php echo filtered_output_string($link[naziv]); ?> </a> </td> </tr> <?php if ($link['opis'] != '') { ?> <tr> <th width="200" align="left" valign="top" scope="row">Opis</th> <td width="490" align="left" valign="top"><?php echo filtered_output_string($link['opis']); ?> </td> </tr> <?php } //opis ?> <tr> <td colspan="2"> <?php global $conf_files_path; //Ukljucimo koristenje globalne varijable koja pokazuje na privatni direktorij sa datotekama koji nije dostupan preko weba $hashfromURL = hash("md5", $url); $cachefile = ""; //Provjeri postojanost $conf_files_path/cache/rss direktorija if (file_exists($conf_files_path . "/cache")) { if (!file_exists($conf_files_path . "/cache/rss")) { mkdir($conf_files_path . "/cache/rss"); } $cachefile = $conf_files_path . "/cache/rss/" . $hashfromURL . ".html"; } else { if (mkdir($conf_files_path . "/cache")) { if (mkdir($conf_files_path . "/cache/rss/")) { $cachefile = $conf_files_path . "/cache/rss/" . $hashfromURL . ".html"; } } } $cachetime = 5 * 60; //5 minuta TODO:Pri deployment-u povecati na sat-dva. //Serviraj is kesha ako je mladji od $cachetime if (file_exists($cachefile) && time() - filemtime($cachefile) < $cachetime) { include $cachefile; print "RSS ucitan iz kesha!"; } else { //Ucitaj RSS ponovo $XMLfilename = $url; //Pocni dump buffera ob_start(); include "lib/rss2html.php"; //HTML parsiran sadrzaj RSS-a //Otvori kesh fajl za pisanje $fp = fopen($cachefile, 'w'); //Sacuvaj sadrzaj izlaznog buffer-a u fajl fwrite($fp, ob_get_contents()); //zatvori fajl fclose($fp); //Posalji izlaz na browser ob_end_flush(); print "RSS osvjezen - feed ponovo ucitan!"; } ?> </td> </tr> </table> <?php } //foreach link $numrows = getCountRSSForProject($project[id]); $maxPage = ceil($numrows / $rowsPerPage); $self = $linkPrefix; if ($maxPage > 0) { echo "<span class=\"newsPages\">"; if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"{$self}&page={$page}\">[Prethodna]</a> "; $first = " <a href=\"{$self}&page=1\">[Prva]</a> "; } if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"{$self}&page={$page}\">[Sljedeća]</a> "; $last = " <a href=\"{$self}&page={$maxPage}\">[Zadnja]</a> "; } echo $first . $prev . " Strana <strong>{$pageNum}</strong> od ukupno <strong>{$maxPage}</strong> " . $next . $last; echo "</span>"; //newsPages span } } else { if ($subaction == 'add') { if (!isset($_REQUEST['submit'])) { ?> <h3>Novi RSS feed</h3> <?php print genform("POST", "addForm"); ?> <div id="formDiv"> Polja sa * su obavezna. <br /> <div class="row"> <span class="label">Naziv *</span> <span class="formw"><input name="naziv" type="text" id="naziv" size="70" /></span> </div> <div class="row"> <span class="label">URL *</span> <span class="formw"><input name="url" type="text" id="url" size="70" /></span> </div> <div class="row"> <span class="label">Opis</span> <span class="formw"><textarea name="opis" cols="60" rows="15" wrap="physical" id="opis"></textarea></span> </div> <div class="row"> <span class="formw" style="margin-left:150px;"><input name="submit" type="submit" id="submit" value="Potvrdi"/></span> </div> </div><!--formDiv--> </form> <?php } else { $errorText = formProcess_rss('add'); if ($errorText == '') { nicemessage('Novi RSS feed uspješno dodan.'); zamgerlog("dodao novi rss feed na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("dodao rss feed na projektu", $projekat); $link = $linkPrefix; } else { niceerror($errorText); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } //submitted the form } elseif ($subaction == 'edit') { if (!isUserAuthorOfRSS($id, $userid)) { return; } //edit item if (!isset($_REQUEST['submit'])) { $entry = getRSS($id); ?> <h3>Uredi RSS feed</h3> <?php print genform("POST", "editForm"); ?> <div id="formDiv"> Polja sa * su obavezna. <br /> <div class="row"> <span class="label">Naziv *</span> <span class="formw"><input name="naziv" type="text" id="naziv" size="70" value="<?php echo $entry['naziv']; ?> " /></span> </div> <div class="row"> <span class="label">URL *</span> <span class="formw"><input name="url" type="text" id="url" size="70" value="<?php echo $entry['url']; ?> " /></span> </div> <div class="row"> <span class="label">Opis</span> <span class="formw"><textarea name="opis" cols="60" rows="15" wrap="physical" id="opis"><?php echo $entry['opis']; ?> </textarea></span> </div> <div class="row"> <span class="formw" style="margin-left:150px;"><input name="submit" type="submit" id="submit" value="Potvrdi"/></span> </div> </div><!--formDiv--> </form> <?php } else { $errorText = formProcess_rss('edit'); if ($errorText == '') { nicemessage('Uspješno ste uredili RSS feed.'); zamgerlog("uredio rss feed na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("uredio rss feed na projektu", $projekat); $link = $linkPrefix; } else { //an error occured trying to process the form niceerror($errorText); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } //submitted the form } elseif ($subaction == 'del') { if (!isUserAuthorOfRSS($id, $userid)) { return; } //delete item if (isset($id) && is_int($id) && $id > 0) { if (!isset($_REQUEST['c'])) { echo "Da li ste sigurni da zelite obrisati ovaj RSS feed?<br />"; echo '<a href="' . $linkPrefix . '&subaction=del&id=' . $id . '&c=true">Da</a> | <a href="' . $linkPrefix . '">Odustani</a>'; } else { if ($_REQUEST['c'] == 'true') { //delete the record if (deleteRSS($id)) { nicemessage('Uspješno ste obrisali RSS feed.'); zamgerlog("obrisao rss feed na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("obrisao rss feed na projektu", $projekat); $link = $linkPrefix; } else { niceerror('Doslo je do greske prilikom brisanja RSS feeda. Molimo kontaktirajte administratora.'); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } } //else isset c get parameter } //id is okay } //subaction == del } //subaction set } elseif ($section == 'bl') { //links management $linkPrefix .= '§ion=bl'; ?> <h2>Članci</h2> <div class="links clearfix" id="bl"> <ul> <li><a href="<?php echo $linkPrefix; ?> ">Lista članaka</a></li> <li><a href="<?php echo $linkPrefix . "&subaction=add"; ?> ">Novi članak</a></li> </ul> </div> <?php if (!isset($subaction)) { $rowsPerPage = 20; $pageNum = 1; if (isset($_REQUEST['page'])) { $pageNum = $_REQUEST['page']; } // counting the offset $offset = ($pageNum - 1) * $rowsPerPage; $articles = fetchArticlesForProject($project[id], $offset, $rowsPerPage); foreach ($articles as $article) { ?> <div class="article_summary clearfix"> <?php if (!empty($article[slika])) { ?> <div class="imgCont"> <a href="<?php echo "index.php?sta=common/articleImageDownload&projekat={$projekat}&predmet={$predmet}&ag={$ag}&a={$article['id']}&u={$article['osoba']}&i={$article['slika']}"; ?> " target="_blank"> <img src="<?php echo "index.php?sta=common/articleImageDownload&projekat={$projekat}&predmet={$predmet}&ag={$ag}&a={$article['id']}&u={$article['osoba']}&i={$article['slika']}"; ?> " /> </a> </div> <?php } ?> <div class="contentCont" <?php if (empty($article[slika])) { echo 'style="margin-left: 0;"'; } ?> > <h1> <a href="<?php echo $linkPrefix . "&subaction=view&id={$article['id']}"; ?> " title="<?php echo $article['naslov']; ?> "><?php echo filtered_output_string($article['naslov']); ?> </a> </h1> <div class="details"> <?php $author = getAuthorOfArticle($article[id]); ?> Autor: <?php echo filtered_output_string($author[ime] . ' ' . $author[prezime]); ?> <br /> Datum: <?php echo date('d.m.Y', strtotime($article[vrijeme])); ?> </div><!--details--> <?php if (isUserAuthorOfArticle($article[id], $userid) == true) { ?> <div class="buttons"> <a href="<?php echo $linkPrefix . "&subaction=edit&id={$article['id']}"; ?> " title="Uredi ovaj članak">Uredi</a> | <a href="<?php echo $linkPrefix . "&subaction=del&id={$article['id']}"; ?> " title="Briši ovaj članak">Briši</a> </div><!--buttons--> <?php } ?> <div class="text"> <?php $len = strlen($article[tekst]); if (!empty($article[slika])) { $maxLen = 400; } else { $maxLen = 800; } echo filtered_output_string(substr($article['tekst'], 0, $maxLen - 1)); if ($len > $maxLen) { echo '...'; } ?> </div><!--text--> </div><!--contentCont--> </div><!--article_summary--> <?php } //foreach article $numrows = getCountArticlesForProject($project[id]); $maxPage = ceil($numrows / $rowsPerPage); $self = $linkPrefix; if ($maxPage > 0) { echo "<span class=\"newsPages\">"; if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"{$self}&page={$page}\">[Prethodna]</a> "; $first = " <a href=\"{$self}&page=1\">[Prva]</a> "; } if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"{$self}&page={$page}\">[Sljedeća]</a> "; $last = " <a href=\"{$self}&page={$maxPage}\">[Zadnja]</a> "; } echo $first . $prev . " Strana <strong>{$pageNum}</strong> od ukupno <strong>{$maxPage}</strong> " . $next . $last; echo "</span>"; //newsPages span } } else { if ($subaction == 'view') { $article = getArticle($id); if (empty($article)) { zamgerlog("projektne strane: nepostojeci clanak sa IDom {$id}, projekat {$projekat} (pp{$predmet}, ag{$ag})", 3); zamgerlog2("nepostojeci clanak na projektu", $id, $projekat); return; } ?> <div class="article_full clearfix"> <div class="contentCont clearfix"> <h1> <a href="<?php echo $linkPrefix . "?subaction=view&id={$article['id']}"; ?> " title="<?php echo $article['naslov']; ?> "><?php echo filtered_output_string($article['naslov']); ?> </a> </h1> <div class="details"> <?php $author = getAuthorOfArticle($article[id]); ?> Autor: <?php echo filtered_output_string($author[ime] . ' ' . $author[prezime]); ?> <br /> Datum: <?php echo date('d.m.Y', strtotime($article[vrijeme])); ?> </div><!--details--> <?php if (isUserAuthorOfArticle($article[id], $userid) == true) { ?> <div class="buttons"> <a href="<?php echo $linkPrefix . "&subaction=edit&id={$article['id']}"; ?> " title="Uredi ovaj članak">Uredi</a> | <a href="<?php echo $linkPrefix . "&subaction=del&id={$article['id']}"; ?> " title="Briši ovaj članak">Briši</a> </div><!--buttons--> <?php } ?> <?php if (!empty($article[slika])) { ?> <div class="imgCont"> <a href="<?php echo "index.php?sta=common/articleImageDownload&projekat={$projekat}&predmet={$predmet}&ag={$ag}&a={$article['id']}&u={$article['osoba']}&i={$article['slika']}"; ?> " target="_blank"> <img src="<?php echo "index.php?sta=common/articleImageDownload&projekat={$projekat}&predmet={$predmet}&ag={$ag}&a={$article['id']}&u={$article['osoba']}&i={$article['slika']}"; ?> " /> </a> </div> <?php } ?> <div class="text"><?php echo filtered_output_string($article['tekst']); ?> </div><!--text--> </div><!--contentCont--> </div><!--article_full--> <a id="backLink" href="<?php echo $linkPrefix; ?> ">Povratak na listu članaka</a> <?php } elseif ($subaction == 'add') { if (!isset($_REQUEST['submit'])) { ?> <h3>Novi članak</h3> <?php print genform("POST", "addForm\" enctype=\"multipart/form-data\" "); ?> <div id="formDiv"> Polja sa * su obavezna. <br /> <div class="row"> <span class="label">Naslov *</span> <span class="formw"><input name="naslov" type="text" id="naslov" size="70" /></span> </div> <div class="row"> <span class="label">Tekst</span> <span class="formw"><textarea name="tekst" cols="60" rows="15" wrap="physical" id="tekst"></textarea></span> </div> <div class="row"> <span class="label">Slika</span> <span class="formw"> <input name="image" type="file" id="image" size="60" /> </span><br /><br /> Dozvoljeni tipovi slike: jpg, jpeg, gif, png <br /> </div> <div class="row"> <span class="formw" style="margin-left:150px;"><input name="submit" type="submit" id="submit" value="Potvrdi"/></span> </div> </div><!--formDiv--> </form> <?php } else { $errorText = formProcess_bl('add'); if ($errorText == '') { nicemessage('Novi članak uspješno dodan.'); zamgerlog("dodao novi clanak na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("dodao clanak na projektu", $projekat); $link = $linkPrefix; } else { niceerror($errorText); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } //submitted the form } elseif ($subaction == 'edit') { if (!isUserAuthorOfArticle($id, $userid)) { return; } //edit item if (!isset($_REQUEST['submit'])) { $entry = getArticle($id); ?> <h3>Uredi članak</h3> <?php print genform("POST", "editForm\" enctype=\"multipart/form-data\" "); ?> <div id="formDiv"> Polja sa * su obavezna. <br /> <div class="row"> <span class="label">Naslov *</span> <span class="formw"><input name="naslov" type="text" id="naslov" size="70" value="<?php echo $entry['naslov']; ?> " /></span> </div> <div class="row"> <span class="label">Tekst</span> <span class="formw"><textarea name="tekst" cols="60" rows="15" wrap="physical" id="tekst"><?php echo $entry['tekst']; ?> </textarea></span> </div> <?php if ($entry['slika'] != '') { //if the image exists, display it ?> <div class="row"> <span class="label">Trenutna slika</span> <span class="formw"><img src="<?php echo "index.php?sta=common/articleImageDownload&projekat={$projekat}&predmet={$predmet}&ag={$ag}&a={$article['id']}&u={$entry['osoba']}&i={$entry['slika']}"; ?> " /> </span> </div> <div class="row"> <span class="label">Briši sliku</span> <span class="formw"><input name="delete" type="checkbox" id="delete" value="delete" /></span> </div> <?php } //if image is present ?> <div class="row"> <span class="label"><?php if ($entry['slika'] != '') { echo "ILI: Zamijeni sliku"; } else { echo "Slika"; } ?> </span> <span class="formw"> <input name="image" type="file" id="image" size="50" /> </span><br /><br /> Dozvoljeni tipovi slike: jpg, jpeg, gif, png <br /> </div> <div class="row"> <span class="formw" style="margin-left:150px;"><input name="submit" type="submit" id="submit" value="Potvrdi"/></span> </div> </div><!--formDiv--> </form> <?php } else { $errorText = formProcess_bl('edit'); if ($errorText == '') { nicemessage('Uspješno ste uredili članak.'); zamgerlog("uredio clanak na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("uredio clanak na projektu", $projekat); $link = $linkPrefix; } else { //an error occured trying to process the form niceerror($errorText); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } //submitted the form } elseif ($subaction == 'del') { //delete item if (isset($id) && is_int($id) && $id > 0) { if (isUserAuthorOfArticle($id, $userid) == false) { return; } if (!isset($_REQUEST['c'])) { echo "Da li ste sigurni da zelite obrisati ovaj članak? <br />"; echo '<a href="' . $linkPrefix . '&subaction=del&id=' . $id . '&c=true">Da</a> | <a href="' . $linkPrefix . '">Odustani</a>'; } else { if ($_REQUEST['c'] == 'true') { //delete the record if (deleteArticle($id)) { nicemessage('Uspješno ste obrisali članak.'); zamgerlog("obrisao clanak na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("obrisao clanak na projektu", $projekat); $link = $linkPrefix; } else { niceerror('Došlo je do greske prilikom brisanja članka. Molimo kontaktirajte administratora.'); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } } //else isset c get parameter } //id is okay } //subaction == del } //subaction set } elseif ($section == 'file') { //files management $linkPrefix .= '§ion=file'; ?> <h2>Fajlovi</h2> <div class="links clearfix" id="rss"> <ul> <li><a href="<?php echo $linkPrefix; ?> ">Lista fajlova</a></li> <li><a href="<?php echo $linkPrefix . "&subaction=add"; ?> ">Novi fajl</a></li> </ul> </div> <?php if (!isset($subaction)) { $rowsPerPage = 20; $pageNum = 1; if (isset($_REQUEST['page'])) { $pageNum = $_REQUEST['page']; } // counting the offset $offset = ($pageNum - 1) * $rowsPerPage; //display files for this project, with links to edit and delete $files = fetchFilesForProjectAllRevisions($project[id], $offset, $rowsPerPage); ?> <table class="files_table" border="0" cellspacing="0" cellpadding="0"> <tr> <th scope="col" class="creation_date">Datum kreiranja</th> <th scope="col" class="author">Autor</th> <th scope="col" class="revision">Revizija</th> <th scope="col" class="name">Naziv</th> <th scope="col" class="filesize">Veličina</th> <th scope="col" class="options">Opcije</th> </tr> <?php foreach ($files as $file) { $lastRevisionId = 0; $firstRevisionId = count($file) > 0 ? count($file) - 1 : 0; $author = getAuthorOfFile($file[$lastRevisionId][id]); ?> <tr> <td class="creation_date"><?php echo date('d.m.Y H:i:s', mysql2time($file[$lastRevisionId][vrijeme])); ?> </td><!--vrijeme--> <td class="author"><?php echo filtered_output_string($author['ime'] . ' ' . $author['prezime']); ?> </td><!--author--> <td class="revision">v<?php echo $file[$lastRevisionId][revizija]; ?> </td><!--revizija--> <td class="filename"><?php if (count($file) > 1) { ?> <a href="#" onclick="toggleFileRevisions('file_<?php echo $file[$lastRevisionId][id]; ?> _revisions')"><?php echo filtered_output_string($file[$lastRevisionId][filename]); ?> </a> <?php } else { ?> <?php echo filtered_output_string($file[$lastRevisionId][filename]); ?> <?php } ?> </td><!--filename--> <td class="filesize"><?php $lokacijafajlova = "{$conf_files_path}/projekti/fajlovi/{$projekat}/" . $file[$lastRevisionId][osoba] . "/" . $file[$lastRevisionId][filename] . '/v' . $file[$lastRevisionId][revizija] . '/'; $filepath = $lokacijafajlova . $file[$lastRevisionId][filename]; $filesize = filesize($filepath); echo nicesize($filesize); ?> </td><!--filesize--> <td class="options"> <a href="<?php echo 'index.php?sta=common/attachment' . "&tip=projekat&projekat={$projekat}&id=" . $file[$lastRevisionId][id]; ?> ">Snimi</a> <?php if (isUserAuthorOfFile($file[$lastRevisionId][id], $userid)) { ?> <a href="<?php echo $linkPrefix . "&subaction=edit&id=" . $file[$firstRevisionId]['id']; ?> ">Uredi</a> <a href="<?php echo $linkPrefix . "&subaction=del&id=" . $file[$firstRevisionId]['id']; ?> ">Briši</a> <?php } //if user is author of this item ?> </td><!--options--> </tr><!--file_leading--> <?php if (count($file) > 1) { for ($i = 1; $i < count($file); $i++) { $revision = $file[$i]; $author = getAuthorOfFile($revision[id]); ?> <tr class="file_<?php echo $file[$lastRevisionId][id]; ?> _revisions" style="display: none;" id="file_revisions"> <td class="creation_date"><?php echo date('d.m.Y H:i:s', mysql2time($revision[vrijeme])); ?> </td><!--vrijeme--> <td class="author"><?php echo filtered_output_string($author['ime'] . ' ' . $author['prezime']); ?> </td><!--author--> <td class="revision">v<?php echo $revision[revizija]; ?> </td><!--revizija--> <td class="filename"><?php echo filtered_output_string($revision[filename]); ?> </td><!--filename--> <td class="filesize"><?php $lokacijafajlova = "{$conf_files_path}/projekti/fajlovi/{$projekat}/" . $revision[osoba] . "/" . $revision[filename] . '/v' . $revision[revizija] . '/'; $filepath = $lokacijafajlova . $revision[filename]; $filesize = filesize($filepath); echo nicesize($filesize); ?> </td><!--filesize--> <td class="options"> <a href="<?php echo 'index.php?sta=common/attachment' . "&tip=projekat&projekat={$projekat}&id=" . $revision[id]; ?> ">Snimi</a> </td><!--options--> </tr><!--file_revision--> <?php } //foreach revision } //if count files > 1 } //foreach file ?> </table> <!--files_table--> <?php $numrows = getCountFilesForProjectWithoutRevisions($project[id]); $maxPage = ceil($numrows / $rowsPerPage); $self = $linkPrefix; if ($maxPage > 0) { echo "<span class=\"newsPages\">"; if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"{$self}&page={$page}\">[Prethodna]</a> "; $first = " <a href=\"{$self}&page=1\">[Prva]</a> "; } if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"{$self}&page={$page}\">[Sljedeća]</a> "; $last = " <a href=\"{$self}&page={$maxPage}\">[Zadnja]</a> "; } echo $first . $prev . " Strana <strong>{$pageNum}</strong> od ukupno <strong>{$maxPage}</strong> " . $next . $last; echo "</span>"; //newsPages span } ?> <script type="text/javascript"> function getElementsByClassName( strClassName, obj ) { var ar = arguments[2] || new Array(); var re = new RegExp("\\b" + strClassName + "\\b", "g"); if ( re.test(obj.className) ) { ar.push( obj ); } for ( var i = 0; i < obj.childNodes.length; i++ ) getElementsByClassName( strClassName, obj.childNodes[i], ar ); return ar; } function toggleFileRevisions(divID) { var aryClassElements = getElementsByClassName( divID, document.body ); for ( var i = 0; i < aryClassElements.length; i++ ) { if (aryClassElements[i].style.display == '') aryClassElements[i].style.display = 'none'; else aryClassElements[i].style.display = ''; } } </script> <?php } else { if ($subaction == 'add') { if (!isset($_REQUEST['submit'])) { ?> <h3>Novi fajl</h3> <?php print genform("POST", "addForm\" enctype=\"multipart/form-data\" "); ?> <div id="formDiv"> Polja sa * su obavezna. <br /> <b>Limit za upload je 20MB.</b> <br /> <div class="row"> <span class="label">Fajl *</span> <span class="formw"> <input name="filename" type="file" id="filename" size="60" /> <input type="hidden" name="MAX_FILE_SIZE" value="20971520"> </span> </div> <div class="row"> <span class="formw" style="margin-left:150px;"><input name="submit" type="submit" id="submit" value="Potvrdi"/></span> </div> </div><!--formDiv--> </form> <?php } else { $errorText = formProcess_file('add'); if ($errorText == '') { nicemessage('Novi fajl uspješno dodan.'); zamgerlog("dodao novi fajl na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("dodao fajl na projektu", $projekat); $link = $linkPrefix; } else { niceerror($errorText); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } //submitted the form } elseif ($subaction == 'edit') { if (!isUserAuthorOfFile($id, $userid)) { return; } if (!isThisFileFirstRevision($id)) { return; } //edit item if (!isset($_REQUEST['submit'])) { $entry = getFileFirstRevision($id); $lastRevisionEntry = getFileLastRevision($id); ?> <h3>Uredi fajl</h3> <?php print genform("POST", "editForm\" enctype=\"multipart/form-data\" "); ?> <div id="formDiv"> Polja sa * su obavezna. <br /> <b>Limit za upload je 20MB.</b> <br /> <div class="row"> <span class="label">Trenutni fajl</span> <span class="formw"><a href="<?php echo 'index.php?sta=common/attachment' . "&tip=projekat&projekat={$projekat}&id=" . $lastRevisionEntry[id]; ?> " > <?php echo filtered_output_string($lastRevisionEntry[filename]); ?> </a> </span> </div> <div class="row"> <span class="label">Zamijeni fajl</span> <span class="formw"> <input name="filename" type="file" id="filename" size="50" /> <input type="hidden" name="MAX_FILE_SIZE" value="20971520"> </span> </div> <div class="row"> <span class="formw" style="margin-left:150px;"><input name="submit" type="submit" id="submit" value="Potvrdi"/></span> </div> </div><!--formDiv--> </form> <?php } else { $errorText = formProcess_file('edit'); if ($errorText == '') { nicemessage('Uspješno ste uredili fajl.'); zamgerlog("uredio fajl na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("uredio fajl na projektu", $projekat); $link = $linkPrefix; } else { //an error occured trying to process the form niceerror($errorText); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } //submitted the form } elseif ($subaction == 'del') { if (!isUserAuthorOfFile($id, $userid)) { return; } if (!isThisFileFirstRevision($id)) { return; } //delete item if (isset($id) && is_int($id) && $id > 0) { if (!isset($_REQUEST['c'])) { echo "Da li ste sigurni da zelite obrisati ovaj fajl? Obrisacete sve revizije fajla sa servera.<br />"; echo '<a href="' . $linkPrefix . '&subaction=del&id=' . $id . '&c=true">Da</a> | <a href="' . $linkPrefix . '">Odustani</a>'; } else { if ($_REQUEST['c'] == 'true') { //delete the record if (deleteFile($id)) { nicemessage('Uspješno ste obrisali fajl.'); zamgerlog("obrisao fajl na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("obrisao fajl na projektu", $projekat); $link = $linkPrefix; } else { niceerror('Doslo je do greske prilikom brisanja fajla. Molimo kontaktirajte administratora.'); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } } //else isset c get parameter } //id is okay } //subaction == del } //subaction set } elseif ($section == 'bb') { //links management $linkPrefix .= '§ion=bb'; ?> <h2>Grupa za diskusiju</h2> <div class="links clearfix" id="bl"> <ul> <li><a href="<?php echo $linkPrefix; ?> ">Lista tema</a></li> <li><a href="<?php echo $linkPrefix . "&subaction=add"; ?> ">Nova tema</a></li> </ul> </div> <?php if (!isset($subaction)) { $rowsPerPage = 20; $pageNum = 1; if (isset($_REQUEST['page'])) { $pageNum = $_REQUEST['page']; } // counting the offset $offset = ($pageNum - 1) * $rowsPerPage; $threads = fetchThreadsForProject($project[id], $offset, $rowsPerPage); $numrows = getCountThreadsForProject($project[id]); ?> <div id="threadList"> <div class="threadRow caption clearfix"> <div class="threadInfo"> <div class="views">Pregleda</div><!--views--> <div class="lastReply">Zadnji odgovor</div><!--lastReply--> <div class="replies">Odgovora</div><!--replies--> </div><!--threadInfo--> <div class="title">Teme (<?php echo $numrows; ?> )</div><!--title--> </div><!--threadRow caption--> <?php foreach ($threads as $key => $thread) { ?> <div class="threadRow clearfix<?php if ($key % 2) { echo ' pattern'; } ?> "> <div class="threadInfo"> <div class="views"><?php echo intval($thread[pregleda]); ?> </div><!--views--> <div class="lastReply"><?php echo date('d.m.Y H:i:s', mysql2time($thread[zadnji_post][vrijeme])); ?> <br /><?php echo filtered_output_string($thread[zadnji_post][osoba][prezime] . ' ' . $thread[zadnji_post][osoba][ime]); ?> </div><!--lastReply--> <div class="replies"><?php echo intval($thread[broj_odgovora]); ?> </div><!--replies--> </div><!--threadInfo--> <div class="title"><a href="<?php echo $linkPrefix . "&subaction=view&tid={$thread['id']}"; ?> " title="<?php echo $thread['naslov']; ?> "><?php echo filtered_output_string($thread[naslov]); ?> </a></div><!--title--> <div class="author"><?php echo filtered_output_string($thread[prvi_post][osoba][prezime] . ' ' . $thread[prvi_post][osoba][ime]); ?> </div><!--author--> </div><!--threadRow caption--> <?php } //foreach thread ?> </div><!--threadList--> <?php $maxPage = ceil($numrows / $rowsPerPage); $self = $linkPrefix; if ($maxPage > 0) { echo "<span class=\"newsPages\">"; if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"{$self}&page={$page}\">[Prethodna]</a> "; $first = " <a href=\"{$self}&page=1\">[Prva]</a> "; } if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"{$self}&page={$page}\">[Sljedeća]</a> "; $last = " <a href=\"{$self}&page={$maxPage}\">[Zadnja]</a> "; } echo $first . $prev . " Strana <strong>{$pageNum}</strong> od ukupno <strong>{$maxPage}</strong> " . $next . $last; echo "</span>"; //newsPages span } } else { if ($subaction == 'view') { $tid = intval($_REQUEST[tid]); $thread = getThreadAndPosts($tid); if (empty($thread)) { zamgerlog("projektne strane: nepostojeci thread sa IDom {$id}, projekat {$projekat} (pp{$predmet}, ag{$ag})", 3); zamgerlog2("nepostojeci thread na projektu", $id, $projekat); return; } incrementThreadViewCount($thread[id]); ?> <div id="fullThread"> <?php foreach ($thread[posts] as $post) { ?> <div class="post"><a name="p<?php echo $post[id]; ?> "> <div id="post_<?php echo $post[id]; ?> _header" class="header clearfix" onclick="toggleShowPost('post_<?php echo $post[id]; ?> ')"> <div class="buttons"> <a href="<?php echo $linkPrefix . "&subaction=add&tid={$post['tema']}&id={$post['id']}"; ?> " title="Odgovori na ovaj post">Odgovori</a> <?php if (isUserAuthorOfPost($post[id], $userid) == true) { ?> | <a href="<?php echo $linkPrefix . "&subaction=edit&tid={$post['tema']}&id={$post['id']}"; ?> " title="Uredi vlastiti post">Uredi</a> | <a href="<?php echo $linkPrefix . "&subaction=del&tid={$post['tema']}&id={$post['id']}"; ?> " title="Obriši vlastiti post">Obriši</a> <?php } ?> </div> <div class="maininfo"> <div class="date"><?php echo date('d.m.Y H:i:s', mysql2time($post[vrijeme])); ?> </div> <div class="author"><?php echo filtered_output_string($post[osoba][prezime] . ' ' . $post[osoba][ime]); ?> </div> - <div class="title"><?php echo filtered_output_string($post[naslov]); ?> </div> </div> </div><!--header--> <div class="text" id="post_<?php echo $post[id]; ?> _text"><?php echo filtered_output_string($post[tekst]); ?> </div><!--text--> </div><!--post--> <?php } //foreach post ?> </div><!--fullThread--> <script type="text/javascript"> function toggleShowPost(divID) { header = document.getElementById(divID + '_header'); text = document.getElementById(divID + '_text'); if (text.style.display == 'block' || text.style.display == '') { text.style.display = 'none'; header.style.backgroundColor = '#F5F5F5'; header.style.color = 'black'; } else { text.style.display = 'block'; header.style.backgroundColor = '#EEEEEE'; } } </script> <?php } elseif ($subaction == 'add') { $threadID = intval($_REQUEST['tid']); if ($threadID <= 0) { $thread = false; } else { $thread = true; } if ($thread == true) { $postInfo = getPostInfoForThread($threadID, $id); $extendedThreadInfo = array(); getExtendedInfoForThread($threadID, $extendedThreadInfo); if (empty($postInfo)) { zamgerlog("projektne strane: odgovor na nepostojeci post {$id}, projekat {$projekat} (pp{$predmet})", 3); zamgerlog2("odgovor na nepostojeci post na projektu", $id, $projekat); return; } } if (!isset($_REQUEST['submit'])) { ?> <h3><?php if ($thread == true) { echo 'Novi odgovor'; } else { echo 'Nova tema'; } ?> </h3> <?php print genform("POST", "addForm"); ?> <?php if ($thread == true) { ?> <input type="hidden" name="tid" value="<?php echo $threadID; ?> " /> <?php } ?> <div id="formDiv"> Polja sa * su obavezna. <br /> <div class="row"> <span class="label">Naslov *</span> <span class="formw"><input name="naslov" type="text" id="naslov" size="70" <?php if ($thread == true) { ?> value="RE: <?php echo $extendedThreadInfo['naslov']; ?> "<?php } ?> /></span> </div> <div class="row"> <span class="label">Tekst *</span> <span class="formw"><textarea name="tekst" cols="60" rows="15" wrap="physical" id="tekst"></textarea></span> </div> <div class="row"> <span class="formw" style="margin-left:150px;"><input name="submit" type="submit" id="submit" value="Potvrdi"/></span> </div> </div><!--formDiv--> </form> <?php } else { $errorText = formProcess_bb('add', $thread, $threadID); if ($errorText == '') { if ($thread == true) { nicemessage('Novi odgovor uspješno dodan.'); zamgerlog("dodao novi odgovor na diskusiju ID {$threadID}, projekat {$projekat} (pp{$predmet})", 2); zamgerlog2("dodao odgovor na diskusiju", $threadID, $projekat); } else { nicemessage('Nova tema uspješno dodana.'); zamgerlog("dodao novu temu na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("dodao temu na projektu", $projekat); } if (!empty($_REQUEST[tid])) { $link = $linkPrefix . "&subaction=view&tid={$_REQUEST['tid']}"; } else { $link = $linkPrefix; } } else { niceerror($errorText); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } //submitted the form } elseif ($subaction == 'edit') { //edit item if (isUserAuthorOfPost($id, $userid) == false) { zamgerlog("pokusava urediti post {$id} a nije autor, projekat {$projekat} (pp{$predmet})", 3); zamgerlog2("pokusava urediti post a nije autor", $id, $projekat); return; } $threadID = intval($_REQUEST[tid]); if ($threadID <= 0) { zamgerlog("pokusava urediti nepostojeci post {$id}, projekat {$projekat} (pp{$predmet})", 3); zamgerlog2("pokusava urediti nepostojeci post", $id, $projekat); return; } if (!isset($_REQUEST['submit'])) { $entry = getPost($id); if (empty($entry)) { zamgerlog("pokusava urediti nepostojeci post {$id}, projekat {$projekat} (pp{$predmet})", 3); zamgerlog2("pokusava urediti nepostojeci post", $id, $projekat); return; } ?> <h3>Uredi post</h3> <?php print genform("POST", "editForm"); ?> <div id="formDiv"> Polja sa * su obavezna. <br /> <div class="row"> <span class="label">Naslov *</span> <span class="formw"><input name="naslov" type="text" id="naslov" size="70" value="<?php echo $entry['naslov']; ?> " /></span> </div> <div class="row"> <span class="label">Tekst *</span> <span class="formw"><textarea name="tekst" cols="60" rows="15" wrap="physical" id="tekst"><?php echo $entry['tekst']; ?> </textarea></span> </div> <div class="row"> <span class="formw" style="margin-left:150px;"><input name="submit" type="submit" id="submit" value="Potvrdi"/></span> </div> </div><!--formDiv--> </form> <?php } else { $errorText = formProcess_bb('edit', $thread, $threadID); if ($errorText == '') { nicemessage('Uspješno ste uredili post.'); zamgerlog("uredio vlastiti BB post {$id}, projekat {$projekat} (pp{$predmet})", 2); zamgerlog2("uredio vlastiti post", $id, $projekat); $link = $linkPrefix . "&subaction=view&tid={$_REQUEST['tid']}"; } else { //an error occured trying to process the form niceerror($errorText); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } //submitted the form } elseif ($subaction == 'del') { //delete item if (isset($id) && is_int($id) && $id > 0) { if (isUserAuthorOfPost($id, $userid) == false) { zamgerlog("pokusava izbrisati post {$id} a nije autor, projekat {$projekat} (pp{$predmet})", 3); zamgerlog2("pokusava izbrisati post a nije autor", $id, $projekat); return; } $threadID = intval($_REQUEST[tid]); if ($threadID <= 0) { zamgerlog("pokusava izbrisati nepostojeci post {$id}, projekat {$projekat} (pp{$predmet})", 3); zamgerlog2("pokusava izbrisati nepostojeci post", $id, $projekat); return; } if (!isset($_REQUEST['c'])) { echo "Da li ste sigurni da zelite obrisati ovaj post? <br />"; echo '<a href="' . $linkPrefix . '&subaction=del&tid=' . $threadID . '&id=' . $id . '&c=true">Da</a> | <a href="' . $linkPrefix . '">Odustani</a>'; } else { if ($_REQUEST['c'] == 'true') { //delete the record if (deletePost($id)) { nicemessage('Uspješno ste obrisali post.'); zamgerlog("obrisao post na projektu {$projekat} (pp{$predmet})", 2); zamgerlog2("obrisao post na projektu", $projekat); if (getCountPostsInThread($threadID) > 0) { $link = $linkPrefix . "&subaction=view&tid={$_REQUEST['tid']}"; } else { $link = $linkPrefix; } } else { niceerror('Došlo je do greske prilikom brisanja posta. Molimo kontaktirajte administratora.'); $link = "javascript:history.back();"; } nicemessage('<a href="' . $link . '">Povratak.</a>'); } } //else isset c get parameter } //id is okay } //subaction == del } //subaction set } //section == bb (forum) } //else - section is set }
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 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 db_grid($table) { global $_lv_; global $__lv_cn, $__lv_ct, $__lv_cs, $__lv_showcreate; // Update database with submitted data db_submit(); // Parse table columns from "show create" query __lv_parsetable($table); // Generate form header with hidden fields - this will be used for each row $form_header = genform("POST"); $form_header .= '<input type="hidden" name="_lv_table" value="' . $table . '"> <input type="hidden" name="_lv_action" value="edit">' . "\n"; // List tables - used to find foreign keys $q200 = myquery("show tables"); while ($r200 = mysql_fetch_row($q200)) { $tables[] = $r200[0]; } // Query database to get default form values $sql = "select * from {$table}"; $n = 0; for ($i = 0; $i < count($__lv_cn); $i++) { $name = $__lv_cn[$i]; // Get WHERE from $_lv_ if (strlen($_lv_["where:{$name}"]) > 0) { if ($n > 0) { $sql .= " and "; } else { $sql .= " where "; } $sql .= "{$name}='" . my_escape($_lv_["where:{$name}"]) . "'"; $n++; } // We are not interested in _lv_where... } // Get ORDER BY from $_lv_ foreach ($_lv_ as $key => $value) { if ($key == "orderby") { $sql .= " order by " . $value; break; } } // Get LIMIT from $_lv_ foreach ($_lv_ as $key => $value) { if ($key == "limit") { $sql .= " limit " . $value; break; } } // Display table header $result .= '<table border="0" cellspacing="0" cellpadding="3">' . "\n"; $result .= '<tr bgcolor="#bbbbbb">' . "\n"; for ($i = 0; $i < count($__lv_cn); $i++) { $name = $__lv_cn[$i]; $type = $__lv_ct[$i]; $label = strtoupper(substr($name, 0, 1)) . strtolower(substr($name, 1)); $label = str_replace("_", " ", $label); if ($_lv_["label:{$name}"]) { $label = $_lv_["label:{$name}"]; } // ID and fields given in WHERE are always hidden if ($name != "id" && !$_lv_["where:{$name}"]) { $result .= "<th>{$label}</th>\n"; } } $result .= "<th> </th>\n"; // Extra column for submit button $result .= "</tr>\n"; // Table contents $q202 = myquery($sql); $color = 0; while ($r202 = mysql_fetch_assoc($q202)) { $result .= "{$form_header}\n"; if ($color == 0) { $result .= "<tr>\n"; $color = 1; } else { $result .= '<tr bgcolor="#efefef">' . "\n"; $color = 0; } // Display form for ($i = 0; $i < count($__lv_cn); $i++) { $name = $__lv_cn[$i]; $type = $__lv_ct[$i]; $size = $__lv_cs[$i]; if ($size > 15) { $size = 15; } // not practical to have size>15 // ID and fields given in WHERE are always hidden if ($name == "id") { // FIXME: Value of 0 suggests that this is an autonumber field if (intval($r202[$name]) != 0) { $result .= '<input type="hidden" name="_lv_where_id" value="' . $r202[$name] . '">' . "\n"; // We need to resubmit data for add $result .= '<input type="hidden" name="_lv_column_id" value="' . $r202[$name] . '">' . "\n"; } } else { if ($_lv_["where:{$name}"]) { $result .= '<input type="hidden" name="_lv_where_' . $name . '" value="' . $_lv_["where:{$name}"] . '">' . "\n"; // We need to resubmit data for add $result .= '<input type="hidden" name="_lv_column_' . $name . '" value="' . $_lv_["where:{$name}"] . '">' . "\n"; // find foreign keys } else { if (in_array($name, $tables)) { $result .= "<td>" . db_dropdown($name, $r202[$name]) . "</td>\n"; // db_dropdown will destroy __lv_c* ... __lv_parsetable($table); // Various column types } else { if ($type == "varchar") { $result .= '<td><input type="text" name="_lv_column_' . $name . '" size="' . $size . '" value="' . $r202[$name] . '"></td>' . "\n"; } else { if ($type == "text") { $result .= '<td><textarea name="_lv_column_' . $name . '" rows="5" cols="20">' . $r202[$name] . '</textarea></td>' . "\n"; } else { if ($type == "date") { // Parse date if ($r202[$name]) { $mytime = mysql2time($r202[$name]); } else { $mytime = time(); // Set time to now } $d = date('d', $mytime); $m = date('m', $mytime); $Y = date('Y', $mytime); $result .= '<td>' . datectrl($d, $m, $Y, "_lv_column_{$name}" . "_") . "</td>\n"; } else { if ($type == "datetime") { // Parse date if ($r202[$name]) { $mytime = mysql2time($r202[$name]); } else { $mytime = time(); // Set time to now } $d = date('d', $mytime); $m = date('m', $mytime); $Y = date('Y', $mytime); $h = date('H', $mytime); $mi = date('i', $mytime); $se = date('s', $mytime); $result .= '<td>' . datectrl($d, $m, $Y, "_lv_column_{$name}" . "_") . "\n"; $result .= '<input type="text" size="2" name="_lv_column_' . $name . '_hour" value="' . $h . '">:'; $result .= '<input type="text" size="2" name="_lv_column_' . $name . '_minute" value="' . $mi . '">:'; $result .= '<input type="text" size="2" name="_lv_column_' . $name . '_second" value="' . $se . '"></td>' . "\n"; } else { if ($type == "tinyint" && $size == "1") { // assume boolean $result .= '<td><input type="checkbox" name="_lv_column_' . $name . '"'; if ($r202[$name] == "1") { $result .= ' CHECKED'; } $result .= '></td>' . "\n"; } else { if ($type == "int" || $type == "tinyint" || $type == "smallint" || $type == "bigint" || $type == "float" || $type == "double") { // classic numeric $result .= '<td><input type="text" name="_lv_column_' . $name . '" size="' . $size . '" value="' . $r202[$name] . '"></td>' . "\n"; } else { $result .= "<td>Unknown type: '{$type}'</td>\n"; } } } } } } } } } } // Row ends $result .= '<td>'; if ($_lv_["enableedit"]) { $result .= '<a href="' . genuri() . '&_lv_nav_id=' . $r202["id"] . '">Izmijeni</a> '; } $result .= '<input type="submit" value=" Pošalji "><input type="submit" name="_lv_action_delete" value=" Obriši "></td>' . "\n"; $result .= "</tr></form>"; } $result .= "</table>\n"; return $result; }
function 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 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 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>"; } }
"><img src="images/16x16/brisanje.png" /></a> </td> </tr> <?php } ?> </table> <?php if ($greska) { niceerror("Datumi vam se preklapaju. Molimo provjerite."); } ?> <p> </p> <?php echo genform("POST"); ?> <input type="hidden" name="operacija" value="<?php echo $operacija; ?> "> <input type="hidden" name="id" value="<?php echo $id; ?> "> <table border="0" width="600"> <tr> <td colspan="2" bgcolor="#999999"> <font color="#FFFFFF"><b><?php echo $podnaslov; ?>
function admin_log2() { global $userid; global $_lv_; // We use form generators // LOG v2.0 $maxlogins = 20; $stardate = intval($_GET['stardate']); if ($stardate == 0) { $q199 = myquery("select id from log order by id desc limit 1"); $stardate = mysql_result($q199, 0, 0) + 1; } $nivo = intval($_GET['nivo']); if ($nivo < 1) { $nivo = 2; } if ($nivo > 4) { $nivo = 4; } // Pretraga / filtriranje $pretraga = $_REQUEST['pretraga']; if ($pretraga) { $src = preg_replace("/\\s+/", " ", $pretraga); $src = trim($src); $dijelovi = explode(" ", $src); $query = ""; $filterupita = ""; // Probavamo traziti ime i prezime istovremeno if (count($dijelovi) == 2) { $q100 = myquery("select id from osoba where ime like '%{$dijelovi['0']}%' and prezime like '%{$dijelovi['1']}%'"); if (mysql_num_rows($q100) == 0) { $q100 = myquery("select id from osoba where ime like '%{$dijelovi['1']}%' and prezime like '%{$dijelovi['0']}%'"); } $rezultata = mysql_num_rows($q100); } // Nismo nasli ime i prezime, pokusavamo bilo koji dio if ($rezultata == 0) { foreach ($dijelovi as $dio) { if ($query != "") { $query .= "or "; } $query .= "ime like '%{$dio}%' or prezime like '%{$dio}%' or brindexa like '%{$dio}%' "; if (intval($dio) > 0) { $query .= "or id=" . intval($dio) . " "; } } $q100 = myquery("select id from osoba where ({$query})"); $rezultata = mysql_num_rows($q100); } // Nismo nasli nista, pokusavamo login if ($rezultata == 0) { $query = ""; foreach ($dijelovi as $dio) { if ($query != "") { $query .= "or "; } $query .= "a.login like '%{$dio}%' "; } $q100 = myquery("select o.id from osoba as o, auth as a where ({$query}) and a.id=o.id"); $rezultata = mysql_num_rows($q100); } if ($rezultata > 0) { while ($r100 = mysql_fetch_row($q100)) { if ($filterupita != "") { $filterupita .= " OR "; } $filterupita .= "userid={$r100['0']} OR dogadjaj like '%u{$r100['0']}%'"; if ($rezultata == 1) { $nasaokorisnika = $r100[0]; } // najčešće nađemo tačno jednog... } } // Probavamo predmete if ($rezultata == 0) { $q101 = myquery("select id from predmet where naziv like '%{$src}%' or kratki_naziv='{$src}'"); if (mysql_num_rows($q101) > 0) { $pp = mysql_result($q101, 0, 0); if ($filterupita != "") { $filterupita .= " OR "; } $filterupita .= "dogadjaj like '%pp{$pp}%'"; $q102 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet={$pp} and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r102 = mysql_fetch_row($q102)) { $filterupita .= " OR dogadjaj like '%p{$r102['0']}%'"; } } } // Kraj, dodajemo and if ($filterupita != "") { $filterupita = " AND ({$filterupita})"; } } // Izbor nivoa logiranja (JavaScript) ?> <h3>Pregled logova</h3> <p>Izaberite logging nivo:<br/> <?php echo genform("GET"); ?> <table width="100%"><tr> <td><input type="radio" name="nivo" value="1" onchange="document.forms[0].submit()" <?php if ($nivo == 1) { print "CHECKED"; } ?> ><img src="images/16x16/log_info.png" width="16" height="16" align="center"> Posjete stranicama</td> <td><input type="radio" name="nivo" value="2" onchange="document.forms[0].submit()" <?php if ($nivo == 2) { print "CHECKED"; } ?> ><img src="images/16x16/log_edit.png" width="16" height="16" align="center"> Izmjene</td> <td><input type="radio" name="nivo" value="3" onchange="document.forms[0].submit()" <?php if ($nivo == 3) { print "CHECKED"; } ?> ><img src="images/16x16/log_error.png" width="16" height="16" align="center"> Greške</td> <td><input type="radio" name="nivo" value="4" onchange="document.forms[0].submit()" <?php if ($nivo == 4) { print "CHECKED"; } ?> ><img src="images/16x16/log_audit.png" width="16" height="16" align="center"> Kritične izmjene</td> </tr></table> </form> <br/><br/> <center> <form action="index.php" method="GET"> <input type="hidden" name="sta" value="admin/log"> <input type="hidden" name="nivo" value="<?php echo $nivo; ?> "> <input type="text" name="pretraga" size="40" value="<?php echo $pretraga; ?> "> <input type="submit" value=" Traži "> </form> </center> <?php // Skripta daj_stablo se sada nalazi u js/stablo.js, a ukljucena je u index.php // Funkcije koje cachiraju imena korisnika i predmeta function get_user_link($id) { static $users = array(); if (!$users[$id]) { $q20 = myquery("select ime, prezime from osoba where id={$id}"); if (mysql_num_rows($q20) > 0) { $link = "?sta=studentska/osobe&akcija=edit&osoba={$id}"; $users[$id] = "<a href=\"{$link}\" target=\"_new\">" . mysql_result($q20, 0, 0) . " " . mysql_result($q20, 0, 1) . "</a>"; } else { return $id; } } return $users[$id]; } function get_pk_link($id) { static $predmeti = array(); if (!$predmeti[$id]) { $q30 = myquery("select p.id, p.naziv, pk.akademska_godina from ponudakursa as pk, predmet as p where pk.id={$id} and pk.predmet=p.id"); if (mysql_num_rows($q30) > 0) { $predmeti[$id] = "<a href=\"?sta=studentska/predmeti&akcija=edit&predmet=" . mysql_result($q30, 0, 0) . "&ag=" . mysql_result($q30, 0, 2) . "\" target=\"_new\">" . mysql_result($q30, 0, 1) . "</a>"; } else { return $id; } } return $predmeti[$id]; } function get_predmet_link($id) { static $aktuelna_ag = 0; // Aktuelna akademska godina if ($aktuelna_ag == 0) { $q35 = myquery("select id from akademska_godina where aktuelna=1 order by id desc"); $aktuelna_ag = mysql_result($q35, 0, 0); } static $predmeti = array(); if (!$predmeti[$id]) { $q40 = myquery("select naziv from predmet where id={$id}"); if (mysql_num_rows($q40) > 0) { $predmeti[$id] = "<a href=\"?sta=studentska/predmeti&akcija=edit&predmet={$id}&ag={$aktuelna_ag}\" target=\"_new\">" . mysql_result($q40, 0, 0) . "</a>"; } else { return $id; } } return $predmeti[$id]; } function get_predmet_ag_link($predmet, $ag) { static $godine = array(); if (!$godine[$ag]) { $q50 = myquery("select naziv from akademska_godina where id={$ag}"); if (mysql_num_rows($q50) > 0) { $godine[$ag] = mysql_result($q50, 0, 0); } else { return "{$predmet}, {$ag}"; } } static $predmeti = array(); if (!$predmeti[$predmet]) { $q40 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q40) > 0) { $predmeti[$predmet] = mysql_result($q40, 0, 0); } else { return "{$predmet}, {$ag}"; } } return "<a href=\"?sta=studentska/predmeti&akcija=edit&predmet={$predmet}&ag={$ag}\" target=\"_new\">" . $predmeti[$predmet] . " " . $godine[$ag] . "</a>"; } function get_zadaca_link($id, $usr) { $q50 = myquery("select z.naziv,z.predmet,z.akademska_godina, p.naziv from zadaca as z, predmet as p where z.id={$id} and z.predmet=p.id"); if (mysql_num_rows($q50) > 0) { $naziv = mysql_result($q50, 0, 0); if (!preg_match("/\\w/", $naziv)) { $naziv = "[Bez imena]"; } $predmet = mysql_result($q50, 0, 1); $ag = mysql_result($q50, 0, 2); $pnaziv = mysql_result($q50, 0, 3); if (intval($usr) > 0) { $q55 = myquery("select l.id from student_labgrupa as sl, labgrupa as l where sl.student={$usr} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag} order by virtualna"); if (mysql_num_rows($q55) > 0) { $link = "?sta=saradnik/grupa&id=" . mysql_result($q55, 0, 0); } else { $link = "?sta=nastavnik/zadace&predmet={$predmet}&ag={$ag}"; } return "<a href=\"{$link}\" target=\"_blank\">{$naziv} ({$pnaziv})</a>"; } } return "{$id}"; } function get_cas_link($id) { $q70 = myquery("select l.id, p.naziv, l.naziv from cas as c, labgrupa as l, predmet as p where c.id={$id} and c.labgrupa=l.id and l.predmet=p.id"); if (mysql_num_rows($q70) > 0) { $link = "?sta=saradnik/grupa&id=" . mysql_result($q70, 0, 0); $tekst = mysql_result($q70, 0, 2) . " (" . mysql_result($q70, 0, 1) . ")"; return "<a href=\"{$link}\" target=\"_blank\">{$tekst}</a>"; } return "{$id}"; } function get_ispit_link($id) { static $ispiti = array(); if (!$ispiti[$id]) { $q60 = myquery("select p.naziv, k.gui_naziv, i.predmet, i.akademska_godina from ispit as i, predmet as p, komponenta as k where i.id={$id} and i.predmet=p.id and i.komponenta=k.id"); if (mysql_num_rows($q60) > 0) { $link = "?sta=nastavnik/ispiti&predmet=" . mysql_result($q60, 0, 2) . "&ag=" . mysql_result($q60, 0, 3); $tekst = mysql_result($q60, 0, 1) . " (" . mysql_result($q60, 0, 0) . ")"; $ispiti[$id] = "<a href=\"{$link}\" target=\"_blank\">{$tekst}</a>"; } else { return "{$id}"; } } return $ispiti[$id]; } function get_termin($id) { static $termini = array(); if (!$termini[$id]) { $q60 = myquery("select p.naziv, k.gui_naziv, i.predmet, i.akademska_godina, UNIX_TIMESTAMP(it.datumvrijeme) from ispit as i, predmet as p, komponenta as k, ispit_termin as it where it.id={$id} and it.ispit=i.id and i.predmet=p.id and i.komponenta=k.id"); if (mysql_num_rows($q60) > 0) { $link = "?sta=nastavnik/ispiti&predmet=" . mysql_result($q60, 0, 2) . "&ag=" . mysql_result($q60, 0, 3); $tekst = mysql_result($q60, 0, 1) . ", " . date("j.n. H:i", mysql_result($q60, 0, 4)) . " (" . mysql_result($q60, 0, 0) . ")"; $termini[$id] = "<a href=\"{$link}\" target=\"_blank\">{$tekst}</a>"; } else { return "{$id}"; } } return $termini[$id]; } function get_grupa_link($id) { static $grupe = array(); if (!$grupe[$id]) { $q80 = myquery("select p.naziv, l.naziv from labgrupa as l, predmet as p where l.id={$id} and l.predmet=p.id"); if (mysql_num_rows($q80) > 0) { $link = "?sta=saradnik/grupa&id={$id}"; $tekst = mysql_result($q80, 0, 1) . " (" . mysql_result($q80, 0, 0) . ")"; $grupe[$id] = "<a href=\"{$link}\" target=\"_blank\">{$tekst}</a>"; } else { return "{$id}"; } } return $grupe[$id]; } function get_komp_link($id) { static $komponente = array(); if (!$komponente[$id]) { $q70 = myquery("select gui_naziv from komponenta where id={$id}"); if (mysql_num_rows($q70) > 0) { $komponente[$id] = mysql_result($q70, 0, 0); } else { return "{$id}"; } } return $komponente[$id]; } function get_projekat_link($id) { static $projekti = array(); if (!$projekti[$id]) { $q90 = myquery("select p.naziv, p2.naziv, p2.id, p.akademska_godina from projekat as p, predmet as p2 where p.id={$id} and p.predmet=p2.id"); if (mysql_num_rows($q90) > 0) { $link = "?sta=nastavnik/projekti&predmet=" . mysql_result($q90, 0, 2) . "&ag=" . mysql_result($q90, 0, 3) . "&akcija=projektna_stranica&projekat={$id}"; $tekst = mysql_result($q90, 0, 0) . " (" . mysql_result($q90, 0, 1) . ")"; $projekti[$id] = "<a href=\"{$link}\" target=\"_blank\">{$tekst}</a>"; } else { return "{$id}"; } } return $projekti[$id]; } function get_studij($id) { static $studiji = array(); if (!$studiji[$id]) { $q100 = myquery("select naziv from studij where id={$id}"); $studiji[$id] = mysql_result($q100, 0, 0); } return $studiji[$id]; } function get_ag($id) { static $ags = array(); if (!$ags[$id]) { $q110 = myquery("select naziv from akademska_godina where id={$id}"); $ags[$id] = mysql_result($q110, 0, 0); } return $ags[$id]; } function add_string($s1, $s2, $s3) { if ($s1 == "") { return $s3; } return $s1 . $s2 . $s3; } // Glavni upit i petlja $q10 = myquery("SELECT l.id, UNIX_TIMESTAMP(l.vrijeme), l.userid, lm.naziv, l.dogadjaj, ld.opis, ld.nivo, l.objekat1, l.objekat2, l.objekat3 \nFROM log2 AS l, log2_dogadjaj AS ld, log2_modul AS lm \nWHERE l.modul=lm.id AND l.dogadjaj=ld.id AND l.id<{$stardate} and ((ld.nivo>={$nivo} {$filterupita}) or ld.opis='login') \nORDER BY l.id DESC"); $lastlogin = array(); $eventshtml = array(); $logins = 0; $prvidatum = $zadnjidatum = 0; $stardate = 1; while ($r10 = mysql_fetch_row($q10)) { if ($prvidatum == 0) { $prvidatum = $r10[1]; } $zadnjidatum = $r10[1]; $nicedate = " (" . date("d.m.Y. H:i:s", $r10[1]) . ")"; $usr = $r10[2]; // ID korisnika $modul = $r10[3]; $evt_id = $r10[4]; $opis = $r10[5]; // string koji opisuje dogadjaj // ne prikazuj login ako je to jedina stavka, ako je nivo veci od 1 ili ako nema pretrage if ($lastlogin[$usr] == 0 && ($nivo == 1 && $pretraga == "" || $opis != "login")) { $lastlogin[$usr] = $r10[0]; $logins++; if ($logins > $maxlogins) { $stardate = $r10[0] + 1; break; // izlaz iz while } } if ($r10[6] == 1) { $nivoimg = "log_info"; } else { if ($r10[6] == 2) { $nivoimg = "log_edit"; } else { if ($r10[6] == 3) { $nivoimg = "log_error"; } else { if ($r10[6] == 4) { $nivoimg = "log_audit"; } } } } $evt = ""; if ($modul != "") { $evt .= "{$modul}: "; } $evt .= "{$opis}"; $objekti = ""; // Log transformacije opisa if (substr($opis, 0, 14) == "poslana zadaca" || substr($opis, 0, 24) == "greska pri slanju zadace" || $opis == "poslao praznu zadacu" || $opis == "ne postoji fajl za zadacu" || $opis == "zadaca nema toliko zadataka") { $objekti = get_zadaca_link($r10[7], $usr) . ", zadatak {$r10['8']}"; } else { if ($opis == "isteklo vrijeme za slanje zadace" || $opis == "pogresan tip datoteke" || $opis == "student ne slusa predmet za zadacu" || $opis == "nije nastavnik na predmetu za zadacu" || $opis == "ogranicenje na predmet za zadacu" || $opis == "postavka ne postoji" || $opis == "obrisana postavka zadace" || $opis == "smanjen broj zadataka u zadaci" || $opis == "azurirana zadaca" || $opis == "niko nije poslao zadacu" || $opis == "kreiranje arhive zadaca nije uspjelo") { $objekti = get_zadaca_link($r10[7], $usr); } else { if ($opis == "ne postoji attachment" || $opis == "bodovanje zadace" || $opis == "autotestiran student") { $objekti = get_user_link($r10[7]) . ", " . get_zadaca_link($r10[8], $r10[7]) . ", zadatak {$r10['9']}"; } else { if ($opis == "prisustvo azurirano") { $objekti = get_user_link($r10[7]) . ", " . get_cas_link($r10[8]) . ", prisustvo: {$r10['9']}"; } else { if ($opis == "prisustvo - nije nastavnik na predmetu" || $opis == "prisustvo - ima ogranicenje za grupu" || $opis == "registrovan cas") { $objekti = get_cas_link($r10[7]); } else { if ($opis == "student ne slusa predmet" || $opis == "ne postoji moodle ID za predmet" || substr($opis, 0, 25) == "nije saradnik na predmetu" || $opis == "svi projekti su jos otkljucani" || $opis == "nije nastavnik na predmetu" || $opis == "predmet nema virtuelnu grupu" || $opis == "nije definisan tip predmeta" || substr($opis, 0, 22) == "dosegnut limit za broj projekata" || substr($opis, 0, 19) == "projekti zakljucani" || $opis == "nije ni na jednom projektu (odjava)" || $opis == "prekopirane labgrupe" || $opis == "izmijenjeni parametri projekata na predmetu" || $opis == "kreiran tip predmeta") { $objekti = get_predmet_ag_link($r10[7], $r10[8]); } else { if ($opis == "ne postoji komponenta za zadace" || $opis == "promijenjen tip predmeta" || $opis == "nije definisana komponenta za prisustvo" || $opis == "nepostojeca virtualna labgrupa" || $opis == "nije ponudjen predmet") { $objekti = get_predmet_ag_link($r10[7], $r10[8]); } else { if (substr($opis, 0, 17) == "obrisana labgrupa") { $objekti = "{$r10['9']}, " . get_predmet_ag_link($r10[7], $r10[8]); } else { if ($opis == "dodana ocjena" || $opis == "obrisana ocjena" || $opis == "izmjena ocjene" || $opis == "promijenjen datum ocjene" || substr($opis, 0, 27) == "student ispisan sa predmeta" || $opis == "nastavniku data prava na predmetu" || $opis == "nastavnik angazovan na predmetu" || $opis == "nastavniku oduzeta prava na predmetu" || $opis == "nastavnik deangazovan sa predmeta") { $objekti = get_user_link($r10[7]) . ", " . get_predmet_ag_link($r10[8], $r10[9]); } else { if ($opis == "nijedna zadaca nije aktivna" || $opis == "popunjena anketa" || $opis == "odabrana tema za zadacu" || $opis == "ponisten datum za izvoz") { $objekti = get_predmet_link($r10[7]); } else { if ($opis == "student ne slusa ponudukursa") { $objekti = get_pk_link($r10[7]); } else { if ($opis == "kreirao ponudu kursa zbog studenta" || substr($opis, 0, 25) == "student upisan na predmet") { $objekti = get_user_link($r10[7]) . ", " . get_pk_link($r10[8]); } else { if ($opis == "upisan rezultat ispita" || $opis == "izbrisan rezultat ispita" || $opis == "izmjenjen rezultat ispita" || $opis == "ispit - vrijednost > max") { $objekti = get_user_link($r10[7]) . ", " . get_ispit_link($r10[8]); } else { if ($opis == "promijenjen tip ispita" || $opis == "promijenjen datum ispita") { $objekti = get_ispit_link($r10[7]); } else { if ($opis == "kreiran novi ispit") { $objekti = get_ispit_link($r10[7]) . ", " . get_predmet_ag_link($r10[8], $r10[9]); } else { if ($opis == "prijavljen na termin" || $opis == "odjavljen sa termina" || $opis == "izmijenjen ispitni termin") { $objekti = get_termin($r10[7]); } else { if ($opis == "kreiran novi ispitni termin") { $objekti = get_termin($r10[7]); //.", ".get_predmet_ag_link($r10[8], $r10[9]); - sadržano u prethodnom linku } else { if ($opis == "izmjena bodova za fiksnu komponentu") { $objekti = get_user_link($r10[7]) . ", " . get_pk_link($r10[8]) . ", " . get_komp_link($r10[9]); } else { if ($opis == "nije na projektu" || $opis == "dodao link na projektu" || $opis == "uredio link na projektu" || $opis == "obrisao link na projektu" || $opis == "dodao rss feed na projektu" || $opis == "uredio rss feed na projektu" || $opis == "obrisao rss feed na projektu" || $opis == "dodao clanak na projektu" || $opis == "uredio clanak na projektu" || $opis == "obrisao clanak na projektu" || $opis == "dodao fajl na projektu" || $opis == "uredio fajl na projektu" || $opis == "obrisao fajl na projektu" || $opis == "dodao temu na projektu" || $opis == "obrisao post na projektu" || substr($opis, 0, 18) == "projekat zakljucan" || substr($opis, 0, 17) == "projekat popunjen" || $opis == "dodao projekat na predmetu" || $opis == "izmijenio projekat" || $opis == "dodao biljesku na projekat") { $objekti = get_projekat_link($r10[7]); // $objekti = $r10[7]; } else { if ($opis == "student prijavljen na projekat" || $opis == "student prebacen na projekat" || $opis == "student odjavljen sa projekta") { $objekti = get_user_link($r10[7]) . ", " . get_projekat_link($r10[8]); } else { if ($opis == "poslana poruka" || $opis == "osoba nema sliku" || $opis == "nema datoteke za sliku" || $opis == "nepoznat tip slike" || $opis == "citanje fajla za sliku nije uspjelo" || $opis == "nije studentska, a pristupa tudjem izvjestaju" || $opis == "korisnik nikada nije studirao" || $opis == "prihvacen zahtjev za promjenu podataka" || $opis == "odbijen zahtjev za promjenu podataka" || $opis == "korisnik vec postoji u bazi" || $opis == "dodan novi korisnik" || $opis == "promijenjeni licni podaci korisnika" || $opis == "postavljena slika za korisnika" || $opis == "obrisana slika za korisnika" || $opis == "proglasen za studenta") { $objekti = get_user_link($r10[7]); } else { if ($opis == "postavljen broj indeksa" || $opis == "prihvacen zahtjev za koliziju" || $opis == "dodani podaci o izboru" || $opis == "azurirani podaci o izboru" || $opis == "promijenjen email za korisnika" || $opis == "izmjena kandidata za prijemni" || $opis == "novi kandidat za prijemni") { $objekti = get_user_link($r10[7]); } else { if ($opis == "greska prilikom slanja fajla na zavrsni" || $opis == "dodao fajl na zavrsni" || $opis == "azuriran sazetak zavrsnog rada" || $opis == "izmijenio temu zavrsnog rada" || $opis == "dodao biljesku na zavrsni rad" || $opis == "dodana tema zavrsnog rada") { // $objekti = get_zavrsni_link($r10[7]); $objekti = $r10[7]; } else { if (substr($opis, 0, 24) == "student ispisan sa grupe" || substr($opis, 0, 22) == "student upisan u grupu" || $opis == "dodan komentar na studenta" || $opis == "promijenjena grupa studenta") { $objekti = get_user_link($r10[7]) . ", " . get_grupa_link($r10[8]); } else { if ($opis == "preimenovana labgrupa" || $opis == "ima ogranicenje na labgrupu") { $objekti = get_grupa_link($r10[7]); } else { if (substr($opis, 0, 17) == "kreirana labgrupa") { $objekti = get_grupa_link($r10[7]) . ", " . get_predmet_ag_link($r10[8], $r10[9]); } else { if ($opis == "student upisan na studij" || $opis == "pokusao ispisati studenta sa studija koji ne slusa") { $objekti = get_user_link($r10[7]) . ", " . get_studij($r10[8]) . " " . get_ag($r10[9]); } else { // Kreiranje log zapisa if ($r10[7] > 0) { $objekti = add_string($objekti, ", ", $r10[7]); } if ($r10[8] > 0) { $objekti = add_string($objekti, ", ", $r10[8]); } if ($r10[9] > 0) { $objekti = add_string($objekti, ", ", $r10[9]); } } } } } } } } } } } } } } } } } } } } } } } } } } } } $q20 = myquery("SELECT tekst FROM log2_blob WHERE log2={$r10['0']}"); if (mysql_num_rows($q20) > 0) { $objekti = add_string($objekti, ", ", mysql_result($q20, 0, 0)); } if ($objekti !== "") { $evt .= " ({$objekti})"; } $analyze_link = "<a href=\"?sta=admin/log&analyze={$r10['0']}\">*</a>"; /* while (preg_match("/\Wu(\d+)/", $evt, $m)) { // korisnik $evt = str_replace("u$m[1]",get_user_link($m[1]), $evt); $zadnjikorisnik = $m[1]; // Ovo ce omoguciti neke dodatne upite kasnije } while (preg_match("/\Wpp(\d+)/", $evt, $m)) { // predmet $evt = str_replace("pp$m[1]",get_ppredmet_link($m[1]),$evt); } while (preg_match("/\Wp(\d+)/", $evt, $m)) { // ponudakursa $evt = str_replace("p$m[1]",get_predmet_link($m[1]),$evt); } while (preg_match("/\Wg(\d+)/", $evt, $m)) { // labgrupa $q39 = myquery("select naziv from labgrupa where id=$m[1]"); if (mysql_num_rows($q39)>0) { $evt = str_replace("g$m[1]","<a href=\"?sta=saradnik/grupa&id=$m[1]\" target=\"_blank\">".mysql_result($q39,0,0)."</a>",$evt); } else { $evt = str_replace("g$m[1]","$m[1]",$evt); } } while (preg_match("/\Wc(\d+)/", $evt, $m)) { // cas $q40 = myquery("select labgrupa from cas where id=$m[1]"); if (mysql_num_rows($q40)>0) { $link="?sta=saradnik/grupa&id=".mysql_result($q40,0,0); $evt = str_replace("c$m[1]","<a href=\"$link\" target=\"_blank\">$m[1]</a>",$evt); } else { $evt = str_replace("c$m[1]","$m[1]",$evt); } } if (preg_match("/\Wz(\d+)/", $evt, $m)) { // zadaca $q50 = myquery("select naziv,predmet,akademska_godina from zadaca where id=$m[1]"); if (mysql_num_rows($q50)>0) { $naziv=mysql_result($q50,0,0); if (!preg_match("/\w/",$naziv)) $naziv="[Bez imena]"; $predmet=mysql_result($q50,0,1); $ag=mysql_result($q50,0,2); if (intval($usr)>0) { $q55 = myquery("select l.id from student_labgrupa as sl, labgrupa as l where sl.student=$usr and sl.labgrupa=l.id and l.predmet=$predmet and l.akademska_godina=$ag"); if (mysql_num_rows($q55)<1 && $zadnjikorisnik>0) { $q55 = myquery("select l.id from student_labgrupa as sl, labgrupa as l where sl.student=$zadnjikorisnik and sl.labgrupa=l.id and l.predmet=$predmet and l.akademska_godina=$ag"); } if (mysql_num_rows($q55)<1) { $q55 = myquery("select id from labgrupa where predmet=$predmet and akademska_godina=$ag and virtualna=1"); } $link="?sta=saradnik/grupa&id=".mysql_result($q55,0,0); $evt = str_replace("z$m[1]","<a href=\"$link\" target=\"_blank\">$naziv</a>",$evt); } } } while (preg_match("/\Wi(\d+)/", $evt, $m)) { // ispit $q60 = myquery("select k.gui_naziv, i.predmet, p.naziv, i.akademska_godina from ispit as i, komponenta as k, predmet as p where i.id=$m[1] and i.komponenta=k.id and i.predmet=p.id"); if (mysql_num_rows($q60)>0) { $naziv=mysql_result($q60,0,0); if (!preg_match("/\w/",$naziv)) $naziv="[Bez imena]"; $predmet=mysql_result($q60,0,1); $predmetnaziv=mysql_result($q60,0,2); $ag=mysql_result($q60,0,3); $evt = str_replace("i$m[1]","<a href=\"?sta=nastavnik/ispiti&predmet=$predmet&ag=$ag\" target=\"_blank\">$naziv ($predmetnaziv)</a>",$evt); } else { $evt = str_replace("i$m[1]","$m[1]",$evt); } } while (preg_match("/\Wag(\d+)/", $evt, $m)) { // akademska godina $q70 = myquery("select naziv from akademska_godina where id=$m[1]"); if (mysql_num_rows($q70)>0) { $naziv=mysql_result($q70,0,0); $evt = str_replace("ag$m[1]","$naziv",$evt); } else { $evt = str_replace("ag$m[1]","$m[1]",$evt); } } while (preg_match("/\Ws(\d+)/", $evt, $m)) { // studij $q80 = myquery("select naziv from studij where id=$m[1]"); if (mysql_num_rows($q80)>0) { $naziv=mysql_result($q80,0,0); $evt = str_replace("s$m[1]","$naziv",$evt); } else { $evt = str_replace("s$m[1]","$m[1]",$evt); } }*/ // Pošto idemo unazad, login predstavlja kraj zapisa za korisnika if ($opis == "login") { if ($lastlogin[$usr] && $lastlogin[$usr] != 0) { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> login (ID: {$usr}) {$nicedate} {$analyze_link}\n" . $eventshtml[$lastlogin[$usr]]; $lastlogin[$usr] = 0; } } else { if (strstr($evt, " su=")) { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> SU to ID: {$usr} {$nicedate} {$analyze_link}\n" . $eventshtml[$lastlogin[$usr]]; $lastlogin[$usr] = 0; } else { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> " . $evt . $nicedate . " " . $analyze_link . "\n" . $eventshtml[$lastlogin[$usr]]; } } } if ($stardate == 1) { $zadnjidatum = 1; } // Nije doslo do breaka... /* // Insertujem masovni unos ocjena i rezultata ispita if ($rezultata==1) { // Konacne ocjene $q300 = myquery("select predmet, ocjena, UNIX_TIMESTAMP(datum) from konacna_ocjena where student=$nasaokorisnika AND datum>=FROM_UNIXTIME($zadnjidatum) AND datum<=FROM_UNIXTIME($prvidatum)"); while ($r300 = mysql_fetch_row($q300)) { $predmet=$r300[0]; $ocjena=$r300[1]; $datum=$r300[2]; $nicedate = " (".date("d.m.Y. H:i:s", $datum).")"; // Prvo cemo varijantu sa predmetom pa sa ponudom kursa $q310 = myquery("select id from log where dogadjaj='masovno upisane ocjene na predmet pp$predmet' and vrijeme=FROM_UNIXTIME($datum)"); if (mysql_num_rows($q310)>0) { $eventshtml[mysql_result($q310,0,0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovno upisane ocjene na predmet ".get_ppredmet_link($predmet)." (".get_user_link($nasaokorisnika)." dobio: $ocjena)".$nicedate."\n"; } $q320 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet=$predmet and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r320 = mysql_fetch_row($q320)) { $q310 = myquery("select id from log where dogadjaj='masovno upisane ocjene na predmet p$r320[0]' and vrijeme=FROM_UNIXTIME($datum)"); if (mysql_num_rows($q310)>0) { $eventshtml[mysql_result($q310,0,0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovno upisane ocjene na predmet ".get_ppredmet_link($predmet)." (".get_user_link($nasaokorisnika)." dobio: $ocjena)".$nicedate."\n"; } } } // Isto ovo za ispite $q330 = myquery("select i.predmet, io.ocjena, UNIX_TIMESTAMP(i.vrijemeobjave) from ispit as i, ispitocjene as io where io.student=$nasaokorisnika AND io.ispit=i.id AND i.datum>=FROM_UNIXTIME($zadnjidatum) AND i.datum<=FROM_UNIXTIME($prvidatum)"); while ($r330 = mysql_fetch_row($q330)) { $predmet=$r330[0]; $ocjena=$r330[1]; $datum=$r330[2]; // Datum je zaokruzen :( // Prvo cemo varijantu sa predmetom pa sa ponudom kursa $q340 = myquery("select id, vrijeme from log where dogadjaj='masovni rezultati ispita za predmet pp$predmet' and vrijeme=FROM_UNIXTIME($datum)"); if (mysql_num_rows($q340)>0) { $nicedate = " (".date("d.m.Y. H:i:s", mysql_result($q340,0,1)).")"; $eventshtml[mysql_result($q340,0,0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovni rezultati ispita za predmet ".get_ppredmet_link($predmet)." (".get_user_link($nasaokorisnika)." dobio: $ocjena)".$nicedate."\n"; } $q320 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet=$predmet and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r320 = mysql_fetch_row($q320)) { $q340 = myquery("select id, vrijeme from log where dogadjaj='masovni rezultati ispita za predmet p$r320[0]' and vrijeme=FROM_UNIXTIME($datum)"); if (mysql_num_rows($q340)>0) { $nicedate = " (".date("d.m.Y. H:i:s", mysql_result($q340,0,1)).")"; $eventshtml[mysql_result($q340,0,0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovni rezultati ispita za predmet ".get_ppredmet_link($predmet)." (".get_user_link($nasaokorisnika)." dobio: $ocjena)".$nicedate."\n"; } } } krsort($eventshtml); } */ // Dodajemo zaglavlja sa [+] poljem (prebaciti iznad) foreach ($eventshtml as $logid => $event) { if (substr($event, 0, 4) != "<img") { // Login počinje sa <br/> // TODO: optimizovati upite! $q201 = myquery("select userid, UNIX_TIMESTAMP(vrijeme) from log2 where id=" . intval($logid)); $userid = intval(mysql_result($q201, 0, 0)); $nicedate = " (" . date("d.m.Y. H:i:s", mysql_result($q201, 0, 1)) . ")"; if ($userid == 0) { $imeprezime = "ANONIMNI PRISTUPI"; $usrimg = "zad_bug"; } else { $q202 = myquery("select ime, prezime from osoba where id={$userid}"); $imeprezime = mysql_result($q202, 0, 0) . " " . mysql_result($q202, 0, 1); $q203 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='nastavnik'"); $q204 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='studentska'"); $q205 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='siteadmin'"); if (mysql_result($q205, 0, 0) > 0) { $usrimg = "admin"; } else { if (mysql_result($q204, 0, 0) > 0) { $usrimg = "teta"; } else { if (mysql_result($q203, 0, 0) > 0) { $usrimg = "tutor"; } else { $usrimg = "user"; } } } } $link = "?sta=studentska/osobe&akcija=edit&osoba={$userid}"; print "<img src=\"images/plus.png\" width=\"13\" height=\"13\" id=\"img-{$logid}\" onclick=\"daj_stablo('{$logid}')\">\n<img src=\"images/16x16/{$usrimg}.png\" width=\"16\" height=\"16\" align=\"center\">\n<a href=\"{$link}\">{$imeprezime}</a> {$nicedate}\n<div id=\"{$logid}\" style=\"display:none\">\n"; } print "{$event}</div><br/>\n"; } print "<p> </p><p><a href=\"" . genuri() . "&stardate={$stardate}\">Sljedećih {$maxlogins}</a></p>"; }
function admin_kompakt() { global $userid, $conf_files_path; ############### # Akcije ############### if ($_POST['akcija'] == "kompaktuj") { $ponudakursa = intval($_POST['predmet']); $q10 = myquery("select p.naziv, ag.naziv, p.id, ag.id from ponudakursa as pk, predmet as p, akademska_godina as ag where pk.akademska_godina=ag.id and pk.id={$predmet} and pk.predmet=p.id"); if (!($r10 = mysql_fetch_row($q10))) { zamgerlog("nepoznat predmet {$predmet}", 3); // nivo 3: greska niceerror("Predmet nije pronađen u bazi"); return; } nicemessage("Kompaktujem predmet {$r10['0']} ({$r10['1']})"); $predmet = $r10[2]; $ag = $r10[3]; // Zadaće $q11 = myquery("select id,zadataka, programskijezik from zadaca where predmet={$predmet} and akademska_godina={$ag}"); $totcount = 0; $diffcount = 0; $stdincount = 0; $filecount = 0; $lokacijazadaca = "{$conf_files_path}/zadace/{$predmet}-{$ag}/"; while ($r11 = mysql_fetch_row($q11)) { $zadaca = $r11[0]; $brzad = $r11[1]; $pj = $r11[2]; // Ekstenzija if ($pj > 0) { $q11a = myquery("select ekstenzija from programskijezik where id={$pj}"); $ekstenzija = mysql_result($q11a, 0, 0); } // Historija statusa zadaće for ($i = 1; $i <= $brzad; $i++) { $q12 = myquery("select id,student, filename, redni_broj from zadatak where zadaca={$zadaca} and redni_broj={$i} order by student,id desc"); $student = 0; $count = 0; while ($r12 = mysql_fetch_row($q12)) { if ($student != $r12[1]) { if ($count > 0) { // print("$count statusa za ($student, $zadaca, $i)... "); $totcount += $count; $count = 0; } $student = $r12[1]; } else { $q13 = myquery("delete from zadatak where id={$r12['0']}"); $count++; } $q13a = myquery("select count(*) from zadatakdiff where zadatak={$r12['0']}"); $q14 = myquery("delete from zadatakdiff where zadatak={$r12['0']}"); $diffcount += mysql_result($q13a, 0, 0); // Brisanje fajla / attachment $filename = $r12[2]; if (preg_match("/\\w/", $filename)) { $path = $lokacijazadaca . "{$student}/{$zadaca}/{$filename}"; if (file_exists($path)) { unlink($path); $filecount++; } } $path = $lokacijazadaca . "{$student}/{$zadaca}/{$r12['3']}{$ekstenzija}"; if (file_exists($path)) { unlink($path); $filecount++; } } $q15 = myquery("select count(*) from stdin where zadaca={$zadaca} and redni_broj={$i}"); $stdincount += mysql_result($q15, 0, 0); $q16 = myquery("delete from stdin where zadaca={$zadaca} and redni_broj={$i}"); } } nicemessage("Obrisano: {$totcount} starih statusa zadaće, {$diffcount} diffova, {$stdincount} unosa stdin, {$filecount} datoteka."); zamgerlog("kompaktovana baza za predmet p{$ponudakursa}", 4); // nivo 4: audit } ?> <p> </p> <h3>Kompaktovanje baze</h3> <p>Ovo je operacija kojim se iz baze brišu svi podaci koji nisu potrebni za ispravno izračunavanje ocjene. To uključuje: historiju starih statusa zadaće, razlike (diffove) zadaća, komentare i pomoćne ocjene za grupe/studente, unose za izvršavanje zadaće na serveru.</p> <p>Izaberite koji predmet želite kompaktovati:<br/> <?php echo genform(); ?> <input type="hidden" name="akcija" value="kompaktuj"> <select name="predmet"> <?php $q100 = myquery("select pk.id, p.naziv, ag.naziv from ponudakursa as pk, predmet as p, akademska_godina as ag where pk.akademska_godina=ag.id and pk.predmet=p.id order by ag.naziv,p.naziv"); while ($r100 = mysql_fetch_row($q100)) { print "<option value=\"{$r100['0']}\">{$r100['1']} ({$r100['2']})</option>\n"; } ?> </select> <input type="submit" value=" Kompaktuj "></form> <?php }
function saradnik_raspored($tip) { global $userid, $user_nastavnik, $user_studentska; // Nizovi sa imenima termina $vrijeme_pocetak = array("0" => "08:00", "1" => "09:00", "2" => "10:00", "3" => "11:00", "4" => "12:00", "5" => "13:00", "6" => "14:00", "7" => "15:00", "8" => "16:00", "9" => "17:00", "10" => "18:00", "11" => "19:00", "12" => "20:00"); $vrijeme_kraj = array("0" => "08:45", "1" => "09:45", "2" => "10:45", "3" => "11:45", "4" => "12:45", "5" => "13:45", "6" => "14:45", "7" => "15:45", "8" => "16:45", "9" => "17:45", "10" => "18:45", "11" => "19:45", "12" => "20:45"); $dani_u_sedmici = array("", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"); ?> <h2> Podešavanje rasporeda</h2> <a href="index.php?sta=saradnik/intro">Povratak na početnu stranicu.</a><br /><br /> <?php // AKCIJA - DODAVANJE STAVKE U RASPORED if ($_REQUEST['akcija'] == "dodaj" && check_csrf_token()) { $dan = intval($_REQUEST['dan']); $predmet = intval($_REQUEST['predmet']); $tip = $_REQUEST['tip']; $vvrijeme_pocetak = intval($_REQUEST['vrijeme_pocetak']); $vvrijeme_kraj = intval($_REQUEST['vrijeme_kraj']); $fini_pocetak = $_REQUEST['fini_pocetak']; $fini_kraj = $_REQUEST['fini_kraj']; $sala = intval($_REQUEST['sala']); if ($_REQUEST['javan']) { $privatno = 0; } else { $privatno = $userid; } $labgrupa = intval($_REQUEST['labgrupa']); $greska = ""; if ($dan == 0) { $greska .= "Niste izabrali dan u sedmici. "; } if ($tip != "P" && $tip != "T" && $tip != "L") { $greska .= "Pogrešan tip časa. "; } if ($vvrijeme_kraj < $vvrijeme_pocetak) { $greska .= "Čas se ne može završiti prije nego što počne! "; } $matches = array(); if (!preg_match("/^(\\d\\d)\\:(\\d\\d)\\:(\\d\\d)\$/", $fini_pocetak, $matches)) { $greska .= "Precizno vrijeme početka nije u ispravnom formatu. "; } $pocstamp = mktime($matches[1], $matches[2], $matches[3]); if (!preg_match("/^(\\d\\d)\\:(\\d\\d)\\:(\\d\\d)\$/", $fini_kraj, $matches)) { $greska .= "Precizno vrijeme kraja nije u ispravnom formatu. "; } $krajstamp = mktime($matches[1], $matches[2], $matches[3]); if ($greska == "" && $krajstamp < $pocstamp) { $greska .= "Čas se ne može završiti prije nego što počne! (precizno vrijeme) "; } if ($greska != "") { niceerror($greska); print "<a href=\"javascript:history.back();\">Nazad</a>"; return; } $q200 = myquery("select id from akademska_godina where aktuelna=1"); $ag = mysql_result($q200, 0, 0); if ($labgrupa == 0) { ?> <b>Upravo u raspored dodajete čas sa sljedećim podacima:</b><br /> Dan u sedmici: <?php echo $dani_u_sedmici[$dan]; ?> <br /> Predmet: <?php $q300 = myquery("select naziv from predmet where id={$predmet}"); print mysql_result($q300, 0, 0); ?> <br /> Tip časa: <?php echo $tip; ?> <br /> Trajanje časa: <?php echo $vrijeme_pocetak[$vvrijeme_pocetak]; ?> - <?php echo $vrijeme_kraj[$vvrijeme_kraj]; ?> <br /> <?php if ($fini_pocetak != "00:00:00") { ?> Preciznije trajanje: <?php echo $fini_pocetak . " - " . $fini_kraj; ?> <br /> <?php } ?> Sala: <?php $q310 = myquery("select naziv from raspored_sala where id={$sala}"); print mysql_result($q310, 0, 0); ?> <br /> <?php if ($privatno == 0) { print "Vidljivo studentima<br />"; } else { print "Nije vidljivo studentima<br />"; } ?> Ako neki od ovih podataka nije tačan, <a href="javascript:history.back();">vratite se nazad</a>.<br /><br /> <?php echo genform("POST"); ?> Da li je ovaj čas specifičan za jednu od grupa na predmetu ili je zajednički za sve?<br /> Izaberite grupu: <select name="labgrupa"> <option value="-1">Zajednički za sve</option> <?php $q199 = myquery("select id, naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=0 order by naziv"); while ($r199 = mysql_fetch_row($q199)) { print "<option value=\"{$r199['0']}\">{$r199['1']}</option>"; } ?> </select><br /> <input type="submit" value=" Potvrda "> </form> <?php return; } if ($labgrupa == -1) { $labgrupa = 0; } // Dodati studij, semestar $q210 = myquery("select id from raspored where akademska_godina={$ag} and privatno={$privatno}"); if (mysql_num_rows($q210) < 1) { $q220 = myquery("insert into raspored set studij=0, semestar=0, akademska_godina={$ag}, privatno={$privatno}, aktivan=1"); $id_rasporeda = mysql_insert_id(); zamgerlog("kreiran raspored {$id_rasporeda}", 2); } else { $id_rasporeda = mysql_result($q210, 0, 0); } $q230 = myquery("insert into raspored_stavka set raspored={$id_rasporeda}, dan_u_sedmici={$dan}, predmet={$predmet}, labgrupa={$labgrupa}, vrijeme_pocetak={$vvrijeme_pocetak}, vrijeme_kraj={$vvrijeme_kraj}, sala={$sala}, tip='{$tip}', dupla=0, isjeckana=0, fini_pocetak='{$fini_pocetak}', fini_kraj='{$fini_kraj}'"); zamgerlog("dodana stavka " . mysql_insert_id() . " u raspored {$id_rasporeda}", 2); nicemessage("Dodavanje časa u raspored uspjelo!"); print "<a href=\"?sta=saradnik/raspored\">Nastavak</a>"; return; } // AKCIJA - potvrda izmjene if ($_REQUEST['akcija'] == "potvrda_izmjene" && check_csrf_token()) { $id_stavke = intval($_REQUEST['id_stavke']); $dan = intval($_REQUEST['dan']); $predmet = intval($_REQUEST['predmet']); $tip = $_REQUEST['tip']; $vvrijeme_pocetak = intval($_REQUEST['vrijeme_pocetak']); $vvrijeme_kraj = intval($_REQUEST['vrijeme_kraj']); $fini_pocetak = $_REQUEST['fini_pocetak']; $fini_kraj = $_REQUEST['fini_kraj']; $sala = intval($_REQUEST['sala']); if ($_REQUEST['javan']) { $privatno = 0; } else { $privatno = $userid; } $labgrupa = intval($_REQUEST['labgrupa']); $greska = ""; if ($dan == 0) { $greska .= "Niste izabrali dan u sedmici. "; } if ($tip != "P" && $tip != "T" && $tip != "L") { $greska .= "Pogrešan tip časa. "; } if ($vvrijeme_kraj < $vvrijeme_pocetak) { $greska .= "Čas se ne može završiti prije nego što počne! "; } $matches = array(); if (!preg_match("/^(\\d\\d)\\:(\\d\\d)\\:(\\d\\d)\$/", $fini_pocetak, $matches)) { $greska .= "Precizno vrijeme početka nije u ispravnom formatu. "; } $pocstamp = mktime($matches[1], $matches[2], $matches[3]); if (!preg_match("/^(\\d\\d)\\:(\\d\\d)\\:(\\d\\d)\$/", $fini_kraj, $matches)) { $greska .= "Precizno vrijeme kraja nije u ispravnom formatu. "; } $krajstamp = mktime($matches[1], $matches[2], $matches[3]); if ($greska == "" && $krajstamp < $pocstamp) { $greska .= "Čas se ne može završiti prije nego što počne! (precizno vrijeme) "; } if ($greska != "") { niceerror($greska); print "<a href=\"javascript:history.back();\">Nazad</a>"; return; } $q200 = myquery("select id from akademska_godina where aktuelna=1"); $ag = mysql_result($q200, 0, 0); // Dodati studij, semestar $q210 = myquery("select id from raspored where akademska_godina={$ag} and privatno={$privatno}"); if (mysql_num_rows($q210) < 1) { $q220 = myquery("insert into raspored set studij=0, semestar=0, akademska_godina={$ag}, privatno={$privatno}, aktivan=1"); $id_rasporeda = mysql_insert_id(); zamgerlog("kreiran raspored {$id_rasporeda}", 2); } else { $id_rasporeda = mysql_result($q210, 0, 0); } $q230 = myquery("update raspored_stavka set raspored={$id_rasporeda}, dan_u_sedmici={$dan}, predmet={$predmet}, labgrupa={$labgrupa}, vrijeme_pocetak={$vvrijeme_pocetak}, vrijeme_kraj={$vvrijeme_kraj}, sala={$sala}, tip='{$tip}', dupla=0, isjeckana=0, fini_pocetak='{$fini_pocetak}', fini_kraj='{$fini_kraj}' where id={$id_stavke}"); zamgerlog("ažurirana stavka {$id_stavke} u rasporedu {$id_rasporeda}", 2); nicemessage("Ažuriranje časa u rasporedu uspjelo!"); print "<a href=\"?sta=saradnik/raspored\">Nastavak</a>"; return; } // SPISAK PREDMETA NA KOJIMA JE ANGAŽOVAN NASTAVNIK $q10 = myquery("select count(*) from student_studij as ss, akademska_godina as ag where ss.akademska_godina=ag.id and ag.aktuelna=1 and ss.semestar mod 2=0"); if (mysql_num_rows($q10) > 0) { $neparni = 0; } else { $neparni = 1; } $whereCounter = 0; $spisak_predmeta = ""; if ($user_studentska && $_REQUEST['dajsve'] == 1) { $q20 = myquery("SELECT pk.predmet, pk.akademska_godina, pk.semestar, p.id, p.naziv FROM \r\nponudakursa as pk, akademska_godina as ag, predmet as p WHERE pk.akademska_godina = ag.id and \r\nag.aktuelna=1 and pk.predmet=p.id"); } else { if ($user_nastavnik) { $q20 = myquery("SELECT np.predmet, pk.akademska_godina, pk.semestar, p.id, p.naziv FROM nastavnik_predmet as np, ponudakursa as pk, akademska_godina as ag, predmet as p WHERE np.nastavnik = {$userid} AND pk.predmet = np.predmet AND np.predmet=p.id and pk.akademska_godina = ag.id and np.akademska_godina=ag.id and ag.aktuelna=1"); } else { $q20 = myquery("SELECT pk.predmet, pk.akademska_godina, pk.semestar, p.id, p.naziv FROM student_predmet as sp, ponudakursa as pk, akademska_godina as ag, predmet as p WHERE sp.student = {$userid} AND pk.id = sp.predmet AND pk.akademska_godina = ag.id and ag.aktuelna=1 and pk.predmet=p.id"); } } while ($r20 = mysql_fetch_row($q20)) { $ag = $r20[1]; $semestar = $r20[2]; if ($semestar % 2 != $neparni) { continue; } if ($whereCounter > 0) { $sqlPredmet .= " OR rs.predmet = " . $r20[0]; } else { $sqlPredmet = " rs.predmet = " . $r20[0]; } $whereCounter++; $spisak_predmeta .= "<option value=\"{$r20['3']}\">{$r20['4']}</option>\n"; } if (strlen($sqlPredmet) > 0) { $sqlWhere = "(" . $sqlPredmet . ")"; } else { $sqlWhere = "1=0"; } // Nije angazovan nigdje, prikaži prazan raspored // AKCIJA - IZMJENA STAVKE if ($_REQUEST['akcija'] == "izmjena") { $rid = intval($_REQUEST['id']); $q400 = myquery("select rs.dan_u_sedmici, rs.predmet, rs.labgrupa, rs.vrijeme_pocetak, rs.vrijeme_kraj, rs.sala, rs.tip, rs.fini_pocetak, rs.fini_kraj, r.privatno from raspored_stavka as rs, raspored as r where rs.id={$rid} and rs.raspored=r.id"); if (mysql_num_rows($q400) < 1) { niceerror("Nepoznata stavka u rasporedu"); return; } $mdan = mysql_result($q400, 0, 0); $mpredmet = mysql_result($q400, 0, 1); $mgrupa = mysql_result($q400, 0, 2); $mpoc = mysql_result($q400, 0, 3); $mkraj = mysql_result($q400, 0, 4); $msala = mysql_result($q400, 0, 5); $mtip = mysql_result($q400, 0, 6); $mfinipoc = mysql_result($q400, 0, 7); $mfinikraj = mysql_result($q400, 0, 8); if (mysql_result($q400, 0, 9) == 0) { $javno = " checked"; } else { $javno = ""; } $spisak_predmeta = str_replace("option value=\"{$mpredmet}\"", "option value=\"{$mpredmet}\" selected", $spisak_predmeta); ?> <b>Izmijenite čas u rasporedu:</b><br /><br /> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="potvrda_izmjene"> <input type="hidden" name="id_stavke" value="<?php echo $rid; ?> "> Dan u sedmici: <select name="dan"><?php foreach ($dani_u_sedmici as $id => $ime) { if ($id == $mdan) { $sel = " selected"; } else { $sel = ""; } print "<option value=\"{$id}\" {$sel}>{$ime}</option>\n"; } ?> </select><br /> Predmet: <select name="predmet"><?php echo $spisak_predmeta; ?> </select><br /> Tip časa: <select name="tip"> <option value="P" <?php if ($mtip == "P") { print "selected"; } ?> >Predavanja</option> <option value="T" <?php if ($mtip == "T") { print "selected"; } ?> >Tutorijali</option> <option value="L" <?php if ($mtip == "L") { print "selected"; } ?> >Laboratorijske vježbe</option> </select><br /> <br /> Početak časa: <select name="vrijeme_pocetak"><?php foreach ($vrijeme_pocetak as $id => $ime) { if ($id == $mpoc) { $sel = " selected"; } else { $sel = ""; } print "<option value=\"{$id}\" {$sel}>{$ime}</option>\n"; } ?> </select><br /> Završetak časa: <select name="vrijeme_kraj"><?php foreach ($vrijeme_kraj as $id => $ime) { if ($id == $mkraj) { $sel = " selected"; } else { $sel = ""; } print "<option value=\"{$id}\" {$sel}>{$ime}</option>\n"; } ?> </select><br /><br /> Ako vrijednosti izabrane iznad nisu dovoljno precizne, unesite precizniju vrijednost vremena u polje ispod (u formatu hh:mm:ss)<br /> Preciznije vrijeme početka: <input type="text" name="fini_pocetak" size="10" value="<?php echo $mfinipoc; ?> " /><br /> Preciznije vrijeme završetka: <input type="text" name="fini_kraj" size="10" value="<?php echo $mfinikraj; ?> " /><br /><br /> Sala: <select name="sala"><?php $q100 = myquery("select id,naziv, kapacitet, tip from raspored_sala order by naziv"); while ($r100 = mysql_fetch_row($q100)) { if ($r100[3] != "") { $r100[3] = ", " . $r100[3]; } if ($r100[0] == $msala) { $sel = " selected"; } else { $sel = ""; } print "<option value=\"{$r100['0']}\" {$sel}>{$r100['1']} ({$r100['2']} mjesta{$r100['3']})</option>\n"; } ?> </select><br /> Nastavna grupa: <select name="labgrupa"><?php if ($mgrupa == 0) { $sel = " selected"; } else { $sel = ""; } print "<option value=\"0\" {$sel}>Zajednički za sve</option>\n"; $q410 = myquery("select id from akademska_godina where aktuelna=1"); $ag = mysql_result($q410, 0, 0); $q420 = myquery("select id, naziv from labgrupa where predmet={$mpredmet} and akademska_godina={$ag} order by naziv"); while ($r420 = mysql_fetch_row($q420)) { if ($r420[0] == $mgrupa) { $sel = " selected"; } else { $sel = ""; } print "<option value=\"{$r420['0']}\" {$sel}>{$r420['1']}</option>\n"; } ?> </select><br /> Da li želite da čas bude vidljiv svima? <input type="checkbox" name="javan" <?php echo $javno; ?> > DA<br /> <br /> <input type="submit" value=" Potvrdite izmjene časa "> </form> <?php return; } // DODAVANJE ČASA U RASPORED ?> <b>Dodajte čas u raspored:</b><br /><br /> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="dodaj"> Dan u sedmici: <select name="dan"><?php foreach ($dani_u_sedmici as $id => $ime) { print "<option value=\"{$id}\">{$ime}</option>\n"; } ?> </select><br /> Predmet: <select name="predmet"><?php echo $spisak_predmeta; ?> </select><br /> Tip časa: <select name="tip"> <option value="P">Predavanja</option> <option value="T">Tutorijali</option> <option value="L">Laboratorijske vježbe</option> </select><br /> <br /> Početak časa: <select name="vrijeme_pocetak"><?php foreach ($vrijeme_pocetak as $id => $ime) { print "<option value=\"{$id}\">{$ime}</option>\n"; } ?> </select><br /> Završetak časa: <select name="vrijeme_kraj"><?php foreach ($vrijeme_kraj as $id => $ime) { print "<option value=\"{$id}\">{$ime}</option>\n"; } ?> </select><br /><br /> Ako vrijednosti izabrane iznad nisu dovoljno precizne, unesite precizniju vrijednost vremena u polje ispod (u formatu hh:mm:ss)<br /> Preciznije vrijeme početka: <input type="text" name="fini_pocetak" size="10" value="00:00:00" /><br /> Preciznije vrijeme završetka: <input type="text" name="fini_kraj" size="10" value="00:00:00" /><br /><br /> Sala: <select name="sala"><?php $q100 = myquery("select id,naziv, kapacitet, tip from raspored_sala order by naziv"); while ($r100 = mysql_fetch_row($q100)) { if ($r100[3] != "") { $r100[3] = ", " . $r100[3]; } print "<option value=\"{$r100['0']}\">{$r100['1']} ({$r100['2']} mjesta{$r100['3']})</option>\n"; } ?> </select><br /> Da li želite da čas bude vidljiv svima? <input type="checkbox" name="javan"> DA<br /> <br /> <input type="submit" value=" Dodaj čas u raspored "> </form> <p> </p> <?php // TRENUTNI RASPORED ?> <b>Vaš trenutni raspored:</b> <br /><br /> <?php $q30 = myquery("SELECT rs.id, p.naziv as naz, p.kratki_naziv, rs.dan_u_sedmici, rs.tip, rs.vrijeme_pocetak, rs.vrijeme_kraj, rs.labgrupa, rsala.naziv, rs.fini_pocetak, rs.fini_kraj, r.privatno\r\n\tFROM raspored_stavka as rs, raspored_sala as rsala, predmet as p, raspored as r, akademska_godina as ag\r\n\tWHERE " . $sqlWhere . " AND rsala.id=rs.sala AND p.id=rs.predmet AND rs.raspored=r.id and r.akademska_godina=ag.id and ag.aktuelna=1 and (r.privatno=0 or r.privatno={$userid})\r\n\tORDER BY rs.dan_u_sedmici ASC, rs.vrijeme_pocetak ASC, rs.id ASC"); if (mysql_num_rows($q30) == 0) { print "<br />Nijedan čas nije definisan u vašem rasporedu."; } $old_dan = -1; while ($r30 = mysql_fetch_row($q30)) { if ($r30[3] != $old_dan) { print "</ul><br />" . $dani_u_sedmici[$r30[3]] . "<ul>"; $old_dan = $r30[3]; } if ($r30[4] == "P") { $tip = "Predavanja"; } else { if ($r30[4] == "T") { $tip = "Tutorijali"; } else { $tip = "Laboratorijske vježbe"; } } ?> <li><?php echo $vrijeme_pocetak[$r30[5]] . " - " . $vrijeme_kraj[$r30[6]]; ?> , <b><?php echo $r30[1]; ?> </b> ( <a href="?sta=saradnik/raspored&akcija=izmjena&id=<?php echo $r30[0]; ?> ">izmijeni</a> )<br /> <?php if ($r30[9] != "00:00:00") { ?> Preciznije vrijeme: <?php echo substr($r30[9], 0, 5); ?> - <?php echo substr($r30[10], 0, 5); ?> <br /> <?php } ?> Sala: <?php echo $r30[8]; ?> <br /> Tip časa: <?php echo $tip; ?> <br /> <?php if ($r30[7] != 0) { $q40 = myquery("select naziv from labgrupa where id=" . $r30[7]); ?> Grupa: <?php echo mysql_result($q40, 0, 0); ?> <br /> <?php } ?> <?php if ($r30[11] == 0) { print "Javno"; } else { print "Privatno"; } print "<br /></li>\n"; } }
function studentska_raspored1() { ?> <link href="css/raspored1.css" rel="stylesheet" type="text/css"> <?php global $userid, $user_siteadmin, $user_studentska; // Provjera privilegija if (!$user_studentska && !$user_siteadmin) { zamgerlog("nije studentska", 3); // 3: error zamgerlog2("nije studentska"); biguglyerror("Pristup nije dozvoljen."); return; } ?> <script language="JavaScript" type="text/javascript"> function daj_uputstvo(){ var x=document.getElementById('uputstvo_za_mas_unos_sala'); var slika=document.getElementById('slika_za_mas_unos_sala'); if(x.style.display=="none"){ x.style.display="inline"; slika.src="images/minus.png"; } else { x.style.display="none"; slika.src="images/plus.png"; } } function prikaziGrupe() { document.getElementById('akcija_novi_cas').value="unos_novog_casa_predfaza"; document.forma_za_unos_casa.submit(); } function dodajCasSaKonfliktima() { document.getElementById('cas_sa_konfliktima').value="1"; document.forma_za_unos_casa.submit(); } function brisanje_casa(id_casa) { var a = confirm("Obrisati čas! Da li ste sigurni?"); if (a) { document.getElementById('id_casa_za_brisanje').value=id_casa; document.brisanjecasa.submit(); } } function prikazKonflikata(){ var x=document.getElementById('prikaz_konflikata'); var slika=document.getElementById('slika_konflikti'); if(x.style.display=="none"){ x.style.display="inline"; slika.src="images/minus.png"; } else { x.style.display="none"; slika.src="images/plus.png"; } } function brisanje_rasporeda(id_rasporeda) { var a = confirm("Obrisati raspored i kompletan sadržaj! Da li ste sigurni?"); if (a) { document.getElementById('id_rasporeda_za_brisanje').value=id_rasporeda; document.brisanjerasporeda.submit(); } } function kopiranjeSvihRasporeda() { var a = confirm("Ovom akcijom brišete eventualno postojeći sadržaj destinacijskog rasporeda!!"); if (a) { document.kopiranjerasporeda.submit(); } } </script> <?php function prikaziKonflikte($id_stavke_rasporeda, $ispis = 0) { $q0 = myquery("select r.akademska_godina,r.semestar from raspored r, raspored_stavka rs where r.id=rs.raspored and rs.id={$id_stavke_rasporeda}"); $akademska_godina = mysql_result($q0, 0, 0); $semestar = mysql_result($q0, 0, 1); $semestar_je_neparan = $semestar % 2; $q1 = myquery("select predmet,vrijeme_pocetak,vrijeme_kraj,tip,labgrupa,dan_u_sedmici,dupla from raspored_stavka where id={$id_stavke_rasporeda}"); $predmet = mysql_result($q1, 0, 0); $pocetak = mysql_result($q1, 0, 1); $kraj = mysql_result($q1, 0, 2); $tip = mysql_result($q1, 0, 3); $labgrupa = mysql_result($q1, 0, 4); $dan = mysql_result($q1, 0, 5); $dupla = mysql_result($q1, 0, 6); if ($labgrupa != 0) { if ($labgrupa != -1) { $q4 = myquery("select naziv from labgrupa where id={$labgrupa}"); $labgrupa_naziv = mysql_result($q4, 0, 0); } } $interval = $kraj - $pocetak; $konflikt = array(); $konflikt['student'] = array(); $konflikt['predmet'] = array(); $konflikt['pocetak'] = array(); $konflikt['kraj'] = array(); $q2 = myquery("select rs.sala,rs.vrijeme_pocetak,rs.vrijeme_kraj,rs.predmet,rs.tip,rs.labgrupa,r.semestar,rs.id \r\n\tfrom raspored_stavka rs,raspored r where rs.dan_u_sedmici={$dan} and rs.raspored=r.id and r.akademska_godina={$akademska_godina} \r\n\tand r.semestar mod 2 = {$semestar_je_neparan} and rs.dupla=0 and (rs.isjeckana=0 or rs.isjeckana=2) and rs.labgrupa != -1"); for ($f = 0; $f < mysql_num_rows($q2); $f++) { $sala_i = mysql_result($q2, $f, 0); $vrijeme_pocetak_i = mysql_result($q2, $f, 1); $vrijeme_kraj_i = mysql_result($q2, $f, 2); $predmet_i = mysql_result($q2, $f, 3); $tip_i = mysql_result($q2, $f, 4); $labgrupa_i = mysql_result($q2, $f, 5); $semestar_i = mysql_result($q2, $f, 6); $id_stavke_i = mysql_result($q2, $f, 7); if ($id_stavke_i == $id_stavke_rasporeda || $id_stavke_i == $dupla) { continue; } if ($tip_i == "P") { $labgrupa_i = 0; } //ukoliko postoji preklapanje termina (sada gledamo sve rasporede) tačan je uslov ispod if ($vrijeme_pocetak_i >= $pocetak && $vrijeme_pocetak_i < $kraj || $vrijeme_kraj_i > $pocetak && $vrijeme_kraj_i <= $kraj) { // provjera preklapanja studenata u terminu if ($tip == "P") { $q_prvi = myquery("select sp.student from student_predmet sp,ponudakursa pk where sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$akademska_godina} and pk.semestar={$semestar}"); } else { $q_prvi = myquery("select student from student_labgrupa where labgrupa={$labgrupa}"); } if ($labgrupa_i == 0) { $q_drugi = myquery("select sp.student from student_predmet sp,ponudakursa pk where sp.predmet=pk.id and pk.predmet={$predmet_i} and pk.akademska_godina={$akademska_godina} and pk.semestar={$semestar_i}"); } else { $q_drugi = myquery("select student from student_labgrupa where labgrupa={$labgrupa_i}"); } for ($p = 0; $p < mysql_num_rows($q_prvi); $p++) { $student_p = mysql_result($q_prvi, $p, 0); for ($d = 0; $d < mysql_num_rows($q_drugi); $d++) { $student_d = mysql_result($q_drugi, $d, 0); if ($student_p == $student_d) { // pronadjen je student u konfliktu i upisujemo ga u niz konflikata $konflikt['student'][] = $student_p; $konflikt['predmet'][] = $predmet_i; $konflikt['pocetak'][] = $vrijeme_pocetak_i; $konflikt['kraj'][] = $vrijeme_kraj_i; } } } } } $broj_konflikata = count($konflikt['student']); if ($ispis == 1) { print "<p>Prikaz konflikata:</p>"; print "<ul>"; for ($i = 0; $i < count($konflikt['student']); $i++) { $student = $konflikt['student'][$i]; $predmet = $konflikt['predmet'][$i]; $pocetak = $konflikt['pocetak'][$i]; $kraj = $konflikt['kraj'][$i]; $vrijemePocS = floor(($pocetak - 1) / 4 + 8); $vrijemePocMin = $pocetak % 4; if ($vrijemePocMin == 1) { $vrijemePocM = "00"; } elseif ($vrijemePocMin == 2) { $vrijemePocM = "15"; } elseif ($vrijemePocMin == 3) { $vrijemePocM = "30"; } elseif ($vrijemePocMin == 0) { $vrijemePocM = "45"; } $vrijemeP = "{$vrijemePocS}:{$vrijemePocM}"; $vrijemeKrajS = floor(($kraj - 1) / 4 + 8); $vrijemeKrajMin = $kraj % 4; if ($vrijemeKrajMin == 1) { $vrijemeKrajM = "00"; } elseif ($vrijemeKrajMin == 2) { $vrijemeKrajM = "15"; } elseif ($vrijemeKrajMin == 3) { $vrijemeKrajM = "30"; } elseif ($vrijemeKrajMin == 0) { $vrijemeKrajM = "45"; } $vrijemeK = "{$vrijemeKrajS}:{$vrijemeKrajM}"; $q1 = myquery("select ime, prezime from osoba where id={$student}"); $ime = mysql_result($q1, 0, 0); $prezime = mysql_result($q1, 0, 1); $q2 = myquery("select naziv from predmet where id={$predmet}"); $naziv_predmeta = mysql_result($q2, 0, 0); print "<li><p><b>{$ime} {$prezime}</b> ima predmet <b>{$naziv_predmeta}</b> u terminu <b>{$vrijemeP}-{$vrijemeK}</b></p></li>"; } print "</ul>"; } return $broj_konflikata; } ?> <center> <table border="0"><tr><td> <?php // uslov ispod se koristi ako prikazujemo stranicu za rad sa salama if (isset($_REQUEST['edit_sala']) && $_REQUEST['edit_sala'] == 1) { $greska = 0; //uslov ispod je ispunjen ako je prihvaćena forma za unos nove sale if ($_POST['akcija'] == 'unos_nove_sale' && check_csrf_token()) { if (empty($_POST['ime_sale'])) { $greska = 1; $greska_prazno_ime_sale = 1; } else { // ako ime sale nije prazno izvršava se sljedeći kod $ime_sale = my_escape($_POST['ime_sale']); $q0 = myquery("select naziv from raspored_sala"); for ($i = 0; $i < mysql_num_rows($q0); $i++) { if (mysql_result($q0, $i, 0) == $ime_sale) { $greska = 1; $greska_postoji_sala = 1; } } } $tip_sale = my_escape($_POST['tip_sale']); if (empty($_POST['kapacitet'])) { $greska = 1; $greska_prazan_kapacitet = 1; } elseif (!is_numeric($_POST['kapacitet'])) { $greska = 1; $greska_kapacitet_nije_broj = 1; } else { // ako je kapacitet ispravno unešen $kapacitet = intval($_POST['kapacitet']); } if ($greska == 0) { // ako nema greski unosimo novu salu u bazu $tip_sale = my_escape($_POST['tip_sale']); $q0 = myquery("select * from raspored_sala"); if (mysql_num_rows($q0) > 0) { $q1 = myquery("select max(id) from raspored_sala"); $id_nove_sale = mysql_result($q1, 0, 0) + 1; } else { $id_nove_sale = 1; } $q0 = myquery("insert into raspored_sala set id={$id_nove_sale}, naziv='{$ime_sale}', kapacitet={$kapacitet}, tip='{$tip_sale}'"); $uspjesno_unesena_sala = 1; zamgerlog("upisana nova sala {$ime_sale}", 2); // nivo 2 je izmjena podataka u bazi zamgerlog2("upisana nova sala", $id_nove_sale, 0, 0, $ime_sale); } } elseif ($_POST['akcija'] == 'editovanje_sale' && check_csrf_token()) { $id_sale_za_edit = intval($_POST['id_sale_za_edit']); $q0 = myquery("select naziv from raspored_sala where id={$id_sale_za_edit}"); $stari_naziv_sale = mysql_result($q0, 0, 0); if (empty($_POST['edit_ime_sale'])) { $greska = 1; $greska_prazno_ime_sale = 1; } else { // ako ime sale nije prazno izvršava se sljedeći kod $ime_sale = my_escape($_POST['edit_ime_sale']); $q1 = myquery("select naziv from raspored_sala"); for ($i = 0; $i < mysql_num_rows($q1); $i++) { if (mysql_result($q1, $i, 0) == $ime_sale && $ime_sale != $stari_naziv_sale) { $greska = 1; $greska_postoji_sala = 1; } } } $tip_sale = my_escape($_POST['edit_tip_sale']); if (empty($_POST['edit_kapacitet'])) { $greska = 1; $greska_prazan_kapacitet = 1; } elseif (!is_numeric($_POST['edit_kapacitet'])) { $greska = 1; $greska_kapacitet_nije_broj = 1; } else { // ako je kapacitet ispravno unešen $kapacitet = intval($_POST['edit_kapacitet']); } if ($greska == 0) { // ako nema greski unosimo novu salu u bazu $tip_sale = my_escape($_POST['edit_tip_sale']); $q1 = myquery("update raspored_sala set naziv='{$ime_sale}', kapacitet={$kapacitet}, tip='{$tip_sale}' where id={$id_sale_za_edit}"); $uspjesno_editovana_sala = 1; zamgerlog("editovana sala {$stari_naziv_sale}", 2); // nivo 2 je izmjena podataka u bazi zamgerlog2("editovana sala", $id_sale_za_edit); } } $greska_masovnog_unosa = 0; // uslov ispod je ispunjen ako je prihvaćena forma za masovni unos sala if ($_POST['akcija'] == 'masovni_unos_sala' && check_csrf_token()) { $redovi = explode("\n", $_POST['mas_unos_sala']); if (trim($_POST['mas_unos_sala']) == '') { $greska_masovnog_unosa = 1; $greska_prazan_prostor_za_mas_unos_sala = 1; } $greska_u_redu = array(); $greska_prazni_parametri_u_redu = array(); $greska_nevalja_tip_sale_u_redu = array(); $greska_nevalja_kapacitet_u_redu = array(); $greska_postoji_sala_u_redu = array(); $i = 0; foreach ($redovi as $red) { $i++; $red = trim($red); if (strlen($red) < 1) { continue; } // prazan red if ($_POST['separator'] == 1) { list($ime_sale, $tip_sale, $kapacitet) = explode(",", $red); $ime_sale = trim($ime_sale); $tip_sale = trim($tip_sale); $kapacitet = trim($kapacitet); $niz = explode(",", $red); } elseif ($_POST['separator'] == 2) { list($ime_sale, $tip_sale, $kapacitet) = explode("\t", $red); $ime_sale = trim($ime_sale); $tip_sale = trim($tip_sale); $kapacitet = trim($kapacitet); $niz = explode("\t", $red); } if (count($niz) != 3) { $greska_masovnog_unosa = 1; $greska_u_redu[] = $i; } elseif (count($niz) == 3) { if ($ime_sale == '' || $tip_sale == '' || $kapacitet == '') { $greska_masovnog_unosa = 1; $greska_prazni_parametri_u_redu[] = $i; } else { if ($tip_sale != 'amf' && $tip_sale != 'lab' && $tip_sale != 'kab') { $greska_masovnog_unosa = 1; $greska_nevalja_tip_sale_u_redu[] = $i; } if (!is_numeric($kapacitet)) { $greska_masovnog_unosa = 1; $greska_nevalja_kapacitet_u_redu[] = $i; } $q0 = myquery("select naziv from raspored_sala"); for ($j = 0; $j < mysql_num_rows($q0); $j++) { if (mysql_result($q0, $j, 0) == $ime_sale) { $greska_masovnog_unosa = 1; $greska_postoji_sala_u_redu[] = $i; } } } } } if ($greska_masovnog_unosa == 0) { $unesene_sale = array(); foreach ($redovi as $red) { $red = trim($red); if (strlen($red) < 1) { continue; } // prazan red if ($_POST['separator'] == 1) { list($ime_sale, $tip_sale, $kapacitet) = explode(",", $red); $ime_sale = trim($ime_sale); } elseif ($_POST['separator'] == 2) { list($ime_sale, $tip_sale, $kapacitet) = explode("\t", $red); $ime_sale = trim($ime_sale); } $unesene_sale[] = $ime_sale; } $postoji_dupla = false; for ($i = 0; $i < count($unesene_sale); $i++) { $prva = $unesene_sale[$i]; for ($j = $i + 1; $j < count($unesene_sale); $j++) { $druga = $unesene_sale[$j]; if ($prva == $druga) { $greska_masovnog_unosa = 1; $greska_postoje_duple_sale = 1; } } } } // ako nema grešaka u unosu dodajemo sale if ($greska_masovnog_unosa == 0) { $unesene_sale = array(); foreach ($redovi as $red) { $red = trim($red); if (strlen($red) < 1) { continue; } // prazan red if ($_POST['separator'] == 1) { list($ime_sale, $tip_sale, $kapacitet) = explode(",", $red); $ime_sale = trim($ime_sale); $tip_sale = trim($tip_sale); if ($tip_sale == 'amf') { $tip_sale = 'amfiteatar'; } elseif ($tip_sale == 'lab') { $tip_sale = 'laboratorija'; } elseif ($tip_sale == 'kab') { $tip_sale = 'kabinet'; } $kapacitet = trim($kapacitet); $niz = explode(",", $red); } elseif ($_POST['separator'] == 2) { list($ime_sale, $tip_sale, $kapacitet) = explode("\t", $red); $ime_sale = trim($ime_sale); $tip_sale = trim($tip_sale); if ($tip_sale == 'amf') { $tip_sale = 'amfiteatar'; } elseif ($tip_sale == 'lab') { $tip_sale = 'laboratorija'; } elseif ($tip_sale == 'kab') { $tip_sale = 'kabinet'; } $kapacitet = trim($kapacitet); $niz = explode("\t", $red); } $q0 = myquery("select * from raspored_sala"); if (mysql_num_rows($q0) > 0) { $q1 = myquery("select max(id) from raspored_sala"); $id_nove_sale = mysql_result($q1, 0, 0) + 1; } else { $id_nove_sale = 1; } $q0 = myquery("insert into raspored_sala set id={$id_nove_sale}, naziv='{$ime_sale}', kapacitet={$kapacitet}, tip='{$tip_sale}'"); $unesene_sale[] = $ime_sale; zamgerlog("masovni unos sala: Unesena je sala {$ime_sale}", 2); zamgerlog2("upisana nova sala (masovni unos)", $id_nove_sale, 0, 0, $ime_sale); } $uspjesan_masovni_unos_sala = 1; } } // Obrisi salu if ($_POST['akcija'] == "obrisi_salu" && check_csrf_token()) { $id_sale_za_brisanje = intval($_POST['id_sale_za_brisanje']); $q1 = myquery("select naziv from raspored_sala where id={$id_sale_za_brisanje}"); $naziv = mysql_result($q1, 0, 0); $q2 = myquery("delete from raspored_sala where id={$id_sale_za_brisanje}"); $uspjesno_obrisana_sala = 1; zamgerlog("obrisana sala {$naziv}", 4); zamgerlog2("obrisana sala", $id_sale_za_brisanje); } if (isset($_REQUEST['sala_za_edit'])) { ?> <div id="prikaz_za_editovanje_sale"> <?php $id_sale_za_edit = $_REQUEST['sala_za_edit']; $q0 = myquery("select naziv,tip,kapacitet from raspored_sala where id={$id_sale_za_edit}"); $ime_sale = mysql_result($q0, 0, 0); $tip_sale = mysql_result($q0, 0, 1); $kapacitet = mysql_result($q0, 0, 2); if (isset($uspjesno_editovana_sala) && $uspjesno_editovana_sala == 1) { nicemessage("Sala je uspješno izmijenjena."); } print "<p><a href=\"?sta=studentska/raspored1&edit_sala=1\">vrati se nazad na unos sala</a></p>"; print "<h4>Editovanje sale {$ime_sale}:</h4>"; print genform("POST", "forma_za_editovanje_sale"); ?> <input type="hidden" name="akcija" value="editovanje_sale"> <input type="hidden" name="id_sale_za_edit" value="<?php print "{$id_sale_za_edit}"; ?> "> <table cellpadding="3"> <tr> <td align="left" width="100">Ime sale:</td> <td> <input type="text" name="edit_ime_sale" maxlength="10" size="11" value=" <?php if ($_POST['edit_ime_sale']) { print "{$_POST['edit_ime_sale']}"; } else { print "{$ime_sale}"; } ?> "> </td> <?php if ($greska_prazno_ime_sale == 1) { print "<td><p class=\"crveno\">niste unijeli ime sale</p></td>"; } ?> <?php if ($greska_postoji_sala == 1) { print "<td><p class=\"crveno\">postoji sala sa tim imenom</p></td>"; } ?> </tr> <tr> <td align="left" width="100">Tip sale:</td> <td> <select name="edit_tip_sale"> <option value="amfiteatar">amfiteatar</option> <option value="laboratorija" <?php if ($_POST['edit_tip_sale'] == "laboratorija") { print "selected=\"selected\""; } else { if ($tip_sale == "laboratorija") { print "selected=\"selected\""; } } ?> >laboratorija </option> <option value="kabinet" <?php if ($_POST['edit_tip_sale'] == "kabinet") { print "selected=\"selected\""; } else { if ($tip_sale == "kabinet") { print "selected=\"selected\""; } } ?> >kabinet </option> </select> </td> </tr> <tr> <td align="left" width="100">Kapacitet:</td> <td> <input type="text" name="edit_kapacitet" maxlength="4" size="11" value=" <?php if ($_POST['edit_kapacitet']) { print "{$_POST['edit_kapacitet']}"; } else { print "{$kapacitet}"; } ?> "> </td> <?php if ($greska_prazan_kapacitet == 1) { print "<td><p class=\"crveno\">niste unijeli kapacitet</p></td>"; } ?> <?php if ($greska_kapacitet_nije_broj == 1) { print "<td><p class=\"crveno\">kapacitet treba biti broj</p></td>"; } ?> </tr> <tr> <td></td> <td align="right"><input type="submit" value=" Potvrdi promjene "></td> </tr> </table> </form> </div> <?php } else { ?> <div id="normalni_prikaz"> <?php print "<p><a href=\"?sta=studentska/raspored1\">vrati se na početnu</a></p>"; if (isset($uspjesno_unesena_sala) && $uspjesno_unesena_sala == 1) { nicemessage("Sala {$ime_sale} je uspješno dodana."); } if ($uspjesno_obrisana_sala == 1) { nicemessage("Sala je uspješno obrisana."); } print "<h4>Dodavanje nove sale:</h4>"; print genform("POST", "forma_za_unos_sale"); ?> <input type="hidden" name="akcija" value="unos_nove_sale"> <table cellpadding="3"> <tr> <td align="left" width="100">Ime sale:</td> <td> <input type="text" name="ime_sale" maxlength="10" size="11" <?php if ($greska == 1 && isset($_POST['ime_sale'])) { print "value=\"{$_POST['ime_sale']}\""; } ?> ></td> <?php if ($greska_prazno_ime_sale == 1) { print "<td><p class=\"crveno\">niste unijeli ime sale</p></td>"; } ?> <?php if ($greska_postoji_sala == 1) { print "<td><p class=\"crveno\">postoji sala sa tim imenom</p></td>"; } ?> </tr> <tr> <td align="left" width="100">Tip sale:</td> <td> <select name="tip_sale"> <option value="amfiteatar">amfiteatar</option> <option value="laboratorija" <?php if ($greska == 1 && $_POST['tip_sale'] == "laboratorija") { print "selected=\"selected\""; } ?> >laboratorija </option> <option value="kabinet" <?php if ($greska == 1 && $_POST['tip_sale'] == "kabinet") { print "selected=\"selected\""; } ?> >kabinet </option> </select> </td> </tr> <tr> <td align="left" width="100">Kapacitet:</td> <td><input type="text" name="kapacitet" maxlength="4" size="11" <?php if ($greska == 1 && isset($_POST['kapacitet'])) { print "value=\"{$_POST['kapacitet']}\""; } ?> ></td> <?php if ($greska_prazan_kapacitet == 1) { print "<td><p class=\"crveno\">niste unijeli kapacitet</p></td>"; } ?> <?php if ($greska_kapacitet_nije_broj == 1) { print "<td><p class=\"crveno\">kapacitet treba biti broj</p></td>"; } ?> </tr> <tr> <td></td> <td align="right"><input type="submit" value=" Dodaj "></td> </tr> </table> </form> <hr> <h4>Masovni unos sala:</h4> <?php if (count($greska_u_redu) > 0) { print "<p class=\"crveno\">GREŠKA: Nema potreban broj parametara u redu {$greska_u_redu['0']}"; if (count($greska_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_u_redu); $i++) { if ($i == count($greska_u_redu) - 1) { print " i {$greska_u_redu[$i]}.</p>"; } else { print ", {$greska_u_redu[$i]}"; } } } } if (count($greska_prazni_parametri_u_redu) > 0) { print "<p class=\"crveno\">GREŠKA: Postoje prazni parametri u redu {$greska_prazni_parametri_u_redu['0']}"; if (count($greska_prazni_parametri_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_prazni_parametri_u_redu); $i++) { if ($i == count($greska_prazni_parametri_u_redu) - 1) { print " i {$greska_prazni_parametri_u_redu[$i]}.</p>"; } else { print ", {$greska_prazni_parametri_u_redu[$i]}"; } } } } if (count($greska_nevalja_tip_sale_u_redu) > 0) { print "<p class=\"crveno\">GREŠKA: Tip sale treba biti amf,lab ili kab (red {$greska_nevalja_tip_sale_u_redu['0']}"; if (count($greska_nevalja_tip_sale_u_redu) == 1) { print ").</p>"; } else { for ($i = 1; $i < count($greska_nevalja_tip_sale_u_redu); $i++) { if ($i == count($greska_nevalja_tip_sale_u_redu) - 1) { print " i {$greska_nevalja_tip_sale_u_redu[$i]} ).</p>"; } else { print ", {$greska_nevalja_tip_sale_u_redu[$i]}"; } } } } if (count($greska_nevalja_kapacitet_u_redu) > 0) { print "<p class=\"crveno\">GREŠKA: Kapacitet treba biti broj (red {$greska_nevalja_kapacitet_u_redu['0']}"; if (count($greska_nevalja_kapacitet_u_redu) == 1) { print ").</p>"; } else { for ($i = 1; $i < count($greska_nevalja_kapacitet_u_redu); $i++) { if ($i == count($greska_nevalja_kapacitet_u_redu) - 1) { print " i {$greska_nevalja_kapacitet_u_redu[$i]} ).</p>"; } else { print ", {$greska_nevalja_kapacitet_u_redu[$i]}"; } } } } if (count($greska_postoji_sala_u_redu) > 0) { print "<p class=\"crveno\">GREŠKA: Postoji sala (red {$greska_postoji_sala_u_redu['0']}"; if (count($greska_postoji_sala_u_redu) == 1) { print ").</p>"; } else { for ($i = 1; $i < count($greska_postoji_sala_u_redu); $i++) { if ($i == count($greska_postoji_sala_u_redu) - 1) { print " i {$greska_postoji_sala_u_redu[$i]}).</p>"; } else { print ", {$greska_postoji_sala_u_redu[$i]}"; } } } } if ($greska_masovnog_unosa == 1 && $greska_postoje_duple_sale == 1) { print "<p class=\"crveno\">GREŠKA: Unijeli ste sale sa istim imenom!</p>"; } if ($uspjesan_masovni_unos_sala == 1 && count($unesene_sale) > 0) { print "<p class=\"crveno\">Uspješno unešena sala {$unesene_sale['0']}"; if (count($unesene_sale) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($unesene_sale); $i++) { if ($i == count($unesene_sale) - 1) { print " i {$unesene_sale[$i]}.</p>"; } else { print ", {$unesene_sale[$i]}"; } } } } if ($greska_prazan_prostor_za_mas_unos_sala == 1) { print "<p class=\"crveno\">GREŠKA: Niste unijeli nikakve podatke u prostor za masovni unos.</p>"; } ?> <a href="#" onclick="daj_uputstvo()"><img id="slika_za_mas_unos_sala" src = "images/plus.png" border="0" align="left" />Uputstvo za masovni unos</a> <div id="uputstvo_za_mas_unos_sala" style="display:none"> <p>Unesite ime sale, tip sale (amf,lab ili kab) i kapacitet odvojene zarezom</p> <p>Ukoliko unosite podatke iz Excel-a odaberite opciju unos iz excela(odvajanje sa [tab]-om)</p> <p>Svaku novu salu dodajte u novom redu</p> <p>primjer:</p> <p>s01,lab,30</p> <p>s02,amf,60</p> <p>s03,kab,40</p> </div> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="masovni_unos_sala"> <textarea name="mas_unos_sala" rows="10" cols="40"> <?php if (isset($_POST['mas_unos_sala'])) { print trim($_POST['mas_unos_sala']); } ?> </textarea> <br/> <p>Tip unosa: <select name="separator"> <option value="1">standardan unos (odvajanje zarezom)</option> <option value="2">unos iz excela(odvajanje sa [tab]-om)</option> </select> </p> <input type="submit" value=" Dodaj "></form> <br></br> </div> <?php } // završava se div koji se prikazuje kada se ne radi o editovanju sale ?> <script language="JavaScript"> function brisanje_sale(id_sale) { var a = confirm("Obrisati salu! Da li ste sigurni?"); if (a) { document.getElementById('id_sale_za_brisanje').value=id_sale; document.brisanjesale.submit(); } } </script> <?php echo genform("POST", "brisanjesale"); ?> <input type="hidden" name="akcija" value="obrisi_salu"> <input type="hidden" name="id_sale_za_brisanje" id="id_sale_za_brisanje" value=""></form> <h4>Postojeće sale:</h4> <table class="sale" border="1" cellspacing="0"> <?php $q1 = myquery("select id,naziv,tip,kapacitet from raspored_sala order by id"); if (mysql_num_rows($q1) < 1) { print "<p>Nema kreiranih sala</p>"; } else { ?> <th>Ime sale</th> <th>Tip sale</th> <th>Kapacitet</th> <th colspan="2">Akcije</th> <?php for ($i = 0; $i < mysql_num_rows($q1); $i++) { $id = mysql_result($q1, $i, 0); $ime_sale = mysql_result($q1, $i, 1); $tip_sale = mysql_result($q1, $i, 2); $kapacitet = mysql_result($q1, $i, 3); print "<tr>"; print "<td>{$ime_sale}</td>"; print "<td>{$tip_sale}</td>"; print "<td>{$kapacitet}</td>"; print "<td width=\"80\"><a href=\"?sta=studentska/raspored1&edit_sala=1&sala_za_edit={$id}\"> izmijeni </a></td>"; print "<td width=\"80\"><a href=\"javascript:onclick=brisanje_sale('{$id}')\"> obriši </a></td>"; print "</tr>"; } } ?> </table> <?php } else { if ($_POST['akcija'] == 'unos_novog_rasporeda' && check_csrf_token()) { $akademska_godina = intval($_POST['akademska_godina']); $studij = intval($_POST['studij']); $semestar = intval($_POST['semestar']); $q0 = myquery("select akademska_godina,studij,semestar from raspored"); $greska_postoji_raspored = 0; for ($i = 0; $i < mysql_num_rows($q0); $i++) { if (mysql_result($q0, $i, 0) == $akademska_godina && mysql_result($q0, $i, 1) == $studij && mysql_result($q0, $i, 2) == $semestar) { $greska_postoji_raspored = 1; } } if ($greska_postoji_raspored == 0) { $q0 = myquery("insert into raspored set id='NULL', akademska_godina={$akademska_godina}, studij={$studij}, semestar={$semestar}"); $uspjesno_unesen_raspored = 1; zamgerlog("unesen novi raspored", 2); zamgerlog2("unesen novi raspored", $akademska_godina, $studij, $semestar); } } // Obrisi raspored if ($_POST['akcija'] == "obrisi_raspored" && check_csrf_token()) { $id_rasporeda_za_brisanje = intval($_POST['id_rasporeda_za_brisanje']); $q1 = myquery("select studij,akademska_godina,semestar from raspored where id={$id_rasporeda_za_brisanje}"); $studij = mysql_result($q1, 0, 0); $akademska_godina = mysql_result($q1, 0, 1); $semestar = mysql_result($q1, 0, 2); $q2 = myquery("select naziv from studij where id={$studij}"); $naziv_studija = mysql_result($q2, 0, 0); $q3 = myquery("select naziv from akademska_godina where id={$akademska_godina}"); $naziv_akademske_godine = mysql_result($q3, 0, 0); $q3 = myquery("delete from raspored where id={$id_rasporeda_za_brisanje}"); $q4 = myquery("delete from raspored_stavka where raspored={$id_rasporeda_za_brisanje}"); $uspjesno_obrisan_raspored = 1; zamgerlog("obrisan raspored za akademsku {$naziv_akademske_godine} godinu, studij {$naziv_studija}, semestar {$semestar}", 4); // nivo 4: audit zamgerlog2("obrisan raspored", $id_rasporeda_za_brisanje); } //kopiranje rasporeda iz jedne akademske godine u drugu if ($_POST['akcija'] == "kopiraj_raspored" && check_csrf_token()) { $izvor = intval($_POST['izvor']); $odrediste = intval($_POST['odrediste']); $greska_kopiranja_rasporeda = false; if ($izvor == $odrediste) { $greska_kopiranja_rasporeda = true; niceerror("Izvor i destinacija ne mogu biti isti!"); } if ($greska_kopiranja_rasporeda == false) { $q0 = myquery("select naziv from akademska_godina where id={$odrediste}"); $naziv_akademske_godine = mysql_result($q0, 0, 0); $q1 = myquery("delete from raspored where akademska_godina={$odrediste}"); $q2 = myquery("select id from raspored where akademska_godina={$odrediste}"); for ($i = 0; $i < mysql_num_rows($q2); $i++) { $id_odr = mysql_result($q2, $i, 0); $q3 = myquery("delete from raspored_stavka rs where raspored={$id_odr}"); } zamgerlog("obrisani svi rasporedi u akademskoj {$naziv_akademske_godine} godini", 4); zamgerlog2("obrisani svi rasporedi u akademskoj godini", $odrediste); $q4 = myquery("select studij,semestar,id from raspored where akademska_godina={$izvor}"); $broj_redova = mysql_num_rows($q4); for ($i = 0; $i < $broj_redova; $i++) { $studij = mysql_result($q4, $i, 0); $semestar = mysql_result($q4, $i, 1); $id_rasp_izvora = mysql_result($q4, $i, 2); $q5 = myquery("insert into raspored set id='NULL', akademska_godina={$odrediste}, studij={$studij}, semestar={$semestar}"); $q6 = myquery("select rs.dan_u_sedmici,rs.predmet,rs.vrijeme_pocetak,rs.vrijeme_kraj,rs.sala,rs.tip,rs.labgrupa,rs.dupla,rs.id\r\n\t\t\t\tfrom raspored_stavka rs,raspored r where rs.raspored=r.id and r.id={$id_rasp_izvora} and rs.dupla=0 and (rs.isjeckana=0 or rs.isjeckana=2) and rs.labgrupa != -1 "); $q7 = myquery("select max(id) from raspored"); $id_rasp_odredista = mysql_result($q7, 0, 0); $q8 = myquery("select naziv from akademska_godina where id={$izvor}"); $q9 = myquery("select naziv from akademska_godina where id={$odrediste}"); $naziv_izvora = mysql_result($q8, 0, 0); $naziv_odredista = mysql_result($q9, 0, 0); for ($j = 0; $j < mysql_num_rows($q6); $j++) { $dan = mysql_result($q6, $j, 0); $predmet = mysql_result($q6, $j, 1); $pocetak = mysql_result($q6, $j, 2); $kraj = mysql_result($q6, $j, 3); $sala = mysql_result($q6, $j, 4); $tip = mysql_result($q6, $j, 5); $labgrupa = mysql_result($q6, $j, 6); if ($labgrupa != 0) { $q71 = myquery("select naziv,virtualna from labgrupa where akademska_godina={$izvor} and predmet={$predmet} and id={$labgrupa}"); $naziv_grupe = mysql_result($q71, 0, 0); $virtualna = mysql_result($q71, 0, 1); $novi_naziv = $naziv_grupe . '_' . $izvor; $q72 = myquery("select naziv from labgrupa where predmet={$predmet} and akademska_godina={$odrediste}"); $postoji_labgrupa = false; for ($k = 0; $k < mysql_num_rows($q72); $k++) { $lab_naziv = mysql_result($q72, $k, 0); if ($lab_naziv == $novi_naziv) { $postoji_labgrupa = true; } } if ($postoji_labgrupa == false) { $q73 = myquery("insert into labgrupa set id='NULL',naziv='{$novi_naziv}',predmet={$predmet},akademska_godina={$odrediste},virtualna={$virtualna}"); zamgerlog("uspjesno unesena labgrupa", 2); zamgerlog2("kreirana labgrupa", mysql_insert_id(), $predmet, $odrediste, $novi_naziv); $q74 = myquery("select max(id) from labgrupa"); } else { $q74 = myquery("select id from labgrupa where naziv='{$novi_naziv}'"); } } $labgrupa = mysql_result($q74, 0, 0); $dupla = mysql_result($q6, $j, 7); $id_stavke = mysql_result($q6, $j, 8); $q0 = myquery("insert into raspored_stavka set id='NULL', raspored={$id_rasp_odredista}, dan_u_sedmici={$dan}, predmet={$predmet},\r\n\t\t\t\t\t\t\tvrijeme_pocetak={$pocetak},vrijeme_kraj={$kraj},sala={$sala},tip='{$tip}',labgrupa={$labgrupa},dupla={$dupla}"); $q1 = myquery("select max(id) from raspored_stavka"); $id_nove_stavke = mysql_result($q1, 0, 0); $q2 = myquery("select r.studij,r.semestar from raspored_stavka rs,raspored r where rs.raspored=r.id and rs.dupla={$id_stavke}"); for ($k = 0; $k < mysql_num_rows($q2); $k++) { $studij_k = mysql_result($q2, $k, 0); $semestar_k = mysql_result($q2, $k, 1); $q3 = myquery("select id from raspored where semestar={$semestar_k} and studij={$studij_k} and akademska_godina={$odrediste}"); $rasp = mysql_result($q3, 0, 0); $q4 = myquery("insert into raspored_stavka set id='NULL', raspored={$rasp}, dan_u_sedmici={$dan}, predmet={$predmet},\r\n\t\t\t\t\t\t\t\tvrijeme_pocetak={$pocetak},vrijeme_kraj={$kraj},sala={$sala},tip='{$tip}',labgrupa={$labgrupa},dupla={$id_nove_stavke}"); } } } zamgerlog("uspješno kopirani svi rasporedi iz {$naziv_izvora} u {$naziv_odredista} akademsku godinu.", 2); zamgerlog2("uspješno kopirani svi rasporedi", $izvor, $odrediste); nicemessage("Uspješno kopirani svi rasporedi iz {$naziv_izvora} u {$naziv_odredista} akademsku godinu."); } } // ako se klikne na link izmijeni raspored ispunjen je sljedeći uslov i prikazuje se taj html kod if (isset($_REQUEST['raspored_za_edit'])) { $raspored_za_edit = $_REQUEST['raspored_za_edit']; $q1 = myquery("select studij,akademska_godina,semestar from raspored where id={$raspored_za_edit}"); $studij = mysql_result($q1, 0, 0); $akademska_godina = mysql_result($q1, 0, 1); $semestar = mysql_result($q1, 0, 2); $q2 = myquery("select naziv from studij where id={$studij}"); $naziv_studija = mysql_result($q2, 0, 0); $q3 = myquery("select naziv from akademska_godina where id={$akademska_godina}"); $naziv_akademske_godine = mysql_result($q3, 0, 0); // ukoliko se prihvati forma za unos novog časa ispunjen je uslov ispod if ($_POST['akcija'] == 'unos_novog_casa' && check_csrf_token()) { $greska_u_dodavanju_casa = 0; $cas_sa_konfliktima = intval($_POST['cas_sa_konfliktima']); $dan = intval($_POST['dan']); $tip = my_escape($_POST['tip']); $predmet = intval($_POST['predmet']); $sala = intval($_POST['sala']); $vrijeme_pocetak_sati = intval($_POST['pocetakSat']); $vrijeme_pocetak_minute = intval($_POST['pocetakMin']); $vrijeme_kraj_sati = intval($_POST['krajSat']); $vrijeme_kraj_minute = intval($_POST['krajMin']); $vrijeme_pocetak = $vrijeme_pocetak_sati * 4 + $vrijeme_pocetak_minute; $vrijeme_kraj = $vrijeme_kraj_sati * 4 + $vrijeme_kraj_minute; $labgrupa = intval($_POST['labgrupa']); if ($vrijeme_pocetak_sati != -1 && $vrijeme_pocetak_minute != 0 && $vrijeme_kraj_sati != -1 && $vrijeme_kraj_minute != 0) { if ($vrijeme_pocetak >= $vrijeme_kraj) { $greska_u_dodavanju_casa = 1; $greska_neispravan_interval = 1; } } if ($dan == 0 || $tip == '0' || $predmet == 0 || $sala == 0 || $vrijeme_pocetak_sati == -1 || $vrijeme_pocetak_minute == 0 || $vrijeme_kraj_sati == -1 || $vrijeme_kraj_minute == 0 || $labgrupa == 0 && $tip != 'P') { $greska_u_dodavanju_casa = 1; $greska_prazni_parametri_u_casu = 1; } $q0 = myquery("select sala,vrijeme_pocetak,vrijeme_kraj,predmet,tip,labgrupa from raspored_stavka where dan_u_sedmici={$dan} and raspored={$raspored_za_edit} and (isjeckana=0 or isjeckana=2) and labgrupa!= -1"); if ($vrijeme_kraj > 53) { $greska_u_dodavanju_casa = 1; $greska_nevalja_termin = 1; } if ($predmet != 0) { $q1 = myquery("select obavezan from ponudakursa where akademska_godina={$akademska_godina} and semestar={$semestar} and predmet={$predmet}"); $obavezan_predmet = mysql_result($q1, 0, 0); } for ($i = 0; $i < mysql_num_rows($q0); $i++) { $sala_i = mysql_result($q0, $i, 0); $vrijeme_pocetak_i = mysql_result($q0, $i, 1); $vrijeme_kraj_i = mysql_result($q0, $i, 2); $predmet_i = mysql_result($q0, $i, 3); $tip_i = mysql_result($q0, $i, 4); $labgrupa_i = mysql_result($q0, $i, 5); if ($predmet != 0) { $q1 = myquery("select obavezan from ponudakursa where akademska_godina={$akademska_godina} and semestar={$semestar} and predmet={$predmet_i}"); $obavezan_predmet_i = mysql_result($q1, 0, 0); } //ukoliko postoji preklapanje termina u rasporedu koji se trenutno edituje tačan je uslov ispod if ($vrijeme_pocetak_i >= $vrijeme_pocetak && $vrijeme_pocetak_i < $vrijeme_kraj || $vrijeme_kraj_i > $vrijeme_pocetak && $vrijeme_kraj_i <= $vrijeme_kraj) { if ($obavezan_predmet_i == 1 && $tip_i == 'P') { $greska_u_dodavanju_casa = 1; $greska_preklapanje_sa_obaveznim_predmetom = 1; } if ($obavezan_predmet == 1 && $tip == "P") { $greska_u_dodavanju_casa = 1; $greska_preklapanje_obaveznog_predmeta = 1; } if ($predmet == $predmet_i && $labgrupa == $labgrupa_i) { $greska_u_dodavanju_casa = 1; $greska_isti_predmet_ista_grupa = 1; } } } $semestar_je_neparan = $semestar % 2; $q1 = myquery("select rs.sala,rs.vrijeme_pocetak,rs.vrijeme_kraj,rs.predmet,rs.tip from raspored_stavka rs,raspored r where rs.dan_u_sedmici={$dan} \r\n\t\t\tand rs.raspored=r.id and r.akademska_godina={$akademska_godina} and r.semestar mod 2 = {$semestar_je_neparan} and rs.dupla=0 and (rs.isjeckana=0 or rs.isjeckana=2) and rs.labgrupa != -1 "); for ($i = 0; $i < mysql_num_rows($q1); $i++) { $sala_i = mysql_result($q1, $i, 0); $vrijeme_pocetak_i = mysql_result($q1, $i, 1); $vrijeme_kraj_i = mysql_result($q1, $i, 2); $predmet_i = mysql_result($q1, $i, 3); //ukoliko postoji preklapanje termina (sada gledamo sve rasporede) tačan je uslov ispod if ($vrijeme_pocetak_i >= $vrijeme_pocetak && $vrijeme_pocetak_i < $vrijeme_kraj || $vrijeme_kraj_i > $vrijeme_pocetak && $vrijeme_kraj_i <= $vrijeme_kraj) { if ($sala == $sala_i) { $greska_duplikat_sale = 1; $greska_u_dodavanju_casa = 1; break; } } } if ($greska_u_dodavanju_casa == 0) { $konflikt = array(); $konflikt['student'] = array(); $konflikt['predmet'] = array(); $konflikt['pocetak'] = array(); $konflikt['kraj'] = array(); $q1 = myquery("select rs.sala,rs.vrijeme_pocetak,rs.vrijeme_kraj,rs.predmet,rs.tip,rs.labgrupa,r.semestar from raspored_stavka rs,\r\n\t\t\t\traspored r where rs.dan_u_sedmici={$dan} and rs.raspored=r.id and r.akademska_godina={$akademska_godina} and r.semestar mod 2 = {$semestar_je_neparan} \r\n\t\t\t\tand rs.dupla=0 and (rs.isjeckana=0 or rs.isjeckana=2) and rs.labgrupa != -1 "); for ($i = 0; $i < mysql_num_rows($q1); $i++) { $sala_i = mysql_result($q1, $i, 0); $vrijeme_pocetak_i = mysql_result($q1, $i, 1); $vrijeme_kraj_i = mysql_result($q1, $i, 2); $predmet_i = mysql_result($q1, $i, 3); $tip_i = mysql_result($q1, $i, 4); $labgrupa_i = mysql_result($q1, $i, 5); $semestar_i = mysql_result($q1, $i, 6); if ($tip_i == "P") { $labgrupa_i = 0; } //ukoliko postoji preklapanje termina (sada gledamo sve rasporede) tačan je uslov ispod if ($vrijeme_pocetak_i >= $vrijeme_pocetak && $vrijeme_pocetak_i < $vrijeme_kraj || $vrijeme_kraj_i > $vrijeme_pocetak && $vrijeme_kraj_i <= $vrijeme_kraj) { // provjera preklapanja studenata u terminu if ($tip == "P") { $q_prvi = myquery("select sp.student from student_predmet sp,ponudakursa pk where sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$akademska_godina} and pk.semestar={$semestar}"); } else { $q_prvi = myquery("select student from student_labgrupa where labgrupa={$labgrupa}"); } if ($labgrupa_i == 0) { $q_drugi = myquery("select sp.student from student_predmet sp,ponudakursa pk where sp.predmet=pk.id and pk.predmet={$predmet_i} and pk.akademska_godina={$akademska_godina} and pk.semestar={$semestar_i}"); } else { $q_drugi = myquery("select student from student_labgrupa where labgrupa={$labgrupa_i}"); } for ($p = 0; $p < mysql_num_rows($q_prvi); $p++) { $student_p = mysql_result($q_prvi, $p, 0); for ($d = 0; $d < mysql_num_rows($q_drugi); $d++) { $student_d = mysql_result($q_drugi, $d, 0); if ($student_p == $student_d) { // pronadjen je student u konfliktu i upisujemo ga u niz konflikata $konflikt['student'][] = $student_p; $konflikt['predmet'][] = $predmet_i; $konflikt['pocetak'][] = $vrijeme_pocetak_i; $konflikt['kraj'][] = $vrijeme_kraj_i; } } } } } } if ($greska_u_dodavanju_casa == 0 && count($konflikt['student']) == 0 || count($konflikt['student']) > 0 && $cas_sa_konfliktima == 1) { // vrsi se pretvaranje vremena u jedan broj u intervalu od 1-53 radi lakšeg rada sa prikazom rasporeda $vrijeme_pocetak = $vrijeme_pocetak_sati * 4 + $vrijeme_pocetak_minute; $vrijeme_kraj = $vrijeme_kraj_sati * 4 + $vrijeme_kraj_minute; if ($tip == "P") { $labgrupa = 0; } $q0 = myquery("insert into raspored_stavka set id='NULL', raspored={$raspored_za_edit}, dan_u_sedmici={$dan}, predmet={$predmet},\r\n\t\t\t\t\t\tvrijeme_pocetak={$vrijeme_pocetak},vrijeme_kraj={$vrijeme_kraj},sala={$sala},tip='{$tip}',labgrupa={$labgrupa}"); $cas_uspjesno_dodan = 1; zamgerlog("unesen novi cas za akademsku {$naziv_akademske_godine}, studij {$naziv_studija}, semestar {$semestar}", 2); zamgerlog2("dodana stavka u raspored", mysql_insert_id(), $raspored_za_edit); if (count($konflikt['student']) > 0 && $cas_sa_konfliktima == 1) { $cas_dodan_sa_konfliktima = 1; } $q00 = myquery("select max(id) from raspored_stavka"); $id_unesene_stavke = mysql_result($q00, 0, 0); $q1 = myquery("select studij,semestar from ponudakursa where predmet={$predmet} and akademska_godina={$akademska_godina} and semestar mod 2 = {$semestar_je_neparan}"); for ($i = 0; $i < mysql_num_rows($q1); $i++) { $studij_i = mysql_result($q1, $i, 0); $semestar_i = mysql_result($q1, $i, 1); $postoji_raspored = 0; if ($semestar_i == $semestar && $studij_i == $studij) { $postoji_raspored = 1; } else { $q01 = myquery("select semestar,studij,id from raspored where akademska_godina={$akademska_godina} and semestar mod 2 = {$semestar_je_neparan}"); for ($j = 0; $j < mysql_num_rows($q01); $j++) { $studij_j = mysql_result($q01, $j, 1); $semestar_j = mysql_result($q01, $j, 0); $raspored_j = mysql_result($q01, $j, 2); if ($semestar_i == $semestar_j && $studij_i == $studij_j) { $postoji_raspored = 1; break; } } } if ($postoji_raspored == 0) { $q02 = myquery("insert into raspored set id='NULL', akademska_godina={$akademska_godina}, studij={$studij_i}, semestar={$semestar_i}"); zamgerlog("Kreiran novi raspored za akademsku {$naziv_akademske_godine} godinu", 2); } $q2 = myquery("select id from raspored where akademska_godina={$akademska_godina} and semestar={$semestar_i} and studij={$studij_i}"); if (mysql_num_rows($q2) > 0) { $raspored_i = mysql_result($q2, 0, 0); if ($raspored_i != $raspored_za_edit) { $q3 = myquery("insert into raspored_stavka set id='NULL', raspored={$raspored_i}, dan_u_sedmici={$dan}, predmet={$predmet},\r\n\t\t\t\t\t\t\t\t\t\tvrijeme_pocetak={$vrijeme_pocetak},vrijeme_kraj={$vrijeme_kraj},sala={$sala},tip='{$tip}',labgrupa={$labgrupa},dupla={$id_unesene_stavke}"); zamgerlog("unesen novi cas za akademsku {$naziv_akademske_godine} godinu", 2); zamgerlog2("dodana stavka u raspored", mysql_insert_id(), $raspored_i); } } } } } $greska_masovnog_unosa_casova = 0; // uslov ispod je ispunjen ako je prihvaćena forma za masovni unos sala if ($_POST['akcija'] == 'masovni_unos_casova' && check_csrf_token()) { $redovi = explode("\n", $_POST['mas_unos_casova']); if (trim($_POST['mas_unos_casova']) == '') { $greska_masovnog_unosa_casova = 1; $greska_prazan_prostor_za_mas_unos_casova = 1; } $greska_u_redu = array(); $greska_prazni_parametri_u_redu = array(); $greska_nevalja_tip_casa_u_redu = array(); $greska_nevalja_dan_u_redu = array(); $greska_postoji_sala_u_redu = array(); $greska_ne_postoji_predmet_u_redu = array(); $greska_ne_postoji_labgrupa_u_redu = array(); $greska_pogresno_vrijeme_u_redu = array(); $greska_nevalja_interval_u_redu = array(); $i = 0; foreach ($redovi as $red) { $i++; $red = trim($red); if (strlen($red) < 1) { continue; } // prazan red if ($_POST['separator'] == 1) { list($dan, $predmet, $pocetak, $kraj, $sala, $tip, $labgrupa) = explode(",", $red); $dan = trim($dan); $predmet = trim($predmet); $pocetak = trim($pocetak); $kraj = trim($kraj); $sala = trim($sala); $tip = trim($tip); $labgrupa = trim($labgrupa); $niz = explode(",", $red); } elseif ($_POST['separator'] == 2) { list($dan, $predmet, $pocetak, $kraj, $sala, $tip, $labgrupa) = explode("\t", $red); $dan = trim($dan); $predmet = trim($predmet); $pocetak = trim($pocetak); $kraj = trim($kraj); $sala = trim($sala); $tip = trim($tip); $labgrupa = trim($labgrupa); $niz = explode("\t", $red); } list($pocS, $pocM) = explode(":", $pocetak); list($krajS, $krajM) = explode(":", $kraj); if (count($niz) != 7) { if (count($niz) == 6) { if ($tip != 'P') { $greska_masovnog_unosa_casova = 1; $greska_u_redu[] = $i; } } else { $greska_masovnog_unosa_casova = 1; $greska_u_redu[] = $i; } } else { if ($dan == '' || $predmet == '' || $pocetak == '' || $kraj == '' || $sala == '' || $tip == '' || $labgrupa == '') { $greska_masovnog_unosa_casova = 1; $greska_prazni_parametri_u_redu[] = $i; } else { if (strtoupper($tip) != 'P' && strtoupper($tip) != 'T' && strtoupper($tip) != 'L') { $greska_masovnog_unosa_casova = 1; $greska_nevalja_tip_casa_u_redu[] = $i; } if ($dan != 'pon' && $dan != 'uto' && $dan != 'sri' && $dan != 'cet' && $dan != 'pet' && $dan != 'sub') { $greska_masovnog_unosa_casova = 1; $greska_nevalja_dan_u_redu[] = $i; } $raspored_za_edit = $_REQUEST['raspored_za_edit']; $q1 = myquery("select studij,akademska_godina,semestar from raspored where id={$raspored_za_edit}"); $studij = mysql_result($q1, 0, 0); $akademska_godina = mysql_result($q1, 0, 1); $semestar = mysql_result($q1, 0, 2); $q2 = myquery("select p.kratki_naziv from ponudakursa pk,predmet p where p.id=pk.predmet and pk.akademska_godina={$akademska_godina}\r\n\t\t\t\t\t\tand pk.semestar={$semestar} and pk.studij={$studij}"); $postoji_predmet = false; for ($j = 0; $j < mysql_num_rows($q2); $j++) { if (mysql_result($q2, $j, 0) == strtoupper($predmet)) { $postoji_predmet = true; } } if ($postoji_predmet == false) { $greska_masovnog_unosa_casova = 1; $greska_ne_postoji_predmet_u_redu[] = $i; } else { $q0 = myquery("select id from predmet where kratki_naziv='{$predmet}'"); $predmet_id = mysql_result($q0, 0, 0); if ($tip != "P") { $q1 = myquery("select naziv from labgrupa where predmet={$predmet_id}"); $postoji_labgrupa = false; for ($j = 0; $j < mysql_num_rows($q1); $j++) { if (mysql_result($q1, $j, 0) == $labgrupa) { $postoji_labgrupa = true; } } if ($postoji_labgrupa == false) { $greska_masovnog_unosa_casova = 1; $greska_ne_postoji_labgrupa_u_redu[] = $i; } } } if (intval($pocS) < 8 || intval($pocS) > 20 || (intval($krajS) < 8 || intval($krajS) > 21)) { $greska_masovnog_unosa_casova = 1; $greska_pogresno_vrijeme_u_redu[] = $i; } elseif ($pocM != '00' && $pocM != '15' && $pocM != '30' && $pocM != '45' || $krajM != '00' && $krajM != '15' && $krajM != '30' && $krajM != '45') { $greska_masovnog_unosa_casova = 1; $greska_pogresno_vrijeme_u_redu[] = $i; } else { if ($pocM == "00") { $pocM = 1; } elseif ($pocM == "15") { $pocM = 2; } elseif ($pocM == "30") { $pocM = 3; } elseif ($pocM == "45") { $pocM = 4; } if ($krajM == "00") { $krajM = 1; } elseif ($krajM == "15") { $krajM = 2; } elseif ($krajM == "30") { $krajM = 3; } elseif ($krajM == "45") { $krajM = 4; } $pocetak_broj = (intval($pocS) - 8) * 4 + $pocM; $kraj_broj = (intval($krajS) - 8) * 4 + $krajM; if ($kraj_broj <= $pocetak_broj) { $greska_masovnog_unosa_casova = 1; $greska_nevalja_interval_u_redu[] = $i; } } $q0 = myquery("select id from raspored_sala where naziv='{$sala}'"); $sala_id = mysql_result($q0, 0, 0); $dani = array("pon", "uto", "sri", "cet", "pet", "sub"); for ($j = 0; $j < count($dani); $j++) { if (strtolower($dan) == $dani[$j]) { $dan_broj = $j + 1; break; } } $q2 = myquery("select sala,vrijeme_pocetak,vrijeme_kraj from raspored_stavka where raspored={$raspored_za_edit} and dan_u_sedmici={$dan_broj} and (isjeckana=0 or isjeckana=2)"); for ($j = 0; $j < mysql_num_rows($q2); $j++) { $sala_j = mysql_result($q2, $j, 0); $vrijeme_pocetak_j = mysql_result($q2, $j, 1); $vrijeme_kraj_j = mysql_result($q2, $j, 2); if ($vrijeme_pocetak_j >= $pocetak_broj && $vrijeme_pocetak_j < $kraj_broj || $vrijeme_kraj_j > $pocetak_broj && $vrijeme_kraj_j <= $kraj_broj) { if ($sala_id == $sala_j) { $greska_masovnog_unosa_casova = 1; $greska_postoji_sala_u_redu[] = $i; break; } } } } } } // ako nema grešaka u unosu dodajemo sale if ($greska_masovnog_unosa_casova == 0) { $i = 0; foreach ($redovi as $red) { $i++; $red = trim($red); if (strlen($red) < 1) { continue; } // prazan red if ($_POST['separator'] == 1) { list($dan, $predmet, $pocetak, $kraj, $sala, $tip, $labgrupa) = explode(",", $red); $dan = trim($dan); $predmet = trim($predmet); $pocetak = trim($pocetak); $kraj = trim($kraj); $sala = trim($sala); $tip = trim($tip); $labgrupa = trim($labgrupa); $niz = explode(",", $red); } elseif ($_POST['separator'] == 2) { list($dan, $predmet, $pocetak, $kraj, $sala, $tip, $labgrupa) = explode("\t", $red); $dan = trim($dan); $predmet = trim($predmet); $pocetak = trim($pocetak); $kraj = trim($kraj); $sala = trim($sala); $tip = trim($tip); $labgrupa = trim($labgrupa); $niz = explode("\t", $red); } list($pocS, $pocM) = explode(":", $pocetak); list($krajS, $krajM) = explode(":", $kraj); if ($pocM == "00") { $pocM = 1; } elseif ($pocM == "15") { $pocM = 2; } elseif ($pocM == "30") { $pocM = 3; } elseif ($pocM == "45") { $pocM = 4; } if ($krajM == "00") { $krajM = 1; } elseif ($krajM == "15") { $krajM = 2; } elseif ($krajM == "30") { $krajM = 3; } elseif ($krajM == "45") { $krajM = 4; } $pocetak_broj = (intval($pocS) - 8) * 4 + $pocM; $kraj_broj = (intval($krajS) - 8) * 4 + $krajM; $q0 = myquery("select id from raspored_sala where naziv='{$sala}'"); $sala_id = mysql_result($q0, 0, 0); $dani = array("pon", "uto", "sri", "cet", "pet", "sub"); for ($j = 0; $j < count($dani); $j++) { if (strtolower($dan) == $dani[$j]) { $dan_broj = $j + 1; break; } } $q0 = myquery("select id from predmet where kratki_naziv='{$predmet}'"); $predmet_id = mysql_result($q0, 0, 0); $tip = strtoupper($tip); if ($tip == "P") { $labgrupa_id = 0; } else { $q0 = myquery("select id from labgrupa where naziv='{$labgrupa}'"); $labgrupa_id = mysql_result($q0, 0, 0); } $semestar_je_neparan = $semestar % 2; $q0 = myquery("insert into raspored_stavka set id='NULL', raspored={$raspored_za_edit}, dan_u_sedmici={$dan_broj}, predmet={$predmet_id},\r\n\t\t\t\t\t\tvrijeme_pocetak={$pocetak_broj},vrijeme_kraj={$kraj_broj},sala={$sala_id},tip='{$tip}',labgrupa={$labgrupa_id}"); $q00 = myquery("select max(id) from raspored_stavka"); $id_unesene_stavke = mysql_result($q00, 0, 0); $q1 = myquery("select studij,semestar from ponudakursa where predmet={$predmet_id} and akademska_godina={$akademska_godina} and semestar mod 2 = {$semestar_je_neparan}"); for ($k = 0; $k < mysql_num_rows($q1); $k++) { $studij_i = mysql_result($q1, $k, 0); $semestar_i = mysql_result($q1, $k, 1); $postoji_raspored = 0; if ($semestar_i == $semestar && $studij_i == $studij) { $postoji_raspored = 1; } else { $q01 = myquery("select semestar,studij,id from raspored where akademska_godina={$akademska_godina} and semestar mod 2 = {$semestar_je_neparan}"); for ($j = 0; $j < mysql_num_rows($q01); $j++) { $studij_j = mysql_result($q01, $j, 1); $semestar_j = mysql_result($q01, $j, 0); $raspored_j = mysql_result($q01, $j, 2); if ($semestar_i == $semestar_j && $studij_i == $studij_j) { $postoji_raspored = 1; break; } } } if ($postoji_raspored == 0) { $q02 = myquery("insert into raspored set id='NULL', akademska_godina={$akademska_godina}, studij={$studij_i}, semestar={$semestar_i}"); } $q2 = myquery("select id from raspored where akademska_godina={$akademska_godina} and semestar={$semestar_i} and studij={$studij_i}"); if (mysql_num_rows($q2) > 0) { $raspored_i = mysql_result($q2, 0, 0); if ($raspored_i != $raspored_za_edit) { $q3 = myquery("insert into raspored_stavka set id='NULL', raspored={$raspored_i}, dan_u_sedmici={$dan_broj}, predmet={$predmet_id},\r\n\t\t\t\t\t\t\t\t\t\tvrijeme_pocetak={$pocetak_broj},vrijeme_kraj={$kraj_broj},sala={$sala_id},tip='{$tip}',labgrupa={$labgrupa_id},dupla={$id_unesene_stavke}"); } } } } $uspjesan_masovni_unos_casova = 1; zamgerlog("Izvršen masovni unos časova", 2); zamgerlog2("izvršen masovni unos časova u raspored"); } } if ($_POST['akcija'] == "obrisi_cas" && check_csrf_token()) { $id_casa_za_brisanje = intval($_POST['id_casa_za_brisanje']); $q0 = myquery("select dupla from raspored_stavka where id={$id_casa_za_brisanje}"); $dupla = mysql_result($q0, 0, 0); if ($dupla == 0) { $q1 = myquery("delete from raspored_stavka where id={$id_casa_za_brisanje}"); $q2 = myquery("delete from raspored_stavka where dupla={$id_casa_za_brisanje}"); } else { $q1 = myquery("delete from raspored_stavka where id={$dupla}"); $q2 = myquery("delete from raspored_stavka where dupla={$dupla}"); } $uspjesno_obrisan_cas = 1; zamgerlog("obrisan cas", 4); // nivo 4: audit zamgerlog2("obrisana stavka iz rasporeda", $id_casa_za_brisanje); } print "<a href=\"?sta=studentska/raspored1\">vrati se na početnu</a>"; print "<h4>Editovanje rasporeda za akademsku {$naziv_akademske_godine} godinu, studij {$naziv_studija}, {$semestar}. semestar:</h4>"; print "<hr/>"; // ukoliko nema konflikata ispunjen je uslov ispod if (!isset($_REQUEST['konflikt'])) { print "<h4>Dodavanje novog časa:</h4>"; if ($greska_prazni_parametri_u_casu == 1) { print "<p class=\"crveno\">GREŠKA: Niste unijeli neki podatak.</p>"; } if ($greska_neispravan_interval == 1) { print "<p class=\"crveno\">GREŠKA: Interval koji ste unijeli nije ispravan.</p>"; } if ($greska_duplikat_sale == 1) { print "<p class=\"crveno\">GREŠKA: Sala koju ste odabrali je zauzeta u tom terminu.</p>"; } if ($greska_preklapanje_sa_obaveznim_predmetom == 1) { print "<p class=\"crveno\">GREŠKA: Postoji preklapanje sa predavanjem obaveznog predmeta.</p>"; } if ($greska_preklapanje_obaveznog_predmeta == 1) { print "<p class=\"crveno\">GREŠKA: Predavanje obaveznog predmeta se ne može dodati jer je termin zauzet.</p>"; } if ($greska_nevalja_termin == 1) { print "<p class=\"crveno\">GREŠKA: Nastava traje maksimalno do 21 sat.</p>"; } if ($greska_isti_predmet_ista_grupa == 1) { print "<p class=\"crveno\">GREŠKA: Isti predmet i ista grupa u terminu koji se preklapa !</p>"; } if ($cas_uspjesno_dodan == 1) { nicemessage("Čas je usješno dodan."); } if ($uspjesno_obrisan_cas == 1) { nicemessage("Čas je usješno obrisan."); } $broj_konflikata = count($konflikt['student']); if ($broj_konflikata > 0 && $cas_dodan_sa_konfliktima != 1) { print "<br>"; if ($broj_konflikata == 1) { $varijabla = "konflikt"; } elseif ($broj_konflikata == 2 || $broj_konflikata == 3 || $broj_konflikata == 4) { $varijabla = "konflikta"; } else { $varijabla = "konflikata"; } print "<p class=\"crveno\">Postoji {$broj_konflikata} {$varijabla} pri preklapanju časova.</p>"; ?> <a href="#" onclick="prikazKonflikata()"><img id="slika_konflikti" src = "images/plus.png" border="0" align="left" />Prikaži konflikte</a> <div id="prikaz_konflikata" style="display:none"> <?php print "<ul>"; for ($i = 0; $i < count($konflikt['student']); $i++) { $student = $konflikt['student'][$i]; $predmet = $konflikt['predmet'][$i]; $pocetak = $konflikt['pocetak'][$i]; $kraj = $konflikt['kraj'][$i]; $vrijemePocS = floor(($pocetak - 1) / 4 + 8); $vrijemePocMin = $pocetak % 4; if ($vrijemePocMin == 1) { $vrijemePocM = "00"; } elseif ($vrijemePocMin == 2) { $vrijemePocM = "15"; } elseif ($vrijemePocMin == 3) { $vrijemePocM = "30"; } elseif ($vrijemePocMin == 0) { $vrijemePocM = "45"; } $vrijemeP = "{$vrijemePocS}:{$vrijemePocM}"; $vrijemeKrajS = floor(($kraj - 1) / 4 + 8); $vrijemeKrajMin = $kraj % 4; if ($vrijemeKrajMin == 1) { $vrijemeKrajM = "00"; } elseif ($vrijemeKrajMin == 2) { $vrijemeKrajM = "15"; } elseif ($vrijemeKrajMin == 3) { $vrijemeKrajM = "30"; } elseif ($vrijemeKrajMin == 0) { $vrijemeKrajM = "45"; } $vrijemeK = "{$vrijemeKrajS}:{$vrijemeKrajM}"; $q1 = myquery("select ime, prezime from osoba where id={$student}"); $ime = mysql_result($q1, 0, 0); $prezime = mysql_result($q1, 0, 1); $q2 = myquery("select naziv from predmet where id={$predmet}"); $naziv_predmeta = mysql_result($q2, 0, 0); print "<li><p><b>{$ime} {$prezime}</b> ima predmet <b>{$naziv_predmeta}</b> u terminu <b>{$vrijemeP}-{$vrijemeK}</b></p></li>"; } print "</ul>"; print "<hr>"; ?> </div> <p>Da li ipak želite dodati čas sa konfliktima: <input type="button" onclick="dodajCasSaKonfliktima()" value=" DA "></p> <hr></hr> <?php print "<br></br>"; } $q4 = myquery("select pk.predmet,p.kratki_naziv,pk.obavezan from ponudakursa pk, predmet p where pk.predmet=p.id and pk.studij={$studij} and pk.akademska_godina={$akademska_godina} and pk.semestar={$semestar}"); print genform("POST", "forma_za_unos_casa"); $dani = array("Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"); $tipovi_nastave = array("P", "T", "L"); ?> <input type="hidden" name="akcija" id="akcija_novi_cas" value="unos_novog_casa"> <input type="hidden" name="cas_sa_konfliktima" id="cas_sa_konfliktima" value="0"> <table cellpadding="3" name="cas"> <tr> <td>Dan:</td> <td> <select name="dan"> <option value="0">---</option> <?php for ($i = 0; $i <= 5; $i++) { $x = $i + 1; print "<option value=\"{$x}\""; if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['dan'] == $x || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['dan'] == $x || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['dan'] == $x) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } print ">{$dani[$i]}</option>"; } ?> </select> </td> </tr> <tr> <td>Tip:</td> <td> <select name="tip" id="tip" onchange="javascript:prikaziGrupe()"> <option value="0">---</option> <?php for ($i = 0; $i <= 2; $i++) { print "<option value={$tipovi_nastave[$i]}"; if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['tip'] == $tipovi_nastave[$i] || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['tip'] == $tipovi_nastave[$i] || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['tip'] == $tipovi_nastave[$i]) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } if ($tipovi_nastave[$i] == "P") { print ">Predavanje</option>"; } elseif ($tipovi_nastave[$i] == "T") { print ">Tutorijal</option>"; } elseif ($tipovi_nastave[$i] == "L") { print ">Laboratorijska vježba</option>"; } } ?> </select> </td> </tr> <tr> <td>Predmet:</td> <td> <select name="predmet" id="predmet" onchange="javascript:prikaziGrupe()"> <?php if ($_POST['akcija'] != "unos_novog_casa_predfaza" && $_POST['akcija'] != "unos_novog_casa" || $_POST['akcija'] == "unos_novog_casa" && $_POST['predmet'] == 0 || $cas_uspjesno_dodan == 1 || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['predmet'] == 0) { ?> <option value="0">---</option> <?php } for ($i = 0; $i < mysql_num_rows($q4); $i++) { $id_predmeta = mysql_result($q4, $i, 0); $kratki_naziv = mysql_result($q4, $i, 1); $obavezan = mysql_result($q4, $i, 2); print "<option value=\"{$id_predmeta}\""; if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['predmet'] == $id_predmeta || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['predmet'] == $id_predmeta || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['predmet'] == $id_predmeta) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } print ">{$kratki_naziv}"; if ($obavezan == 0) { print " (izborni)"; } print "</option>"; } ?> </select> </td> </tr> <tr> <td>Sala:</td> <td> <select name="sala"> <option value="0">---</option> <?php $q0 = myquery("select id,naziv from raspored_sala order by naziv"); for ($i = 0; $i < mysql_num_rows($q0); $i++) { $id_sale = mysql_result($q0, $i, 0); $naziv_sale = mysql_result($q0, $i, 1); print "<option value=\"{$id_sale}\""; if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['sala'] == $id_sale || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['sala'] == $id_sale || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['sala'] == $id_sale) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } print ">{$naziv_sale}</option>"; } ?> </select> </td> </tr> <tr> <td>Vrijeme početka:</td> <td> <select name="pocetakSat"> <option value="-1">---</option> <?php for ($i = 0; $i <= 12; $i++) { $j = $i + 8; print "<option value=\"{$i}\""; if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['pocetakSat'] == $i || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['pocetakSat'] == $i || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['pocetakSat'] == $i) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } print ">{$j}</option>"; } ?> </select> : <select name="pocetakMin"> <option value="0">---</option> <option value="1" <?php if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['pocetakMin'] == 1 || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['pocetakMin'] == 1 || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['pocetakMin'] == 1) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } ?> >00 </option> <option value="2" <?php if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['pocetakMin'] == 2 || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['pocetakMin'] == 2 || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['pocetakMin'] == 2) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } ?> >15 </option> <option value="3" <?php if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['pocetakMin'] == 3 || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['pocetakMin'] == 3 || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['pocetakMin'] == 3) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } ?> >30 </option> <option value="4" <?php if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['pocetakMin'] == 4 || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['pocetakMin'] == 4 || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['pocetakMin'] == 4) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } ?> >45 </option> </select> </td> </tr> <tr> <td>Vrijeme kraja:</td> <td> <select name="krajSat"> <option value="-1">---</option> <?php for ($i = 0; $i <= 13; $i++) { $j = $i + 8; print "<option value=\"{$i}\""; if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['krajSat'] == $i || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['krajSat'] == $i || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['krajSat'] == $i) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } print ">{$j}</option>"; } ?> </select> : <select name="krajMin"> <option value="0">---</option> <option value="1" <?php if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['krajMin'] == 1 || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['krajMin'] == 1 || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['krajMin'] == 1) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } ?> >00 </option> <option value="2" <?php if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['krajMin'] == 2 || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['krajMin'] == 2 || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['krajMin'] == 2) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } ?> >15 </option> <option value="3" <?php if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['krajMin'] == 3 || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['krajMin'] == 3 || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['krajMin'] == 3) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } ?> >30 </option> <option value="4" <?php if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['krajMin'] == 4 || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['krajMin'] == 4 || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['krajMin'] == 4) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } ?> >45 </option> </select> </td> </tr> <tr> <td>Grupa:</td> <td> <select name="labgrupa" id="labgrupa_za_cas" <?php if ($_POST['akcija'] != "unos_novog_casa_predfaza" && $_POST['akcija'] != "unos_novog_casa") { print " disabled=\"disabled\""; } elseif (($_POST['akcija'] == "unos_novog_casa" || $_POST['akcija'] == "unos_novog_casa_predfaza") && intval($_POST['predmet']) == 0) { print " disabled=\"disabled\""; } elseif ($_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['tip'] == 'P') { print " disabled=\"disabled\""; } elseif ($_POST['akcija'] == "unos_novog_casa" && $_POST['tip'] == 'P' && $greska_u_dodavanju_casa == 1) { print " disabled=\"disabled\""; } elseif (($_POST['akcija'] == "unos_novog_casa" || $_POST['akcija'] == "unos_novog_casa_predfaza") && $_POST['tip'] == '0') { print " disabled=\"disabled\""; } ?> > <option value="0">---</option> <?php if ($_POST['akcija'] == "unos_novog_casa_predfaza" || $_POST['akcija'] == "unos_novog_casa" && intval($_POST['predmet']) != 0) { $id_predmeta = intval($_POST['predmet']); $q0 = myquery("select id,naziv from labgrupa where predmet={$id_predmeta} and akademska_godina={$akademska_godina}"); for ($i = 0; $i < mysql_num_rows($q0); $i++) { $id_labgrupe = mysql_result($q0, $i, 0); $naziv_labgrupe = mysql_result($q0, $i, 1); print "<option value=\"{$id_labgrupe}\""; if (($_POST['akcija'] == "unos_novog_casa" && $greska_u_dodavanju_casa == 1 && $_POST['labgrupa'] == $id_labgrupe || $_POST['akcija'] == "unos_novog_casa_predfaza" && $_POST['labgrupa'] == $id_labgrupe || $_POST['akcija'] == "unos_novog_casa" && count($konflikt['student']) > 0 && $_POST['labgrupa'] == $id_labgrupe) && $cas_dodan_sa_konfliktima != 1) { print " selected=\"selected\""; } print ">{$naziv_labgrupe}</option>"; } } ?> </select> </td> </tr> <tr> <td></td> <td align="right"><input type="submit" value=" Dodaj čas"></form></td> </tr> </table> <h4>Masovni unos časova:</h4> <?php if (count($greska_u_redu) > 0 && $greska_masovnog_unosa_casova == 1) { print "<p class=\"crveno\">GREŠKA: Nema potreban broj parametara u redu {$greska_u_redu['0']}"; if (count($greska_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_u_redu); $i++) { if ($i == count($greska_u_redu) - 1) { print " i {$greska_u_redu[$i]}.</p>"; } else { print ", {$greska_u_redu[$i]}"; } } } } if (count($greska_prazni_parametri_u_redu) > 0 && $greska_masovnog_unosa_casova == 1) { print "<p class=\"crveno\">GREŠKA: Postoje prazni parametri u redu {$greska_prazni_parametri_u_redu['0']}"; if (count($greska_prazni_parametri_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_prazni_parametri_u_redu); $i++) { if ($i == count($greska_prazni_parametri_u_redu) - 1) { print " i {$greska_prazni_parametri_u_redu[$i]}.</p>"; } else { print ", {$greska_prazni_parametri_u_redu[$i]}"; } } } } if (count($greska_nevalja_tip_casa_u_redu) > 0 && $greska_masovnog_unosa_casova == 1) { print "<p class=\"crveno\">GREŠKA: Tip časa nije ispravan u redu {$greska_nevalja_tip_casa_u_redu['0']}"; if (count($greska_nevalja_tip_casa_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_nevalja_tip_casa_u_redu); $i++) { if ($i == count($greska_nevalja_tip_casa_u_redu) - 1) { print " i {$greska_nevalja_tip_casa_u_redu[$i]}.</p>"; } else { print ", {$greska_nevalja_tip_casa_u_redu[$i]}"; } } } } if (count($greska_nevalja_dan_u_redu) > 0 && $greska_masovnog_unosa_casova == 1) { print "<p class=\"crveno\">GREŠKA: Dan nije ispravan u redu {$greska_nevalja_dan_u_redu['0']}"; if (count($greska_nevalja_dan_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_nevalja_dan_u_redu); $i++) { if ($i == count($greska_nevalja_dan_u_redu) - 1) { print " i {$greska_nevalja_dan_u_redu[$i]}.</p>"; } else { print ", {$greska_nevalja_dan_u_redu[$i]}"; } } } } if (count($greska_postoji_sala_u_redu) > 0 && $greska_masovnog_unosa_casova == 1) { print "<p class=\"crveno\">GREŠKA: Sala zauzeta u datom terminu u redu {$greska_postoji_sala_u_redu['0']}"; if (count($greska_postoji_sala_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_postoji_sala_u_redu); $i++) { if ($i == count($greska_postoji_sala_u_redu) - 1) { print " i {$greska_postoji_sala_u_redu[$i]}.</p>"; } else { print ", {$greska_postoji_sala_u_redu[$i]}"; } } } } if (count($greska_ne_postoji_labgrupa_u_redu) > 0 && $greska_masovnog_unosa_casova == 1) { print "<p class=\"crveno\">GREŠKA: Ne postoji grupa u redu {$greska_ne_postoji_labgrupa_u_redu['0']}"; if (count($greska_ne_postoji_labgrupa_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_ne_postoji_labgrupa_u_redu); $i++) { if ($i == count($greska_ne_postoji_labgrupa_u_redu) - 1) { print " i {$greska_ne_postoji_labgrupa_u_redu[$i]}.</p>"; } else { print ", {$greska_ne_postoji_labgrupa_u_redu[$i]}"; } } } } if (count($greska_ne_postoji_predmet_u_redu) > 0 && $greska_masovnog_unosa_casova == 1) { print "<p class=\"crveno\">GREŠKA: Ne postoji predmet u redu {$greska_ne_postoji_predmet_u_redu['0']}"; if (count($greska_ne_postoji_predmet_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_ne_postoji_predmet_u_redu); $i++) { if ($i == count($greska_ne_postoji_predmet_u_redu) - 1) { print " i {$greska_ne_postoji_predmet_u_redu[$i]}.</p>"; } else { print ", {$greska_ne_postoji_predmet_u_redu[$i]}"; } } } } if (count($greska_pogresno_vrijeme_u_redu) > 0 && $greska_masovnog_unosa_casova == 1) { print "<p class=\"crveno\">GREŠKA: Vrijeme nije ispravno unešeno u redu {$greska_pogresno_vrijeme_u_redu['0']}"; if (count($greska_pogresno_vrijeme_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_pogresno_vrijeme_u_redu); $i++) { if ($i == count($greska_pogresno_vrijeme_u_redu) - 1) { print " i {$greska_pogresno_vrijeme_u_redu[$i]}.</p>"; } else { print ", {$greska_pogresno_vrijeme_u_redu[$i]}"; } } } } if (count($greska_nevalja_interval_u_redu) > 0 && $greska_masovnog_unosa_casova == 1) { print "<p class=\"crveno\">GREŠKA: Interval nije ispravan u redu {$greska_nevalja_interval_u_redu['0']}"; if (count($greska_nevalja_interval_u_redu) == 1) { print ".</p>"; } else { for ($i = 1; $i < count($greska_nevalja_interval_u_redu); $i++) { if ($i == count($greska_nevalja_interval_u_redu) - 1) { print " i {$greska_nevalja_interval_u_redu[$i]}.</p>"; } else { print ", {$greska_nevalja_interval_u_redu[$i]}"; } } } } if ($greska_prazan_prostor_za_mas_unos_casova == 1) { print "<p class=\"crveno\">GREŠKA: Niste unijeli nikakve podatke u prostor za masovni unos.</p>"; } if ($uspjesan_masovni_unos_casova == 1) { nicemessage("Uspješno unešeni časovi!"); } ?> <a href="#" onclick="daj_stablo('uputstvo_za_mas_unos_casova')"><img id="img-uputstvo_za_mas_unos_casova" src = "images/plus.png" border="0" align="left" />Uputstvo za masovni unos</a> <div id="uputstvo_za_mas_unos_casova" style="display:none"> <p>Unesite sljedeće podatke odvojene zarezom (ili [tab]-om ):</p> <ul> <li><p><span class="plavo_bold">dan u sedmici: </span> (pon, uto, sri, cet, pet, sub)</p></li> <li><p><span class="plavo_bold">predmet: </span> unesite skraćeni naziv predmeta, npr im za inžinjersku matematiku</p></li> <li><p><span class="plavo_bold">vrijeme početka: </span> unesite vrijeme u intervalu 8:00 do 20:45</p></li> <li><p><span class="plavo_bold">vrijeme kraja: </span> unesite vrijeme u intervalu 8:15 do 21:00</p></li> <li><p><span class="plavo_bold">ime sale </span></p></li> <li> <p><span class="plavo_bold">tip časa: </span></p> <ul> <li><p><span class="plavo_bold">P: </span> za predavanje</p></li> <li><p><span class="plavo_bold">T: </span> za tutorijal</p></li> <li><p><span class="plavo_bold">L: </span> za laboratorijsku vježbu</p></li> </ul> </li> <li><p><span class="plavo_bold">ime grupe: </span>za predavanje ovaj parametar je prazan</p></li> </ul> <p>Ukoliko unosite podatke iz Excel-a odaberite opciju unos iz excela(odvajanje sa [tab]-om)</p> <p>Svaki novi čas dodajte u novom redu</p> <p>primjer:</p> <p>pon, im, 8:15, 9:30, s01, P</p> <p>pon, if, 9:30, 10:30, s02, T, g1</p> </div> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="masovni_unos_casova"> <textarea name="mas_unos_casova" rows="10" cols="40"> <?php if (isset($_POST['mas_unos_casova'])) { print trim($_POST['mas_unos_casova']); } ?> </textarea> <br/> <p>Tip unosa: <select name="separator"> <option value="1">standardan unos (odvajanje zarezom)</option> <option value="2">unos iz excela(odvajanje sa [tab]-om)</option> </select> </p> <input type="submit" value=" Dodaj "></form> <br></br> <?php echo genform("POST", "brisanjecasa"); ?> <input type="hidden" name="akcija" value="obrisi_cas"> <input type="hidden" name="id_casa_za_brisanje" id="id_casa_za_brisanje" value=""></form> <h4>Izgled rasporeda:</h4> <table class="raspored" border="1" cellspacing="0"> <tr> <th> <p>Sat/</p> <p>Dan</p> </th> <?php for ($i = 8; $i <= 20; $i++) { $j = $i + 1; ?> <th> <p class="bold"><?php print "{$i}"; ?> </p> <p><?php print "00"; ?> </p> </th> <th> <p><br></p> <p><?php print "15"; ?> </p> </th> <th> <p><br></p> <p><?php print "30"; ?> </p> </th> <th> <p><br></p> <p><?php print "45"; ?> </p> </th> <?php } ?> </tr> <?php // petlja za 6 dana u sedmici for ($i = 1; $i <= 6; $i++) { print "<tr>"; $q0 = myquery("select vrijeme_pocetak,vrijeme_kraj from raspored_stavka where dan_u_sedmici={$i} and raspored={$raspored_za_edit} and (isjeckana=0 or isjeckana=2) and labgrupa!= -1"); // sada je potrebno naći maksimalni broj preklapanja termina da bi znali koliki je rowspan potreban za dan $i // poredimo svaki interval casa sa svakim $broj_preklapanja = array(); for ($j = 0; $j < 53; $j++) { $broj_preklapanja[] = 0; } for ($j = 0; $j < mysql_num_rows($q0); $j++) { $pocetak = mysql_result($q0, $j, 0); $kraj = mysql_result($q0, $j, 1); for ($k = $pocetak; $k < $kraj; $k++) { $broj_preklapanja[$k]++; } } $max_broj_preklapanja = max($broj_preklapanja); if ($i == 1) { $dan_tekst = "PON"; } elseif ($i == 2) { $dan_tekst = "UTO"; } elseif ($i == 3) { $dan_tekst = "SRI"; } elseif ($i == 4) { $dan_tekst = "ČET"; } elseif ($i == 5) { $dan_tekst = "PET"; } elseif ($i == 6) { $dan_tekst = "SUB"; } // sada pravimo dvodimenzionalni niz, koji predstavlja zauzetost termina u određenom redu $zauzet = array(); for ($j = 0; $j < $max_broj_preklapanja; $j++) { $zauzet = array(); } for ($j = 0; $j < $max_broj_preklapanja; $j++) { for ($k = 0; $k < 53; $k++) { $zauzet[$j][] = 0; } } // zauzet[1][0]=1 znaci da je termin 1 zauzet u drugom redu $q1 = myquery("select id,raspored,predmet,vrijeme_pocetak,vrijeme_kraj,sala,tip,labgrupa from raspored_stavka where dan_u_sedmici={$i} and raspored={$raspored_za_edit} \r\n\t\t\t\t\tand (isjeckana=0 or isjeckana=2) and labgrupa != -1 order by id"); $gdje = array(); $gdje["id_stavke"] = array(); $gdje["red_stavke"] = array(); // red u kojem stavka ide // primjer // gdje["id_stavke"][0]=5 znaci da je id prve stavke 5 // gdje["red_stavke"][0]=3 znaci da stavka 1 ide u 4. red // [0] pretstavlja prvu stavku jer indeksi kreću od nule i druga kolona treba biti ista-- u ovom slucaju [0] for ($j = 0; $j < mysql_num_rows($q1); $j++) { $id_stavke = mysql_result($q1, $j, 0); $gdje["id_stavke"][$j] = $id_stavke; // i ovo vise ne diramo jer znamo koji je id stavke na osnovu nepoznate $j $gdje["red_stavke"][$j] = 0; // postavljamo na nulu jer još ne znamo gdje ide određena stavka } for ($j = 0; $j < mysql_num_rows($q1); $j++) { $id_stavke = mysql_result($q1, $j, 0); $pocetak = mysql_result($q1, $j, 3); $kraj = mysql_result($q1, $j, 4); for ($k = 0; $k < $max_broj_preklapanja; $k++) { $zauzet_red = 0; while ($pocetak != $kraj) { if ($zauzet[$k][$pocetak - 1] == 1) { $zauzet_red = 1; // ako je uslov ispunjen nađen je barem jedan zauzet red break; } $pocetak++; } if ($zauzet_red == 0) { // ako nije zauzet termin u tom redu dodajemo termin u taj red i prekidamo petlju $gdje["red_stavke"][$j] = $k; // $stavka $j ide u red $k //sada proglasavamo termin zauzetim u tom redu $k+1 $pocetak = mysql_result($q1, $j, 3); while ($pocetak != $kraj) { $zauzet[$k][$pocetak - 1] = 1; // termin $pocetak se zauzima u redu $k+1 $pocetak++; } } if ($zauzet_red == 0) { break; } } } print "<td rowspan=\"{$max_broj_preklapanja}\">{$dan_tekst}</td>"; for ($j = 0; $j < $max_broj_preklapanja; $j++) { if ($j > 0) { print "</tr><tr>"; } $zadnji = 1; for ($m = 1; $m <= 52; $m++) { for ($k = 0; $k < mysql_num_rows($q1); $k++) { $id_stavke = mysql_result($q1, $k, 0); $q00 = myquery("select r.akademska_godina,r.semestar from raspored r, raspored_stavka rs where r.id=rs.raspored and (rs.isjeckana=0 or rs.isjeckana=2) and rs.id={$id_stavke}"); $akademska_godina = mysql_result($q00, 0, 0); $semestar = mysql_result($q00, 0, 1); $semestar_je_neparan = $semestar % 2; $predmet = mysql_result($q1, $k, 2); $q2 = myquery("select kratki_naziv from predmet where id={$predmet}"); $predmet_naziv = mysql_result($q2, 0, 0); $pocetak = mysql_result($q1, $k, 3); $kraj = mysql_result($q1, $k, 4); $sala = mysql_result($q1, $k, 5); $q3 = myquery("select naziv from raspored_sala where id={$sala}"); $sala_naziv = mysql_result($q3, 0, 0); $tip = mysql_result($q1, $k, 6); $labgrupa = mysql_result($q1, $k, 7); if ($labgrupa != 0) { if ($labgrupa != -1) { $q4 = myquery("select naziv from labgrupa where id={$labgrupa}"); $labgrupa_naziv = mysql_result($q4, 0, 0); } } $interval = $kraj - $pocetak; if ($gdje["red_stavke"][$k] == $j && $pocetak == $m) { for ($n = $zadnji; $n < $pocetak; $n++) { print "<td></td>"; } $zadnji = $kraj; $vrijemePocS = floor(($pocetak - 1) / 4 + 8); $vrijemePocMin = $pocetak % 4; if ($vrijemePocMin == 1) { $vrijemePocM = "00"; } elseif ($vrijemePocMin == 2) { $vrijemePocM = "15"; } elseif ($vrijemePocMin == 3) { $vrijemePocM = "30"; } elseif ($vrijemePocMin == 0) { $vrijemePocM = "45"; } $vrijemeP = "{$vrijemePocS}:{$vrijemePocM}"; $vrijemeKrajS = floor(($kraj - 1) / 4 + 8); $vrijemeKrajMin = $kraj % 4; if ($vrijemeKrajMin == 1) { $vrijemeKrajM = "00"; } elseif ($vrijemeKrajMin == 2) { $vrijemeKrajM = "15"; } elseif ($vrijemeKrajMin == 3) { $vrijemeKrajM = "30"; } elseif ($vrijemeKrajMin == 0) { $vrijemeKrajM = "45"; } $vrijemeK = "{$vrijemeKrajS}:{$vrijemeKrajM}"; $q3 = myquery("select obavezan from ponudakursa where predmet={$predmet}"); if (mysql_num_rows($q3) > 0) { $obavezan = mysql_result($q3, 0, 0); } $broj_konflikata = prikaziKonflikte($id_stavke, 0); if ($labgrupa_naziv == "(Svi studenti)") { $labgrupa_naziv = "---"; } print "\r\n\t\t\t\t\t\t\t\t\t\t<td colspan=\"{$interval}\">\r\n\t\t\t\t\t\t\t\t\t\t\t<table class=\"cas\" align=\"center\">"; if ($broj_konflikata > 0) { print "\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td><a href=\"?sta=studentska/raspored1&raspored_za_edit={$raspored_za_edit}&konflikt={$id_stavke}\"><img src=\"images/16x16/log_error.png\" width=\"16\" height=\"16\" border=\"0\">{$broj_konflikata}</a></td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</tr>"; } print "\r\n\t\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td><p class=\"bold\">{$tip}</p></td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td><p class=\"plavo\">{$predmet_naziv}</p></td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>"; if ($tip != 'P') { print "\r\n\t\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td><p class=\"bold\">{$labgrupa_naziv}</p></td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>"; } else { print "\r\n\t\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td><p>---</p></td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>"; } print "\r\n\t\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td><p class=\"plavo\">{$sala_naziv}</p></td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td><p class=\"mala_slova\">{$vrijemeP}-{$vrijemeK}</p></td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td><p><a href=\"javascript:onclick=brisanje_casa('{$id_stavke}')\"> obriši čas </a></p></td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t\t\t\t</table>\r\n\t\t\t\t\t\t\t\t\t\t</td>"; } } } } print "</tr>"; } ?> </table> <?php } else { print "<p><a href=\"?sta=studentska/raspored1&raspored_za_edit={$raspored_za_edit}\">Vrati se nazad</a></p>"; $id_stavke_sa_konfliktima = $_REQUEST['konflikt']; prikaziKonflikte($id_stavke_sa_konfliktima, 1); } } else { if ($uspjesno_unesen_raspored == 1) { nicemessage("Uspješno je unesen novi raspored."); } if ($uspjesno_obrisan_raspored == 1) { nicemessage("Raspored je uspješno obrisan."); } print "<p><a href=\"?sta=studentska/raspored1&edit_sala=1\">Administracija sala</a></p>"; print "<hr></hr><h4>Dodavanje novog rasporeda:</h4>"; print genform("POST", "forma_za_unos_rasporeda"); ?> <input type="hidden" name="akcija" value="unos_novog_rasporeda"> <?php if ($greska_postoji_raspored == 1) { print "<p class=\"crveno\">Postoji raspored sa tim parametrima.</p>"; } ?> <table id="raspored" cellpadding="3"> <tr> <td align="left" width="120">Akademska godina:</td> <td> <select name="akademska_godina"> <?php $q0 = mysql_query("select id,naziv,aktuelna from akademska_godina order by naziv desc"); while ($r0 = mysql_fetch_row($q0)) { print "<option value=\"{$r0['0']}\""; if ($greska_postoji_raspored == 1) { if ($_POST['akademska_godina'] == $r0[0]) { print " selected"; } } else { if ($r0[2] == 1) { print " selected"; } } print ">{$r0['1']}</option>\n"; } ?> </select> </td> </tr> <tr> <td align="left" width="120">Studij:</td> <td> <select name="studij" id="studij"> <?php $q0 = mysql_query("select id,naziv from studij"); while ($r0 = mysql_fetch_row($q0)) { print "<option value=\"{$r0['0']}\""; if ($greska_postoji_raspored == 1 && $r0[0] == $_POST['studij']) { print " selected"; } print ">{$r0['1']}</option>\n"; } ?> </select> </td> </tr> <tr> <td align="left" width="120">Semestar:</td> <td> <select name="semestar"> <?php for ($i = 1; $i <= 6; $i++) { ?> <option value="<?php echo $i; ?> " <?php if ($greska_postoji_raspored == 1 && $_POST['semestar'] == $i) { print " selected"; } ?> ><?php echo $i; ?> </option> <?php } ?> </select> </td> <?php if ($greska_prazan_kapacitet == 1) { print "<td><p class=\"crveno\">niste unijeli kapacitet</p></td>"; } ?> <?php if ($greska_kapacitet_nije_broj == 1) { print "<td><p class=\"crveno\">kapacitet treba biti broj</p></td>"; } ?> </tr> <tr> <td></td> <td align="right"><input type="submit" value=" Dodaj "></td> </tr> </table> </form> <?php echo genform("POST", "brisanjerasporeda"); ?> <input type="hidden" name="akcija" value="obrisi_raspored"> <input type="hidden" name="id_rasporeda_za_brisanje" id="id_rasporeda_za_brisanje" value=""></form> <hr></hr> <h4>Postojeći rasporedi:</h4> <table class="sale" border="1" cellspacing="0"> <?php $q1 = myquery("select id,studij,akademska_godina,semestar from raspored order by akademska_godina,studij,semestar"); if (mysql_num_rows($q1) < 1) { print "<p>Nema kreiranih rasporeda</p>"; } else { ?> <th>Studij</th> <th>Akademska godina</th> <th>Semestar</th> <th colspan="2">Akcije</th> <?php for ($i = 0; $i < mysql_num_rows($q1); $i++) { $id_rasporeda = mysql_result($q1, $i, 0); $studij = mysql_result($q1, $i, 1); $akademska_godina = mysql_result($q1, $i, 2); $semestar = mysql_result($q1, $i, 3); $q2 = myquery("select naziv from studij where id={$studij}"); $naziv_studija = mysql_result($q2, 0, 0); $q3 = myquery("select naziv from akademska_godina where id={$akademska_godina}"); $naziv_akademske_godine = mysql_result($q3, 0, 0); print "<tr>"; print "<td>{$naziv_studija}</td>"; print "<td>{$naziv_akademske_godine}</td>"; print "<td>{$semestar}</td>"; print "<td width=\"80\"><a href=\"?sta=studentska/raspored1&raspored_za_edit={$id_rasporeda}\"> izmijeni </a></td>"; print "<td width=\"80\"><a href=\"javascript:onclick=brisanje_rasporeda('{$id_rasporeda}')\"> obriši </a></td>"; print "</tr>"; } } ?> </table> <br></br> <hr></hr> <h4>Kopiranje rasporeda:</h4> <?php echo genform("POST", "kopiranjerasporeda"); ?> <input type="hidden" name="akcija" value="kopiraj_raspored"> <?php $q01 = myquery("select id,naziv from akademska_godina order by id"); print "<p>Kopiraj sve rasporede iz"; print "<select name=\"izvor\">"; for ($i = 0; $i < mysql_num_rows($q01); $i++) { $id = mysql_result($q01, $i, 0); $naziv = mysql_result($q01, $i, 1); print "<option value=\"{$id}\">{$naziv}</option>"; } print "</select>"; print " u "; print "<select name=\"odrediste\">"; for ($i = 0; $i < mysql_num_rows($q01); $i++) { $id = mysql_result($q01, $i, 0); $naziv = mysql_result($q01, $i, 1); print "<option value=\"{$id}\">{$naziv}</option>"; } print "</select>"; print " akademsku godinu? "; print "<input type=\"submit\" value=\" OK \" onclick=\"javascript:kopiranjeSvihRasporeda()\"></p>"; } // kraj stranice za rad sa rasporedom } ?> </td></tr> </table> </center> <?php }
function common_inbox() { global $userid, $user_student, $user_nastavnik; // 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 - svi studenti na labgrupi (primalac - id labgrupe) // 7 - korisnik (primalac - user id) // 8 - svi studenti na godini studija (primalac - idstudija*10+godina_studija) // Podaci potrebni kasnije // Zadnja akademska godina $q20 = myquery("select id,naziv from akademska_godina where aktuelna=1"); $ag = mysql_result($q20, 0, 0); // Studij koji student trenutno sluša $studij = 0; if ($user_student) { $q30 = myquery("select ss.studij,ss.semestar,ts.ciklus from student_studij as ss, studij as s, tipstudija as ts where ss.student={$userid} and ss.akademska_godina={$ag} and ss.studij=s.id and s.tipstudija=ts.id order by ss.semestar desc limit 1"); if (mysql_num_rows($q30) > 0) { $studij = mysql_result($q30, 0, 0); $semestar = mysql_result($q30, 0, 1); $ciklus = mysql_result($q30, 0, 2); $godina_studija = ($semestar + 1) / 2; } } // Pravimo neki okvir za sajt ?> <center> <table width="80%" border="0"><tr><td> <h1>Lične poruke</h1> <?php ////////////////////// // Slanje poruke ////////////////////// if ($_POST['akcija'] == 'send' && check_csrf_token()) { // Ko je primalac $primalac = my_escape($_REQUEST['primalac']); $primalac = preg_replace("/\\(.*?\\)/", "", $primalac); $q300 = myquery("select id from auth where login='******'"); if (mysql_num_rows($q300) < 1) { niceerror("Nepoznat primalac"); return; // FIXME } $prim_id = mysql_result($q300, 0, 0); // Samo slanje licnih poruka je dozvoljeno... $q310 = myquery("insert into poruka set tip=2, opseg=7, primalac={$prim_id}, posiljalac={$userid}, vrijeme=NOW(), ref=" . intval($_REQUEST['ref']) . ", naslov='" . my_escape($_REQUEST['naslov']) . "', tekst='" . my_escape($_REQUEST['tekst']) . "'"); nicemessage("Poruka uspješno poslana"); zamgerlog("poslana poruka za u{$prim_id}", 2); zamgerlog2("poslana poruka", intval($prim_id)); } if ($_REQUEST['akcija'] == 'compose' || $_REQUEST['akcija'] == 'odgovor') { if ($_REQUEST['akcija'] == 'odgovor') { $poruka = intval($_REQUEST['poruka']); $q200 = myquery("select posiljalac, naslov, tekst, primalac from poruka where id={$poruka}"); if (mysql_num_rows($q200) < 1) { niceerror("Poruka ne postoji"); zamgerlog("pokusaj odgovora na nepostojecu poruku {$poruka}", 3); zamgerlog2("pokusaj odgovora na nepostojecu poruku", $poruka); return; } // Ko je poslao originalnu poruku (tj. kome odgovaramo) $prim_id = mysql_result($q200, 0, 0); if ($prim_id == $userid) { // U slučaju odgovora na poslanu poruku, ponovo šaljemo poruku istoj osobi $prim_id = mysql_result($q200, 0, 3); } $q210 = myquery("select a.login,o.ime,o.prezime from auth as a, osoba as o where a.id=o.id and o.id={$prim_id}"); if (mysql_num_rows($q210) < 1) { niceerror("Nepoznat pošiljalac"); zamgerlog("poruka {$poruka} ima nepoznatog posiljaoca {$prim_id} (prilikom odgovora na poruku)", 3); zamgerlog2("poruka ima nepoznatog posiljaoca (prilikom odgovora na poruku)", $poruka, $prim_id); return; } else { $primalac = mysql_result($q210, 0, 0) . " (" . mysql_result($q210, 0, 1) . " " . mysql_result($q210, 0, 2) . ")"; } // Prepravka naslova i teksta $naslov = mysql_result($q200, 0, 1); if (substr($naslov, 0, 3) != "Re:") { $naslov = "Re: " . $naslov; } $tekst = mysql_result($q200, 0, 2); for ($i = 80; $i < strlen($tekst); $i += 81) { $k = $i - 80; while ($k < $i && $k !== false) { $oldk = $k; $k = strpos($tekst, " ", $k + 1); } if ($oldk == $i - 80) { $tekst = substr($tekst, 0, $i) . "\n" . substr($tekst, $i); } else { $tekst = substr($tekst, 0, $oldk) . "\n" . substr($tekst, $oldk + 1); } } $tekst = "> " . str_replace("\n", "\n> ", $tekst); $tekst .= "\n\n"; } else { // Omogucujemo da se naslov, tekst i primalac zadaju preko URLa if ($_REQUEST['naslov']) { $naslov = my_escape($_REQUEST['naslov']); } else { $naslov = ""; } if ($_REQUEST['tekst']) { $tekst = my_escape($_REQUEST['tekst']); } else { $tekst = ""; } if ($_REQUEST['primalac']) { $primalac = my_escape($_REQUEST['primalac']); } else { $primalac = ""; } } ?> <a href="?sta=common/inbox">Nazad na inbox</a><br/> <h3>Slanje poruke</h3> <?php echo genform("POST"); ?> <?php if ($_REQUEST['akcija'] == 'odgovor') { ?> <input type="hidden" name="ref" value="<?php echo $poruka; ?> "><?php } ?> <input type="hidden" name="akcija" value="send"> <script language="javascript"> var tm=0; function startaj_timer(e) { sakrij_pretragu(); if(e.keyCode!=13 && e.keyCode!=9) tm = setTimeout('pretraga_primalaca()',1000); } function pretraga_primalaca() { var ib=document.getElementById('primalac'); var pg=document.getElementById('pretgraga'); if (ib.value.length<3) return; //alert("Trazim: "+ib.value); // Nadji poziciju objekta var curleft = curtop = 0; var obj=ib; if (obj.offsetParent) { do { curleft += obj.offsetLeft; curtop += obj.offsetTop; } while (obj = obj.offsetParent); } pg.style.visibility = 'visible'; pg.style.left=curleft; pg.style.top=curtop+ib.offsetHeight; ajah_start("index.php?c=N&sta=common/ajah&akcija=pretraga&ime="+ib.value, "", "napuni_rezultate()"); } function napuni_rezultate() { var rp=document.getElementById('rezultati_pretrage'); var tekst = frames['zamger_ajah'].document.body.innerHTML; var oldpozicija=0; rp.innerHTML = ""; do { var pozicija = tekst.indexOf('\n',oldpozicija); var tmptekst = tekst.substr(oldpozicija,pozicija-oldpozicija); if (tmptekst.length<2) { oldpozicija=pozicija+1; continue; } if (tmptekst == "OK") break; if (tmptekst == "Nema rezultata") { rp.innerHTML = rp.innerHTML + "<font color=\"#AAAAAA\">(Nema rezultata)</font><br/>"; } else { rp.innerHTML = rp.innerHTML+"<a href=\"javascript:postavi('"+tmptekst+"')\">"+tmptekst+"</a><br/>"; } oldpozicija=pozicija+1; } while (pozicija>=0); } function sakrij_pretragu() { var pg=document.getElementById('pretgraga'); pg.style.visibility = 'hidden'; if (tm!=0) clearTimeout(tm); } function postavi(prim) { var ib=document.getElementById('primalac'); ib.value=prim; sakrij_pretragu(); } function blur_dogadjaj(e) { setTimeout('sakrij_pretragu()',1000); } </script> <table border="0"> <tr><td><b>Primalac:</b></td><td><input type="text" name="primalac" id="primalac" size="40" value="<?php echo $primalac; ?> " autocomplete="off" onkeypress="startaj_timer(event);" onblur="blur_dogadjaj(event);"></td></tr> <tr><td colspan="2"><input type="radio" name="metoda" value="1" DISABLED> Pošalji e-mail <input type="radio" name="metoda" value="2" CHECKED> Pošalji Zamger poruku<br/> <br/></td></tr> <tr><td><b>Naslov:</b></td><td><input type="text" name="naslov" size="40" value="<?php echo $naslov; ?> "></td></tr> </table> <!-- Rezultati pretrage primaoca --> <div id="pretgraga" style="position:absolute;visibility:hidden"> <table border="0" bgcolor="#FFFFEE" style="border:1px;border-color:silver;border-style:solid;"> <tr><td> <div id="rezultati_pretrage"></div> </td></tr> </table> </div> <br/> Tekst poruke:<br/> <textarea name="tekst" rows="10" cols="81"><?php echo $tekst; ?> </textarea> <br/> <br/> <input type="submit" value=" Pošalji "> <input type="reset" value=" Poništi "> </form> <?php print ajah_box(); return; } ?> <p><a href="?sta=common/inbox&akcija=compose">Pošalji novu poruku</a> * <?php if ($_REQUEST['mode'] == "outbox") { ?> <a href="?sta=common/inbox">Vaše sanduče</a><?php } else { ?> <a href="?sta=common/inbox&mode=outbox">Vaše poslane poruke</a><?php } ?> </p> <?php ////////////////////// // Čitanje poruke ////////////////////// $mjeseci = array("", "januar", "februar", "mart", "april", "maj", "juni", "juli", "avgust", "septembar", "oktobar", "novembar", "decembar"); $dani = array("Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"); $poruka = intval($_REQUEST['poruka']); if ($poruka > 0) { // Dobavljamo podatke o poruci $q10 = myquery("select opseg, primalac, posiljalac, UNIX_TIMESTAMP(vrijeme), naslov, tekst, tip from poruka where id={$poruka}"); if (mysql_num_rows($q10) < 1) { niceerror("Poruka ne postoji"); zamgerlog("pristup nepostojecoj poruci {$poruka}", 3); zamgerlog2("pristup nepostojecoj poruci", $poruka); return; } // Posiljalac $opseg = mysql_result($q10, 0, 0); $prim_id = mysql_result($q10, 0, 1); $pos_id = mysql_result($q10, 0, 2); if ($opseg == 1 && !$user_student || $opseg == 2 && !$user_nastavnik || $opseg == 3 && $prim_id != $studij && $prim_id != -$ciklus || $opseg == 4 && $prim_id != $ag || $opseg == 7 && $prim_id != $userid && $_REQUEST['mode'] !== "outbox" || $opseg == 7 && $_REQUEST['mode'] === "outbox" && $pos_id != $userid || $opseg == 8 && $prim_id != $studij * 10 + $godina_studija && $prim_id != -$ciklus * 10 - $godina_studija) { niceerror("Nemate pravo pristupa ovoj poruci!"); zamgerlog("pokusao pristupiti poruci {$poruka}", 3); zamgerlog2("nema pravo pristupa poruci", $poruka); return; } if ($opseg == 5) { // da li student ikada slusao predmet? ako jeste moze citati poruke za taj predmet... (FIXME?) $q110 = myquery("select count(*) from student_predmet as sp, ponudakursa as pk where sp.student={$userid} and sp.predmet=pk.id and pk.predmet={$prim_id}"); if (mysql_result($q110, 0, 0) < 1) { niceerror("Nemate pravo pristupa ovoj poruci!"); zamgerlog("pokusao pristupiti poruci {$poruka}", 3); zamgerlog2("nema pravo pristupa poruci", $poruka); return; } } if ($opseg == 6) { // da li je student u labgrupi? $q115 = myquery("select count(*) from student_labgrupa where student={$userid} and labgrupa={$prim_id}"); if (mysql_result($q115, 0, 0) < 1) { niceerror("Nemate pravo pristupa ovoj poruci!"); zamgerlog("pokusao pristupiti poruci {$poruka}", 3); zamgerlog2("nema pravo pristupa poruci", $poruka); return; } } $q20 = myquery("select ime,prezime from osoba where id={$pos_id}"); if (mysql_num_rows($q20) < 1) { $posiljalac = "Nepoznato!?"; zamgerlog("poruka {$poruka} ima nepoznatog posiljaoca {$pos_id}", 3); zamgerlog2("poruka ima nepoznatog posiljaoca", $poruka, $pos_id); } else { $posiljalac = mysql_result($q20, 0, 0) . " " . mysql_result($q20, 0, 1); } // Primalac if ($opseg == 0) { $primalac = "Svi korisnici Zamgera"; } else { if ($opseg == 1) { $primalac = "Svi studenti"; } else { if ($opseg == 2) { $primalac = "Svi nastavnici i saradnici"; } else { if ($opseg == 3) { $q30 = myquery("select naziv from studij where id={$prim_id}"); if (mysql_num_rows($q30) < 1) { $primalac = "Nepoznato!?"; zamgerlog("poruka {$poruka} ima nepoznatog primaoca {$prim_id} (opseg: studij)", 3); zamgerlog2("poruka ima nepoznatog primaoca (opseg: studij)", $poruka, $prim_id); } else { $primalac = "Svi studenti na: " . mysql_result($q30, 0, 0); } } else { if ($opseg == 4) { $q40 = myquery("select naziv from akademska_godina where id={$prim_id}"); if (mysql_num_rows($q40) < 1) { $primalac = "Nepoznato!?"; zamgerlog("poruka {$poruka} ima nepoznatog primaoca {$prim_id} (opseg: akademska godina)", 3); zamgerlog2("poruka ima nepoznatog primaoca (opseg: akademska godina)", $poruka, $prim_id); } else { $primalac = "Svi studenti na akademskoj godini: " . mysql_result($q40, 0, 0); } } else { if ($opseg == 5) { $q50 = myquery("select naziv from predmet where id={$prim_id}"); if (mysql_num_rows($q50) < 1) { $primalac = "Nepoznato!?"; zamgerlog("poruka {$poruka} ima nepoznatog primaoca {$prim_id} (opseg: predmet)", 3); zamgerlog2("poruka ima nepoznatog primaoca (opseg: predmet)", $poruka, $prim_id); } else { $primalac = "Svi studenti na predmetu: " . mysql_result($q50, 0, 0); } } else { if ($opseg == 6) { $q55 = myquery("select p.naziv,l.naziv from predmet as p, labgrupa as l where l.id={$prim_id} and l.predmet=p.id"); if (mysql_num_rows($q55) < 1) { $primalac = "Nepoznato!?"; zamgerlog("poruka {$poruka} ima nepoznatog primaoca {$prim_id} (opseg: labgrupa)", 3); zamgerlog2("poruka ima nepoznatog primaoca (opseg: labgrupa)", $poruka, $prim_id); } else { $primalac = "Svi studenti u grupi " . mysql_result($q55, 0, 1) . " (" . mysql_result($q55, 0, 0) . ")"; } } else { if ($opseg == 7) { $q60 = myquery("select ime,prezime from osoba where id={$prim_id}"); if (mysql_num_rows($q60) < 1) { $primalac = "Nepoznato!?"; zamgerlog("poruka {$poruka} ima nepoznatog primaoca {$prim_id} (opseg: korisnik)", 3); zamgerlog2("poruka ima nepoznatog primaoca (opseg: korisnik)", $poruka, $prim_id); } else { $primalac = mysql_result($q60, 0, 0) . " " . mysql_result($q60, 0, 1); } } else { if ($opseg == 8) { $studij = intval($prim_id / 10); if ($studij == -1) { $godina = -($prim_id + 10); $primalac = "Svi studenti na: Prvom ciklusu studija, {$godina}. godina"; } else { if ($studij == -2) { $godina = -($prim_id + 20); $primalac = "Svi studenti na: Drugom ciklusu studija, {$godina}. godina"; } else { $godina = $prim_id % 10; $q30 = myquery("select naziv from studij where id={$studij}"); if (mysql_num_rows($q30) < 1) { $primalac = "Nepoznato!?"; zamgerlog("poruka {$poruka} ima nepoznatog primaoca {$prim_id} (opseg: godina studija)", 3); zamgerlog2("poruka ima nepoznatog primaoca (opseg: godina studija)", $poruka, $prim_id); } else { $primalac = "Svi studenti na: " . mysql_result($q30, 0, 0) . ", {$godina}. godina"; } } } } else { $primalac = "Nepoznato!?"; zamgerlog("poruka {$poruka} ima nepoznat opseg {$opseg}", 3); zamgerlog2("poruka ima nepoznat opseg", $poruka, $opseg); } } } } } } } } } // Fini datum $vr = mysql_result($q10, 0, 3); if (date("d.m.Y", $vr) == date("d.m.Y")) { $vrijeme = "<i>danas</i> - "; } else { if (date("d.m.Y", $vr + 3600 * 24) == date("d.m.Y")) { $vrijeme = "<i>juče</i> - "; } } $vrijeme .= $dani[date("w", $vr)] . date(", j. ", $vr) . $mjeseci[date("n", $vr)] . date(" Y. H:i", $vr); // Naslov $tip = mysql_result($q10, 0, 6); if ($tip == 1) { $naslov = "O B A V J E Š T E N J E"; $tekst = mysql_result($q10, 0, 4) . "\n\n"; } else { $naslov = mysql_result($q10, 0, 4); if (!preg_match("/\\S/", $naslov)) { $naslov = "[Bez naslova]"; } $tekst = ""; } ?> <h3>Prikaz poruke</h3> <table cellspacing="0" cellpadding="0" border="0" style="border:1px;border-color:silver;border-style:solid;"><tr><td bgcolor="#f2f2f2"> <table border="0"> <tr><td><b>Vrijeme slanja:</b></td><td><?php echo $vrijeme; ?> </td></tr> <tr><td><b>Pošiljalac:</b></td><td><?php echo $posiljalac; ?> </td></tr> <tr><td><b>Primalac:</b></td><td><?php echo $primalac; ?> </td></tr> <tr><td><b>Naslov:</b></td><td><?php echo $naslov; ?> (<a href="?sta=common/inbox&akcija=odgovor&poruka=<?php echo $poruka; ?> ">odgovori</a>)</td></tr> </table> </td></tr><tr><td> <br/> <table border="0" cellpadding="5"><tr><td> <?php $tekst .= mysql_result($q10, 0, 5); // Dodajemo na eventualni naslov obavještenja $i = 0; while (strpos($tekst, "http://", $i) !== false || strpos($tekst, "https://", $i) !== false) { $j = strpos($tekst, "http://", $i); if ($j == false) { $j = strpos($tekst, "https://", $i); } $k = strpos($tekst, " ", $j); $k2 = strpos($tekst, "\n", $j); if ($k2 < $k && $k2 != 0) { $k = $k2; } if ($k == 0) { $k = $k2; } if ($k == 0) { $k = strlen($tekst); } do { $k--; $a = substr($tekst, $k, 1); } while ($a == "." || $a == "," || $a == ")" || $a == "!" || $a == "?"); $k++; if ($k - $j < 9) { $i = $j + 1; continue; } $url = substr($tekst, $j, $k - $j); $tekst = substr($tekst, 0, $j) . "<a href=\"{$url}\" target=\"_blank\">{$url}</a>" . substr($tekst, $k); $i = $j + strlen($url) + 28; } $tekst = str_replace("\n", "<br/>\n", $tekst); print $tekst; ?> </td><tr></table> </td></tr></table> <br/><br/> <a href="?sta=common/inbox&akcija=odgovor&poruka=<?php echo $poruka; ?> ">Odgovorite na poruku</a> <br/><hr><br/><?php } ////////////////////// // OUTBOX ////////////////////// if ($_REQUEST['mode'] == "outbox") { print "<h3>Poslane poruke:</h3>\n"; ?> <table border="0" width="100%" style="border:1px;border-color:silver;border-style:solid;"> <thead> <tr bgcolor="#cccccc"><td width="15%"><b>Datum</b></td><td width="15%"><b>Primalac</b></td><td width="70%"><b>Naslov</b></td></tr> </thead> <tbody> <?php $vrijeme_poruke = array(); $q100 = myquery("select id, UNIX_TIMESTAMP(vrijeme), opseg, primalac, naslov, posiljalac from poruka where tip=2 and posiljalac={$userid} order by vrijeme desc"); while ($r100 = mysql_fetch_row($q100)) { $id = $r100[0]; $opseg = $r100[2]; $primalac = $r100[3]; $vrijeme_poruke[$id] = $r100[1]; $naslov = $r100[4]; if (strlen($naslov) > 60) { $naslov = substr($naslov, 0, 55) . "..."; } if (!preg_match("/\\S/", $naslov)) { $naslov = "[Bez naslova]"; } // Primalac $q120 = myquery("select ime,prezime from osoba where id={$primalac}"); if (mysql_num_rows($q120) < 1) { $primalac = "Nepoznato! Prijavite grešku"; } else { $primalac = mysql_result($q120, 0, 0) . " " . mysql_result($q120, 0, 1); } // Fino vrijeme $vr = $vrijeme_poruke[$id]; $vrijeme = ""; if (date("d.m.Y", $vr) == date("d.m.Y")) { $vrijeme = "<i>danas</i>, "; } else { if (date("d.m.Y", $vr + 3600 * 24) == date("d.m.Y")) { $vrijeme = "<i>juče</i>, "; } else { $vrijeme .= date("j. ", $vr) . $mjeseci[date("n", $vr)] . ", "; } } $vrijeme .= date("H:i", $vr); if ($_REQUEST['poruka'] == $id) { $bgcolor = "#EEEECC"; } else { $bgcolor = "#FFFFFF"; } $code_poruke[$id] = "<tr bgcolor=\"{$bgcolor}\" onmouseover=\"this.bgColor='#EEEEEE'\" onmouseout=\"this.bgColor='{$bgcolor}'\"><td>{$vrijeme}</td><td>{$primalac}</td><td><a href=\"?sta=common/inbox&poruka={$id}&mode=outbox\">{$naslov}</a></td></tr>\n"; } // Sortiramo po vremenu arsort($vrijeme_poruke); $count = 0; foreach ($vrijeme_poruke as $id => $vrijeme) { print $code_poruke[$id]; $count++; // if ($count==20) break; // prikazujemo 20 poruka -- TODO: stranice } if ($count == 0) { print "<li>Nemate nijednu poruku.</li>\n"; } print "</tbody></table>"; ?> </td></tr></table></center> <?php ////////////////////// // INBOX ////////////////////// } else { $velstranice = 20; // Broj poruka po stranici $count = 0; $ispis = ""; $stranica = intval($_REQUEST['stranica']); if ($stranica == 0) { $stranica = 1; } print "<h3>Poruke u vašem sandučetu:</h3>\n"; ?> <table border="0" width="100%" style="border:1px;border-color:silver;border-style:solid;"> <thead> <tr bgcolor="#cccccc"><td width="15%"><b>Datum</b></td><td width="15%"><b>Autor</b></td><td width="70%"><b>Naslov</b></td></tr> </thead> <tbody> <?php $vrijeme_poruke = array(); $q100 = myquery("select id, UNIX_TIMESTAMP(vrijeme), opseg, primalac, naslov, posiljalac from poruka where tip=2 order by vrijeme desc"); while ($r100 = mysql_fetch_row($q100)) { $id = $r100[0]; $opseg = $r100[2]; $primalac = $r100[3]; if ($opseg == 2 || $opseg == 3 && $primalac != $studij || $opseg == 4 && $primalac != $ag || $opseg == 7 && $primalac != $userid) { continue; } if ($opseg == 5) { // da li je student ikada slusao predmet? (FIXME?) $q110 = myquery("select count(*) from student_predmet as sp, ponudakursa as pk where sp.student={$userid} and sp.predmet=pk.id and pk.predmet={$primalac}"); if (mysql_result($q110, 0, 0) < 1) { continue; } } if ($opseg == 6) { // da li je student u labgrupi? $q115 = myquery("select count(*) from student_labgrupa where student={$userid} and labgrupa={$primalac}"); if (mysql_result($q115, 0, 0) < 1) { continue; } } $vrijeme_poruke[$id] = $r100[1]; $naslov = $r100[4]; if (strlen($naslov) > 60) { $naslov = substr($naslov, 0, 55) . "..."; } if (!preg_match("/\\S/", $naslov)) { $naslov = "[Bez naslova]"; } // Posiljalac $q120 = myquery("select ime,prezime from osoba where id={$r100['5']}"); if (mysql_num_rows($q120) < 1) { $posiljalac = "Nepoznato! Prijavite grešku"; } else { $posiljalac = mysql_result($q120, 0, 0) . " " . mysql_result($q120, 0, 1); } // Fino vrijeme $vr = $vrijeme_poruke[$id]; $vrijeme = ""; if (date("d.m.Y", $vr) == date("d.m.Y")) { $vrijeme = "<i>danas</i>, "; } else { if (date("d.m.Y", $vr + 3600 * 24) == date("d.m.Y")) { $vrijeme = "<i>juče</i>, "; } else { $vrijeme .= date("j. ", $vr) . $mjeseci[date("n", $vr)] . ", "; } } $vrijeme .= date("H:i", $vr); if ($_REQUEST['poruka'] == $id) { $bgcolor = "#EEEECC"; } else { $bgcolor = "#FFFFFF"; } //$count++; $count++; if ($count > ($stranica - 1) * $velstranice && $count <= $stranica * $velstranice) { $ispis .= "<tr bgcolor=\"{$bgcolor}\" onmouseover=\"this.bgColor='#EEEEEE'\" onmouseout=\"this.bgColor='{$bgcolor}'\"><td>{$vrijeme}</td><td>{$posiljalac}</td><td><a href=\"?sta=common/inbox&poruka={$id}&stranica={$stranica}\">{$naslov}</a></td></tr>\n"; } } if ($count == 0) { print "<li>Nemate nijednu poruku.</li>\n"; } if ($count > $velstranice) { $broj_stranica = ($count - 1) / $velstranice + 1; print "<p>Stranica: "; for ($i = 1; $i <= $broj_stranica; $i++) { if ($stranica == $i) { print "{$i} "; } else { print "<a href=\"?sta=common/inbox&stranica={$i}\">{$i}</a> "; } } print "</p>\n"; } print $ispis; print "</tbody></table>"; ?> </td></tr></table></center> <?php } }
function saradnik_zadaca() { global $conf_files_path, $userid, $user_siteadmin; require "lib/autotest.php"; require "lib/manip.php"; // radi update_komponente // -------------------- // Standardni ulazni podaci i potrebne varijable $stud_id = intval($_REQUEST['student']); $zadaca = intval($_REQUEST['zadaca']); $zadatak = intval($_REQUEST['zadatak']); // Prava pristupa if (!$user_siteadmin) { // Da li je nastavnik na predmetu? $q10 = myquery("select count(*) from nastavnik_predmet as np, zadaca as z where z.id={$zadaca} and z.predmet=np.predmet and z.akademska_godina=np.akademska_godina and np.nastavnik={$userid}"); if (mysql_result($q10, 0, 0) < 1) { zamgerlog("privilegije (student u{$stud_id} zadaca z{$zadaca})", 3); // nivo 3: greska niceerror("Nemate pravo izmjene ove zadaće"); return; } // Ogranicenja (tabela: ogranicenje) ne provjeravamo jer bi to bilo prekomplikovano, // a pitanje je da li ima smisla } // Podaci o zadaci $q20 = myquery("select p.geshi, p.ekstenzija, z.attachment, z.naziv, z.zadataka, z.komponenta, z.predmet, z.akademska_godina, z.programskijezik from zadaca as z, programskijezik as p where z.id={$zadaca} and z.programskijezik=p.id"); if (mysql_num_rows($q20) < 1) { zamgerlog("nepostojeca zadaca {$zadaca}", 3); niceerror("Neispravna zadaća."); exit; } $jezik = mysql_result($q20, 0, 0); $ekst = mysql_result($q20, 0, 1); $attach = mysql_result($q20, 0, 2); $naziv_zadace = mysql_result($q20, 0, 3); $komponenta = mysql_result($q20, 0, 5); $predmet = mysql_result($q20, 0, 6); $ag = mysql_result($q20, 0, 7); $id_jezika = mysql_result($q20, 0, 8); if (mysql_result($q20, 0, 4) < $zadatak || $zadatak < 1) { zamgerlog("pokusao pristupiti nepostojecem zadatku {$zadatak} u zadaci z{$zadaca}", 3); niceerror("Neispravan broj zadatka."); exit; } // Podaci o studentu $q50 = myquery("select ime, prezime from osoba where id={$stud_id}"); if (mysql_num_rows($q50) < 1) { zamgerlog("nepostojeci student {$stud_id}", 3); niceerror("Neispravan student."); exit; } $ime_studenta = mysql_result($q50, 0, 0); $prezime_studenta = mysql_result($q50, 0, 1); $lokacijazadaca = "{$conf_files_path}/zadace/{$predmet}-{$ag}/{$stud_id}/"; // -------------------- // AKCIJE // Akcija: Ispis diffa if ($_GET['akcija'] == "diff") { $diff_id = intval($_GET['diff_id']); $q60 = myquery("select diff from zadatakdiff where zadatak={$diff_id}"); $diff = mysql_result($q60, 0, 0); // Ovo ispod nema potrebe jer je diff već escapovan prilikom // inserta u bazu (stud_zadaca.php) // $diff = str_replace("\n\n","\n",$diff); // $diff = htmlspecialchars($diff); print "<pre>{$diff}</pre>\n\n"; return; } // Akcija: Izvršenje programa if ($_POST['akcija'] == "izvrsi" && check_csrf_token()) { // čuvamo poslane podatke u bazi (ako ih nema) function izvrsi($stdin, $jezik, $lokacijazadaca, $zadaca, $zadatak, $ekst) { global $conf_files_path; // priprema fajlova $tstdin = str_replace('\\n', "\n", $stdin); // više nije dvostruki escape $tstdin = str_replace('\\N', "\n", $tstdin); $tstdin .= "\n"; $result = file_put_contents("{$conf_files_path}/tmp/zamger-gdb.txt", "run\nbt\n"); if ($result) { $result = file_put_contents("{$conf_files_path}/tmp/zamger-input.txt", $tstdin); } if (!$result) { zamgerlog("nije uspjelo kreiranje datoteka", 3); niceerror("Ne mogu kreirati potrebne datoteke u direktoriju /tmp"); return; } // kompajliranje - FIXME: nema podrške za jezike? if ($jezik == "C++") { $kompajler = "g++"; } else { $kompajler = "gcc"; } $the_file = "{$lokacijazadaca}{$zadaca}/{$zadatak}{$ekst}"; $stdout = array(); exec("{$kompajler} -lm -ggdb {$the_file} -o {$conf_files_path}/tmp/zamger.out 2>&1", $stdout, $retvar); if ($retvar != 0) { niceerror("Kompajliranje nije uspjelo! Slijedi ispis"); print "<pre>" . join("\n", $stdout) . "</pre>\n\n"; // čišćenje unlink("{$conf_files_path}/tmp/zamger-gdb.txt"); unlink("{$conf_files_path}/tmp/zamger-input.txt"); unlink("{$conf_files_path}/tmp/zamger.out"); return; } // izvršenje unset($stdout); chmod("{$conf_files_path}/tmp/zamger.out", 0755); exec("gdb --batch --command={$conf_files_path}/tmp/zamger-gdb.txt {$conf_files_path}/tmp/zamger.out <{$conf_files_path}/tmp/zamger-input.txt 2>&1", $stdout, $retvar); // Čistimo viškove iz stdout-a $ispis = join("\n", $stdout); $ispis = preg_replace("/^Using .*? library .*?\n/", "", $ispis); $ok = strpos($ispis, "\nProgram exited normally.\n"); if ($ok) { $ispis = substr($ispis, 0, $ok); } else { $greska = strpos($ispis, "\nProgram received signal SIGABRT, Aborted.\n"); $backtrace = substr($ispis, $greska + 42); $ispis = substr($ispis, 0, $greska); } ?> <center><table width="95%" style="border:1px solid silver;" bgcolor="#FFF3F3"><tr><td> <pre><?php echo $ispis; ?> </pre> </td></tr></table></center><br/><?php if ($ok) { ?> <p><img src="images/16x16/zad_ok.png" width="16" height="16"> Program se izvršio bez problema.</p><?php } else { ?> <p><img src="images/16x16/zad_bug.png" width="16" height="16"> Program se krahirao. Backtrace (obratiti pažnju na zadnje linije):</p> <pre><?php echo $backtrace; ?> </pre> <?php } // čišćenje unlink("{$conf_files_path}/tmp/zamger-gdb.txt"); unlink("{$conf_files_path}/tmp/zamger-input.txt"); unlink("{$conf_files_path}/tmp/zamger.out"); } ?> <h1>Rezultat izvršenja:</h1> <?php if ($_POST['sve']) { $q70 = myquery("select ulaz from stdin where zadaca={$zadaca} and redni_broj={$zadatak}"); while ($r70 = mysql_fetch_row($q70)) { print "<h2>Ulaz: '{$r70['0']}'</h2>"; izvrsi($r70[0], $jezik, $lokacijazadaca, $zadaca, $zadatak, $ekst); } } else { $stdin = $_POST['stdin']; $mstdin = my_escape($stdin); $q70 = myquery("select count(*) from stdin where ulaz='{$mstdin}' and zadaca={$zadaca} and redni_broj={$zadatak}"); if (mysql_result($q70, 0, 0) == 0) { $q80 = myquery("insert into stdin set ulaz='{$mstdin}', zadaca={$zadaca}, redni_broj={$zadatak}"); } izvrsi($stdin, $jezik, $lokacijazadaca, $zadaca, $zadatak, $ekst); } ?> <p><a href="javascript:history.go(-1)">Nazad</a></p> <?php return; } // Akcija: Izmjena statusa if ($_POST['akcija'] == "slanje" && check_csrf_token()) { $komentar = my_escape($_POST['komentar']); $status = intval($_POST['status']); $bodova = floatval(str_replace(",", ".", $_POST['bodova'])); // Osiguravamo da se filename prenese u svaku sljedeću instancu zadatka $filename = $izvjestaj_skripte = ''; $q90 = myquery("select filename, izvjestaj_skripte from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$stud_id} order by id desc limit 1"); if (mysql_num_rows($q90) > 0) { $filename = mysql_real_escape_string(mysql_result($q90, 0, 0)); $izvjestaj_skripte = mysql_real_escape_string(mysql_result($q90, 0, 1)); // Već je sanitiziran HTML } $q100 = myquery("insert into zadatak set zadaca={$zadaca}, redni_broj={$zadatak}, student={$stud_id}, status={$status}, bodova={$bodova}, vrijeme=now(), komentar='{$komentar}', filename='{$filename}', izvjestaj_skripte='{$izvjestaj_skripte}', userid={$userid}"); // Odredjujemo ponudu kursa (za update komponente) $q110 = myquery("select pk.id from student_predmet as sp, ponudakursa as pk where sp.student={$stud_id} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); update_komponente($stud_id, mysql_result($q110, 0, 0), $komponenta); zamgerlog("izmjena zadace (student u{$stud_id} zadaca z{$zadaca} zadatak {$zadatak})", 2); // Nakon izmjene statusa, nastavljamo normalno sa prikazom zadatka } if ($_REQUEST["akcija"] == "test_detalji") { $test = intval($_REQUEST['test']); // Provjera spoofinga testa $q10 = myquery("SELECT COUNT(*) FROM autotest WHERE id={$test} AND zadaca={$zadaca} AND zadatak={$zadatak}"); if (mysql_result($q10, 0, 0) == 0) { niceerror("Odabrani test nije sa odabrane zadaće."); return; } autotest_detalji($test, $stud_id, true); return; } if ($_REQUEST["akcija"] == "brisi_testove" && check_csrf_token()) { autotest_brisi_rezultate($stud_id, $zadaca, $zadatak); nicemessage("Rezultati testova obrisani."); ?> <p><a href="?sta=saradnik/zadaca&student=<?php echo $stud_id; ?> &zadaca=<?php echo $zadaca; ?> &zadatak=<?php echo $zadatak; ?> ">Nazad</a></p> <?php return; } // -------------------- // PRIKAZ ZADATKA // Header ?> <h1><a href="?sta=saradnik/student&student=<?php echo $stud_id; ?> &predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> " onclick="window.opener.open(this.href); return false;"><?php echo $ime_studenta . " " . $prezime_studenta; ?> </a>, <?php echo $naziv_zadace . ", Zadatak " . $zadatak . "."; ?> </h1> <?php // Da li ispisati zadatak ili dugme za download attachmenta? if ($attach == 0) { // Nije attachment $src = ""; $the_file = "{$lokacijazadaca}{$zadaca}/{$zadatak}{$ekst}"; $no_lines = 0; if (file_exists($the_file)) { if ($_REQUEST["akcija"] == "test_sa_kodom") { $test = intval($_REQUEST['test']); // Provjera spoofinga testa $q10 = myquery("SELECT COUNT(*) FROM autotest WHERE id={$test} AND zadaca={$zadaca} AND zadatak={$zadatak}"); if (mysql_result($q10, 0, 0) == 0) { niceerror("Odabrani test nije sa odabrane zadaće."); return; } $src = autotest_sa_kodom($test, $stud_id, true); } else { $src = file_get_contents($the_file); } $no_lines = count(explode("\n", $src)); // geshi - biblioteka za syntax highlighting include_once 'lib/geshi/geshi.php'; $geshi = new GeSHi($src, $jezik); ?> <center><table width="95%" style="border:1px solid silver;"><tr> <!-- Brojevi linija --> <td bgcolor="#CCCCCC" align="left"><pre><?php for ($i = 1; $i <= $no_lines; $i++) { print "{$i}\n"; } ?> </pre></td> <td bgcolor="#F3F3F3" align="left"> <?php print $geshi->parse_code(); ?> </td></tr></table></center><br/><?php if ($_REQUEST["akcija"] == "test_sa_kodom") { return; } // Formular za izvršavanje programa if ($id_jezika > 0) { ?> <script type="text/javascript" src="js/combo-box.js"></script> <center><table style="border:1px solid silver;" cellspacing="0" cellpadding="6"><tr><td> Izvrši program sa sljedećim parametrima (kucajte \n za tipku enter):<br/> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="izvrsi"> <select name="stdin" onKeyPress="edit(event)" onBlur="this.editing = false;"> <?php // Zadnje korišteni stdin se čuva u bazi $q120 = myquery("select ulaz from stdin where zadaca={$zadaca} and redni_broj={$zadatak} order by id desc"); if (mysql_num_rows($q120) < 1) { print "<option></option>"; } // bez ovoga nije moguće upisati novi tekst while ($r120 = mysql_fetch_row($q120)) { print "<option value=\"{$r120['0']}\">{$r120['0']}</option>\n"; } ?> </select><br/> <b>Pažnja!</b> Prije pokretanja provjerite da li program sadrži opasne naredbe.<br/> <input type="submit" value=" Izvrši program "> <input type="submit" name="sve" value=" Izvrši sve primjere odjednom "> </form></table></center><br/> <br/> <?php } } } else { // Attachment $q130 = myquery("select filename,UNIX_TIMESTAMP(vrijeme) from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$stud_id} order by id desc limit 1"); if (mysql_num_rows($q130) > 0) { $filename = mysql_result($q130, 0, 0); $the_file = "{$lokacijazadaca}{$zadaca}/{$filename}"; if ($filename && file_exists($the_file)) { $vrijeme = date("d. m. Y. h:i:s", mysql_result($q130, 0, 1)); $velicina = nicesize(filesize($the_file)); $icon = "images/mimetypes/" . getmimeicon($the_file); $dllink = "index.php?sta=common/attachment&student={$stud_id}&zadaca={$zadaca}&zadatak={$zadatak}"; ?> <center><table width="75%" border="1" cellpadding="6" cellspacing="0" bgcolor="#CCCCCC"><tr><td> <a href="<?php echo $dllink; ?> "><img src="<?php echo $icon; ?> " border="0"></a> </td><td> <p>Poslani fajl: <b><a href="<?php echo $dllink; ?> "><?php echo $filename; ?> </a></b><br/> Veličina: <b><?php echo $velicina; ?> </b></p> </td></tr></table></center><br/> <?php } else { ?> <center><table width="75%" border="1" cellpadding="6" cellspacing="0" bgcolor="#CCCCCC"><tr><td> <b><font color="red">Student je zaboravio priložiti datoteku.</font></b> </td></tr></table></center><br/> <?php } } } // Prikaz statusa sa log-om i izmjena $q140 = myquery("select status,bodova,izvjestaj_skripte,komentar from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$stud_id} order by id desc limit 1"); if (mysql_num_rows($q140) > 0) { $status = mysql_result($q140, 0, 0); $bodova = mysql_result($q140, 0, 1); $izvjestaj_skripte = str_replace("\n", "<br/>", mysql_result($q140, 0, 2)); $komentar = mysql_result($q140, 0, 3); $komentar = str_replace("\"", """, $komentar); // Koristimo poseban upit da bismo odredili vrijeme slanja prve verzije $q150 = myquery("select UNIX_TIMESTAMP(vrijeme) from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$stud_id} order by id limit 1"); $vrijeme_slanja = date("d. m. Y. H:i:s", mysql_result($q150, 0, 0)); ?> <table border="0"> <tr> <td>Vrijeme slanja:</td> <td><b><?php echo $vrijeme_slanja; ?> </b></td> </tr> <?php // Autotest nalaz $nalaz_autotesta = autotest_tabela($stud_id, $zadaca, $zadatak, true); if ($nalaz_autotesta != "") { ?> <tr> <td>Rezultati testiranja:</td> <td> <p><?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="brisi_testove"> <input type="submit" value=" Obriši sve rezultate testiranja "> </form></p> <?php print $nalaz_autotesta; } if ($id_jezika > 0) { ?> <tr> <td>Izvještaj skripte:</td> <td><i><?php echo $izvjestaj_skripte; ?> </i></td> </tr> <?php } if ($status == 1 && !$user_siteadmin) { // nema mijenjanja ako je status 1 = ceka se automatska provjera print "Izmjena zadaće nije moguća jer se čeka automatsko testiranje"; } else { print genform("POST"); } ?> <input type="hidden" name="akcija" value="slanje"> <?php } else { print genform("POST"); ?> <input type="hidden" name="akcija" value="slanje"> <table border="0"> <tr> <td> </td> <td><b>Unos bodova za zadaću koja nije poslana:</b></td> </tr> <?php } // Dio forme koji se prikazuje bez obzira da li je u pitanju kreiranje nove zadaće ili promjena postojeće ?> <tr> <td>Status</td> <td><select id="status" name="status"><?php function myoption($nr, $tx, $sel) { print "{$sel}"; print "<option value={$nr}"; if ($nr == $sel) { print " selected"; } print ">{$tx}</option>"; } // tabela status kodova $statusi_array = array("nepoznat status", "sačekati automatsko testiranje!", "prepisana", "ne može se kompajlirati", "nova zadaća, potrebno pregledati", "pregledana"); $brstatusa = 6; for ($i = 0; $i < $brstatusa; $i++) { myoption($i, $statusi_array[$i], $status); } ?> </select></td> </tr> <tr> <td>Bodova:</td> <td><input type="text" size="20" name="bodova" value="<?php echo $bodova; ?> " onchange="javascript:document.getElementById('status').value=5;"></td> </tr> <tr> <td valign="top">Komentar:</td> <td><textarea cols="50" rows="5" name="komentar"><?php echo $komentar; ?> </textarea></td> </tr> <tr> <td colspan="2" align="center"><?php if ($status != 1 || $user_siteadmin) { ?> <input type="submit" value="Izmijeni vrijednosti"><?php } ?> </td> </tr> </table> </form> <?php ##### HISTORIJA IZMJENA ###### $q160 = myquery("select id,UNIX_TIMESTAMP(vrijeme),status,bodova,komentar,userid from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$stud_id} order by vrijeme"); if (mysql_num_rows($q160) > 1) { ?> <p>Historija izmjena:</p> <ul><?php while ($r160 = mysql_fetch_row($q160)) { $imeprezime = ""; if ($r160[5] > 0) { $q165 = myquery("select ime, prezime from osoba where id={$r160['5']}"); if (mysql_num_rows($q165) > 0) { $imeprezime = mysql_result($q165, 0, 0) . " " . mysql_result($q165, 0, 1); } } $vrijeme_slanja = date("d. m. Y. H:i:s", $r160[1]); print "<li><b>{$vrijeme_slanja}"; if ($imeprezime != "") { print " ({$imeprezime})"; } print ":</b> " . $statusi_array[$r160[2]]; if ($r160[3] > 0) { print " (" . $r160[3] . " bodova)"; } if (strlen($r160[4]) > 0) { print " - "" . $r160[4] . """; } $q170 = myquery("select count(zadatak) from zadatakdiff where zadatak={$r160['0']}"); if (mysql_result($q170, 0, 0) > 0) { print " (<a href=\"index.php?sta=saradnik/zadaca&akcija=diff&zadaca={$zadaca}&zadatak={$zadatak}&student={$stud_id}&diff_id={$r160['0']}\">diff</a>)"; } print "</li>"; } ?> </ul><?php } // Kraj historije izmjena }
function admin_prijemni() { ############### # Akcije ############### if ($_POST['akcija'] == "recalc") { $od = intval($_POST['od']); $do = intval($_POST['do']); $prijemni_termin = intval($_REQUEST['prijemni_termin']); $fakatradi = $_REQUEST['fakatradi']; if ($do < $od) { zamgerlog("nije dobar opseg {$od}-{$do}", 3); niceerror("Nije dobar opseg {$od}-{$do}"); return; } $greska = 0; $q10 = myquery("SELECT ciklus_studija FROM prijemni_termin WHERE id={$prijemni_termin}"); $q20 = myquery("SELECT osoba, broj_dosjea FROM prijemni_prijava WHERE prijemni_termin={$prijemni_termin} AND broj_dosjea>={$od} AND broj_dosjea<={$do}"); if (mysql_result($q10, 0, 0) == 1) { // Popraviti! print "ne ovdje!!!"; /*for ($i=$od; $i<=$do; $i++) { if ($fakatradi!="da") { $q5 = myquery("select ime,prezime,opci_uspjeh,kljucni_predmeti from prijemni where id=$i"); if (mysql_num_rows($q5)<1) { $greska=1; print "GRESKA!! Nepostojeci ID $i<br />"; continue; } else { print "$i. ".mysql_result($q5,0,1)." ".mysql_result($q5,0,0)." - "; $stario=mysql_result($q5,0,2); $starik=mysql_result($q5,0,3); } } $q10 = myquery("select ocjena from prijemniocjene where prijemni=$i and tipocjene=0"); $suma=0; $broj=0; while ($r10 = mysql_fetch_row($q10)) { $suma += $r10[0]; $broj++; } $sv = $suma/$broj; $sv = round($sv*10)/10; $obodova = $sv*8; $ksuma=0; for ($j=1; $j<=3; $j++) { $suma=0; $broj=0; $q20 = myquery("select ocjena from prijemniocjene where prijemni=$i and tipocjene=$j"); while ($r20 = mysql_fetch_row($q20)) { $suma += $r20[0]; $broj++; } $sv = $suma/$broj; $ksuma += $sv; } $ksuma = $ksuma/3; $kbodova = $ksuma*4; $kbodova = round($kbodova*10)/10; // SIC!!! zaokruzivanje kljucnih bodova if ($fakatradi=="da") { if ($obodova != $stario || $kbodova != $starik) $q30 = myquery("update prijemni set opci_uspjeh=$obodova, kljucni_predmeti=$kbodova where id=$i"); } else { print "opći uspjeh: $obodova (bilo $stario), ključni predmeti: $kbodova (bilo $starik)"; if ($obodova != $stario || $kbodova != $starik) print " PAZI!!!"; print "<br />\n"; } }*/ } else { while ($r20 = mysql_fetch_row($q20)) { $osoba = $r20[0]; $q30 = myquery("SELECT ocjena FROM prosliciklus_ocjene WHERE osoba={$osoba}"); $sumaocjena = $brojocjena = 0; while ($r30 = mysql_fetch_row($q30)) { $sumaocjena += $r30[0]; $brojocjena++; } $bodovi = round($sumaocjena / $brojocjena * 100) / 10; if ($fakatradi != "da") { $q40 = myquery("SELECT o.ime, o.prezime, pcu.opci_uspjeh FROM osoba as o, prosliciklus_uspjeh as pcu WHERE o.id={$osoba} AND pcu.osoba={$osoba}"); $imepr = mysql_result($q40, 0, 1) . " " . mysql_result($q40, 0, 0); $stari_bodovi = mysql_result($q40, 0, 2); $bd = $r20[1]; if ($stari_bodovi != $bodovi) { print "{$bd}. {$imepr} ({$stari_bodovi} -> {$bodovi})<br>"; } } else { $q50 = myquery("UPDATE prosliciklus_uspjeh SET opci_uspjeh={$bodovi} WHERE osoba={$osoba}"); } } } if ($fakatradi == "da") { ?> Završeno!<br /> <br /> <a href="?sta=admin/prijemni">Nazad</a> <?php } else { if ($greska == 0) { ?> <?php echo genform("POST"); ?> <input type="hidden" name="fakatradi" value="da"> <input type="submit" value=" Kreni! "> </form> <?php } } } else { if ($_GET["akcija"] == "spisak") { $termin = intval($_REQUEST['termin']); $q = myquery("SELECT o.id, o.ime, o.prezime, s.kratkinaziv, po.sifra FROM `prijemni_obrazac` as po, osoba as o, prijemni_prijava as pp, studij as s WHERE po.osoba=o.id and po.prijemni_termin={$termin} and pp.osoba=o.id and pp.prijemni_termin={$termin} and pp.studij_prvi=s.id order by o.prezime, o.ime"); ?> <table border="1" cellspacing="0"> <tr><th>Zamger ID</th><th>Ime</th><th>Prezime</th><th>Studij</th><th>Šifra</th></tr> <?php while ($r = mysql_fetch_row($q)) { ?> <tr><td><?php echo $r[0]; ?> </td><td><?php echo $r[1]; ?> </td><td><?php echo $r[2]; ?> </td><td><?php echo $r[3]; ?> </td><td><?php echo $r[4]; ?> </td> </tr> <?php } print "</table>"; } else { ?> <p> </p> <h3>Prijemni</h3> <ul><li>Rekalkulacija bodova:<br/> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="recalc"> <select name="prijemni_termin"> <?php $q100 = 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 ag.id DESC, pt.datum DESC"); while ($r100 = mysql_fetch_row($q100)) { print "<option value=\"{$r100['0']}\">{$r100['3']}. ciklus, " . date("d.m.Y", $r100[2]) . " ({$r100['1']})</option>\n"; } ?> </select><br> Od: <input type="text" size="3" name="od"> Do: <input type="text" size="3" name="do"> <input type="submit" value=" Kreni! "> </form> </ul> <hr> <?php echo genform("POST"); ?> <h3>Spisak imena sa šiframa</h3> <a href="?sta=admin/prijemni&akcija=spisak&termin=25">Spisak za 2012. 2 ciklus</a> </form> <?php } } }
function student_potvrda() { global $userid; $akcija = $_REQUEST['akcija']; if ($akcija == "odustani") { $id = intval($_REQUEST['id']); $q300 = myquery("SELECT COUNT(*) FROM zahtjev_za_potvrdu WHERE id={$id} AND student={$userid}"); if (mysql_num_rows($q300) < 1) { niceerror("Neispravan zahtjev"); return; } $q310 = myquery("DELETE FROM zahtjev_za_potvrdu WHERE id={$id}"); nicemessage("Odustali ste od zahtjeva"); zamgerlog("odustao od zahtjeva za potvrdu {$id}", 2); zamgerlog2("odustao od zahtjeva za potvrdu", $id); } if ($akcija == "novi") { $tip_potvrde = intval($_REQUEST['tip_potvrde']); $svrha_potvrde = intval($_REQUEST['svrha_potvrde']); $q320 = myquery("INSERT INTO zahtjev_za_potvrdu SET student={$userid}, tip_potvrde={$tip_potvrde}, svrha_potvrde={$svrha_potvrde}, datum_zahtjeva=NOW(), status=1"); $id = intval(mysql_insert_id()); nicemessage("Zahtjev prihvaćen i čeka na obradu"); zamgerlog("uputio novi zahtjev za potvrdu {$id}", 2); zamgerlog2("uputio novi zahtjev za potvrdu", $id); ?> <script language="JavaScript"> location.href='?sta=student/potvrda'; </script> <?php return; } // Naslov ?> <h3>Zahtjev za izdavanje ovjerenog uvjerenja</h3> <p>Vaši aktuelni zahtjevi:</p> <?php $q100 = myquery("SELECT zzp.id, tp.id, tp.naziv, zzp.svrha_potvrde, UNIX_TIMESTAMP(zzp.datum_zahtjeva), zzp.status FROM zahtjev_za_potvrdu as zzp, tip_potvrde as tp WHERE zzp.student={$userid} and zzp.tip_potvrde=tp.id"); if (mysql_num_rows($q100) == 0) { print "<p>Nema otvorenih zahtjeva</p>\n"; } else { print "<ul>"; } while ($r100 = mysql_fetch_row($q100)) { print "<li>{$r100['2']}<br>\n"; if ($r100[1] == 1) { $q110 = myquery("SELECT naziv FROM svrha_potvrde WHERE id={$r100['3']}"); print "(u svrhu: " . mysql_result($q110, 0, 0) . ")<br>\n"; } print "Datum i vrijeme zahtjeva: " . date("d.m.Y. H:i:s", $r100[4]) . "<br>\n"; if ($r100[5] == 1) { print "Status zahtjeva: <font color=\"red\"><b>čeka na obradu</b></font><br>\n"; } else { print "Status zahtjeva: <font color=\"green\"><b>obrađen</b></font>\n"; } if ($r100[1] == 1) { print "<a href=\"?sta=izvjestaj/potvrda&student={$userid}&svrha={$r100['3']}\">pogledaj uvjerenje</a> "; } else { print "<a href=\"?sta=izvjestaj/index2&student={$userid}\">pogledaj uvjerenje</a> "; } if ($r100[5] == 1) { print "* <a href=\"?sta=student/potvrda&akcija=odustani&id={$r100['0']}\">odustani od zahtjeva</a>\n"; } print "</li>\n"; } if (mysql_num_rows($q100) > 0) { print "</ul>\n"; } ?> <p> </p> <p><b>Novi zahtjev:</b></p> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="novi"> Tip uvjerenja/potvrde: <select name="tip_potvrde"> <?php $q200 = myquery("SELECT id, naziv FROM tip_potvrde"); while ($r200 = mysql_fetch_row($q200)) { print "<option value=\"{$r200['0']}\">{$r200['1']}</option>\n"; } ?> </select><br> Izdaje se u svrhu: <select name="svrha_potvrde"> <?php $q210 = myquery("SELECT id, naziv FROM svrha_potvrde"); while ($r210 = mysql_fetch_row($q210)) { print "<option value=\"{$r210['0']}\">{$r210['1']}</option>\n"; } ?> </select><br><br> <input type="submit" value=" Pošalji zahtjev "> </form> <?php }
function studentska_plan_studija() { global $userid, $user_siteadmin, $user_studentska; // Provjera privilegija if (!$user_studentska && !$user_siteadmin) { zamgerlog("nije studentska", 3); // 3: error biguglyerror("Pristup nije dozvoljen."); return; } // Konfigurabilna sekcija define('BROJ_SEMESTARA', 10); if (isset($_POST['max_izbornih']) and $_POST['max_izbornih'] > 0) { define('MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU', $_POST['max_izbornih']); } else { define('MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU', 6); } $max_izbornih = intval($_POST['max_izbornih']); if (isset($_POST['max_predmeta']) and $_POST['max_predmeta'] > 0) { define('MAX_BROJ_PREDMETA_PO_SEMESTRU', $_POST['max_predmeta']); } else { define('MAX_BROJ_PREDMETA_PO_SEMESTRU', 6); } $max_predmeta = intval($_POST['max_predmeta']); if (isset($_POST['max_broj_slotova']) and $_POST['max_broj_slotova'] > 0) { define('MAX_BROJ_SLOTOVA_PO_SEMESTRU', $_POST['max_broj_slotova']); } else { define('MAX_BROJ_SLOTOVA_PO_SEMESTRU', 6); } $max_predmeta = intval($_POST['max_broj_slotova']); // Formiraj niz semestara $data_semestar = array(); $data_semestar[] = 'I'; $data_semestar[] = 'II'; $data_semestar[] = 'III'; $data_semestar[] = 'IV'; $data_semestar[] = 'V'; $data_semestar[] = 'VI'; $data_semestar[] = 'VII'; $data_semestar[] = 'VIII'; $data_semestar[] = 'IX'; $data_semestar[] = 'X'; // Ucitaj podatke o studijima $data_studij = array(); $data_zavrsni_semestar = array(); $sql_studij = " SELECT id, naziv, zavrsni_semestar FROM `studij` "; $query_studij = myquery($sql_studij); if (mysql_num_rows($query_studij) > 0) { while ($row = mysql_fetch_array($query_studij)) { $data_studij[$row['id']] = $row['naziv']; $data_zavrsni_semestar[$row['id']] = $row['zavrsni_semestar']; } } else { niceerror('Nema podataka o studijima'); exit; } //Ucitaj podatke o akademskoj godini<br /> $data_akademska_godina = array(); $sql_akademska_godina = " SELECT id, naziv FROM `akademska_godina` "; $query_akademska_godina = myquery($sql_akademska_godina); if (mysql_num_rows($query_akademska_godina) > 0) { while ($row = mysql_fetch_array($query_akademska_godina)) { $data_akademska_godina[$row['id']] = $row['naziv']; } } else { niceerror('Nema podataka o akademskim godinama'); exit; } // Podaci o predmetima $data_predmet = array(); $sql_predmet = " SELECT id, naziv FROM `predmet` ORDER BY naziv"; $query_predmet = myquery($sql_predmet); if (mysql_num_rows($query_predmet) > 0) { while ($row = mysql_fetch_array($query_predmet)) { $data_predmet[$row['id']] = $row['naziv']; } } else { niceerror('Nema podataka o predmetima'); exit; } // Varijable, kako bi pokupio POST/GET podatke $get_post_array = array('posted', 'studij', 'akademska_godina'); for ($i = 0; $i < BROJ_SEMESTARA; $i++) { for ($j = 0; $j < MAX_BROJ_PREDMETA_PO_SEMESTRU; $j++) { $get_post_array[] = 'semestar_' . $i . '_predmet_' . $j; } for ($p = 0; $p < MAX_BROJ_SLOTOVA_PO_SEMESTRU; $p++) { for ($j = 0; $j < MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU; $j++) { $get_post_array[] = 'semestar_' . $i . '_izborni_predmet_' . $j . '_slot_' . $p; } } } foreach ($get_post_array as $variable) { ${$variable} = false; if (isset($_POST[$variable])) { ${$variable} = addslashes($_POST[$variable]); } else { if (isset($_GET[$variable])) { ${$variable} = addslashes($_GET[$variable]); } } } //Provjeri je li se desilo da u jednom semestru ima da je neki slot postavljen dva puta ili neki predmet, isto tako provjerava da u 2 razlicita semestra nema istih predmeta $greskaSlotovi = false; if ($studij and $posted) { for ($i = 0; $i < BROJ_SEMESTARA; $i++) { $niz = array(); for ($j = 0; $j < MAX_BROJ_PREDMETA_PO_SEMESTRU; $j++) { $varijabla = 'semestar_' . $i . '_predmet_' . $j; if (${$varijabla} == 0) { continue; } $niz[] = ${$varijabla}; } if (count($niz) > count(array_unique($niz))) { $greskaSlotovi = true; } for ($p = 0; $p < MAX_BROJ_SLOTOVA_PO_SEMESTRU; $p++) { $niz = array(); for ($j = 0; $j < MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU; $j++) { $varijabla = 'semestar_' . $i . '_izborni_predmet_' . $j . '_slot_' . $p; if (${$varijabla} == 0) { continue; } $niz[] = ${$varijabla}; } if (count($niz) > count(array_unique($niz))) { $greskaSlotovi = true; } } /*for($k = 0; $k < MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU; $k++){ for($p = 0; $p < MAX_BROJ_SLOTOVA_PO_SEMESTRU; $p++){ $varijabla = 'semestar_'.$i.'_izborni_predmet_'.$k.'_slot_'.$p; if($$varijabla == 0) continue; $niz[] = $$varijabla; } } if(count($niz) > count(array_unique($niz))){ $greskaSlotovi = true; }*/ } $niz = array(); for ($p = 0; $p < MAX_BROJ_PREDMETA_PO_SEMESTRU; $p++) { for ($i = 0; $i < BROJ_SEMESTARA; $i++) { $varijabla = 'semestar_' . $i . '_predmet_' . $p; if (${$varijabla} == 0) { continue; } $niz[] = ${$varijabla}; } } if (count($niz) > count(array_unique($niz))) { $greskaSlotovi = true; } if ($greskaSlotovi) { $posted = false; } } //FORMA 1: Odabir godine i studija if (!$studij) { // Spremi odgovarajucu formu ?> <p><h3>Izaberi studij</h3></p> <table align="center" border="1" width="80%" style="border-style:solid;"> <tr><td style="border:1px solid #ffffff; background:#ffffff; font-weight: bold;">Izaberi studij</td></tr> <tr><td> <?php echo genform("POST"); ?> <table align="center" border="0" width="100%"> <?php // Odabir naziva studija ?> <tr style="padding-left: 30px; border-bottom: 1px solid #cecfce;"><td>Studij</td> <td><select name="studij"> <?php foreach ($data_studij as $id => $naziv) { ?> <option value="<?php echo $id; ?> "><?php echo $naziv; ?> </option> <?php } ?> </select></td> </tr> <?php // Odabir naziva akademske godine ?> <tr style="padding-left: 30px; border-bottom: 1px solid #cecfce;"><td>Akademska godina</td> <td><select name="akademska_godina"> <?php foreach ($data_akademska_godina as $id => $naziv) { ?> <option value="<?php echo $id; ?> "><?php echo $naziv; ?> </option> <?php } ?> </select></td> </tr> <tr><td>Max. broj obaveznih predmeta u semetru:</td><td> <input type="text" name="max_predmeta" value="<?php echo MAX_BROJ_PREDMETA_PO_SEMESTRU; ?> "> </td></tr> <tr><td>Max. broj slotova u semetru:</td><td> <input type="text" name="max_broj_slotova" value="<?php echo MAX_BROJ_SLOTOVA_PO_SEMESTRU; ?> "> </td></tr> <tr><td>Max. broj izbornih predmeta u slotu:</td><td> <input type="text" name="max_izbornih" value="<?php echo MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU; ?> "> </td></tr> <?php // Submit input ?> <tr><td></td> <td> <input type="submit" value="Kreiraj plan studija"> </td> </tr> </table> </form> </td> </tr> </table> <?php //FORMA 2: Kreiranje studija (definisanje predmeta) } else { if (!$posted) { ?> <p><h3>Kreiranje plana studija</h3></p> <?php $sql_pretraga_id = "SELECT * FROM `plan_studija` WHERE `godina_vazenja` = '{$akademska_godina}' and `studij` = '{$studij}'"; $rez = myquery($sql_pretraga_id); if (mysql_num_rows($rez) > 0) { //Izbacivanje greske u slučaju da vec plan postoji u bazi ?> <table align="center" border="1" width="60%" style="border-style:solid;"> <tr><td style="border:1px solid #ffffff; background:#ffffff; font-weight: bold;"> <font color="#FF0000">Plan već postoji u bazi, ukoliko želite izmjeniti plan to možete uraditi u formi ispod, ukoliko želite vidjeti plan kliknite na ok.</font> </td></tr> </table> <?php } // Spremi odgovarajucu formu ?> <?php echo genform("POST"); ?> <input type="hidden" name="posted" value="1"> <input type="hidden" name="studij" value="<?php echo $studij; ?> "> <input type="hidden" name="akademska_godina" value="<?php echo $_POST['akademska_godina']; ?> "> <input type="hidden" name="max_predmeta" value="<?php echo MAX_BROJ_PREDMETA_PO_SEMESTRU; ?> " > <input type="hidden" name="max_broj_slotova" value="<?php echo MAX_BROJ_SLOTOVA_PO_SEMESTRU; ?> " > <input type="hidden" name="max_izbornih" value="<?php echo MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU; ?> " > <table align="center" border="1" width="60%" style="border-style:solid;"> <tr><td style="border:1px solid #ffffff; background:#ffffff; font-weight: bold;">Kreiranje plana studija (<?php echo $data_studij[$studij]; ?> )</td></tr> <?php if ($greskaSlotovi) { ?> <tr><td style="color:red;"><b>Ne mogu postojati 2 ista slota ili 2 ista predmeta!</b></td></tr> <?php } ?> <tr><td>Ukoliko semestar ima manje predmeta ostavite polja viška prazna (vrijednost "izaberi").</td></tr> <?php // Petlja po semestrima $slot_id = 0; @$slot; for ($i = 0; $i < BROJ_SEMESTARA; $i++) { // Nemaju svi studiji isti broj semestara $broj_semestra = $i + 1; if ($data_zavrsni_semestar[$studij] > 2) { if ($broj_semestra < 1) { continue; } else { if ($broj_semestra > $data_zavrsni_semestar[$studij]) { break; } } } else { if ($broj_semestra > $data_zavrsni_semestar[$studij]) { break; } } ?> <tr><td> <table align="center" border="0" width="100%"> <?php // Reci o kojem se semestru radi ?> <tr style="padding-left: 30px; border-bottom: 1px solid #cecfce;"> <td width="50%"><b>Semestar: <?php echo $data_semestar[$i]; ?> </b><hr></td> <td width="50%"></td> </tr> <?php // Petlja po predmetima $obaveznih_broj = MAX_BROJ_PREDMETA_PO_SEMESTRU; $test_broj_obaveznih = myquery("SELECT COUNT(*) FROM plan_studija WHERE godina_vazenja='{$akademska_godina}' AND studij='{$studij}' AND semestar='{$semestar_i}' AND obavezan='1' LIMIT 1"); if ($test_broj_obaveznih != false and mysql_num_rows($test_broj_obaveznih) == 1) { $test_broj_obaveznih_red = mysql_fetch_row($test_broj_obaveznih); if ($obaveznih_broj < $test_broj_obaveznih_red[0]) { $obaveznih_broj = $test_broj_obaveznih_red[0]; } } $semestar_i = $i + 1; $brojac_izborni = 0; $snimljeni_izborni = array(); $staro_izborni = myquery("SELECT * FROM plan_studija WHERE godina_vazenja='{$akademska_godina}' AND studij='{$studij}' AND semestar='{$semestar_i}' AND obavezan='1'"); while ($red = mysql_fetch_assoc($staro_izborni)) { $snimljeni_izborni[$brojac_izborni] = $red['predmet']; $brojac_izborni++; } for ($j = 0; $j < MAX_BROJ_PREDMETA_PO_SEMESTRU; $j++) { // Odabir predmeta ?> <tr style="padding-left: 30px; border-bottom: 1px solid #cecfce;"><td width="50%">Predmet <?php echo $j + 1; ?> </td> <td width="50%"> <select name="semestar_<?php echo $i; ?> _predmet_<?php echo $j; ?> "> <?php // Po default-u, nije nista odabrano ?> <option value="0" selected>izaberi</option> <?php $a = 0; foreach ($data_predmet as $id => $naziv) { $odabran = ''; if (isset($snimljeni_izborni[$j]) and $snimljeni_izborni[$j] == $id) { $odabran = 'selected="selected"'; } ?> <option value="<?php echo $id; ?> " <?php echo $odabran; ?> ><?php echo $naziv; ?> </option>'; <?php } ?> </select> </td> </tr> <?php } //Petlja po slotovima $izbornih_broj = MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU; //ako vec postoji u bazi da ga ispise u padajucem meniju za izborne predmete for ($m = 0; $m < sizeof($slot); $m++) { for ($n = 0; $n < sizeof($slot[$m]); $n++) { $slot[$m][$n] = 0; } } $brojac_izborni = 0; $snimljeni_izborni = array(); $staro_izborni = myquery("SELECT * FROM plan_studija as p, izborni_slot as i WHERE p.godina_vazenja='{$akademska_godina}' AND p.studij='{$studij}' AND p.semestar='{$semestar_i}' AND p.obavezan='0' AND p.predmet=i.predmet"); while ($red = mysql_fetch_assoc($staro_izborni)) { $snimljeni_izborni[$brojac_izborni] = $red['predmet']; $it = $red['id']; $postoji = 0; for ($k = 0; $k < sizeof($slot); $k++) { if ($it == $slot[$k][0]) { $postoji++; } } if ($postoji == 0) { $upit = myquery("SELECT * FROM izborni_slot WHERE id='{$it}'"); while ($row = mysql_fetch_array($upit)) { $slot[$slot_id][0] = $it; $slot[$slot_id][] = $row['predmet']; } $slot_id++; } $brojac_izborni++; } //echo "slot id ".$slot_id."<br>"; for ($p = 0; $p < MAX_BROJ_SLOTOVA_PO_SEMESTRU; $p++) { ?> <td width="50%"><b>Slot: <?php echo $p + 1; ?> </b><hr></td> <?php // Petlja po predmetima for ($j = 1; $j <= $izbornih_broj; $j++) { // Odabir predmeta ?> <tr style="padding-left: 30px; border-bottom: 1px solid #cecfce;"><td width="50%">Izborni predmet <?php echo $j; ?> </td> <td width="50%"> <select name="semestar_<?php echo $i; ?> _izborni_predmet_<?php echo $j - 1; ?> _slot_<?php echo $p; ?> "> <?php // Po default-u, nije nista odabrano ?> <option value="0" selected>izaberi</option> <?php $a = 0; foreach ($data_predmet as $id => $naziv) { $odabran = ''; if (isset($slot[$p][0]) and $slot[$p][$j] == $id) { $odabran = 'selected="selected"'; } ?> <option value="<?php echo $id; ?> " <?php echo $odabran; ?> ><?php echo $naziv; ?> </option>'; <?php } ?> </select> </td> </tr> <?php } } ?> </table></td></tr> <?php } // Submit input ?> <tr><td align="right" style=" padding-left: 170px; border-bottom: 1px solid #cecfce; background-color: #cccccc;"> <input type="submit" value="OK"></td></tr> </table> </form> <?php } else { // FORMA 3: Snimanje plana i stampa // Obrisi stari plan, ako postoji, prije nego ubacis novi $sql_brisi_stari_plan = " DELETE FROM plan_studija "; $sql_brisi_stari_plan .= " WHERE studij = " . $studij; $query = myquery($sql_brisi_stari_plan); $sql_pretraga_id = "SELECT * FROM `plan_studija` WHERE `godina_vazenja` = '{$akademska_godina}' and `studij` = '{$studij}'"; $rez = myquery($sql_pretraga_id); $slot = -1; $brojac = 0; @$slot_id; // Prodji kroz primljene podatke i vidi sta mozes sa njima foreach ($get_post_array as $field) { if (${$field} && $field != 'semestar' && $field != 'posted') { //echo "field jee ".$field; // Inicijalizacija $semestar = 0; $predmet = 0; $obavezan = 1; // Iz imena primljene varijable odredi o kom semestru se radi, vrijednost varijable je predmet $field_name_data = explode('_', $field); if ($field_name_data[0] == 'semestar' && ($field_name_data[2] == 'predmet' || $field_name_data[2] == 'izborni')) { $semestar = $field_name_data[1] + 1; $predmet = ${$field}; } else { continue; } // Da li se radi o izbornom predmetu if ($field_name_data[2] == 'izborni') { $obavezan = 0; } @$sl; if ($field_name_data[5] == 'slot') { $sl = $field_name_data[6]; } // Ubaci red u bazu $sql_insert = " INSERT INTO plan_studija (godina_vazenja, studij, semestar, predmet, obavezan) VALUES "; $sql_insert .= " ({$akademska_godina}, {$studij}, {$semestar}, {$predmet}, {$obavezan}) "; $query = myquery($sql_insert); if ($obavezan == 0) { $novi_id = 0; $izborni_slot_max_id = "SELECT MAX(id) as id from `izborni_slot`"; $query = myquery($izborni_slot_max_id); while ($red = mysql_fetch_assoc($query)) { if ($sl != $slot) { $novi_id = $red['id'] + 1; $slot = $sl; $slot_id[$brojac] = $novi_id; $brojac++; } else { $novi_id = $red['id']; $slot = $sl; } } $sql_insert_slot = "INSERT INTO izborni_slot (id,predmet) VALUES ({$novi_id},{$predmet}) "; $query = myquery($sql_insert_slot); } } } // Citaj iz baze i prikazi $data_plan = array(); $sql_plan = " SELECT studij, semestar, predmet, obavezan FROM `plan_studija` "; $sql_plan .= " ORDER BY studij ASC "; $slot_id = 0; $query_plan = myquery($sql_plan); if (mysql_num_rows($query_plan) > 0) { while ($row = mysql_fetch_array($query_plan)) { $tmp_array = array(); $sem = $data_semestar[$row['semestar'] - 1]; $stud = $data_studij[$row['studij']]; $pr = $row['predmet']; if ($row['obavezan'] == 0) { $predmeti = myquery("SELECT id,predmet FROM izborni_slot WHERE predmet='{$pr}'"); while ($predmet = @mysql_fetch_array($predmeti)) { $sl_id = $predmet['id']; if ($sl_id != $slot_id) { $slot_id = $sl_id; $predmet1 = myquery("SELECT predmet FROM izborni_slot WHERE id='{$sl_id}'"); $tmp_niz = array(); while ($predmet2 = @mysql_fetch_array($predmet1)) { $tmp_niz[] = $data_predmet[$predmet2['predmet']]; } $tmp_array['semestar'] = $sem; $tmp_array['studij'] = $stud; $tmp_array['predmet'] = implode(" / ", $tmp_niz); } } } else { $tmp_array['semestar'] = $sem; $tmp_array['studij'] = $stud; $tmp_array['predmet'] = $data_predmet[$row['predmet']]; } $data_plan[] = $tmp_array; } } else { niceerror('Nema podataka o planu studija'); exit; } // Prikazi plan studija echo listingHtml($data_plan, '80%', 'Plan studija'); } } }
function saradnik_izmjena_studenta() { print "Ne radi"; return; global $userid, $user_siteadmin, $user_studentska; require "lib/manip.php"; // radi ispisa studenta sa predmeta ?> <body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0" bgcolor="#FFFFFF"> <?php $student = intval($_REQUEST['student']); $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // Necemo provjeravati prava pristupa jer je osnovna provjera vec napravljena kroz registry, a prikaz readonly podataka nastavniku koji nije angazovan na predmetu je IMHO ok // Podaci o studentu... $q140 = myquery("select ime,prezime,brindexa from osoba where id={$student}"); if (mysql_num_rows($q140) < 1) { zamgerlog("nepostojeci student (student {$student})", 3); biguglyerror("Nepoznat student"); return; } // Podaci o predmetu $q160 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q160) < 1) { zamgerlog("nepostojeci predmet (predmet {$predmet})", 3); biguglyerror("Nepoznat predmet"); return; } $naziv_predmeta = mysql_result($q160, 0, 0); // Aktuelna akademska godina $q170 = myquery("select naziv from akademska_godina where id={$ag}"); if (mysql_num_rows($q170) < 1) { zamgerlog("nepostojeca ag {$ag}", 3); biguglyerror("Nepoznat predmet"); return; } $agnaziv = mysql_result($q170, 0, 0); // Studij koji student trenutno sluša $q180 = myquery("select s.naziv from student_studij as ss, studij as s where s.id=ss.studij and ss.akademska_godina={$ag} and ss.student={$student}"); if (mysql_num_rows($q180) < 1) { $studij = "Nije upisan niti na jedan studij! ({$agnaziv})"; } else { $studij = mysql_result($q180, 0, 0) . " ({$agnaziv})"; } // Provjera ogranicenja /*$q10 = myquery("select sl.labgrupa from student_labgrupa as sl,labgrupa where sl.student=$student and sl.labgrupa=labgrupa.id and labgrupa.predmet=$predmet"); if (mysql_num_rows($q10)>0) { $labgrupa = mysql_result($q10,0,0); } else { $labgrupa=0; } // Limit... $q20 = myquery("select ogranicenje.labgrupa from ogranicenje, labgrupa where ogranicenje.nastavnik=$userid and ogranicenje.labgrupa=labgrupa.id and labgrupa.predmet=$predmet_id"); if (mysql_num_rows($q20)>0) { $nasao=0; while ($r20 = mysql_fetch_row($q20)) { if ($r20[0] == $labgrupa) { $nasao=1; break; } } if ($nasao == 0) { zamgerlog("ogranicenje (student u$stud_id predmet pp$predmet_id)",3); niceerror("Nemate pravo pristupa labgrupi u kojoj se nalazi ovaj student"); return; } }*/ // Onemogući izmjenu ako prijavljeni korisnik nije nastavnik na predmetu ili siteadmin $izmjena_moguca = 0; if ($user_siteadmin || $user_studentska) { $izmjena_moguca = 1; } else { $q30 = myquery("select count(*) from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_result($q30, 0, 0) > 0) { $izmjena_moguca = 1; } } // TODO: prikaži read-only podatke o studentu if ($izmjena_moguca == 0) { zamgerlog("saradnik/izmjena_studenta: nije moguca izmjena (student u{$student} predmet pp{$predmet})", 3); niceerror("Nemate pravo pristupa ovom studentu!"); return; } // Poziv funkcije za izmjenu if ($_POST['akcija'] == "izmjena" && $izmjena_moguca == 1 && check_csrf_token()) { $labgrupa = _izmijeni_profil($student, $predmet); } // 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 nicemessage("Studen ispisan sa predmeta."); return; } ?> <center><h2>Izmjena ličnih podataka</h2></center> <?php echo genform("POST"); ?> <input type="hidden" name="akcija" value="izmjena"> <table border="0" width="100%"> <tr> <td>DB ID:</td> <td><b><?php echo $student; ?> </b></td> </tr> <tr> <td>Ime:</td> <td><input type="text" name="ime" size="20" value="<?php echo mysql_result($q140, 0, 0); ?> "></td> </tr> <tr> <td>Prezime:</td> <td><input type="text" name="prezime" size="20" value="<?php echo mysql_result($q140, 0, 1); ?> "></td> </tr> <tr> <td>Broj indexa:</td> <td><input type="text" name="brind" size="10" value="<?php echo mysql_result($q140, 0, 2); ?> "></td> </tr> <tr> <td>Upisan na:</td> <td><b><?php echo $studij; ?> </b></td> </tr> <?php // Labgrupe $q150 = myquery("select id,naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=0 order by naziv"); if (mysql_num_rows($q150) > 0) { $q155 = myquery("select l.id, l.naziv from labgrupa as l, student_labgrupa as sl where l.predmet={$predmet} and l.akademska_godina={$ag} and sl.labgrupa=l.id and sl.student={$student} and l.virtualna=0"); if (mysql_num_rows($q155) <= 1) { if (mysql_num_rows($q155) == 0) { $nijedna = " SELECTED"; } else { $nijedna = ""; } ?> <tr> <td>Upiši u grupu:</td> <td><select name="grupa"><option value="0"<?php echo $nijedna; ?> >-- Nije ni u jednoj grupi --</option> <?php while ($r150 = mysql_fetch_row($q150)) { if ($r150[0] == mysql_result($q155, 0, 0)) { $value = "SELECTED"; } else { $value = ""; } ?> <option value="<?php echo $r150[0]; ?> " <?php echo $value; ?> ><?php echo $r150[1]; ?> </option><?php } ?> </select></td> </tr> <?php // } else if (mysql_num_rows($q155)==1) { /*?> <tr> <td>Prebaci u grupu:</td> <td><select name="grupa"><option value="0">-- Nije ni u jednoj grupi --</option> <? while ($r150 = mysql_fetch_row($q150)) { if ($r150[0]==mysql_result($q155,0,0)) $value="SELECTED"; else $value=""; ?><option value="<?=$r150[0]?>" <?=$value?>><?=$r150[1]?></option><? } ?></select></td> </tr> <?*/ } else { ?> <tr> <td>Grupe:</td> <td><?php while ($r155 = mysql_fetch_row($q155)) { print $r155[1]; // Ovo ispod nije implementirano!?! print " <a href=\"?sta=saradnik/izmjena_studenta&akcija=ispis_iz_grupe&grupa={$r155['0']}&student={$student}&predmet={$predmet}\">(ispiši)</a><br/>\n"; } ?> </td> </tr> <?php } } if ($user_siteadmin) { ?> <tr><td colspan="2"><a href="index.php?sta=saradnik/izmjena_studenta&student=<?php echo $student; ?> &predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &akcija=ispis">Ispiši studenta sa predmeta:<br/><b><?php echo $naziv_predmeta; ?> </b></a></td></tr> <?php } if ($user_siteadmin) { // Linkovi za site admina ?> <tr><td colspan="2"><a href="index.php?c=B&sta=studentska/osobe&akcija=edit&osoba=<?php echo $student; ?> " target="openerwindow" onClick="if (document.images) opener.name='openerwindow'">Detaljnije o studentu</a></td></tr> <tr><td colspan="2"><a href="index.php?c=S&su=<?php echo $student; ?> " target="openerwindow" onClick="if (document.images) opener.name='openerwindow'">Prijavi se kao student</a></td></tr> <?php } ?> <tr><td colspan="2"> </td></tr> <tr><td> </td><td> <input type="submit" value=" Pošalji " <?php if ($izmjena_moguca != 1) { print "disabled"; } ?> > <input type="reset" value=" Poništi "> </td></tr> </table> <?php }
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 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 studentska_kreiranje_plana() { global $userid, $user_siteadmin, $user_studentska; if (!$user_studentska && !$user_siteadmin) { zamgerlog("nije studentska", 3); // 3: error zamgerlog2("nije studentska"); // 3: error biguglyerror("Pristup nije dozvoljen."); return; } if (!isset($_REQUEST['create'])) { //crtaj formu ?> <h3 style="margin-left: 30px;">Dodavanje stavke nastavnog plana</h3> <br/> <div style="padding-left: 30px;"> <div style="background-color: #EFEFEF; border-top-width: 1px; border-top-color: coral; border-top-style: solid; border-bottom-width: 1px; border-bottom-color: coral; border-bottom-style: solid; display: table-cell; padding-left: 5px; padding-top: 5px;"> <?php print genform("POST", "createPlan"); //generisi prvu liniju forme ?> <label style="float: left;width: 120px;font-weight: bold;">Godina važenja:</label> <select name="godina_vazenja" class="formElement" id="godina_vazenja" style="width: 250px;margin-bottom: 5px;"> <?php $cnt = 0; $akademske = fetch_ag(); foreach ($akademske as $akg) { $cnt = $cnt + 1; ?> <option value="<?php echo $akg['id']; ?> "><?php echo nl2br($cnt . '.' . $akg['naziv']); ?> </option> <?php } ?> </select> <br /> <label style="float: left;width: 120px;font-weight: bold;">Studij:</label> <select name="studij" class="formElement" id="studij" style="width: 250px;margin-bottom: 5px;"> <?php $cnt = 0; $studiji = fetch_studiji(); foreach ($studiji as $std) { $cnt = $cnt + 1; ?> <option value="<?php echo $std['id']; ?> "><?php echo nl2br($cnt . '.' . $std['naziv']); ?> </option> <?php } ?> </select> <br /> <label style="float: left;width: 120px;font-weight: bold;">Semestar: </label> <input type="text" name="semestar" value="" style="width: 30px;"> <br /> <label style="float: left;width: 120px;font-weight: bold;">Predmet:</label> <select name="predmet" id="predmet" style="width: 250px;margin-bottom: 5px;"> <?php $cnt = 0; $predmeti = fetch_predmeti(); foreach ($predmeti as $prm) { $cnt = $cnt + 1; ?> <option value="<?php echo $prm['id']; ?> "><?php echo nl2br($cnt . '.' . $prm['naziv']); ?> </option> <?php } ?> </select> <input type="checkbox" name="obavezan" id="obavezan"> <span class="smallText"> Obavezan </span> </input> <br /> <input type="submit" name="create" id="submitbutton" value="Potvrdi" style="width:100px;font-weight: bold;"/> </form> </div> </div> <?php } else { //procesiraj formu $errorText = processInsertPlanForm(); if ($errorText == '') { ?> <div style="padding-left: 30px"> <div> <?php nicemessage('Uspješno ste kreirali stavku plana studija.'); ?> <a href="?sta=studentska/plan">PRIKAŽI PLAN</a> <br/><br/> <a href="?sta=studentska/kreiranje_plana">Nazad na kreiranje nove stavke plana</a> </div> </div> <?php } else { niceerror($errorText); $link = "javascript:history.back();"; nicemessage('<a href="' . $link . '">Povratak.</a>'); } } //END of if-else }
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 nastavnik_predmet() { 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 pristupa ovoj opciji"); return; } } $q15 = myquery("SELECT tippredmeta FROM akademska_godina_predmet WHERE akademska_godina={$ag} AND predmet={$predmet}"); $tippredmeta = mysql_result($q15, 0, 0); if ($tippredmeta == 1000) { require "nastavnik/zavrsni.php"; nastavnik_zavrsni(); return; } ?> <p> </p> <p><h3><?php echo $predmet_naziv; ?> - Opcije predmeta</h3></p> <?php // Prikaz angažovanih nastavnika i saradnika ?> <p>Pristup predmetu imaju sljedeći nastavnici i saradnici (slovo N označava da saradnik ima privilegije nastavnika, a slovo S da ima privilegije "super-asistenta"):</p> <ul> <?php $q100 = myquery("select o.ime, o.prezime, np.nivo_pristupa 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"); while ($r100 = mysql_fetch_row($q100)) { if ($r100[2] == "nastavnik") { $dodaj = " (N)"; } else { if ($r100[2] == "super_asistent") { $dodaj = " (S)"; } else { $dodaj = ""; } } print "<li>{$r100['0']} {$r100['1']}{$dodaj}</li>\n"; } ?> </ul> <?php // Click na checkbox za dodavanje modula // Prebaciti na POST? if ($_POST['akcija'] == "set_smodul" && check_csrf_token()) { $smodul = intval($_POST['smodul']); if ($_POST['aktivan'] == 0) { $aktivan = 1; } else { $aktivan = 0; } $q15 = myquery("replace studentski_modul_predmet set predmet={$predmet}, akademska_godina={$ag}, studentski_modul={$smodul}, aktivan={$aktivan}"); if ($aktivan == 1) { zamgerlog("aktiviran studentski modul {$smodul} (predmet pp{$predmet})", 2); // nivo 2: edit zamgerlog2("aktiviran studentski modul", $predmet, $ag, $smodul); } else { zamgerlog("deaktiviran studentski modul {$smodul} (predmet pp{$predmet})", 2); // nivo 2: edit zamgerlog2("deaktiviran studentski modul", $predmet, $ag, $smodul); } } // Opcije predmeta ?> <SCRIPT language="JavaScript"> function upozorenje(smodul,aktivan) { document.smodulakcija.smodul.value=smodul; document.smodulakcija.aktivan.value=aktivan; document.smodulakcija.submit(); } </SCRIPT> <?php unset($_REQUEST['smodul']); unset($_REQUEST['aktivan']); print genform("POST", "smodulakcija"); ?> <input type="hidden" name="akcija" value="set_smodul"> <input type="hidden" name="smodul" value=""> <input type="hidden" name="aktivan" value=""> </form> <p>Izaberite opcije koje želite da učinite dostupnim studentima:<br/> <?php // Studentski moduli koji su aktivirani za ovaj predmet $q20 = myquery("select id, gui_naziv from studentski_modul order by id"); if (mysql_num_rows($q20) < 1) { print "<p>Nijedan modul nije ponuđen.</p>\n"; } while ($r20 = mysql_fetch_row($q20)) { $smodul = $r20[0]; $naziv = $r20[1]; if ($smodul == 6) { continue; } // Onemogućujemo isključenje ankete $q30 = myquery("select aktivan from studentski_modul_predmet where predmet={$predmet} and akademska_godina={$ag} and studentski_modul={$smodul}"); if (mysql_num_rows($q30) < 1 || mysql_result($q30, 0, 0) == 0) { $aktivan = 0; $checked = ""; } else { $aktivan = 1; $checked = "CHECKED"; } ?> <input type="checkbox" onchange="javascript:onclick=upozorenje('<?php echo $smodul; ?> ','<?php echo $aktivan; ?> ')" <?php echo $checked; ?> > <?php echo $naziv; ?> <br/> <?php } }
function student_zadaca() { global $userid, $conf_files_path; require "lib/autotest.php"; // Akcije if ($_REQUEST['akcija'] == "slanje") { akcijaslanje(); return; } // Poslani parametri $zadaca = intval($_REQUEST['zadaca']); $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); 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); // IMA LI AKTIVNIH? // TODO: provjeriti da li je aktivan modul... $q10 = myquery("select count(*) from zadaca where predmet={$predmet} and akademska_godina={$ag} and aktivna=1"); if (mysql_result($q10, 0, 0) == 0) { zamgerlog("nijedna zadaća nije aktivna, predmet pp{$predmet}", 3); zamgerlog2("nijedna zadaca nije aktivna", $predmet); niceerror("Nijedna zadaća nije aktivna"); return; } // ODREĐIVANJE ID ZADAĆE // Da li neko pokušava da spoofa zadaću? if ($zadaca != 0) { $q20 = 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($q20, 0, 0) == 0) { zamgerlog("student nije upisan na predmet (zadaca z{$zadaca})", 3); zamgerlog2("student ne slusa predmet za zadacu", $zadaca); biguglyerror("Ova zadaća nije iz vašeg predmeta"); return; } } // Ili predmet if ($ponudakursa != 0) { $q25 = myquery("select count(*) from student_predmet where student={$userid} and predmet={$ponudakursa}"); if (mysql_result($q25, 0, 0) == 0) { zamgerlog("student nije upisan na predmet (predmet p{$ponudakursa})", 3); zamgerlog2("student ne slusa ponudukursa", $ponudakursa); biguglyerror("Niste upisani na ovaj predmet"); return; } // Odgovarajuci predmet i zadaca if ($zadaca != 0) { $q27 = myquery("select count(*) from zadaca where id={$zadaca} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_result($q27, 0, 0) == 0) { zamgerlog("zadaca i predmet ne odgovaraju (predmet p{$ponudakursa}, zadaca z{$zadaca})", 3); zamgerlog2("zadaca i ponudakursa ne odgovaraju", $ponudakursa, $zadaca); biguglyerror("Ova zadaća nije iz vašeg predmeta"); return; } } } // Nije izabrana konkretna zadaca if ($zadaca == 0) { // Zadnja zadaca na kojoj je radio/la $q30 = myquery("SELECT z.id FROM zadatak as zk, zadaca as z\n\tWHERE z.id=zk.zadaca and z.aktivna=1 and z.rok>curdate() and z.predmet={$predmet} and z.akademska_godina={$ag} and zk.student={$userid}\n\tORDER BY z.id DESC LIMIT 1"); if (mysql_num_rows($q30) > 0) { $zadaca = mysql_result($q30, 0, 0); } else { // Nije radio ni na jednoj od aktivnih zadaca$predmet_id // Daj najstariju aktivnu zadacu $q40 = myquery("select id from zadaca where predmet={$predmet} and akademska_godina={$ag} and rok>curdate() and aktivna=1 order by id limit 1"); if (mysql_num_rows($q40) > 0) { $zadaca = mysql_result($q40, 0, 0); } else { // Ako ni ovdje nema rezultata, znači da je svim // zadaćama istekao rok. Daćemo zadnju zadaću. // Da li ima aktivnih provjerili smo u $q10 $q50 = myquery("select id from zadaca where predmet={$predmet} and akademska_godina={$ag} and aktivna=1 order by id desc limit 1"); $zadaca = mysql_result($q50, 0, 0); } } } // Standardna lokacija zadaca: $lokacijazadaca = "{$conf_files_path}/zadace/{$predmet}-{$ag}/{$userid}/"; // Ove vrijednosti će nam trebati kasnije $q60 = myquery("select naziv,zadataka,UNIX_TIMESTAMP(rok),programskijezik,attachment,dozvoljene_ekstenzije from zadaca where id={$zadaca}"); $naziv = mysql_result($q60, 0, 0); $brojzad = mysql_result($q60, 0, 1); $rok = mysql_result($q60, 0, 2); $jezik = mysql_result($q60, 0, 3); $attachment = mysql_result($q60, 0, 4); $zadaca_dozvoljene_ekstenzije = mysql_result($q60, 0, 5); // ODREĐIVANJE ZADATKA // Poslani parametar: $zadatak = intval($_REQUEST['zadatak']); if ($zadatak == 0) { // Prvi neurađeni zadatak u datoj zadaći // NOTE: subquery $q70 = myquery("select zk.redni_broj from zadatak as zk where zk.student={$userid} and zk.zadaca={$zadaca} and (select count(*) from zadatak as zk2 where zk2.student={$userid} and zk2.zadaca={$zadaca} and zk2.redni_broj=zk.redni_broj)=0 order by zk.redni_broj limit 1"); if (mysql_num_rows($q70) > 0) { $zadatak = mysql_result($q70, 0, 0); } else { $zadatak = $brojzad; } } // Akcije vezane za autotest if ($_REQUEST['akcija'] == "test_detalji") { $test = intval($_REQUEST['test']); // Provjera spoofinga testa $q10 = myquery("SELECT COUNT(*) FROM autotest WHERE id={$test} AND zadaca={$zadaca} AND zadatak={$zadatak}"); if (mysql_result($q10, 0, 0) == 0) { niceerror("Odabrani test nije sa odabrane zadaće."); return; } autotest_detalji($test, $userid, false); return; } if ($_REQUEST['akcija'] == "test_sa_kodom") { if ($attachment) { niceerror("Download zadaće poslane kao attachment sa ugrađenim testnim kodom trenutno nije podržano."); return; } $test = intval($_REQUEST['test']); // Provjera spoofinga testa $q10 = myquery("SELECT COUNT(*) FROM autotest WHERE id={$test} AND zadaca={$zadaca} AND zadatak={$zadatak}"); if (mysql_result($q10, 0, 0) == 0) { niceerror("Odabrani test nije sa odabrane zadaće."); return; } $kod = autotest_sa_kodom($test, $userid, false); ?> <textarea rows="20" cols="80" name="program" wrap="off"><?php echo $kod; ?> </textarea> <?php return; } // NAVIGACIJA print "<br/><br/><center><h1>{$naziv}, Zadatak: {$zadatak}</h1></center>\n"; // 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 --> <center> <table cellspacing="0" cellpadding="2" border="0" id="zadace"> <thead> <tr> <?php ?> <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"); $broj_zadataka = mysql_result($q20, 0, 0); for ($i = 1; $i <= $broj_zadataka; $i++) { ?> <td>Zadatak <?php echo $i; ?> .</td><?php } ?> <td>Rok za slanje</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, UNIX_TIMESTAMP(rok) from zadaca where predmet={$predmet} and akademska_godina={$ag} order by komponenta, id"); while ($r21 = mysql_fetch_row($q21)) { $m_zadaca = $r21[0]; $m_mogucih += $r21[2]; $m_maxzadataka = $r21[3]; ?> <tr> <th><?php echo $r21[1]; ?> </th> <?php for ($m_zadatak = 1; $m_zadatak <= $broj_zadataka; $m_zadatak++) { // Ako tekuća zadaća nema toliko zadataka, ispisujemo blank polje if ($m_zadatak > $m_maxzadataka) { ?> <td> </td><?php continue; } // Uzmi samo rjesenje sa zadnjim IDom $q22 = myquery("select status,bodova,komentar from zadatak where student={$userid} and zadaca={$m_zadaca} and redni_broj={$m_zadatak} order by id desc limit 1"); if ($m_zadaca == $zadaca && $m_zadatak == $zadatak) { $bgcolor = ' bgcolor="#DDDDFF"'; } else { $bgcolor = ""; } if (mysql_num_rows($q22) < 1) { ?> <td <?php echo $bgcolor; ?> ><a href="?sta=student/zadaca&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &zadaca=<?php echo $m_zadaca; ?> &zadatak=<?php echo $m_zadatak; ?> "><img src="images/16x16/zad_novi.png" width="16" height="16" border="0" align="center" title="Novi zadatak" alt="Novi zadatak"></a></td><?php } else { $status = mysql_result($q22, 0, 0); $bodova_zadatak = mysql_result($q22, 0, 1); 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 <?php echo $bgcolor; ?> ><a href="?sta=student/zadaca&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &zadaca=<?php echo $m_zadaca; ?> &zadatak=<?php echo $m_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 if ($r21[4] < time()) { print "<font color=\"red\">"; } print date("d. m. Y. H:i:s", $r21[4]); if ($r21[4] < time()) { print "</font>"; } ?> </td> </tr> <?php } ?> </tbody> </table> </center> <?php // PORUKE I KOMENTARI // Upit za izvjestaj skripte i komentar tutora ?> <br/><br/> <center> <table width="600" border="0"><tr><td> <?php $q110 = myquery("select izvjestaj_skripte, komentar, userid, status, bodova from zadatak where student={$userid} and zadaca={$zadaca} and redni_broj={$zadatak} order by id desc limit 1"); if (mysql_num_rows($q110) > 0) { $poruka = mysql_result($q110, 0, 0); $komentar = mysql_result($q110, 0, 1); $tutor = mysql_result($q110, 0, 2); $status_zadace = mysql_result($q110, 0, 3); $bodova = mysql_result($q110, 0, 4); // Statusni ekran autotest_status_display($userid, $zadaca, $zadatak, false); // Vrijeme slanja - to neće biti isti slog kao onaj koji vraća $q110 jer taj je možda status koji je upisao tutor $q113 = myquery("SELECT UNIX_TIMESTAMP(vrijeme) FROM zadatak WHERE student={$userid} AND userid={$userid} AND zadaca={$zadaca} AND redni_broj={$zadatak} ORDER BY id DESC LIMIT 1"); if (mysql_num_rows($q113) > 0) { ?> <p>Zadatak poslan: <?php echo date("d.m.Y. H:i:s", mysql_result($q113, 0, 0)); ?> </p> <?php } else { ?> <p>Zadatak nije poslan (tutor upisao/la bodove)</p> <?php } // Rezultati automatskog testiranja $nalaz_autotesta = autotest_tabela($userid, $zadaca, $zadatak, false); if ($nalaz_autotesta != "") { print "<p>Rezultati testiranja:</p>\n{$nalaz_autotesta}\n"; } // Poruke i komentari tutora if (preg_match("/\\w/", $poruka)) { $poruka = str_replace("\n", "<br/>\n", $poruka); ?> <p>Poruka kod kompajliranja:<br/><b><?php echo $poruka; ?> </b></p><?php } if (preg_match("/\\w/", $komentar)) { $komentar = str_replace("\n", "<br/>\n", $komentar); // Link za odgovor na komentar $link = ""; if ($tutor > 0) { $q115 = myquery("select a.login,o.ime,o.prezime from auth as a, osoba as o where o.id={$tutor} and a.id=o.id"); $naslov = urlencode("Odgovor na komentar ({$naziv}, Zadatak {$zadatak})"); $tekst = urlencode("> {$komentar}"); $primalac = urlencode(mysql_result($q115, 0, 0) . " (" . mysql_result($q115, 0, 1) . " " . mysql_result($q115, 0, 2) . ")"); $link = " (<a href=\"?sta=common/inbox&akcija=compose&naslov={$naslov}&tekst={$tekst}&primalac={$primalac}\">odgovor</a>)"; } ?> <p>Komentar tutora: <b><?php echo $komentar; ?> </b><?php echo $link; } } // Istek roka za slanje zadace if ($rok <= time()) { print "<p><b>Vrijeme za slanje ove zadaće je isteklo.</b></p>"; // Ovo je onemogućavalo copy&paste u Firefoxu :( //$readonly = "DISABLED"; } else { $readonly = ""; } // FORMA ZA SLANJE if ($attachment) { print "</td></tr></table>\n"; // Attachment $q120 = myquery("select filename,UNIX_TIMESTAMP(vrijeme) from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$userid} order by id desc limit 1"); if (mysql_num_rows($q120) > 0) { $filename = mysql_result($q120, 0, 0); $the_file = "{$lokacijazadaca}/{$zadaca}/{$filename}"; if ($filename && file_exists("{$conf_files_path}/zadace/{$predmet}-{$ag}") && file_exists($the_file)) { // Utvrđujemo stvarno vrijeme slanja $q130 = myquery("SELECT UNIX_TIMESTAMP(vrijeme) from zadatak where zadaca={$zadaca} and redni_broj={$zadatak} and student={$userid} and userid={$userid} order by id desc limit 1"); if (mysql_num_rows($q130) > 0) { $vrijeme = mysql_result($q130, 0, 0); } else { $vrijeme = mysql_result($q120, 0, 1); } $vrijeme = date("d. m. Y. H:i:s", $vrijeme); $velicina = nicesize(filesize($the_file)); $icon = "images/mimetypes/" . getmimeicon($the_file); $dllink = "index.php?sta=common/attachment&zadaca={$zadaca}&zadatak={$zadatak}"; ?> <center><table width="75%" border="1" cellpadding="6" cellspacing="0" bgcolor="#CCCCCC"><tr><td> <a href="<?php echo $dllink; ?> "><img src="<?php echo $icon; ?> " border="0"></a> </td><td> <p>Poslani fajl: <b><a href="<?php echo $dllink; ?> "><?php echo $filename; ?> </a></b><br/> Datum slanja: <b><?php echo $vrijeme; ?> </b><br/> Veličina: <b><?php echo $velicina; ?> </b></p> </td></tr></table></center> <?php print "<p>Ako želite promijeniti datoteku iznad, izaberite novu i kliknite na dugme za slanje:</p>"; } } else { print "<p>Izaberite datoteku koju želite poslati i kliknite na dugme za slanje."; if ($zadaca_dozvoljene_ekstenzije != "") { print " Dozvoljeni su sljedeći tipovi datoteka: <b>{$zadaca_dozvoljene_ekstenzije}</b>."; } print "</p>\n"; } ?> <form action="index.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="sta" value="student/zadaca"> <input type="hidden" name="akcija" value="slanje"> <input type="hidden" name="predmet" value="<?php echo $predmet; ?> "> <input type="hidden" name="ag" value="<?php echo $ag; ?> "> <input type="hidden" name="zadaca" value="<?php echo $zadaca; ?> "> <input type="hidden" name="zadatak" value="<?php echo $zadatak; ?> "> <input type="hidden" name="labgrupa" value="<?php echo $labgrupa; ?> "> <input type="file" name="attachment" size="50"> </center> <p> </p> <?php } else { // Forma $q130 = myquery("select ekstenzija from programskijezik where id={$jezik}"); $ekst = mysql_result($q130, 0, 0); if ($status_zadace == 2) { ?> <p>Zadaća je prepisana i ne može se ponovo poslati</p><?php } else { if ($rok > time()) { ?> <p>Kopirajte vaš zadatak u tekstualno polje ispod:</p> </td></tr></table> <?php } } // Moze li se izbaciti labgrupa ispod? ?> </td></tr></table> <center> <?php echo genform("POST"); ?> <input type="hidden" name="zadaca" value="<?php echo $zadaca; ?> "> <input type="hidden" name="zadatak" value="<?php echo $zadatak; ?> "> <input type="hidden" name="akcija" value="slanje"> <input type="hidden" name="labgrupa" value="<?php echo $labgrupa; ?> "> <textarea rows="20" cols="80" name="program" <?php echo $readonly; ?> wrap="off"><?php $the_file = "{$lokacijazadaca}{$zadaca}/{$zadatak}{$ekst}"; $tekst_zadace = ""; if (file_exists("{$conf_files_path}/zadace/{$predmet}-{$ag}") && file_exists($the_file)) { $tekst_zadace = join("", file($the_file)); } $tekst_zadace = htmlspecialchars($tekst_zadace); print $tekst_zadace; ?> </textarea> </center> <?php } ?> <center><input type="submit" value=" Pošalji zadatak! "></center> </form> <?php }
function admin_log() { global $userid; global $_lv_; // We use form generators $maxlogins = 20; $stardate = intval($_GET['stardate']); if ($stardate == 0) { $q199 = myquery("select id from log order by id desc limit 1"); $stardate = mysql_result($q199, 0, 0) + 1; } $nivo = intval($_GET['nivo']); if ($nivo < 1) { $nivo = 2; } if ($nivo > 4) { $nivo = 4; } $analyze = intval($_REQUEST['analyze']); // Pretraga / filtriranje $pretraga = $_REQUEST['pretraga']; if ($pretraga) { $src = preg_replace("/\\s+/", " ", $pretraga); $src = trim($src); $dijelovi = explode(" ", $src); $query = ""; $filterupita = ""; // Probavamo traziti ime i prezime istovremeno if (count($dijelovi) == 2) { $q100 = myquery("select id from osoba where ime like '%{$dijelovi['0']}%' and prezime like '%{$dijelovi['1']}%'"); if (mysql_num_rows($q100) == 0) { $q100 = myquery("select id from osoba where ime like '%{$dijelovi['1']}%' and prezime like '%{$dijelovi['0']}%'"); } $rezultata = mysql_num_rows($q100); } // Nismo nasli ime i prezime, pokusavamo bilo koji dio if ($rezultata == 0) { foreach ($dijelovi as $dio) { if ($query != "") { $query .= "or "; } $query .= "ime like '%{$dio}%' or prezime like '%{$dio}%' or brindexa like '%{$dio}%' "; if (intval($dio) > 0) { $query .= "or id=" . intval($dio) . " "; } } $q100 = myquery("select id from osoba where ({$query})"); $rezultata = mysql_num_rows($q100); } // Nismo nasli nista, pokusavamo login if ($rezultata == 0) { $query = ""; foreach ($dijelovi as $dio) { if ($query != "") { $query .= "or "; } $query .= "a.login like '%{$dio}%' "; } $q100 = myquery("select o.id from osoba as o, auth as a where ({$query}) and a.id=o.id"); $rezultata = mysql_num_rows($q100); } if ($rezultata > 0) { while ($r100 = mysql_fetch_row($q100)) { if ($filterupita != "") { $filterupita .= " OR "; } $filterupita .= "userid={$r100['0']} OR dogadjaj like '%u{$r100['0']}%'"; if ($rezultata == 1) { $nasaokorisnika = $r100[0]; } // najčešće nađemo tačno jednog... } } // Probavamo predmete if ($rezultata == 0) { $q101 = myquery("select id from predmet where naziv like '%{$src}%' or kratki_naziv='{$src}'"); if (mysql_num_rows($q101) > 0) { $pp = mysql_result($q101, 0, 0); if ($filterupita != "") { $filterupita .= " OR "; } $filterupita .= "dogadjaj like '%pp{$pp}%'"; $q102 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet={$pp} and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r102 = mysql_fetch_row($q102)) { $filterupita .= " OR dogadjaj like '%p{$r102['0']}%'"; } } } // Kraj, dodajemo and if ($filterupita != "") { $filterupita = " AND ({$filterupita})"; } } else { if ($analyze) { $q105 = myquery("select UNIX_TIMESTAMP(vrijeme), userid FROM log2 WHERE id={$analyze}"); $vrijeme = mysql_result($q105, 0, 0); $nasaokorisnika = mysql_result($q105, 0, 1); $filterupita = " AND userid={$nasaokorisnika}"; $q106 = myquery("select id from log where vrijeme=FROM_UNIXTIME({$vrijeme}) limit 1"); $stardate = mysql_result($q106, 0, 0) + 100; if ($nasaokorisnika > 0) { $q107 = myquery("SELECT ime, prezime FROM osoba WHERE id={$nasaokorisnika}"); $pretraga = mysql_result($q107, 0, 0) . " " . mysql_result($q107, 0, 1); } else { $pretraga = ""; } $nivo = 1; } } // Izbor nivoa logiranja (JavaScript) ?> <h3>Pregled logova</h3> <p>Izaberite logging nivo:<br/> <?php echo genform("GET"); ?> <table width="100%"><tr> <td><input type="radio" name="nivo" value="1" onchange="document.forms[0].submit()" <?php if ($nivo == 1) { print "CHECKED"; } ?> ><img src="images/16x16/log_info.png" width="16" height="16" align="center"> Posjete stranicama</td> <td><input type="radio" name="nivo" value="2" onchange="document.forms[0].submit()" <?php if ($nivo == 2) { print "CHECKED"; } ?> ><img src="images/16x16/log_edit.png" width="16" height="16" align="center"> Izmjene</td> <td><input type="radio" name="nivo" value="3" onchange="document.forms[0].submit()" <?php if ($nivo == 3) { print "CHECKED"; } ?> ><img src="images/16x16/log_error.png" width="16" height="16" align="center"> Greške</td> <td><input type="radio" name="nivo" value="4" onchange="document.forms[0].submit()" <?php if ($nivo == 4) { print "CHECKED"; } ?> ><img src="images/16x16/log_audit.png" width="16" height="16" align="center"> Kritične izmjene</td> </tr></table> </form> <br/><br/> <center> <form action="index.php" method="GET"> <input type="hidden" name="sta" value="admin/log"> <input type="hidden" name="nivo" value="<?php echo $nivo; ?> "> <input type="text" name="pretraga" size="40" value="<?php echo $pretraga; ?> "> <input type="submit" value=" Traži "> </form> </center> <?php // Skripta daj_stablo se sada nalazi u js/stablo.js, a ukljucena je u index.php // Funkcije koje cachiraju imena korisnika i predmeta function get_user_link($id) { static $users = array(); if (!$users[$id]) { $q20 = myquery("select ime, prezime from osoba where id={$id}"); if (mysql_num_rows($q20) > 0) { $link = "?sta=studentska/osobe&akcija=edit&osoba={$id}"; $users[$id] = "<a href=\"{$link}\" target=\"_new\">" . mysql_result($q20, 0, 0) . " " . mysql_result($q20, 0, 1) . "</a>"; } else { return $id; } } return $users[$id]; } function get_predmet_link($id) { static $aktuelna_ag = 0; // Aktuelna akademska godina if ($aktuelna_ag == 0) { $q35 = myquery("select id from akademska_godina where aktuelna=1 order by id desc"); $aktuelna_ag = mysql_result($q35, 0, 0); } static $predmeti = array(); if (!$predmeti[$id]) { $q30 = myquery("select p.id, p.naziv from ponudakursa as pk, predmet as p where pk.id={$id} and pk.predmet=p.id"); if (mysql_num_rows($q30) > 0) { $predmeti[$id] = "<a href=\"?sta=studentska/predmeti&akcija=edit&predmet=" . mysql_result($q30, 0, 0) . "&ag={$aktuelna_ag}\" target=\"_new\">" . mysql_result($q30, 0, 1) . "</a>"; } else { return $id; } } return $predmeti[$id]; } function get_ppredmet_link($id) { static $aktuelna_ag = 0; // Aktuelna akademska godina if ($aktuelna_ag == 0) { $q35 = myquery("select id from akademska_godina where aktuelna=1 order by id desc"); $aktuelna_ag = mysql_result($q35, 0, 0); } static $predmeti = array(); if (!$predmeti[$id]) { $q40 = myquery("select naziv from predmet where id={$id}"); if (mysql_num_rows($q40) > 0) { $predmeti[$id] = "<a href=\"?sta=studentska/predmeti&akcija=edit&predmet={$id}&ag={$aktuelna_ag}\" target=\"_new\">" . mysql_result($q40, 0, 0) . "</a>"; } else { return $id; } } return $predmeti[$id]; } // Glavni upit i petlja $q10 = myquery("select id, UNIX_TIMESTAMP(vrijeme), userid, dogadjaj, nivo from log where id<{$stardate} and ((nivo>={$nivo} {$filterupita}) or dogadjaj='login') order by id desc"); //$q10 = myquery ("select id, UNIX_TIMESTAMP(vrijeme), userid, dogadjaj, nivo from log where id<$stardate and (nivo>=$nivo $filterupita) order by id desc"); $lastlogin = array(); $eventshtml = array(); $logins = 0; $prvidatum = $zadnjidatum = 0; $stardate = 1; while ($r10 = mysql_fetch_row($q10)) { if ($prvidatum == 0) { $prvidatum = $r10[1]; } $zadnjidatum = $r10[1]; $nicedate = " (" . date("d.m.Y. H:i:s", $r10[1]) . ")"; $usr = $r10[2]; // ID korisnika $evt = $r10[3]; // string koji opisuje dogadjaj if ($rezultata == 1 && preg_match("/u{$nasaokorisnika}\\d/", $evt)) { continue; } // kada je ID korisnika kratak, moze se desiti da se javlja unutar eventa if (strlen($evt) > 100) { $evt = substr($evt, 0, 100); } // ne prikazuj login ako je to jedina stavka, ako je nivo veci od 1 ili ako nema pretrage if ($lastlogin[$usr] == 0 && ($nivo == 1 && $pretraga == "" || $evt != "login")) { $lastlogin[$usr] = $r10[0]; $logins++; if ($logins > $maxlogins) { $stardate = $r10[0] + 1; break; // izlaz iz while } } if ($r10[4] == 1) { $nivoimg = "log_info"; } else { if ($r10[4] == 2) { $nivoimg = "log_edit"; } else { if ($r10[4] == 3) { $nivoimg = "log_error"; } else { if ($r10[4] == 4) { $nivoimg = "log_audit"; } } } } // Prepoznavanje određenih elemenata eventa - TAGOVA // Legenda: // uID - korisnik // ppID - predmet // pID - ponudakursa // gID - labgrupa // cID - čas // zID - zadaća // iID - ispit // agID - akademska godina // sID - studij while (preg_match("/\\Wu(\\d+)/", $evt, $m)) { // korisnik $evt = str_replace("u{$m['1']}", get_user_link($m[1]), $evt); $zadnjikorisnik = $m[1]; // Ovo ce omoguciti neke dodatne upite kasnije } while (preg_match("/\\Wpp(\\d+)/", $evt, $m)) { // predmet $evt = str_replace("pp{$m['1']}", get_ppredmet_link($m[1]), $evt); } while (preg_match("/\\Wp(\\d+)/", $evt, $m)) { // ponudakursa $evt = str_replace("p{$m['1']}", get_predmet_link($m[1]), $evt); } while (preg_match("/\\Wg(\\d+)/", $evt, $m)) { // labgrupa $q39 = myquery("select naziv from labgrupa where id={$m['1']}"); if (mysql_num_rows($q39) > 0) { $evt = str_replace("g{$m['1']}", "<a href=\"?sta=saradnik/grupa&id={$m['1']}\" target=\"_blank\">" . mysql_result($q39, 0, 0) . "</a>", $evt); } else { $evt = str_replace("g{$m['1']}", "{$m['1']}", $evt); } } while (preg_match("/\\Wc(\\d+)/", $evt, $m)) { // cas $q40 = myquery("select labgrupa from cas where id={$m['1']}"); if (mysql_num_rows($q40) > 0) { $link = "?sta=saradnik/grupa&id=" . mysql_result($q40, 0, 0); $evt = str_replace("c{$m['1']}", "<a href=\"{$link}\" target=\"_blank\">{$m['1']}</a>", $evt); } else { $evt = str_replace("c{$m['1']}", "{$m['1']}", $evt); } } if (preg_match("/\\Wz(\\d+)/", $evt, $m)) { // zadaca $q50 = myquery("select naziv,predmet,akademska_godina from zadaca where id={$m['1']}"); if (mysql_num_rows($q50) > 0) { $naziv = mysql_result($q50, 0, 0); if (!preg_match("/\\w/", $naziv)) { $naziv = "[Bez imena]"; } $predmet = mysql_result($q50, 0, 1); $ag = mysql_result($q50, 0, 2); if (intval($usr) > 0) { $q55 = myquery("select l.id from student_labgrupa as sl, labgrupa as l where sl.student={$usr} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}"); if (mysql_num_rows($q55) < 1 && $zadnjikorisnik > 0) { $q55 = myquery("select l.id from student_labgrupa as sl, labgrupa as l where sl.student={$zadnjikorisnik} and sl.labgrupa=l.id and l.predmet={$predmet} and l.akademska_godina={$ag}"); } if (mysql_num_rows($q55) < 1) { $q55 = myquery("select id from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=1"); } $link = "?sta=saradnik/grupa&id=" . mysql_result($q55, 0, 0); $evt = str_replace("z{$m['1']}", "<a href=\"{$link}\" target=\"_blank\">{$naziv}</a>", $evt); } } } while (preg_match("/\\Wi(\\d+)/", $evt, $m)) { // ispit $q60 = myquery("select k.gui_naziv, i.predmet, p.naziv, i.akademska_godina from ispit as i, komponenta as k, predmet as p where i.id={$m['1']} and i.komponenta=k.id and i.predmet=p.id"); if (mysql_num_rows($q60) > 0) { $naziv = mysql_result($q60, 0, 0); if (!preg_match("/\\w/", $naziv)) { $naziv = "[Bez imena]"; } $predmet = mysql_result($q60, 0, 1); $predmetnaziv = mysql_result($q60, 0, 2); $ag = mysql_result($q60, 0, 3); $evt = str_replace("i{$m['1']}", "<a href=\"?sta=nastavnik/ispiti&predmet={$predmet}&ag={$ag}\" target=\"_blank\">{$naziv} ({$predmetnaziv})</a>", $evt); } else { $evt = str_replace("i{$m['1']}", "{$m['1']}", $evt); } } while (preg_match("/\\Wag(\\d+)/", $evt, $m)) { // akademska godina $q70 = myquery("select naziv from akademska_godina where id={$m['1']}"); if (mysql_num_rows($q70) > 0) { $naziv = mysql_result($q70, 0, 0); $evt = str_replace("ag{$m['1']}", "{$naziv}", $evt); } else { $evt = str_replace("ag{$m['1']}", "{$m['1']}", $evt); } } while (preg_match("/\\Ws(\\d+)/", $evt, $m)) { // studij $q80 = myquery("select naziv from studij where id={$m['1']}"); if (mysql_num_rows($q80) > 0) { $naziv = mysql_result($q80, 0, 0); $evt = str_replace("s{$m['1']}", "{$naziv}", $evt); } else { $evt = str_replace("s{$m['1']}", "{$m['1']}", $evt); } } // Pošto idemo unazad, login predstavlja kraj zapisa za korisnika if ($evt == "login") { if ($lastlogin[$usr] && $lastlogin[$usr] != 0) { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> login (ID: {$usr}) {$nicedate}\n" . $eventshtml[$lastlogin[$usr]]; $lastlogin[$usr] = 0; } } else { if (strstr($evt, " su=")) { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> SU to ID: {$usr} {$nicedate}\n" . $eventshtml[$lastlogin[$usr]]; $lastlogin[$usr] = 0; } else { $eventshtml[$lastlogin[$usr]] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/{$nivoimg}.png\" width=\"16\" height=\"16\" align=\"center\"> " . $evt . $nicedate . "\n" . $eventshtml[$lastlogin[$usr]]; } } } if ($stardate == 1) { $zadnjidatum = 1; } // Nije doslo do breaka... // Insertujem masovni unos ocjena i rezultata ispita if ($rezultata == 1) { // Konacne ocjene $q300 = myquery("select predmet, ocjena, UNIX_TIMESTAMP(datum) from konacna_ocjena where student={$nasaokorisnika} AND datum>=FROM_UNIXTIME({$zadnjidatum}) AND datum<=FROM_UNIXTIME({$prvidatum})"); while ($r300 = mysql_fetch_row($q300)) { $predmet = $r300[0]; $ocjena = $r300[1]; $datum = $r300[2]; $nicedate = " (" . date("d.m.Y. H:i:s", $datum) . ")"; // Prvo cemo varijantu sa predmetom pa sa ponudom kursa $q310 = myquery("select id from log where dogadjaj='masovno upisane ocjene na predmet pp{$predmet}' and vrijeme=FROM_UNIXTIME({$datum})"); if (mysql_num_rows($q310) > 0) { $eventshtml[mysql_result($q310, 0, 0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovno upisane ocjene na predmet " . get_ppredmet_link($predmet) . " (" . get_user_link($nasaokorisnika) . " dobio: {$ocjena})" . $nicedate . "\n"; } $q320 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet={$predmet} and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r320 = mysql_fetch_row($q320)) { $q310 = myquery("select id from log where dogadjaj='masovno upisane ocjene na predmet p{$r320['0']}' and vrijeme=FROM_UNIXTIME({$datum})"); if (mysql_num_rows($q310) > 0) { $eventshtml[mysql_result($q310, 0, 0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovno upisane ocjene na predmet " . get_ppredmet_link($predmet) . " (" . get_user_link($nasaokorisnika) . " dobio: {$ocjena})" . $nicedate . "\n"; } } } // Isto ovo za ispite $q330 = myquery("select i.predmet, io.ocjena, UNIX_TIMESTAMP(i.vrijemeobjave) from ispit as i, ispitocjene as io where io.student={$nasaokorisnika} AND io.ispit=i.id AND i.datum>=FROM_UNIXTIME({$zadnjidatum}) AND i.datum<=FROM_UNIXTIME({$prvidatum})"); while ($r330 = mysql_fetch_row($q330)) { $predmet = $r330[0]; $ocjena = $r330[1]; $datum = $r330[2]; // Datum je zaokruzen :( // Prvo cemo varijantu sa predmetom pa sa ponudom kursa $q340 = myquery("select id, vrijeme from log where dogadjaj='masovni rezultati ispita za predmet pp{$predmet}' and vrijeme=FROM_UNIXTIME({$datum})"); if (mysql_num_rows($q340) > 0) { $nicedate = " (" . date("d.m.Y. H:i:s", mysql_result($q340, 0, 1)) . ")"; $eventshtml[mysql_result($q340, 0, 0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovni rezultati ispita za predmet " . get_ppredmet_link($predmet) . " (" . get_user_link($nasaokorisnika) . " dobio: {$ocjena})" . $nicedate . "\n"; } $q320 = myquery("select pk.id from ponudakursa as pk, akademska_godina as ag where pk.predmet={$predmet} and pk.akademska_godina=ag.id and ag.aktuelna=1"); while ($r320 = mysql_fetch_row($q320)) { $q340 = myquery("select id, vrijeme from log where dogadjaj='masovni rezultati ispita za predmet p{$r320['0']}' and vrijeme=FROM_UNIXTIME({$datum})"); if (mysql_num_rows($q340) > 0) { $nicedate = " (" . date("d.m.Y. H:i:s", mysql_result($q340, 0, 1)) . ")"; $eventshtml[mysql_result($q340, 0, 0)] = "<br/><img src=\"images/fnord.gif\" width=\"37\" height=\"1\"> <img src=\"images/16x16/log_audit.png\" width=\"16\" height=\"16\" align=\"center\"> masovni rezultati ispita za predmet " . get_ppredmet_link($predmet) . " (" . get_user_link($nasaokorisnika) . " dobio: {$ocjena})" . $nicedate . "\n"; } } } krsort($eventshtml); } // Dodajemo zaglavlja sa [+] poljem (prebaciti iznad) foreach ($eventshtml as $logid => $event) { if (substr($event, 0, 4) != "<img") { // Login počinje sa <br/> // TODO: optimizovati upite! $q201 = myquery("select userid, UNIX_TIMESTAMP(vrijeme) from log where id={$logid}"); $userid = intval(mysql_result($q201, 0, 0)); $nicedate = " (" . date("d.m.Y. H:i:s", mysql_result($q201, 0, 1)) . ")"; if ($userid == 0) { $imeprezime = "ANONIMNI PRISTUPI"; $usrimg = "zad_bug"; } else { $q202 = myquery("select ime, prezime from osoba where id={$userid}"); $imeprezime = mysql_result($q202, 0, 0) . " " . mysql_result($q202, 0, 1); $q203 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='nastavnik'"); $q204 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='studentska'"); $q205 = myquery("select count(*) from privilegije where osoba={$userid} and privilegija='siteadmin'"); if (mysql_result($q205, 0, 0) > 0) { $usrimg = "admin"; } else { if (mysql_result($q204, 0, 0) > 0) { $usrimg = "teta"; } else { if (mysql_result($q203, 0, 0) > 0) { $usrimg = "tutor"; } else { $usrimg = "user"; } } } } $link = "?sta=studentska/osobe&akcija=edit&osoba={$userid}"; print "<img src=\"images/plus.png\" width=\"13\" height=\"13\" id=\"img-{$logid}\" onclick=\"daj_stablo('{$logid}')\">\n<img src=\"images/16x16/{$usrimg}.png\" width=\"16\" height=\"16\" align=\"center\">\n<a href=\"{$link}\">{$imeprezime}</a> {$nicedate}\n<div id=\"{$logid}\" style=\"display:none\">\n"; } print "{$event}</div><br/>\n"; } print "<p> </p><p><a href=\"" . genuri() . "&stardate={$stardate}\">Sljedećih {$maxlogins}</a></p>"; }
function studentska_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 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_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 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 }