DIT IS EEN TEST! Er vindt momenteel techisch onderhoud plaats aan het roosterbord en de onderstaande data klopt dus mogelijk niet!

weeknummer: <':'<'); ?>>':'>'); ?>

'%q' AND entity_active IS NOT NULL AND entity_type = $type", $name); if ($type == VAK) $name = substr($name, 1); return ''.make_link_conditional($prev, '<').''.htmlenc($name).''.make_link_conditional($next, '>').''; } $PID = getmypid(); $logsource = "index.php($PID)"; /* een gebruiker wil kennelijk het rooster zien.... */ $min_week_id = mdb2_single_val("SELECT MIN(week_id) FROM roosters"); if ($min_week_id) { $res = mdb2_query("SELECT week FROM weken WHERE week_id >= $min_week_id ORDER BY week_id"); $weken = $res->fetchCol(); $res->free(); } else $weken = array(); /* sanitize the input */ if (!isset($_GET['bw'])) $_GET['bw'] = 'w'; else if ($_GET['bw'] != 'w' && $_GET['bw'] != 'y' && $_GET['bw'] != 'b' && $_GET['bw'] != 'd' && $_GET['bw'] != 'x') $_GET['bw'] = 'w'; $default_week = get_default_week($weken); // calculate default week $week_not_given = 0; if (!isset($_GET['wk']) || !in_array($_GET['wk'], $weken)) { $_GET['wk'] = $default_week; $week_not_given = 1; } if ($_GET['wk'] == NULL) { // berichten $berichten = mdb2_query(<< {$_SERVER['REQUEST_TIME']} AND bericht_visiblefrom <= {$_SERVER['REQUEST_TIME']} ORDER BY bericht_update DESC EOQ ); ?> Roosterbord OVC <? echo(config('SCHOOLJAAR_LONG')) ?>
De roostermakers werken momenteel hard aan het rooster van het nieuwe schooljaar.
0) $prev_week = $weken[$week_index - 1]; if ($week_index < count($weken) - 1) $next_week = $weken[$week_index + 1]; $real_prev_week = $prev_week; if ($prev_week == $default_week) $prev_week = ''; if ($next_week == $default_week) $next_week = ''; if ($safe_week != $_GET['wk']) fatal_error('sanity check failed'); // $_GET['bw'] is already sanitized at this point $link_tail_wowk = '&bw='.$_GET['bw'].'&wk='; if ($safe_week != $default_week) $link_tail = $link_tail_wowk.$safe_week.'">'; else $link_tail = $link_tail_wowk.'">'; if (!isset($_GET['q'])) $_GET['q'] = ''; else $_GET['q'] = trim($_GET['q']); $qs = explode(',', $_GET['q']); //sort($qs); // zoek week_id van deze week, meest actuele basisrooster, bijbehorende wijzigingen $week_info = mdb2_single_array("SELECT week_id, ma, di, wo, do, vr FROM weken WHERE week = $safe_week"); if (!$week_info) fatal_error("impossible, week $safe_week bestaat niet in tabel weken?!?!!?"); $week_id = $week_info[0]; if ($_GET['bw'] != 'x') { $basis = mdb2_single_assoc("SELECT file_id, basis_id, timestamp FROM roosters WHERE week_id <= $week_id AND wijz_id = 0 ORDER BY rooster_id DESC LIMIT 1"); if (!$basis) fatal_error("impossible: toch geen basisrooster in deze week?!?!?!?"); $wijz = mdb2_single_assoc("SELECT file_id, wijz_id, timestamp FROM roosters WHERE week_id = $week_id AND basis_id = {$basis['basis_id']} ORDER BY rooster_id DESC LIMIT 1"); if ($basis['file_id'] == $wijz['file_id'] || !$wijz['file_id']) $wijz['file_id'] = 0; } else { $wijz = mdb2_single_assoc("SELECT file_id, basis_id, timestamp FROM roosters WHERE week_id = $week_id AND wijz_id = 0 ORDER BY rooster_id DESC LIMIT 1"); if (!$wijz) { //fatal_error("impossible: toch geen basisrooster in deze week?!?!?!?, HUMBUG"); $basis = mdb2_single_assoc("SELECT file_id, basis_id, timestamp FROM roosters WHERE week_id <= $week_id AND wijz_id = 0 ORDER BY rooster_id DESC"); $wijz = array(); $wijz['file_id'] = 0; } else { $basis = array(); if ($real_prev_week) { $old_week_id = mdb2_single_val("SELECT week_id FROM weken WHERE week = $real_prev_week LIMIT 1"); $basis = mdb2_single_assoc("SELECT file_id, basis_id, timestamp FROM roosters WHERE week_id <= $old_week_id AND wijz_id = 0 ORDER BY rooster_id DESC"); } } if (!$basis) { $basis['file_id'] = 0; } } //print_r($basis); //print_r($wijz); $result = mdb2_query("SELECT entity_type, entity_id, entity_name FROM entities WHERE entity_name = '%q'", trim($qs[0])); if (!($target = $result->fetchRow()) || ($target[0] == LOKAAL && config('HIDE_ROOMS')) || ($target[0] == LEERLING && config('HIDE_STUDENTS')) ) { // niet gevonden $safe_id = ''; $entity_type = ''; $entity_name = ''; $type = ''; $res_klas = mdb2_query("SELECT entity_name FROM entities WHERE entity_type = ".STAMKLAS.' AND entity_active IS NOT NULL ORDER BY entity_name'); $res_doc = mdb2_query("SELECT entity_name FROM entities WHERE entity_type = ".DOCENT.' AND entity_active IS NOT NULL ORDER BY entity_name'); $res_lok = mdb2_query("SELECT entity_name FROM entities WHERE entity_type = ".LOKAAL.' AND entity_active IS NOT NULL ORDER BY entity_name'); $res_vak = mdb2_query("SELECT entity_name FROM entities WHERE entity_type = ".VAK.' AND entity_active IS NOT NULL ORDER BY entity_name'); $res_cat = mdb2_query("SELECT entity_name FROM entities WHERE entity_type = ".CATEGORIE.' AND entity_active IS NOT NULL ORDER BY entity_name'); // berichten $berichten = mdb2_query(<< {$_SERVER['REQUEST_TIME']} AND bericht_visiblefrom <= {$_SERVER['REQUEST_TIME']} ORDER BY bericht_update DESC EOQ ); goto cont; } else { $entity_type = $target[0]; $entity_name = $target[2]; $safe_id = (int)$target[1]; // is onze entity_id een integer? if ($safe_id != $target[1]) fatal_error('sanity check failed'); // nee?!?!? // berichten $no_berichten = mdb2_single_val(<< {$_SERVER['REQUEST_TIME']} AND bericht_visiblefrom <= {$_SERVER['REQUEST_TIME']} EOQ ); } if ($result->fetchRow()) fatal_error('impossibe'); // meer dan een resultaat?, kan niet! $entity_multiple = 0; while (array_shift($qs) && count($qs)) { // we hebben extra dingen met komma's $result = mdb2_query("SELECT entity_type, entity_id, entity_name FROM entities WHERE entity_name = '%q'", trim($qs[0])); if (($target = $result->fetchRow()) && ($entity_type == $target[0] || ( $entity_type == LESGROEP && $target[0] == STAMKLAS ) || ( $entity_type == STAMKLAS && $target[0] == LESGROEP ))) { // gevonden $safe_id .= ','.$target[1]; $entity_name .= ','.$target[2]; $entity_multiple = 1; } } // sorteer de gekozen entities als het er meer zijn if ($entity_multiple) { $tmp = explode(',', $entity_name); sort($tmp); $entity_name = implode(',', $tmp); } if (isset($_GET['export'])) { if ($entity_type != 0) fatal_error('not implemented'); if ($week_not_given) fatal_error('no week specified'); header('Content-Type: text/plain'); header('Content-Disposition: inline; filename=export.txt;'); $wz = ''; if ($_GET['bw'] == 'b') $file_id = $basis['file_id']; else if ($_GET['bw'] == 'y' && $wijz['file_id']) { $file_id = $wijz['file_id']; $wz = ', '.$wijz['wijz_id'].' file_rev_wijz'; } else fatal_error('impossible mission wijz_file_id='.$wijz['file_id']); $res = mdb2_query(<<getColumnNames(1); echo(implode("\t", $cols)."\n"); while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)) { if (config('HIDE_ROOMS')) $row['lokalen'] = ''; echo(implode("\t", $row)."\n"); } exit; } /* basis_id, prefix, postfix, own, dag, uur, vak, wijz_id */ define('BASIS_ID', 0); define('LESGROEPEN', 1); define('VAKKEN', 2); define('DOCENTEN', 3); define('LOKALEN', 4); define('DAG', 5); define('UUR', 6); define('NOTITIE', 7); define('WIJZ_ID', 8); define('BASIS_ID2', 9); define('LESGROEPEN2', 10); define('VAKKEN2', 11); define('DOCENTEN2', 12); define('LOKALEN2', 13); define('DAG2', 14); define('UUR2', 15); define('NOTITIE2', 16); define('VIS', 17); function rquery_inner($entity_ids, $id1, $id2, $left, $wijz) { //echo("entity_ids = $entity_ids, id1 = $id1, id2 = $id2, left = $left, wijz = $wijz"); if ($entity_ids === '') $entity_ids = 'NULL'; else if (!$entity_ids) return<< 0 THEN 1 ELSE 0 END AS vis, $wijz wijz FROM files2lessen AS f2l JOIN entities2lessen AS e2l ON e2l.les_id = f2l.les_id {$left}JOIN files2lessen AS l2f ON f2l.zermelo_id = l2f.zermelo_id AND l2f.file_id = $id2 LEFT JOIN entities2lessen AS l2e ON l2f.les_id = l2e.les_id AND l2e.entity_id IN ($entity_ids) WHERE f2l.file_id = $id1 AND e2l.entity_id IN ($entity_ids) EOQ; } function rquery($entity_ids, $id1, $id2, $left) { return rquery_inner($entity_ids, $id1, $id2, $left, 0). "\nUNION ALL\n".rquery_inner($entity_ids, $id2, $id1, 'LEFT ', 1); } $multiple_sort = ''; switch ($entity_type) { case LESGROEP: case STAMKLAS: case CATEGORIE: // we maken voor deze lesgroep(en)/stamklas(sen) ook een selectbox met leerlingen $options_name = ', leerlingen: '; $options = ''; if (binnen_school()) { $result2 = mdb2_query(<<fetchRow(MDB2_FETCHMODE_ORDERED)) { $options .= ''."\n"; } } else { $query2 = <<fetchRow()) { $options .= ''."\n"; } } if ($entity_multiple) { $type = 'groepen '.split_links($entity_name); $multiple_sort = ', f_lesgroepen'; } else if ($entity_type == LESGROEP) $type = 'lesgroep '.htmlenc($entity_name); else if ($entity_type == STAMKLAS) $type = 'klas '.entity_prevnext($entity_name, STAMKLAS); else $type = 'categorie '.entity_prevnext($entity_name, CATEGORIE); $result2 = mdb2_query(<<fetchCol(); if (count($entity_ids) && !config('HIDE_STUDENTS')) $safe_id = implode(',', $entity_ids); break; case LEERLING: if ($entity_multiple) { $multiple_sort = ', f_lesgroepen'; $type .= 'onderstaande leerlingen'; $result2 = mdb2_query("SELECT entity_id FROM grp2ppl JOIN entities ON entity_id = lesgroep_id WHERE ppl_id IN ( $safe_id ) AND file_id_basis = {$basis['file_id']}"); while ($row = $result2->fetchRow()) $entity_ids[] = $row[0]; if (binnen_school()) { $lln = mdb2_query(<<'; while (($row = $lln->fetchRow())) { $subscript .= ''; $subscript .= ''.$row[1].''; $grps = mdb2_query("SELECT entity_name FROM grp2ppl JOIN entities ON entities.entity_id = grp2ppl.lesgroep_id WHERE ppl_id = {$row[0]} AND file_id_basis = {$basis['file_id']} ORDER BY entity_type DESC, entity_name"); while (($row2 = $grps->fetchRow())) { $subscript .= ''.make_link($row2[0]).''; } $subscript .= ''; } $subscript .= ''; } else { if (binnen_school()) $type = mdb2_single_val("SELECT name FROM names WHERE entity_id IN ( $safe_id )"); else $type = 'leerling '.htmlenc($entity_name); // we maken voor deze leerling ook een lijst met lesgroepen $result2 = mdb2_query("SELECT entity_id, entity_name FROM grp2ppl JOIN entities ON entity_id = lesgroep_id WHERE ppl_id IN ( $safe_id ) AND file_id_basis = {$basis['file_id']} -- AND entity_type != ".CATEGORIE); $type .= ', groepen: '; $entity_ids = array(); while ($row = $result2->fetchRow()) { $entity_ids[] = $row[0]; $type .= ' '.make_link($row[1]); } } $safe_id = implode(',', $entity_ids); break; case VAK: if ($entity_multiple) $type = 'vakken '.split_links($entity_name); else $type = 'vak '.entity_prevnext($entity_name, VAK); break; case DOCENT: if ($entity_multiple) { $type = 'docenten '.split_links($entity_name); $multiple_sort = ', f_docenten'; } else $type = 'docent '.entity_prevnext($entity_name, DOCENT); break; case LOKAAL: if ($entity_multiple) { $type = 'lokalen '.split_links($entity_name); $multiple_sort = ', f_lokalen'; } else $type = 'lokaal '.entity_prevnext($entity_name, LOKAAL); break; case 0: $type = '*'; if ($_GET['bw'] == 'b' || $_GET['bw'] == 'y') $type .= ' [export]'; $safe_id = NULL; break; default: fatal_error('onmogelijk type'); } //$basis['file_id'] = 7; //$wijz['file_id'] = 8; $subquery = rquery($safe_id, $basis['file_id'], ($_GET['bw'] == 'b')?0:$wijz['file_id'], ($_GET['bw'] == 'y')?'':'LEFT '); //echo($subquery); //$res_test = mdb2_query($subquery); //mdb2_res_table($res_test); $result = mdb2_query(<< {$_SERVER['REQUEST_TIME']} AND bericht_visiblefrom <= {$_SERVER['REQUEST_TIME']} ORDER BY bericht_update DESC EOQ ); } //mdb2_res_table($result); cont: function make_link($target, $text = NULL) { global $link_tail; return '', explode(',', htmlenc($string))); } function add(&$info, $name, $void = '') { global $entity_name; if ($name == $entity_name) return; if ($name == '') { if ($void) $info[] = $void; } else $info[] = make_link($name, enccommabr($name)); } function add_lv(&$info, $lesgroepen, $vak) { global $entity_type, $entity_multiple; if ($entity_type == LEERLING && !$entity_multiple) { if ($vak != '') $info[] = enccommabr($vak); } else { add($info, $lesgroepen); // we laten het vak alleen zien als het niet in de naam van de lesgroep zit if ($vak != '' && !preg_match("/{$vak}[0-9]?\$/", $lesgroepen)) $info[] = enccommabr($vak); } } function show_berichten($entity_type, $entity_multiple, $berichten) { ?>
Selecteer hieronder een klas, docent of lokaal.'); echo('

