*/ /** * Erfragt die BPKs von Personen beim Datenverbund und speichert diese wenn gefunden * Dieses Script sollte nach dem Matrikelnummer Job aufgerufen werden da dieser bereits bpks ermittelt * Dieser Job versucht die BPKs zu holen die nicht automatisch über den Matrikelnummer Job gefunden wurden. */ require_once(dirname(__FILE__).'/../../config/vilesci.config.inc.php'); require_once(dirname(__FILE__).'/../../include/basis_db.class.php'); require_once(dirname(__FILE__).'/../../include/dvb.class.php'); require_once(dirname(__FILE__).'/../../include/benutzerberechtigung.class.php'); require_once(dirname(__FILE__).'/../../include/datum.class.php'); require_once(dirname(__FILE__).'/../../include/errorhandler.class.php'); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); $limit = ''; $debug = false; // Wenn das Script nicht ueber Commandline gestartet wird, muss eine // Authentifizierung stattfinden if (php_sapi_name() != 'cli') { $nl = '
'; // Benutzerdefinierte Variablen laden $user = get_uid(); loadVariables($user); // Berechtigungen pruefen $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); if (!$rechte->isBerechtigt('admin', null, 'suid')) die('Sie haben keine Berechtigung für diese Seite'); if (isset($_GET['debug'])) $debug = ($_GET['debug'] == 'true'?true:false); if (isset($_GET['limit']) && is_numeric($_GET['limit'])) $limit = $_GET['limit']; } else { $nl = "\n"; // Commandline Paramter parsen bei Aufruf ueber Cronjob // zb php matrikelnummer.php --limit 100 --debug true $longopt = array( "limit:", "debug:" ); $commandlineparams = getopt('', $longopt); if (isset($commandlineparams['limit']) && is_numeric($commandlineparams['limit'])) $limit = $commandlineparams['limit']; if (isset($commandlineparams['debug'])) $debug = ($commandlineparams['debug'] == 'true'?true:false); } $webservice = new dvb(DVB_USERNAME, DVB_PASSWORD, $debug); if (defined('BPK_FUER_ALLE_BENUTZER_ABFRAGEN') && BPK_FUER_ALLE_BENUTZER_ABFRAGEN) { $qry = " SELECT distinct person_id, vorname, nachname FROM public.tbl_person JOIN public.tbl_benutzer USING(person_id) WHERE public.tbl_benutzer.aktiv = true AND tbl_person.bpk is null AND gebdatum is not null"; } else { $qry = " SELECT distinct person_id, vorname, nachname FROM public.tbl_person JOIN public.tbl_benutzer USING(person_id) JOIN public.tbl_student ON(tbl_student.student_uid=tbl_benutzer.uid) WHERE public.tbl_benutzer.aktiv = true AND tbl_person.matr_nr is not null AND tbl_person.bpk is null AND studiengang_kz<10000 AND EXISTS(SELECT 1 FROM public.tbl_prestudent WHERE person_id=tbl_person.person_id AND bismelden=true) AND gebdatum is not null"; } if ($limit != '') $qry .= " LIMIT ".$limit; $db = new basis_db(); $cnt = 0; if ($result = $db->db_query($qry)) { while ($row = $db->db_fetch_object($result)) { $cnt++; // Nach jeweils 25 Requests eine Pause einlegen damit die // Anzahl Requests pro Minute nicht überschritten wird if($cnt%25 == 0) sleep(30); echo $nl."Pruefe $row->person_id $row->vorname $row->nachname"; $data = $webservice->getBPK($row->person_id); if (ErrorHandler::isSuccess($data)) { if (ErrorHandler::hasData($data) && isset($data->retval->bpk) && $data->retval->bpk != '') { $person = new person(); if ($person->load($row->person_id)) { $person->bpk = $data->retval->bpk; if ($person->save()) echo ' OK'; else echo ' Failed: '.$person->errormsg; } } else { echo 'Failed: BPK Empty'; } } else echo ' Failed:'.$webservice->errormsg; } } if ($debug) echo $webservice->debug_output;