diff --git a/.gitignore b/.gitignore index 7fdf62e73..fd0397579 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ tests/codeception/_output/* composer.lock bin /tests/codeception/api.suite.yml +/application/logs/ \ No newline at end of file diff --git a/application/controllers/api/v1/content/Dms.php b/application/controllers/api/v1/content/Dms.php index dc200d690..6d37bc5db 100644 --- a/application/controllers/api/v1/content/Dms.php +++ b/application/controllers/api/v1/content/Dms.php @@ -58,7 +58,7 @@ class Dms extends APIv1_Controller /** * */ - private function _getDms($dms_id, $version) + private function _getDms($dms_id, $version = null) { $result = null; @@ -94,27 +94,28 @@ class Dms extends APIv1_Controller */ public function postDms() { - if ($this->_validate($this->post())) + $dms = $this->_parseData($this->post()); + if ($this->_validate($dms)) { - if (isset($this->post()['dms_id'])) + if (isset($dms['dms_id'])) { - if ($this->_saveFileOnUpdate($this->post())) + if ($this->_saveFileOnUpdate($dms)) { - $result = $this->DmsModel->update($this->post()['dms_id'], $this->_dmsFieldsArray($this->post())); + $result = $this->DmsModel->update($dms['dms_id'], $this->_dmsFieldsArray($dms)); if ($result->error == EXIT_SUCCESS) { - $result = $this->DmsModel->updateDmsVersion($this->post()['dms_id'], $this->_dmsVersionFieldsArray($this->post())); + $result = $this->DmsModel->updateDmsVersion($dms['dms_id'], $this->_dmsVersionFieldsArray($dms)); } } } else { - if (($fileName = $this->_saveFileOnInsert($this->post())) !== false) + if (($fileName = $this->_saveFileOnInsert($dms)) !== false) { - $result = $this->DmsModel->insert($this->_dmsFieldsArray($this->post())); + $result = $this->DmsModel->insert($this->_dmsFieldsArray($dms)); if ($result->error == EXIT_SUCCESS) { - $result = $this->DmsModel->insertDmsVersion($this->_dmsVersionFieldsArray($this->post(), $result->retval, $fileName)); + $result = $this->DmsModel->insertDmsVersion($this->_dmsVersionFieldsArray($dms, $result->retval, $fileName)); } } } @@ -189,7 +190,15 @@ class Dms extends APIv1_Controller */ private function _saveFileOnUpdate($dms) { - $result = $this->_getDms($dms['dms_id'], $dms['version']); + if(isset($dms['version'])) + { + $result = $this->_getDms($dms['dms_id'], $dms['version']); + } + else + { + $result = $this->_getDms($dms['dms_id']); + } + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval) && count($result->retval) > 0) { $fileName = DMS_PATH . $result->retval[0]->filename; @@ -265,4 +274,4 @@ class Dms extends APIv1_Controller return true; } -} \ No newline at end of file +} diff --git a/application/controllers/api/v1/person/Kontakt.php b/application/controllers/api/v1/person/Kontakt.php index 799061ce4..180acadb5 100644 --- a/application/controllers/api/v1/person/Kontakt.php +++ b/application/controllers/api/v1/person/Kontakt.php @@ -93,6 +93,22 @@ class Kontakt extends APIv1_Controller } } + public function getOnlyKontaktByPersonID() + { + $person_id = $this->get("person_id"); + + if (isset($person_id)) + { + $result = $this->KontaktModel->loadWhere(array('person_id' => $person_id)); + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } + public function getKontaktByPersonIDKontaktTyp() { $person_id = $this->get("person_id"); diff --git a/application/controllers/api/v1/person/Person.php b/application/controllers/api/v1/person/Person.php index 71edf5ef3..f30352f02 100644 --- a/application/controllers/api/v1/person/Person.php +++ b/application/controllers/api/v1/person/Person.php @@ -69,9 +69,10 @@ class Person extends APIv1_Controller */ public function postPerson() { - $person = $this->_parseData($this->post()); - - if($this->_validate($this->post())) + $person = $this->_parseData($this->post()); + $validation = $this->PersonModel->_validate($this->post()); + + if (is_object($validation) && $validation->error == EXIT_SUCCESS) { if(isset($person['person_id']) && !(is_null($person["person_id"])) && ($person["person_id"] != "")) { @@ -86,7 +87,7 @@ class Person extends APIv1_Controller } else { - $this->response(); + $this->response($validation, REST_Controller::HTTP_OK); } } @@ -109,228 +110,4 @@ class Person extends APIv1_Controller $this->response(); } } - - private function _validate($person = NULL) - { - if (!isset($person)) - { - return false; - } - - //TODO - return true; - - $person['nachname'] = trim($person['nachname']); - $person['vorname'] = trim($person['vorname']); - $person['vornamen'] = trim($person['vornamen']); - $person['anrede'] = trim($person['anrede']); - $person['titelpost'] = trim($person['titelpost']); - $person['titelpre'] = trim($person['titelpre']); - - if (mb_strlen($person['sprache']) > 16) - { - //$this->errormsg = 'Sprache darf nicht laenger als 16 Zeichen sein'; - return false; - } - if (mb_strlen($person['anrede']) > 16) - { - //$this->errormsg = 'Anrede darf nicht laenger als 16 Zeichen sein'; - return false; - } - if (mb_strlen($person['titelpost']) > 32) - { - //$this->errormsg = 'Titelpost darf nicht laenger als 32 Zeichen sein'; - return false; - } - if (mb_strlen($person['titelpre']) > 64) - { - //$this->errormsg = 'Titelpre darf nicht laenger als 64 Zeichen sein'; - return false; - } - if (mb_strlen($person['nachname']) > 64) - { - //$this->errormsg = 'Nachname darf nicht laenger als 64 Zeichen sein'; - return false; - } - if ($person['nachname'] == '' || is_null($person['nachname'])) - { - //$this->errormsg = 'Nachname muss eingegeben werden'; - return false; - } - - if (mb_strlen($person['vorname']) > 32) - { - //$this->errormsg = 'Vorname darf nicht laenger als 32 Zeichen sein'; - return false; - } - if (mb_strlen($person['vornamen']) > 128) - { - //$this->errormsg = 'Vornamen darf nicht laenger als 128 Zeichen sein'; - return false; - } - //ToDo Gebdatum pruefen -> laut bis muss student aelter als 10 Jahre sein - /* if (strlen($person['gebdatum) == 0 || is_null($person['gebdatum)) - { - //$this->errormsg = "Geburtsdatum muss eingegeben werden\n"; - return false; - } */ - if (mb_strlen($person['gebort']) > 128) - { - //$this->errormsg = 'Geburtsort darf nicht laenger als 128 Zeichen sein'; - return false; - } - - if (mb_strlen($person['homepage']) > 256) - { - //$this->errormsg = 'Homepage darf nicht laenger als 256 Zeichen sein'; - return false; - } - if (mb_strlen($person['svnr']) > 16) - { - //$this->errormsg = 'SVNR darf nicht laenger als 16 Zeichen sein'; - return false; - } - - if (mb_strlen($person['matr_nr']) > 32) - { - //$this->errormsg = 'Matrikelnummer darf nicht laenger als 32 Zeichen sein'; - return false; - } - - if ($person['svnr'] != '' && mb_strlen($person['svnr']) != 16 && mb_strlen($person['svnr']) != 10) - { - //$this->errormsg = 'SVNR muss 10 oder 16 Zeichen lang sein'; - return false; - } - - if ($person['svnr'] != '' && mb_strlen($person['svnr']) == 10) - { - //SVNR mit Pruefziffer pruefen - //Die 4. Stelle in der SVNR ist die Pruefziffer - //(Summe von (gewichtung[i]*svnr[i])) modulo 11 ergibt diese Pruefziffer - //Falls nicht, ist die SVNR ungueltig - $gewichtung = array(3, 7, 9, 0, 5, 8, 4, 2, 1, 6); - $erg = 0; - //Quersumme bilden - for ($i = 0; $i < 10; $i++) - { - $erg += $gewichtung[$i] * $person['svnr']{$i}; - } - - if ($person['svnr']{3} != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11 - { - //$this->errormsg = 'SVNR ist ungueltig'; - return false; - } - } - - if ($person['svnr'] != '') - { - //Pruefen ob bereits ein Eintrag mit dieser SVNR vorhanden ist - $qry = "SELECT person_id FROM public.tbl_person WHERE svnr=" . $person['svnr']; - if (db_query($qry)) - { - if ($row = db_fetch_object()) - { - if ($row->person_id != $person['person_id']) - { - //$this->errormsg = 'Es existiert bereits eine Person mit dieser SVNR! Daten wurden NICHT gepeichert.'; - return false; - } - } - } - } - - if (mb_strlen($person['ersatzkennzeichen']) > 10) - { - //$this->errormsg = 'Ersatzkennzeichen darf nicht laenger als 10 Zeichen sein'; - return false; - } - if (mb_strlen($person['familienstand']) > 1) - { - //$this->errormsg = 'Familienstand ist ungueltig'; - return false; - } - if ($person['anzahlkinder'] != '' && !is_numeric($person['anzahlkinder'])) - { - //$this->errormsg = 'Anzahl der Kinder ist ungueltig'; - return false; - } - if ($person['aktiv'] != "t" && $person['aktiv'] != "f") - { - //$this->errormsg = 'Aktiv ist ungueltig'; - return false; - } - if (!isset($person['person_id']) && mb_strlen($person['insertvon']) > 32) - { - //$this->errormsg = 'Insertvon darf nicht laenger als 32 Zeichen sein'; - return false; - } - if (mb_strlen($person['updatevon']) > 32) - { - //$this->errormsg = 'Updatevon darf nicht laenger als 32 Zeichen sein'; - return false; - } - /*if ($person['ext_id'] != '' && !is_numeric($person['ext_id'])) - { - //$this->errormsg = 'Ext_ID ist keine gueltige Zahl'; - return false; - }*/ - if (mb_strlen($person['geschlecht']) > 1) - { - //$this->errormsg = 'Geschlecht darf nicht laenger als 1 Zeichen sein'; - return false; - } - if (mb_strlen($person['geburtsnation']) > 3) - { - //$this->errormsg = 'Geburtsnation darf nicht laenger als 3 Zeichen sein'; - return false; - } - if (mb_strlen($person['staatsbuergerschaft']) > 3) - { - //$this->errormsg = 'Staatsbuergerschaft darf nicht laenger als 3 Zeichen sein'; - return false; - } - if ($person['geschlecht'] != 'm' && $person['geschlecht'] != 'w' && $person['geschlecht'] != 'u') - { - //$this->errormsg = 'Geschlecht muss w, m oder u sein!'; - return false; - } - - //Pruefen ob das Geburtsdatum mit der SVNR uebereinstimmt. - if ($person['svnr'] != '' && $person['gebdatum'] != '') - { - if (mb_ereg("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})", $person['gebdatum'], $regs)) - { - //$day = sprintf('%02s',$regs[1]); - //$month = sprintf('%02s',$regs[2]); - //$year = mb_substr($regs[3],2,2); - } - elseif (mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $person['gebdatum'], $regs)) - { - //$day = sprintf('%02s',$regs[3]); - //$month = sprintf('%02s',$regs[2]); - //$year = mb_substr($regs[1],2,2); - } - else - { - //$this->errormsg = 'Format des Geburtsdatums ist ungueltig'; - return false; - } - - /* das muss nicht immer so sein - $day_svnr = mb_substr($person['svnr, 4, 2); - $month_svnr = mb_substr($person['svnr, 6, 2); - $year_svnr = mb_substr($person['svnr, 8, 2); - - if ($day_svnr!=$day || $month_svnr!=$month || $year_svnr!=$year) - { - //$this->errormsg = 'SVNR und Geburtsdatum passen nicht zusammen'; - return false; - } - */ - } - - return true; - } -} +} \ No newline at end of file diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index a186ce08e..98c32e38c 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -68,4 +68,200 @@ class Person_model extends DB_Model else return $this->_error($this->db->error(), FHC_DB_ERROR); } + + public function _validate($person = NULL) + { + if (!isset($person)) + { + return $this->_error('Parameter is null'); + } + + $person['nachname'] = trim($person['nachname']); + $person['vorname'] = trim($person['vorname']); + $person['vornamen'] = trim($person['vornamen']); + $person['anrede'] = trim($person['anrede']); + $person['titelpost'] = trim($person['titelpost']); + $person['titelpre'] = trim($person['titelpre']); + + if (mb_strlen($person['sprache']) > 16) + { + return $this->_error('Sprache darf nicht laenger als 16 Zeichen sein'); + } + if (mb_strlen($person['anrede']) > 16) + { + return $this->_error('Anrede darf nicht laenger als 16 Zeichen sein'); + } + if (mb_strlen($person['titelpost']) > 32) + { + return $this->_error('Titelpost darf nicht laenger als 32 Zeichen sein'); + } + if (mb_strlen($person['titelpre']) > 64) + { + return $this->_error('Titelpre darf nicht laenger als 64 Zeichen sein'); + } + if (mb_strlen($person['nachname']) > 64) + { + return $this->_error('Nachname darf nicht laenger als 64 Zeichen sein'); + } + if ($person['nachname'] == '' || is_null($person['nachname'])) + { + return $this->_error('Nachname muss eingegeben werden'); + } + + if (mb_strlen($person['vorname']) > 32) + { + return $this->_error('Vorname darf nicht laenger als 32 Zeichen sein'); + } + if (mb_strlen($person['vornamen']) > 128) + { + return $this->_error('Vornamen darf nicht laenger als 128 Zeichen sein'); + } + //ToDo Gebdatum pruefen -> laut bis muss student aelter als 10 Jahre sein + /* if (strlen($person['gebdatum) == 0 || is_null($person['gebdatum)) + { + return $this->_error("Geburtsdatum muss eingegeben werden\n"; + return false; + } */ + if (mb_strlen($person['gebort']) > 128) + { + return $this->_error('Geburtsort darf nicht laenger als 128 Zeichen sein'); + } + + if (mb_strlen($person['homepage']) > 256) + { + return $this->_error('Homepage darf nicht laenger als 256 Zeichen sein'); + } + if (mb_strlen($person['svnr']) > 16) + { + return $this->_error('SVNR darf nicht laenger als 16 Zeichen sein'); + } + + if (mb_strlen($person['matr_nr']) > 32) + { + return $this->_error('Matrikelnummer darf nicht laenger als 32 Zeichen sein'); + return false; + } + + if ($person['svnr'] != '' && mb_strlen($person['svnr']) != 16 && mb_strlen($person['svnr']) != 10) + { + return $this->_error('SVNR muss 10 oder 16 Zeichen lang sein'); + } + + if ($person['svnr'] != '' && mb_strlen($person['svnr']) == 10) + { + //SVNR mit Pruefziffer pruefen + //Die 4. Stelle in der SVNR ist die Pruefziffer + //(Summe von (gewichtung[i]*svnr[i])) modulo 11 ergibt diese Pruefziffer + //Falls nicht, ist die SVNR ungueltig + $gewichtung = array(3, 7, 9, 0, 5, 8, 4, 2, 1, 6); + $erg = 0; + //Quersumme bilden + for ($i = 0; $i < 10; $i++) + { + $erg += $gewichtung[$i] * $person['svnr']{$i}; + } + + if ($person['svnr']{3} != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11 + { + return $this->_error('SVNR ist ungueltig'); + } + } + + /*if ($person['svnr'] != '') + { + //Pruefen ob bereits ein Eintrag mit dieser SVNR vorhanden ist + $qry = "SELECT person_id FROM public.tbl_person WHERE svnr=" . $person['svnr']; + if (db_query($qry)) + { + if ($row = db_fetch_object()) + { + if ($row->person_id != $person['person_id']) + { + return $this->_error('Es existiert bereits eine Person mit dieser SVNR! Daten wurden NICHT gespeichert.'); + } + } + } + }*/ + + if (mb_strlen($person['ersatzkennzeichen']) > 10) + { + return $this->_error('Ersatzkennzeichen darf nicht laenger als 10 Zeichen sein'); + } + if (mb_strlen($person['familienstand']) > 1) + { + return $this->_error('Familienstand ist ungueltig'); + } + if ($person['anzahlkinder'] != '' && !is_numeric($person['anzahlkinder'])) + { + return $this->_error('Anzahl der Kinder ist ungueltig'); + } + if ($person['aktiv'] != "t" && $person['aktiv'] != "f") + { + return $this->_error('Aktiv ist ungueltig'); + } + if (!isset($person['person_id']) && mb_strlen($person['insertvon']) > 32) + { + return $this->_error('Insertvon darf nicht laenger als 32 Zeichen sein'); + } + if (mb_strlen($person['updatevon']) > 32) + { + return $this->_error('Updatevon darf nicht laenger als 32 Zeichen sein'); + } + /*if ($person['ext_id'] != '' && !is_numeric($person['ext_id'])) + { + return $this->_error('Ext_ID ist keine gueltige Zahl'; + return false; + }*/ + if (mb_strlen($person['geschlecht']) > 1) + { + return $this->_error('Geschlecht darf nicht laenger als 1 Zeichen sein'); + } + if (mb_strlen($person['geburtsnation']) > 3) + { + return $this->_error('Geburtsnation darf nicht laenger als 3 Zeichen sein'); + } + if (mb_strlen($person['staatsbuergerschaft']) > 3) + { + return $this->_error('Staatsbuergerschaft darf nicht laenger als 3 Zeichen sein'); + } + if ($person['geschlecht'] != 'm' && $person['geschlecht'] != 'w' && $person['geschlecht'] != 'u') + { + return $this->_error('Geschlecht muss w, m oder u sein!'); + } + + //Pruefen ob das Geburtsdatum mit der SVNR uebereinstimmt. + if ($person['svnr'] != '' && $person['gebdatum'] != '') + { + if (mb_ereg("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})", $person['gebdatum'], $regs)) + { + //$day = sprintf('%02s',$regs[1]); + //$month = sprintf('%02s',$regs[2]); + //$year = mb_substr($regs[3],2,2); + } + elseif (mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $person['gebdatum'], $regs)) + { + //$day = sprintf('%02s',$regs[3]); + //$month = sprintf('%02s',$regs[2]); + //$year = mb_substr($regs[1],2,2); + } + else + { + return $this->_error('Format des Geburtsdatums ist ungueltig'); + } + + /* das muss nicht immer so sein + $day_svnr = mb_substr($person['svnr, 4, 2); + $month_svnr = mb_substr($person['svnr, 6, 2); + $year_svnr = mb_substr($person['svnr, 8, 2); + + if ($day_svnr!=$day || $month_svnr!=$month || $year_svnr!=$year) + { + return $this->_error('SVNR und Geburtsdatum passen nicht zusammen'; + return false; + } + */ + } + + return $this->_success('Input data are valid'); + } } \ No newline at end of file