setFirstStudent logic

This commit is contained in:
cgfhtw
2024-08-08 16:24:23 +02:00
parent f1a2ef25c7
commit ffabd681c8
6 changed files with 349 additions and 491 deletions
@@ -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',
+169 -44
View File
@@ -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();
}
+76 -21
View File
@@ -1,4 +1,8 @@
<?php
use \InvalidArgumentException as InvalidArgumentException;
use \CI3_Events as Events;
class Student_model extends DB_Model
{
@@ -47,18 +51,42 @@ class Student_model extends DB_Model
return $matrikelnummer.sprintf("%03d", $max);
}
// ****
// * Generiert die Matrikelnummer
// * FORMAT: 0710254001
// * 07 = Jahr
// * 1/2/0 = WS/SS/incoming
// * 0254 = Studiengangskennzahl vierstellig
// * 001 = Laufende Nummer
// * copy of generateMatrikelnummer plus
// * logic FH Burgenland
// ****
/**
* Generiert die Matrikelnummer
* FORMAT: 0710254001
* 07 = Jahr
* 1/2/0 = WS/SS/incoming
* 0254 = Studiengangskennzahl vierstellig
* 001 = Laufende Nummer
* copy of generateMatrikelnummer plus
* logic FH Burgenland
*
* TODO(chris): replace function above with this?
* TODO(chris): rename to generatePersonenkennzeichen?
*
* @param integer $studiengang_kz
* @param string $studiensemester_kurzbz
* @param string $typ
*
* @return stdClass
*/
public function generateMatrikelnummer2($studiengang_kz, $studiensemester_kurzbz, $typ = null)
{
$personenkennzeichen = false;
Events::trigger(
'generate_personenkennzeichen',
function ($value) use ($personenkennzeichen) {
$personenkennzeichen = $value;
},
$studiengang_kz,
$studiensemester_kurzbz,
$typ
);
if ($personenkennzeichen !== false)
return success($personenkennzeichen);
// Validierung der Eingabewerte
if (strlen($studiensemester_kurzbz) < 6) {
throw new InvalidArgumentException("Ungültiges studiensemester_kurzbz Format.");
@@ -129,18 +157,45 @@ class Student_model extends DB_Model
return success($matrikelnummer.sprintf("%03d", $max));
}
// ****
// * Generiert die UID
// * FORMAT: el07b001
// * $stgkzl: el = studiengangskuerzel
// * $jahr: 07 = Jahr
// * $stgtyp: b/m/d/x = Bachelor/Master/Diplom/Incoming
// * $matrikelnummer
// * 001 = Laufende Nummer Wenn StSem==SS dann wird zur Nummer 500 dazugezaehlt
// * Bei Incoming im Masterstudiengang wird auch 500 dazugezaehlt
// ****
public function generateUID($stgkzl, $jahr, $stgtyp, $matrikelnummer)
/**
* Generiert die UID
* FORMAT: el07b001
* $stgkzl: el = studiengangskuerzel
* $jahr: 07 = Jahr
* $stgtyp: b/m/d/x = Bachelor/Master/Diplom/Incoming
* $matrikelnummer
* 001 = Laufende Nummer Wenn StSem==SS dann wird zur Nummer 500 dazugezaehlt
* Bei Incoming im Masterstudiengang wird auch 500 dazugezaehlt
*
* @param string $stgkzl
* @param string $jahr
* @param string $stgtyp
* @param string $matrikelnummer
* @param string $vorname
* @param string $nachname
*
* @return stdClass
*/
public function generateUID($stgkzl, $jahr, $stgtyp, $matrikelnummer, $vorname, $nachname)
{
$uid = false;
Events::trigger(
'generate_student_uid',
function ($value) use ($uid) {
$uid = $value;
},
$stgkzl,
$jahr,
$stgtyp,
$matrikelnummer,
$vorname,
$nachname
);
if ($uid !== false)
return success($uid);
$art = mb_substr($matrikelnummer, 2, 1);
$nr = mb_substr($matrikelnummer, mb_strlen(trim($matrikelnummer))-3);
if($art=='2') //Sommersemester
@@ -14,141 +14,4 @@ class Studentlehrverband_model extends DB_Model
$this->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();
}
}
}
@@ -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
+69 -80
View File
@@ -1,4 +1,7 @@
<?php
use \CI3_Events as Events;
class Benutzer_model extends DB_Model
{
@@ -74,53 +77,90 @@ class Benutzer_model extends DB_Model
*/
public function generateAlias($uid)
{
$aliasres = '';
$this->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");
}
}
}
}