From 08c594148bfb0f20a113b670fc67911e5b023e2d Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 17 May 2023 08:41:04 +0200 Subject: [PATCH 1/8] - details bei abgewiesenen --- .../controllers/system/infocenter/InfoCenter.php | 11 +++++++++-- .../system/infocenter/infocenterAbgewiesenData.php | 11 +++++++++++ .../views/system/infocenter/infocenterDetails.php | 3 ++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 548b071d3..1e6639d25 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -314,7 +314,7 @@ class InfoCenter extends Auth_Controller show_error('Person does not exist!'); $origin_page = $this->input->get(self::ORIGIN_PAGE); - if ($origin_page == self::INDEX_PAGE) + if (in_array($origin_page, array(self::INDEX_PAGE, self::ABGEWIESEN_PAGE))) { // mark person as locked for editing $result = $this->PersonLockModel->lockPerson($person_id, $this->_uid, self::APP); @@ -359,7 +359,14 @@ class InfoCenter extends Auth_Controller if (isError($result)) show_error(getError($result)); - $redirectLink = '/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId(); + $origin_page = $this->input->get(self::ORIGIN_PAGE); + + if ($origin_page === self::ABGEWIESEN_PAGE) + $redirectLink = self::INFOCENTER_URI. '/' .self::ABGEWIESEN_PAGE; + else + $redirectLink = '/'.self::INFOCENTER_URI; + + $redirectLink .= '?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId(); // Force reload of Dataset after Unlock $redirectLink .= '&'.self::KEEP_TABLESORTER_FILTER.'=true'; diff --git a/application/views/system/infocenter/infocenterAbgewiesenData.php b/application/views/system/infocenter/infocenterAbgewiesenData.php index d09f0f41e..94d3d6ee1 100644 --- a/application/views/system/infocenter/infocenterAbgewiesenData.php +++ b/application/views/system/infocenter/infocenterAbgewiesenData.php @@ -70,6 +70,7 @@ $query = ' 'requiredPermissions' => 'infocenter', 'datasetRepresentation' => 'tablesorter', 'checkboxes' => 'PersonId', + 'additionalColumns' => array('Details'), 'columnsAliases' => array( 'PersonId', 'PreStudentID', @@ -82,6 +83,16 @@ $query = ' ), 'formatRow' => function($datasetRaw) { + /* NOTE: Dont use $this here for PHP Version compatibility */ + $datasetRaw->{'Details'} = sprintf( + 'Details', + site_url('system/infocenter/InfoCenter/showDetails'), + $datasetRaw->{'PersonId'}, + 'abgewiesen', + (isset($_GET['fhc_controller_id']) ? $_GET['fhc_controller_id'] : ''), + (isset($_GET['filter_id']) ? $_GET['filter_id'] : '') + ); + if ($datasetRaw->{'Nachricht'} === null) { $datasetRaw->{'Nachricht'} = 'Nein'; diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php index 401e34099..c61bb3cd2 100644 --- a/application/views/system/infocenter/infocenterDetails.php +++ b/application/views/system/infocenter/infocenterDetails.php @@ -57,10 +57,11 @@ if (isset($lockedby)): echo $this->p->t('global', 'wirdBearbeitetVon').': '; echo $lockedby; - if ($origin_page == 'index'): + if (in_array($origin_page, array('index', 'abgewiesen'))): $unlockpath = 'unlockPerson/'.$stammdaten->person_id; $unlockpath .= '?fhc_controller_id='.$fhc_controller_id; $unlockpath .= '&filter_id='.$prev_filter_id; + $unlockpath .= '&origin_page='.$origin_page; ?>    From 8584be651b00498d8d03395cfc3469e5fb46c528 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 17 May 2023 15:06:39 +0200 Subject: [PATCH 2/8] - sperren von rts bearbeitet --- vilesci/stammdaten/auswertung_fhtw.php | 103 +++++++++++++++++++------ 1 file changed, 79 insertions(+), 24 deletions(-) diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php index e5975b651..2d3d1bc61 100644 --- a/vilesci/stammdaten/auswertung_fhtw.php +++ b/vilesci/stammdaten/auswertung_fhtw.php @@ -490,22 +490,58 @@ if ($rtprueflingEntSperren) exit(); } - if (isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']) + if (isset($_POST['person_id']) && is_numeric($_POST['person_id']) && isset($_POST['art'])) { - $qry = "UPDATE testtool.tbl_pruefling SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . " - WHERE prestudent_id IN - (SELECT prestudent_id FROM public.tbl_prestudent ps - JOIN public.tbl_person tp ON tp.person_id = ps.person_id - WHERE tp.person_id = (SELECT person_id FROM public.tbl_prestudent sps WHERE sps.prestudent_id = " . $db->db_add_param($_POST['prestudent_id']) . "));"; + $qry = "SELECT pruefling_id + FROM testtool.tbl_pruefling + WHERE prestudent_id IN ( + SELECT prestudent_id + FROM public.tbl_prestudent + WHERE person_id = ". $db->db_add_param($_POST['person_id']) . " + )"; + if ($result = $db->db_query($qry)) { - $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet'; - echo json_encode(array( - 'status' => 'ok', - 'msg' => $msg)); - exit(); + + if ($db->db_num_rows($result) === 0) + { + echo json_encode(array( + 'status' => 'warning', + 'msg' => 'Kein Pruefling gefunden!' + )); + exit(); + } + else + { + $pruefling_ids = array(); + while ($row = $db->db_fetch_object($result)) + { + $pruefling_ids[] = $row->pruefling_id; + } + + + $qry = "UPDATE testtool.tbl_pruefling SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . " + WHERE pruefling_id IN (" . $db->db_implode4SQL($pruefling_ids) . ")"; + + if ($result_update = $db->db_query($qry)) + { + $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet'; + echo json_encode(array( + 'status' => 'ok', + 'msg' => $msg)); + exit(); + } + else + { + echo json_encode(array( + 'status' => 'fehler', + 'msg' => 'Fehler beim speichern der Daten' + )); + exit(); + } + } } else { @@ -1650,6 +1686,7 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit'])) } $gebiete_arr = array(); + $gesperrt_arr = array(); while ($row = $db->db_fetch_object($result)) { // Hack für BEW-BB, wenn auch BEW-DL-Ergebnisse vorliegen @@ -1666,7 +1703,10 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit'])) $ergebnis[$row->prestudent_id] = new stdClass(); $gebiete_arr[$row->prestudent_id] = array(); } - + + if (!isset($gesperrt_arr[$row->person_id])) + $gesperrt_arr[$row->person_id] = new stdClass(); + $ergebnis[$row->prestudent_id]->prestudent_id = $row->prestudent_id; $ergebnis[$row->prestudent_id]->person_id = $row->person_id; $ergebnis[$row->prestudent_id]->reihungstest_id = $row->reihungstest_id; @@ -1678,7 +1718,6 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit'])) $ergebnis[$row->prestudent_id]->geschlecht = $row->geschlecht; $ergebnis[$row->prestudent_id]->idnachweis = $row->idnachweis; $ergebnis[$row->prestudent_id]->registriert = $row->registriert; - $ergebnis[$row->prestudent_id]->gesperrt = $row->gesperrt; $ergebnis[$row->prestudent_id]->stg_kurzbz = $row->stg_kurzbz; $ergebnis[$row->prestudent_id]->stg_bez = $row->stg_bez; $ergebnis[$row->prestudent_id]->ausbildungssemester = $row->ausbildungssemester; @@ -1690,6 +1729,13 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit'])) $ergebnis[$row->prestudent_id]->teilgenommen = $db->db_parse_bool($row->teilgenommen); $ergebnis[$row->prestudent_id]->qualifikationskurs = $db->db_parse_bool($row->qualifikationskurs); $ergebnis[$row->prestudent_id]->letzter_status = $row->letzter_status; + $ergebnis[$row->prestudent_id]->gesperrt = $row->gesperrt; + + $gesperrt = $db->db_parse_bool($row->gesperrt); + if (!isset($gesperrt_arr[$row->person_id]->gesperrt) || ($gesperrt_arr[$row->person_id]->gesperrt !== true && $gesperrt === true)) + { + $gesperrt_arr[$row->person_id]->gesperrt = $gesperrt; + } if (!isset($ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id])) { @@ -2440,7 +2486,7 @@ else }); } } - function prueflingEntSperren(prestudent_id, name, art) + function prueflingEntSperren(person_id, name, art) { if (art === true) var text = "sperren"; @@ -2450,7 +2496,7 @@ else if (confirm("Wollen Sie den Studenten "+ name + " wirklich " + text + "?")) { data = { - prestudent_id: prestudent_id, + person_id: person_id, art: art, rtprueflingEntSperren: true }; @@ -2464,21 +2510,30 @@ else { if(data.status !== "ok") { - $("#msgbox").attr("class","alert alert-danger"); - $("#msgbox").show(); - $("#msgbox").html(data["msg"]); + if (data.status === "warning") + { + $("#msgbox").attr("class","alert alert-warning"); + $("#msgbox").show(); + $("#msgbox").html(data["msg"]); + } + else + { + $("#msgbox").attr("class","alert alert-danger"); + $("#msgbox").show(); + $("#msgbox").html(data["msg"]); + } } else { if (art === true) { - $("#prueflingentsperren_" + prestudent_id).removeClass("hidden"); - $("#prueflingsperren_" + prestudent_id).addClass("hidden"); + $(".prueflingentsperren_" + person_id).removeClass("hidden"); + $(".prueflingsperren_" + person_id).addClass("hidden"); } else if (art === false) { - $("#prueflingsperren_" + prestudent_id).removeClass("hidden"); - $("#prueflingentsperren_" + prestudent_id).addClass("hidden"); + $(".prueflingsperren_" + person_id).removeClass("hidden"); + $(".prueflingentsperren_" + person_id).addClass("hidden"); } } }, @@ -3293,10 +3348,10 @@ else echo " - + - + "; From 54de577eee823a1e4def530cd2b43046fec1feae Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 17 May 2023 15:08:52 +0200 Subject: [PATCH 3/8] - ausblenden des warnings --- vilesci/stammdaten/auswertung_fhtw.php | 1 + 1 file changed, 1 insertion(+) diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php index 2d3d1bc61..e72c03bc5 100644 --- a/vilesci/stammdaten/auswertung_fhtw.php +++ b/vilesci/stammdaten/auswertung_fhtw.php @@ -2515,6 +2515,7 @@ else $("#msgbox").attr("class","alert alert-warning"); $("#msgbox").show(); $("#msgbox").html(data["msg"]); + $("#msgbox").html(data["msg"]).delay(2000).fadeOut(); } else { From 2f573263ba5cb3d00ef3e018cf2684048ef32b7c Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 17 May 2023 16:00:34 +0200 Subject: [PATCH 4/8] - abfrage ob der pruefling bereits gesperrt ist --- cis/testtool/frage.php | 2 +- include/pruefling.class.php | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php index 6f47992a1..9f6cd4fb7 100644 --- a/cis/testtool/frage.php +++ b/cis/testtool/frage.php @@ -161,7 +161,7 @@ if(!isset($_SESSION['pruefling_id'])) $pruefling = new pruefling(); $pruefling->load($_SESSION['pruefling_id']); -if ($pruefling->gesperrt === 't') +if ($pruefling->isGesperrt($_SESSION['pruefling_id'])) die(""); if (!in_array($gebiet_id, $_SESSION['alleGebiete'])) diff --git a/include/pruefling.class.php b/include/pruefling.class.php index fc64d90c4..2a482d793 100644 --- a/include/pruefling.class.php +++ b/include/pruefling.class.php @@ -557,5 +557,31 @@ class pruefling extends basis_db return false; } } + + public function isGesperrt($pruefling_id) + { + $qry = "SELECT spruefling.gesperrt + FROM testtool.tbl_pruefling + JOIN public.tbl_prestudent USING(prestudent_id) + JOIN public.tbl_person USING (person_id) + JOIN public.tbl_prestudent pss ON pss.person_id = tbl_person.person_id + JOIN testtool.tbl_pruefling spruefling ON pss.prestudent_id = spruefling.prestudent_id + WHERE tbl_pruefling.pruefling_id = ".$this->db_add_param($pruefling_id, FHC_INTEGER)." + AND spruefling.gesperrt + LIMIT 1"; + + if($result = $this->db_query($qry)) + { + if ($this->db_num_rows($result) == 0) + return false; + else + return true; + } + else + { + $this->errormsg = 'Fehler bei einer Abfrage'; + return false; + } + } } ?> From 311d235fda8cad5e69ac78702ef50a4106c45c4c Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 17 May 2023 16:35:22 +0200 Subject: [PATCH 5/8] - abgewiesene gesperrt von spalte --- .../infocenter/infocenterAbgewiesenData.php | 33 +++++++++++++++++++ system/filtersupdate.php | 3 +- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/application/views/system/infocenter/infocenterAbgewiesenData.php b/application/views/system/infocenter/infocenterAbgewiesenData.php index 94d3d6ee1..2307ea87e 100644 --- a/application/views/system/infocenter/infocenterAbgewiesenData.php +++ b/application/views/system/infocenter/infocenterAbgewiesenData.php @@ -1,6 +1,7 @@ config->load('infocenter'); + $APP = '\'infocenter\''; $ABGEWIESENEN_STATUS = '\'Abgewiesener\''; $STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\''; $ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz'); @@ -17,6 +18,8 @@ $query = ' p.nachname AS "Nachname", so.studiengangkurzbzlang as "Studiengang", pss.insertamum AS "AbgewiesenAm", + pl.zeitpunkt AS "LockDate", + pl.lockuser AS "LockUser", ( SELECT l.zeitpunkt FROM system.tbl_log l @@ -54,6 +57,15 @@ $query = ' JOIN public.tbl_studiengang sg USING(studiengang_kz) JOIN lehre.tbl_studienplan sp USING(studienplan_id) JOIN lehre.tbl_studienordnung so USING(studienordnung_id) + LEFT JOIN ( + SELECT tpl.person_id, + tpl.zeitpunkt, + sp.nachname AS lockuser + FROM system.tbl_person_lock tpl + JOIN public.tbl_benutzer sb USING (uid) + JOIN public.tbl_person sp ON sb.person_id = sp.person_id + WHERE tpl.app = '.$APP.' + ) pl USING(person_id) WHERE pss.status_kurzbz = '. $ABGEWIESENEN_STATUS .' AND pss.studiensemester_kurzbz = '. $STUDIENSEMESTER .' AND (sg.typ IN ('. $STUDIENGANG_TYP .') @@ -78,6 +90,8 @@ $query = ' ucfirst($this->p->t('person', 'nachname')), ucfirst($this->p->t('lehre', 'studiengang')), ucfirst($this->p->t('infocenter', 'abgewiesenam')), + ucfirst($this->p->t('global', 'sperrdatum')), + ucfirst($this->p->t('global', 'gesperrtVon')), ucfirst($this->p->t('global', 'nachricht')), ucfirst($this->p->t('infocenter', 'kaution')) ), @@ -114,10 +128,29 @@ $query = ' { $datasetRaw->{'Kaution'} = 'Offen'; } + + if ($datasetRaw->{'LockDate'} == null) + { + $datasetRaw->{'LockDate'} = '-'; + } + + if ($datasetRaw->{'LockUser'} == null) + { + $datasetRaw->{'LockUser'} = '-'; + } $datasetRaw->{'AbgewiesenAm'} = date_format(date_create($datasetRaw->{'AbgewiesenAm'}),'Y-m-d H:i'); return $datasetRaw; + }, + + 'markRow' => function($datasetRaw) { + + if ($datasetRaw->LockDate != null) + { + return FilterWidget::DEFAULT_MARK_ROW_CLASS; + } } + ); echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray); diff --git a/system/filtersupdate.php b/system/filtersupdate.php index 2ed253422..abdea4532 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -520,7 +520,8 @@ $filters = array( {"name": "Studiengang"}, {"name": "AbgewiesenAm"}, {"name": "Nachricht"}, - {"name": "Kaution"} + {"name": "Kaution"}, + {"name": "LockUser"} ], "filters": [] } From f5ee097b72eb37c7ce10f976c7b3a6c0ae8709b9 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Fri, 2 Jun 2023 12:01:31 +0200 Subject: [PATCH 6/8] - doppelte benutzer bug fix --- application/models/person/Person_model.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index 8875fd4c5..ed21082e2 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -326,10 +326,12 @@ class Person_model extends DB_Model SELECT p2.person_id FROM tbl_person p1 + JOIN tbl_prestudent ps ON p1.person_id = ps.person_id INNER JOIN ( - SELECT vorname, nachname, gebdatum, person_id - FROM tbl_person - ) p2 + SELECT vorname, nachname, gebdatum, person.person_id + FROM tbl_person person + JOIN tbl_prestudent sps ON person.person_id = sps.person_id + ) p2 ON (lower(p1.vorname) = lower(p2.vorname) AND lower(p1.nachname) = lower(p2.nachname) AND p1.gebdatum = p2.gebdatum) WHERE p1.person_id != p2.person_id AND (p1.person_id = ?)"; From a81ceb51b8a6c6febc976d7c79f4cf4bcc489650 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 22 Jun 2023 10:23:00 +0200 Subject: [PATCH 7/8] - rt sperre vor dem login moeglich --- cis/testtool/login.php | 3 ++ include/pruefling.class.php | 30 +++++++++--- vilesci/stammdaten/auswertung_fhtw.php | 67 +++++++++++++++----------- 3 files changed, 63 insertions(+), 37 deletions(-) diff --git a/cis/testtool/login.php b/cis/testtool/login.php index 0b114b8c5..0ff84f4a0 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -362,6 +362,8 @@ if ((isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']) && $pruefling->idnachweis = ''; $pruefling->registriert = date('Y-m-d H:i:s'); $pruefling->prestudent_id = $_SESSION['prestudent_id']; + $pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']); + if ($pruefling->save()) { $_SESSION['pruefling_id']=$pruefling->pruefling_id; @@ -385,6 +387,7 @@ if (isset($_POST['save']) && isset($_SESSION['prestudent_id'])) $pruefling->registriert = date('Y-m-d H:i:s'); $pruefling->prestudent_id = $_SESSION['prestudent_id']; $pruefling->semester = $_POST['semester']; + $pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']); if ($pruefling->save()) { $_SESSION['pruefling_id']=$pruefling->pruefling_id; diff --git a/include/pruefling.class.php b/include/pruefling.class.php index 2a482d793..efe660ca9 100644 --- a/include/pruefling.class.php +++ b/include/pruefling.class.php @@ -108,12 +108,13 @@ class pruefling extends basis_db if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE { - $qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester) VALUES('. + $qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester, gesperrt) VALUES('. $this->db_add_param($this->studiengang_kz).",". $this->db_add_param($this->idnachweis).",". $this->db_add_param($this->registriert).",". $this->db_add_param($this->prestudent_id).",". - $this->db_add_param($this->semester).");"; + $this->db_add_param($this->semester).",". + $this->db_add_param($this->gesperrt, FHC_BOOLEAN).");"; } else { @@ -122,7 +123,8 @@ class pruefling extends basis_db ' idnachweis='.$this->db_add_param($this->idnachweis).','. ' registriert='.$this->db_add_param($this->registriert).','. ' semester='.$this->db_add_param($this->semester).','. - ' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER). + ' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).','. + ' gesperrt='.$this->db_add_param($this->gesperrt, FHC_BOOLEAN). " WHERE pruefling_id=".$this->db_add_param($this->pruefling_id, FHC_INTEGER, false).";"; } @@ -558,18 +560,30 @@ class pruefling extends basis_db } } - public function isGesperrt($pruefling_id) + public function isGesperrt($pruefling_id = null, $prestudent_id = null) { + if (is_null($pruefling_id) && is_null($prestudent_id)) + { + $this->errormsg = 'Falsche Parameterübergabe'; + return false; + } + $qry = "SELECT spruefling.gesperrt FROM testtool.tbl_pruefling - JOIN public.tbl_prestudent USING(prestudent_id) + RIGHT JOIN public.tbl_prestudent USING(prestudent_id) JOIN public.tbl_person USING (person_id) JOIN public.tbl_prestudent pss ON pss.person_id = tbl_person.person_id JOIN testtool.tbl_pruefling spruefling ON pss.prestudent_id = spruefling.prestudent_id - WHERE tbl_pruefling.pruefling_id = ".$this->db_add_param($pruefling_id, FHC_INTEGER)." - AND spruefling.gesperrt - LIMIT 1"; + WHERE spruefling.gesperrt"; + + if (!is_null($pruefling_id)) + $qry .= " AND tbl_pruefling.pruefling_id = ".$this->db_add_param($pruefling_id, FHC_INTEGER); + if (!is_null($prestudent_id)) + $qry .= " AND tbl_prestudent.prestudent_id = ".$this->db_add_param($prestudent_id, FHC_INTEGER); + + $qry .= " LIMIT 1"; + if($result = $this->db_query($qry)) { if ($this->db_num_rows($result) == 0) diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php index e72c03bc5..92470ce84 100644 --- a/vilesci/stammdaten/auswertung_fhtw.php +++ b/vilesci/stammdaten/auswertung_fhtw.php @@ -501,46 +501,55 @@ if ($rtprueflingEntSperren) WHERE person_id = ". $db->db_add_param($_POST['person_id']) . " )"; - if ($result = $db->db_query($qry)) { - if ($db->db_num_rows($result) === 0) { - echo json_encode(array( - 'status' => 'warning', - 'msg' => 'Kein Pruefling gefunden!' - )); - exit(); + $ps = new prestudent(); + $ps->getPrestudenten($_POST['person_id']); + + $prestudent = new prestudent($ps->result[0]->prestudent_id); + $prestudent->getLastStatus($prestudent->prestudent_id); + + $pruefling = new pruefling(); + $pruefling->new = true; + $pruefling->studiengang_kz = $prestudent->studiengang_kz; + $pruefling->registriert = date('Y-m-d H:i:s'); + $pruefling->semester = $prestudent->ausbildungssemester; + $pruefling->prestudent_id = $prestudent->prestudent_id; + $pruefling->gesperrt = true; + + $resultSperre = $pruefling->save(); } else { $pruefling_ids = array(); + while ($row = $db->db_fetch_object($result)) - { $pruefling_ids[] = $row->pruefling_id; - } - - - $qry = "UPDATE testtool.tbl_pruefling SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . " + + $qry = "UPDATE testtool.tbl_pruefling + SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . " WHERE pruefling_id IN (" . $db->db_implode4SQL($pruefling_ids) . ")"; - - if ($result_update = $db->db_query($qry)) - { - $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet'; - echo json_encode(array( - 'status' => 'ok', - 'msg' => $msg)); - exit(); - } - else - { - echo json_encode(array( - 'status' => 'fehler', - 'msg' => 'Fehler beim speichern der Daten' - )); - exit(); - } + + $resultSperre = $db->db_query($qry); + } + + if ($resultSperre) + { + $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet'; + echo json_encode(array( + 'status' => 'ok', + 'msg' => $msg)); + exit(); + } + else + { + echo json_encode(array( + 'status' => 'fehler', + 'msg' => 'Fehler beim speichern der Daten' + )); + exit(); } } else From f49771ec7f433b15f9f17198564c26c392de4587 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 29 Jun 2023 12:10:50 +0200 Subject: [PATCH 8/8] - berechtigungen fuer die sequence hinzugefuegt --- system/dbupdate_3.4.php | 1 + .../29529_infocenter_anpassungen.php | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 system/dbupdate_3.4/29529_infocenter_anpassungen.php diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index 106e509a1..aa4221bf4 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -36,6 +36,7 @@ require_once('dbupdate_3.4/19154_beurteilungsformulare_pruefungssenat.php'); require_once('dbupdate_3.4/27949_infocenter_zurueckstellen_mit_grund.php'); require_once('dbupdate_3.4/27107_vilesci_erfassung_abwesenheiten_reinigung.php'); require_once('dbupdate_3.4/24913_tabelle_raumtyp_neues_attribut_aktiv.php'); +require_once('dbupdate_3.4/29529_infocenter_anpassungen.php'); // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; diff --git a/system/dbupdate_3.4/29529_infocenter_anpassungen.php b/system/dbupdate_3.4/29529_infocenter_anpassungen.php new file mode 100644 index 000000000..e11f3ed39 --- /dev/null +++ b/system/dbupdate_3.4/29529_infocenter_anpassungen.php @@ -0,0 +1,34 @@ +db_query("SELECT has_sequence_privilege('web', 'testtool.tbl_pruefling_pruefling_id_seq', 'UPDATE')")) +{ + + if($db->db_fetch_object($result)->has_sequence_privilege === "f") + { + $qry = "GRANT SELECT, UPDATE ON SEQUENCE testtool.tbl_pruefling_pruefling_id_seq to web;"; + + if(!$db->db_query($qry)) + echo 'testtool.tbl_pruefling Berechtigungen: '.$db->db_last_error().'
'; + else + echo '
Web User fuer testtool.tbl_pruefling berechtigt'; + } +} + +// Update Berechtigungen fuer vilesci User erteilen fuer tbl_pruefling_pruefling_id_seq +if($result = @$db->db_query("SELECT has_sequence_privilege('vilesci', 'testtool.tbl_pruefling_pruefling_id_seq', 'UPDATE')")) +{ + if($db->db_fetch_object($result)->has_sequence_privilege === "f") + { + $qry = "GRANT SELECT, UPDATE ON SEQUENCE testtool.tbl_pruefling_pruefling_id_seq to vilesci;"; + + if(!$db->db_query($qry)) + echo 'testtool.tbl_pruefling Berechtigungen: '.$db->db_last_error().'
'; + else + echo '
vilesci User fuer testtool.tbl_pruefling berechtigt'; + } +} + +