From bfdec12c0edaba2fca51b9fd2701cd72b670a12c Mon Sep 17 00:00:00 2001 From: Alexei Karpenko Date: Mon, 25 May 2026 13:52:05 +0200 Subject: [PATCH] Ferienverwaltung: CI code: made completely independent from studiengang, legacy code: made backwards compatible by including oe_kurzbz where applicable --- .../api/frontend/v1/education/Ferien.php | 40 +++---------------- .../ferienverwaltung/ferienverwaltung.js | 6 --- vilesci/lehre/ferienverwaltung.php | 8 ++-- 3 files changed, 10 insertions(+), 44 deletions(-) diff --git a/application/controllers/api/frontend/v1/education/Ferien.php b/application/controllers/api/frontend/v1/education/Ferien.php index af69699d7..9a60e949c 100644 --- a/application/controllers/api/frontend/v1/education/Ferien.php +++ b/application/controllers/api/frontend/v1/education/Ferien.php @@ -27,7 +27,6 @@ if (!defined('BASEPATH')) exit('No direct script access allowed'); class Ferien extends FHCAPI_Controller { const DEFAULT_BERECHTIGUNG = 'basis/ferien'; - const DEFAULT_STUDIENGANG_KZ = 0; /** * Calls the parent's constructor and prepares libraries and phrases @@ -40,7 +39,6 @@ class Ferien extends FHCAPI_Controller 'getOe' => self::DEFAULT_BERECHTIGUNG.':r', 'getStudienplaene' => self::DEFAULT_BERECHTIGUNG.':r', 'getFerientypen' => self::DEFAULT_BERECHTIGUNG.':r', - 'getStg' => self::DEFAULT_BERECHTIGUNG.':r', 'insert' => self::DEFAULT_BERECHTIGUNG.':w', 'update' => self::DEFAULT_BERECHTIGUNG.':w', 'delete' => self::DEFAULT_BERECHTIGUNG.':w' @@ -78,10 +76,9 @@ class Ferien extends FHCAPI_Controller $this->FerienModel->addSelect( 'tbl_ferien.ferien_id, tbl_ferien.bezeichnung, tbl_ferien.vondatum, tbl_ferien.bisdatum, - plan.studienplan_id, stg.studiengang_kz, oe.oe_kurzbz, fetyp.ferientyp_kurzbz, - oe.bezeichnung AS oe_bezeichnung, UPPER(stg.typ::varchar(1) || stg.kurzbz) AS studiengang_kuerzel, - plan.studienplan_id, plan.bezeichnung AS studienplan_bezeichnung, fetyp.mitarbeiter AS mitarbeiterrelevant, fetyp.studierende AS studierendenrelevant, - fetyp.lehre' + plan.studienplan_id, oe.oe_kurzbz, fetyp.ferientyp_kurzbz, oe.bezeichnung AS oe_bezeichnung, + plan.studienplan_id, plan.bezeichnung AS studienplan_bezeichnung, fetyp.mitarbeiter AS mitarbeiterrelevant, + fetyp.studierende AS studierendenrelevant, fetyp.lehre' ); $this->FerienModel->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT'); $this->FerienModel->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); @@ -226,20 +223,6 @@ class Ferien extends FHCAPI_Controller $this->terminateWithSuccess($data); } - /** - * Get list of Studiengaenge - */ - public function getStg() - { - $this->StudiengangModel->addSelect(' tbl_studiengang.*, UPPER(typ::varchar(1) || kurzbz) AS kuerzel'); - $this->StudiengangModel->addOrder('typ, kurzbz'); - $result = $this->StudiengangModel->loadWhere(['aktiv' => true]); - - $data = $this->getDataOrTerminateWithError($result); - - $this->terminateWithSuccess($data); - } - /** * Add Ferien */ @@ -253,13 +236,6 @@ class Ferien extends FHCAPI_Controller if (!$this->permissionlib->isBerechtigt(self::DEFAULT_BERECHTIGUNG, 'suid', $data['oe_kurzbz'])) return $this->terminateWithError($this->p->t('ui', 'keineBerechtigung')); - // get studiengang_kz from oe, otherwise default kz - $this->StudiengangModel->addSelect('studiengang_kz'); - $this->StudiengangModel->addLimit(1); - $result = $this->StudiengangModel->loadWhere(['oe_kurzbz' => $data['oe_kurzbz']]); - - $data['studiengang_kz'] = hasData($result) ? getData($result)[0]->studiengang_kz : self::DEFAULT_STUDIENGANG_KZ; - $data = array_merge($data, ['insertamum' => date('c'), 'insertvon' => getAuthUID()]); $id = $this->getDataOrTerminateWithError($this->FerienModel->insert($data)); @@ -353,8 +329,7 @@ class Ferien extends FHCAPI_Controller { if (isset($ferien_id)) { - $this->FerienModel->addSelect('tbl_ferien.oe_kurzbz, stg.oe_kurzbz AS studiengang_oe_kurzbz, studiengang_kz'); - $this->FerienModel->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT'); + $this->FerienModel->addSelect('oe_kurzbz'); $result = $this->FerienModel->load($ferien_id); if (isError($result)) return $this->terminateWithError(getError($result)); @@ -363,12 +338,7 @@ class Ferien extends FHCAPI_Controller { $ferien = getData($result)[0]; - if (isset($ferien->oe_kurzbz)) - $berechtigung_oe_kurzbz = $ferien->oe_kurzbz; - elseif (isset($ferien->studiengang_oe_kurzbz)) - $berechtigung_oe_kurzbz = $ferien->studiengang_oe_kurzbz; - - if ($this->permissionlib->isBerechtigt(self::DEFAULT_BERECHTIGUNG, $typ, $berechtigung_oe_kurzbz)) return; + if ($this->permissionlib->isBerechtigt(self::DEFAULT_BERECHTIGUNG, $typ, $ferien->oe_kurzbz)) return; } } diff --git a/public/js/api/factory/ferienverwaltung/ferienverwaltung.js b/public/js/api/factory/ferienverwaltung/ferienverwaltung.js index f9b30b3fd..09c9efa2f 100644 --- a/public/js/api/factory/ferienverwaltung/ferienverwaltung.js +++ b/public/js/api/factory/ferienverwaltung/ferienverwaltung.js @@ -49,12 +49,6 @@ export default { url: 'api/frontend/v1/education/ferien/getFerientypen' }; }, - getStg() { - return { - method: 'get', - url: 'api/frontend/v1/education/ferien/getStg' - }; - }, getDefaultVonBis() { return { method: 'get', diff --git a/vilesci/lehre/ferienverwaltung.php b/vilesci/lehre/ferienverwaltung.php index 5583ac2aa..8e61c7d46 100644 --- a/vilesci/lehre/ferienverwaltung.php +++ b/vilesci/lehre/ferienverwaltung.php @@ -125,11 +125,13 @@ } else { - $sql_query="INSERT INTO lehre.tbl_ferien (studiengang_kz, bezeichnung, vondatum, bisdatum) VALUES( + $sql_query="INSERT INTO lehre.tbl_ferien (studiengang_kz, bezeichnung, vondatum, bisdatum, oe_kurzbz) VALUES( ".$db->db_add_param($_POST['studiengang_kz'], FHC_INTEGER).", ".$db->db_add_param($_POST['bezeichnung']).", ".$db->db_add_param($datum_obj->formatDatum($_POST['vondatum'],'Y-m-d')).", - ".$db->db_add_param($datum_obj->formatDatum($_POST['bisdatum'],'Y-m-d')).");"; + ".$db->db_add_param($datum_obj->formatDatum($_POST['bisdatum'],'Y-m-d')).", + CASE WHEN ".$db->db_add_param($_POST['studiengang_kz'], FHC_INTEGER)." = 0 THEN NULL + ELSE (SELECT oe_kurzbz FROM public.tbl_studiengang WHERE studiengang_kz = ".$db->db_add_param($_POST['studiengang_kz'], FHC_INTEGER).") END);"; //echo $sql_query; $db->db_query($sql_query); $stg_kz = $_POST['studiengang_kz']; @@ -251,7 +253,7 @@ { echo ' - '.$db->convert_html_chars($stg_arr[$row->studiengang_kz]).' + '.$db->convert_html_chars($stg_arr[$row->studiengang_kz] ?? '').' '.$db->convert_html_chars($row->vondatum).' '.$db->convert_html_chars($row->bisdatum).' '.$db->convert_html_chars($row->bezeichnung).'';