From 6bb604697901285484b1ec50b3920d6a0c78dec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 7 Nov 2018 09:44:34 +0100 Subject: [PATCH 1/7] =?UTF-8?q?Datenverbund=20-=20Die=20Namenssuche=20verg?= =?UTF-8?q?leicht=20automatisch=20auf=20=C3=9Cbereinstimmung=20und=20ueber?= =?UTF-8?q?nimmt=20die=20Daten=20wenn=20eine=20vollst=C3=A4ndige=20=C3=9Cb?= =?UTF-8?q?ereinstimmung=20gegeben=20ist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/dvb.class.php | 74 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 11 deletions(-) diff --git a/include/dvb.class.php b/include/dvb.class.php index e3eba7162..257fb4ee0 100644 --- a/include/dvb.class.php +++ b/include/dvb.class.php @@ -122,6 +122,30 @@ class dvb extends basis_db return ErrorHandler::error(); } + // Wenn nicht gefunden, wird zusaetzlich noch eine Namenssuche gestartet + if ($matrikelnummer == false || $matrikelnummer == '') + { + $this->debug('Keine Matrikelnummer gefunden -> Suche per Nachname'); + $nachnameresult = $this->existsByNachname($person_id); + if (ErrorHandler::isSuccess($nachnameresult)) + { + if (ErrorHandler::hasData($nachnameresult) + && isset($nachnameresult->retval->matrikelnummer) + && $nachnameresult->retval->matrikelnummer != '') + { + $this->debug('Nachnamensuche erfolgreich'); + $matrikelnummer = $nachnameresult->retval->matrikelnummer; + if(isset($nachnameresult->retval->bpk)) + $bpk = $nachnameresult->retval->bpk; + } + else + { + $this->errormsg = 'Namenssuche ergab nicht eindeutige Treffer -> manuelle Pruefung ist erforderlich'; + return ErrorHandler::error(); + } + } + } + if ($matrikelnummer !== false && $matrikelnummer != '') { // Matrikelnummer wurde gefunden @@ -142,12 +166,6 @@ class dvb extends basis_db } else { - if($this->existsByName($person_id)) - { - $this->errormsg = 'Namenssuche ergab Treffer -> manuelle Pruefung erforderlich'; - return ErrorHandler::error(); - } - if($softrun == true) { $this->errormsg = 'Nicht gefunden Softrun enabled keine Meldung'; @@ -1220,7 +1238,13 @@ class dvb extends basis_db } } - public function existsByName($person_id) + /** + * Prueft ob eine Person aufgrund Nachname und Geburtsdatum gefunden wird + * @param $person_id PersonID der gesuchten Person. + * @return Success wenn gefunden, error wenn nicht gefunden. Hat die Person 100% Uebereinstimmung der Daten + * dann wird auch MatrNr und BPK als Retrun geliefert. + */ + public function existsByNachname($person_id) { $person = new person(); if($person->load($person_id)) @@ -1236,18 +1260,46 @@ class dvb extends basis_db { if(isset($row->vorname) && isset($row->nachname)) { + $this->debug('Eintrag gefunden -> Pruefe Eindeutigkeit'); + // Vorpruefung des Datenverbund if(mb_substr(mb_strtolower($row->vorname),0,5) == mb_substr(mb_strtolower($person->vorname),0,5) && mb_substr(mb_strtolower($row->nachname),0,10) == mb_substr(mb_strtolower($person->nachname),0,10)) { - return true; + // Bei 100% eindeutiger Uebereinstimmung werden die Daten zurueckgeliefert + if (mb_strtolower($row->geschlecht) == mb_strtolower($person->geschlecht) + && $row->staatsangehoerigkeit == $person->staatsbuergerschaft + && mb_strtolower($row->nachname) == mb_strtolower($person->nachname) + && ( + mb_strtolower($row->vorname) == mb_strtolower($person->vorname) + || + mb_strtolower($row->vorname) == mb_strtolower($person->vorname.' '.$person->vornamen) + ) + && $row->matrikelnummer != '' + && count($result->retval->data) == 1 + ) + { + $this->debug('Uebereinstimmung gefunden'); + $retval = new stdClass(); + if(isset($row->bpk) && $row->bpk!='') + $retval->bpk = $row->bpk; + $retval->matrikelnummer = $row->matrikelnummer; + return ErrorHandler::success($retval); + } + else + { + $this->debug('keine 100% Eindeutigkeit gegeben:'.print_r($result->retval->data,true)); + // Uebereinstimmung gefunden aber nicht 100% eindeutig + return ErrorHandler::success(); + } } } } - return false; + $this->debug('Keine Uebereinstimmung per Namenssuche'); + return ErrorHandler::error(); } else { - return false; + return ErrorHandler::error(); } } } @@ -1338,7 +1390,7 @@ class dvb extends basis_db foreach ($domnodes_matrikelnummer as $row) { // MatrikelNr Found - $data->matrikelnr = $row->textContent; + $data->matrikelnummer = $row->textContent; break; } $domnodes_bpk = $row_student->getElementsByTagNameNS($namespace, 'personenkennzeichen'); From be8c45c214f54ff6561ace401a598e39b5d0ecbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 8 Nov 2018 09:33:23 +0100 Subject: [PATCH 2/7] Zusammenlegen von Personen wird nicht verhindert wenn beide Personen die selbe Matrikelnummer eingetragen haben --- vilesci/stammdaten/personen_wartung.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 8153707e0..c449341b8 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -152,7 +152,8 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p } // Wenn beide Personen eine Matr_nr haben, abbrechen - if (($personToDelete_obj->matr_nr != '' && $personToKeep_obj->matr_nr != '')) + if ($personToDelete_obj->matr_nr != '' && $personToKeep_obj->matr_nr != '' + && $personToDelete_obj->matr_nr != $personToKeep_obj->matr_nr) { $msg_error[] = 'Beide Personen haben eine Matrikelnummer und können nicht zusammengelegt werden.
Bitte wenden Sie sich an einen Administrator.'; From d657b2a5ed09d1b5387c7cbf5f60815044ee74ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 8 Nov 2018 18:33:20 +0100 Subject: [PATCH 3/7] =?UTF-8?q?Inaktive=20Personen=20mit=20Lehrauftrag=20w?= =?UTF-8?q?erden=20in=20der=20=C3=9Cbersichtsliste=20rot=20markiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/bis/personal_generateverwendung.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vilesci/bis/personal_generateverwendung.php b/vilesci/bis/personal_generateverwendung.php index 17f44537d..6f06140f3 100644 --- a/vilesci/bis/personal_generateverwendung.php +++ b/vilesci/bis/personal_generateverwendung.php @@ -101,7 +101,7 @@ wird das Ende des Semesters letzten Lehrauftrages herangezogen. $qry = "SELECT ma.* FROM ( SELECT - vorname, nachname, uid, personalnummer, insertamum,anmerkung, + vorname, nachname, uid, personalnummer, insertamum, anmerkung, aktiv, ( SELECT studiensemester_kurzbz FROM ( SELECT @@ -198,6 +198,7 @@ if ($result = $db->db_query($qry)) Nachname Vorname UID + Aktiv Personalnummer Anlagedatum Letzer Lehrauftrag @@ -216,6 +217,7 @@ if ($result = $db->db_query($qry)) '.$db->convert_html_chars($row->nachname).' '.$db->convert_html_chars($row->vorname).' '.$db->convert_html_chars($row->uid).' + '.($db->db_parse_bool($row->aktiv)?'Ja':'Nein').' '.$db->convert_html_chars($row->personalnummer).' '.$db->convert_html_chars($datum_obj->formatDatum($row->insertamum,'d.m.Y')).' '.$db->convert_html_chars($row->letzter_lehrauftrag).' From a71d48f67d0964a03c95f14fc288ad1029896e9d Mon Sep 17 00:00:00 2001 From: Andreas Oesterreicher Date: Fri, 9 Nov 2018 14:59:21 +0100 Subject: [PATCH 4/7] - BIS Check angepasst damit nicht BISrelevante Personen in den Checks nicht aufscheinen - Studentencheck angepasst worduch falsche Fehlermeldungen angezeigt wurden --- system/checkStudenten.php | 4 ++-- vilesci/bis/checkverwendung.php | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/system/checkStudenten.php b/system/checkStudenten.php index 12bad24b8..171cdd690 100644 --- a/system/checkStudenten.php +++ b/system/checkStudenten.php @@ -609,7 +609,7 @@ $text .= "