Klassen:'); while ($row = $res_klas->fetchRow()) echo(' '.make_link($row[0])); echo('

Docenten:'); while ($row = $res_doc->fetchRow()) echo(' '.make_link($row[0])); if (!config('HIDE_ROOMS')) { echo('

Lokalen:'); while ($row = $res_lok->fetchRow()) echo(' '.make_link($row[0])); } echo('

Vakken:'); while ($row = $res_vak->fetchRow()) echo(' '.make_link($row[0], htmlenc(substr($row[0], 1)))); echo('

Categorieën:'); while ($row = $res_cat->fetchRow()) echo(' '.make_link($row[0])); echo('

'."\n"); } else { if ($entity_type == STAMKLAS || $entity_type == LESGROEP || $entity_type == LEERLING) { show_berichten($entity_type, $entity_multiple, $berichten); } ?>

van in week '.$safe_week.'.'); if (($entity_type == LESGROEP || $entity_type == STAMKLAS || $entity_type == CATEGORIE) && !config('HIDE_STUDENTS')) { echo(''.$options_name) ?>
fetchRow(); if ($safe_week < 30) { $year = substr(config('SCHOOLJAAR_LONG'), 5); } else { $year = substr(config('SCHOOLJAAR_LONG'), 0, 4); } $day_in_week = strtotime(sprintf("$year-01-04 + %d weeks", $safe_week - 1)); $thismonday = $day_in_week - ((date('w', $day_in_week) + 6)%7)*24*60*60; ?>

