This commit is contained in:
Paminger
2016-06-16 11:41:23 +02:00
5 changed files with 239 additions and 240 deletions
+1
View File
@@ -21,3 +21,4 @@ tests/codeception/_output/*
composer.lock
bin
/tests/codeception/api.suite.yml
/application/logs/
+20 -11
View File
@@ -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;
}
}
}
@@ -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");
@@ -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;
}
}
}
+196
View File
@@ -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');
}
}