Studierender hat keine Matrikelnummer

"; $qry = " SELECT - distinct on (person_id) + distinct on (tbl_person.person_id) tbl_student.student_uid, tbl_prestudent.prestudent_id, tbl_prestudent.studiengang_kz as studiengang @@ -618,7 +618,7 @@ FROM JOIN public.tbl_prestudentstatus USING(prestudent_id) JOIN public.tbl_person USING(person_id) JOIN public.tbl_student USING(prestudent_id) - JOIN public.tbl_benutzer USING(person_id) + JOIN public.tbl_benutzer ON(tbl_student.student_uid=tbl_benutzer.uid) WHERE status_kurzbz in('Student', 'Diplomand', 'Absolvent', 'Abbrecher') AND tbl_prestudent.bismelden diff --git a/vilesci/bis/checkverwendung.php b/vilesci/bis/checkverwendung.php index a843d41c6..faf0e500e 100644 --- a/vilesci/bis/checkverwendung.php +++ b/vilesci/bis/checkverwendung.php @@ -241,6 +241,7 @@ $qryall=' JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) WHERE aktiv=false + and bismelden=true AND (ende>now() OR ende IS NULL) GROUP BY uid, nachname, vorname ORDER by nachname, vorname;'; From 04d3fb216773775fc937a892426495d85747579c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 13 Nov 2018 18:02:22 +0100 Subject: [PATCH 5/7] =?UTF-8?q?Datenverbund=20-=20BPK=20Abfrage=20f=C3=BCr?= =?UTF-8?q?=20mehrere=20Eintr=C3=A4ge=20wird=20verz=C3=B6gert=20wenn=20die?= =?UTF-8?q?=20maximale=20Anzahl=20an=20Requests=20pro=20Minute=20erreicht?= =?UTF-8?q?=20wurde=20-=20Manuelle=20Abfrage=20von=20BPKs=20zu=20Datenverb?= =?UTF-8?q?und=20Client=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/dvb.class.php | 14 +++++++++++++- soap/datenverbund_client.php | 21 +++++++++++++++++++++ vilesci/cronjobs/bpk.php | 8 ++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/include/dvb.class.php b/include/dvb.class.php index 257fb4ee0..fb2f97afd 100644 --- a/include/dvb.class.php +++ b/include/dvb.class.php @@ -1117,7 +1117,7 @@ class dvb extends basis_db * @param $strasse Strasse der Person (optional). * @return BPK or false on error. */ - private function pruefeBPK($geburtsdatum, $vorname, $nachname, $geschlecht, $plz = null, $strasse = null) + public function pruefeBPK($geburtsdatum, $vorname, $nachname, $geschlecht, $plz = null, $strasse = null) { if ($this->tokenIsExpired()) { @@ -1211,6 +1211,18 @@ class dvb extends basis_db $dom = new DOMDocument(); $dom->loadXML($response); $namespace = 'http://www.brz.gv.at/datenverbund-unis'; + $domnodes_fehlernummer = $dom->getElementsByTagNameNS($namespace, 'fehlernummer'); + if($domnodes_fehlernummer->length > 0) + { + $fehlercode = $domnodes_fehlernummer->item(0)->textContent; + if($fehlercode == 'ZD00001') + { + // Zu viele Requests pro Minute + $this->debug('Zu viele Requests pro Minute -> Pause'); + sleep(30); + } + } + $domnodes_bpk = $dom->getElementsByTagNameNS($namespace, 'personenkennzeichen'); if($domnodes_bpk->length > 0) { diff --git a/soap/datenverbund_client.php b/soap/datenverbund_client.php index 91245f1a0..4651c9f46 100644 --- a/soap/datenverbund_client.php +++ b/soap/datenverbund_client.php @@ -55,6 +55,7 @@ $matura = filter_input(INPUT_POST, 'matura'); $svnr = filter_input(INPUT_POST, 'svnr'); $ersatzkennzeichen = filter_input(INPUT_POST, 'ersatzkennzeichen'); $person_id = filter_input(INPUT_POST, 'person_id'); +$strasse = filter_input(INPUT_POST, 'strasse'); ?> @@ -78,6 +79,7 @@ $person_id = filter_input(INPUT_POST, 'person_id');
  • Matrikelnummer Vergabe melden
  • Gesamtprozess (Abfrage, ggf Vergabemeldung, Speichern bei Person)
  • BPK ermitteln
  • +
  • BPK ermitteln manuell
  • Portal: ".DVB_PORTAL; @@ -152,6 +154,16 @@ $person_id = filter_input(INPUT_POST, 'person_id'); printrow('person_id', 'PersonID', $person_id); break; + case 'pruefeBPK': + printrow('nachname', 'Nachname', $nachname, '', 255); + printrow('vorname', 'Vorname', $vorname, '', 30); + printrow('geburtsdatum', 'Geburtsdatum', $geburtsdatum, 'Format: YYYYMMDD', 10); + printrow('geschlecht', 'Geschlecht', $geschlecht, 'Format: M | W', 1); + printrow('postleitzahl', 'Postleitzahl', $postleitzahl, 'optional', 10); + printrow('strasse', 'Strasse', $strasse, 'optional', 255); + + break; + default: echo "Unknown action"; break; @@ -296,6 +308,15 @@ if (isset($_REQUEST['submit'])) echo '
    Fehlgeschlagen:'.$dvb->errormsg; break; + case 'pruefeBPK': + $data = $dvb->pruefeBPK($geburtsdatum, $vorname, $nachname, $geschlecht, $postleitzahl, $strasse); + if(ErrorHandler::isSuccess($data)) + { + echo '
    OK BPK: '.$data->retval->bpk; + } + else + echo '
    Fehlgeschlagen:'.$dvb->errormsg; + break; default: echo "Unknown action"; break; diff --git a/vilesci/cronjobs/bpk.php b/vilesci/cronjobs/bpk.php index 7fa7c8355..2d26634e3 100644 --- a/vilesci/cronjobs/bpk.php +++ b/vilesci/cronjobs/bpk.php @@ -85,6 +85,7 @@ $qry = " 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"; @@ -93,10 +94,17 @@ 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)) From 9265f8cced0a522c5b8946454d69686f0571e982 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 14 Nov 2018 17:34:16 +0100 Subject: [PATCH 6/7] made tinymce responsive by default --- application/views/system/messageList.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/views/system/messageList.php b/application/views/system/messageList.php index 11f83bc9c..76c77612a 100644 --- a/application/views/system/messageList.php +++ b/application/views/system/messageList.php @@ -47,7 +47,8 @@ $widthColumn = $msgExists === true ? 8 : 12; autoresize_min_height: 140, autoresize_max_height: 495, //callback to avoid conflict with ajax (for getting body of first message) - init_instance_callback: "initMsgBody" + init_instance_callback: "initMsgBody", + responsive: true }); function initMsgBody() From 8c3e29a93aa526a8f1c566aab2180adca8e50b91 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 14 Nov 2018 17:41:23 +0100 Subject: [PATCH 7/7] added titelpre and titelpost to infocenter details --- .../views/system/infocenter/stammdaten.php | 12 ++++++ system/phrasesupdate.php | 40 +++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/application/views/system/infocenter/stammdaten.php b/application/views/system/infocenter/stammdaten.php index cab839bd9..6681e29d3 100755 --- a/application/views/system/infocenter/stammdaten.php +++ b/application/views/system/infocenter/stammdaten.php @@ -1,6 +1,12 @@
    + titelpre)): ?> + + + + + @@ -10,6 +16,12 @@ + titelpost)): ?> + + + + +
    p->t('person','titelpre')) ?>titelpre ?>
    p->t('person','vorname')) ?> vorname ?> nachname ?>
    p->t('person','titelpost')) ?>titelpost ?>
    p->t('person','geburtsdatum')) ?> diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 210149cfa..636832b5a 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -1845,6 +1845,46 @@ $phrases = array( ) ) ), + array( + 'app' => 'core', + 'category' => 'person', + 'phrase' => 'titelpre', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'TitelPre', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'TitlePre', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'person', + 'phrase' => 'titelpost', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'TitelPost', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'TitlePost', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), //**************** CORE/lehre array(