#!/usr/bin/php $data) { echo($name.' ('.count($data).")\n"); } $db = mdb2_open($dsn); $ll2ppl_id = mdb2_all_ordered_rekey($db, "SELECT login, ppl_id, naam0, naam1, naam2 FROM ppl WHERE type = 'leerling'"); $doc2ppl_id = mdb2_all_ordered_rekey($db, "SELECT login, ppl_id, naam0, naam1, naam2 FROM ppl WHERE type = 'personeel'"); $vak2vak_id = mdb2_all_ordered_rekey($db, "SELECT afkorting, vak_id FROM vak"); $grp2grp_id = mdb2_all_ordered_rekey($db, "SELECT naam, grp_id FROM grp WHERE schooljaar = '$schooljaar' AND grp_type_id = 2"); $grp2vak2grp2vak_id = mdb2_all_ordered_rekey($db, "SELECT CONCAT(grp.naam, '/', afkorting), grp2vak_id FROM grp2vak JOIN grp USING (grp_id) JOIN vak USING (vak_id) WHERE schooljaar = '$schooljaar' AND grp_type_id = 2"); $ppl2categorie = array(); echo('fetched stuff from DB'."\n"); // we lopen langs alle leerlingen in ll // - als we een leerling nog niet hebben, dan voegen we die toe // - als we een leerling wel hebben, dan updaten we de naam en maken daar melding van // eerste pass leerlingen, we hebben de leerlingnummers en de ppl_id's nodig om // de stamklassen te kunnen parsen foreach ($sections['LEERLINGEN'] as $leerling) { $naam0 = htmlenc(iconv($input_encoding, "UTF-8", trim($leerling[3]))); $naam1 = htmlenc(iconv($input_encoding, "UTF-8", trim($leerling[1]))); $naam2 = htmlenc(iconv($input_encoding, "UTF-8", trim($leerling[2]))); $login = htmlenc(iconv($input_encoding, "UTF-8", trim($leerling[0]))); //print_r($leerling); //echo($naam2."\n"); //exit; //continue; // hier zorgen we dat gangbare nederlandse tussenvoegsels // in kleine letters komen if (!strcasecmp($naam2, 'van')) $naam2 = 'van'; else if (!strcasecmp($naam2, 'van der')) $naam2 = 'van der'; else if (!strcasecmp($naam2, 'van den')) $naam2 = 'van den'; else if (!strcasecmp($naam2, 'van de')) $naam2 = 'van de'; else if (!strcasecmp($naam2, 'ter')) $naam2 = 'ter'; else if (!strcasecmp($naam2, 'ten')) $naam2 = 'ten'; else if (!strcasecmp($naam2, 'de')) $naam2 = 'de'; else if (!strcasecmp($naam2, 'den')) $naam2 = 'den'; else if (!strcasecmp($naam2, 'van 't')) $naam2 = 'van 't'; if (!isset($ll2ppl_id[$login])) { echo("nieuwe leerling $login $naam0 $naam1 $naam2\n"); mdb2_exec($db, "INSERT INTO ppl ( naam0, naam1, naam2, login, type ) VALUES ( '%q', '%q', '%q', '%q', 'leerling' )", $naam0, $naam1, $naam2, $login); $ppl_id = mdb2_single_val($db, "SELECT LAST_INSERT_ID()"); $ll2ppl_id[$login] = array($ppl_id, $naam0, $naam1, $naam2); } else { // deze leerling hebben we al, kijken of de naam gewijzigd is if (strcmp($ll2ppl_id[$login][1], $naam0) || strcmp($ll2ppl_id[$login][2], $naam1) || strcmp($ll2ppl_id[$login][3], $naam2)) { echo("naamswijziging $login '{$ll2ppl_id[$login][2]} {$ll2ppl_id[$login][3]} {$ll2ppl_id[$login][1]}' -> '$naam1 $naam2 $naam0'\n"); mdb2_exec($db, "UPDATE ppl SET naam0 = '%q', naam1 = '%q', naam2 = '%q' WHERE login = '%q'", $naam0, $naam1, $naam2, $login); $ll2ppl_id[$login][1] = $naam0; $ll2ppl_id[$login][2] = $naam1; $ll2ppl_id[$login][3] = $naam2; } } } foreach ($sections['LEERLINGVERZAMELINGEN'] as $leerlingverzameling) { list($key, $grp) = each($leerlingverzameling); if (isset($grp2grp_id[$grp])) continue; mdb2_exec($db, "INSERT INTO grp ( grp_type_id, schooljaar, naam, stamklas ) VALUES ( 2, '$schooljaar', '%q', 1 )", htmlenc($grp)); $grp2grp_id[$grp] = mdb2_single_val($db, "SELECT LAST_INSERT_ID()"); while (list($key, $leerling) = each($leerlingverzameling)) { if (!isset($ll2ppl_id[$leerling])) die("leerling $leerling is onbekend?!?!?"); mdb2_exec($db, "INSERT INTO ppl2grp ( ppl_id, grp_id ) VALUES ( {$ll2ppl_id[$leerling][0]}, {$grp2grp_id[$grp]} )"); } } foreach ($sections['LEERLINGEN'] as $leerling) { list($key, $login) = each($leerling); $ppl_id = $ll2ppl_id[$login][0]; // skip naam, die hebben we al each($leerling); each($leerling); each($leerling); if ($leerling[4] == '0') continue; // deze leerling heeft geen rooster while (list($key, $entry) = each($leerling)) { $les = explode(',', $entry); $lesgroep = $les[1]; $vak = $les[4]; $docent = $les[2]; if (strpos($lesgroep, '/') !== false) { echo('lesgroep te moeilijk '.$lesgroep.' ll '.$login."\n"); continue; } if ($lesgroep == '') continue; if (preg_match('/^(.*?)\.(.*)$/', $lesgroep, $match)) { if (isset($ppl2categorie[$ppl_id]) && $ppl2categorie[$ppl_id] != $match[1]) die('impossible '.$match[1].' '.$ppl2categorie[$ppl_id]); $ppl2categorie[$ppl_id] = $match[1]; //echo("lblabla {$match[2]}\n"); if (isset($grp2grp_id[$match[2]])) $grp_id = $grp2grp_id[$match[2]]; // stamklas, hebben we al else { if (isset($grp2grp_id[$lesgroep])) $grp_id = $grp2grp_id[$lesgroep]; else { mdb2_exec($db, "INSERT INTO grp ( grp_type_id, schooljaar, naam, stamklas ) VALUES ( 2, '$schooljaar', '%q', 0 )", htmlenc($lesgroep)); $grp_id = $grp2grp_id[$lesgroep] = mdb2_single_val($db, "SELECT LAST_INSERT_ID()"); } mdb2_exec($db, "INSERT IGNORE INTO ppl2grp ( ppl_id, grp_id ) VALUES ( $ppl_id, $grp_id )"); } } else { if (!isset($grp2grp_id[$lesgroep])) die("impossible"); $grp_id = $grp2grp_id[$lesgroep]; } //echo("grp_id=$grp_id\n"); if (strpos($vak, '/') !== false) { echo('vak te moeilijk '.$vak.' ll '.$login."\n"); continue; } if ($vak == '') continue; if (!isset($vak2vak_id[$vak])) { //echo("nieuw vak $vak\n"); mdb2_exec($db, "INSERT INTO vak ( afkorting ) VALUES ( '%q' )", $vak); $vak_id = $vak2vak_id[$vak] = mdb2_single_val($db, "SELECT LAST_INSERT_ID()"); } else $vak_id = $vak2vak_id[$vak]; if (!isset($grp2vak2grp2vak_id[$lesgroep.'/'.$vak])) { //echo("nieuwe grp2vak !\n"); //echo('lesgroep='.$lesgroep.' vak='.$vak."\n"); //print_r($grp2vak2grp2vak_id); mdb2_exec($db, "INSERT IGNORE INTO grp2vak ( grp_id, vak_id ) VALUES ( $grp_id, $vak_id )"); $grp2vak_id = $grp2vak2grp2vak_id[$lesgroep.'/'.$vak] = mdb2_single_val($db, "SELECT LAST_INSERT_ID()"); } else $grp2vak_id = $grp2vak2grp2vak_id[$lesgroep.'/'.$vak]; if (strpos($docent, '/') !== false) { echo('docent te moeilijk '.$docent.' ll '.$login."\n"); continue; } if ($docent == '') continue; if (!isset($doc2ppl_id[$docent])) { //echo("nieuwe docent $docent\n"); mdb2_exec($db, "INSERT INTO ppl ( naam0, naam1, naam2, login, type ) VALUES ( '%q', 'nieuwe docent', '', '%q', 'personeel' )", $docent, $docent); $doc2ppl_id[$docent] = array(mdb2_single_val($db, "SELECT LAST_INSERT_ID()")); $doc_id = $doc2ppl_id[$docent][0]; } else $doc_id = $doc2ppl_id[$docent][0]; mdb2_exec($db, "INSERT IGNORE doc2grp2vak ( ppl_id, grp2vak_id ) VALUES ( $doc_id, $grp2vak_id )"); //print_r($entry); } // exit; } ?>