'."\n"); for ($j = 1; $j <= 5; $j++) { echo(''."\n"); } echo(''."\n"); } ?>
ma di wo do vr
'.$i.''); while ($row && $row[DAG] == $j && $row[UUR] == $i) { cleanup_row($row); $extra = ''; $comment = ''; if ($row[WIJZ_ID]) { // deze les is: extra/nieuw, lokaalreservering, (fake)verplaatstvan of gewijzigd if (!$row[DAG2]) { // bij deze les hoort geen oude les, dus: extra, reservering of fakeverplaatstvan if ($row[VAKKEN] == 'lok') { $row[VAKKEN] = ''; $extra = ' lokaalreservering'; if ($row[NOTITIE]) $comment = '(lokaalreservering: '.htmlenc($row[NOTITIE]).')'; else $comment = '(lokaalreservering)'; } else if (preg_match('/^van /', $row[NOTITIE])) { $extra = ' verplaatstvan'; $comment = '('.htmlenc($row[NOTITIE]).')'; } else { $extra = ' extra'; if ($_GET['bw'] == 'x') { $comment = ' (nieuw'; if ($row[NOTITIE] != '') $comment = '(nieuw: '.htmlenc($row[NOTITIE]); } else { $comment = ' (extra'; if ($row[NOTITIE] != '') $comment = '(extra: '.htmlenc($row[NOTITIE]); } $comment .= ')'; } } else { // bij deze les hoort een oude les, dus gewijzigd of verplaatstvan // staat de les op hetzelfde uur en is de oude les zichtbaar in dit rooster? if ($row[UUR] == $row[UUR2] && $row[DAG] == $row[DAG2] && $row[VIS]) { if ($row[LESGROEPEN] != $row[LESGROEPEN2] || $row[VAKKEN] != $row[VAKKEN2] || $row[DOCENTEN] != $row[DOCENTEN2] || $row[LOKALEN] != $row[LOKALEN2]) { $extra = ' gewijzigd'; $comment = '(was '.print_diff($row); if ($row[NOTITIE] != '') $comment .= ', '.htmlenc($row[NOTITIE]); $comment .= ')'; } } else { $extra = ' verplaatstvan'; $comment = '(van '.print_diff($row); if ($row[NOTITIE] != '') $comment .= ', '.htmlenc($row[NOTITIE]); $comment .= ')'; } } } else if ($row[BASIS_ID2] || ($_GET['bw'] == 'x') && $wijz['file_id']) { // dit is uitval,vrijstelling,(fake)verplaatstnaar,gewijzigd if (!$row[DAG2]) { // bij deze les hoort geen nieuwe les, dus uitval/vrijstelling/fakeverplaatstnaar // is deze les al aan de orde geweest bij een verplaatsing? // zo ja, dan skippen we deze les if (isset($dubbel[$row[BASIS_ID]])) { $row = $result->fetchRow(); continue; } else if ($_GET['bw'] == 'd') { // verberg vervallen lessen $row = $result->fetchRow(); continue; } else if (preg_match('/^naar /', $row[NOTITIE2])) { $extra = ' verplaatstnaar'; $comment = '('.htmlenc($row[NOTITIE2]).')'; } else if (preg_match('/^vrij( (.*))?$/', $row[NOTITIE2], $matches)) { $extra = ' vrijstelling'; if ($matches[2] != '') $comment = '(vrijstelling: '.htmlenc($matches[2]).')'; else $comment = '(vrijstelling)'; } else { $extra = ' uitval'; if ($_GET['bw'] == 'x') { $comment = ' (oud'; if ($row[NOTITIE2] != '') $comment = '(oud: '.htmlenc($row[NOTITIE2]); } else { $comment = ' (uitval'; if ($row[NOTITIE2] != '') $comment = '(uitval: '.htmlenc($row[NOTITIE2]); } $comment .= ')'; } } else { // bij deze les hoort een nieuwe les dus gewijzigd of verplaatstnaar $dubbel[$row[BASIS_ID]] = 1; // staat de nieuwe les op dezelfde plek en is deze zichtbaar in dit rooster? if ($row[DAG] == $row[DAG2] && $row[UUR] == $row[UUR2] && $row[VIS]) { $row = $result->fetchRow(); continue; } else if ($_GET['bw'] == 'd') { // verberg verplaatste lessen $row = $result->fetchRow(); continue; } else { $extra = ' verplaatstnaar'; $comment = '(naar '.print_diff($row); if ($row[NOTITIE2] != '') $comment .= ', '.htmlenc($row[NOTITIE2]); $comment .= ')'; } } } else if (!$week_info[$j] && $_GET['bw'] != 'b' && $_GET['bw'] != 'x') { // deze dag valt uit $extra = ' vrijstelling'; $comment = '(vrijstelling)'; } $info = array(); add_lv($info, $row[LESGROEPEN], $row[VAKKEN]); add($info, $row[DOCENTEN], ($row[WIJZ_ID] && $row[DOCENTEN2])?'DOC?':''); add($info, $row[LOKALEN], ($row[WIJZ_ID] && $row[LOKALEN2])?'LOK?':''); echo('
'); if (count($info)) echo('
'.implode('/', $info).'
'); if ($comment) echo('
'.$comment.'
'); echo('
'); $row = $result->fetchRow(); } echo('
Kleurcodes:   oud,   uitval,   gewijzigd,   nieuw,   extra,   verplaatst van,   verplaatst naar,   vrijstelling,   lokaalreservering.

Oud basisrooster Er is geen oud basisrooster , nieuw basisrooster , er is nog geen nieuw basisrooster voor deze week. Update basisrooster , wijzigingen , er zijn geen roosterwijzigingen ingelezen voor deze week. Kijk op voor het actuele rooster.