#!/usr/bin/php 0 && !$entity_ids[0]) array_shift($entity_ids); mdb2_exec($db, "INSERT INTO lessen ( zermelo_id, dag, uur, vakken, docenten, lokalen, lesgroepen ) VALUES ( %i, %i, %i, '%q', '%q', '%q', '%q' )", $zermelo_id, $dag, $uur, $vakken, $docenten, $lokalen, $lesgroepen); $les_id = mdb2_single_val($db, 'SELECT LAST_INSERT_ID()'); foreach ($entity_ids as $entity_id) mdb2_exec($db, "INSERT INTO entities2lessen ( entity_id, les_id ) VALUES ( $entity_id, $les_id )"); } mdb2_exec($db, "INSERT INTO rooster2lessen ( rooster_id, les_id ) VALUES ( $rooster_id, $les_id )"); return $les_id; } function dl_rooster($week, $type) { global $ch, $url; // read rooster, throw first line and last line away $data = curl_rooster_req($ch, $url."?wk=$week&q=*&bw=$type&export"); $lines = explode("\n", $data); array_shift($lines); array_pop($lines); return $lines; } function dl_basisrooster($week, $rooster_id, $basis_id) { global $db; $lines = dl_rooster($week, 'b'); $first = explode("\t", $lines[0]); if ($first[0] != $basis_id) { echo('verkeerde basis_id verwacht '.$basis_id.' krijg '.$first[0]."\n"); return; } //else { echo("juiste basis_id\n"); } foreach ($lines as $line) { $e = explode("\t", $line); add_les($rooster_id, $e[1], $e[2], $e[3], $e[4], $e[5], $e[6], $e[7]); } mdb2_exec($db, "UPDATE weken2roosters SET ok = 1 WHERE rooster_id = $rooster_id"); } function dl_wijzigingen($week, $rooster_id, $basis_id, $wijz_id) { global $db; $lines = dl_rooster($week, 'y'); $first = explode("\t", $lines[0]); if ($first[0] != $basis_id) { echo("verkeerde basis_id $basis_id = {$first[0]}\n"); return; } if ($first[1] != $wijz_id) { echo("verkeerde wijz_id $wijz_id = {$first[1]}\n"); return; } foreach ($lines as $line) { $e = explode("\t", $line); add_les($rooster_id, $e[2], $e[3], $e[4], $e[5], $e[6], $e[7], $e[8]); } mdb2_exec($db, "UPDATE weken2roosters SET ok = 1 WHERE rooster_id = $rooster_id"); } $ch = curl_rooster_init(); $db = mdb2_open($dsn); $res =& mdb2_query($db, 'SELECT entity_name, entity_id, entity_type FROM entities'); $entities = $res->fetchAll(MDB2_FETCHMODE_ORDERED, true); $xpath = curl_rooster_req($ch, $rss); $lbd = xpath_query_expect($xpath, '/rss/channel/lastBuildDate'); #echo('lastBuildDate '.$lbd->item(0)->nodeValue."\n"); $items = $xpath->query('/rss/channel/item'); $length = $items->length; for ($i = $length - 1; $i >= 0; $i--) { $item = $items->item($i); $title = xpath_query_expect($xpath, 'title', $item)->item(0)->nodeValue; preg_match('/^Update (week|basis)rooster voor week (\d+): r(\d+),(\d+) /', $title, $matches); $timestamp = strtotime(xpath_query_expect($xpath, 'pubDate', $item)->item(0)->nodeValue); array_shift($matches); $type = array_shift($matches); $week = array_shift($matches); $basis_id = array_shift($matches); $wijz_id = array_shift($matches); if ($basis_id == 15) continue; //WTF? Testing? // we lezen alleen wijzigingen in van een week, als het juiste basisrooster al is ingelezen if ($wijz_id != 0 && !mdb2_single_val($db, "SELECT week FROM weken2roosters JOIN weken USING (week_id) WHERE basis_id = $basis_id AND wijz_id = 0")) { echo('inlezen '.$type.'rooster '.$basis_id.','.$wijz_id.' van week '.$week.' update '.date("r", $timestamp)." is onmogelijk, want het betreffende basisrooster is er niet\n"); continue; } if (mdb2_single_val($db, "SELECT rooster_id FROM weken2roosters JOIN weken USING (week_id) WHERE week=$week AND basis_id = $basis_id AND wijz_id = $wijz_id") === NULL) { $week_id = mdb2_single_val($db, "SELECT week_id FROM weken WHERE week = $week"); if (!$week_id) fatal_error('week bestaat niet'); mdb2_exec($db, "INSERT INTO weken2roosters ( week_id, basis_id, wijz_id, timestamp ) VALUES ( $week_id, $basis_id, $wijz_id, $timestamp )"); $rooster_id = mdb2_single_val($db, 'SELECT LAST_INSERT_ID()'); echo('inlezen '.$type.'rooster '.$basis_id.','.$wijz_id.' van week '.$week.' update '.date("r", $timestamp)."\n"); if ($wijz_id == 0) dl_basisrooster($week, $rooster_id, $basis_id); else dl_wijzigingen($week, $rooster_id, $basis_id, $wijz_id); } //else echo('hebben we al: '.$type.'rooster '.$basis_id.','.$wijz_id.' van week '.$week.' update '.date("r", $timestamp)."\n"); } ?>