diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index f9bd57117..aec59bc07 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -854,6 +854,7 @@ if(!$error) elseif(isset($_POST['type']) && $_POST['type']=='deleterolle') { //Loescht eine Prestudentrolle + $deletePrestudent = false; if(isset($_POST['studiensemester_kurzbz']) && isset($_POST['status_kurzbz']) && isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']) && @@ -871,11 +872,16 @@ if(!$error) { if($row = $db->db_fetch_object($result)) { - if($row->anzahl<=1 && !$rechte->isBerechtigt('admin', null, 'suid')) + // Die letzte Rolle darf nur durch einen Administrator geloescht werden. Danach wird auch der PreStudent-Eintrag geloescht + if($row->anzahl<=1) { - $return = false; - $errormsg = 'Die letzte Rolle kann nur durch den Administrator geloescht werden'; - $error = true; + $deletePrestudent = true; + if (!$rechte->isBerechtigt('admin', null, 'suid')) + { + $return = false; + $errormsg = 'Die letzte Rolle kann nur durch den Administrator geloescht werden'; + $error = true; + } } } else @@ -901,6 +907,7 @@ if(!$error) { if($rolle->delete_rolle($_POST['prestudent_id'],$_POST['status_kurzbz'],$_POST['studiensemester_kurzbz'], $_POST['ausbildungssemester'])) { + $log_id = $rolle->log_id; $return = true; // Wenn in diesem Semester kein Status mehr vorhanden ist, // dann wird auch der Studentlehrverband eintrag entfernt @@ -917,6 +924,18 @@ if(!$error) } } } + // Wenn kein Prestudent-Eintrag mehr vorhanden ist, wird der ganze Prestudent-Datensatz geloescht + if ($deletePrestudent == true) + { + $prestudent = new prestudent(); + if(!$prestudent->deletePrestudent($_POST['prestudent_id'])) + { + $return = false; + $errormsg = "Fehler beim Löschen des Prestudenten."; + $log = new log(); + $log->undo($log_id); + } + } } else { @@ -944,6 +963,40 @@ if(!$error) $errormsg = 'Fehlerhafte Parameteruebergabe'; } } + elseif(isset($_POST['type']) && $_POST['type']=='returnDeletePrestudent') + { + //Prueft, wie viele Prestudentrolle-Eintraege noch vorhanden sind und gibt diese Anzahl als Wert zurueck + + if(isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id'])) + { + $qry = "SELECT count(*) as anzahl FROM public.tbl_prestudentstatus WHERE prestudent_id=".$db->db_add_param($_POST['prestudent_id'], FHC_INTEGER); + if($result = $db->db_query($qry)) + { + if($row = $db->db_fetch_object($result)) + { + $return = true; + $data = $row->anzahl; + } + else + { + $return = false; + $errormsg = 'Fehler beim Zaehlen der Rollen'; + $error = true; + } + } + else + { + $return = false; + $error = true; + $errormsg = 'Fehler beim Zaehlen der Rollen'; + } + } + else + { + $return = false; + $errormsg = 'Fehlerhafte Parameteruebergabe'; + } + } elseif(isset($_POST['type']) && $_POST['type']=='bestaetigerolle') { //Bestaetigt eine Prestudentrolle diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index 06bd41251..82ce3c912 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -1712,32 +1712,78 @@ function StudentPrestudentRolleDelete() studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; if(confirm('Diese Rolle wirklich loeschen?')) { + var url = 'content/student/studentDBDML.php'; var req = new phpRequest(url,'',''); - req.add('type', 'deleterolle'); - - req.add('status_kurzbz', status_kurzbz); + req.add('type', 'returnDeletePrestudent'); req.add('prestudent_id', prestudent_id); - req.add('studiensemester_kurzbz', studiensemester_kurzbz); - req.add('ausbildungssemester', ausbildungssemester); - req.add('studiengang_kz', studiengang_kz); var response = req.executePOST(); - var val = new ParseReturnValue(response) - - if (!val.dbdml_return) + + if (val.dbdml_data == 1) { - if(val.dbdml_errormsg=='') - alert(response) - else - alert(val.dbdml_errormsg) + if(confirm('Das Loeschen der letzten Rolle loescht auch den gesamten Prestudent-Datensatz!\nMoechten Sie Fortfahren?')) + { + var url = 'content/student/studentDBDML.php'; + var req = new phpRequest(url,'',''); + + req.add('type', 'deleterolle'); + + req.add('status_kurzbz', status_kurzbz); + req.add('prestudent_id', prestudent_id); + req.add('studiensemester_kurzbz', studiensemester_kurzbz); + req.add('ausbildungssemester', ausbildungssemester); + req.add('studiengang_kz', studiengang_kz); + + var response = req.executePOST(); + + var val = new ParseReturnValue(response) + + if (!val.dbdml_return) + { + if(val.dbdml_errormsg=='') + alert(response) + else + alert(val.dbdml_errormsg) + } + else + { + StudentDetailRolleTreeDatasource.Refresh(false); + SetStatusBarText('Daten wurden geloescht'); + } + } } else { - StudentDetailRolleTreeDatasource.Refresh(false); - SetStatusBarText('Daten wurden geloescht'); + var url = 'content/student/studentDBDML.php'; + var req = new phpRequest(url,'',''); + + req.add('type', 'deleterolle'); + + req.add('status_kurzbz', status_kurzbz); + req.add('prestudent_id', prestudent_id); + req.add('studiensemester_kurzbz', studiensemester_kurzbz); + req.add('ausbildungssemester', ausbildungssemester); + req.add('studiengang_kz', studiengang_kz); + + var response = req.executePOST(); + + var val = new ParseReturnValue(response) + + if (!val.dbdml_return) + { + if(val.dbdml_errormsg=='') + alert(response) + else + alert(val.dbdml_errormsg) + } + else + { + StudentDetailRolleTreeDatasource.Refresh(false); + SetStatusBarText('Daten wurden geloescht'); + } } } } diff --git a/include/log.class.php b/include/log.class.php index 4f3b4140d..ef7cda5b5 100644 --- a/include/log.class.php +++ b/include/log.class.php @@ -164,7 +164,30 @@ class log extends basis_db if($this->db_query($qry)) { - return true; + if($new) + { + //Sequence Auslesen + $qry = "SELECT currval('public.tbl_log_log_id_seq') as id"; + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->log_id = $row->id; + $this->db_query('COMMIT;'); + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + } + } + return true; } else { diff --git a/include/prestudent.class.php b/include/prestudent.class.php index e3195c315..c2d15c371 100755 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -872,11 +872,11 @@ class prestudent extends person } /** - * Loescht einen Prestudentstatus - * @param $prestudent_id - * $status_kurzbz - * $studiensemester_kurzbz - * $ausbildungssemester + * Loescht einen Prestudentstatus und legt einen Log-Eintrag dafuer an + * @param integer $prestudent_id + * @param string $status_kurzbz + * @param string $studiensemester_kurzbz + * @param integer $ausbildungssemester * @return true wenn ok, false wenn Fehler */ public function delete_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester) @@ -928,10 +928,10 @@ class prestudent extends person $this->db_add_param($this->statusgrund_id, FHC_INTEGER).');'; if($log->save(true)) { - if($this->db_query($qry)) { $this->db_query('COMMIT'); + $this->log_id = $log->log_id; return true; } else @@ -1745,4 +1745,101 @@ class prestudent extends person return false; } } + + /** + * Loescht einen Prestudenten und legt einen Log-Eintrag dafuer an + * @param integer $prestudent_id + * @return true wenn ok, false wenn Fehler + */ + public function deletePrestudent($prestudent_id) + { + if(!is_numeric($prestudent_id)) + { + $this->errormsg = 'Prestudent_id ist ungueltig'; + return false; + } + + $qry = "DELETE FROM public.tbl_prestudent + WHERE + prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + + if($this->load($prestudent_id)) + { + $this->db_query('BEGIN;'); + + $log = new log(); + + $log->executetime = date('Y-m-d H:i:s'); + $log->beschreibung = 'Loeschen der Prestudent ID '.$prestudent_id; + $log->mitarbeiter_uid = get_uid(); + $log->sql = $qry; + $log->sqlundo = 'INSERT INTO public.tbl_prestudent( + prestudent_id, aufmerksamdurch_kurzbz, studiengang_kz, berufstaetigkeit_code, ausbildungcode, + zgv_code, zgvort, zgvdatum, zgvnation, zgvmas_code, zgvmaort, zgvmadatum, zgvmanation, + aufnahmeschluessel, facheinschlberuf, anmeldungreihungstest, reihungstestangetreten, reihungstest_id, + punkte, rt_punkte1, rt_punkte2, rt_punkte3, bismelden, person_id, anmerkung, mentor, ext_id_prestudent, + dual, ausstellungsstaat, zgvdoktor_code, zgvdoktorort, zgvdoktordatum, zgvdoktornation, + gsstudientyp_kurzbz, aufnahmegruppe_kurzbz) VALUES('. + $this->db_add_param($this->prestudent_id).','. + $this->db_add_param($this->aufmerksamdurch_kurzbz).','. + $this->db_add_param($this->studiengang_kz).','. + $this->db_add_param($this->berufstaetigkeit_code).','. + $this->db_add_param($this->ausbildungcode).','. + $this->db_add_param($this->zgv_code).','. + $this->db_add_param($this->zgvort).','. + $this->db_add_param($this->zgvdatum).','. + $this->db_add_param($this->zgvnation).','. + $this->db_add_param($this->zgvmas_code).','. + $this->db_add_param($this->zgvmaort).','. + $this->db_add_param($this->zgvmadatum).','. + $this->db_add_param($this->zgvmanation).','. + $this->db_add_param($this->aufnahmeschluessel).','. + $this->db_add_param($this->facheinschlberuf, FHC_BOOLEAN).','. + $this->db_add_param($this->anmeldungreihungstest).','. + $this->db_add_param($this->reihungstestangetreten, FHC_BOOLEAN).','. + $this->db_add_param($this->reihungstest_id).','. + $this->db_add_param($this->punkte).','. + $this->db_add_param($this->rt_punkte1).','. + $this->db_add_param($this->rt_punkte2).','. + $this->db_add_param($this->rt_punkte3).','. + $this->db_add_param($this->bismelden, FHC_BOOLEAN).','. + $this->db_add_param($this->person_id).','. + $this->db_add_param($this->anmerkung).','. + $this->db_add_param($this->mentor).','. + $this->db_add_param($this->ext_id_prestudent).','. + $this->db_add_param($this->dual, FHC_BOOLEAN).','. + $this->db_add_param($this->ausstellungsstaat).','. + $this->db_add_param($this->zgvdoktor_code).','. + $this->db_add_param($this->zgvdoktorort).','. + $this->db_add_param($this->zgvdoktordatum).','. + $this->db_add_param($this->zgvdoktornation).','. + $this->db_add_param($this->gsstudientyp_kurzbz).','. + $this->db_add_param($this->aufnahmegruppe_kurzbz).');'; + + if($log->save(true)) + { + if($this->db_query($qry)) + { + $this->db_query('COMMIT'); + return true; + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Loeschen der Daten'; + return false; + } + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + return false; + } + } } diff --git a/locale/de-AT/global.php b/locale/de-AT/global.php index b30b02f3a..5c6549d76 100755 --- a/locale/de-AT/global.php +++ b/locale/de-AT/global.php @@ -91,6 +91,7 @@ $this->phrasen['global/bezeichnung']='Bezeichnung'; $this->phrasen['global/datum']='Datum'; $this->phrasen['global/stunde']='Stunde'; $this->phrasen['global/minute']='Minute'; +$this->phrasen['global/uhrzeit']='Uhrzeit'; $this->phrasen['global/person']='Person'; $this->phrasen['global/personen']='Personen'; $this->phrasen['global/personenkz']='Personenkz.'; diff --git a/locale/en-US/global.php b/locale/en-US/global.php index 33ad75369..2f8a32b58 100755 --- a/locale/en-US/global.php +++ b/locale/en-US/global.php @@ -6,10 +6,16 @@ $this->phrasen['global/semester']='Semester'; $this->phrasen['global/studiensemester']='Semester'; $this->phrasen['global/studienzentrum']='Study Center'; $this->phrasen['global/studiengangsleitung']='Program Director'; +$this->phrasen['global/leitung']='Head'; +$this->phrasen['global/koordination']='Coordination'; $this->phrasen['global/lehrveranstaltung']='Subject'; $this->phrasen['global/lehreinheit']='Teaching unit'; $this->phrasen['global/organisationseinheit']='Organisation Unit'; $this->phrasen['global/organisationseinheiten']='Organisation Units'; +$this->phrasen['global/organisationsform']='Organisational form'; + +$this->phrasen['global/ects']='ECTS'; +$this->phrasen['global/semesterstunden']='Units per semester'; $this->phrasen['global/studiengangsmanagement']='Study Management'; $this->phrasen['global/geschaeftsfuehrendeltg']='business Leadership'; @@ -85,6 +91,7 @@ $this->phrasen['global/bezeichnung']='Description'; $this->phrasen['global/datum']='Date'; $this->phrasen['global/stunde']='Hour'; $this->phrasen['global/minute']='Minute'; +$this->phrasen['global/uhrzeit']='Time'; $this->phrasen['global/person']='Person'; $this->phrasen['global/personenkz']='StudentID'; $this->phrasen['global/personen']='Number of Persons';