diff --git a/application/controllers/api/frontend/v1/stv/Status.php b/application/controllers/api/frontend/v1/stv/Status.php index b0c262d6a..f54283303 100644 --- a/application/controllers/api/frontend/v1/stv/Status.php +++ b/application/controllers/api/frontend/v1/stv/Status.php @@ -533,6 +533,19 @@ class Status extends FHCAPI_Controller public function addStudent($prestudent_id) { + // Prepare lastAufgenommener Status + $this->PrestudentstatusModel->addOrder('datum', 'DESC'); + $this->PrestudentstatusModel->addOrder('insertamum', 'DESC'); + $this->PrestudentstatusModel->addLimit(1); + $result = $this->PrestudentstatusModel->loadWhere([ + 'prestudent_id' => $prestudent_id, + 'status_kurzbz' => Prestudentstatus_model::STATUS_AUFGENOMMENER + ]); + $lastAufgenommener = $this->getDataOrTerminateWithError($result); + + if ($lastAufgenommener) + $lastAufgenommener = current($lastAufgenommener); + //get studentname for validations $this->load->model('person/Person_model', 'PersonModel'); $this->PersonModel->addJoin('public.tbl_prestudent', 'person_id'); @@ -542,16 +555,14 @@ class Status extends FHCAPI_Controller $studentName = trim($prestudent_person->vorname . ' ' . $prestudent_person->nachname); - /*$status_kurzbz = $this->input->post('status_kurzbz'); - $studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz'); - $ausbildungssemester = $this->input->post('ausbildungssemester'); - $statusgrund_id = $this->input->post('statusgrund_id'); - $datum = $this->input->post('datum');*/ - - + //Form Validation $this->load->library('form_validation'); + $this->form_validation->set_rules('statusgrund_id', $this->p->t('international', 'grund'), 'integer', [ + 'integer' => $this->p->t('ui', 'error_fieldNotInteger') + ]); + $this->form_validation->set_rules('_default', '', [ 'required', //Check ZGV @@ -574,9 +585,8 @@ class Status extends FHCAPI_Controller return $this->getDataOrTerminateWithError($result); }], //Check Aufgenommenerstatus - ['checkIfExistingAufgenommenerstatus', function () use ($prestudent_id) { - $result = $this->prestudentstatuschecklib->checkIfExistingAufgenommenerstatus($prestudent_id); - return $this->getDataOrTerminateWithError($result); + ['checkIfExistingAufgenommenerstatus', function () use ($lastAufgenommener) { + return !!$lastAufgenommener; }], //Check Bewerberstatus & Aufgenommenerstatus semester ['checkIfLastBewerberAndAufgenommenerShareSemesters', function () use ($prestudent_id) { @@ -590,21 +600,10 @@ class Status extends FHCAPI_Controller return !$this->getDataOrTerminateWithError($result); }], //Check if Rolle already exists - ['rolle_doesnt_exist', function () use ($prestudent_id) { - $this->PrestudentstatusModel->addOrder('datum', 'DESC'); - $this->PrestudentstatusModel->addOrder('insertamum', 'DESC'); - $this->PrestudentstatusModel->addLimit(1); - $result = $this->PrestudentstatusModel->loadWhere([ - 'prestudent_id' => $prestudent_id, - 'status_kurzbz' => Prestudentstatus_model::STATUS_AUFGENOMMENER - ]); - $lastAufgenommener = $this->getDataOrTerminateWithError($result); + ['rolle_doesnt_exist', function () use ($prestudent_id, $lastAufgenommener) { if (!$lastAufgenommener) return true; // Error will be handled by the checkIfExistingAufgenommenerstatus statement above - $lastAufgenommener = current($lastAufgenommener); - - $result = $this->PrestudentstatusModel->loadWhere([ 'studiensemester_kurzbz' => $lastAufgenommener->studiensemester_kurzbz, 'status_kurzbz' => Prestudentstatus_model::STATUS_STUDENT, @@ -631,152 +630,13 @@ class Status extends FHCAPI_Controller // Start DB transaction $this->db->trans_start(); - //getSemester of Status Aufgenommen - $result = $this->PrestudentstatusModel->loadWhere([ - "prestudent_id" => $prestudent_id, - "status_kurzbz" => Prestudentstatus_model::STATUS_AUFGENOMMENER - ]); - - $this->PrestudentstatusModel->addLimit(1); - if (isError($result)) - { - return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); - } - $semesterAufgenommen = current(getData($result)); - $semesterAufgenommen = $semesterAufgenommen->studiensemester_kurzbz; - - - //generate Personenkennzeichen(matrikelnr) - $this->load->model('crm/Prestudent_model', 'PrestudentModel'); - $this->PrestudentModel->addJoin('public.tbl_person p', 'ON (p.person_id = public.tbl_prestudent.person_id)'); - $this->PrestudentModel->addJoin('public.tbl_studiengang sg', 'ON (sg.studiengang_kz = public.tbl_prestudent.studiengang_kz)'); - $result = $this->PrestudentModel->load([ - 'prestudent_id' => $prestudent_id, - ]); - if (isError($result)) { - return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); - } - $result = current(getData($result)); - - $stg = $result->studiengang_kz; - $typ = $result->typ; - $stgkzl = $result->kurzbz; - $person_id = $result->person_id; - $matrikelnr = false; - - Events::trigger('generate_personenkennzeichen', $stg, $semesterAufgenommen, $typ, function ($value) use ($matrikelnr) { - $matrikelnr = $value; - }); - if ($matrikelnr === false) { - $resultMat = $this->StudentModel->generateMatrikelnummer2($stg, $semesterAufgenommen, $typ); - if (isError($resultMat)) { - return $this->terminateWithError($resultMat, self::ERROR_TYPE_GENERAL); - } - $matrikelnr = getData($resultMat); - } - $jahr = mb_substr($semesterAufgenommen, 4, 2); - - //generate UID - $resultUid = $this->StudentModel->generateUID($stgkzl, $jahr, $typ, $matrikelnr); - if (isError($resultUid)) { - return $this->terminateWithError(getData($resultUid), self::ERROR_TYPE_GENERAL); - } - $uidStudent = getData($resultUid); - - //TODO(Manu) Check for additional logic (config entries, addons) - //check include/tw/generatematrikelnr.inc.php - //(1) addons durchsuchen, ob eigene Logik für Matrikelnr-erstellung existiert - //Default: keine Matrikelnummer wird generiert - - //(2) personenkz = uid - /* if (defined('SET_UID_AS_PERSONENKENNZEICHEN') && SET_UID_AS_PERSONENKENNZEICHEN) { - $matrikelnr = $uidStudent; - }*/ - - //(3) Matrikelnummer = uid - /* if (defined('SET_UID_AS_MATRIKELNUMMER') && SET_UID_AS_MATRIKELNUMMER) { - //update person - $result = $this->PersonModel->update( - [ - 'person_id' => $person_id, - ], - [ - 'matr_nr' => $uidStudent, - ] - ); - if (isError($result)) { - return $this->terminateWithError("uidAsMatrikelnummer" . getError($result), self::ERROR_TYPE_GENERAL); - } - }*/ - - //add benutzerdatensatz mit Aktierungscode - $this->load->model('person/Benutzer_model', 'BenutzerModel'); - $result = $this->BenutzerModel->checkIfExistingBenutzer($uidStudent); - if (isError($result)) { - return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); - } - if ($result->retval != "0") - { - return $this->terminateWithError($this->p->t('lehre', 'error_benutzerBereitsVorhanden', ['uid' => $uidStudent]), self::ERROR_TYPE_GENERAL); - } - - $aktivierungscode = null; - $result = $this->BenutzerModel->generateActivationKey(); - if (isError($result)) { - return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); - } - $aktivierungscode = getData($result); - - //generate Alias - $result = $this->BenutzerModel->generateAliasByPersonId($person_id); - $this->getDataOrTerminateWithError($result); - $alias = getData($result); - - $result = $this->BenutzerModel->insert( - [ - 'person_id' => $person_id, - 'uid' => $uidStudent, - 'aktiv' => true, - 'aktivierungscode' => $aktivierungscode, - 'alias' => $alias, - 'insertvon' => getAuthUID(), - 'insertamum' => date('c'), - ] - ); - - if (isError($result)) { - return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); - } - - //Student anlegen - $result = $this->StudentModel->insert( - [ - 'student_uid' => $uidStudent, - 'prestudent_id' => $prestudent_id, - 'matrikelnr' => $matrikelnr, - 'studiengang_kz' => $stg, - 'semester' => $ausbildungssemester, - 'verband' => '', - 'gruppe' => '', - 'insertvon' => getAuthUID(), - 'insertamum' => date('c') - ] - ); - if (isError($result)) - { - return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); - } - - $this->load->library('PrestudentLib'); - $result = $this->prestudentlib->setFirstStudent( + $this->prestudentlib->setFirstStudent( $prestudent_id, - $studiensemester_kurzbz, - $ausbildungssemester, - $statusgrund_id, - date('c'), - getAuthUID(), - $stg, - $uidStudent + $lastAufgenommener->studiensemester_kurzbz, + $lastAufgenommener->ausbildungssemester, + $lastAufgenommener->orgform_kurzbz, + $lastAufgenommener->studienplan_id, + $this->input->post('statusgrund_id') ); $this->getDataOrTerminateWithError($result); @@ -969,6 +829,10 @@ class Status extends FHCAPI_Controller $this->load->library('form_validation'); + $this->form_validation->set_rules('statusgrund_id', $this->p->t('international', 'grund'), 'integer', [ + 'integer' => $this->p->t('ui', 'error_fieldNotInteger') + ]); + if (!$isBerechtigtBasisPrestudentstatus) $this->form_validation->set_rules( 'bewerbung_abgeschicktamum', @@ -1253,6 +1117,10 @@ class Status extends FHCAPI_Controller //Form Validation $this->load->library('form_validation'); + $this->form_validation->set_rules('statusgrund_id', $this->p->t('international', 'grund'), 'integer', [ + 'integer' => $this->p->t('ui', 'error_fieldNotInteger') + ]); + if (!$isBerechtigtBasisPrestudentstatus) $this->form_validation->set_rules( 'bewerbung_abgeschicktamum', diff --git a/application/libraries/PrestudentLib.php b/application/libraries/PrestudentLib.php index bc2e5b1bd..b66324928 100644 --- a/application/libraries/PrestudentLib.php +++ b/application/libraries/PrestudentLib.php @@ -555,67 +555,192 @@ class PrestudentLib return success(); } - public function setFirstStudent($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester, $statusgrund_id, $bestaetigtAm, $bestaetigtVon, $stg_kz, $uidStudent) - { - $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id); + public function setFirstStudent( + $prestudent_id, + $studiensemester_kurzbz, + $ausbildungssemester, + $orgform_kurzbz, + $studienplan_id, + $statusgrund_id + ) { + $this->_ci->PrestudentModel->addJoin('public.tbl_person p', 'person_id'); + $this->_ci->PrestudentModel->addJoin('public.tbl_studiengang stg', 'studiengang_kz'); + $result = $this->_ci->PrestudentModel->load($prestudent_id); + if (isError($result)) return $result; - $prestudent_status = current(getData($result)); - if(!$prestudent_status) - { - return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [ - 'prestudent_id' => $prestudent_id, - 'studiensemester_kurzbz' => $studiensemester_kurzbz - ])); + + if (!hasData($result)) + return error('No prestudent'); + + $student_data = current(getData($result)); + + + $authUID = getAuthUID(); + $now = date('c'); + $today = date('Y-m-d'); + + $jahr = mb_substr($studiensemester_kurzbz, 4, 2); + + + // Genererate Personenkennzeichen + $personenkennzeichen = $this->_ci->StudentModel->generateMatrikelnummer2( + $student_data->studiengang_kz, + $studiensemester_kurzbz, + $student_data->typ + ); + if (isError($personenkennzeichen)) + return $personenkennzeichen; + $personenkennzeichen = getData($personenkennzeichen); + + + // Generate UID + $uid = $this->_ci->StudentModel->generateUID( + $student_data->kurzbz, + $jahr, + $student_data->typ, + $personenkennzeichen, + $student_data->vorname, + $student_data->nachname + ); + if (isError($uid)) + return $uid; + $uid = getData($uid); + + + // Generate Matrikelnummer + $matrikelnummer = $this->_ci->BenutzerModel->generateMatrikelnummer( + $student_data->oe_kurzbz + ); + if (isError($matrikelnummer)) + return $matrikelnummer; + $matrikelnummer = getData($matrikelnummer); + + + // Generate Alias + $alias = ''; + if (!defined('GENERATE_ALIAS_STUDENT') + || GENERATE_ALIAS_STUDENT === true + ) { + $result = $this->_ci->BenutzerModel->generateAliasFromName($student_data->vorname, $student_data->nachname); + if (isError($result)) + return $result; + $alias = getData($result); } - //check studiensemester_kurzbz is last - $studiensemester_kurzbz = $prestudent_status->studiensemester_kurzbz != $studiensemester_kurzbz ? - $prestudent_status->studiensemester_kurzbz : $studiensemester_kurzbz; + // Generate Activation Key + $activationkey = $this->_ci->BenutzerModel->generateActivationkey(); - //check if ausbildungssemester is last - $ausbildungssemester = $prestudent_status->ausbildungssemester != $ausbildungssemester ? - $prestudent_status->ausbildungssemester : $ausbildungssemester; - //Status updaten - $result = $this->_ci->PrestudentstatusModel->insert([ - 'prestudent_id' => $prestudent_id, - 'status_kurzbz' => Prestudentstatus_model::STATUS_STUDENT, - 'studiensemester_kurzbz' => $studiensemester_kurzbz, - 'ausbildungssemester' => $ausbildungssemester, - 'statusgrund_id' => $statusgrund_id, - 'datum' => date('c'), - 'insertvon' => getAuthUID(), - 'insertamum' => date('c'), - 'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz, - 'studienplan_id'=> $prestudent_status->studienplan_id, - 'bestaetigtvon' => $bestaetigtVon, - 'bestaetigtam' => $bestaetigtAm + // Overwrite stuff + if (defined('SET_UID_AS_MATRIKELNUMMER') + && SET_UID_AS_MATRIKELNUMMER) + $matrikelnummer = $uid; + if (defined('SET_UID_AS_PERSONENKENNZEICHEN') + && SET_UID_AS_PERSONENKENNZEICHEN) + $personenkennzeichen = $uid; + + + // Update Person + $this->_ci->load->model('person/Person_model', 'PersonModel'); + $result = $this->_ci->PersonModel->update([ + 'person_id' => $student_data->person_id, + 'matr_nr' => null + ], [ + 'matr_nr' => $matrikelnummer ]); if (isError($result)) return $result; - $verband = ''; - $gruppe = ''; - $studiengang_kz = $stg_kz; - //process studentlehrverband - $this->_ci->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); - $result = $this->_ci->StudentlehrverbandModel->processStudentlehrverband( - $uidStudent, - $studiengang_kz, - $ausbildungssemester, - $verband, - $gruppe, - $studiensemester_kurzbz - ); + // Add Benutzer + $result = $this->_ci->BenutzerModel->insert([ + 'uid' => $uid, + 'person_id' => $student_data->person_id, + 'aktiv' => true, + 'aktivierungscode' => $activationkey, + 'alias' => $alias, + 'insertvon' => $authUID, + 'insertamum' => $now, + ]); if (isError($result)) - { return $result; + + + // Add Student + $result = $this->_ci->StudentModel->insert([ + 'student_uid' => $uid, + 'matrikelnr' => $personenkennzeichen, + 'prestudent_id' => $prestudent_id, + 'studiengang_kz' => $student_data->studiengang_kz, + 'semester' => $ausbildungssemester, + 'verband' => ' ', + 'gruppe' => ' ', + 'insertvon' => $authUID, + 'insertamum' => $now + ]); + + if (isError($result)) + return $result; + + + // Add Lehrverband if it does not exist + $result = $this->_ci->LehrverbandModel->load([' ', ' ', $ausbildungssemester, $student_data->studiengang_kz]); + + if (isError($result)) + return $result; + + if (!hasData($result)) { + $result = $this->_ci->LehrverbandModel->insert([ + 'studiengang_kz' => $student_data->studiengang_kz, + 'semester' => $ausbildungssemester, + 'verband' => ' ', + 'gruppe' => ' ', + 'aktiv' => true + ]); + + if (isError($result)) + return $result; } + + // Add Rolle + $result = $this->_ci->PrestudentstatusModel->insert([ + 'prestudent_id' => $prestudent_id, + 'status_kurzbz' => Prestudentstatus_model::STATUS_STUDENT, + 'studiensemester_kurzbz' => $studiensemester_kurzbz, + 'ausbildungssemester' => $ausbildungssemester, + 'orgform_kurzbz'=> $orgform_kurzbz, + 'studienplan_id'=> $studienplan_id, + 'datum' => $today, + 'insertamum' => $now, + 'insertvon' => $authUID, + 'bestaetigtam' => $today, + 'bestaetigtvon' => $authUID, + 'statusgrund_id' => $statusgrund_id + ]); + + if (isError($result)) + return $result; + + + // Add Studentlehrverband + $result = $this->_ci->StudentlehrverbandModel->insert([ + 'student_uid' => $uid, + 'studiensemester_kurzbz' => $studiensemester_kurzbz, + 'studiengang_kz' => $student_data->studiengang_kz, + 'semester' => $ausbildungssemester, + 'verband' => ' ', + 'gruppe' => ' ', + 'insertamum' => $now, + 'insertvon' => $authUID + ]); + + if (isError($result)) + return $result; + return success(); } diff --git a/application/models/crm/Student_model.php b/application/models/crm/Student_model.php index adeef07fc..bd7ab41b6 100644 --- a/application/models/crm/Student_model.php +++ b/application/models/crm/Student_model.php @@ -1,4 +1,8 @@ load->model('crm/prestudentstatus_model', 'PrestudentstatusModel'); } - - /** - * update Lehrverband and Studenlehrverband - * - * @param char $student_id - * @param integer $studiengang_kz - * @param integer $ausbildungssemester - * @param char $verband - * @param char $gruppe - * @param string $studiensemester_kurzbz - * - * @return success if handling lehrverband, studentlehrverband successfull - * error if not - * - */ - public function processStudentlehrverband( - $student_uid, - $studiengang_kz, - $ausbildungssemester, - $verband, - $gruppe, - $studiensemester_kurzbz, - $status_kurzbz = null - ) { - $uid = getAuthUID(); - - $this->load->model('organisation/Lehrverband_model', 'LehrverbandModel'); - $result = $this->LehrverbandModel->checkIfLehrverbandExists($studiengang_kz, $ausbildungssemester, $verband, $gruppe); - if (isError($result)) - { - return error("0", $this->p->t('lehre', 'error_updateLehrverband')); - } - - if ($result->retval == "0") - { - // Übergeordneten Lehrverband check and/or insert - $result = $this->LehrverbandModel->checkIfLehrverbandExists($studiengang_kz, $ausbildungssemester, '', ''); - if (isError($result)) { - return error("0", $this->p->t('lehre', 'error_updateLehrverband')); - } - - if ($result->retval == "0") - { - $bezeichnung = ( - $status_kurzbz == PrestudentstatusModel::STATUS_ABBRECHER - || $status_kurzbz == Prestudentstatus_model::STATUS_UNTERBRECHER) - ? 'Ab-Unterbrecher' : ''; - $result = $this->LehrverbandModel->insert([ - 'studiengang_kz' => $studiengang_kz, - 'semester' => $ausbildungssemester, - 'verband' => '', - 'gruppe' => '', - 'aktiv' => true, - 'bezeichnung' => $bezeichnung - ]); - - if (isError($result)) - { - return error("0", $this->p->t('lehre', 'error_updateLehrverband')); - } - } - - // Lehrverband insert - if ($verband == 'A') - $bezeichnung = Prestudentstatus_model::STATUS_ABBRECHER; - elseif ($verband == 'B') - $bezeichnung = Prestudentstatus_model::STATUS_BEWERBER; - else - $bezeichnung = ''; - - $result = $this->LehrverbandModel->insert([ - 'studiengang_kz' => $studiengang_kz, - 'semester' => $ausbildungssemester, - 'verband' => $verband, - 'gruppe' => $gruppe, - 'bezeichnung' => $bezeichnung, - 'aktiv' => true - ]); - - if (isError($result)) { - return error("0", $this->p->t('lehre', 'error_updateLehrverband')); - } - } - - // Studentlehrverband insert or update - $this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); - $result = $this->StudentlehrverbandModel->checkIfStudentLehrverbandExists($student_uid, $studiensemester_kurzbz); - if (isError($result)) - { - return error($result); - } - - if ($result->retval == "0") - { - $result = $this->StudentlehrverbandModel->insert([ - 'student_uid' => $student_uid, - 'studiensemester_kurzbz' => $studiensemester_kurzbz, - 'semester' => $ausbildungssemester, - 'verband' => $verband, - 'gruppe' => $gruppe, - 'insertamum' => date('c'), - 'insertvon' => $uid, - 'studiengang_kz' => $studiengang_kz - ]); - if (isError($result)) { - return error("0", $this->p->t('lehre', 'error_updateStudentlehrverband')); - } - } - else - { - $result = $this->StudentlehrverbandModel->update( - [ - 'student_uid' => $student_uid, - 'studiensemester_kurzbz' => $studiensemester_kurzbz - ], - [ - 'semester' => $ausbildungssemester, - 'verband' => $verband, - 'gruppe' => $gruppe, - 'updateamum' => date('c'), - 'updatevon' => $uid, - 'studiengang_kz' => $studiengang_kz - ] - ); - if (isError($result)) { - return error("0", $this->p->t('lehre', 'error_updateStudentlehrverband')); - } - } - - if (isError($result)) { - return error("0", $this->p->t('lehre', 'error_updateStudentlehrverband')); - } - else - { - return success(); - } - } } diff --git a/application/models/organisation/Lehrverband_model.php b/application/models/organisation/Lehrverband_model.php index bc4858e5f..0e760a116 100644 --- a/application/models/organisation/Lehrverband_model.php +++ b/application/models/organisation/Lehrverband_model.php @@ -12,48 +12,6 @@ class Lehrverband_model extends DB_Model $this->pk = array('gruppe', 'verband', 'semester', 'studiengang_kz'); } - /** - * Check if Lehrverband already exists - * @param Integer $studiengang_kz - * @param Integer $semester - * @param char $verband - * @param char $gruppe - * @return 1: if Lehrverband exists, 0: if it doesn't - */ - public function checkIfLehrverbandExists($studiengang_kz, $semester, $verband, $gruppe) - { - $qry = "SELECT - * - FROM - public.tbl_lehrverband - WHERE - studiengang_kz = ? - AND - semester = ? - AND - verband = ? - AND - gruppe = ? - - "; - - $result = $this->execQuery($qry, array($studiengang_kz, $semester, $verband, $gruppe)); - - - if(isError($result)) - { - return error($result); - } - elseif(!hasData($result)) - { - return success("0", "Kein Lehrverband vorhanden!"); - } - else - { - return success("1","Lehrverband vorhanden!"); - } - } - /** * Gets the maximum possible semester for one or more Studiengaenge. * If there are more than one Studiengang each maximum is calculated and diff --git a/application/models/person/Benutzer_model.php b/application/models/person/Benutzer_model.php index 0c1a6fddf..65121dbb5 100644 --- a/application/models/person/Benutzer_model.php +++ b/application/models/person/Benutzer_model.php @@ -1,4 +1,7 @@ addLimit(1); $this->addSelect('vorname, nachname'); $this->addJoin('public.tbl_person', 'person_id'); $nameresult = $this->loadWhere(array('uid' => $uid)); - if (hasData($nameresult)) - { - $aliasdata = getData($nameresult); - $alias = $this->_sanitizeAliasName($aliasdata[0]->vorname).'.'.$this->_sanitizeAliasName($aliasdata[0]->nachname); - $aliasexists = $this->aliasExists($alias); + if (isError($nameresult)) + return $nameresult; - if (hasData($aliasexists) && !getData($aliasexists)[0]) - $aliasres = $alias; - } + if (!hasData($nameresult)) + return success(''); + + $aliasdata = current(getData($nameresult)); - return success($aliasres); + return $this->generateAliasFromName($aliasdata->vorname, $aliasdata->nachname); } /** - * Generates alias for a person_id - * @param $person_id - * @return string + * Generates alias for a vor- and nachname. + * + * @param string $vorname + * @param string $nachname + * + * @return stdClass */ - public function generateAliasByPersonId($person_id) + public function generateAliasFromName($vorname, $nachname) { - $sql = 'SELECT p.vorname, p.nachname - FROM public.tbl_person p - where person_id = ?'; + $alias = $this->_sanitizeAliasName($vorname . '.' . $nachname); + + $result = $this->aliasExists($alias); - $nameresult = $this->execQuery($sql, array($person_id)); + if (isError($result)) + return $result; - $nameresult = current(getData($nameresult)) ?: null; - - if($nameresult) - { - $alias = $this->_sanitizeAliasName($nameresult->vorname).'.'.$this->_sanitizeAliasName($nameresult->nachname); - - $aliasexists = $this->aliasExists($alias); - - if (hasData($aliasexists) && current(getData($aliasexists))) - $alias = ""; - } + if (current(getData($result))) + return success(''); return success($alias); } + /** + * Generates a matrikelnummer + * + * @param string $oe_kurzbz + * + * @return stdClass + */ + public function generateMatrikelnummer($oe_kurzbz) + { + $matrikelnummer = false; + + Events::trigger( + 'generate_matrikelnummer', + function ($value) use ($matrikelnummer) { + $matrikelnummer = $value; + }, + $oe_kurzbz + ); + + if ($matrikelnummer !== false) + return success($matrikelnummer); + + return success(null); + } + + /** + * Generates an activation key + * + * @return string + */ + public function generateActivationkey() + { + $this->load->library('CryptLib'); + + $key = ''; + for ($i=0; $i<32; $i++) + $key .= ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'][mt_rand(0, 15)]; + + $value = uniqid(mt_rand(), true); + $length = strlen($value); + $value = str_pad($value, $length + 32 - ($length % 32), chr(0)); + + return md5($this->cryptlib->RIJNDAEL_256_ECB($value, $key, true)); + } + // -------------------------------------------------------------------------------------------- // Private methods @@ -135,55 +175,4 @@ class Benutzer_model extends DB_Model $str = sanitizeProblemChars($str); return mb_strtolower(str_replace(' ', '_', $str)); } - - /** - * Generiert einen Aktivierungscode - */ - public function generateActivationKey() - { - $keyvalues=array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'); - $key=''; - for($i=0; $i<32; $i++) - $key.=$keyvalues[mt_rand(0, 15)]; - - return success(md5(encryptData(uniqid(mt_rand(), true), $key))); - } - - /** - * Check if Benutzer already exists - * @param String $uid - * @return 0 if not exists, 1 if it does - */ - public function checkIfExistingBenutzer($uid) - { - $qry = "SELECT - count(*) as anzahl - FROM - public.tbl_benutzer - WHERE - uid = ? "; - - $result = $this->execQuery($qry, array($uid)); - - if (isError($result)) - { - return error($result); - } - - $resultObject = current(getData($result)); - - if (property_exists($resultObject, 'anzahl')) - { - $resultValue = (int)$resultObject->anzahl; - - if ($resultValue > 0) - { - return success("1"); - } - else - { - return success("0"); - } - } - } }