Compare commits

..
Author SHA1 Message Date
Johann Hoffmann f4cc311806 getFormData (which loads lehrveranstaltungen) on editProjektarbeit + always query with student.studiengang_kz to have the same set of options when creating the projektarbeit; should work for incomings aswell. first attempt: lva in studienplan of last studentenstatus; if that yields no options just take the full lv list; 2026-06-17 10:44:55 +02:00
Johann Hoffmann df46b8ebdd Merge remote-tracking branch 'origin/master' into feature-75469/LeOptional4Projektarbeit 2026-06-16 10:46:44 +02:00
Johann Hoffmann 870c36e76b Merge remote-tracking branch 'origin/master' into feature-75469/LeOptional4Projektarbeit
# Conflicts:
#	system/dbupdate_3.4.php
2026-05-20 16:22:31 +02:00
Johann Hoffmann 4c0635be7c adapt lehrauftrag.xml.php queries to find projektbetreuer mitarbeiter_uid of projektarbeiten without le in future semesters for the lehrauftrag dokument (single lehrauftrag dokument curated for one betreuer) and also for the aggregated statistik listing the costs of all lehraufträge in a studiengang - resulting in the same data; 2026-04-02 16:45:03 +02:00
Johann Hoffmann 67b863f9db implemented the same studienplan lva_id check for stv projektarbeit anlage inside lva.rdf and lva.class; should result in the same data even though the quereies are written a second time; 2026-04-02 11:51:37 +02:00
Johann Hoffmann 7628ebc9ca remove unnecessary LE join in diplomasupplement.xml.php; fix studiensemester_kurzbz col datatype in dbupdate script; stv projektarbeit dropdown selection also by studienplan of current prestudent_status history entry 2026-04-01 16:05:51 +02:00
Johann Hoffmann deb6dad7ad WIP trying to get diplomasupplement.xml.php to print a thesis title; remove console log stv; removed le from getProjektarbeitStudiensemester in projektarbeit.class.php; 2026-03-30 18:45:01 +02:00
Johann Hoffmann 077f052112 stv projektarbeit getFormData call on actionEditProjektarbeit 2026-03-30 14:26:58 +02:00
Johann Hoffmann e7f57c9ddd remove last pa-le join from statistik/lvplanung.php 2026-03-30 13:52:50 +02:00
Johann Hoffmann 095e2bf581 revert lvgesamtnoteverwalten.php change 2026-03-27 11:29:04 +01:00
Johann Hoffmann 25345a0522 remove le join from vertrag.class.php; lehrauftrag_annehmen.xml.php fix 2nd query; 2026-03-27 11:24:38 +01:00
Johann Hoffmann e2b5201b5a remove le join from vertrag.class.php 2026-03-27 11:09:34 +01:00
Johann Hoffmann 5c80a382bf remove le join from lehrauftragsliste_gst.xls.php 2026-03-27 11:01:17 +01:00
Johann Hoffmann aa940683d6 remove le join from lvgesamtnoteverwalten.php 2026-03-27 10:49:13 +01:00
Johann Hoffmann 843c65d52b Lehraufträge workflow wurde angepasst & getestet für zukünftige Projektarbeiten ohne hinterlegte LE. Subqueries "Projektbetreuungsaufträge and -vertragsstati" verwenden KEINE Lehreinheit table mehr, join funktioniert via pb -> pa -> lva & where clauses wurden entsprechend auf pa.lva & pa.sem_kurzbz angepasst für orderLehrauftragData.php, approveLehrauftragData.php & acceptLehrauftragData.php.
Weitere Anpassung in Vertrag_model: prüfung auf lehreinheit nur wenn vertragstyp nicht 'Betreuung' ist.

Added missing "setFormData" Method in stv Projektarbeit Details component
2026-03-25 11:56:19 +01:00
Johann Hoffmann e26f4262df LEFT join tbl_projektarbeit with tbl_lehreinheit to account for nullability 2026-03-24 16:08:20 +01:00
Johann Hoffmann dde586e004 Merge remote-tracking branch 'origin/master' into feature-75469/LeOptional4Projektarbeit 2026-03-23 15:37:57 +01:00
Johann Hoffmann 506c23ae89 fix joins in lehrauftragData files from 'pa JOIN lv JOIN le' to 'pa JOIN le JOIN lv'; fix join in projektarbeit.class.php "getProjektarbeitStudiensemester" to also correctly join on le table first but with lva_id & sem_kurzbz as join conditions; push all the relevant changes from "feature-75838/UXImproveProjektarbeitSTVSprint247" since we apparently still want them in the LE optional branch; fix FAS issue where lva dropdown loaded a limited list when existing projektarbeit was loaded into UI -> now query the lehrveranstaltung.rdf with the stg_kz selected and then set the value to achieve desired behaviour; 2026-03-23 15:29:16 +01:00
Johann Hoffmann 335671b46a query fix 2026-03-17 17:03:18 +01:00
Johann Hoffmann 19b8c16057 specify lehrveranstaltung_id in 2 rdf queries 2026-03-17 16:15:47 +01:00
Johann Hoffmann dea3aac222 WIP stv projektarbeit detail modal ux rework 2026-03-16 17:20:31 +01:00
Johann Hoffmann 5d7281e470 Merge branch 'master' into feature-75469/LeOptional4Projektarbeit
# Conflicts:
#	application/controllers/api/frontend/v1/Abgabe.php
#	public/js/components/Cis/Abgabetool/AbgabetoolAssistenz.js
#	public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js
#	public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js
#	public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektbetreuer.js
#	system/phrasesupdate.php
2026-03-16 12:36:30 +01:00
Johann Hoffmann a7d925a177 even more legacy query projektarbeit join updates le_id -> lva_id & sem_kurzbz; WIP somehow touching the holy statistik queries 2026-03-13 12:58:55 +01:00
Johann Hoffmann 4ef4a06a7e more legacy query projektarbeit join updates le_id -> lva_id & sem_kurzbz 2026-03-12 18:30:12 +01:00
Johann Hoffmann 29515491a2 WIP legacy queries refactor projektarbeit lehreinheit optional 2026-03-12 14:02:52 +01:00
Johann Hoffmann 6cb8d0a9d1 projektarbeit fas tab lva_id & sem_kurzbz required; le optional 2026-03-11 15:06:11 +01:00
Johann Hoffmann 2c4574d93b form input bugfix where 2 inputs where needed for select elements after invalid validation; Abgabetool Download Latest Action; WIP stv projektarbeit details/betreuer considerations; WIP adding le_id -> lva_id & sem_kurzbz to FAS code; 2026-03-10 16:45:15 +01:00
Johann Hoffmann 2fde630971 adjust abgabetool queries Studentenverwaltung Projektarbeit Tab: lehreinheit required -> lehreinheit optional, lehrveranstaltung & studiensemester_kurbz required; changed occurences of the typo "Studiensemster" rigorously; 2026-03-09 15:25:44 +01:00
Johann Hoffmann fce5ee7a16 adjust abgabetool queries lehreinheit -> lehrveranstaltung table; always redraw with scrollX/Y preserve in abgabetool 2026-03-09 11:24:17 +01:00
Johann Hoffmann 8ccb9cd892 db migrate skript from le_id -> lva_id & stsem_kurzbz via existing references 2026-03-06 11:47:09 +01:00
Johann Hoffmann d1af44bcdc dbupdate entry; WIP table altering statements for lehre.tbl_projektarbeit 2026-03-05 17:33:18 +01:00
237 changed files with 5552 additions and 14383 deletions
+1 -12
View File
@@ -29,7 +29,7 @@ $config['ALLOWED_NOTEN_ABGABETOOL'] = [10, 14]; // tbl_note pk
// benotete projektarbeiten sperren weitere terminanlage & bearbeitung, diese noten sind ausnahmen dieser Regel // benotete projektarbeiten sperren weitere terminanlage & bearbeitung, diese noten sind ausnahmen dieser Regel
// wie zB "Nicht beurteilt" & "Noch nicht eingetragen" // wie zB "Nicht beurteilt" & "Noch nicht eingetragen"
$config['NONFINAL_NOTEN_ABGABETOOL'] = [9]; $config['NONFINAL_NOTEN_ABGABETOOL'] = [9];
$config['beurteilung_link_fallback'] = 'cis/private/lehre/projektbeurteilungDocumentExport.php?projektarbeit_id=?&betreuerart_kurzbz=?&person_id=?'; $config['beurteilung_link_fallback'] = 'addons/fhtw/content/projektbeurteilung/projektbeurteilungDocumentExport.php?projektarbeit_id=?&betreuerart_kurzbz=?&person_id=?';
$config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ERSTBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter'; $config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ERSTBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter';
$config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ZWEITBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter'; $config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ZWEITBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter';
@@ -38,19 +38,8 @@ $config['SIGNATUR_CHECK_PAABGABETYPEN'] = ['end'];
// to be used as "https://moodle.technikum-wien.at/course/view.php?idnumber=dl{$stg_kz}" for stg specific moodle routing // to be used as "https://moodle.technikum-wien.at/course/view.php?idnumber=dl{$stg_kz}" for stg specific moodle routing
$config['STG_MOODLE_LINK'] = 'https://moodle.technikum-wien.at/course/view.php?idnumber=dl'; $config['STG_MOODLE_LINK'] = 'https://moodle.technikum-wien.at/course/view.php?idnumber=dl';
// TODO: check if these links change if the file changes and how to better retrieve the link?
$config['SIGNATUR_INFO_LINK_GERMAN'] = 'https://cis.technikum-wien.at/cms/dms.php?id=214779';
$config['SIGNATUR_INFO_LINK_ENGLISH'] = 'https://cis.technikum-wien.at/cms/dms.php?id=264256';
$config['ASSISTENZ_SAMMELMAIL_BUTTON_STUDENT'] = true; $config['ASSISTENZ_SAMMELMAIL_BUTTON_STUDENT'] = true;
$config['ASSISTENZ_SAMMELMAIL_BUTTON_BETREUER'] = true; $config['ASSISTENZ_SAMMELMAIL_BUTTON_BETREUER'] = true;
$config['BETREUER_SAMMELMAIL_BUTTON_STUDENT'] = true; $config['BETREUER_SAMMELMAIL_BUTTON_STUDENT'] = true;
$config['MULTIEDIT_TABLE'] = true;
$config['STUDENT_EDIT_PROJEKTARBEIT_TITLE'] = true;
$config['CONFETTI_ON_ENDUPLOAD'] = true;
-3
View File
@@ -64,9 +64,6 @@ $route['api/v1/system/[S|s]prache/(:any)'] = 'api/v1/system/sprache2/$1';
$route['Cis/LvPlan/.*'] = 'Cis/LvPlan/index/$1'; $route['Cis/LvPlan/.*'] = 'Cis/LvPlan/index/$1';
$route['Cis/MyLvPlan/.*'] = 'Cis/MyLvPlan/index/$1'; $route['Cis/MyLvPlan/.*'] = 'Cis/MyLvPlan/index/$1';
$route['Cis/MyLv/.*'] = 'Cis/MyLv/index/$1'; $route['Cis/MyLv/.*'] = 'Cis/MyLv/index/$1';
$route['Cis/OtherLvPlan/.*'] = 'Cis/OtherLvPlan/index/$1';
//Route for LV Plan Stg/Semester/Verband/Gruppe
$route['Cis/StgOrgLvPlan/.*'] = 'Cis/StgOrgLvPlan/index/$1';
$route['Abgabetool/Assistenz'] = 'Cis/Abgabetool/Assistenz'; $route['Abgabetool/Assistenz'] = 'Cis/Abgabetool/Assistenz';
$route['Abgabetool/Assistenz/(:any)'] = 'Cis/Abgabetool/Assistenz/$1'; $route['Abgabetool/Assistenz/(:any)'] = 'Cis/Abgabetool/Assistenz/$1';
+1 -2
View File
@@ -22,9 +22,8 @@ unset($config['student']['searchfields']['email']);
unset($config['student']['searchfields']['tel']); unset($config['student']['searchfields']['tel']);
$config['student']['resultfields'] = [ $config['student']['resultfields'] = [
"s.student_uid AS uid", "s.student_uid AS uid",
"s.matrikelnr AS personenkennzeichen", "s.matrikelnr",
"p.person_id", "p.person_id",
"p.matr_nr AS matrikelnummer",
"(p.vorname || ' ' || p.nachname) AS name", "(p.vorname || ' ' || p.nachname) AS name",
"ARRAY[s.student_uid || '@' || '" . DOMAIN . "'] AS email", "ARRAY[s.student_uid || '@' || '" . DOMAIN . "'] AS email",
"CASE "CASE
-29
View File
@@ -168,32 +168,3 @@ $config['stgkz_blacklist_wiederholung'] = [];
* @var array An array of noten ids * @var array An array of noten ids
*/ */
$config['note_blacklist_wiederholung'] = []; $config['note_blacklist_wiederholung'] = [];
/**
* Enable/disable the Abmeldung StG process
*
* @var bool
*/
$config['abmeldung_stg_enabled'] = true;
/**
* Enable/disable the Abmeldung process
*
* @var bool
*/
$config['abmeldung_enabled'] = true;
/**
* Enable/disable the Unterbrecher process
*
* @var bool
*/
$config['unterbrechung_enabled'] = true;
/**
* Enable/disable the Wiederholer process
*
* @var bool
*/
$config['wiederholung_enabled'] = true;
+26 -5
View File
@@ -31,8 +31,12 @@ class Abgabetool extends Auth_Controller
{ {
// TODO: routing from index based on berechtigung? // TODO: routing from index based on berechtigung?
$viewData = array(
'uid'=>getAuthUID(),
);
if(defined('CIS4') && CIS4) { if(defined('CIS4') && CIS4) {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'Abgabetool']); $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'Abgabetool']);
} else { } else {
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'Abgabetool']); $this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'Abgabetool']);
} }
@@ -40,8 +44,12 @@ class Abgabetool extends Auth_Controller
public function Student($student_uid_prop = '') public function Student($student_uid_prop = '')
{ {
$viewData = array(
'uid'=>getAuthUID(),
);
if(defined('CIS4') && CIS4) { if(defined('CIS4') && CIS4) {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'AbgabetoolStudent']); $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolStudent']);
} else { } else {
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolStudent', 'student_uid_prop' => $student_uid_prop]); $this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolStudent', 'student_uid_prop' => $student_uid_prop]);
} }
@@ -49,8 +57,12 @@ class Abgabetool extends Auth_Controller
public function Mitarbeiter() public function Mitarbeiter()
{ {
$viewData = array(
'uid'=>getAuthUID(),
);
if(defined('CIS4') && CIS4) { if(defined('CIS4') && CIS4) {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'AbgabetoolMitarbeiter']); $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolMitarbeiter']);
} else { } else {
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolMitarbeiter']); $this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolMitarbeiter']);
} }
@@ -58,8 +70,13 @@ class Abgabetool extends Auth_Controller
public function Assistenz($stg_kz_prop = '') public function Assistenz($stg_kz_prop = '')
{ {
$viewData = array(
'uid'=>getAuthUID(),
);
if(defined('CIS4') && CIS4) { if(defined('CIS4') && CIS4) {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'AbgabetoolAssistenz']); $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolAssistenz']);
} else { } else {
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolAssistenz', 'stg_kz_prop' => $stg_kz_prop]); $this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolAssistenz', 'stg_kz_prop' => $stg_kz_prop]);
} }
@@ -67,8 +84,12 @@ class Abgabetool extends Auth_Controller
public function Deadlines() public function Deadlines()
{ {
$viewData = array(
'uid'=>getAuthUID(),
);
if(defined('CIS4') && CIS4) { if(defined('CIS4') && CIS4) {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'DeadlinesOverview']); $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'DeadlinesOverview']);
} else { } else {
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'DeadlinesOverview']); $this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'DeadlinesOverview']);
} }
+1 -1
View File
@@ -40,7 +40,7 @@ class Auth extends FHC_Controller
if ($this->form_validation->run()) if ($this->form_validation->run())
{ {
redirect($this->authlib->getLandingPage('/Cis4')); redirect($this->authlib->getLandingPage('/CisVue/Dashboard'));
} }
else else
{ {
+7 -1
View File
@@ -28,6 +28,12 @@ class LvPlan extends Auth_Controller
*/ */
public function index() public function index()
{ {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'LvPlan']);
$viewData = array(
'uid'=>getAuthUID(),
'timezone' => $this->config->item('timezone')
);
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'LvPlan']);
} }
} }
+6 -1
View File
@@ -26,6 +26,11 @@ class MyLv extends Auth_Controller
*/ */
public function index() public function index()
{ {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'MyLv']);
$viewData = array(
);
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'MyLv']);
} }
} }
+7 -1
View File
@@ -28,6 +28,12 @@ class MyLvPlan extends Auth_Controller
*/ */
public function index() public function index()
{ {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'MyLvPlan']);
$viewData = array(
'uid'=>getAuthUID(),
'timezone' => $this->config->item('timezone')
);
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'MyLvPlan']);
} }
} }
@@ -1,34 +0,0 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
/**
*
*/
class OtherLvPlan extends Auth_Controller
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct([
'index' => ['basis/other_lv_plan:r']
]);
// Load Config
$this->load->config('calendar');
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* @return void
*/
public function index()
{
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'OtherLvPlan']);
}
}
+39 -19
View File
@@ -55,7 +55,15 @@ class Profil extends Auth_Controller
*/ */
public function index() public function index()
{ {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'profilIndex']);
$this->load->library('ProfilLib');
$profil_data = $this->profillib->getView(getAuthUID());
$profil_data = hasData($profil_data) ? getData($profil_data) : null;
$viewData = array(
'editable'=>true,
'profil_data' => $profil_data,
);
$this->load->view('CisRouterView/CisRouterView.php',['viewData' => $viewData, 'route' => 'profilIndex']);
} }
/** /**
@@ -65,13 +73,23 @@ class Profil extends Auth_Controller
*/ */
public function View($uid) public function View($uid)
{ {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'profilViewUid']); $this->load->library('ProfilLib');
$profil_data = $this->profillib->getView($uid);
$profil_data = hasData($profil_data) ? getData($profil_data) : null;
$viewData = array (
'uid' => $uid,
'profil_data'=>$profil_data,
);
if($uid == getAuthUID()){
$viewData['editable'] = true;
}
$this->load->view('CisRouterView/CisRouterView.php',['viewData' => $viewData, 'route' => 'profilViewUid']);
} }
/** /**
* checks whether a specific userID is a student or not (foreword declaration of the function isStudent in Student_model.php) * checks whether a specific userID is a mitarbeiter or not (foreword declaration of the function isMitarbeiter in Mitarbeiter_model.php)
* @access public * @access public
* @param $uid the userID used to check if it is a student * @param $uid the userID used to check if it is a mitarbeiter
* @return boolean * @return boolean
*/ */
public function isStudent($uid) public function isStudent($uid)
@@ -101,7 +119,7 @@ class Profil extends Auth_Controller
} }
/** /**
* gets the adressen that are marked as zustell from the currently logged in user * gets the adressen that are marked as zustell from the currenlty logged in user
* @access public * @access public
* @return array a list of adresse_id's * @return array a list of adresse_id's
*/ */
@@ -244,23 +262,23 @@ class Profil extends Auth_Controller
$this->GemeindeModel->addDistinct(); $this->GemeindeModel->addDistinct();
$this->GemeindeModel->addSelect(["name"]); $this->GemeindeModel->addSelect(["name"]);
if ($nation == "A") { if ($nation == "A") {
if (isset($zip) && $zip > 999 && $zip < 32000) { if (isset($zip) && $zip > 999 && $zip < 32000) {
$gemeinde_res = $this->GemeindeModel->loadWhere(['plz' => $zip]); $gemeinde_res = $this->GemeindeModel->loadWhere(['plz' => $zip]);
if (isError($gemeinde_res)) { if (isError($gemeinde_res)) {
show_error("error while trying to query bis.tbl_gemeinde"); show_error("error while trying to query bis.tbl_gemeinde");
}
$gemeinde_res = hasData($gemeinde_res) ? getData($gemeinde_res) : null;
$gemeinde_res = array_map(function ($obj) {
return $obj->name;
}, $gemeinde_res);
echo json_encode($gemeinde_res);
} else {
echo json_encode(error("ortschaftskennziffer code was not valid"));
} }
$gemeinde_res = hasData($gemeinde_res) ? getData($gemeinde_res) : null;
$gemeinde_res = array_map(function ($obj) {
return $obj->name;
}, $gemeinde_res);
echo json_encode($gemeinde_res);
} else {
echo json_encode(error("ortschaftskennziffer code was not valid"));
}
} else { } else {
echo json_encode(error("Nation was not 'A' (Austria)")); echo json_encode(error("Nation was not 'A' (Austria)"));
} }
} }
@@ -732,4 +750,6 @@ class Profil extends Auth_Controller
$zutrittskarte_ausgegebenam = str_replace("-", ".", $zutrittskarte_ausgegebenam); $zutrittskarte_ausgegebenam = str_replace("-", ".", $zutrittskarte_ausgegebenam);
return $zutrittskarte_ausgegebenam; return $zutrittskarte_ausgegebenam;
} }
} }
+6 -1
View File
@@ -25,6 +25,11 @@ class Raumsuche extends Auth_Controller
*/ */
public function index() public function index()
{ {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'Raumsuche']);
$viewData = array(
'uid'=>getAuthUID(),
);
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'Raumsuche']);
} }
} }
@@ -1,33 +0,0 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
*
*/
class StgOrgLvPlan extends Auth_Controller
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct([
'index' => ['basis/cis:r']
]);
// Load Config
$this->load->config('calendar');
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* @return void
*/
public function index()
{
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'StgOrgLvPlan']);
}
}
+4 -1
View File
@@ -29,7 +29,10 @@ class Studium extends Auth_Controller
*/ */
public function index() public function index()
{ {
$this->load->view('CisRouterView/CisRouterView.php',['route' => 'studium']); $viewData = array(
);
$this->load->view('CisRouterView/CisRouterView.php',['viewData' => $viewData, 'route' => 'studium']);
} }
+15 -6
View File
@@ -1,7 +1,6 @@
<?php <?php
if (!defined('BASEPATH')) if (! defined('BASEPATH')) exit('No direct script access allowed');
exit('No direct script access allowed');
/** /**
* *
@@ -14,9 +13,9 @@ class Cis4 extends Auth_Controller
public function __construct() public function __construct()
{ {
parent::__construct( parent::__construct(
array( array(
'index' => 'basis/cis:r' 'index' => 'basis/cis:r'
) )
); );
// Load Config // Load Config
@@ -31,6 +30,16 @@ class Cis4 extends Auth_Controller
*/ */
public function index() public function index()
{ {
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'FhcDashboard']); $this->load->model('person/Person_model', 'PersonModel');
$personData = getData($this->PersonModel->getByUid(getAuthUID()))[0];
$viewData = array(
'uid' => getAuthUID(),
'name' => $personData->vorname,
'person_id' => $personData->person_id,
'timezone' => $this->config->item('timezone')
);
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'FhcDashboard']);
} }
} }
@@ -0,0 +1,43 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
*
*/
class Dashboard extends Auth_Controller
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct(
array(
'index' => 'dashboard/benutzer:r'
)
);
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* @return void
*/
public function index()
{
$this->load->model('person/Person_model','PersonModel');
$personData = getData($this->PersonModel->getByUid(getAuthUID()))[0];
$viewData = array(
'uid' => getAuthUID(),
'name' => $personData->vorname,
'person_id' => $personData->person_id
);
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData]);
}
}
File diff suppressed because it is too large Load Diff
@@ -18,8 +18,6 @@
if (! defined('BASEPATH')) exit('No direct script access allowed'); if (! defined('BASEPATH')) exit('No direct script access allowed');
use \DateTime as DateTime;
class Bookmark extends FHCAPI_Controller class Bookmark extends FHCAPI_Controller
{ {
@@ -30,162 +28,111 @@ class Bookmark extends FHCAPI_Controller
{ {
parent::__construct([ parent::__construct([
'getBookmarks' => self::PERM_LOGGED, 'getBookmarks' => self::PERM_LOGGED,
'delete' => self::PERM_LOGGED, 'delete' => self::PERM_LOGGED,
'insert' => self::PERM_LOGGED, 'insert' => self::PERM_LOGGED,
'update' => self::PERM_LOGGED, 'update' => self::PERM_LOGGED,
'changeOrder' => self::PERM_LOGGED ]);
]);
$this->load->model('dashboard/Bookmark_model', 'BookmarkModel'); $this->load->model('dashboard/Bookmark_model', 'BookmarkModel');
$this->uid = getAuthUID(); $this->uid = getAuthUID();
$this->pid = getAuthPersonID(); $this->pid = getAuthPersonID();
} }
//------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------
// Public methods // Public methods
/** /**
* gets the bookmarks associated to a user * gets the bookmarks associated to a user
* @access public * @access public
* @return void * @return void
*/ */
public function getBookmarks() public function getBookmarks()
{ {
$this->BookmarkModel->addOrder("sort"); $this->BookmarkModel->addOrder("bookmark_id");
$bookmarks = $this->BookmarkModel->loadWhere(["uid"=>$this->uid]); $bookmarks = $this->BookmarkModel->loadWhere(["uid"=>$this->uid]);
$bookmarks = $this->getDataOrTerminateWithError($bookmarks); $bookmarks = $this->getDataOrTerminateWithError($bookmarks);
$this->terminateWithSuccess($bookmarks); $this->terminateWithSuccess($bookmarks);
} }
/** /**
* deletes bookmark from associated user * deletes bookmark from associated user
* @access public * @access public
* @return void * @return void
*/ */
public function delete($bookmark_id) public function delete($bookmark_id)
{ {
$bookmark = $this->BookmarkModel->load($bookmark_id); $bookmark = $this->BookmarkModel->load($bookmark_id);
$bookmark = current($this->getDataOrTerminateWithError($bookmark)); $bookmark = current($this->getDataOrTerminateWithError($bookmark));
// only delete bookmark if the user is the owner of the bookmark // only delete bookmark if the user is the owner of the bookmark
if ($bookmark->uid == $this->uid || $this->permissionlib->isBerechtigt('admin')) { if($bookmark->uid == $this->uid || $this->permissionlib->isBerechtigt('admin')){
$delete_result = $this->BookmarkModel->delete($bookmark_id);
$delete_result = $this->getDataOrTerminateWithError($delete_result); $delete_result = $this->BookmarkModel->delete($bookmark_id);
$this->terminateWithSuccess($delete_result); $delete_result = $this->getDataOrTerminateWithError($delete_result);
} else {
$this->_outputAuthError(['delete' => ['admin:rw']]);
}
}
/** $this->terminateWithSuccess($delete_result);
}else{
$this->_outputAuthError(['delete' => ['admin:rw']]);
}
}
/**
* inserts new bookmark into the bookmark table * inserts new bookmark into the bookmark table
* @access public * @access public
* @return void * @return void
*/ */
public function insert() public function insert()
{ {
// form validation // form validation
$this->load->library('form_validation'); $this->load->library('form_validation');
$this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]'); $this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]');
$this->form_validation->set_rules('title', 'Title', 'required|max_length[255]'); $this->form_validation->set_rules('title', 'Title', 'required|max_length[255]');
if (!$this->form_validation->run()) if($this->form_validation->run() == FALSE) $this->terminateWithValidationErrors($this->form_validation->error_array());
$this->terminateWithValidationErrors($this->form_validation->error_array());
$url = $this->input->post('url', true); $url = $this->input->post('url',true);
$title = $this->input->post('title', true); $title = $this->input->post('title',true);
$tag = $this->input->post('tag', true); $tag = $this->input->post('tag', true);
if (is_array($tag)) {
$tag = json_encode($tag); // convert PHP array to JSON string
}
$sort = $this->input->post('sort', true);
$insert_into_result = $this->BookmarkModel->insert([ $insert_into_result = $this->BookmarkModel->insert(['uid'=>$this->uid, 'url'=>$url, 'title'=>$title,'tag'=>$tag, 'insertvon'=>$this->uid, 'updateamum'=>NULL, 'updatevon'=>NULL]);
'uid' => $this->uid,
'url' => $url,
'title' => $title,
'tag' => $tag,
'insertvon' => $this->uid,
'updateamum' => null,
'updatevon' => null,
'sort' => $sort
]);
$insert_into_result = $this->getDataOrTerminateWithError($insert_into_result); $insert_into_result = $this->getDataOrTerminateWithError($insert_into_result);
$this->terminateWithSuccess($insert_into_result); $this->terminateWithSuccess($insert_into_result);
}
}
/** /**
* updates bookmark in the bookmark table * updates bookmark in the bookmark table
* @access public * @access public
* @return void * @return void
*/ */
public function update($bookmark_id) public function update($bookmark_id)
{ {
// form validation // form validation
$this->load->library('form_validation'); $this->load->library('form_validation');
$this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]'); $this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]');
$this->form_validation->set_rules('title', 'Title', 'required|max_length[255]'); $this->form_validation->set_rules('title', 'Title', 'required|max_length[255]');
if (!$this->form_validation->run()) if($this->form_validation->run() == FALSE) $this->terminateWithValidationErrors($this->form_validation->error_array());
$this->terminateWithValidationErrors($this->form_validation->error_array());
$url = $this->input->post('url', true); $url = $this->input->post('url',true);
$title = $this->input->post('title', true); $title = $this->input->post('title',true);
$tag = $this->input->post('tag', true);
if (is_array($tag)) {
$tag = json_encode($tag);
}
$now = new DateTime(); $now = new DateTime();
$now = $now->format('Y-m-d H:i:s'); $now = $now->format('Y-m-d H:i:s');
$update_result = $this->BookmarkModel->update($bookmark_id, [ $update_result = $this->BookmarkModel->update($bookmark_id,['url'=>$url, 'title'=>$title,'updateamum'=>$now]);
'url' => $url,
'title' => $title,
'tag' => $tag,
'updateamum' => $now
]);
$update_result = $this->getDataOrTerminateWithError($update_result); $update_result = $this->getDataOrTerminateWithError($update_result);
$this->terminateWithSuccess($update_result); $this->terminateWithSuccess($update_result);
}
/** }
* changes sort of two bookmarks in the bookmark table
* @access public
* @return void
*/
public function changeOrder($bookmark_id1, $bookmark_id2)
{
$update_result = [];
$result1 = $this->BookmarkModel->load($bookmark_id1);
$data1 = $this->getDataOrTerminateWithError($result1);
$sort1 = current($data1)->sort;
$result2 = $this->BookmarkModel->load(["bookmark_id"=>$bookmark_id2]);
$data2 = $this->getDataOrTerminateWithError($result2);
$sort2 = current($data2)->sort;
$update_result1 = $this->BookmarkModel->update($bookmark_id1, [
'sort' => $sort2
]);
$update_result[] = $this->getDataOrTerminateWithError($update_result1);
$update_result2 = $this->BookmarkModel->update($bookmark_id2, [
'sort' => $sort1
]);
$update_result[] = $this->getDataOrTerminateWithError($update_result2);
$this->terminateWithSuccess($update_result);
}
} }
@@ -27,7 +27,7 @@ class Cis4FhcApi extends FHCAPI_Controller
public function __construct() public function __construct()
{ {
parent::__construct([ parent::__construct([
'dashboardViewData' => self::PERM_LOGGED, 'getViewData' => self::PERM_LOGGED,
]); ]);
} }
@@ -36,22 +36,17 @@ class Cis4FhcApi extends FHCAPI_Controller
// Public methods // Public methods
/** /**
* retrieves view data for dashboard view * fetches ViewData
* @access public */
* @param $uid the userID for which profile is being viewed, null or missing value implies one's own profile public function getViewData()
*/
public function dashboardViewData()
{ {
$this->load->model('person/Person_model','PersonModel'); $this->load->model('person/Person_model','PersonModel');
$personData = getData($this->PersonModel->getByUid(getAuthUID()))[0]; $personData = getData($this->PersonModel->getByUid(getAuthUID()))[0];
$this->load->config('calendar');
$viewData = array( $viewData = array(
'uid' => getAuthUID(), 'uid' => getAuthUID(),
'name' => $personData->vorname, 'name' => $personData->vorname,
'person_id' => $personData->person_id, 'person_id' => $personData->person_id
'timezone' => $this->config->item('timezone'),
); );
$this->terminateWithSuccess($viewData); $this->terminateWithSuccess($viewData);
@@ -16,8 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
if (!defined('BASEPATH')) if (! defined('BASEPATH')) exit('No direct script access allowed');
exit('No direct script access allowed');
class CisMenu extends FHCAPI_Controller class CisMenu extends FHCAPI_Controller
@@ -39,88 +38,21 @@ class CisMenu extends FHCAPI_Controller
//------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------
// Public methods // Public methods
/** /**
* fetches the menu for CIS from the database based on the userLanguage * fetches the menu for CIS from the database based on the userLanguage
*/ */
public function getMenu() public function getMenu()
{ {
$this->load->model('content/Content_model', 'ContentModel'); $this->load->model('content/Content_model', 'ContentModel');
$this->load->config('cis'); $this->load->config('cis');
$cis4_content_id = $this->config->item('cis_menu_root_content_id'); $cis4_content_id =$this->config->item('cis_menu_root_content_id');
$result = $this->ContentModel->getMenu($cis4_content_id, getAuthUID(), getUserLanguage()); $result = $this->ContentModel->getMenu($cis4_content_id, getAuthUID(),getUserLanguage());
$result = $this->getDataOrTerminateWithError($result); $result = $this->getDataOrTerminateWithError($result);
$menu = $result->childs ?? []; $menu = $result->childs ?? [];
$menu = $this->generateUrlsForMenuItems($menu);
$this->terminateWithSuccess($menu); $this->terminateWithSuccess($menu);
} }
private function generateUrlsForMenuItems($menuItems)
{
return array_map(
function ($menuItem) {
return $this->generateUrlForMenuItem($menuItem);
},
$menuItems
);
}
private function generateUrlForMenuItem($menuItem)
{
$menuItem->url = $this->menuItemUrlHelper($menuItem);
unset($menuItem->content);
if ($menuItem->childs && count($menuItem->childs)) {
$menuItem->childs = $this->generateUrlsForMenuItems($menuItem->childs);
}
return $menuItem;
}
private function menuItemUrlHelper($menuItem)
{
if ($menuItem->template_kurzbz !== 'redirect') {
return site_url("/CisVue/Cms/content/" . $menuItem->content_id);
}
if (!$menuItem->content || !mb_strlen($menuItem->content)) {
return '';
}
$doc = new DOMDocument();
$doc->loadXML($menuItem->content);
$urlElem = $doc->getElementsByTagName('url')->item(0);
if (!$urlElem) {
return '';
}
$url = $urlElem->textContent;
if (strpos($url, '../cms/news.php') !== false) {
$newsRegex = '/^\.\.\/cms\/news\.php/';
$url = preg_replace($newsRegex, site_url("/CisVue/Cms/news"), $url);
}
if (strpos($url, '../cms/content.php?') !== false) {
$contentRegex = '/^\.\.\/cms\/content\.php\?content_id=([0-9]+)/';
$matches = [];
preg_match($contentRegex, $url, $matches);
$url = site_url('/CisVue/Cms/content/' . $matches[1]);
}
if (strpos($url, '../index.ci.php') !== false) {
$indexRegex = '/^\.\.\/index\.ci\.php/';
$url = preg_replace($indexRegex, site_url(), $url);
}
if (strpos($url, '../') !== false) {
$relativeRegex = '/^\.\.\//';
$url = preg_replace($relativeRegex, base_url(), $url);
}
return $url;
}
} }
@@ -38,8 +38,7 @@ class Lehre extends FHCAPI_Controller
parent::__construct([ parent::__construct([
'lvStudentenMail' => self::PERM_LOGGED, 'lvStudentenMail' => self::PERM_LOGGED,
'LV' => self::PERM_LOGGED, 'LV' => self::PERM_LOGGED,
'Pruefungen' => self::PERM_LOGGED, 'Pruefungen' => self::PERM_LOGGED
'semesterAverageGrade' => self::PERM_LOGGED,
]); ]);
} }
@@ -101,49 +100,5 @@ class Lehre extends FHCAPI_Controller
$this->terminateWithSuccess($result); $this->terminateWithSuccess($result);
} }
/**
* calculates and returns the grade average and weighted average for a specific semester
* @param string $studiensemester_kurzbz
* @return void
*/
public function semesterAverageGrade($studiensemester_kurzbz)
{
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
$semesterLvs = $this->LehrveranstaltungModel->getLvsByStudentWithGrades(getAuthUID(), $studiensemester_kurzbz, getUserLanguage());
if (isError($semesterLvs))
return $this->outputJsonError(getError($semesterLvs));
$semesterLvsData = getData($semesterLvs);
$doGradesExist = false;
$sum = 0;
$count = 0;
$sumWeighted = 0;
$sumEcts = 0;
foreach ($semesterLvsData as $lv) {
if (!$lv->znote || $lv->znote < 1 || $lv->znote > 5)
continue;
$doGradesExist = true;
$sum += $lv->znote;
$count++;
$sumWeighted += $lv->znote * floatval($lv->ects);
$sumEcts += floatval($lv->ects);
}
$averageGrade = null;
$weightedAverageGrade = null;
if ($doGradesExist) {
$averageGrade = $sum/$count;
$weightedAverageGrade = $sumWeighted/$sumEcts;
}
$this->terminateWithSuccess(['average_grade' => $averageGrade, 'weighted_average_grade' => $weightedAverageGrade]);
}
} }
@@ -16,8 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
if (!defined('BASEPATH')) if (! defined('BASEPATH')) exit('No direct script access allowed');
exit('No direct script access allowed');
use CI3_Events as Events; use CI3_Events as Events;
use \DateTime as DateTime; use \DateTime as DateTime;
@@ -34,25 +33,19 @@ class LvPlan extends FHCAPI_Controller
parent::__construct([ parent::__construct([
'getRoomplan' => self::PERM_LOGGED, 'getRoomplan' => self::PERM_LOGGED,
'Stunden' => self::PERM_LOGGED, 'Stunden' => self::PERM_LOGGED,
'getReservierungen' => self::PERM_LOGGED, 'getReservierungen' => self::PERM_LOGGED,
'LvPlanEvents' => self::PERM_LOGGED, 'LvPlanEvents' => self::PERM_LOGGED,
'eventsPersonal' => self::PERM_LOGGED, 'eventsPersonal' => self::PERM_LOGGED,
'eventsLv' => self::PERM_LOGGED, 'eventsLv' => self::PERM_LOGGED,
'getLehreinheitStudiensemester' => self::PERM_LOGGED, 'getLehreinheitStudiensemester' => self::PERM_LOGGED,
'studiensemesterDateInterval' => self::PERM_LOGGED, 'studiensemesterDateInterval' => self::PERM_LOGGED,
'getLvPlanForStudiensemester' => self::PERM_LOGGED, 'getLvPlanForStudiensemester' => self::PERM_LOGGED,
'getLv' => self::PERM_LOGGED, 'getLv' => self::PERM_LOGGED
'eventsStgOrg' => self::PERM_LOGGED,
'fetchFerienEvents' => self::PERM_LOGGED,
'getStudiengaenge' => self::PERM_LOGGED,
'getLehrverband' => self::PERM_LOGGED,
'permissionOtherLvPlan' => self::PERM_LOGGED,
'compactibleEventTypes' => self::PERM_LOGGED,
]); ]);
$this->load->library('LogLib'); $this->load->library('LogLib');
$this->loglib->setConfigs(array( $this->loglib->setConfigs(array(
'classIndex' => 5, 'classIndex' => 5,
'functionIndex' => 5, 'functionIndex' => 5,
'lineIndex' => 4, 'lineIndex' => 4,
@@ -60,17 +53,17 @@ class LvPlan extends FHCAPI_Controller
'dbExecuteUser' => 'RESTful API' 'dbExecuteUser' => 'RESTful API'
)); ));
$this->load->library('form_validation'); $this->load->library('form_validation');
} }
//------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------
// Public methods // Public methods
/** /**
* fetches LvPlan and Moodle events together * fetches LvPlan and Moodle events together
* @access public * @access public
* *
*/ */
public function LvPlanEvents() public function LvPlanEvents()
{ {
$hasLv = $this->input->post('lv_id'); $hasLv = $this->input->post('lv_id');
@@ -97,22 +90,16 @@ class LvPlan extends FHCAPI_Controller
// storing the post parameter in local variables // storing the post parameter in local variables
$start_date = $this->input->post('start_date', true); $start_date = $this->input->post('start_date', true);
$end_date = $this->input->post('end_date', true); $end_date = $this->input->post('end_date', true);
$uid = $this->input->post('uid', true);
// disallow accessing other user's events if missing permission
if ($uid && $uid !== getAuthUID() && !$this->permissionlib->isBerechtigt('basis/other_lv_plan')) {
$this->terminateWithError("Missing permission to view other users' timetables!");
}
// fetching lvplan events // fetching lvplan events
$result = $this->stundenplanlib->getEventsUser($start_date, $end_date, $uid); $result = $this->stundenplanlib->getEventsUser($start_date, $end_date);
$lvplanEvents = $this->getDataOrTerminateWithError($result); $lvplanEvents = $this->getDataOrTerminateWithError($result);
// fetching moodle events // fetching moodle events
$moodleEvents = $this->fetchMoodleEvents($start_date, $end_date, $uid); $moodleEvents = $this->fetchMoodleEvents($start_date, $end_date);
// fetching ferien events // fetching ferien events
$ferienEvents = $this->fetchFerienEvents($start_date, $end_date, $uid); $ferienEvents = $this->fetchFerienEvents($start_date, $end_date);
$this->terminateWithSuccess(array_merge( $this->terminateWithSuccess(array_merge(
@@ -122,45 +109,6 @@ class LvPlan extends FHCAPI_Controller
)); ));
} }
/**
* fetches LvPlan for studiengang / semester / verband / gruppe
*
* @access public
*/
public function eventsStgOrg()
{
$this->load->library('StundenplanLib');
// form validation
$this->form_validation->set_rules('start_date', "start_date", "required");
$this->form_validation->set_rules('end_date', "end_date", "required");
//$this->form_validation->set_rules('stg_kz', "stg_kz", "required"); //no validation show empty calendar
if (!$this->form_validation->run()) {
$this->terminateWithValidationErrors($this->form_validation->error_array());
$stgOrgEvents = [];
$ferienEvents = [];
} else {
$start_date = $this->input->post('start_date', true);
$end_date = $this->input->post('end_date', true);
$stg_kz = $this->input->post('stg_kz', true);
$sem = $this->input->post('sem', true);
$verband = $this->input->post('verband', true);
$gruppe = $this->input->post('gruppe', true);
$result = $this->stundenplanlib->getEventsStgOrg($start_date, $end_date, $stg_kz, $sem, $verband, $gruppe);
$stgOrgEvents = $this->getDataOrTerminateWithError($result);
$result = $this->stundenplanlib->fetchFerienTageEvents($start_date, $end_date, $stg_kz);
$ferienEvents = $this->getDataOrTerminateWithError($result);
}
$this->terminateWithSuccess(array_merge(
$stgOrgEvents,
$ferienEvents
));
}
/** /**
* fetches LvPlan and Ferien events together for the lv * fetches LvPlan and Ferien events together for the lv
* *
@@ -190,6 +138,7 @@ class LvPlan extends FHCAPI_Controller
// fetching ferien events // fetching ferien events
$ferienEvents = $this->fetchFerienEvents($start_date, $end_date); $ferienEvents = $this->fetchFerienEvents($start_date, $end_date);
$this->terminateWithSuccess(array_merge( $this->terminateWithSuccess(array_merge(
$lvplanEvents, $lvplanEvents,
$ferienEvents $ferienEvents
@@ -197,42 +146,40 @@ class LvPlan extends FHCAPI_Controller
} }
//TODO: delete this function if we don't use the old calendar export endpoints anymore //TODO: delete this function if we don't use the old calendar export endpoints anymore
public function studiensemesterDateInterval($date) public function studiensemesterDateInterval($date){
{ $this->load->model('organisation/Studiensemester_model','StudiensemesterModel');
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $studiensemester =$this->StudiensemesterModel->getByDate(date_format(date_create($date),'Y-m-d'));
$studiensemester = $this->StudiensemesterModel->getByDate(date_format(date_create($date), 'Y-m-d')); $studiensemester =current($this->getDataOrTerminateWithError($studiensemester));
$studiensemester = current($this->getDataOrTerminateWithError($studiensemester));
$this->terminateWithSuccess($studiensemester); $this->terminateWithSuccess($studiensemester);
} }
public function getLvPlanForStudiensemester($studiensemester, $lvid) public function getLvPlanForStudiensemester($studiensemester,$lvid){
{
$this->load->library('StundenplanLib'); $this->load->library('StundenplanLib');
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->load->model('organisation/Studiensemester_model','StudiensemesterModel');
$studiensemester_result = $this->StudiensemesterModel->loadWhere(["studiensemester_kurzbz" => $studiensemester]); $studiensemester_result = $this->StudiensemesterModel->loadWhere(["studiensemester_kurzbz"=>$studiensemester]);
$studiensemester_result = current($this->getDataOrTerminateWithError($studiensemester_result)); $studiensemester_result = current($this->getDataOrTerminateWithError($studiensemester_result));
$timespan_start = new DateTime($studiensemester_result->start); $timespan_start = new DateTime($studiensemester_result->start);
$timespan_ende = new DateTime($studiensemester_result->ende); $timespan_ende = new DateTime($studiensemester_result->ende);
$lvplan = $this->stundenplanlib->getStundenplan(date_format($timespan_start, 'Y-m-d'), date_format($timespan_ende, 'Y-m-d'), $lvid); $lvplan = $this->stundenplanlib->getStundenplan(date_format($timespan_start, 'Y-m-d'),date_format($timespan_ende, 'Y-m-d'), $lvid);
$this->terminateWithSuccess($lvplan); $this->terminateWithSuccess($lvplan);
} }
/** /**
* fetches Stunden layout from database * fetches Stunden layout from database
* @access public * @access public
* *
*/ */
public function Stunden() public function Stunden()
{ {
$this->load->model('ressource/Stunde_model', 'StundeModel'); $this->load->model('ressource/Stunde_model', 'StundeModel');
$this->StundeModel->addOrder('stunde', 'ASC'); $this->StundeModel->addOrder('stunde', 'ASC');
$stunden = $this->StundeModel->load(); $stunden = $this->StundeModel->load();
$stunden = $this->getDataOrTerminateWithError($stunden); $stunden = $this->getDataOrTerminateWithError($stunden);
$this->terminateWithSuccess($stunden); $this->terminateWithSuccess($stunden);
} }
@@ -286,25 +233,18 @@ class LvPlan extends FHCAPI_Controller
// storing the post parameter in local variables // storing the post parameter in local variables
$start_date = $this->input->post('start_date', true); $start_date = $this->input->post('start_date', true);
$end_date = $this->input->post('end_date', true); $end_date = $this->input->post('end_date', true);
$uid = $this->input->post('uid', true);
// disallow accessing other user's reservierungen if missing permission
if ($uid && $uid !== getAuthUID() && !$this->permissionlib->isBerechtigt('basis/other_lv_plan')) {
$this->terminateWithError("Missing permission to view other users' timetables!");
}
// get data // get data
$this->load->library('StundenplanLib'); $this->load->library('StundenplanLib');
$result = $this->stundenplanlib->getReservierungen($start_date, $end_date, $ort_kurzbz, $uid); $result = $this->stundenplanlib->getReservierungen($start_date, $end_date, $ort_kurzbz);
$result = $this->getDataOrTerminateWithError($result); $result = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($result); $this->terminateWithSuccess($result);
} }
public function getLehreinheitStudiensemester($lehreinheit_id) public function getLehreinheitStudiensemester($lehreinheit_id){
{
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel'); $this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
$this->LehreinheitModel->addSelect(["studiensemester_kurzbz"]); $this->LehreinheitModel->addSelect(["studiensemester_kurzbz"]);
$result = $this->LehreinheitModel->load($lehreinheit_id); $result = $this->LehreinheitModel->load($lehreinheit_id);
@@ -347,68 +287,6 @@ class LvPlan extends FHCAPI_Controller
return $this->terminateWithSuccess(current($result)); return $this->terminateWithSuccess(current($result));
} }
public function getStudiengaenge()
{
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->StudiengangModel->addOrder('typ');
$this->StudiengangModel->addOrder('kurzbz');
$result = $this->StudiengangModel->loadWhere([
'aktiv' => true
]);
$data = $this->getDataOrTerminateWithError($result);
return $this->terminateWithSuccess($data);
}
public function getLehrverband($studiengang_kz, $semester = null, $verband = null)
{
$this->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
$where = [
'aktiv' => true,
'studiengang_kz' => $studiengang_kz,
];
if ($semester !== null && $semester !== 'null' && $semester !== 'undefined') {
$where['semester'] = $semester;
}
if ($verband !== null && $verband !== 'null' && $verband !== 'undefined') {
$where['verband'] = $verband;
}
$this->LehrverbandModel->addOrder('studiengang_kz');
$this->LehrverbandModel->addOrder('semester');
$this->LehrverbandModel->addOrder('verband');
$this->LehrverbandModel->addOrder('gruppe');
$result = $this->LehrverbandModel->loadWhere($where);
$data = $this->getDataOrTerminateWithError($result);
return $this->terminateWithSuccess($data);
}
/**
* Checks if the current user has permission to view other users' timetables
*
* @return void
*/
public function permissionOtherLvPlan()
{
$this->terminateWithSuccess($this->permissionlib->isBerechtigt('basis/other_lv_plan'));
}
/**
* get event types which can be compacted in lv plan display
*
* @return void
*/
public function compactibleEventTypes()
{
$this->terminateWithSuccess(["lehreinheit", "reservierung", "ferien", "moodle"]);
}
/** /**
* fetch moodle events * fetch moodle events
* *
@@ -416,12 +294,8 @@ class LvPlan extends FHCAPI_Controller
* @param string $end_date * @param string $end_date
* @return array * @return array
*/ */
private function fetchMoodleEvents($start_date, $end_date, $uid = null) private function fetchMoodleEvents($start_date, $end_date)
{ {
if ($uid && $uid !== getAuthUID()) {
return [];
}
$this->load->config('calendar'); $this->load->config('calendar');
$tz = new DateTimeZone($this->config->item('timezone')); $tz = new DateTimeZone($this->config->item('timezone'));
@@ -437,13 +311,13 @@ class LvPlan extends FHCAPI_Controller
Events::trigger( Events::trigger(
'moodleCalendarEvents', 'moodleCalendarEvents',
function &() use (&$moodle_events) { function & () use (&$moodle_events) {
return $moodle_events; return $moodle_events;
}, },
[ [
'start_date' => $start->format('c'), 'start_date' => $start->format('c'),
'end_date' => $end->format('c'), 'end_date' => $end->format('c'),
'username' => $uid ?? getAuthUID() 'username' => getAuthUID()
] ]
); );
@@ -457,7 +331,7 @@ class LvPlan extends FHCAPI_Controller
* @param string $end_date * @param string $end_date
* @return array * @return array
*/ */
private function fetchFerienEvents($start_date, $end_date, $uid = null) private function fetchFerienEvents($start_date, $end_date)
{ {
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->model('education/Studentlehrverband_model', 'StudentLehrverbandModel'); $this->load->model('education/Studentlehrverband_model', 'StudentLehrverbandModel');
@@ -469,7 +343,7 @@ class LvPlan extends FHCAPI_Controller
$studentsemester_kurzbz = current($currentStudiensemester)->studiensemester_kurzbz; $studentsemester_kurzbz = current($currentStudiensemester)->studiensemester_kurzbz;
$studiengang = $this->StudentLehrverbandModel->loadWhere([ $studiengang = $this->StudentLehrverbandModel->loadWhere([
"student_uid" => $uid ?? getAuthUID(), "student_uid" => getAuthUID(),
"studiensemester_kurzbz" => $studentsemester_kurzbz "studiensemester_kurzbz" => $studentsemester_kurzbz
]); ]);
$studiengang = $this->getDataOrTerminateWithError($studiengang); $studiengang = $this->getDataOrTerminateWithError($studiengang);
@@ -1,76 +0,0 @@
<?php
/**
* Copyright (C) 2024 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class OtherLvPlan extends FHCAPI_Controller
{
/**
* Object initialization
*/
public function __construct()
{
parent::__construct([
'otherLvPlanViewData' => ['basis/other_lv_plan:r'],
]);
$this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel');
$this->load->model('person/Benutzer_model', 'BenutzerModel');
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* retrieves viewData for other lv plan view
* @access public
* @param $uid the userID for which the other lv plan is being viewed
*/
public function otherLvPlanViewData($uid)
{
$isMitarbeiterResult = $this->MitarbeiterModel->isMitarbeiter($uid);
$isMitarbeiter = getData($isMitarbeiterResult);
$isStudent = !$isMitarbeiter;
$this->BenutzerModel->addSelect(["foto", "vorname", "nachname"]);
$this->BenutzerModel->addJoin("tbl_person", "person_id");
$personResult = $this->BenutzerModel->load([$uid]);
$person = hasData($personResult) ? getData($personResult) : null;
$viewData = [
"user_data" => [
"username" => $uid,
"is_student" => $isStudent,
"is_mitarbeiter" => $isMitarbeiter,
"foto" => $person[0]->foto,
"vorname" => $person[0]->vorname,
"nachname" => $person[0]->nachname,
],
];
$this->terminateWithSuccess($viewData);
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
}
@@ -32,8 +32,6 @@ class Phrasen extends FHCAPI_Controller
'setLanguage' => self::PERM_ANONYMOUS, 'setLanguage' => self::PERM_ANONYMOUS,
'getLanguage' => self::PERM_ANONYMOUS, 'getLanguage' => self::PERM_ANONYMOUS,
'getAllLanguages' => self::PERM_ANONYMOUS, 'getAllLanguages' => self::PERM_ANONYMOUS,
'getPhrases' => self::PERM_ANONYMOUS,
'getTabulatorPhrases' => self::PERM_ANONYMOUS,
]); ]);
$this->load->helper('hlp_language'); $this->load->helper('hlp_language');
@@ -94,59 +92,4 @@ class Phrasen extends FHCAPI_Controller
$this->terminateWithSuccess($langs); $this->terminateWithSuccess($langs);
} }
public function getPhrases()
{
$postParams = $this->getPostJSON();
$languages = $postParams->languages;
if (!$languages || !count($languages)) {
$this->load->model('system/Sprache_model', 'sprachenModel');
$activeLanguages = $this->sprachenModel->loadWhere(array('content' => true));
$activeLanguagesData = $this->getDataOrTerminateWithError($activeLanguages);
$languages = array_map(
function ($languageData) {
return $languageData->sprache;
},
$activeLanguagesData
);
}
$this->load->model('system/Phrase_model', 'phraseModel');
$phrasesGroupedByCategory = $postParams->phrasesGroupedByCategory;
$result = [];
foreach ($languages as $language) {
$phrases = $this->phraseModel->getPhrasesByCategoryAndPhrasesAndLanguage($phrasesGroupedByCategory, $language);
$result[$language] = $this->getDataOrTerminateWithError($phrases);
}
$this->terminateWithSuccess($result);
}
public function getTabulatorPhrases()
{
$languages = json_decode($this->input->get('languages'));
if (!$languages || !count($languages)) {
$this->load->model('system/Sprache_model', 'sprachenModel');
$activeLanguages = $this->sprachenModel->loadWhere(array('content' => true));
$activeLanguagesData = $this->getDataOrTerminateWithError($activeLanguages);
$languages = array_map(
function ($languageData) {
return $languageData->sprache;
},
$activeLanguagesData
);
}
$this->load->model('system/Phrase_model', 'phraseModel');
$result = [];
foreach ($languages as $language) {
$tabulatorPhrases = $this->phraseModel->getPhrasesByCategoryAndLanguage(['tabulator'], $language);
$result[$language] = $this->getDataOrTerminateWithError($tabulatorPhrases);
}
header('Pragma: private');
header('Cache-Control: private, max-age=' . (60 * 60 * 24 * 30));
$this->terminateWithSuccess($result);
}
} }
@@ -16,8 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
if (!defined('BASEPATH')) if (! defined('BASEPATH')) exit('No direct script access allowed');
exit('No direct script access allowed');
class Profil extends FHCAPI_Controller class Profil extends FHCAPI_Controller
{ {
@@ -28,7 +27,7 @@ class Profil extends FHCAPI_Controller
public function __construct() public function __construct()
{ {
parent::__construct([ parent::__construct([
'fotoSperre' => self::PERM_LOGGED, 'fotoSperre' => self::PERM_LOGGED,
'getGemeinden' => self::PERM_LOGGED, 'getGemeinden' => self::PERM_LOGGED,
'getAllNationen' => self::PERM_LOGGED, 'getAllNationen' => self::PERM_LOGGED,
'isMitarbeiter' => self::PERM_LOGGED, 'isMitarbeiter' => self::PERM_LOGGED,
@@ -49,37 +48,28 @@ class Profil extends FHCAPI_Controller
//------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------
// Public methods // Public methods
public function profilViewData($uid=null){
/**
* retrieves view data for profile view
* @access public
* @param $uid the userID for which profile is being viewed, null or missing value implies one's own profile
*/
public function profilViewData($uid = null)
{
$authUid = getAuthUID();
$isProfilOfAuthUser = !$uid || $uid === $authUid;
$this->load->library('ProfilLib'); $this->load->library('ProfilLib');
$profileData = $this->profillib->getView($uid ?? $authUid); $editable = false;
$profileData = hasData($profileData) ? getData($profileData) : null; if(isset($uid) && $uid != null){
$profil_data = $this->profillib->getView($uid);
$viewData = [ if($uid == getAuthUID()){
'editable' => $isProfilOfAuthUser, $editable = true;
'profil_data' => $profileData, }
'permissions' => [ }else{
'basis/other_lv_plan' => $this->permissionlib->isBerechtigt(('basis/other_lv_plan')) $editable = true;
] $profil_data = $this->profillib->getView(getAuthUID());
];
if ($isProfilOfAuthUser) {
$viewData['calendar_sync_urls'] = $this->getCalendarSyncUrlData();
} }
$profil_data = hasData($profil_data) ? getData($profil_data) : null;
$viewData = array(
'editable'=>$editable,
'profil_data' => $profil_data,
);
$this->terminateWithSuccess($viewData); $this->terminateWithSuccess($viewData);
} }
/** /**
* update column foto_sperre in public.tbl_person * update column foto_sperre in public.tbl_person
* @access public * @access public
* @param boolean $value new value for the column * @param boolean $value new value for the column
@@ -87,9 +77,9 @@ class Profil extends FHCAPI_Controller
*/ */
public function fotoSperre($value) public function fotoSperre($value)
{ {
if (!isset($value)) { if(!isset($value)){
$this->terminateWithError("Missing parameter", self::ERROR_TYPE_GENERAL); $this->terminateWithError("Missing parameter", self::ERROR_TYPE_GENERAL);
} }
$res = $this->PersonModel->update($this->pid, ["foto_sperre" => $value]); $res = $this->PersonModel->update($this->pid, ["foto_sperre" => $value]);
if (isError($res)) { if (isError($res)) {
@@ -98,9 +88,9 @@ class Profil extends FHCAPI_Controller
$this->PersonModel->addSelect("foto_sperre"); $this->PersonModel->addSelect("foto_sperre");
$res = $this->PersonModel->load($this->pid); $res = $this->PersonModel->load($this->pid);
$res = $this->getDataOrTerminateWithError($res); $res = $this->getDataOrTerminateWithError($res);
$this->terminateWithSuccess(current($res)); $this->terminateWithSuccess(current($res));
} }
/** /**
@@ -127,7 +117,7 @@ class Profil extends FHCAPI_Controller
public function getGemeinden($nation, $zip) public function getGemeinden($nation, $zip)
{ {
if (!isset($nation) || !isset($zip)) { if(!isset($nation) || !isset($zip)){
echo json_encode(error("Missing parameters")); echo json_encode(error("Missing parameters"));
return; return;
} }
@@ -138,7 +128,7 @@ class Profil extends FHCAPI_Controller
$gemeinde_res = $this->GemeindeModel->getGemeindeByPlz($zip); $gemeinde_res = $this->GemeindeModel->getGemeindeByPlz($zip);
if (isError($gemeinde_res)) { if (isError($gemeinde_res)) {
$this->terminateWithError(getError($gemeinde_res), self::ERROR_TYPE_GENERAL); $this->terminateWithError(getError($gemeinde_res),self::ERROR_TYPE_GENERAL);
} }
$gemeinde_res = $this->getDataOrTerminateWithError($gemeinde_res); $gemeinde_res = $this->getDataOrTerminateWithError($gemeinde_res);
@@ -160,8 +150,7 @@ class Profil extends FHCAPI_Controller
public function isMitarbeiter($uid) public function isMitarbeiter($uid)
{ {
if (!$uid) if(!$uid) $this->terminateWithError("No uid provided", self::ERROR_TYPE_GENERAL);
$this->terminateWithError("No uid provided", self::ERROR_TYPE_GENERAL);
$result = $this->MitarbeiterModel->isMitarbeiter($uid); $result = $this->MitarbeiterModel->isMitarbeiter($uid);
@@ -178,30 +167,6 @@ class Profil extends FHCAPI_Controller
// ----------------------------------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------------------------------
// Private methods // Private methods
/**
* gets the identifier, phrase, and url for each calendar sync option
* @access private
* @return array array of arrays, where each child array is a sync option
*/
private function getCalendarSyncUrlData()
{
return [
[
"identifier" => "cal_dav",
"labelPhrase" => "profil/calendar_sync_cal_dav",
"url" => APP_ROOT . "webdav/lvplan.php/calendars/" . $this->uid . "/LVPlan-" . $this->uid,
],
[
"identifier" => "cal_dav_principal",
"labelPhrase" => "profil/calendar_sync_cal_dav_principal",
"url" => APP_ROOT . "webdav/lvplan.php/principals/" . $this->uid,
],
[
"identifier" => "i_cal",
"labelPhrase" => "profil/calendar_sync_i_cal",
"url" => APP_ROOT . "webdav/google.php?cal=" . encryptData($this->uid, LVPLAN_CYPHER_KEY) . "&" . microtime(true),
],
];
}
} }
@@ -1,64 +0,0 @@
<?php
/**
* Copyright (C) 2024 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class StgOrgLvPlan extends FHCAPI_Controller
{
/**
* Object initialization
*/
public function __construct()
{
parent::__construct([
'stgOrgLvPlanViewData' => self::PERM_LOGGED,
]);
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* fetches view data for stg org lv plan
* @access public
*/
public function stgOrgLvPlanViewData()
{
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->StudiengangModel->addOrder('typ');
$this->StudiengangModel->addOrder('kurzbz');
$result = $this->StudiengangModel->loadWhere([
'aktiv' => true
]);
$studiengaenge = $this->getDataOrTerminateWithError($result);
$viewData = array(
'studiengaenge' => $studiengaenge,
);
$this->terminateWithSuccess($viewData);
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
}
@@ -62,36 +62,21 @@ class Studium extends FHCAPI_Controller
if($this->getDataOrTerminateWithError($this->StudentModel->isStudent(getAuthUID()))){ if($this->getDataOrTerminateWithError($this->StudentModel->isStudent(getAuthUID()))){
$studentLehrverband =$this->StudentlehrverbandModel->loadWhere(["student_uid" => getAuthUID(), "studiensemester_kurzbz" => $aktuelles_studiensemester->studiensemester_kurzbz]); $studentLehrverband =$this->StudentlehrverbandModel->loadWhere(["student_uid" => getAuthUID(), "studiensemester_kurzbz" => $aktuelles_studiensemester->studiensemester_kurzbz]);
$studentLehrverband = current($this->getDataOrTerminateWithError($studentLehrverband));
//TODO(Manu) check if use Fallback or just comment out all paramschecks? $student_studiensemester = $studentLehrverband->studiensemester_kurzbz;
//add Fallback: if no LehrverbandData of actual semester, get Data of previous one $student_studiengang = $studentLehrverband->studiengang_kz;
if(!hasData($studentLehrverband)) $student_semester = $studentLehrverband->semester;
{
$result= $this->StudiensemesterModel->getPreviousFrom($aktuelles_studiensemester->studiensemester_kurzbz);
$data = $this->getDataOrTerminateWithError($result);
$vorheriges_studiensemester = current($data)->studiensemester_kurzbz;
$studentLehrverband =$this->StudentlehrverbandModel->loadWhere(["student_uid" => getAuthUID(), "studiensemester_kurzbz" => $vorheriges_studiensemester]);
}
$studentLehrverband = current(getData($studentLehrverband));
$student_studienplan = $this->getStudienPlanFromPrestudentStatus(getAuthPersonId())->studienplan_id; $student_studienplan = $this->getStudienPlanFromPrestudentStatus(getAuthPersonId())->studienplan_id;
if(!isset($parameter_studiensemester)) { if(!isset($parameter_studiensemester))
$student_studiensemester = $studentLehrverband->studiensemester_kurzbz; $parameter_studiensemester = $student_studiensemester;
$parameter_studiensemester = $student_studiensemester; if(!isset($parameter_studiengang))
} $parameter_studiengang = $student_studiengang;
if(!isset($parameter_studiengang)) { if(!isset($parameter_semester))
$student_studiengang = $studentLehrverband->studiengang_kz; $parameter_semester = $student_semester;
$parameter_studiengang = $student_studiengang;
}
if(!isset($parameter_semester)) {
$student_semester = $studentLehrverband->semester;
$parameter_semester = $student_semester;
}
if(!isset($parameter_studienplan)) if(!isset($parameter_studienplan))
$parameter_studienplan = $student_studienplan; $parameter_studienplan = $student_studienplan;
} }
if(isset($parameter_studiensemester)){ if(isset($parameter_studiensemester)){
@@ -112,6 +97,7 @@ class Studium extends FHCAPI_Controller
// fetch studiensemester // fetch studiensemester
$allStudienSemester = $this->getDataOrTerminateWithError($this->StudiensemesterModel->load()); $allStudienSemester = $this->getDataOrTerminateWithError($this->StudiensemesterModel->load());
if(isset($parameter_studiensemester) && !empty(array_filter($allStudienSemester, function($studiensemester) use($parameter_studiensemester){ if(isset($parameter_studiensemester) && !empty(array_filter($allStudienSemester, function($studiensemester) use($parameter_studiensemester){
return $studiensemester->studiensemester_kurzbz == $parameter_studiensemester->studiensemester_kurzbz; return $studiensemester->studiensemester_kurzbz == $parameter_studiensemester->studiensemester_kurzbz;
}))){ }))){
@@ -230,8 +216,6 @@ class Studium extends FHCAPI_Controller
$studienplaene = array_map(function($studienplan){ $studienplaene = array_map(function($studienplan){
$orgform = current($this->getDataOrTerminateWithError($this->OrgformModel->loadWhere(["orgform_kurzbz" => $studienplan->orgform_kurzbz]))); $orgform = current($this->getDataOrTerminateWithError($this->OrgformModel->loadWhere(["orgform_kurzbz" => $studienplan->orgform_kurzbz])));
$studienplan->orgform_bezeichnung = $orgform->bezeichnung; $studienplan->orgform_bezeichnung = $orgform->bezeichnung;
// bezeichnung_mehrsprachig
$studienplan->orgform_bezeichnung_english = $orgform->bezeichnung_mehrsprachig[1];
return $studienplan; return $studienplan;
},$studienplaene); },$studienplaene);
return $studienplaene; return $studienplaene;
@@ -259,7 +259,7 @@ class BetriebsmittelP extends FHCAPI_Controller
$kaution = $this->input->post('kaution'); $kaution = $this->input->post('kaution');
if($kaution) $kaution = str_replace(',', '.', $kaution); if($kaution) $kaution = str_replace(',', '.', $kaution);
$ausgegebenam = $this->input->post('ausgegebenam'); $ausgegebenam = $this->input->post('ausgegebenam');
$retouram = $this->input->post('retouram') == "" ? null : $this->input->post('retouram'); $retouram = $this->input->post('retouram');
// NOTE(chris): transform_kartennummer // NOTE(chris): transform_kartennummer
if ($betriebsmitteltyp == 'Zutrittskarte' && $nummer) if ($betriebsmitteltyp == 'Zutrittskarte' && $nummer)
@@ -40,32 +40,11 @@ class Board extends FHCAPI_Controller
public function list() public function list()
{ {
$this->DashboardModel->addSelect('dashboard_id');
$this->DashboardModel->addSelect('dashboard_kurzbz');
$this->DashboardModel->addSelect('tbl_dashboard.beschreibung');
$this->DashboardModel->addSelect("(
SELECT json_agg(w.*)
FROM dashboard.tbl_widget w
JOIN dashboard.tbl_dashboard_widget dw
USING(widget_id)
WHERE dw.dashboard_id=tbl_dashboard.dashboard_id
) AS \"widgetSetup\"");
$result = $this->DashboardModel->load(); $result = $this->DashboardModel->load();
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
$data = array_map(function ($dashboard) { $this->terminateWithSuccess($result);
$tmpSetups = json_decode($dashboard->widgetSetup);
$tmpSetups = array_map(function ($widget) {
$widget->setup->file = absoluteJsImportUrl($widget->setup->file);
return $widget;
}, $tmpSetups);
$dashboard->widgetSetup = $tmpSetups;
return $dashboard;
}, $data);
$this->terminateWithSuccess($data);
} }
public function create() public function create()
@@ -103,7 +82,7 @@ class Board extends FHCAPI_Controller
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data); $this->terminateWithSuccess($result);
} }
public function delete() public function delete()
@@ -137,6 +116,6 @@ class Board extends FHCAPI_Controller
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data); $this->terminateWithSuccess($result);
} }
} }
@@ -120,7 +120,10 @@ class Preset extends FHCAPI_Controller
$conf = $this->dashboardlib->getPreset($db, $funktion); $conf = $this->dashboardlib->getPreset($db, $funktion);
if ($conf) { if ($conf) {
$preset = json_decode($conf->preset, true); $preset = json_decode($conf->preset, true);
$result[$funktion] = $preset; if (!isset($preset[$funktion]) || !isset($preset[$funktion]['widgets']))
$result[$funktion] = [];
else
$result[$funktion] = $preset[$funktion]['widgets'];
} else { } else {
$result[$funktion] = []; $result[$funktion] = [];
} }
@@ -151,7 +154,7 @@ class Preset extends FHCAPI_Controller
$preset_decoded = json_decode($preset->preset, true); $preset_decoded = json_decode($preset->preset, true);
$preset_decoded[$widget['widgetid']] = $widget; $this->dashboardlib->addWidgetsToWidgets($preset_decoded, $dashboard_kurzbz, $funktion_kurzbz, [$widget]);
$preset->preset = json_encode($preset_decoded); $preset->preset = json_encode($preset_decoded);
@@ -183,11 +186,9 @@ class Preset extends FHCAPI_Controller
$preset_decoded = json_decode($preset->preset, true); $preset_decoded = json_decode($preset->preset, true);
if (!isset($preset_decoded[$widgetid])) if (!$this->dashboardlib->removeWidgetFromWidgets($preset_decoded, $funktion_kurzbz, $widgetid))
show_404(); show_404();
unset($preset_decoded[$widgetid]);
$preset->preset = json_encode($preset_decoded); $preset->preset = json_encode($preset_decoded);
$result = $this->dashboardlib->insertOrUpdatePreset($preset); $result = $this->dashboardlib->insertOrUpdatePreset($preset);
@@ -48,9 +48,25 @@ class User extends FHCAPI_Controller
$uid = $this->authlib->getAuthObj()->username; $uid = $this->authlib->getAuthObj()->username;
$mergedconfig = $this->dashboardlib->getMergedUserConfig($dashboard->dashboard_id, $uid); /*$mergedconfig = $this->dashboardlib->getMergedConfig($dashboard->dashboard_id, $uid);
$this->terminateWithSuccess($mergedconfig); $this->terminateWithSuccess([
'general' => call_user_func_array(
'array_merge_recursive',
$mergedconfig
)
]);*/
$defaultconfig = $this->dashboardlib->getDefaultConfig($dashboard->dashboard_id);
$userconfig = $this->dashboardlib->getUserConfig($dashboard->dashboard_id, $uid);
$defaultconfig_squashed = $defaultconfig ? call_user_func_array('array_replace_recursive', $defaultconfig) : [];
$userconfig_squashed = $userconfig ? call_user_func_array('array_replace_recursive', $userconfig) : [];
$mergedconfig = array_replace_recursive($defaultconfig_squashed, $userconfig_squashed);
$this->terminateWithSuccess([
DashboardLib::SECTION_IF_FUNKTION_KURZBZ_IS_NULL => $mergedconfig
]);
} }
public function addWidget() public function addWidget()
@@ -70,14 +86,25 @@ class User extends FHCAPI_Controller
if (!isset($widget['widgetid'])) if (!isset($widget['widgetid']))
$widget['widgetid'] = $this->dashboardlib->generateWidgetId($dashboard_kurzbz); $widget['widgetid'] = $this->dashboardlib->generateWidgetId($dashboard_kurzbz);
if (isset($widget['source']))
unset($widget['source']);
$override = $this->dashboardlib->getOverrideOrCreateEmptyOverride($dashboard_kurzbz, $uid); $override = $this->dashboardlib->getOverrideOrCreateEmptyOverride($dashboard_kurzbz, $uid);
$override_decoded = json_decode($override->override, true); $override_decoded = json_decode($override->override, true);
$override_decoded[$widget['widgetid']] = $widget; if (!isset($override_decoded['general']) || !is_array($override_decoded['general']))
$override_decoded['general'] = [];
if (!isset($override_decoded['general']['widgets']))
$override_decoded['general']['widgets'] = [];
$override_decoded['general']['widgets'][$widget['widgetid']] = $widget;
// NOTE(chris): remove doubles in other funktionen
foreach ($override_decoded as $funktion => $array) {
if ($funktion == 'general')
continue;
if (isset($array['widgets']) && isset($array['widgets'][$widget['widgetid']]))
unset($override_decoded[$funktion]['widgets'][$widget['widgetid']]);
}
$override->override = json_encode($override_decoded); $override->override = json_encode($override_decoded);
@@ -108,10 +135,18 @@ class User extends FHCAPI_Controller
$override_decoded = json_decode($override->override, true); $override_decoded = json_decode($override->override, true);
if (!isset($override_decoded[$widget_id])) foreach (array_keys($override_decoded) as $k) {
show_404(); if (!isset($override_decoded[$k]["widgets"])) {
unset($override_decoded[$k]);
unset($override_decoded[$widget_id]); continue;
}
if (isset($override_decoded[$k]["widgets"][$widget_id])) {
unset($override_decoded[$k]["widgets"][$widget_id]);
}
if (!$override_decoded[$k]["widgets"]) {
unset($override_decoded[$k]);
}
}
$override->override = json_encode($override_decoded); $override->override = json_encode($override_decoded);
@@ -9,9 +9,9 @@ class Detailheader extends FHCAPI_Controller
public function __construct() public function __construct()
{ {
parent::__construct([ parent::__construct([
'getHeader' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'], 'getHeader' => ['vertrag/mitarbeiter:r'],
'getPersonAbteilung' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'], 'getPersonAbteilung' => ['vertrag/mitarbeiter:r'],
'getLeitungOrg' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'], 'getLeitungOrg' => ['vertrag/mitarbeiter:r'],
]); ]);
} }
@@ -294,10 +294,6 @@ class Funktionen extends FHCAPI_Controller
{ {
$this->terminateWithValidationErrors($this->form_validation->error_array()); $this->terminateWithValidationErrors($this->form_validation->error_array());
} }
if($datum_von == '')
$datum_von = null;
if($datum_bis == '')
$datum_bis = null;
$result = $this->BenutzerfunktionModel->update( $result = $this->BenutzerfunktionModel->update(
[ [
@@ -371,9 +371,6 @@ class Abschlusspruefung extends FHCAPI_Controller
$this->terminateWithValidationErrors($this->form_validation->error_array()); $this->terminateWithValidationErrors($this->form_validation->error_array());
} }
$datum = $formData['datum'] == '' ? null : $formData['datum'];
$sponsion = $formData['sponsion'] == '' ? null : $formData['sponsion'];
$result = $this->AbschlusspruefungModel->update( $result = $this->AbschlusspruefungModel->update(
[ [
'abschlusspruefung_id' => $abschlusspruefung_id 'abschlusspruefung_id' => $abschlusspruefung_id
@@ -385,8 +382,8 @@ class Abschlusspruefung extends FHCAPI_Controller
'vorsitz' => $vorsitz, 'vorsitz' => $vorsitz,
'pruefungsantritt_kurzbz' => $formData['pruefungsantritt_kurzbz'], 'pruefungsantritt_kurzbz' => $formData['pruefungsantritt_kurzbz'],
'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'], 'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'],
'datum' => $datum, 'datum' => $formData['datum'],
'sponsion' => $sponsion, 'sponsion' => $formData['sponsion'],
'pruefer1' => $pruefer1, 'pruefer1' => $pruefer1,
'pruefer2' => $pruefer2, 'pruefer2' => $pruefer2,
'pruefer3' => $pruefer3, 'pruefer3' => $pruefer3,
@@ -170,8 +170,6 @@ class Dokumente extends FHCAPI_Controller
$this->terminateWithValidationErrors($this->form_validation->error_array()); $this->terminateWithValidationErrors($this->form_validation->error_array());
} }
$nachgereicht_am = $this->input->post('nachgereicht_am') == '' ? null : $this->input->post('nachgereicht_am');
$uid = getAuthUID(); $uid = getAuthUID();
$result = $this->AkteModel->update( $result = $this->AkteModel->update(
@@ -182,7 +180,7 @@ class Dokumente extends FHCAPI_Controller
'dokument_kurzbz' => $this->input->post('dokument_kurzbz'), 'dokument_kurzbz' => $this->input->post('dokument_kurzbz'),
'anmerkung_intern' => $this->input->post('anmerkung_intern'), 'anmerkung_intern' => $this->input->post('anmerkung_intern'),
'titel_intern' => $this->input->post('titel_intern'), 'titel_intern' => $this->input->post('titel_intern'),
'nachgereicht_am' => $nachgereicht_am, 'nachgereicht_am' => $this->input->post('nachgereicht_am'),
'updateamum' => date('c'), 'updateamum' => date('c'),
'updatevon' => $uid, 'updatevon' => $uid,
] ]
@@ -429,12 +429,9 @@ class Konto extends FHCAPI_Controller
'updateamum' => date('c'), 'updateamum' => date('c'),
'updatevon' => getAuthUID() 'updatevon' => getAuthUID()
]; ];
foreach ($allowed as $field) foreach ($allowed as $field)
if ($this->input->post($field) !== null) if ($this->input->post($field) !== null)
$data[$field] = $this->input->post($field); $data[$field] = $this->input->post($field);
if($data['buchungsdatum'] == '')
$data['buchungsdatum'] = null;
$result = $this->KontoModel->update($id, $data); $result = $this->KontoModel->update($id, $data);
@@ -237,8 +237,8 @@ class Mobility extends FHCAPI_Controller
} }
$formData = $this->input->post('formData'); $formData = $this->input->post('formData');
$von = ($formData['von'] ?? '') ?: null; $von = $formData['von'] ?? null;
$bis = ($formData['bis'] ?? '') ?: null; $bis = $formData['bis'] ?? null;
$nation_code = $formData['nation_code'] ?? null; $nation_code = $formData['nation_code'] ?? null;
$mobilitaetsprogramm_code = $formData['mobilitaetsprogramm_code'] ?? null; $mobilitaetsprogramm_code = $formData['mobilitaetsprogramm_code'] ?? null;
$herkunftsland_code = $formData['herkunftsland_code'] ?? null; $herkunftsland_code = $formData['herkunftsland_code'] ?? null;
@@ -193,7 +193,7 @@ class Prestudent extends FHCAPI_Controller
} }
elseif ( elseif (
$val === '' $val === ''
&& in_array($prop, ['zgvnation', 'zgvmanation', 'zgvdoktornation', 'berufstaetigkeit_code', 'ausbildungcode', 'zgvdatum', 'zgvmadatum']) && in_array($prop, ['zgvnation', 'zgvmanation', 'zgvdoktornation', 'berufstaetigkeit_code', 'ausbildungcode'])
) )
{ {
$val = null; $val = null;
@@ -42,6 +42,8 @@ class Projektarbeit extends FHCAPI_Controller
$this->load->model('education/Note_model', 'NoteModel'); $this->load->model('education/Note_model', 'NoteModel');
$this->load->model('education/Projektbetreuer_model', 'BetreuerModel'); $this->load->model('education/Projektbetreuer_model', 'BetreuerModel');
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->model('crm/Student_model', 'StudentModel');
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
// load libraries // load libraries
$this->load->library('PermissionLib'); $this->load->library('PermissionLib');
@@ -100,12 +102,15 @@ class Projektarbeit extends FHCAPI_Controller
private function fetchProjektarbeitById($projektarbeit_id) { private function fetchProjektarbeitById($projektarbeit_id) {
$this->ProjektarbeitModel->resetQuery(); $this->ProjektarbeitModel->resetQuery();
$this->ProjektarbeitModel->addSelect( $this->ProjektarbeitModel->addSelect(
'lehre.tbl_projektarbeit.projektarbeit_id, titel, titel_english, themenbereich, projekttyp_kurzbz, lehrveranstaltung_id, lehreinheit_id, 'lehre.tbl_projektarbeit.projektarbeit_id, titel, titel_english, themenbereich, projekttyp_kurzbz,
lehre.tbl_projektarbeit.lehrveranstaltung_id, lehreinheit_id,
firma_id, beginn, ende, gesperrtbis, note, final, freigegeben, tbl_projektarbeit.anmerkung, fa.name AS firma_name' firma_id, beginn, ende, gesperrtbis, note, final, freigegeben, tbl_projektarbeit.anmerkung, fa.name AS firma_name'
); );
$this->ProjektarbeitModel->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id'); $this->ProjektarbeitModel->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id', 'LEFT');
$this->ProjektarbeitModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id'); $this->ProjektarbeitModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehre.tbl_projektarbeit.lehrveranstaltung_id = lv.lehrveranstaltung_id');
$this->ProjektarbeitModel->addJoin('public.tbl_firma fa', 'firma_id', 'LEFT'); $this->ProjektarbeitModel->addJoin('public.tbl_firma fa', 'firma_id', 'LEFT');
return $this->ProjektarbeitModel->loadWhere( return $this->ProjektarbeitModel->loadWhere(
array('projektarbeit_id' => $projektarbeit_id) array('projektarbeit_id' => $projektarbeit_id)
); );
@@ -236,7 +241,7 @@ class Projektarbeit extends FHCAPI_Controller
} }
/** /**
* Get Lehrveranstaltungen by params, incling lehreinheiten for a specific Studiensemester.. * Get Lehrveranstaltungen by params, including lehreinheiten for a specific Studiensemester..
*/ */
public function getLehrveranstaltungen() public function getLehrveranstaltungen()
{ {
@@ -246,15 +251,39 @@ class Projektarbeit extends FHCAPI_Controller
$additional_lehrveranstaltung_id = $this->input->get('additional_lehrveranstaltung_id'); $additional_lehrveranstaltung_id = $this->input->get('additional_lehrveranstaltung_id');
if (!isset($student_uid)) $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Student UID']), self::ERROR_TYPE_GENERAL); if (!isset($student_uid)) $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Student UID']), self::ERROR_TYPE_GENERAL);
if (!isset($studiensemester_kurzbz)) $this->terminateWithError('Studiensemster missing', self::ERROR_TYPE_GENERAL); if (!isset($studiensemester_kurzbz)) $this->terminateWithError('Studiensemester missing', self::ERROR_TYPE_GENERAL);
// get Lvs // get prestudent_id from student model
$studentRes = $this->StudentModel->load(['student_uid' => $student_uid]);
if(hasData($studentRes)) {
$student = getData($studentRes);
} else {
$this->terminateWithError($studentRes, self::ERROR_TYPE_GENERAL);
}
// to get prestudent_status history
$historyRes = $this->PrestudentstatusModel->getHistoryPrestudent($student[0]->prestudent_id);
if(hasData($historyRes)) {
$history = getData($historyRes);
} else {
$this->terminateWithError($historyRes, self::ERROR_TYPE_GENERAL);
}
// query for every lva of a studiengang that has projektarbeit flag true
$lvsResult = $this->LehrveranstaltungModel->getLvsForProjektarbeit($student_uid, $studiengang_kz, $additional_lehrveranstaltung_id); $lvsResult = $this->LehrveranstaltungModel->getLvsForProjektarbeit($student_uid, $studiengang_kz, $additional_lehrveranstaltung_id);
if (isError($lvsResult)) return $this->terminateWithError($lvsResult, self::ERROR_TYPE_GENERAL); if (isError($lvsResult)) return $this->terminateWithError($lvsResult, self::ERROR_TYPE_GENERAL);
$lvs = hasData($lvsResult) ? getData($lvsResult) : []; $lvs = hasData($lvsResult) ? getData($lvsResult) : [];
$lvsIDs = array_column($lvs, 'lehrveranstaltung_id');
// get current studienplan_id from status history to find out which lva options are actually assigned to the students studienplan
// important so the projektarbeit has the correct lva assigned to be able to find and print the thesis title on the degree documents!
$currentStatus = $history[0];
$lvByStudienPlanRes = $this->LehrveranstaltungModel->getLvsByStudienplanByLvaIDs($currentStatus->studienplan_id, $lvsIDs);
if(hasData($lvByStudienPlanRes)) {
$lvs = getData($lvByStudienPlanRes);
}
foreach ($lvs as $lv) foreach ($lvs as $lv)
{ {
// add Lehreinheiten for each Lv for the semester // add Lehreinheiten for each Lv for the semester
@@ -287,7 +316,10 @@ class Projektarbeit extends FHCAPI_Controller
*/ */
public function getNoten() public function getNoten()
{ {
$result = $this->NoteModel->getAllActive(); $this->NoteModel->addOrder('notenwert', 'ASC');
$this->NoteModel->addOrder('bezeichnung', 'ASC');
$result = $this->NoteModel->load();
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
@@ -320,11 +352,18 @@ class Projektarbeit extends FHCAPI_Controller
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Projekttyp']) 'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Projekttyp'])
]); ]);
$this->form_validation->set_rules('lehreinheit_id', 'Lehreinheit', 'required|is_natural', [ $this->form_validation->set_rules('lehreinheit_id', 'Lehreinheit', 'is_natural', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Lehreinheit']),
'is_natural' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Lehreinheit']) 'is_natural' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Lehreinheit'])
]); ]);
$this->form_validation->set_rules('lehrveranstaltung_id', 'Lehrveranstaltung', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Lehrveranstaltung'])
]);
$this->form_validation->set_rules('studiensemester_kurzbz', 'Studiensemester', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Studiensemester'])
]);
$this->form_validation->set_rules('beginn', 'Beginn', 'is_valid_date', [ $this->form_validation->set_rules('beginn', 'Beginn', 'is_valid_date', [
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Beginn']) 'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Beginn'])
]); ]);
@@ -354,6 +393,8 @@ class Projektarbeit extends FHCAPI_Controller
'projekttyp_kurzbz' => $formData['projekttyp_kurzbz'], 'projekttyp_kurzbz' => $formData['projekttyp_kurzbz'],
'firma_id' => $formData['firma_id'] ?? null, 'firma_id' => $formData['firma_id'] ?? null,
'lehreinheit_id' => $formData['lehreinheit_id'], 'lehreinheit_id' => $formData['lehreinheit_id'],
'lehrveranstaltung_id' => $formData['lehrveranstaltung_id'],
'studiensemester_kurzbz' => $formData['studiensemester_kurzbz'],
'beginn' => isset($formData['beginn']) && !isEmptyString($formData['beginn']) ? $formData['beginn'] : null, 'beginn' => isset($formData['beginn']) && !isEmptyString($formData['beginn']) ? $formData['beginn'] : null,
'ende' => isset($formData['ende']) && !isEmptyString($formData['ende']) ? $formData['ende'] : null, 'ende' => isset($formData['ende']) && !isEmptyString($formData['ende']) ? $formData['ende'] : null,
'note' => $formData['note'] ?? null, 'note' => $formData['note'] ?? null,
@@ -448,10 +448,8 @@ class Pruefung extends FHCAPI_Controller
} }
} }
$datum = $this->input->post('datum') == '' ? null : $this->input->post('datum');
if(intval($pruefung_id) > 0) if(intval($pruefung_id) > 0)
{ {
$result = $this->PruefungModel->update( $result = $this->PruefungModel->update(
[ [
'pruefung_id' => $pruefung_id 'pruefung_id' => $pruefung_id
@@ -461,7 +459,7 @@ class Pruefung extends FHCAPI_Controller
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'), 'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
'note' => $this->input->post('note'), 'note' => $this->input->post('note'),
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'), 'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
'datum' => $datum, 'datum' => $this->input->post('datum'),
'anmerkung' => $this->input->post('anmerkung'), 'anmerkung' => $this->input->post('anmerkung'),
'updatevon' => $authUID, 'updatevon' => $authUID,
'updateamum' => date('c'), 'updateamum' => date('c'),
@@ -474,7 +472,7 @@ class Pruefung extends FHCAPI_Controller
'lehreinheit_id' => $this->input->post('lehreinheit_id'), 'lehreinheit_id' => $this->input->post('lehreinheit_id'),
'student_uid' => $this->input->post('student_uid'), 'student_uid' => $this->input->post('student_uid'),
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'), 'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
'datum' => $datum, 'datum' => $this->input->post('datum'),
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'), 'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
'note' => $this->input->post('note'), 'note' => $this->input->post('note'),
'anmerkung' => $this->input->post('anmerkung'), 'anmerkung' => $this->input->post('anmerkung'),
@@ -522,7 +520,7 @@ class Pruefung extends FHCAPI_Controller
'studiensemester_kurzbz' => $studiensemester_kurzbz, 'studiensemester_kurzbz' => $studiensemester_kurzbz,
'note' => $this->input->post('note'), 'note' => $this->input->post('note'),
'uebernahmedatum' => date('c'), 'uebernahmedatum' => date('c'),
'benotungsdatum' => $datum, 'benotungsdatum' => $this->input->post('datum'),
'insertamum' => date('c'), 'insertamum' => date('c'),
'insertvon' => $authUID, 'insertvon' => $authUID,
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null 'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
@@ -557,7 +555,7 @@ class Pruefung extends FHCAPI_Controller
], [ ], [
'note' => $this->input->post('note'), 'note' => $this->input->post('note'),
'uebernahmedatum' => date('c'), 'uebernahmedatum' => date('c'),
'benotungsdatum' => $datum, 'benotungsdatum' => $this->input->post('datum'),
'updateamum' => date('c'), 'updateamum' => date('c'),
'updatevon' => $authUID, 'updatevon' => $authUID,
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null 'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
@@ -296,10 +296,6 @@ class Student extends FHCAPI_Controller
$fotoval = ($val == '') ? null : str_replace('data:image/jpeg;base64,', '', $val); $fotoval = ($val == '') ? null : str_replace('data:image/jpeg;base64,', '', $val);
$update_person[$prop] = $fotoval; $update_person[$prop] = $fotoval;
} }
else if ($prop == 'gebdatum')
{
$update_person[$prop] = ($val == '') ? null : $val;
}
else else
{ {
$update_person[$prop] = $val; $update_person[$prop] = $val;
@@ -25,6 +25,9 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
*/ */
class Students extends FHCAPI_Controller class Students extends FHCAPI_Controller
{ {
private $allowedStgs = [];
public function __construct() public function __construct()
{ {
$permissions = []; $permissions = [];
@@ -32,17 +35,16 @@ class Students extends FHCAPI_Controller
$permissions[$router->method] = ['admin:r', 'assistenz:r']; $permissions[$router->method] = ['admin:r', 'assistenz:r'];
parent::__construct($permissions); parent::__construct($permissions);
$allowedStgs = $this->permissionlib->getSTG_isEntitledFor('admin') ?: []; $this->allowedStgs = $this->permissionlib->getSTG_isEntitledFor('admin') ?: [];
$allowedStgs = array_merge($allowedStgs, $this->permissionlib->getSTG_isEntitledFor('assistenz') ?: []); $this->allowedStgs = array_merge($this->allowedStgs, $this->permissionlib->getSTG_isEntitledFor('assistenz') ?: []);
if (!$allowedStgs) { if (!$this->allowedStgs) {
$this->_outputAuthError([$router->method => ['admin:r', 'assistenz:r']]); $this->_outputAuthError([$router->method => ['admin:r', 'assistenz:r']]);
exit; exit;
} }
// Load Libraries // Load Libraries
$this->load->library('PhrasesLib'); $this->load->library('PhrasesLib');
$this->load->library('stv/StudentListLib', ['allowedStgs' => $allowedStgs]);
$this->loadPhrases( $this->loadPhrases(
array( array(
'lehre' 'lehre'
@@ -109,19 +111,23 @@ class Students extends FHCAPI_Controller
]); ]);
$this->studentlistlib->addJoin( $this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->PrestudentModel->addJoin(
"( "(
SELECT prestudent_id SELECT prestudent_id
FROM public.tbl_prestudentstatus FROM public.tbl_prestudentstatus
WHERE status_kurzbz = 'Incoming' WHERE status_kurzbz = 'Incoming'
AND studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . " AND studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . "
) test", ) test",
"prestudent_id", "prestudent_id"
"",
"start"
); );
$this->studentlistlib->addSelect("COALESCE(
$this->prepareQuery($studiensemester_kurzbz);
$this->PrestudentModel->addSelect("COALESCE(
v.semester::text, v.semester::text,
CASE CASE
WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent') WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
@@ -129,13 +135,16 @@ class Students extends FHCAPI_Controller
ELSE ''::text ELSE ''::text
END END
) AS semester", false); ) AS semester", false);
$this->studentlistlib->addSelect("COALESCE(v.verband::text, ''::text) AS verband"); $this->PrestudentModel->addSelect("COALESCE(v.verband::text, ''::text)");
$this->studentlistlib->addSelect("COALESCE(v.gruppe::text, ''::text) AS gruppe"); $this->PrestudentModel->addSelect("COALESCE(v.gruppe::text, ''::text)");
$this->addSelectPrioRel();
$this->addFilter($studiensemester_kurzbz); $this->addFilter($studiensemester_kurzbz);
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
$result = $this->PrestudentModel->load();
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
@@ -155,7 +164,10 @@ class Students extends FHCAPI_Controller
]); ]);
$this->studentlistlib->addJoin( $this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->PrestudentModel->addJoin(
"( "(
SELECT prestudent_id SELECT prestudent_id
FROM bis.tbl_bisio bis FROM bis.tbl_bisio bis
@@ -175,12 +187,14 @@ class Students extends FHCAPI_Controller
) AND stdsem.studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . " ) AND stdsem.studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . "
GROUP BY prestudent_id GROUP BY prestudent_id
) test", ) test",
"prestudent_id", "prestudent_id"
"",
"start"
); );
$this->studentlistlib->addSelect("COALESCE(
$this->prepareQuery($studiensemester_kurzbz);
$this->PrestudentModel->addSelect("COALESCE(
v.semester::text, v.semester::text,
CASE CASE
WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent') WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
@@ -188,13 +202,16 @@ class Students extends FHCAPI_Controller
ELSE ''::text ELSE ''::text
END END
) AS semester", false); ) AS semester", false);
$this->studentlistlib->addSelect("COALESCE(v.verband::text, ''::text) AS verband"); $this->PrestudentModel->addSelect("COALESCE(v.verband::text, ''::text)");
$this->studentlistlib->addSelect("COALESCE(v.gruppe::text, ''::text) AS gruppe"); $this->PrestudentModel->addSelect("COALESCE(v.gruppe::text, ''::text)");
$this->addSelectPrioRel();
$this->addFilter($studiensemester_kurzbz); $this->addFilter($studiensemester_kurzbz);
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
$result = $this->PrestudentModel->load();
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
@@ -214,18 +231,23 @@ class Students extends FHCAPI_Controller
]); ]);
$this->studentlistlib->addJoin( $this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->PrestudentModel->addJoin(
"( "(
SELECT prestudent_id SELECT prestudent_id
FROM bis.tbl_mobilitaet FROM bis.tbl_mobilitaet
WHERE studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . " WHERE studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . "
) bis", ) bis",
"prestudent_id", "prestudent_id"
"",
"start"
); );
$this->studentlistlib->addSelect("COALESCE(
$this->prepareQuery($studiensemester_kurzbz);
$this->PrestudentModel->addSelect("COALESCE(
v.semester::text, v.semester::text,
CASE CASE
WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent') WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
@@ -233,13 +255,16 @@ class Students extends FHCAPI_Controller
ELSE ''::text ELSE ''::text
END END
) AS semester", false); ) AS semester", false);
$this->studentlistlib->addSelect("COALESCE(v.verband::text, ''::text) AS verband"); $this->PrestudentModel->addSelect("COALESCE(v.verband::text, ''::text)");
$this->studentlistlib->addSelect("COALESCE(v.gruppe::text, ''::text) AS gruppe"); $this->PrestudentModel->addSelect("COALESCE(v.gruppe::text, ''::text)");
$this->addSelectPrioRel();
$this->addFilter($studiensemester_kurzbz); $this->addFilter($studiensemester_kurzbz);
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
$result = $this->PrestudentModel->load();
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
@@ -288,6 +313,8 @@ class Students extends FHCAPI_Controller
*/ */
protected function fetchPrestudents($studiengang_kz, $studiensemester_kurzbz = null, $filter = null, $orgform_kurzbz = null) protected function fetchPrestudents($studiengang_kz, $studiensemester_kurzbz = null, $filter = null, $orgform_kurzbz = null)
{ {
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$stdsemEsc = $studiensemester_kurzbz ? $this->PrestudentModel->escape($studiensemester_kurzbz) : 'NULL'; $stdsemEsc = $studiensemester_kurzbz ? $this->PrestudentModel->escape($studiensemester_kurzbz) : 'NULL';
$selectRT = " $selectRT = "
@@ -304,38 +331,38 @@ class Students extends FHCAPI_Controller
AND r.studiensemester_kurzbz=" . $stdsemEsc; AND r.studiensemester_kurzbz=" . $stdsemEsc;
$this->studentlistlib->addWhere('tbl_prestudent.studiengang_kz', $studiengang_kz); $where = ['tbl_prestudent.studiengang_kz' => $studiengang_kz];
if ($orgform_kurzbz) { if ($orgform_kurzbz) {
$this->studentlistlib->addWhere('ps.orgform_kurzbz', $orgform_kurzbz); $where['ps.orgform_kurzbz'] = $orgform_kurzbz;
} }
switch ($filter) { switch ($filter) {
case "interessenten": case "interessenten":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent'); $where['ps.status_kurzbz'] = 'Interessent';
break; break;
case "bewerbungnichtabgeschickt": case "bewerbungnichtabgeschickt":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent'); $where['ps.status_kurzbz'] = 'Interessent';
$this->studentlistlib->addWhere('ps.bewerbung_abgeschicktamum IS NULL'); $where['ps.bewerbung_abgeschicktamum'] = null;
break; break;
case "bewerbungabgeschickt": case "bewerbungabgeschickt":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent'); $where['ps.status_kurzbz'] = 'Interessent';
$this->studentlistlib->addWhere('ps.bewerbung_abgeschicktamum IS NOT NULL'); $where['ps.bewerbung_abgeschicktamum IS NOT NULL'] = null;
$this->studentlistlib->addWhere('ps.bestaetigtam IS NULL'); $where['ps.bestaetigtam'] = null;
break; break;
case "statusbestaetigt": case "statusbestaetigt":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent'); $where['ps.status_kurzbz'] = 'Interessent';
$this->studentlistlib->addWhere('ps.bestaetigtam IS NOT NULL'); $where['ps.bestaetigtam IS NOT NULL'] = null;
break; break;
case "statusbestaetigtrtnichtangemeldet": case "statusbestaetigtrtnichtangemeldet":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent'); $where['ps.status_kurzbz'] = 'Interessent';
$this->studentlistlib->addWhere('ps.bestaetigtam IS NOT NULL'); $where['ps.bestaetigtam IS NOT NULL'] = null;
$this->studentlistlib->addWhere('NOT EXISTS(' . $selectRT . ')', null, false); $this->PrestudentModel->db->where('NOT EXISTS(' . $selectRT . ')', null, false);
break; break;
case "statusbestaetigtrtangemeldet": case "statusbestaetigtrtangemeldet":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent'); $where['ps.status_kurzbz'] = 'Interessent';
$this->studentlistlib->addWhere('ps.bestaetigtam IS NOT NULL'); $where['ps.bestaetigtam IS NOT NULL'] = null;
$this->studentlistlib->addWhere('EXISTS(' . $selectRT . ')', null, false); $this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false);
break; break;
case "zgv": case "zgv":
$this->load->model('organisation/Studiengang_model', 'StudiengangModel'); $this->load->model('organisation/Studiengang_model', 'StudiengangModel');
@@ -347,69 +374,69 @@ class Students extends FHCAPI_Controller
$this->terminateWithSuccess([]); $this->terminateWithSuccess([]);
$stg = current($stg); $stg = current($stg);
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent'); $where['ps.status_kurzbz'] = 'Interessent';
if ($stg->typ == 'm') { if ($stg->typ == 'm') {
$this->studentlistlib->addWhere('zgvmas_code IS NOT NULL'); $where['zgvmas_code IS NOT NULL'] = null;
if (defined('ZGV_ERFUELLT_ANZEIGEN') && ZGV_ERFUELLT_ANZEIGEN) if (defined('ZGV_ERFUELLT_ANZEIGEN') && ZGV_ERFUELLT_ANZEIGEN)
$this->studentlistlib->addWhere('zgvmas_erfuellt', true); $where['zgvmas_erfuellt'] = true;
} elseif ($stg->typ == 'p') { } elseif ($stg->typ == 'p') {
$this->studentlistlib->addWhere('zgvdoktor_code IS NOT NULL'); $where['zgvdoktor_code IS NOT NULL'] = null;
if (defined('ZGV_DOKTOR_ANZEIGEN') && ZGV_DOKTOR_ANZEIGEN) if (defined('ZGV_DOKTOR_ANZEIGEN') && ZGV_DOKTOR_ANZEIGEN)
$this->studentlistlib->addWhere('zgvdoktor_erfuellt', true); $where['zgvdoktor_erfuellt'] = true;
} else { } else {
$this->studentlistlib->addWhere('zgv_code IS NOT NULL'); $where['zgv_code IS NOT NULL'] = null;
if (defined('ZGV_ERFUELLT_ANZEIGEN') && ZGV_ERFUELLT_ANZEIGEN) if (defined('ZGV_ERFUELLT_ANZEIGEN') && ZGV_ERFUELLT_ANZEIGEN)
$this->studentlistlib->addWhere('zgv_erfuellt', true); $where['zgv_erfuellt'] = true;
} }
break; break;
case "reihungstestangemeldet": case "reihungstestangemeldet":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent'); $where['ps.status_kurzbz'] = 'Interessent';
$this->studentlistlib->addWhere('EXISTS(' . $selectRT . ')', null, false); $this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false);
break; break;
case "reihungstestnichtangemeldet": case "reihungstestnichtangemeldet":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent'); $where['ps.status_kurzbz'] = 'Interessent';
$this->studentlistlib->addWhere('NOT EXISTS(' . $selectRT . ')', null, false); $this->PrestudentModel->db->where('NOT EXISTS(' . $selectRT . ')', null, false);
break; break;
case "bewerber": case "bewerber":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Bewerber'); $where['ps.status_kurzbz'] = 'Bewerber';
break; break;
case "bewerberrtnichtangemeldet": case "bewerberrtnichtangemeldet":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Bewerber'); $where['ps.status_kurzbz'] = 'Bewerber';
$this->studentlistlib->addWhere('NOT EXISTS(' . $selectRT . ')', null, false); $this->PrestudentModel->db->where('NOT EXISTS(' . $selectRT . ')', null, false);
break; break;
case "bewerberrtangemeldet": case "bewerberrtangemeldet":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Bewerber'); $where['ps.status_kurzbz'] = 'Bewerber';
$this->studentlistlib->addWhere('EXISTS(' . $selectRT . ')', null, false); $this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false);
break; break;
case "bewerberrtangemeldetteilgenommen": case "bewerberrtangemeldetteilgenommen":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Bewerber'); $where['ps.status_kurzbz'] = 'Bewerber';
$this->studentlistlib->addWhere('EXISTS(' . $selectRT . ')', null, false); $this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false);
$this->studentlistlib->addWhere('reihungstestangetreten', true); $where['reihungstestangetreten'] = true;
break; break;
case "bewerberrtangemeldetnichtteilgenommen": case "bewerberrtangemeldetnichtteilgenommen":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Bewerber'); $where['ps.status_kurzbz'] = 'Bewerber';
$this->studentlistlib->addWhere('EXISTS(' . $selectRT . ')', null, false); $this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false);
$this->studentlistlib->addWhere('reihungstestangetreten', false); $where['reihungstestangetreten'] = false;
break; break;
case "aufgenommen": case "aufgenommen":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Aufgenommener'); $where['ps.status_kurzbz'] = 'Aufgenommener';
break; break;
case "warteliste": case "warteliste":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Wartender'); $where['ps.status_kurzbz'] = 'Wartender';
break; break;
case "absage": case "absage":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Abgewiesener'); $where['ps.status_kurzbz'] = 'Abgewiesener';
break; break;
case "incoming": case "incoming":
// NOTE(chris): in FAS it was not filtered for studiengang_kz // NOTE(chris): in FAS it was not filtered for studiengang_kz
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Incoming'); $where['ps.status_kurzbz'] = 'Incoming';
break; break;
case "absolvent": case "absolvent":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Absolvent'); $where['ps.status_kurzbz'] = 'Absolvent';
break; break;
case "diplomand": case "diplomand":
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Diplomand'); $where['ps.status_kurzbz'] = 'Diplomand';
break; break;
default: default:
if (!$studiensemester_kurzbz) { if (!$studiensemester_kurzbz) {
@@ -417,9 +444,9 @@ class Students extends FHCAPI_Controller
* show all prestudents in this stg who don't have a status * show all prestudents in this stg who don't have a status
* $orgform_kurzbz does not change the results since orgform is stored in the status table * $orgform_kurzbz does not change the results since orgform is stored in the status table
*/ */
$this->studentlistlib->addWhere('ps.status_kurzbz IS NULL'); $where['ps.status_kurzbz'] = null;
} else { } else {
$this->studentlistlib->addWhere('ps.status_kurzbz', [ $this->PrestudentModel->db->where_in('ps.status_kurzbz', [
'Interessent', 'Interessent',
'Bewerber', 'Bewerber',
'Aufgenommener', 'Aufgenommener',
@@ -430,19 +457,21 @@ class Students extends FHCAPI_Controller
break; break;
} }
$this->studentlistlib->addSelect(" $this->prepareQuery($studiensemester_kurzbz);
$this->PrestudentModel->addSelect("
CASE CASE
WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent') WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
THEN ps.ausbildungssemester::text THEN ps.ausbildungssemester::text
ELSE ''::text ELSE ''::text
END AS semester", false); END AS semester", false);
$this->studentlistlib->addSelect("'' AS verband"); $this->PrestudentModel->addSelect("'' AS verband");
$this->studentlistlib->addSelect("'' AS gruppe"); $this->PrestudentModel->addSelect("'' AS gruppe");
$this->addSelectPrioRel();
$this->addFilter($studiensemester_kurzbz); $this->addFilter($studiensemester_kurzbz);
$result = $this->studentlistlib->execute($studiensemester_kurzbz); $result = $this->PrestudentModel->loadWhere($where);
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
@@ -545,6 +574,7 @@ class Students extends FHCAPI_Controller
$gruppe_kurzbz = null, $gruppe_kurzbz = null,
$orgform_kurzbz = null $orgform_kurzbz = null
) { ) {
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
if (!$this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz)) if (!$this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz))
@@ -552,29 +582,34 @@ class Students extends FHCAPI_Controller
$this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester'));
} }
// NOTE(chris): overwrite 'LEFT JOIN' with 'JOIN' $this->prepareQuery($studiensemester_kurzbz, '');
$this->studentlistlib->addJoin("public.tbl_student s", "prestudent_id");
$this->studentlistlib->addSelect("'' AS priorisierung_relativ"); $this->PrestudentModel->addSelect('v.semester');
$this->PrestudentModel->addSelect('v.verband');
$this->PrestudentModel->addSelect('v.gruppe');
$this->PrestudentModel->addSelect("'' AS priorisierung_relativ");
$where = [];
if ($gruppe_kurzbz !== null) { if ($gruppe_kurzbz !== null) {
$this->studentlistlib->addJoin('public.tbl_benutzergruppe g', 'uid', '', 'after_b'); $this->PrestudentModel->addJoin('public.tbl_benutzergruppe g', 'uid');
$this->studentlistlib->addWhere('g.gruppe_kurzbz', $gruppe_kurzbz); $where['g.gruppe_kurzbz'] = $gruppe_kurzbz;
$this->studentlistlib->addWhere('g.studiensemester_kurzbz', $studiensemester_kurzbz); $where['g.studiensemester_kurzbz'] = $studiensemester_kurzbz;
} else { } else {
$this->studentlistlib->addWhere('v.studiengang_kz', $studiengang_kz); $where['v.studiengang_kz'] = $studiengang_kz;
if ($semester !== null) if ($semester !== null)
$this->studentlistlib->addWhere('v.semester', $semester); $where['v.semester'] = $semester;
if ($verband !== null) if ($verband !== null)
$this->studentlistlib->addWhere('v.verband', $verband); $where['v.verband'] = $verband;
if ($gruppe !== null) if ($gruppe !== null)
$this->studentlistlib->addWhere('v.gruppe', $gruppe); $where['v.gruppe'] = $gruppe;
if (!$verband && !$gruppe && $orgform_kurzbz !== null) { if (!$verband && !$gruppe && $orgform_kurzbz !== null) {
$this->studentlistlib->addWhere( $this->PrestudentModel->db->where(
"( "(
SELECT orgform_kurzbz SELECT orgform_kurzbz
FROM public.tbl_prestudentstatus FROM public.tbl_prestudentstatus
@@ -588,10 +623,9 @@ class Students extends FHCAPI_Controller
} }
} }
$this->addFilter($studiensemester_kurzbz); $this->addFilter($studiensemester_kurzbz);
$result = $this->studentlistlib->execute($studiensemester_kurzbz); $result = $this->PrestudentModel->loadWhere($where);
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
@@ -618,8 +652,11 @@ class Students extends FHCAPI_Controller
$this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester'));
} }
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->studentlistlib->addSelect("COALESCE( $this->prepareQuery($studiensemester_kurzbz);
$this->PrestudentModel->addSelect("COALESCE(
v.semester::text, v.semester::text,
CASE CASE
WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent') WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
@@ -627,15 +664,16 @@ class Students extends FHCAPI_Controller
ELSE ''::text ELSE ''::text
END END
) AS semester", false); ) AS semester", false);
$this->studentlistlib->addSelect("COALESCE(v.verband::text, ''::text) AS verband"); $this->PrestudentModel->addSelect("COALESCE(v.verband::text, ''::text)");
$this->studentlistlib->addSelect("COALESCE(v.gruppe::text, ''::text) AS gruppe"); $this->PrestudentModel->addSelect("COALESCE(v.gruppe::text, ''::text)");
$this->studentlistlib->addWhere('tbl_prestudent.prestudent_id', $prestudent_id);
$this->addSelectPrioRel();
$this->addFilter($studiensemester_kurzbz); $this->addFilter($studiensemester_kurzbz);
$result = $this->studentlistlib->execute($studiensemester_kurzbz); $result = $this->PrestudentModel->loadWhere([
'tbl_prestudent.prestudent_id' => $prestudent_id
]);
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
@@ -662,13 +700,23 @@ class Students extends FHCAPI_Controller
$this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester'));
} }
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->prepareQuery($studiensemester_kurzbz);
$this->PrestudentModel->addSelect('v.semester');
$this->PrestudentModel->addSelect('v.verband');
$this->PrestudentModel->addSelect('v.gruppe');
$this->addSelectPrioRel();
$this->studentlistlib->addWhere('s.student_uid', $student_uid);
$this->addFilter($studiensemester_kurzbz); $this->addFilter($studiensemester_kurzbz);
$result = $this->studentlistlib->execute($studiensemester_kurzbz); $result = $this->PrestudentModel->loadWhere([
's.student_uid' => $student_uid
]);
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
@@ -696,13 +744,21 @@ class Students extends FHCAPI_Controller
$this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester'));
} }
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->studentlistlib->addWhere('p.person_id', $person_id); $this->prepareQuery($studiensemester_kurzbz);
$this->PrestudentModel->addSelect('v.semester');
$this->PrestudentModel->addSelect('v.verband');
$this->PrestudentModel->addSelect('v.gruppe');
$this->addSelectPrioRel();
$this->addFilter($studiensemester_kurzbz); $this->addFilter($studiensemester_kurzbz);
$result = $this->studentlistlib->execute($studiensemester_kurzbz); $result = $this->PrestudentModel->loadWhere([
'p.person_id' => $person_id
]);
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
@@ -734,8 +790,29 @@ class Students extends FHCAPI_Controller
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->prepareQuery($studiensemester_kurzbz);
$this->PrestudentModel->addSelect("COALESCE(v.semester::text, CASE WHEN public.get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL) IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent') THEN public.get_absem_prestudent(tbl_prestudent.prestudent_id, NULL)::text ELSE ''::text END) AS semester", false);
$this->PrestudentModel->addSelect('v.verband');
$this->PrestudentModel->addSelect('v.gruppe');
//add status per semester
$this->PrestudentModel->addSelect(
"public.get_rolle_prestudent(public.tbl_prestudent.prestudent_id, "
. $this->PrestudentModel->escape($studiensemester_kurzbz)
. ") AS statusofsemester"
);
$this->addSelectPrioRel();
$this->addFilter($studiensemester_kurzbz);
$prestudent_ids = []; $prestudent_ids = [];
$student_uids = []; $student_uids = [];
$this->addMeta('data', $data);
foreach ($data as $row) { foreach ($data as $row) {
$dataset = json_decode($row->data); $dataset = json_decode($row->data);
if ($row->type == 'prestudent') { if ($row->type == 'prestudent') {
@@ -745,38 +822,197 @@ class Students extends FHCAPI_Controller
} }
} }
$this->studentlistlib->addSelect("COALESCE(
v.semester::text,
CASE
WHEN public.get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL) IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
THEN public.get_absem_prestudent(tbl_prestudent.prestudent_id, NULL)::text
ELSE ''::text
END
) AS semester", false);
if ($prestudent_ids && $student_uids) { if ($prestudent_ids && $student_uids) {
$this->studentlistlib->addWhere('tbl_prestudent.prestudent_id', $prestudent_ids); $this->PrestudentModel->db->where_in('tbl_prestudent.prestudent_id', $prestudent_ids);
$this->studentlistlib->addOrWhere('s.student_uid', $student_uids); $this->PrestudentModel->db->or_where_in('s.student_uid', $student_uids);
} elseif ($prestudent_ids) { } elseif ($prestudent_ids) {
$this->studentlistlib->addWhere('tbl_prestudent.prestudent_id', $prestudent_ids); $this->PrestudentModel->db->where_in('tbl_prestudent.prestudent_id', $prestudent_ids);
} elseif ($student_uids) { } elseif ($student_uids) {
$this->studentlistlib->addWhere('s.student_uid', $student_uids); $this->PrestudentModel->db->where_in('s.student_uid', $student_uids);
} else { } else {
$this->terminateWithSuccess([]); $this->terminateWithSuccess([]);
} }
$result = $this->PrestudentModel->load();
$this->addFilter($studiensemester_kurzbz);
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
$data = $this->getDataOrTerminateWithError($result); $data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data); $this->terminateWithSuccess($data);
} }
/**
* @param string|null $studiensemester_kurzbz
* @param string $type
*
* @return void
*/
protected function prepareQuery($studiensemester_kurzbz, $type = 'LEFT')
{
$stdsemEsc = $studiensemester_kurzbz ? $this->PrestudentModel->escape($studiensemester_kurzbz) : 'NULL';
$this->load->config('stv');
if(defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED)
{
$tags = $this->config->item('stv_prestudent_tags');
$whereTags = '';
if (is_array($tags) && !isEmptyArray($tags)) {
$tags = array_keys($tags);
foreach ($tags as $key => $tag) {
$tags[$key] = $this->db->escape($tag);
}
$whereTags = " AND nt.typ_kurzbz IN (" . implode(",", $tags) . ")";
}
$subQueryTag = "
(
SELECT
tag.prestudent_id,
COALESCE(json_agg(tag ORDER BY tag.done), '[]'::json) AS tags
FROM (
SELECT DISTINCT ON (n.notiz_id)
n.notiz_id AS id,
nt.typ_kurzbz,
array_to_json(nt.bezeichnung_mehrsprachig)->>0 AS beschreibung,
n.text AS notiz,
nt.style,
n.erledigt AS done,
nz.prestudent_id
FROM public.tbl_notizzuordnung AS nz
JOIN public.tbl_notiz AS n ON nz.notiz_id = n.notiz_id
JOIN public.tbl_notiz_typ AS nt ON n.typ = nt.typ_kurzbz "
. $whereTags .
"
) AS tag
GROUP BY tag.prestudent_id
) AS tag_data_agg
";
}
$this->PrestudentModel->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT');
$this->PrestudentModel->addJoin('public.tbl_person p', 'person_id');
$this->PrestudentModel->addJoin('public.tbl_student s', 'prestudent_id', $type);
$this->PrestudentModel->addJoin('public.tbl_prestudentstatus pls', '
pls.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL)
AND pls.prestudent_id=tbl_prestudent.prestudent_id
AND pls.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, NULL)
AND pls.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, NULL)', 'LEFT');
$this->PrestudentModel->addJoin('lehre.tbl_studienplan sp', 'studienplan_id', 'LEFT');
$this->PrestudentModel->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid', 'LEFT');
$this->PrestudentModel->addJoin(
'public.tbl_studentlehrverband v',
'v.student_uid=s.student_uid AND v.studiensemester_kurzbz' . ($studiensemester_kurzbz ? '=' . $stdsemEsc : ' IS NULL'),
$type
);
$this->PrestudentModel->addJoin('public.tbl_prestudentstatus ps', '
ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')
AND ps.prestudent_id=tbl_prestudent.prestudent_id
AND ps.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')
AND ps.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')', 'LEFT');
if(defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED)
{
$this->PrestudentModel->addJoin($subQueryTag, 'tag_data_agg.prestudent_id = tbl_prestudent.prestudent_id', 'LEFT');
}
$this->PrestudentModel->addSelect("b.uid");
if(defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED)
{
$this->PrestudentModel->addSelect('tag_data_agg.tags');
}
$this->PrestudentModel->addSelect('titelpre');
$this->PrestudentModel->addSelect('nachname');
$this->PrestudentModel->addSelect('vorname');
$this->PrestudentModel->addSelect('wahlname');
$this->PrestudentModel->addSelect('vornamen');
$this->PrestudentModel->addSelect('titelpost');
$this->PrestudentModel->addSelect('ersatzkennzeichen');
$this->PrestudentModel->addSelect('gebdatum');
$this->PrestudentModel->addSelect('geschlecht');
$this->PrestudentModel->addSelect('foto');
$this->PrestudentModel->addSelect('foto_sperre');
// semester
// verband
// gruppe
//add status per semester
$this->PrestudentModel->addSelect(
"public.get_rolle_prestudent(public.tbl_prestudent.prestudent_id, "
. $this->PrestudentModel->escape($studiensemester_kurzbz)
. ") AS statusofsemester"
);
$this->PrestudentModel->addSelect('UPPER(stg.typ || stg.kurzbz) AS studiengang');
$this->PrestudentModel->addSelect('tbl_prestudent.studiengang_kz');
$this->PrestudentModel->addSelect('stg.bezeichnung AS stg_bezeichnung');
$this->PrestudentModel->addSelect("s.matrikelnr");
$this->PrestudentModel->addSelect('p.person_id');
$this->PrestudentModel->addSelect('pls.status_kurzbz AS status');
$this->PrestudentModel->addSelect('pls.datum AS status_datum');
$this->PrestudentModel->addSelect('pls.bestaetigtam AS status_bestaetigung');
$this->PrestudentModel->addSelect(
"(SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung LIMIT 1) AS mail_privat",
false
);
$this->PrestudentModel->addSelect("
CASE WHEN b.uid IS NOT NULL AND b.uid<>''
THEN CONCAT(b.uid, '@', " . $this->PrestudentModel->escape(DOMAIN) . ")
ELSE '' END AS mail_intern", false);
$this->PrestudentModel->addSelect('p.anmerkung AS anmerkungen');
$this->PrestudentModel->addSelect('tbl_prestudent.anmerkung');
$this->PrestudentModel->addSelect('pls.orgform_kurzbz');
$this->PrestudentModel->addSelect('aufmerksamdurch_kurzbz');
$this->PrestudentModel->addSelect(
"(SELECT rt_gesamtpunkte AS punkte FROM public.tbl_prestudent WHERE prestudent_id=ps.prestudent_id) AS punkte",
false
);
$this->PrestudentModel->addSelect('tbl_prestudent.aufnahmegruppe_kurzbz');
$this->PrestudentModel->addSelect('tbl_prestudent.dual');
$this->PrestudentModel->addSelect('p.matr_nr');
$this->PrestudentModel->addSelect('sp.bezeichnung AS studienplan_bezeichnung');
$this->PrestudentModel->addSelect('tbl_prestudent.prestudent_id');
// priorisierung_relativ
$this->PrestudentModel->addSelect('mentor');
$this->PrestudentModel->addSelect('b.aktiv AS bnaktiv');
$this->PrestudentModel->addSelect('unruly');
$this->PrestudentModel->db->where_in('tbl_prestudent.studiengang_kz', $this->allowedStgs);
$this->PrestudentModel->addOrder('nachname');
$this->PrestudentModel->addOrder('vorname');
}
/**
* @return void
*/
protected function addSelectPrioRel()
{
$this->PrestudentModel->addSelect("(
SELECT count(*)
FROM (
SELECT *, public.get_rolle_prestudent(pss.prestudent_id, NULL) AS laststatus
FROM public.tbl_prestudent pss
JOIN public.tbl_prestudentstatus USING (prestudent_id)
WHERE person_id = p.person_id
AND studiensemester_kurzbz = (
SELECT studiensemester_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id = tbl_prestudent.prestudent_id
AND status_kurzbz = 'Interessent'
LIMIT 1
)
AND status_kurzbz = 'Interessent'
) prest
WHERE laststatus NOT IN ('Abbrecher', 'Abgewiesener', 'Absolvent')
AND priorisierung <= tbl_prestudent.priorisierung
) || ' (' || COALESCE(tbl_prestudent.priorisierung::text, ' '::text) || ')' AS priorisierung_relativ", false);
}
/** /**
* Adds additional filters to the query * Adds additional filters to the query
* *
@@ -358,7 +358,6 @@ class AbgabetoolJob extends JOB_Controller
foreach($assistenzMap as $assistenz_person_id => $tupelArr) { foreach($assistenzMap as $assistenz_person_id => $tupelArr) {
$abgabenString = '<div style="font-family: Arial, sans-serif; color: #333;">'; $abgabenString = '<div style="font-family: Arial, sans-serif; color: #333;">';
$hasContent = false;
foreach($tupelArr as $tupel) { foreach($tupelArr as $tupel) {
$projektarbeit_id = $tupel[0]; $projektarbeit_id = $tupel[0];
@@ -378,7 +377,6 @@ class AbgabetoolJob extends JOB_Controller
if(count($relevantAbgaben) == 0) { if(count($relevantAbgaben) == 0) {
continue; continue;
} }
$hasContent = true;
// Format the Student Name // Format the Student Name
$s = $relevantAbgaben[0]; $s = $relevantAbgaben[0];
@@ -450,11 +448,6 @@ class AbgabetoolJob extends JOB_Controller
$abgabenString .= '</div>'; $abgabenString .= '</div>';
// skip send entirely
if (!$hasContent) {
continue;
}
// done with building the change list, now send it // done with building the change list, now send it
$assistenzRow = $tupelArr[0][1]; $assistenzRow = $tupelArr[0][1];
$anrede = $assistenzRow->anrede; $anrede = $assistenzRow->anrede;
+16 -61
View File
@@ -40,13 +40,6 @@ class AntragJob extends JOB_Controller
*/ */
public function sendStglSammelmail() public function sendStglSammelmail()
{ {
if ($this->config->item('abmeldung_enabled') !== true &&
$this->config->item('abmeldung_stg_enabled') !== true &&
$this->config->item('unterbrechung_enabled') !== true &&
$this->config->item('wiederholung_enabled') !== true)
return $this->logError('Konnte Job nicht starten: Keine der Configs "abmeldung_stg_enabled", "abmeldung_enabled", "unterbrechung_enabled", "wiederholung_enabled" auf true gesetzt');
$this->load->model('person/Person_model', 'PersonModel'); $this->load->model('person/Person_model', 'PersonModel');
$this->logInfo('Start Job sendStglSammelmail'); $this->logInfo('Start Job sendStglSammelmail');
@@ -54,38 +47,25 @@ class AntragJob extends JOB_Controller
$this->load->model('organisation/Studiengang_model', 'StudiengangModel'); $this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->StudierendenantragModel->addJoin('public.tbl_prestudent', 'prestudent_id'); $this->StudierendenantragModel->addJoin('public.tbl_prestudent', 'prestudent_id');
$this->db->group_start();
$this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG);
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
$this->db->group_end();
if ($this->config->item('abmeldung_enabled') === true) $this->db->or_group_start();
{ $this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL);
$this->db->group_start(); $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
$this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG); $this->db->group_end();
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
$this->db->group_end();
}
if ($this->config->item('abmeldung_stg_enabled') === true) $this->db->or_group_start();
{ $this->db->where('typ', Studierendenantrag_model::TYP_UNTERBRECHUNG);
$this->db->or_group_start(); $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
$this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL); $this->db->group_end();
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
$this->db->group_end();
}
if ($this->config->item('unterbrechung_enabled') === true) $this->db->or_group_start();
{ $this->db->where('typ', Studierendenantrag_model::TYP_WIEDERHOLUNG);
$this->db->or_group_start(); $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_LVSASSIGNED);
$this->db->where('typ', Studierendenantrag_model::TYP_UNTERBRECHUNG); $this->db->group_end();
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
$this->db->group_end();
}
if ($this->config->item('wiederholung_enabled') === true)
{
$this->db->or_group_start();
$this->db->where('typ', Studierendenantrag_model::TYP_WIEDERHOLUNG);
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_LVSASSIGNED);
$this->db->group_end();
}
$result = $this->StudierendenantragModel->load(); $result = $this->StudierendenantragModel->load();
if(isError($result)) if(isError($result))
@@ -226,10 +206,6 @@ class AntragJob extends JOB_Controller
public function sendReminderWiedereinstieg() public function sendReminderWiedereinstieg()
{ {
$now = new DateTime(); $now = new DateTime();
if ($this->config->item('unterbrechung_enabled') !== true)
return $this->logError('Konnte Job nicht starten: Config "unterbrechung_enabled" nicht auf true gesetzt');
$modifier = $this->config->item('unterbrechung_job_remind_wiedereinstieg_date_modifier'); $modifier = $this->config->item('unterbrechung_job_remind_wiedereinstieg_date_modifier');
if (!$modifier) if (!$modifier)
@@ -387,13 +363,6 @@ class AntragJob extends JOB_Controller
{ {
$this->logInfo('Start Job handleWiederholerDeadline'); $this->logInfo('Start Job handleWiederholerDeadline');
if ($this->config->item('wiederholung_enabled') !== true)
{
$this->logError('Config "wiederholung_enabled" nicht auf true gesetzt');
$this->logInfo('Ende Job handleWiederholerDeadline');
return;
}
$this->load->library('PrestudentLib'); $this->load->library('PrestudentLib');
$insertvon = $this->config->item('antrag_job_systemuser'); $insertvon = $this->config->item('antrag_job_systemuser');
@@ -512,13 +481,6 @@ class AntragJob extends JOB_Controller
{ {
$this->logInfo('Start Job handleAbmeldungenStglDeadline'); $this->logInfo('Start Job handleAbmeldungenStglDeadline');
if ($this->config->item('abmeldung_stg_enabled') !== true)
{
$this->logError('Config "abmeldung_stg_enabled" nicht auf true gesetzt');
$this->logInfo('Ende Job handleAbmeldungenStglDeadline');
return;
}
$insertvon = $this->config->item('antrag_job_systemuser'); $insertvon = $this->config->item('antrag_job_systemuser');
if (!$insertvon) { if (!$insertvon) {
$this->logError('Config "antrag_job_systemuser" nicht gesetzt'); $this->logError('Config "antrag_job_systemuser" nicht gesetzt');
@@ -652,13 +614,6 @@ class AntragJob extends JOB_Controller
{ {
$this->logInfo('Start Job sendAufforderungWiederholer'); $this->logInfo('Start Job sendAufforderungWiederholer');
if ($this->config->item('wiederholung_enabled') !== true)
{
$this->logError('Config "wiederholung_enabled" nicht auf true gesetzt');
$this->logInfo('Ende Job sendAufforderungWiederholer');
return;
}
$modifier_request_1 = $this->config->item('wiederholung_job_request_1_date_modifier'); $modifier_request_1 = $this->config->item('wiederholung_job_request_1_date_modifier');
$modifier_request_2 = $this->config->item('wiederholung_job_request_2_date_modifier'); $modifier_request_2 = $this->config->item('wiederholung_job_request_2_date_modifier');
$modifier_deadline = $this->config->item('wiederholung_job_deadline_date_modifier'); $modifier_deadline = $this->config->item('wiederholung_job_deadline_date_modifier');
@@ -803,7 +803,7 @@ class ReihungstestJob extends JOB_Controller
{ {
if (!isset($studiensemester) || isEmptyString($studiensemester)) if (!isset($studiensemester) || isEmptyString($studiensemester))
{ {
$this->logError("Studiensemster not passed as parameter"); $this->logError("Studiensemester not passed as parameter");
return; return;
} }
@@ -28,9 +28,7 @@ class Studierendenantrag extends FHC_Controller
'studierendenantrag' 'studierendenantrag'
]); ]);
$this->load->config('studierendenantrag'); if (strtolower($this->router->method) === 'leitung')
if (strtolower($this->router->method) === 'leitung')
$this->_isAllowed([ $this->_isAllowed([
'leitung' => ['student/studierendenantrag:r', 'student/antragfreigabe:r'] 'leitung' => ['student/studierendenantrag:r', 'student/antragfreigabe:r']
]); ]);
@@ -57,26 +55,17 @@ class Studierendenantrag extends FHC_Controller
'bezeichnungOrgform' => $antrag->orgform 'bezeichnungOrgform' => $antrag->orgform
); );
if ($this->config->item('wiederholung_enabled') === true) $result = $this->antraglib->getPrestudentWiederholungsBerechtigt($antrag->prestudent_id);
{ if (getData($result) == 1)
$result = $this->antraglib->getPrestudentWiederholungsBerechtigt($antrag->prestudent_id); $prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Wiederholung';
if (getData($result) == 1)
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Wiederholung';
}
if ($this->config->item('unterbrechung_enabled') === true) $result = $this->antraglib->getPrestudentUnterbrechungsBerechtigt($antrag->prestudent_id);
{ if (getData($result) == 1)
$result = $this->antraglib->getPrestudentUnterbrechungsBerechtigt($antrag->prestudent_id); $prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Unterbrechung';
if (getData($result) == 1)
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Unterbrechung';
}
if ($this->config->item('abmeldung_enabled') === true) $result = $this->antraglib->getPrestudentAbmeldeBerechtigt($antrag->prestudent_id);
{ if (getData($result) == 1)
$result = $this->antraglib->getPrestudentAbmeldeBerechtigt($antrag->prestudent_id); $prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Abmeldung';
if (getData($result) == 1)
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Abmeldung';
}
} }
if ($antrag->studierendenantrag_id == null) if ($antrag->studierendenantrag_id == null)
continue; continue;
@@ -99,59 +88,45 @@ class Studierendenantrag extends FHC_Controller
$this->load->view('lehre/Antrag/Leitung/List', [ $this->load->view('lehre/Antrag/Leitung/List', [
'stgA' => $stgA, 'stgA' => $stgA,
'stgL' => $stgL, 'stgL' => $stgL
'abmeldung_enabled' => $this->config->item('abmeldung_stg_enabled')
]); ]);
} }
public function abmeldung($prestudent_id, $studierendenantrag_id = null) public function abmeldung($prestudent_id, $studierendenantrag_id = null)
{ {
if ($this->config->item('abmeldung_enabled') === true) $this->load->view('lehre/Antrag/Create', [
{ 'prestudent_id' => $prestudent_id,
$this->load->view('lehre/Antrag/Create', [ 'studierendenantrag_id' => $studierendenantrag_id,
'prestudent_id' => $prestudent_id, 'antrag_type' => 'Abmeldung'
'studierendenantrag_id' => $studierendenantrag_id, ]);
'antrag_type' => 'Abmeldung'
]);
}
} }
public function abmeldungstgl($prestudent_id, $studierendenantrag_id = null) public function abmeldungstgl($prestudent_id, $studierendenantrag_id = null)
{ {
if ($this->config->item('abmeldung_stg_enabled') === true) $this->load->view('lehre/Antrag/Create', [
{ 'prestudent_id' => $prestudent_id,
$this->load->view('lehre/Antrag/Create', [ 'studierendenantrag_id' => $studierendenantrag_id,
'prestudent_id' => $prestudent_id, 'antrag_type' => 'AbmeldungStgl'
'studierendenantrag_id' => $studierendenantrag_id, ]);
'antrag_type' => 'AbmeldungStgl'
]);
}
} }
public function unterbrechung($prestudent_id, $studierendenantrag_id = null) public function unterbrechung($prestudent_id, $studierendenantrag_id = null)
{ {
if ($this->config->item('unterbrechung_enabled') === true) $this->load->view('lehre/Antrag/Create', [
{ 'prestudent_id' => $prestudent_id,
$this->load->view('lehre/Antrag/Create', [ 'studierendenantrag_id' => $studierendenantrag_id,
'prestudent_id' => $prestudent_id, 'antrag_type' => 'Unterbrechung'
'studierendenantrag_id' => $studierendenantrag_id, ]);
'antrag_type' => 'Unterbrechung'
]);
}
} }
public function wiederholung($prestudent_id, $studierendenantrag_id = null) public function wiederholung($prestudent_id, $studierendenantrag_id = null)
{ {
if ($this->config->item('wiederholung_enabled') === true) $this->load->view('lehre/Antrag/Create', [
{ 'prestudent_id' => $prestudent_id,
$this->load->view('lehre/Antrag/Create', [ 'studierendenantrag_id' => $studierendenantrag_id,
'prestudent_id' => $prestudent_id, 'antrag_type' => 'Wiederholung'
'studierendenantrag_id' => $studierendenantrag_id, ]);
'antrag_type' => 'Wiederholung'
]);
}
} }
/** /**
+1 -2
View File
@@ -1657,7 +1657,7 @@ class AntragLib
$result = $this->_ci->StudierendenantragModel->loadWithStatusWhere($where); $result = $this->_ci->StudierendenantragModel->loadWithStatusWhere($where);
if (isError($result)) if (isError($result))
return $result; return $result;
if (!hasData($result)) if (!hasData($result))
return error($this->_ci->p->t('studierendenantrag', "error_no_antrag_found", ['id' => $studierendenantrag_id])); return error($this->_ci->p->t('studierendenantrag', "error_no_antrag_found", ['id' => $studierendenantrag_id]));
@@ -1709,7 +1709,6 @@ class AntragLib
$result->statustyp = $antrag->statustyp; $result->statustyp = $antrag->statustyp;
$result->status_insertvon = $antrag->status_insertvon; $result->status_insertvon = $antrag->status_insertvon;
$result->grund = $antrag->grund; $result->grund = $antrag->grund;
$result->status_grund = $antrag->status_grund;
$result->studierendenantrag_id = $antrag->studierendenantrag_id; $result->studierendenantrag_id = $antrag->studierendenantrag_id;
$result->typ = $antrag->typ; $result->typ = $antrag->typ;
$result->datum = $antrag->datum; $result->datum = $antrag->datum;
-53
View File
@@ -263,59 +263,6 @@ class ProfilLib{
$element->mailto = "mailto:" . $element->gruppe_kurzbz . "@" . DOMAIN; $element->mailto = "mailto:" . $element->gruppe_kurzbz . "@" . DOMAIN;
return $element; return $element;
}, $mailverteiler_res); }, $mailverteiler_res);
$this->ci->load->model("crm/Student_model", "StudentModel");
$this->ci->StudentModel->addJoin("tbl_benutzer", "tbl_benutzer.uid = tbl_student.student_uid");
$this->ci->StudentModel->addJoin("tbl_person", "tbl_benutzer.person_id = tbl_person.person_id");
$this->ci->StudentModel->addJoin("tbl_studiengang", "tbl_student.studiengang_kz = tbl_studiengang.studiengang_kz");
$this->ci->StudentModel->addSelect("matr_nr, semester, verband, gruppe, kurzbzlang");
$studentResult = $this->ci->StudentModel->loadWhere(["student_uid" => $uid]);
if (isError($studentResult)) {
return error(getData($studentResult));
}
$studentResultData = getData($studentResult);
$studentData = null;
if (is_array($studentResultData) && count($studentResultData)) {
$studentData = $studentResultData[0];
}
if ($studentData && $studentData->matr_nr) {
$this->ci->load->library("phrasesLib", ["profil"], "phrases");
$standardCourseVerteiler = trim($studentData->kurzbzlang) . "_STD";
$mailverteiler_res[] = [
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $standardCourseVerteiler,
"gruppe_kurzbz" => $standardCourseVerteiler,
"mailto" => "mailto:" . strtolower($standardCourseVerteiler) . "@" . DOMAIN,
];
$semesterVerteiler = trim($studentData->kurzbzlang) . trim($studentData->semester);
$mailverteiler_res[] = [
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $semesterVerteiler,
"gruppe_kurzbz" => $semesterVerteiler,
"mailto" => "mailto:" . strtolower($semesterVerteiler) . "@" . DOMAIN,
];
if ($studentData->verband && strlen(trim($studentData->verband))) {
$verbandVerteiler = $semesterVerteiler . trim($studentData->verband);
$mailverteiler_res[] = [
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $verbandVerteiler,
"gruppe_kurzbz" => $verbandVerteiler,
"mailto" => "mailto:" . strtolower($verbandVerteiler) . "@" . DOMAIN,
];
if ($studentData->gruppe && strlen(trim($studentData->gruppe))) {
$gruppeVerteiler = $verbandVerteiler . trim($studentData->gruppe);
$mailverteiler_res[] = [
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $gruppeVerteiler,
"gruppe_kurzbz" => $gruppeVerteiler,
"mailto" => "mailto:" . strtolower($gruppeVerteiler) . "@" . DOMAIN,
];
}
}
}
return $mailverteiler_res; return $mailverteiler_res;
} }
+7 -31
View File
@@ -40,16 +40,13 @@ class StundenplanLib
* @return stdClass * @return stdClass
* @access public * @access public
*/ */
public function getEventsUser($start, $end, $uid = null) public function getEventsUser($start, $end)
{ {
$this->_ci =& get_instance(); $this->_ci =& get_instance();
$this->_ci->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel'); $this->_ci->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
if (!$uid) { $uid = getAuthUID();
$uid = getAuthUID();
}
if (is_null($uid)) if (is_null($uid))
return error("No UID"); return error("No UID");
@@ -220,7 +217,7 @@ class StundenplanLib
* @param string $ort_kurzbz * @param string $ort_kurzbz
* @return stdClass * @return stdClass
*/ */
public function getReservierungen($start_date, $end_date, $ort_kurzbz = '', $uid = null) public function getReservierungen($start_date, $end_date, $ort_kurzbz = '')
{ {
$this->_ci =& get_instance(); $this->_ci =& get_instance();
@@ -231,14 +228,14 @@ class StundenplanLib
$this->_ci->load->model('ressource/Reservierung_model', 'ReservierungModel'); $this->_ci->load->model('ressource/Reservierung_model', 'ReservierungModel');
$this->_ci->load->model('ressource/Stundenplan_model', 'StundenplanModel'); $this->_ci->load->model('ressource/Stundenplan_model', 'StundenplanModel');
$is_mitarbeiter = getData($this->_ci->MitarbeiterModel->isMitarbeiter($uid ?? getAuthUID())); $is_mitarbeiter = getData($this->_ci->MitarbeiterModel->isMitarbeiter(getAuthUID()));
if ($is_mitarbeiter && empty($ort_kurzbz)) { if ($is_mitarbeiter && empty($ort_kurzbz)) {
// request for personal lvplan show only reservations of logged in user // request for personal lvplan show only reservations of logged in user
$reservierungen = $this->_ci->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date, $uid); $reservierungen = $this->_ci->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date);
} else { } else {
// querying the reservierungen // querying the reservierungen
$reservierungen = $this->_ci->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz, $uid); $reservierungen = $this->_ci->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz);
} }
if (isError($reservierungen)) if (isError($reservierungen))
@@ -360,10 +357,7 @@ class StundenplanLib
if (isError($ort_content_object)) { if (isError($ort_content_object)) {
return error(getData($ort_content_object)); return error(getData($ort_content_object));
} }
$ort_content_object_data = getData($ort_content_object); $ort_content_object = getData($ort_content_object)[0];
$ort_content_object = (is_array($ort_content_object_data) && count($ort_content_object_data) > 0)
? $ort_content_object_data[0]
: null;
if($ort_content_object) { if($ort_content_object) {
$item->ort_content_id = $ort_content_object->content_id; $item->ort_content_id = $ort_content_object->content_id;
} }
@@ -451,24 +445,6 @@ class StundenplanLib
return success($ferienEventsFlattened); return success($ferienEventsFlattened);
} }
public function getEventsStgOrg( $start, $end, $stg_kz, $sem, $verband, $gruppe)
{
$this->_ci =& get_instance();
$this->_ci->load->model('ressource/Stundenplan_model', 'StundenplanModel');
$stundenplan_data = $this->_ci->StundenplanModel->getStundenplanStudiengang($start, $end, $stg_kz, $sem, $verband, $gruppe);
if (isError($stundenplan_data))
return $stundenplan_data;
$stundenplan_data = getData($stundenplan_data) ?? [];
$function_error = $this->expandObjectInformation($stundenplan_data);
if ($function_error)
return $function_error;
return success($stundenplan_data);
}
// start of the private functions ######################################################################################################## // start of the private functions ########################################################################################################
// function used to sort an array of studiensemester strings // function used to sort an array of studiensemester strings
@@ -37,9 +37,7 @@ class DashboardLib
public function getDashboardByKurzbz($dashboard_kurzbz) public function getDashboardByKurzbz($dashboard_kurzbz)
{ {
$result = $this->_ci->DashboardModel->loadWhere([ $result = $this->_ci->DashboardModel->getDashboardByKurzbz($dashboard_kurzbz);
'dashboard_kurzbz' => $dashboard_kurzbz
]);
if (hasData($result)) if (hasData($result))
{ {
@@ -49,21 +47,17 @@ class DashboardLib
return null; return null;
} }
public function getMergedUserConfig($dashboard_id, $uid) public function getMergedConfig($dashboard_id, $uid)
{ {
$defaultconfig = $this->getUserBaseConfig($dashboard_id); $defaultconfig = $this->getDefaultConfig($dashboard_id);
$userconfig = $this->getUserOverrideConfig($dashboard_id, $uid); $userconfig = $this->getUserConfig($dashboard_id, $uid);
$sourceconfig = array_map(function ($value) { $mergedconfig = array_replace_recursive($defaultconfig, $userconfig);
return ['source' => $value['source']];
}, $defaultconfig);
$mergedconfig = array_replace_recursive($defaultconfig, $userconfig, $sourceconfig);
return $mergedconfig; return $mergedconfig;
} }
protected function getUserBaseConfig($dashboard_id) public function getDefaultConfig($dashboard_id)
{ {
$funktion_kurzbzs = []; $funktion_kurzbzs = [];
$rights = $this->_ci->permissionlib->getAccessRights(); $rights = $this->_ci->permissionlib->getAccessRights();
@@ -93,11 +87,7 @@ class DashboardLib
$preset = json_decode($presetobj->preset, true); $preset = json_decode($presetobj->preset, true);
if (null !== $preset) if (null !== $preset)
{ {
$preset = array_map(function ($value) use ($presetobj) { $defaultconfig = array_replace_recursive($defaultconfig, $preset);
$value['source'] = $presetobj->funktion_kurzbz ?: self::SECTION_IF_FUNKTION_KURZBZ_IS_NULL;
return $value;
}, $preset);
$defaultconfig = array_merge_recursive($defaultconfig, $preset);
} }
} }
} }
@@ -105,7 +95,7 @@ class DashboardLib
return $defaultconfig; return $defaultconfig;
} }
protected function getUserOverrideConfig($dashboard_id, $uid) public function getUserConfig($dashboard_id, $uid)
{ {
$res_userconfig = $this->_ci->DashboardOverrideModel->getOverride($dashboard_id, $uid); $res_userconfig = $this->_ci->DashboardOverrideModel->getOverride($dashboard_id, $uid);
@@ -134,7 +124,7 @@ class DashboardLib
$emptyoverride = new stdClass(); $emptyoverride = new stdClass();
$emptyoverride->dashboard_id = $dashboard->dashboard_id; $emptyoverride->dashboard_id = $dashboard->dashboard_id;
$emptyoverride->uid = $uid; $emptyoverride->uid = $uid;
$emptyoverride->override = '[]'; $emptyoverride->override = '{"' . self::USEROVERRIDE_SECTION . '": {"widgets":{}}, "custom": { "widgets" : {}}}';
return $emptyoverride; return $emptyoverride;
} }
@@ -153,7 +143,8 @@ class DashboardLib
$emptypreset = new stdClass(); $emptypreset = new stdClass();
$emptypreset->dashboard_id = $dashboard->dashboard_id; $emptypreset->dashboard_id = $dashboard->dashboard_id;
$emptypreset->funktion_kurzbz = $funktion_kurzbz; $emptypreset->funktion_kurzbz = $funktion_kurzbz;
$emptypreset->preset = '[]'; $section = ($funktion_kurzbz !== null) ? $funktion_kurzbz : self::SECTION_IF_FUNKTION_KURZBZ_IS_NULL;
$emptypreset->preset = '{"' . $section . '": { "widgets" : {}},"custom": { "widgets" : {}}}';
return $emptypreset; return $emptypreset;
} }
@@ -218,4 +209,44 @@ class DashboardLib
return $result; return $result;
} }
public function addWidgetsToWidgets(&$widgets, $dashboard_kurzbz, $section, $addwigets)
{
foreach ($addwigets as $widget)
{
if(!isset($widget['widgetid']))
{
$widget['widgetid'] = $this->generateWidgetId($dashboard_kurzbz);
}
$this->addWidgetToWidgets($widgets, $section, $widget, $widget['widgetid']);
}
}
public function addWidgetToWidgets(&$widgets, $section, $widget, $widgetid)
{
$section = ($section !== null) ? $section : self::SECTION_IF_FUNKTION_KURZBZ_IS_NULL;
if (!isset($widgets[$section]) || !isset($widgets[$section]["widgets"]) || !is_array($widgets[$section]))
{
$widgets[$section] = array();
$widgets[$section]["widgets"] = array();
}
$widgets[$section]["widgets"][$widgetid] = $widget;
}
public function removeWidgetFromWidgets(&$widgets, $section, $widgetid)
{
$section = ($section !== null) ? $section : self::SECTION_IF_FUNKTION_KURZBZ_IS_NULL;
if (isset($widgets[$section]) && isset($widgets[$section]["widgets"][$widgetid]))
{
unset($widgets[$section]["widgets"][$widgetid]);
if(empty($widgets[$section]["widgets"]) && $section !== self::USEROVERRIDE_SECTION) {
unset($widgets[$section]);
}
return true;
}
else {
return false;
}
}
} }
@@ -1,363 +0,0 @@
<?php
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* This generates a list of students and or prestudents used for Studierendenverwaltung
*/
class StudentListLib
{
private $_ci; // Code igniter instance
private $_allowedStgs = [];
private $_selects = [];
private $_joins = [];
/**
* Gets the CI instance, loads model and prepares default values
*
* @param array $params
*
* @return void
*/
public function __construct($params = null)
{
$this->_ci =& get_instance(); // get code igniter instance
$this->_ci->load->model('crm/Prestudent_model', 'PrestudentModel');
if (isset($params['allowedStgs']))
$this->_allowedStgs = $params['allowedStgs'];
// Add default SELECTs
$this->addSelect("b.uid");
if (defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED)
$this->addSelect('tag_data_agg.tags');
$this->addSelect('titelpre');
$this->addSelect('nachname');
$this->addSelect('vorname');
$this->addSelect('wahlname');
$this->addSelect('vornamen');
$this->addSelect('titelpost');
$this->addSelect('ersatzkennzeichen');
$this->addSelect('gebdatum');
$this->addSelect('geschlecht');
$this->addSelect('foto');
$this->addSelect('foto_sperre');
$this->addSelect('v.semester');
$this->addSelect('v.verband');
$this->addSelect('v.gruppe');
$this->addSelect("statusofsemester"); // Will be replaced later
$this->addSelect('UPPER(stg.typ || stg.kurzbz) AS studiengang');
$this->addSelect('tbl_prestudent.studiengang_kz');
$this->addSelect('stg.bezeichnung AS stg_bezeichnung');
$this->addSelect("s.matrikelnr");
$this->addSelect('p.person_id');
$this->addSelect('pls.status_kurzbz AS status');
$this->addSelect('pls.datum AS status_datum');
$this->addSelect('pls.bestaetigtam AS status_bestaetigung');
$this->addSelect(
"(SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung LIMIT 1) AS mail_privat",
false
);
$this->addSelect("
CASE WHEN b.uid IS NOT NULL AND b.uid<>''
THEN CONCAT(b.uid, '@', " . $this->_ci->PrestudentModel->escape(DOMAIN) . ")
ELSE '' END AS mail_intern", false);
$this->addSelect('p.anmerkung AS anmerkungen');
$this->addSelect('tbl_prestudent.anmerkung');
$this->addSelect('pls.orgform_kurzbz');
$this->addSelect('aufmerksamdurch_kurzbz');
$this->addSelect(
"(SELECT rt_gesamtpunkte AS punkte FROM public.tbl_prestudent WHERE prestudent_id=ps.prestudent_id) AS punkte",
false
);
$this->addSelect('tbl_prestudent.aufnahmegruppe_kurzbz');
$this->addSelect('tbl_prestudent.dual');
$this->addSelect('p.matr_nr');
$this->addSelect('sp.bezeichnung AS studienplan_bezeichnung');
$this->addSelect('tbl_prestudent.prestudent_id');
$this->addSelect("(
SELECT count(*)
FROM (
SELECT *, public.get_rolle_prestudent(pss.prestudent_id, NULL) AS laststatus
FROM public.tbl_prestudent pss
JOIN public.tbl_prestudentstatus USING (prestudent_id)
WHERE person_id = p.person_id
AND studiensemester_kurzbz = (
SELECT studiensemester_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id = tbl_prestudent.prestudent_id
AND status_kurzbz = 'Interessent'
LIMIT 1
)
AND status_kurzbz = 'Interessent'
) prest
WHERE laststatus NOT IN ('Abbrecher', 'Abgewiesener', 'Absolvent')
AND priorisierung <= tbl_prestudent.priorisierung
) || ' (' || COALESCE(tbl_prestudent.priorisierung::text, ' '::text) || ')' AS priorisierung_relativ", false); // TODO(chris): overwrite in fetchStudents
$this->addSelect('mentor');
$this->addSelect('b.aktiv AS bnaktiv');
$this->addSelect('unruly');
// Add default JOINs
$this->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT');
$this->addJoin('public.tbl_person p', 'person_id');
$this->addJoin('public.tbl_student s', 'prestudent_id', 'LEFT'); // TODO(chris): overwrite in fetchStudents
$this->addJoin('public.tbl_prestudentstatus pls', '
pls.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL)
AND pls.prestudent_id=tbl_prestudent.prestudent_id
AND pls.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, NULL)
AND pls.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, NULL)', 'LEFT');
$this->addJoin('lehre.tbl_studienplan sp', 'studienplan_id', 'LEFT');
$this->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid', 'LEFT');
$this->addJoin("v", "", ""); // Will be replaced later
$this->addJoin("ps", "", ""); // Will be replaced later
if (defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED) {
$this->_ci->load->config('stv');
$tags = $this->_ci->config->item('stv_prestudent_tags');
$whereTags = '';
if (is_array($tags) && !isEmptyArray($tags)) {
$tags = array_keys($tags);
foreach ($tags as $key => $tag) {
$tags[$key] = $this->_ci->PrestudentModel->escape($tag);
}
$whereTags = " AND nt.typ_kurzbz IN (" . implode(",", $tags) . ")";
}
$subQueryTag = "(
SELECT
tag.prestudent_id,
COALESCE(json_agg(tag ORDER BY tag.done), '[]'::json) AS tags
FROM (
SELECT DISTINCT ON (n.notiz_id)
n.notiz_id AS id,
nt.typ_kurzbz,
array_to_json(nt.bezeichnung_mehrsprachig)->>0 AS beschreibung,
n.text AS notiz,
nt.style,
n.erledigt AS done,
nz.prestudent_id
FROM public.tbl_notizzuordnung AS nz
JOIN public.tbl_notiz AS n ON nz.notiz_id = n.notiz_id
JOIN public.tbl_notiz_typ AS nt ON n.typ = nt.typ_kurzbz " . $whereTags . "
) AS tag
GROUP BY tag.prestudent_id
) AS tag_data_agg";
$this->addJoin($subQueryTag, 'tag_data_agg.prestudent_id = tbl_prestudent.prestudent_id', 'LEFT');
}
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Adds a SELECT statement to the query.
*
* @param string|array $select
* @param boolean $escape (optional)
*
* @return void
*/
public function addSelect($select, $escape = true)
{
if (is_array($select)) {
foreach ($select as $s)
$this->addSelect($s, $escape);
return;
}
$alias = $this->getAliasFromSelect($select);
$this->_selects[$alias] = [$select, $escape];
}
/**
* Joins a table to the query.
*
* @param string $table
* @param string $cond
* @param string $type (optional)
* @param string $position (optional)
*
* @return void
*/
public function addJoin($table, $cond, $type = '', $position = 'end')
{
$alias = $this->getAliasFromTable($table);
if ($position == 'end') {
return $this->_joins[$alias] = [$table, $cond, $type];
}
if ($position == 'start') {
return $this->_joins = [$alias => [$table, $cond, $type]] + $this->_joins;
}
if (substr($position, 0, 7) == 'before_') {
$ref = substr($position, 7);
$index = 0;
} elseif (substr($position, 0, 6) == 'after_') {
$ref = substr($position, 6);
$index = 1;
} else {
return $this->addJoin($table, $cond, $type);
}
if (!isset($this->_joins[$ref]))
return $this->addJoin($table, $cond, $type);
$key_indeces = array_flip(array_keys($this->_joins));
$index += $key_indeces[$ref];
if (!$index)
return $this->addJoin($table, $cond, $type, 'start');
$front_part = array_slice($this->_joins, 0, $index, true);
$back_part = array_slice($this->_joins, $index, null, true);
if (isset($front_part[$alias])) {
unset($front_part[$alias]);
}
$this->_joins = $front_part + [$alias => [$table, $cond, $type]] + $back_part;
}
/**
* Adds a WHERE clause to the query.
*
* @param string|array $key
* @param string|array $value
* @param boolean $escape
*
* @return void
*/
public function addWhere($key, $value = null, $escape = true)
{
if (!is_array($key) && is_array($value)) {
$this->_ci->PrestudentModel->db->where_in($key, $value, $escape);
} else {
$this->_ci->PrestudentModel->db->where($key, $value, $escape);
}
}
/**
* Adds a OR WHERE clause to the query.
*
* @param string|array $key
* @param string|array $value
* @param boolean $escape
*
* @return void
*/
public function addOrWhere($key, $value = null, $escape = true)
{
if (!is_array($key) && is_array($value)) {
$this->_ci->PrestudentModel->db->or_where_in($key, $value, $escape);
} else {
$this->_ci->PrestudentModel->db->or_where($key, $value, $escape);
}
}
/**
* Generates the query and executes it.
*
* @param string|null $studiensemester_kurzbz
*
* @return stdClass result of the query
*/
public function execute($studiensemester_kurzbz)
{
$stdsemEsc = $studiensemester_kurzbz ? $this->_ci->PrestudentModel->escape($studiensemester_kurzbz) : 'NULL';
$this->addSelect(
"public.get_rolle_prestudent(
public.tbl_prestudent.prestudent_id,
" . $this->_ci->PrestudentModel->escape($studiensemester_kurzbz) . "
) AS statusofsemester"
);
$this->addJoin(
'public.tbl_studentlehrverband v',
'v.student_uid=s.student_uid AND v.studiensemester_kurzbz' . ($studiensemester_kurzbz ? '=' . $stdsemEsc : ' IS NULL'),
'LEFT'
);
$this->addJoin(
'public.tbl_prestudentstatus ps',
'ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')
AND ps.prestudent_id=tbl_prestudent.prestudent_id
AND ps.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')
AND ps.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')
',
'LEFT'
);
$this->addWhere('tbl_prestudent.studiengang_kz', $this->_allowedStgs);
foreach ($this->_joins as $join)
$this->_ci->PrestudentModel->addJoin($join[0], $join[1], $join[2]);
foreach ($this->_selects as $select)
$this->_ci->PrestudentModel->addSelect($select[0], $select[1]);
$this->_ci->PrestudentModel->addOrder('nachname');
$this->_ci->PrestudentModel->addOrder('vorname');
return $this->_ci->PrestudentModel->load();
}
//------------------------------------------------------------------------------------------------------------------
// Protected methods
/**
* Get alias of a table or select statement
*
* @param string $select
*
* @return string
*/
final protected function getAliasFromSelect($select)
{
if (strpos($select, ' ') !== false) {
return trim(strrchr($select, ' '));
}
if (strpos($select, '.') !== false) {
return substr(strrchr($select, '.'), 1);
}
return $select;
}
/**
* Get alias of a table or select statement
*
* @param string|array $table
*
* @return string|array
*/
final protected function getAliasFromTable($table)
{
if (strpos($table, ' ') !== false) {
return trim(strrchr($table, ' '));
}
return $table;
}
}
@@ -31,18 +31,20 @@ class Vertrag_model extends DB_Model
*/ */
public function save($person_id, $mitarbeiter_uid, $lehrveranstaltung_id, $lehreinheit_id, $projektarbeit_id = null, $vertragsstunden, $betrag, $studiensemester_kurzbz) public function save($person_id, $mitarbeiter_uid, $lehrveranstaltung_id, $lehreinheit_id, $projektarbeit_id = null, $vertragsstunden, $betrag, $studiensemester_kurzbz)
{ {
$person_id = (isset($person_id) && is_numeric($person_id)) $vertragstyp_kurzbz = (is_null($projektarbeit_id)) ? 'Lehrauftrag' : 'Betreuung';
$person_id = (isset($person_id) && is_numeric($person_id))
? $person_id ? $person_id
: show_error('peron_id must be set and numeric.'); : show_error('peron_id must be set and numeric.');
$lehreinheit_id = (isset($lehreinheit_id) && is_numeric($lehreinheit_id))
? $lehreinheit_id
: show_error('lehreinheit_id must be set and numeric.');
$lehrveranstaltung_id = (isset($lehrveranstaltung_id) && is_numeric($lehrveranstaltung_id)) $lehrveranstaltung_id = (isset($lehrveranstaltung_id) && is_numeric($lehrveranstaltung_id))
? $lehrveranstaltung_id ? $lehrveranstaltung_id
: show_error('lehrveranstaltung_id must be set and numeric.'); : show_error('lehrveranstaltung_id must be set and numeric.');
$projektarbeit_id = (isset($projektarbeit_id) && is_numeric($projektarbeit_id)) $projektarbeit_id = (isset($projektarbeit_id) && is_numeric($projektarbeit_id))
? $projektarbeit_id ? $projektarbeit_id
: null; : null;
$lehreinheit_id = (isset($lehreinheit_id) && is_numeric($lehreinheit_id))
? $lehreinheit_id
: $vertragstyp_kurzbz == 'Betreuung' ? null : show_error('lehreinheit_id must be set and numeric.');
$vertragsstunden = (isset($vertragsstunden) && is_numeric($vertragsstunden)) $vertragsstunden = (isset($vertragsstunden) && is_numeric($vertragsstunden))
? $vertragsstunden ? $vertragsstunden
: 0; : 0;
@@ -53,7 +55,7 @@ class Vertrag_model extends DB_Model
? $mitarbeiter_uid ? $mitarbeiter_uid
: show_error('mitarbeiter_uid must be set and a string value.');; : show_error('mitarbeiter_uid must be set and a string value.');;
$vertragstyp_kurzbz = (is_null($projektarbeit_id)) ? 'Lehrauftrag' : 'Betreuung';
// First check if Vertrag already exists for that Lehrauftrag or for that Projektbetreuerauftrag // First check if Vertrag already exists for that Lehrauftrag or for that Projektbetreuerauftrag
if ($vertragstyp_kurzbz == 'Lehrauftrag') if ($vertragstyp_kurzbz == 'Lehrauftrag')
+3 -3
View File
@@ -234,9 +234,9 @@ class Content_model extends DB_Model
FROM FROM
campus.tbl_content c1 campus.tbl_content c1
LEFT JOIN LEFT JOIN
campus.tbl_contentsprache s1 ON c1.content_id=s1.content_id AND s1.sprache=? AND sichtbar=true campus.tbl_contentsprache s1 ON c1.content_id=s1.content_id AND s1.sprache=?
WHERE WHERE
c1.aktiv = true sichtbar=true
) s2 ) s2
LEFT JOIN LEFT JOIN
campus.tbl_contentsprache s3 USING(content_id, sprache) campus.tbl_contentsprache s3 USING(content_id, sprache)
@@ -277,7 +277,7 @@ class Content_model extends DB_Model
JOIN JOIN
campus.tbl_contentsprache s USING(contentsprache_id) campus.tbl_contentsprache s USING(contentsprache_id)
LEFT JOIN LEFT JOIN
campus.tbl_contentchild k ON(m.content_id=k.content_id) and c.aktiv = true campus.tbl_contentchild k ON(m.content_id=k.content_id)
WHERE EXISTS ( WHERE EXISTS (
SELECT 1 SELECT 1
FROM campus.tbl_contentgruppe FROM campus.tbl_contentgruppe
@@ -177,7 +177,7 @@ class Prestudentstatus_model extends DB_Model
* @param prestudent_id ID of the Prestudent. * @param prestudent_id ID of the Prestudent.
* @param $status_kurzbz kurzbz of the status. * @param $status_kurzbz kurzbz of the status.
* @param $ausbildungssemester ausbildungssemester of the status. * @param $ausbildungssemester ausbildungssemester of the status.
* @param $studiensemester_kurzbz studiensemster of the status. * @param $studiensemester_kurzbz studiensemester of the status.
* *
* @return result object with all the status entries * @return result object with all the status entries
*/ */
@@ -11,4 +11,8 @@ class Bookmark_model extends DB_Model
$this->dbTable = 'dashboard.tbl_bookmark'; $this->dbTable = 'dashboard.tbl_bookmark';
$this->pk = 'bookmark_id'; $this->pk = 'bookmark_id';
} }
} }
@@ -11,4 +11,15 @@ class Dashboard_model extends DB_Model
$this->dbTable = 'dashboard.tbl_dashboard'; $this->dbTable = 'dashboard.tbl_dashboard';
$this->pk = 'dashboard_id'; $this->pk = 'dashboard_id';
} }
/**
* Get Dashboard by kurzbz.
* @param string dashboard_kurzbz
* @return array
*/
public function getDashboardByKurzbz($dashboard_kurzbz)
{
return $this->loadWhere(array('dashboard_kurzbz' => $dashboard_kurzbz));
}
} }
@@ -1263,6 +1263,39 @@ class Lehrveranstaltung_model extends DB_Model
"; ";
} }
/**
* Gets lehrveranstaltungen of Studienplan of a certain lva_id set
* used if a bigger set of lva id is already available and it needs to be checked against a certain studienplan aswell
* @param $studienplan_id ID des Studienplans
* @param $lva_ids LVA_ID welche abgegleicht werden sollen
* @return array|null
*/
public function getLvsByStudienplanByLvaIDs($studienplan_id, $lva_ids)
{
$params = array($studienplan_id, $lva_ids);
$qry = "SELECT tbl_lehrveranstaltung.*,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent,
tbl_studienplan_lehrveranstaltung.sort stpllv_sort,
tbl_studienplan_lehrveranstaltung.curriculum,
tbl_studienplan_lehrveranstaltung.export,
tbl_studienplan_lehrveranstaltung.genehmigung
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung
USING(lehrveranstaltung_id)
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id = ?
AND tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id IN ?
";
$qry .= " ORDER BY stpllv_sort, semester, sort";
return $this->execQuery($qry, $params);
}
public function getAllOe($lv_id) public function getAllOe($lv_id)
{ {
$qry = "SELECT DISTINCT oe_kurzbz $qry = "SELECT DISTINCT oe_kurzbz
@@ -50,8 +50,7 @@ class Paabgabe_model extends DB_Model
JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id) JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
JOIN public.tbl_benutzer bn_student ON(tbl_projektarbeit.student_uid=bn_student.uid) JOIN public.tbl_benutzer bn_student ON(tbl_projektarbeit.student_uid=bn_student.uid)
JOIN public.tbl_person person_student ON(bn_student.person_id=person_student.person_id) JOIN public.tbl_person person_student ON(bn_student.person_id=person_student.person_id)
JOIN lehre.tbl_lehreinheit ON(tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN lehre.tbl_lehrveranstaltung ON(tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id)
JOIN public.tbl_studiengang ON(tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz) JOIN public.tbl_studiengang ON(tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz)
JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz) JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz)
WHERE WHERE
@@ -68,14 +67,13 @@ class Paabgabe_model extends DB_Model
campus.tbl_paabgabe.insertvon, campus.tbl_paabgabe.insertamum, campus.tbl_paabgabe.updatevon, campus.tbl_paabgabe.updateamum, campus.tbl_paabgabe.insertvon, campus.tbl_paabgabe.insertamum, campus.tbl_paabgabe.updatevon, campus.tbl_paabgabe.updateamum,
campus.tbl_paabgabe.note, upload_allowed, beurteilungsnotiz, student_uid, tbl_projektarbeit.note, lehre.tbl_projektarbeit.titel, campus.tbl_paabgabe.note, upload_allowed, beurteilungsnotiz, student_uid, tbl_projektarbeit.note, lehre.tbl_projektarbeit.titel,
UPPER(tbl_studiengang.typ) as stgtyp, UPPER(tbl_studiengang.kurzbz) as stgkz, public.tbl_studiengang.studiengang_kz, UPPER(tbl_studiengang.typ) as stgtyp, UPPER(tbl_studiengang.kurzbz) as stgkz, public.tbl_studiengang.studiengang_kz,
public.tbl_studiengang.oe_kurzbz as stg_oe_kurzbz, tbl_lehreinheit.studiensemester_kurzbz, public.tbl_studiengang.oe_kurzbz as stg_oe_kurzbz, tbl_projektarbeit.studiensemester_kurzbz,
public.tbl_person.anrede, public.tbl_person.titelpre, public.tbl_person.vorname, public.tbl_person.nachname, public.tbl_person.titelpost public.tbl_person.anrede, public.tbl_person.titelpre, public.tbl_person.vorname, public.tbl_person.nachname, public.tbl_person.titelpost
FROM campus.tbl_paabgabe FROM campus.tbl_paabgabe
JOIN campus.tbl_paabgabetyp USING (paabgabetyp_kurzbz) JOIN campus.tbl_paabgabetyp USING (paabgabetyp_kurzbz)
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id) JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
JOIN lehre.tbl_lehreinheit using(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id) JOIN public.tbl_studiengang ON(lehre.tbl_lehrveranstaltung.studiengang_kz = public.tbl_studiengang.studiengang_kz)
JOIN public.tbl_studiengang on(lehre.tbl_lehrveranstaltung.studiengang_kz = public.tbl_studiengang.studiengang_kz)
JOIN public.tbl_benutzer ON (public.tbl_benutzer.uid = student_uid) JOIN public.tbl_benutzer ON (public.tbl_benutzer.uid = student_uid)
JOIN public.tbl_person USING (person_id) JOIN public.tbl_person USING (person_id)
@@ -93,7 +91,7 @@ class Paabgabe_model extends DB_Model
campus.tbl_paabgabe.insertvon, campus.tbl_paabgabe.insertamum, campus.tbl_paabgabe.updatevon, campus.tbl_paabgabe.updateamum, campus.tbl_paabgabe.insertvon, campus.tbl_paabgabe.insertamum, campus.tbl_paabgabe.updatevon, campus.tbl_paabgabe.updateamum,
campus.tbl_paabgabe.note, upload_allowed, beurteilungsnotiz, student_uid, tbl_projektarbeit.note, lehre.tbl_projektarbeit.titel, campus.tbl_paabgabe.note, upload_allowed, beurteilungsnotiz, student_uid, tbl_projektarbeit.note, lehre.tbl_projektarbeit.titel,
UPPER(tbl_studiengang.typ) as stgtyp, UPPER(tbl_studiengang.kurzbz) as stgkz, public.tbl_studiengang.studiengang_kz, UPPER(tbl_studiengang.typ) as stgtyp, UPPER(tbl_studiengang.kurzbz) as stgkz, public.tbl_studiengang.studiengang_kz,
public.tbl_studiengang.oe_kurzbz as stg_oe_kurzbz, tbl_lehreinheit.studiensemester_kurzbz, public.tbl_studiengang.oe_kurzbz as stg_oe_kurzbz, tbl_projektarbeit.studiensemester_kurzbz,
lehre.tbl_projektbetreuer.betreuerart_kurzbz, lehre.tbl_projektbetreuer.person_id, lehre.tbl_projektbetreuer.betreuerart_kurzbz, lehre.tbl_projektbetreuer.person_id,
public.tbl_person.anrede, public.tbl_person.titelpre, public.tbl_person.vorname, public.tbl_person.nachname, public.tbl_person.titelpost public.tbl_person.anrede, public.tbl_person.titelpre, public.tbl_person.vorname, public.tbl_person.nachname, public.tbl_person.titelpost
@@ -101,8 +99,7 @@ class Paabgabe_model extends DB_Model
JOIN campus.tbl_paabgabetyp USING (paabgabetyp_kurzbz) JOIN campus.tbl_paabgabetyp USING (paabgabetyp_kurzbz)
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id) JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id) JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
JOIN lehre.tbl_lehreinheit using(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
JOIN public.tbl_studiengang on(lehre.tbl_lehrveranstaltung.studiengang_kz = public.tbl_studiengang.studiengang_kz) JOIN public.tbl_studiengang on(lehre.tbl_lehrveranstaltung.studiengang_kz = public.tbl_studiengang.studiengang_kz)
JOIN public.tbl_benutzer ON (public.tbl_benutzer.uid = student_uid) JOIN public.tbl_benutzer ON (public.tbl_benutzer.uid = student_uid)
JOIN public.tbl_person ON (public.tbl_benutzer.person_id = public.tbl_person.person_id) JOIN public.tbl_person ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
@@ -25,7 +25,7 @@ class Projektarbeit_model extends DB_Model
{ {
$qry = "SELECT $qry = "SELECT
pa.*, tbl_projekttyp.bezeichnung, pa.*, tbl_projekttyp.bezeichnung,
tbl_lehreinheit.studiensemester_kurzbz, tbl_lehrveranstaltung.lehrveranstaltung_id, pa.studiensemester_kurzbz, pa.lehrveranstaltung_id,
tbl_firma.name AS firma_name, tbl_firma.name AS firma_name,
( (
SELECT SELECT
@@ -41,7 +41,6 @@ class Projektarbeit_model extends DB_Model
FROM FROM
lehre.tbl_projektarbeit pa lehre.tbl_projektarbeit pa
JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz) JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
LEFT JOIN public.tbl_firma USING (firma_id) LEFT JOIN public.tbl_firma USING (firma_id)
WHERE WHERE
@@ -57,7 +56,7 @@ class Projektarbeit_model extends DB_Model
if (isset($studiensemester_kurzbz)) if (isset($studiensemester_kurzbz))
{ {
$qry .= ' AND tbl_lehreinheit.studiensemester_kurzbz=?'; $qry .= ' AND tbl_projektarbeit.studiensemester_kurzbz=?';
$params[] = $studiensemester_kurzbz; $params[] = $studiensemester_kurzbz;
} }
@@ -134,7 +133,7 @@ class Projektarbeit_model extends DB_Model
projektarbeit_id, projektarbeit_id,
lehre.tbl_projekttyp.bezeichnung as projekttypbezeichnung, lehre.tbl_projekttyp.bezeichnung as projekttypbezeichnung,
lehre.tbl_projekttyp.projekttyp_kurzbz as projekttypkurzbz, lehre.tbl_projekttyp.projekttyp_kurzbz as projekttypkurzbz,
lehre.tbl_lehreinheit.studiensemester_kurzbz, lehre.tbl_projektarbeit.studiensemester_kurzbz,
lehre.tbl_lehrveranstaltung.studiengang_kz, lehre.tbl_lehrveranstaltung.studiengang_kz,
public.tbl_studiengang.kurzbzlang, public.tbl_studiengang.kurzbzlang,
lehre.tbl_projektarbeit.note as note, lehre.tbl_projektarbeit.note as note,
@@ -157,7 +156,6 @@ class Projektarbeit_model extends DB_Model
LEFT JOIN public.tbl_benutzer USING(person_id) LEFT JOIN public.tbl_benutzer USING(person_id)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz) LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
LEFT JOIN lehre.tbl_betreuerart USING(betreuerart_kurzbz) LEFT JOIN lehre.tbl_betreuerart USING(betreuerart_kurzbz)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_mitarbeiter ON(public.tbl_mitarbeiter.mitarbeiter_uid = public.tbl_benutzer.uid) LEFT JOIN public.tbl_mitarbeiter ON(public.tbl_mitarbeiter.mitarbeiter_uid = public.tbl_benutzer.uid)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz) LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
@@ -187,10 +185,7 @@ class Projektarbeit_model extends DB_Model
campus.tbl_paabgabetyp.bezeichnung, campus.tbl_paabgabetyp.bezeichnung,
campus.tbl_paabgabetyp.benotbar, campus.tbl_paabgabetyp.benotbar,
campus.tbl_paabgabe.abgabedatum, campus.tbl_paabgabe.abgabedatum,
campus.tbl_paabgabe.insertvon, campus.tbl_paabgabe.insertvon
campus.tbl_paabgabe.insertamum,
campus.tbl_paabgabe.updatevon,
campus.tbl_paabgabe.updateamum
FROM campus.tbl_paabgabe JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz) FROM campus.tbl_paabgabe JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz)
WHERE campus.tbl_paabgabe.projektarbeit_id = ? WHERE campus.tbl_paabgabe.projektarbeit_id = ?
ORDER BY campus.tbl_paabgabe.datum"; ORDER BY campus.tbl_paabgabe.datum";
@@ -210,18 +205,7 @@ class Projektarbeit_model extends DB_Model
campus.tbl_paabgabetyp.paabgabetyp_kurzbz, campus.tbl_paabgabetyp.paabgabetyp_kurzbz,
campus.tbl_paabgabetyp.bezeichnung, campus.tbl_paabgabetyp.bezeichnung,
campus.tbl_paabgabe.abgabedatum, campus.tbl_paabgabe.abgabedatum,
campus.tbl_paabgabe.insertvon, campus.tbl_paabgabe.insertvon
campus.tbl_paabgabe.updatevon,
campus.tbl_paabgabe.insertamum,
campus.tbl_paabgabe.updateamum,
(SELECT p.vorname || ' ' || p.nachname
FROM public.tbl_benutzer b
JOIN public.tbl_person p USING(person_id)
WHERE b.uid = campus.tbl_paabgabe.insertvon) AS insertvon_fullname,
(SELECT p.vorname || ' ' || p.nachname
FROM public.tbl_benutzer b
JOIN public.tbl_person p USING(person_id)
WHERE b.uid = campus.tbl_paabgabe.updatevon) AS updatevon_fullname
FROM campus.tbl_paabgabe JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz) FROM campus.tbl_paabgabe JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz)
WHERE campus.tbl_paabgabe.projektarbeit_id IN ? WHERE campus.tbl_paabgabe.projektarbeit_id IN ?
ORDER BY campus.tbl_paabgabe.datum"; ORDER BY campus.tbl_paabgabe.datum";
@@ -254,8 +238,7 @@ class Projektarbeit_model extends DB_Model
LEFT JOIN public.tbl_benutzer ben USING (person_id) LEFT JOIN public.tbl_benutzer ben USING (person_id)
LEFT JOIN public.tbl_mitarbeiter ma ON ben.uid = ma.mitarbeiter_uid LEFT JOIN public.tbl_mitarbeiter ma ON ben.uid = ma.mitarbeiter_uid
WHERE (ben.aktiv OR ben.aktiv IS NULL) WHERE (ben.aktiv OR ben.aktiv IS NULL)
AND projektarbeit_id = ? AND projektarbeit_id = ?";
AND lehre.tbl_projektbetreuer.betreuerart_kurzbz = ANY('{Begutachter, Betreuer, Erstbetreuer,Erstbegutachter,Senatsvorsitz}')";
return $this->execReadOnlyQuery($qry, [$projektarbeit_id]); return $this->execReadOnlyQuery($qry, [$projektarbeit_id]);
} }
@@ -309,142 +292,33 @@ class Projektarbeit_model extends DB_Model
* Get a List of Projektarbeiten of a mitarbeiter with zuordnung * Get a List of Projektarbeiten of a mitarbeiter with zuordnung
* used by the mitarbeiter cis4 abgabetool. * used by the mitarbeiter cis4 abgabetool.
*/ */
public function getMitarbeiterProjektarbeiten($person_id, $showAll){ public function getMitarbeiterProjektarbeiten($uid, $showAll) {
$qry = "WITH secondary_betreuer AS ( $qry = "SELECT
SELECT DISTINCT ON (pb.projektarbeit_id) *
pb.projektarbeit_id, FROM
pb.person_id AS zweitbetreuer_person_id, (SELECT tbl_person.vorname, tbl_person.nachname, tbl_studiengang.typ, tbl_studiengang.kurzbz,
b.uid AS zweitbetreuer_benutzer_uid, tbl_projektarbeit.projekttyp_kurzbz, tbl_projekttyp.bezeichnung, tbl_projektarbeit.titel, tbl_projektarbeit.projektarbeit_id, tbl_projektarbeit.note,
pb.betreuerart_kurzbz AS zweitbetreuer_betreuerart_kurzbz, tbl_projektbetreuer.person_id as betreuer_person_id, tbl_projektbetreuer.betreuerart_kurzbz, tbl_betreuerart.beschreibung AS betreuerart_beschreibung,
ba.beschreibung AS zweitbetreuer_betreuerart_beschreibung, tbl_benutzer.uid, tbl_student.matrikelnr, tbl_projektarbeit.studiensemester_kurzbz, public.tbl_student.student_uid
p.titelpre AS zweitbetreuer_titelpre, FROM lehre.tbl_projektarbeit
p.vorname AS zweitbetreuer_vorname, LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
p.nachname AS zweitbetreuer_nachname, LEFT JOIN lehre.tbl_betreuerart USING(betreuerart_kurzbz)
p.titelpost AS zweitbetreuer_titelpost, LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
trim( LEFT JOIN public.tbl_student ON(public.tbl_benutzer.uid=public.tbl_student.student_uid)
COALESCE(p.titelpre, '') || ' ' || LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
COALESCE(p.vorname, '') || ' ' || LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
COALESCE(p.nachname, '') || ' ' || LEFT JOIN public.tbl_studiengang ON(lehre.tbl_lehrveranstaltung.studiengang_kz=public.tbl_studiengang.studiengang_kz)
COALESCE(p.titelpost, '') LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
) AS zweitbetreuer_full_name WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
FROM lehre.tbl_projektbetreuer pb AND tbl_projektbetreuer.person_id IN (SELECT person_id FROM public.tbl_benutzer
JOIN public.tbl_person p ON p.person_id = pb.person_id WHERE public.tbl_benutzer.person_id=lehre.tbl_projektbetreuer.person_id
LEFT JOIN public.tbl_benutzer b ON b.person_id = p.person_id AND public.tbl_benutzer.uid= ? )
LEFT JOIN lehre.tbl_betreuerart ba ON ba.betreuerart_kurzbz = pb.betreuerart_kurzbz ".($showAll?'':' AND public.tbl_benutzer.aktiv AND lehre.tbl_projektarbeit.note IS NULL ')."
WHERE pb.betreuerart_kurzbz = ANY('{Zweitbetreuer,Zweitbegutachter,Senatsmitglied}')
ORDER BY pb.projektarbeit_id
),
primary_betreuer AS (
SELECT DISTINCT ON (pb.projektarbeit_id)
pb.projektarbeit_id,
pb.person_id AS betreuer_person_id,
pb.betreuerart_kurzbz AS betreuer_betreuerart_kurzbz,
ba.beschreibung AS betreuer_betreuerart_beschreibung,
p.titelpre AS betreuer_titelpre,
p.vorname AS betreuer_vorname,
p.nachname AS betreuer_nachname,
p.titelpost AS betreuer_titelpost,
trim(
COALESCE(p.titelpre, '') || ' ' ||
COALESCE(p.vorname, '') || ' ' ||
COALESCE(p.nachname, '') || ' ' ||
COALESCE(p.titelpost, '')
) AS betreuer_full_name
FROM lehre.tbl_projektbetreuer pb
JOIN public.tbl_person p ON p.person_id = pb.person_id
LEFT JOIN public.tbl_benutzer b ON b.person_id = p.person_id
LEFT JOIN lehre.tbl_betreuerart ba ON ba.betreuerart_kurzbz = pb.betreuerart_kurzbz
WHERE pb.betreuerart_kurzbz = ANY('{Begutachter, Betreuer, Erstbetreuer,Erstbegutachter,Senatsvorsitz}')
ORDER BY pb.projektarbeit_id
)
SELECT
*
FROM
(SELECT DISTINCT ON (tbl_projektarbeit.projektarbeit_id)
student_person.vorname, student_person.nachname,
tbl_studiengang.typ, tbl_studiengang.kurzbz,
tbl_projektarbeit.projekttyp_kurzbz, tbl_projekttyp.bezeichnung,
tbl_projektarbeit.titel, tbl_projektarbeit.projektarbeit_id, tbl_projektarbeit.note,
student_benutzer.uid, tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz, public.tbl_student.student_uid,
lehre.tbl_projektarbeit.sprache,
lehre.tbl_projektarbeit.seitenanzahl,
lehre.tbl_projektarbeit.kontrollschlagwoerter,
lehre.tbl_projektarbeit.schlagwoerter,
lehre.tbl_projektarbeit.schlagwoerter_en,
lehre.tbl_projektarbeit.abstract,
lehre.tbl_projektarbeit.abstract_en,
lehre.tbl_projektarbeit.insertamum,
(
SELECT orgform_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id = (
SELECT prestudent_id FROM public.tbl_student
WHERE student_uid = student_benutzer.uid LIMIT 1
)
ORDER BY datum DESC, insertamum DESC, ext_id DESC
LIMIT 1
) AS organisationsform,
(
SELECT COALESCE(tbl_studienplan.orgform_kurzbz,
tbl_prestudentstatus.orgform_kurzbz,
tbl_studiengang.orgform_kurzbz)
FROM public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
JOIN public.tbl_studiengang USING (studiengang_kz)
LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
WHERE prestudent_id = public.tbl_student.prestudent_id
ORDER BY tbl_prestudentstatus.datum DESC
LIMIT 1
) AS orgform,
(
SELECT status_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id = public.tbl_student.prestudent_id
ORDER BY datum DESC, insertamum DESC, ext_id DESC
LIMIT 1
) AS studienstatus,
pb.betreuer_person_id,
pb.betreuer_betreuerart_kurzbz,
pb.betreuer_betreuerart_beschreibung,
pb.betreuer_titelpre,
pb.betreuer_vorname,
pb.betreuer_nachname,
pb.betreuer_titelpost,
pb.betreuer_full_name,
sb.zweitbetreuer_person_id,
sb.zweitbetreuer_benutzer_uid,
sb.zweitbetreuer_betreuerart_kurzbz,
sb.zweitbetreuer_betreuerart_beschreibung,
sb.zweitbetreuer_titelpre,
sb.zweitbetreuer_vorname,
sb.zweitbetreuer_nachname,
sb.zweitbetreuer_titelpost,
sb.zweitbetreuer_full_name
FROM lehre.tbl_projektarbeit
LEFT JOIN public.tbl_benutzer student_benutzer ON student_benutzer.uid = lehre.tbl_projektarbeit.student_uid
LEFT JOIN public.tbl_person student_person ON student_benutzer.person_id = student_person.person_id
LEFT JOIN public.tbl_student ON student_benutzer.uid = public.tbl_student.student_uid
LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang ON public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
LEFT JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
LEFT JOIN primary_betreuer pb ON pb.projektarbeit_id = tbl_projektarbeit.projektarbeit_id
LEFT JOIN secondary_betreuer sb ON sb.projektarbeit_id = tbl_projektarbeit.projektarbeit_id
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
AND (pb.betreuer_person_id = ? OR sb.zweitbetreuer_person_id = ?)
".($showAll?'':' AND student_benutzer.aktiv AND lehre.tbl_projektarbeit.note IS NULL ')."
AND betreuerart_kurzbz IN ('Betreuer', 'Begutachter', 'Erstbegutachter', 'Zweitbegutachter', 'Erstbetreuer', 'Senatsvorsitz', 'Senatsmitglied') AND betreuerart_kurzbz IN ('Betreuer', 'Begutachter', 'Erstbegutachter', 'Zweitbegutachter', 'Erstbetreuer', 'Senatsvorsitz', 'Senatsmitglied')
ORDER BY tbl_projektarbeit.projektarbeit_id, betreuerart_kurzbz desc) as xy ORDER BY tbl_projektarbeit.projektarbeit_id, betreuerart_kurzbz desc) as xy
ORDER BY nachname;"; ORDER BY nachname;";
return $this->execReadOnlyQuery($qry, array($person_id, $person_id)); return $this->execReadOnlyQuery($qry, array($uid));
} }
/** /**
@@ -464,258 +338,176 @@ class Projektarbeit_model extends DB_Model
public function getProjektarbeitenForStudiengang($studiengang_kz, $benotet) { public function getProjektarbeitenForStudiengang($studiengang_kz, $benotet) {
$new_qry = "WITH secondary_betreuer AS ( $new_qry = "SELECT DISTINCT ON(tmp.projektarbeit_id) *, campus.get_betreuer_details(tmp.zweitbetreuer_person_id) as zweitbetreuer_full_name, campus.get_betreuer_details(tmp.betreuer_person_id) as erstbetreuer_full_name
SELECT DISTINCT ON (pb.projektarbeit_id) FROM(
pb.projektarbeit_id, SELECT
pb.person_id AS zweitbetreuer_person_id, DISTINCT ON(tbl_projektarbeit.projektarbeit_id)
pb.betreuerart_kurzbz AS zweitbetreuer_betreuerart_kurzbz, tbl_projektarbeit.projekttyp_kurzbz,
ba.beschreibung AS zweitbetreuer_betreuerart_beschreibung, tbl_projektarbeit.titel,
p.titelpre AS zweitbetreuer_titelpre, tbl_projektarbeit.projektarbeit_id,
p.vorname AS zweitbetreuer_vorname, tbl_studiengang.typ, tbl_studiengang.kurzbz,
p.nachname AS zweitbetreuer_nachname, student_benutzer.uid as student_uid,
p.titelpost AS zweitbetreuer_titelpost, student_person.vorname as student_vorname,
trim( student_person.nachname as student_nachname,
COALESCE(p.titelpre, '') || ' ' || tbl_student.matrikelnr, tbl_projektarbeit.studiensemester_kurzbz,
COALESCE(p.vorname, '') || ' ' || betreuer_benutzer.uid as betreuer_benutzer_uid,
COALESCE(p.nachname, '') || ' ' || betreuer_person.titelpre as betreuer_titelpre,
COALESCE(p.titelpost, '') betreuer_person.vorname as betreuer_vorname,
) AS zweitbetreuer_full_name betreuer_person.nachname as betreuer_nachname,
FROM lehre.tbl_projektbetreuer pb betreuer_person.titelpost as betreuer_titelpost,
JOIN public.tbl_person p ON p.person_id = pb.person_id lehre.tbl_projektbetreuer.betreuerart_kurzbz as betreuerart,
LEFT JOIN public.tbl_benutzer b ON b.person_id = p.person_id lehre.tbl_projektbetreuer.person_id as betreuer_person_id,
LEFT JOIN lehre.tbl_betreuerart ba ON ba.betreuerart_kurzbz = pb.betreuerart_kurzbz lehre.tbl_projektarbeit.sprache as sprache,
WHERE pb.betreuerart_kurzbz = ANY('{Zweitbetreuer,Zweitbegutachter,Senatsmitglied}') lehre.tbl_projektarbeit.seitenanzahl as seitenanzahl,
ORDER BY pb.projektarbeit_id -- DISTINCT ON needs this to be deterministic lehre.tbl_projektarbeit.kontrollschlagwoerter as kontrollschlagwoerter,
) lehre.tbl_projektarbeit.schlagwoerter as schlagwoerter,
lehre.tbl_projektarbeit.schlagwoerter_en as schlagwoerter_en,
lehre.tbl_projektarbeit.abstract as abstract,
lehre.tbl_projektarbeit.abstract_en as abstract_en,
lehre.tbl_projektarbeit.insertamum as insertamum,
lehre.tbl_projektarbeit.note as note,
(
SELECT orgform_kurzbz
FROM tbl_prestudentstatus
WHERE prestudent_id = (SELECT prestudent_id
FROM tbl_student
WHERE student_uid = student_benutzer.uid
LIMIT 1)
ORDER BY datum DESC, insertamum DESC, ext_id DESC
LIMIT 1
)
as organisationsform,
(
SELECT person_id
FROM lehre.tbl_projektbetreuer
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
LIMIT 1
)
AS zweitbetreuer_person_id,
(
SELECT betreuerart_kurzbz
FROM lehre.tbl_projektbetreuer
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
LIMIT 1
)
AS zweitbetreuer_betreuerart_kurzbz,
(
SELECT tbl_betreuerart.beschreibung
FROM lehre.tbl_projektbetreuer
JOIN lehre.tbl_betreuerart USING (betreuerart_kurzbz)
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
LIMIT 1
)
AS zweitbetreuer_betreuerart_beschreibung,
(
SELECT trim(COALESCE(titelpre, '') || ' ' || COALESCE(vorname, '') || ' ' || COALESCE(nachname, '') || ' ' ||
COALESCE(titelpost, ''))
FROM public.tbl_person
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id)
LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
LIMIT 1
)
as zweitbetreuer_full_name,
(
SELECT titelpre
FROM public.tbl_person
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id)
LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
LIMIT 1
)
as zweitbetreuer_titelpre,
(
SELECT vorname
FROM public.tbl_person
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id)
LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
LIMIT 1
)
as zweitbetreuer_vorname,
(
SELECT nachname
FROM public.tbl_person
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id)
LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
LIMIT 1
)
as zweitbetreuer_nachname,
(
SELECT titelpost
FROM public.tbl_person
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id)
LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
LIMIT 1
)
as zweitbetreuer_titelpost,
(
SELECT
COALESCE(tbl_studienplan.orgform_kurzbz,
tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as
orgform
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
JOIN public.tbl_studiengang USING(studiengang_kz)
LEFT JOIN lehre.tbl_studienplan USING(studienplan_id)
WHERE
prestudent_id=tbl_student.prestudent_id
ORDER BY tbl_prestudentstatus.datum DESC LIMIT 1
) as orgform,
(SELECT status_kurzbz FROM public.tbl_prestudentstatus
WHERE prestudent_id=tbl_student.prestudent_id
ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as studienstatus
FROM lehre.tbl_projektarbeit
LEFT JOIN public.tbl_benutzer student_benutzer ON (student_benutzer.uid = lehre.tbl_projektarbeit.student_uid)
LEFT JOIN public.tbl_person student_person ON (student_benutzer.person_id = student_person.person_id)
LEFT JOIN public.tbl_student on(student_benutzer.uid = public.tbl_student.student_uid)
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang ON (public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
LEFT JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
LEFT JOIN public.tbl_person betreuer_person ON (betreuer_person.person_id = lehre.tbl_projektbetreuer.person_id)
LEFT JOIN public.tbl_benutzer betreuer_benutzer ON (betreuer_person.person_id = betreuer_benutzer.person_id)
WHERE (projekttyp_kurzbz = 'Bachelor' OR projekttyp_kurzbz = 'Diplom')
AND student_benutzer.aktiv AND (
lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Erstbegutachter'
OR lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Begutachter'
OR lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Betreuer'
OR lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Erstbetreuer'
OR lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Senatsvorsitz'
)
AND public.tbl_studiengang.studiengang_kz = ?";
SELECT DISTINCT ON (tmp.projektarbeit_id) if($benotet == 0) {
*, $new_qry .= " AND lehre.tbl_projektarbeit.note IS NULL ";
campus.get_betreuer_details(tmp.zweitbetreuer_person_id) AS zweitbetreuer_full_name, } else if ($benotet == 1) {
campus.get_betreuer_details(tmp.betreuer_person_id) AS erstbetreuer_full_name $new_qry .= " AND lehre.tbl_projektarbeit.note IS NOT NULL ";
FROM ( }
SELECT DISTINCT ON (tbl_projektarbeit.projektarbeit_id)
tbl_projektarbeit.projekttyp_kurzbz,
tbl_projektarbeit.titel,
tbl_projektarbeit.projektarbeit_id,
tbl_studiengang.typ,
tbl_studiengang.kurzbz,
student_benutzer.uid AS student_uid,
student_person.vorname AS student_vorname,
student_person.nachname AS student_nachname,
public.tbl_student.matrikelnr,
tbl_lehreinheit.studiensemester_kurzbz,
betreuer_benutzer.uid AS betreuer_benutzer_uid,
betreuer_person.titelpre AS betreuer_titelpre,
betreuer_person.vorname AS betreuer_vorname,
betreuer_person.nachname AS betreuer_nachname,
betreuer_person.titelpost AS betreuer_titelpost,
lehre.tbl_projektbetreuer.betreuerart_kurzbz AS betreuerart,
lehre.tbl_projektbetreuer.person_id AS betreuer_person_id,
lehre.tbl_projektarbeit.sprache,
lehre.tbl_projektarbeit.seitenanzahl,
lehre.tbl_projektarbeit.kontrollschlagwoerter,
lehre.tbl_projektarbeit.schlagwoerter,
lehre.tbl_projektarbeit.schlagwoerter_en,
lehre.tbl_projektarbeit.abstract,
lehre.tbl_projektarbeit.abstract_en,
lehre.tbl_projektarbeit.insertamum,
lehre.tbl_projektarbeit.note,
sb.zweitbetreuer_person_id, $new_qry .= " ORDER BY tbl_projektarbeit.projektarbeit_id DESC, student_person.nachname ASC
sb.zweitbetreuer_betreuerart_kurzbz,
sb.zweitbetreuer_betreuerart_beschreibung,
sb.zweitbetreuer_full_name,
sb.zweitbetreuer_titelpre,
sb.zweitbetreuer_vorname,
sb.zweitbetreuer_nachname,
sb.zweitbetreuer_titelpost,
(
SELECT orgform_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id = (
SELECT prestudent_id FROM public.tbl_student
WHERE student_uid = student_benutzer.uid LIMIT 1
)
ORDER BY datum DESC, insertamum DESC, ext_id DESC
LIMIT 1
) AS organisationsform,
(
SELECT COALESCE(tbl_studienplan.orgform_kurzbz,
tbl_prestudentstatus.orgform_kurzbz,
tbl_studiengang.orgform_kurzbz)
FROM public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
JOIN public.tbl_studiengang USING (studiengang_kz)
LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
WHERE prestudent_id = public.tbl_student.prestudent_id
ORDER BY tbl_prestudentstatus.datum DESC
LIMIT 1
) AS orgform,
(
SELECT status_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id = public.tbl_student.prestudent_id
ORDER BY datum DESC, insertamum DESC, ext_id DESC
LIMIT 1
) AS studienstatus
FROM lehre.tbl_projektarbeit
LEFT JOIN public.tbl_benutzer student_benutzer ON student_benutzer.uid = lehre.tbl_projektarbeit.student_uid
LEFT JOIN public.tbl_person student_person ON student_benutzer.person_id = student_person.person_id
LEFT JOIN public.tbl_student ON student_benutzer.uid = public.tbl_student.student_uid
LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang ON public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
LEFT JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
LEFT JOIN public.tbl_person betreuer_person ON betreuer_person.person_id = lehre.tbl_projektbetreuer.person_id
LEFT JOIN public.tbl_benutzer betreuer_benutzer ON betreuer_person.person_id = betreuer_benutzer.person_id
LEFT JOIN secondary_betreuer sb ON sb.projektarbeit_id = tbl_projektarbeit.projektarbeit_id
WHERE (projekttyp_kurzbz = 'Bachelor' OR projekttyp_kurzbz = 'Diplom')
AND student_benutzer.aktiv
AND lehre.tbl_projektbetreuer.betreuerart_kurzbz IN (
'Erstbegutachter', 'Begutachter', 'Betreuer', 'Erstbetreuer', 'Senatsvorsitz'
)
AND public.tbl_studiengang.studiengang_kz = ?";
if($benotet == 0) {
$new_qry .= " AND lehre.tbl_projektarbeit.note IS NULL ";
} else if ($benotet == 1) {
$new_qry .= " AND lehre.tbl_projektarbeit.note IS NOT NULL ";
}
$new_qry .= " ORDER BY tbl_projektarbeit.projektarbeit_id DESC, student_person.nachname ASC
) as tmp"; ) as tmp";
return $this->execReadOnlyQuery($new_qry, array($studiengang_kz)); return $this->execReadOnlyQuery($new_qry, array($studiengang_kz));
} }
public function getProjektarbeitenForStudent($student_uid) {
$new_qry = "WITH secondary_betreuer AS (
SELECT DISTINCT ON (pb.projektarbeit_id)
pb.projektarbeit_id,
pb.person_id AS zweitbetreuer_person_id,
pb.betreuerart_kurzbz AS zweitbetreuer_betreuerart_kurzbz,
ba.beschreibung AS zweitbetreuer_betreuerart_beschreibung,
p.titelpre AS zweitbetreuer_titelpre,
p.vorname AS zweitbetreuer_vorname,
p.nachname AS zweitbetreuer_nachname,
p.titelpost AS zweitbetreuer_titelpost,
trim(
COALESCE(p.titelpre, '') || ' ' ||
COALESCE(p.vorname, '') || ' ' ||
COALESCE(p.nachname, '') || ' ' ||
COALESCE(p.titelpost, '')
) AS zweitbetreuer_full_name
FROM lehre.tbl_projektbetreuer pb
JOIN public.tbl_person p ON p.person_id = pb.person_id
LEFT JOIN public.tbl_benutzer b ON b.person_id = p.person_id
LEFT JOIN lehre.tbl_betreuerart ba ON ba.betreuerart_kurzbz = pb.betreuerart_kurzbz
WHERE pb.betreuerart_kurzbz = ANY('{Zweitbetreuer,Zweitbegutachter,Senatsmitglied}')
ORDER BY pb.projektarbeit_id -- DISTINCT ON needs this to be deterministic
)
SELECT DISTINCT ON (tmp.projektarbeit_id)
*,
campus.get_betreuer_details(tmp.zweitbetreuer_person_id) AS zweitbetreuer_full_name,
campus.get_betreuer_details(tmp.betreuer_person_id) AS erstbetreuer_full_name
FROM (
SELECT DISTINCT ON (tbl_projektarbeit.projektarbeit_id)
tbl_projektarbeit.projekttyp_kurzbz,
tbl_projektarbeit.titel,
tbl_projektarbeit.projektarbeit_id,
tbl_studiengang.typ,
tbl_studiengang.kurzbz,
student_benutzer.uid AS student_uid,
student_person.vorname AS student_vorname,
student_person.nachname AS student_nachname,
public.tbl_student.matrikelnr,
tbl_lehreinheit.studiensemester_kurzbz,
betreuer_benutzer.uid AS betreuer_benutzer_uid,
betreuer_person.titelpre AS betreuer_titelpre,
betreuer_person.vorname AS betreuer_vorname,
betreuer_person.nachname AS betreuer_nachname,
betreuer_person.titelpost AS betreuer_titelpost,
lehre.tbl_projektbetreuer.betreuerart_kurzbz AS betreuerart,
lehre.tbl_projektbetreuer.person_id AS betreuer_person_id,
lehre.tbl_projektarbeit.sprache,
lehre.tbl_projektarbeit.seitenanzahl,
lehre.tbl_projektarbeit.kontrollschlagwoerter,
lehre.tbl_projektarbeit.schlagwoerter,
lehre.tbl_projektarbeit.schlagwoerter_en,
lehre.tbl_projektarbeit.abstract,
lehre.tbl_projektarbeit.abstract_en,
lehre.tbl_projektarbeit.insertamum,
lehre.tbl_projektarbeit.note,
sb.zweitbetreuer_person_id,
sb.zweitbetreuer_betreuerart_kurzbz,
sb.zweitbetreuer_betreuerart_beschreibung,
sb.zweitbetreuer_full_name,
sb.zweitbetreuer_titelpre,
sb.zweitbetreuer_vorname,
sb.zweitbetreuer_nachname,
sb.zweitbetreuer_titelpost,
(
SELECT orgform_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id = (
SELECT prestudent_id FROM public.tbl_student
WHERE student_uid = student_benutzer.uid LIMIT 1
)
ORDER BY datum DESC, insertamum DESC, ext_id DESC
LIMIT 1
) AS organisationsform,
(
SELECT COALESCE(tbl_studienplan.orgform_kurzbz,
tbl_prestudentstatus.orgform_kurzbz,
tbl_studiengang.orgform_kurzbz)
FROM public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
JOIN public.tbl_studiengang USING (studiengang_kz)
LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
WHERE prestudent_id = public.tbl_student.prestudent_id
ORDER BY tbl_prestudentstatus.datum DESC
LIMIT 1
) AS orgform,
(
SELECT status_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id = public.tbl_student.prestudent_id
ORDER BY datum DESC, insertamum DESC, ext_id DESC
LIMIT 1
) AS studienstatus
FROM lehre.tbl_projektarbeit
LEFT JOIN public.tbl_benutzer student_benutzer ON student_benutzer.uid = lehre.tbl_projektarbeit.student_uid
LEFT JOIN public.tbl_person student_person ON student_benutzer.person_id = student_person.person_id
LEFT JOIN public.tbl_student ON student_benutzer.uid = public.tbl_student.student_uid
LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang ON public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
LEFT JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
LEFT JOIN public.tbl_person betreuer_person ON betreuer_person.person_id = lehre.tbl_projektbetreuer.person_id
LEFT JOIN public.tbl_benutzer betreuer_benutzer ON betreuer_person.person_id = betreuer_benutzer.person_id
LEFT JOIN secondary_betreuer sb ON sb.projektarbeit_id = tbl_projektarbeit.projektarbeit_id
WHERE (projekttyp_kurzbz = 'Bachelor' OR projekttyp_kurzbz = 'Diplom')
AND student_benutzer.aktiv
AND lehre.tbl_projektbetreuer.betreuerart_kurzbz IN (
'Erstbegutachter', 'Begutachter', 'Betreuer', 'Erstbetreuer', 'Senatsvorsitz'
)
AND public.tbl_student.student_uid = ?
ORDER BY tbl_projektarbeit.projektarbeit_id DESC, student_person.nachname ASC
) as tmp";
return $this->execReadOnlyQuery($new_qry, array($student_uid));
}
/** /**
* *
* @param * @param
@@ -149,7 +149,6 @@ class Studierendenantrag_model extends DB_Model
$this->addSelect($this->dbTable . '.grund AS grund'); $this->addSelect($this->dbTable . '.grund AS grund');
$this->addSelect('s.studierendenantrag_statustyp_kurzbz status'); $this->addSelect('s.studierendenantrag_statustyp_kurzbz status');
$this->addSelect('s.insertvon status_insertvon'); $this->addSelect('s.insertvon status_insertvon');
$this->addSelect('s.grund AS status_grund');
$this->addSelect('t.bezeichnung[(' . $lang . ')] statustyp'); $this->addSelect('t.bezeichnung[(' . $lang . ')] statustyp');
$this->addSelect('p.unruly AS unruly'); $this->addSelect('p.unruly AS unruly');
$this->addSelect($this->dbTable . '.insertamum AS insertamum'); $this->addSelect($this->dbTable . '.insertamum AS insertamum');
@@ -270,7 +269,6 @@ class Studierendenantrag_model extends DB_Model
$this->addSelect($this->dbTable . '.grund'); $this->addSelect($this->dbTable . '.grund');
$this->addSelect($this->dbTable . '.dms_id'); $this->addSelect($this->dbTable . '.dms_id');
$this->addSelect('s.insertvon AS status_insertvon'); $this->addSelect('s.insertvon AS status_insertvon');
$this->addSelect('s.grund AS status_grund');
$this->addSelect( $this->addSelect(
"(SELECT count(1) FROM campus.tbl_studierendenantrag_status WHERE studierendenantrag_id = " . "(SELECT count(1) FROM campus.tbl_studierendenantrag_status WHERE studierendenantrag_id = " .
$this->dbTable . $this->dbTable .
@@ -50,7 +50,7 @@ class Studierendenantragstatus_model extends DB_Model
$this->addSelect('bezeichnung[(' . $lang . ')] AS typ'); $this->addSelect('bezeichnung[(' . $lang . ')] AS typ');
$this->addJoin('campus.tbl_studierendenantrag_statustyp', 'studierendenantrag_statustyp_kurzbz'); $this->addJoin('campus.tbl_studierendenantrag_statustyp', 'studierendenantrag_statustyp_kurzbz');
$this->addOrder($this->dbTable. '.insertamum', 'DESC');
return $this->loadWhere($where); return $this->loadWhere($where);
} }
@@ -122,47 +122,6 @@ class Studiensemester_model extends DB_Model
return $this->execQuery($query, array($studiensemester_kurzbz, $limit)); return $this->execQuery($query, array($studiensemester_kurzbz, $limit));
} }
/**
* Returns the current study semester and the previous semesters of the same type (SS/WS).
*
* Example:
* - SS2026, limit 3: SS2026, SS2025, SS2024
* - WS2025, limit 2: WS2025, WS2024
*
* @param $studiensemester_kurzbz
* @param $limit
*/
public function getPreviousSameSemesterFrom($studiensemester_kurzbz, $limit = 1)
{
$qry = '
SELECT
studiensemester_kurzbz,
start,
ende
FROM
public.tbl_studiensemester
WHERE
SUBSTRING(studiensemester_kurzbz FROM 1 FOR 2) = SUBSTRING(? FROM 1 FOR 2)
AND start <= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = ?
)
ORDER BY
start DESC
LIMIT ?
';
return $this->execQuery($qry,
[
$studiensemester_kurzbz,
$studiensemester_kurzbz,
$limit
]
);
}
/** /**
* getNearest * getNearest
*/ */
@@ -218,7 +177,7 @@ class Studiensemester_model extends DB_Model
*/ */
public function getByDate($date) public function getByDate($date)
{ {
// gets the studiensemster of a date or the next closest previous studiensemester if a date is not within a studiensemester // gets the studiensemester of a date or the next closest previous studiensemester if a date is not within a studiensemester
$query = " $query = "
SELECT studiensemester_kurzbz, start, ende SELECT studiensemester_kurzbz, start, ende
FROM public.tbl_studiensemester FROM public.tbl_studiensemester
@@ -260,6 +260,7 @@ class Benutzerfunktion_model extends DB_Model
return $this->execQuery($query, $parameters_array); return $this->execQuery($query, $parameters_array);
} }
/** /**
* Get active Kompetenzfeldleitung bei UID. * Get active Kompetenzfeldleitung bei UID.
* *
@@ -295,6 +296,7 @@ class Benutzerfunktion_model extends DB_Model
return $this->execQuery($query, $parameters_array); return $this->execQuery($query, $parameters_array);
} }
public function insertBenutzerfunktion($Json) public function insertBenutzerfunktion($Json)
{ {
unset($Json['benutzerfunktion_id']); unset($Json['benutzerfunktion_id']);
@@ -18,10 +18,10 @@ class Reservierung_model extends DB_Model
* *
* @return stdClass * @return stdClass
*/ */
public function getReservierungen($start_date, $end_date, $ort_kurzbz = null, $uid = null) public function getReservierungen($start_date, $end_date, $ort_kurzbz = null)
{ {
$lvplan_reservierungen_query = "SELECT r.* , stund.beginn, stund.ende, $lvplan_reservierungen_query="SELECT r.* , stund.beginn, stund.ende,
CASE CASE
WHEN r.gruppe_kurzbz IS NOT NULL THEN r.gruppe_kurzbz WHEN r.gruppe_kurzbz IS NOT NULL THEN r.gruppe_kurzbz
ELSE CONCAT(UPPER(studg.typ),UPPER(studg.kurzbz),'-',COALESCE(CAST(r.semester AS varchar),'/'),COALESCE(CAST(r.verband AS varchar),'/')) ELSE CONCAT(UPPER(studg.typ),UPPER(studg.kurzbz),'-',COALESCE(CAST(r.semester AS varchar),'/'),COALESCE(CAST(r.verband AS varchar),'/'))
@@ -46,9 +46,9 @@ class Reservierung_model extends DB_Model
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = res.stunde JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = res.stunde
WHERE res.ort_kurzbz = ? AND datum >= ? AND datum <= ?"; WHERE res.ort_kurzbz = ? AND datum >= ? AND datum <= ?";
$subquery = is_null($ort_kurzbz) ? $lvplan_reservierungen_query : $raum_reservierungen_query; $subquery = is_null($ort_kurzbz)? $lvplan_reservierungen_query:$raum_reservierungen_query;
$query_result = $this->execReadOnlyQuery(" $query_result= $this->execReadOnlyQuery("
SELECT SELECT
'reservierung' as type, beginn, ende, datum, 'reservierung' as type, beginn, ende, datum,
COALESCE(titel, beschreibung) as topic, COALESCE(titel, beschreibung) as topic,
@@ -59,13 +59,13 @@ class Reservierung_model extends DB_Model
FROM FROM
( (
" . $subquery . " ". $subquery ."
) AS subquery ) AS subquery
GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung
ORDER BY datum, beginn ORDER BY datum, beginn
", is_null($ort_kurzbz) ? [$uid ?? getAuthUID(), $uid ?? getAuthUID(), $start_date, $end_date] : [$ort_kurzbz, $start_date, $end_date]); ", is_null($ort_kurzbz) ?[getAuthUID(), getAuthUID(),$start_date,$end_date]: [$ort_kurzbz, $start_date, $end_date]);
return $query_result; return $query_result;
@@ -76,7 +76,7 @@ class Reservierung_model extends DB_Model
* *
* @return stdClass * @return stdClass
*/ */
public function getReservierungenMitarbeiter($start_date, $end_date, $uid = null) public function getReservierungenMitarbeiter($start_date, $end_date)
{ {
$raum_reservierungen_query = "SELECT res.*, beginn, ende, $raum_reservierungen_query = "SELECT res.*, beginn, ende,
@@ -92,7 +92,7 @@ class Reservierung_model extends DB_Model
$subquery = $raum_reservierungen_query; $subquery = $raum_reservierungen_query;
$query_result = $this->execReadOnlyQuery(" $query_result= $this->execReadOnlyQuery("
SELECT SELECT
'reservierung' as type, beginn, ende, datum, 'reservierung' as type, beginn, ende, datum,
COALESCE(titel, beschreibung) as topic, COALESCE(titel, beschreibung) as topic,
@@ -103,13 +103,13 @@ class Reservierung_model extends DB_Model
FROM FROM
( (
" . $subquery . " ". $subquery ."
) AS subquery ) AS subquery
GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung
ORDER BY datum, beginn ORDER BY datum, beginn
", [$uid ?? getAuthUID(), $start_date, $end_date]); ", [getAuthUID(), $start_date, $end_date]);
return $query_result; return $query_result;
@@ -389,84 +389,6 @@ class Stundenplan_model extends DB_Model
ORDER BY datum, beginn", [$start_date, $end_date, $ma_uid]); ORDER BY datum, beginn", [$start_date, $end_date, $ma_uid]);
} }
/**
* queries Stundenplan and filters by studiengang, semester, verband gruppe
*
* @return void
*/
public function getStundenplanStudiengang($start_date, $end_date, $stg_kz, $sem, $verband, $gruppe) {
$qry_params = [$start_date, $end_date, $stg_kz];
$qry = "
SELECT
'lehreinheit' as type, beginn, ende, datum,
CONCAT(lehrfach,'-',lehrform) as topic,
array_agg(DISTINCT lektor) as lektor,
array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe,
string_agg(DISTINCT ort_kurzbz, '/') as ort_kurzbz,
array_agg(DISTINCT lehreinheit_id) as lehreinheit_id,
titel, lehrfach, lehrform, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
FROM
(
SELECT unr,datum,beginn, ende,
CASE
WHEN sp.mitarbeiter_kurzbz IS NOT NULL THEN sp.mitarbeiter_kurzbz
ELSE sp.lektor
END as lektor,
CASE
WHEN gruppe_kurzbz IS NOT NULL THEN gruppe_kurzbz
ELSE CONCAT(UPPER(sp.stg_typ),UPPER(sp.stg_kurzbz),'-',COALESCE(CAST(sp.semester AS varchar),'/'),COALESCE(CAST(sp.verband AS varchar),'/'))
END as gruppen_kuerzel,
(SELECT bezeichnung
FROM public.tbl_organisationseinheit
WHERE oe_kurzbz IN(
SELECT oe_kurzbz
FROM lehre.tbl_lehrveranstaltung
WHERE lehrveranstaltung_id = sp.lehrveranstaltung_id
)) as organisationseinheit,
sp.ort_kurzbz, sp.studiengang_kz, sp.titel,sp.lehreinheit_id,sp.lehrfach_id,sp.anmerkung,fix,lehrveranstaltung_id,stg_kurzbzlang,stg_bezeichnung,stg_typ,fachbereich_kurzbz,lehrfach,lehrfach_bez,farbe,lehrform,anmerkung_lehreinheit,gruppe, verband, semester,stg_kurzbz
FROM (
SELECT sp.*
FROM lehre.vw_stundenplan sp
WHERE
sp.datum >= ?
AND sp.datum <= ?
) sp
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = sp.stunde
WHERE studiengang_kz = ? ";
if($sem != NULL)
{
$qry_params[] = $sem;
$qry .= " AND (semester = ? OR semester IS NULL)";
}
if($verband != NULL)
{
$qry_params[] = $verband;
$qry .= " AND (verband = ? OR verband IS NULL OR verband = '0' OR verband = '')";
}
if($gruppe != NULL)
{
$qry_params[] = $gruppe;
$qry .= " AND (gruppe = ? OR gruppe IS NULL OR gruppe = '0' OR gruppe = '') ";
}
$qry.= " AND (
gruppe_kurzbz is null OR EXISTS(
SELECT 1
FROM
public.tbl_gruppe WHERE gruppe_kurzbz = sp.gruppe_kurzbz AND direktinskription = false
)
)";
$qry.= " ) as subquery
GROUP BY unr, datum, beginn, ende, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
ORDER BY datum, beginn; ";
return $this->execReadOnlyQuery($qry, $qry_params);
}
/** /**
* NO STANDALONE FUNCTION - Generates a SQL query string to fetch 'stundenplan' events for a specific student within the current semester. * NO STANDALONE FUNCTION - Generates a SQL query string to fetch 'stundenplan' events for a specific student within the current semester.
* *
+1 -1
View File
@@ -38,7 +38,7 @@ $includesArray = array(
$this->load->view('templates/FHC-Header', $includesArray); $this->load->view('templates/FHC-Header', $includesArray);
?> ?>
<div id="abgabetoolroot" class="h-100" style="max-width: 99%" route=<?php echo json_encode($route) ?> <div id="abgabetoolroot" class="h-100" style="max-width: 95%;" route=<?php echo json_encode($route) ?>
uid=<?php echo $uid ?> uid=<?php echo $uid ?>
student_uid_prop="<?php echo $student_uid_prop ?? '' ?>" student_uid_prop="<?php echo $student_uid_prop ?? '' ?>"
stg_kz_prop="<?php echo $stg_kz_prop ?? '' ?>" stg_kz_prop="<?php echo $stg_kz_prop ?? '' ?>"
@@ -23,14 +23,12 @@ $includesArray = array(
'public/css/components/FormUnderline.css', 'public/css/components/FormUnderline.css',
'public/css/components/abgabetool/abgabe.css', 'public/css/components/abgabetool/abgabe.css',
'public/css/Cis4/Cms.css', 'public/css/Cis4/Cms.css',
'public/css/Cis4/Studium.css' 'public/css/Cis4/Studium.css',
), ),
'customJSs' => array( 'customJSs' => array(
'vendor/npm-asset/primevue/accordion/accordion.min.js', 'vendor/npm-asset/primevue/accordion/accordion.min.js',
'vendor/npm-asset/primevue/accordiontab/accordiontab.min.js', 'vendor/npm-asset/primevue/accordiontab/accordiontab.min.js',
'vendor/npm-asset/primevue/checkbox/checkbox.min.js', 'vendor/npm-asset/primevue/checkbox/checkbox.min.js',
'vendor/npm-asset/primevue/chips/chips.min.js',
'vendor/npm-asset/primevue/multiselect/multiselect.min.js',
'vendor/npm-asset/primevue/inputnumber/inputnumber.min.js', 'vendor/npm-asset/primevue/inputnumber/inputnumber.min.js',
'vendor/npm-asset/primevue/speeddial/speeddial.min.js', 'vendor/npm-asset/primevue/speeddial/speeddial.min.js',
'vendor/npm-asset/primevue/textarea/textarea.min.js', 'vendor/npm-asset/primevue/textarea/textarea.min.js',
@@ -41,7 +39,7 @@ $includesArray = array(
'vendor/moment/luxonjs/luxon.min.js' 'vendor/moment/luxonjs/luxon.min.js'
), ),
'customJSModules' => array( 'customJSModules' => array(
'public/js/apps/Cis/Cis.js', 'public/js/apps/Dashboard/Fhc.js',
), ),
); );
@@ -49,6 +47,8 @@ $includesArray = array(
$this->load->view('templates/CISVUE-Header', $includesArray); $this->load->view('templates/CISVUE-Header', $includesArray);
?> ?>
<div id="fhccontent" class="h-100" route=<?php echo $route ?>> <div id="fhccontent" class="h-100" route=<?php echo $route ?>>
<router-view></router-view> <router-view
:view-data='<?php echo json_encode($viewData) ?>'
></router-view>
</div> </div>
<?php $this->load->view('templates/CISVUE-Footer', $includesArray); ?> <?php $this->load->view('templates/CISVUE-Footer', $includesArray); ?>
@@ -44,7 +44,6 @@ $this->load->view(
<studierendenantrag-leitung <studierendenantrag-leitung
:stg-a="<?= htmlspecialchars(json_encode(array_values($stgA))); ?>" :stg-a="<?= htmlspecialchars(json_encode(array_values($stgA))); ?>"
:stg-l="<?= htmlspecialchars(json_encode(array_values($stgL))); ?>" :stg-l="<?= htmlspecialchars(json_encode(array_values($stgL))); ?>"
:abmeldung_enabled="<?= htmlspecialchars(json_encode(($abmeldung_enabled))); ?>"
> >
</studierendenantrag-leitung> </studierendenantrag-leitung>
@@ -232,8 +232,8 @@ FROM
SELECT SELECT
pa.lehreinheit_id, pa.lehreinheit_id,
lv.lehrveranstaltung_id, lv.lehrveranstaltung_id,
pa.projektarbeit_id::text AS "projektarbeit_id", pa.projektarbeit_id::text AS "projektarbeit_id",
le.studiensemester_kurzbz, pa.studiensemester_kurzbz,
stg.studiengang_kz, stg.studiengang_kz,
upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz", upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz",
lv.orgform_kurzbz, lv.orgform_kurzbz,
@@ -268,8 +268,7 @@ FROM
FROM FROM
lehre.tbl_projektbetreuer pb lehre.tbl_projektbetreuer pb
JOIN lehre.tbl_projektarbeit pa USING (projektarbeit_id) JOIN lehre.tbl_projektarbeit pa USING (projektarbeit_id)
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung lv ON (pa.lehrveranstaltung_id = lv.lehrveranstaltung_id)
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz) JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz)
JOIN PUBLIC.tbl_person person USING (person_id) JOIN PUBLIC.tbl_person person USING (person_id)
LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id) LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id)
@@ -280,7 +279,7 @@ FROM
/* filter projektbetreuuer */ /* filter projektbetreuuer */
pb.person_id = \'' . $PERSON_ID . '\' pb.person_id = \'' . $PERSON_ID . '\'
/* filter studiensemester */ /* filter studiensemester */
AND le.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\' AND pa.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\'
/* filter active lehrveranstaltungen */ /* filter active lehrveranstaltungen */
AND lv.aktiv = TRUE AND lv.aktiv = TRUE
/* filter active organisationseinheiten */ /* filter active organisationseinheiten */
@@ -242,8 +242,8 @@ FROM
pa.lehreinheit_id, pa.lehreinheit_id,
lv.lehrveranstaltung_id, lv.lehrveranstaltung_id,
lv.bezeichnung AS "lv_bezeichnung", lv.bezeichnung AS "lv_bezeichnung",
(pa.projektarbeit_id::text) AS "projektarbeit_id", (pa.projektarbeit_id::text) AS "projektarbeit_id",
le.studiensemester_kurzbz, pa.studiensemester_kurzbz,
stg.studiengang_kz, stg.studiengang_kz,
upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz", upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz",
lv.orgform_kurzbz, lv.orgform_kurzbz,
@@ -270,7 +270,7 @@ FROM
ELSE (oe.organisationseinheittyp_kurzbz || ELSE (oe.organisationseinheittyp_kurzbz ||
\' \' || oe.bezeichnung) \' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz", END AS "lv_oe_kurzbz",
(nachname || \' \' || vorname) AS "lektor", (nachname || \' \' || vorname) AS "lektor",
TRUNC(pb.stunden, 1) AS "stunden", TRUNC(pb.stunden, 1) AS "stunden",
pb.stundensatz, pb.stundensatz,
TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag", TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag",
@@ -280,8 +280,7 @@ FROM
FROM FROM
lehre.tbl_projektbetreuer pb lehre.tbl_projektbetreuer pb
JOIN lehre.tbl_projektarbeit pa USING (projektarbeit_id) JOIN lehre.tbl_projektarbeit pa USING (projektarbeit_id)
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung lv ON (pa.lehrveranstaltung_id = lv.lehrveranstaltung_id)
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz) JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz)
JOIN PUBLIC.tbl_person person USING (person_id) JOIN PUBLIC.tbl_person person USING (person_id)
LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id) LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id)
@@ -291,7 +290,7 @@ FROM
/* filter organisationseinheit */ /* filter organisationseinheit */
lv.oe_kurzbz IN (\'' . implode('\',\'', $ORGANISATIONSEINHEIT) . '\') lv.oe_kurzbz IN (\'' . implode('\',\'', $ORGANISATIONSEINHEIT) . '\')
/* filter studiensemester */ /* filter studiensemester */
AND le.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\' AND pa.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\'
/* filter active lehrveranstaltungen */ /* filter active lehrveranstaltungen */
AND lv.aktiv = TRUE AND lv.aktiv = TRUE
/* filter active organisationseinheiten */ /* filter active organisationseinheiten */
@@ -272,8 +272,8 @@ FROM
pa.lehreinheit_id, pa.lehreinheit_id,
lv.lehrveranstaltung_id, lv.lehrveranstaltung_id,
lv.bezeichnung AS "lv_bezeichnung", lv.bezeichnung AS "lv_bezeichnung",
pa.projektarbeit_id::text AS "projektarbeit_id", pa.projektarbeit_id::text AS "projektarbeit_id",
le.studiensemester_kurzbz, pa.studiensemester_kurzbz,
stg.studiengang_kz, stg.studiengang_kz,
upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz", upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz",
lv.orgform_kurzbz, lv.orgform_kurzbz,
@@ -310,8 +310,7 @@ FROM
FROM FROM
lehre.tbl_projektbetreuer pb lehre.tbl_projektbetreuer pb
JOIN lehre.tbl_projektarbeit pa USING (projektarbeit_id) JOIN lehre.tbl_projektarbeit pa USING (projektarbeit_id)
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung lv ON (pa.lehrveranstaltung_id = lv.lehrveranstaltung_id)
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz) JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz)
JOIN PUBLIC.tbl_person person USING (person_id) JOIN PUBLIC.tbl_person person USING (person_id)
LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id) LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id)
@@ -321,7 +320,7 @@ FROM
/* filter studiengang */ /* filter studiengang */
lv.studiengang_kz IN ('. implode(',', $STUDIENGANG) . ') lv.studiengang_kz IN ('. implode(',', $STUDIENGANG) . ')
/* filter studiensemester */ /* filter studiensemester */
AND le.studiensemester_kurzbz = \''. $STUDIENSEMESTER. '\' AND pa.studiensemester_kurzbz = \''. $STUDIENSEMESTER. '\'
/* filter active lehrveranstaltungen */ /* filter active lehrveranstaltungen */
AND lv.aktiv = TRUE AND lv.aktiv = TRUE
/* filter ausbildungssemester */ /* filter ausbildungssemester */
@@ -6,7 +6,7 @@ $includesArray = array(
'fontawesome6' => true, 'fontawesome6' => true,
'axios027' => true, 'axios027' => true,
'customJSModules' => array_merge([ 'customJSModules' => array_merge([
'public/js/apps/Cis/Menu.js' 'public/js/apps/Cis.js'
], $customJSModules ?? []), ], $customJSModules ?? []),
'customCSSs' => array_merge([ 'customCSSs' => array_merge([
'public/css/Cis4/Cis.css' 'public/css/Cis4/Cis.css'
@@ -8,7 +8,7 @@ $includesArray = array(
'axios027' => true, 'axios027' => true,
'primevue3' => true, 'primevue3' => true,
'customJSModules' => array_merge([ 'customJSModules' => array_merge([
'public/js/apps/Cis/Menu.js' 'public/js/apps/Cis.js'
], $customJSModules ?? []), ], $customJSModules ?? []),
'customCSSs' => array_merge([ 'customCSSs' => array_merge([
'public/css/Cis4/Cis.css', 'public/css/Cis4/Cis.css',
+3 -17
View File
@@ -36,7 +36,6 @@ require_once('../../../include/notenschluessel.class.php');
require_once('../../../include/Excel/excel.php'); require_once('../../../include/Excel/excel.php');
require_once('../../../include/phrasen.class.php'); require_once('../../../include/phrasen.class.php');
require_once('../../../include/pruefung.class.php'); require_once('../../../include/pruefung.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
$uid = get_uid(); $uid = get_uid();
@@ -45,7 +44,7 @@ $uid = get_uid();
$sprache = getSprache(); $sprache = getSprache();
$p = new phrasen($sprache); $p = new phrasen($sprache);
if (!check_lektor($uid)) if(!check_lektor($uid))
die('Sie haben keine Berechtigung fuer diese Seite'); die('Sie haben keine Berechtigung fuer diese Seite');
if (!$db = new basis_db()) if (!$db = new basis_db())
@@ -91,21 +90,6 @@ if(isset($_GET['lehreinheit_id']))
else else
$lehreinheit_id = ''; $lehreinheit_id = '';
// Permissions
$berechtigung = new benutzerberechtigung();
$berechtigung->getBerechtigungen($uid);
// LV load
$lvobj = new lehrveranstaltung($lvid);
// Check permissions
if (!$berechtigung->isBerechtigt('admin')
&& !$berechtigung->isBerechtigt('assistenz')
&& !$berechtigung->isBerechtigt('lehre', $lvobj->oe_kurzbz, 's')
&& !check_lektor_lehrveranstaltung($uid, $lvid, $stsem)
)
die('Sie haben keine Berechtigung fuer diese Seite');
/* /*
* Create Excel File * Create Excel File
*/ */
@@ -159,6 +143,8 @@ if (!$berechtigung->isBerechtigt('admin')
// let's merge // let's merge
$format_title->setAlign('merge'); $format_title->setAlign('merge');
$lvobj = new lehrveranstaltung($lvid);
$worksheet->write(0,0,$p->t('anwesenheitsliste/notenliste')." ".($sprache=='English'?$lvobj->bezeichnung_english:$lvobj->bezeichnung),$format_bold); $worksheet->write(0,0,$p->t('anwesenheitsliste/notenliste')." ".($sprache=='English'?$lvobj->bezeichnung_english:$lvobj->bezeichnung),$format_bold);
$stg_obj = new studiengang($stg); $stg_obj = new studiengang($stg);
+3 -4
View File
@@ -345,11 +345,10 @@ $qry = "SELECT
WHERE uid=student_uid) as student, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.semester, WHERE uid=student_uid) as student, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.semester,
tbl_studiengang.email, tbl_betreuerart.beschreibung AS beutreuerart_beschreibung, tbl_projektbetreuer.stunden tbl_studiengang.email, tbl_betreuerart.beschreibung AS beutreuerart_beschreibung, tbl_projektbetreuer.stunden
FROM FROM
lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, public.tbl_studiengang, lehre.tbl_betreuerart lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, public.tbl_studiengang, lehre.tbl_betreuerart
WHERE WHERE
tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id AND tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_projektarbeit.lehrveranstaltung_id AND
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND
tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz AND tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz AND
tbl_projektbetreuer.betreuerart_kurzbz=tbl_betreuerart.betreuerart_kurzbz AND tbl_projektbetreuer.betreuerart_kurzbz=tbl_betreuerart.betreuerart_kurzbz AND
-2
View File
@@ -143,7 +143,6 @@ if($aktion!='zip')
JOIN campus.tbl_paabgabe USING(projektarbeit_id) JOIN campus.tbl_paabgabe USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid) LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id) LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz) LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom') WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
@@ -214,7 +213,6 @@ if(isset($_REQUEST['ok']) || (isset($_REQUEST['aktion']) && $_REQUEST['aktion']=
JOIN campus.tbl_paabgabe USING(projektarbeit_id) JOIN campus.tbl_paabgabe USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid) LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id) LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz) LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom') WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
@@ -87,7 +87,6 @@ cellSeparator (default value: "|")
JOIN campus.tbl_paabgabe USING(projektarbeit_id) JOIN campus.tbl_paabgabe USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid) LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id) LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz) LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom') WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
-18
View File
@@ -70,18 +70,6 @@
} }
} }
}, },
{
"type": "package",
"package": {
"name": "drag-drop-touch-js/dragdroptouch",
"version": "2.0.3",
"source": {
"url": "https://github.com/drag-drop-touch-js/dragdroptouch.git",
"type": "git",
"reference": "master"
}
}
},
{ {
"type": "package", "type": "package",
"package": { "package": {
@@ -464,8 +452,6 @@
"easyrdf/easyrdf": "0.9.*", "easyrdf/easyrdf": "0.9.*",
"drag-drop-touch-js/dragdroptouch": "*",
"fgelinas/timepicker": "0.3.3", "fgelinas/timepicker": "0.3.3",
"fortawesome/font-awesome4": "4.7.*", "fortawesome/font-awesome4": "4.7.*",
"fortawesome/font-awesome6": "6.1.*", "fortawesome/font-awesome6": "6.1.*",
@@ -533,9 +519,5 @@
"phpmetrics/phpmetrics": "2.*", "phpmetrics/phpmetrics": "2.*",
"sebastian/phpcpd": "3.*", "sebastian/phpcpd": "3.*",
"phpunit/phpunit": "^6" "phpunit/phpunit": "^6"
},
"scripts": {
"post-install-cmd": "@symlink_vendor_to_public",
"symlink_vendor_to_public": "ln -sfn ../vendor ./public/"
} }
} }
Generated
+1 -11
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "869cbc35bd1ba90ab90934fcb41b0f51", "content-hash": "f4f0af4586f46f97d8b6092c1ac0fb3a",
"packages": [ "packages": [
{ {
"name": "afarkas/html5shiv", "name": "afarkas/html5shiv",
@@ -804,16 +804,6 @@
"abandoned": true, "abandoned": true,
"time": "2018-03-09T06:07:41+00:00" "time": "2018-03-09T06:07:41+00:00"
}, },
{
"name": "drag-drop-touch-js/dragdroptouch",
"version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/drag-drop-touch-js/dragdroptouch.git",
"reference": "master"
},
"type": "library"
},
{ {
"name": "easyrdf/easyrdf", "name": "easyrdf/easyrdf",
"version": "0.9.1", "version": "0.9.1",
-4
View File
@@ -373,8 +373,4 @@ define('TESTTOOL_EXTERNE_UEBERWACHUNG_ALLOWED', false);
//enable tags in StudVW //enable tags in StudVW
define('STV_TAGS_ENABLED', false); define('STV_TAGS_ENABLED', false);
//student accounts grace period
define('STUDENTS_KEEP_PERMISSIONS_AFTER_USER_INACTIVE_PERIOD', '0 days');
define('STUDENTS_KEEP_PERMISSIONS_AFTER_USER_INACTIVE_ROLES', serialize(array('NO_DEFINED_ROLE')));
?> ?>
+1 -2
View File
@@ -122,8 +122,7 @@ foreach ($project_arr as $project)
// * get studiensemester // * get studiensemester
$pa = new Projektarbeit($pa_id); $pa = new Projektarbeit($pa_id);
$le = new Lehreinheit($pa->lehreinheit_id); $studiensemester_kurzbz = $pa->studiensemester_kurzbz;
$studiensemester_kurzbz = $le->studiensemester_kurzbz;
// * get begin- and end date of studiensemester // * get begin- and end date of studiensemester
$ss = new Studiensemester($studiensemester_kurzbz); $ss = new Studiensemester($studiensemester_kurzbz);
+2 -4
View File
@@ -107,16 +107,14 @@ SELECT
FROM FROM
lehre.tbl_projektarbeit, lehre.tbl_projektarbeit,
lehre.tbl_lehrveranstaltung, lehre.tbl_lehrveranstaltung,
lehre.tbl_lehreinheit,
lehre.tbl_projektbetreuer, lehre.tbl_projektbetreuer,
public.tbl_person public.tbl_person
WHERE WHERE
tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id AND tbl_projektarbeit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_projektbetreuer.person_id=tbl_person.person_id AND tbl_projektbetreuer.person_id=tbl_person.person_id AND
tbl_projektbetreuer.stunden<>0 AND tbl_projektbetreuer.stunden<>0 AND
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsem)." tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($stsem)."
GROUP BY studiengang_kz,geschlecht"; GROUP BY studiengang_kz,geschlecht";
if(!$result = $db->db_query($qry)) if(!$result = $db->db_query($qry))
@@ -79,7 +79,7 @@ $db = new basis_db();
//Daten holen //Daten holen
$qry = "SELECT * FROM ( $qry = "SELECT * FROM (
SELECT SELECT
tbl_lehreinheit.*, tbl_person.vorname, tbl_person.nachname, tbl_person.titelpre, tbl_person.vorname, tbl_person.nachname, tbl_person.titelpre,
tbl_mitarbeiter.personalnummer, tbl_person.person_id, tbl_mitarbeiter.mitarbeiter_uid, tbl_mitarbeiter.personalnummer, tbl_person.person_id, tbl_mitarbeiter.mitarbeiter_uid,
tbl_mitarbeiter.fixangestellt, tbl_mitarbeiter.fixangestellt,
tbl_lehreinheitmitarbeiter.stundensatz as stundensatz, tbl_lehreinheitmitarbeiter.stundensatz as stundensatz,
@@ -103,21 +103,20 @@ if($semester!='')
//Projektsbetreuungen //Projektsbetreuungen
$qry.= " UNION $qry.= " UNION
SELECT SELECT
tbl_lehreinheit.*, tbl_person.vorname, tbl_person.nachname, tbl_person.titelpre, tbl_person.vorname, tbl_person.nachname, tbl_person.titelpre,
tbl_mitarbeiter.personalnummer, tbl_person.person_id, tbl_mitarbeiter.mitarbeiter_uid, tbl_mitarbeiter.personalnummer, tbl_person.person_id, tbl_mitarbeiter.mitarbeiter_uid,
tbl_mitarbeiter.fixangestellt, tbl_mitarbeiter.fixangestellt,
0 as stundensatz, 0 as stundensatz,
0 as semesterstunden 0 as semesterstunden
FROM FROM
lehre.tbl_lehreinheit, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer,
public.tbl_mitarbeiter, public.tbl_benutzer, lehre.tbl_lehrveranstaltung, public.tbl_person public.tbl_mitarbeiter, public.tbl_benutzer, lehre.tbl_lehrveranstaltung, public.tbl_person
WHERE WHERE
tbl_mitarbeiter.mitarbeiter_uid = tbl_benutzer.uid AND tbl_mitarbeiter.mitarbeiter_uid = tbl_benutzer.uid AND
tbl_benutzer.person_id = tbl_projektbetreuer.person_id AND tbl_benutzer.person_id = tbl_projektbetreuer.person_id AND
tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id AND tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id AND
tbl_projektarbeit.lehreinheit_id = tbl_lehreinheit.lehreinheit_id AND tbl_projektarbeit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehreinheit.studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." AND tbl_projektarbeit.studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." AND
tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehrveranstaltung.studiengang_kz = ".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND tbl_lehrveranstaltung.studiengang_kz = ".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
tbl_person.person_id = tbl_projektbetreuer.person_id"; tbl_person.person_id = tbl_projektbetreuer.person_id";
if($semester!='') if($semester!='')
@@ -99,10 +99,9 @@ $qry_stg = "SELECT distinct studiengang_kz, typ, kurzbz
studiengang_kz studiengang_kz
FROM FROM
lehre.tbl_projektbetreuer JOIN lehre.tbl_projektarbeit ON tbl_projektbetreuer.projektarbeit_id=tbl_projektarbeit.projektarbeit_id lehre.tbl_projektbetreuer JOIN lehre.tbl_projektarbeit ON tbl_projektbetreuer.projektarbeit_id=tbl_projektarbeit.projektarbeit_id
JOIN lehre.tbl_lehreinheit ON tbl_lehreinheit.lehreinheit_id = tbl_projektarbeit.lehreinheit_id JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_projektarbeit.lehrveranstaltung_id
JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id
WHERE WHERE
lehre.tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." lehre.tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
) as foo ) as foo
JOIN public.tbl_studiengang USING (studiengang_kz) JOIN public.tbl_studiengang USING (studiengang_kz)
"; ";
@@ -506,10 +505,9 @@ if ($result_stg = $db->db_query($qry_stg))
JOIN public.tbl_benutzer ON tbl_benutzer.person_id=tbl_person.person_id JOIN public.tbl_benutzer ON tbl_benutzer.person_id=tbl_person.person_id
JOIN public.tbl_mitarbeiter ON tbl_mitarbeiter.mitarbeiter_uid=tbl_benutzer.uid JOIN public.tbl_mitarbeiter ON tbl_mitarbeiter.mitarbeiter_uid=tbl_benutzer.uid
JOIN lehre.tbl_projektarbeit ON tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id JOIN lehre.tbl_projektarbeit ON tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id
JOIN lehre.tbl_lehreinheit ON tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_projektarbeit.lehrveranstaltung_id
JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id
WHERE WHERE
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
NOT EXISTS (SELECT NOT EXISTS (SELECT
mitarbeiter_uid mitarbeiter_uid
@@ -589,12 +587,11 @@ if ($result_stg = $db->db_query($qry_stg))
FROM FROM
lehre.tbl_projektbetreuer JOIN public.tbl_benutzer ON tbl_projektbetreuer.person_id = tbl_benutzer.person_id lehre.tbl_projektbetreuer JOIN public.tbl_benutzer ON tbl_projektbetreuer.person_id = tbl_benutzer.person_id
JOIN lehre.tbl_projektarbeit ON tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id JOIN lehre.tbl_projektarbeit ON tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id
JOIN lehre.tbl_lehreinheit ON tbl_lehreinheit.lehreinheit_id = tbl_projektarbeit.lehreinheit_id JOIN lehre.tbl_lehrveranstaltung ON tbl_projektarbeit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
JOIN lehre.tbl_lehrveranstaltung ON tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
JOIN campus.vw_student ON vw_student.uid = student_uid JOIN campus.vw_student ON vw_student.uid = student_uid
WHERE WHERE
tbl_benutzer.uid = ".$db->db_add_param($uid)." tbl_benutzer.uid = ".$db->db_add_param($uid)."
AND tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
if ($result = $db->db_query($qry)) if ($result = $db->db_query($qry))
@@ -825,15 +822,14 @@ if ($result_stg = $db->db_query($qry_stg))
$worksheet =& $workbook->addWorksheet('Betreuerstunden'); $worksheet =& $workbook->addWorksheet('Betreuerstunden');
$worksheet->setInputEncoding('utf-8'); $worksheet->setInputEncoding('utf-8');
$qry = "SELECT $qry = "SELECT
studiensemester_kurzbz, nachname, vorname, sum(stunden) AS stunden, titelpre, lehre.tbl_projektarbeit.studiensemester_kurzbz, nachname, vorname, sum(stunden) AS stunden, titelpre,
sum(tbl_projektbetreuer.stundensatz*tbl_projektbetreuer.stunden)::numeric(8, 2) AS euro, person_id sum(tbl_projektbetreuer.stundensatz*tbl_projektbetreuer.stunden)::numeric(8, 2) AS euro, person_id
FROM FROM
public.tbl_person JOIN lehre.tbl_projektbetreuer USING (person_id) public.tbl_person JOIN lehre.tbl_projektbetreuer USING (person_id)
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id) JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE WHERE
studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." AND lehre.tbl_projektarbeit.studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." AND
stunden > 0"; stunden > 0";
if (count($stg_arr) > 0) if (count($stg_arr) > 0)
@@ -841,7 +837,7 @@ if ($result_stg = $db->db_query($qry_stg))
$qry .= " $qry .= "
GROUP BY GROUP BY
studiensemester_kurzbz, person_id, nachname, vorname, titelpre lehre.tbl_projektarbeit.studiensemester_kurzbz, person_id, nachname, vorname, titelpre
ORDER BY ORDER BY
nachname, vorname nachname, vorname
"; ";
+10 -13
View File
@@ -298,15 +298,14 @@ if($studiengang_kz!='')
$qry = "SELECT $qry = "SELECT
* *
FROM FROM
lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_lehrveranstaltung,
lehre.tbl_projektbetreuer, public.tbl_person lehre.tbl_projektbetreuer, public.tbl_person
WHERE WHERE
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND tbl_projektarbeit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
tbl_person.person_id=tbl_projektbetreuer.person_id AND tbl_person.person_id=tbl_projektbetreuer.person_id AND
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
"; ";
if($semester!='') if($semester!='')
@@ -317,14 +316,13 @@ elseif($mitarbeiter_uid!='')
$qry = "SELECT $qry = "SELECT
* *
FROM FROM
lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektbetreuer, public.tbl_person lehre.tbl_projektarbeit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektbetreuer, public.tbl_person
WHERE WHERE
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND tbl_projektarbeit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
tbl_person.person_id=tbl_projektbetreuer.person_id AND tbl_person.person_id=tbl_projektbetreuer.person_id AND
tbl_projektbetreuer.person_id=".$db->db_add_param($mitarbeiter->person_id, FHC_INTEGER)." AND tbl_projektbetreuer.person_id=".$db->db_add_param($mitarbeiter->person_id, FHC_INTEGER)." AND
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
"; ";
} }
elseif($oe_kurzbz!='') elseif($oe_kurzbz!='')
@@ -332,15 +330,14 @@ elseif($oe_kurzbz!='')
$qry = "SELECT $qry = "SELECT
* *
FROM FROM
lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektbetreuer, lehre.tbl_projektarbeit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektbetreuer,
public.tbl_person, lehre.tbl_lehrveranstaltung as lehrfach public.tbl_person, lehre.tbl_lehrveranstaltung as lehrfach
WHERE WHERE
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND tbl_projektarbeit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND tbl_projektarbeit.lehrveranstaltung_id=lehrfach.lehrveranstaltung_id AND
tbl_person.person_id=tbl_projektbetreuer.person_id AND tbl_person.person_id=tbl_projektbetreuer.person_id AND
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND tbl_projektarbeit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
lehrfach.oe_kurzbz=".$db->db_add_param($oe_kurzbz)." lehrfach.oe_kurzbz=".$db->db_add_param($oe_kurzbz)."
"; ";
} }
+2 -4
View File
@@ -490,15 +490,13 @@ if($result = $db->db_query($qry))
tbl_projektbetreuer.person_id, tbl_projektbetreuer.person_id,
tbl_lehrveranstaltung.orgform_kurzbz tbl_lehrveranstaltung.orgform_kurzbz
FROM lehre.tbl_projektarbeit, FROM lehre.tbl_projektarbeit,
lehre.tbl_lehreinheit,
lehre.tbl_lehrveranstaltung, lehre.tbl_lehrveranstaltung,
lehre.tbl_projektbetreuer, lehre.tbl_projektbetreuer,
PUBLIC.tbl_person PUBLIC.tbl_person
WHERE tbl_projektarbeit.lehreinheit_id = tbl_lehreinheit.lehreinheit_id WHERE tbl_projektarbeit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
AND tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
AND tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id AND tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id
AND tbl_person.person_id = tbl_projektbetreuer.person_id AND tbl_person.person_id = tbl_projektbetreuer.person_id
AND tbl_lehreinheit.studiensemester_kurzbz = ".$db->db_add_param($studiensemester_kurzbz); AND tbl_projektarbeit.studiensemester_kurzbz = ".$db->db_add_param($studiensemester_kurzbz);
if($uid!=='') if($uid!=='')
{ {
+46 -61
View File
@@ -96,36 +96,36 @@ if ($uids == '')
die('Es befinden sich keine Studierende in diesem Semester'); die('Es befinden sich keine Studierende in diesem Semester');
$qry = "SELECT $qry = "SELECT
lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects
FROM FROM
lehre.tbl_lehrveranstaltung lehre.tbl_lehrveranstaltung
WHERE WHERE
lehrveranstaltung_id IN ( lehrveranstaltung_id IN
SELECT (
DISTINCT lehrveranstaltung_id SELECT
FROM distinct lehrveranstaltung_id
campus.vw_student_lehrveranstaltung FROM
JOIN public.tbl_studentlehrverband ON(student_uid = uid) campus.vw_student_lehrveranstaltung, public.tbl_studentlehrverband
WHERE WHERE
tbl_studentlehrverband.studiengang_kz = ".$db->db_add_param($studiengang_kz, FHC_INTEGER)." tbl_studentlehrverband.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
AND tbl_studentlehrverband.semester = ".$db->db_add_param($semester, FHC_INTEGER)." tbl_studentlehrverband.semester=".$db->db_add_param($semester, FHC_INTEGER)." AND
AND vw_student_lehrveranstaltung.studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
AND vw_student_lehrveranstaltung.studiensemester_kurzbz = tbl_studentlehrverband.studiensemester_kurzbz uid=student_uid AND
vw_student_lehrveranstaltung.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz
) )
AND studiengang_kz != 0 AND studiengang_kz<>0
AND zeugnis AND zeugnis
UNION UNION
SELECT SELECT
lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects
FROM FROM
lehre.tbl_lehrveranstaltung lehre.tbl_lehrveranstaltung JOIN lehre.tbl_zeugnisnote USING(lehrveranstaltung_id)
JOIN lehre.tbl_zeugnisnote USING(lehrveranstaltung_id) WHERE
WHERE tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
tbl_lehrveranstaltung.studiengang_kz = ".$db->db_add_param($studiengang_kz, FHC_INTEGER)." tbl_zeugnisnote.student_uid in($uids) AND
AND tbl_zeugnisnote.student_uid IN ($uids) tbl_zeugnisnote.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
AND tbl_zeugnisnote.studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." zeugnis
AND zeugnis ORDER BY bezeichnung";
ORDER BY bezeichnung";
if (!$result_lva = $db->db_query($qry)) if (!$result_lva = $db->db_query($qry))
die('Fehler beim Ermitteln der Lehrveranstaltungen'); die('Fehler beim Ermitteln der Lehrveranstaltungen');
@@ -338,10 +338,6 @@ if ($typ == 'xls')
} }
$anzahl_lvspalten = $spalte - 2; $anzahl_lvspalten = $spalte - 2;
$worksheet->write($zeile, ++$spalte, 'ECTS Summe zugeteilt', $format_bold);
$maxlength[$spalte] = 20;
$worksheet->write($zeile, ++$spalte, 'ECTS Summe gewichtet', $format_bold);
$maxlength[$spalte] = 20;
$worksheet->write($zeile, ++$spalte, 'Notendurchschnitt', $format_bold); $worksheet->write($zeile, ++$spalte, 'Notendurchschnitt', $format_bold);
$maxlength[$spalte] = 15; $maxlength[$spalte] = 15;
$worksheet->write($zeile, ++$spalte, "Gewichteter\nNotendurchschnitt", $format_bold_wrap); $worksheet->write($zeile, ++$spalte, "Gewichteter\nNotendurchschnitt", $format_bold_wrap);
@@ -376,12 +372,9 @@ if ($typ == 'xls')
$worksheet->write($zeile, ++$spalte, $row_student->gruppe, $format_bold_left); $worksheet->write($zeile, ++$spalte, $row_student->gruppe, $format_bold_left);
$worksheet->write($zeile, ++$spalte, $row_student->matrikelnr, $format_bold); $worksheet->write($zeile, ++$spalte, $row_student->matrikelnr, $format_bold);
// Alle Zeugnisnoten des Studierenden holen //Alle Zeugnisnoten des Studierenden holen
$noten = array(); $noten = array();
$qry = "SELECT lehrveranstaltung_id, note $qry = "SELECT * FROM lehre.tbl_zeugnisnote WHERE student_uid=".$db->db_add_param($row_student->uid)." AND studiensemester_kurzbz=".$db->db_add_param($semester_aktuell);
FROM lehre.tbl_zeugnisnote
WHERE student_uid = ".$db->db_add_param($row_student->uid)."
AND studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell);
if ($result = $db->db_query($qry)) if ($result = $db->db_query($qry))
while ($row = $db->db_fetch_object($result)) while ($row = $db->db_fetch_object($result))
$noten[$row->lehrveranstaltung_id] = $row->note; $noten[$row->lehrveranstaltung_id] = $row->note;
@@ -389,16 +382,15 @@ if ($typ == 'xls')
//Zu jeder Lehrveranstaltungsnote Prüfungstyp (Anzahl der Antritte) holen //Zu jeder Lehrveranstaltungsnote Prüfungstyp (Anzahl der Antritte) holen
$pruefungstypen = array(); $pruefungstypen = array();
$qry = "SELECT tbl_lehrveranstaltung.lehrveranstaltung_id, pruefungstyp_kurzbz, sort, datum $qry = "SELECT tbl_lehrveranstaltung.lehrveranstaltung_id, pruefungstyp_kurzbz, sort, datum
FROM FROM
lehre.tbl_pruefung lehre.tbl_pruefung
JOIN JOIN
lehre.tbl_lehreinheit USING(lehreinheit_id) lehre.tbl_lehreinheit using(lehreinheit_id)
JOIN JOIN
lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
WHERE WHERE
student_uid = ".$db->db_add_param($row_student->uid)." student_uid=".$db->db_add_param($row_student->uid)." AND studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
AND studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." ORDER BY lehrveranstaltung_id, sort, datum";
ORDER BY lehrveranstaltung_id, sort, datum";
if ($result = $db->db_query($qry)) if ($result = $db->db_query($qry))
{ {
while ($row = $db->db_fetch_object($result)) while ($row = $db->db_fetch_object($result))
@@ -407,14 +399,15 @@ if ($typ == 'xls')
} }
} }
// Alle LVs holen zu denen der Studierende zugeteilt ist //Alle LVs holen zu denen der Studierende zugeteilt ist
$zugeteilte_lvs = array(); $zugeteilte_lvs = array();
$qry = "SELECT DISTINCT lehrveranstaltung_id $qry = "SELECT distinct lehrveranstaltung_id
FROM FROM
campus.vw_student_lehrveranstaltung campus.vw_student_lehrveranstaltung
WHERE WHERE
uid = ".$db->db_add_param($row_student->uid)." uid=".$db->db_add_param($row_student->uid)." AND
AND studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell); studiensemester_kurzbz=".$db->db_add_param($semester_aktuell);
if ($result = $db->db_query($qry)) if ($result = $db->db_query($qry))
while ($row = $db->db_fetch_object($result)) while ($row = $db->db_fetch_object($result))
$zugeteilte_lvs[] = $row->lehrveranstaltung_id; $zugeteilte_lvs[] = $row->lehrveranstaltung_id;
@@ -423,20 +416,17 @@ if ($typ == 'xls')
$summe = 0; $summe = 0;
$rowcount = 0; $rowcount = 0;
$summeects = 0; $summeects = 0;
$total_ects = 0;
$gewichtetenote = 0; $gewichtetenote = 0;
while ($rowcount < $db->db_num_rows($result_lva)) while ($rowcount < $db->db_num_rows($result_lva))
{ {
$row_lva = $db->db_fetch_object($result_lva, $rowcount); $row_lva = $db->db_fetch_object($result_lva, $rowcount);
$rowcount++; $rowcount++;
//wenn es eine Note gibt //wenn es eine Note gibt
if (isset($noten[$row_lva->lehrveranstaltung_id])) if (isset($noten[$row_lva->lehrveranstaltung_id]))
{ {
$note = $noten[$row_lva->lehrveranstaltung_id]; $note = $noten[$row_lva->lehrveranstaltung_id];
$format = 0; $format = 0;
$total_ects += $row_lva->ects;
//wenn für die LV der Studierende eine Nachprüfung hat (z.B. 2 Termin, kommissionelle...) //wenn für die LV der Studierende eine Nachprüfung hat (z.B. 2 Termin, kommissionelle...)
if (isset($pruefungstypen[$row_lva->lehrveranstaltung_id])) if (isset($pruefungstypen[$row_lva->lehrveranstaltung_id]))
@@ -482,7 +472,6 @@ if ($typ == 'xls')
//Keine Note fuer diese LV vorhanden //Keine Note fuer diese LV vorhanden
if (in_array($row_lva->lehrveranstaltung_id, $zugeteilte_lvs)) if (in_array($row_lva->lehrveranstaltung_id, $zugeteilte_lvs))
{ {
$total_ects += $row_lva->ects;
$worksheet->write($zeile, ++$spalte, '', $format_colored_nichteingetragen); $worksheet->write($zeile, ++$spalte, '', $format_colored_nichteingetragen);
} }
else else
@@ -500,8 +489,6 @@ if ($typ == 'xls')
if ($summeects != 0) if ($summeects != 0)
$gewichtetenote /= $summeects; $gewichtetenote /= $summeects;
$worksheet->write($zeile, ++$spalte, sprintf("%.2f", $total_ects), $format_number);
$worksheet->write($zeile, ++$spalte, sprintf("%.2f", $summeects), $format_number);
$worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number); $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number);
$worksheet->write($zeile, ++$spalte, sprintf("%.2f", $gewichtetenote), $format_number); $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $gewichtetenote), $format_number);
if ($gewichtetenote != 0) if ($gewichtetenote != 0)
@@ -542,8 +529,6 @@ if ($typ == 'xls')
$schnitt = $summe_schnitt / $anzahl_schnitt; $schnitt = $summe_schnitt / $anzahl_schnitt;
else else
$schnitt = 0; $schnitt = 0;
$worksheet->write($zeile, ++$spalte, '-', $format_bold_center);
$worksheet->write($zeile, ++$spalte, '-', $format_bold_center);
$worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number); $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number);
if ($anzahlgewichtet != 0) if ($anzahlgewichtet != 0)
$summegewichtet = $summegewichtet / $anzahlgewichtet; $summegewichtet = $summegewichtet / $anzahlgewichtet;
@@ -84,15 +84,14 @@ $qry = "SELECT
ende, CASE WHEN freigegeben THEN 'Ja' ELSE 'Nein' END, gesperrtbis, themenbereich, ende, CASE WHEN freigegeben THEN 'Ja' ELSE 'Nein' END, gesperrtbis, themenbereich,
tbl_projektarbeit.anmerkung, projektarbeit_id tbl_projektarbeit.anmerkung, projektarbeit_id
FROM FROM
lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_lehrveranstaltung,
public.tbl_benutzer, public.tbl_person, lehre.tbl_projekttyp public.tbl_benutzer, public.tbl_person, lehre.tbl_projekttyp
WHERE WHERE
tbl_projektarbeit.lehreinheit_id = tbl_lehreinheit.lehreinheit_id AND tbl_projektarbeit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id AND
tbl_projektarbeit.student_uid = tbl_benutzer.uid AND tbl_projektarbeit.student_uid = tbl_benutzer.uid AND
tbl_benutzer.person_id = tbl_person.person_id AND tbl_benutzer.person_id = tbl_person.person_id AND
tbl_projektarbeit.projekttyp_kurzbz = tbl_projekttyp.projekttyp_kurzbz AND tbl_projektarbeit.projekttyp_kurzbz = tbl_projekttyp.projekttyp_kurzbz AND
tbl_lehreinheit.studiensemester_kurzbz = ".$db->db_add_param($studiensemester_kurzbz)." AND tbl_projektarbeit.studiensemester_kurzbz = ".$db->db_add_param($studiensemester_kurzbz)." AND
tbl_lehrveranstaltung.studiengang_kz = ".$db->db_add_param($studiengang_kz)." AND tbl_lehrveranstaltung.studiengang_kz = ".$db->db_add_param($studiengang_kz)." AND
tbl_projektarbeit.projekttyp_kurzbz IN ('Bachelor','Diplom','Projekt')"; tbl_projektarbeit.projekttyp_kurzbz IN ('Bachelor','Diplom','Projekt')";
+2
View File
@@ -4374,6 +4374,8 @@ if(!$error)
$projektarbeit->titel = $_POST['titel']; $projektarbeit->titel = $_POST['titel'];
$projektarbeit->titel_english = $_POST['titel_english']; $projektarbeit->titel_english = $_POST['titel_english'];
$projektarbeit->lehreinheit_id = $_POST['lehreinheit_id']; $projektarbeit->lehreinheit_id = $_POST['lehreinheit_id'];
$projektarbeit->lehrveranstaltung_id = $_POST['lehrveranstaltung_id'];
$projektarbeit->studiensemester_kurzbz = $_POST['studiensemester_kurzbz'];
$projektarbeit->student_uid = $_POST['student_uid']; $projektarbeit->student_uid = $_POST['student_uid'];
$projektarbeit->firma_id = $_POST['firma_id']; $projektarbeit->firma_id = $_POST['firma_id'];
$projektarbeit->note = $_POST['note']; $projektarbeit->note = $_POST['note'];
+23 -9
View File
@@ -239,6 +239,7 @@ function StudentProjektarbeitDetailDisableFields(val)
document.getElementById('student-projektarbeit-button-speichern').disabled=val; document.getElementById('student-projektarbeit-button-speichern').disabled=val;
document.getElementById('student-projektarbeit-menulist-projekttyp').disabled=val; document.getElementById('student-projektarbeit-menulist-projekttyp').disabled=val;
document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').disabled=val; document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').disabled=val;
document.getElementById('student-projektarbeit-menulist-studiensemester').disabled=val;
document.getElementById('student-projektarbeit-menulist-lehreinheit').disabled=val; document.getElementById('student-projektarbeit-menulist-lehreinheit').disabled=val;
document.getElementById('student-projektarbeit-menulist-firma').disabled=val; document.getElementById('student-projektarbeit-menulist-firma').disabled=val;
document.getElementById('student-projektarbeit-menulist-note').disabled=val; document.getElementById('student-projektarbeit-menulist-note').disabled=val;
@@ -290,6 +291,7 @@ function StudentProjektarbeitResetFields()
document.getElementById('student-projektarbeit-menulist-firma').value=''; document.getElementById('student-projektarbeit-menulist-firma').value='';
document.getElementById('student-projektarbeit-menulist-note').value=''; document.getElementById('student-projektarbeit-menulist-note').value='';
document.getElementById('student-projektarbeit-checkbox-final').checked=true; document.getElementById('student-projektarbeit-checkbox-final').checked=true;
document.getElementById('student-projektarbeit-menulist-studiensemester').value=getStudiensemester();
var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value; var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
@@ -379,6 +381,7 @@ function StudentProjektarbeitAuswahl()
lehreinheit_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_id" )); lehreinheit_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_id" ));
lehrveranstaltung_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrveranstaltung_id" )); lehrveranstaltung_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrveranstaltung_id" ));
lehreinheit_stsem = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_stsem" )); lehreinheit_stsem = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_stsem" ));
projektarbeit_stsem = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#projektarbeit_stsem" ));
student_uid = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#student_uid" )); student_uid = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#student_uid" ));
firma_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#firma_id" )); firma_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#firma_id" ));
note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" )); note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" ));
@@ -399,7 +402,7 @@ function StudentProjektarbeitAuswahl()
//Lehrveranstaltung DropDown laden //Lehrveranstaltung DropDown laden
var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung'); var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung');
url='<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?uid='+student_uid+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp(); url='<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?uid='+student_uid+"&stg_kz="+stg_kz+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp();
//Alte DS entfernen //Alte DS entfernen
var oldDatasources = LvDropDown.database.GetDataSources(); var oldDatasources = LvDropDown.database.GetDataSources();
@@ -420,7 +423,7 @@ function StudentProjektarbeitAuswahl()
// Lehreinheit Drop Down laden // Lehreinheit Drop Down laden
var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit'); var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit');
url='<?php echo APP_ROOT;?>rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+lehreinheit_stsem+"&"+gettimestamp(); url='<?php echo APP_ROOT;?>rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+projektarbeit_stsem+"&"+gettimestamp();
//Alte DS entfernen //Alte DS entfernen
var oldDatasources = LeDropDown.database.GetDataSources(); var oldDatasources = LeDropDown.database.GetDataSources();
@@ -442,6 +445,7 @@ function StudentProjektarbeitAuswahl()
//Werte setzen //Werte setzen
document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value=projektarbeit_id; document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value=projektarbeit_id;
document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value=lehreinheit_stsem; document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value=lehreinheit_stsem;
document.getElementById('student-projektarbeit-menulist-studiensemester').value=projektarbeit_stsem;
document.getElementById('student-projektarbeit-menulist-projekttyp').value=projekttyp_kurzbz; document.getElementById('student-projektarbeit-menulist-projekttyp').value=projekttyp_kurzbz;
document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value=lehrveranstaltung_id; document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value=lehrveranstaltung_id;
document.getElementById('student-projektarbeit-menulist-lehreinheit').value=lehreinheit_id; document.getElementById('student-projektarbeit-menulist-lehreinheit').value=lehreinheit_id;
@@ -539,6 +543,7 @@ function StudentProjektarbeitSpeichern()
projektarbeit_id = document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value; projektarbeit_id = document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value;
projekttyp_kurzbz = document.getElementById('student-projektarbeit-menulist-projekttyp').value; projekttyp_kurzbz = document.getElementById('student-projektarbeit-menulist-projekttyp').value;
lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value; lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value;
studiensemester_kurzbz = document.getElementById('student-projektarbeit-menulist-studiensemester').value;
lehreinheit_id = document.getElementById('student-projektarbeit-menulist-lehreinheit').value; lehreinheit_id = document.getElementById('student-projektarbeit-menulist-lehreinheit').value;
titel = document.getElementById('student-projektarbeit-textbox-titel').value; titel = document.getElementById('student-projektarbeit-textbox-titel').value;
titel_english = document.getElementById('student-projektarbeit-textbox-titel_english').value; titel_english = document.getElementById('student-projektarbeit-textbox-titel_english').value;
@@ -585,9 +590,15 @@ function StudentProjektarbeitSpeichern()
return false; return false;
} }
if(lehreinheit_id=='') if(lehrveranstaltung_id=='')
{ {
alert('Bitte einen LV-Teil auswaehlen'); alert('Bitte eine Lehrveranstaltung auswaehlen');
return false;
}
if(studiensemester_kurzbz=='')
{
alert('Bitte ein Studiensemester auswaehlen');
return false; return false;
} }
@@ -603,6 +614,8 @@ function StudentProjektarbeitSpeichern()
req.add('projekttyp_kurzbz', projekttyp_kurzbz ); req.add('projekttyp_kurzbz', projekttyp_kurzbz );
req.add('titel', titel); req.add('titel', titel);
req.add('titel_english', titel_english); req.add('titel_english', titel_english);
req.add('lehrveranstaltung_id', lehrveranstaltung_id);
req.add('studiensemester_kurzbz', studiensemester_kurzbz);
req.add('lehreinheit_id', lehreinheit_id); req.add('lehreinheit_id', lehreinheit_id);
req.add('student_uid', student_uid); req.add('student_uid', student_uid);
req.add('firma_id', firma_id); req.add('firma_id', firma_id);
@@ -738,7 +751,7 @@ function StudentProjektarbeitLVAChange()
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value; lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value;
studiensemester_kurzbz = getStudiensemester(); studiensemester_kurzbz = document.getElementById('student-projektarbeit-menulist-studiensemester').value;
// Lehreinheit Drop Down laden // Lehreinheit Drop Down laden
var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit'); var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit');
@@ -897,8 +910,8 @@ function StudentProjektbetreuerAuswahl()
document.getElementById('student-projektbetreuer-textbox-person_id').value=person_id; document.getElementById('student-projektbetreuer-textbox-person_id').value=person_id;
document.getElementById('student-projektbetreuer-checkbox-neu').checked=false; document.getElementById('student-projektbetreuer-checkbox-neu').checked=false;
var lehreinheitstsem = document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value; var projektarbeitstsem = document.getElementById('student-projektarbeit-menulist-studiensemester').value;
var default_stundensatz = StudentProjektbetreuerLoadStundensatz(person_id, lehreinheitstsem); var default_stundensatz = StudentProjektbetreuerLoadStundensatz(person_id, projektarbeitstsem);
if (default_stundensatz != '') if (default_stundensatz != '')
default_stundensatz = 'Stundensatz (Default '+default_stundensatz+'):'; default_stundensatz = 'Stundensatz (Default '+default_stundensatz+'):';
@@ -1410,9 +1423,10 @@ function StudentProjektbetreuerLoadStundensatz(person_id, studiensemester)
function StudentProjektbetreuerLoadMitarbeiterDaten() function StudentProjektbetreuerLoadMitarbeiterDaten()
{ {
var person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person'); var person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person');
var lehreinheitstsem = document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value; var projektarbeitstsem = document.getElementById('student-projektarbeit-menulist-studiensemester').value;
var stundensatz = StudentProjektbetreuerLoadStundensatz(person_id, lehreinheitstsem);
var stundensatz = StudentProjektbetreuerLoadStundensatz(person_id, projektarbeitstsem);
if (stundensatz != '') if (stundensatz != '')
default_stundensatz = 'Stundensatz (Default '+stundensatz+'):'; default_stundensatz = 'Stundensatz (Default '+stundensatz+'):';
@@ -104,6 +104,10 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
class="sortDirectionIndicator" class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/projektarbeit/rdf#projektarbeit_id" /> sort="rdf:http://www.technikum-wien.at/projektarbeit/rdf#projektarbeit_id" />
<splitter class="tree-splitter"/> <splitter class="tree-splitter"/>
<treecol id="student-projektarbeit-tree-lehrveranstaltung_id" label="LehrveranstaltungID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehrveranstaltung_id" />
<splitter class="tree-splitter"/>
<treecol id="student-projektarbeit-tree-lehreinheit_id" label="LehreinheitID" flex="2" hidden="true" <treecol id="student-projektarbeit-tree-lehreinheit_id" label="LehreinheitID" flex="2" hidden="true"
class="sortDirectionIndicator" class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehreinheit_id" /> sort="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehreinheit_id" />
@@ -131,7 +135,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
<treeitem uri="rdf:*"> <treeitem uri="rdf:*">
<treerow> <treerow>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#bezeichnung"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehreinheit_stsem"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#projektarbeit_stsem"/>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#titel"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#titel"/>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#note"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#note"/>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#beginn"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#beginn"/>
@@ -141,6 +145,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#themenbereich"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#themenbereich"/>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#anmerkung"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#anmerkung"/>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#projektarbeit_id"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#projektarbeit_id"/>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehrveranstaltung_id"/>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehreinheit_id"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#lehreinheit_id"/>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#student_uid"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#student_uid"/>
<treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#firma_id"/> <treecell label="rdf:http://www.technikum-wien.at/projektarbeit/rdf#firma_id"/>
@@ -249,6 +254,20 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
</template> </template>
</menulist> </menulist>
</row> </row>
<row>
<label value="Studiensemester" control="student-projektarbeit-menulist-studiensemester"/>
<menulist id="student-projektarbeit-menulist-studiensemester" disabled="true"
datasources="<?php echo APP_ROOT ?>rdf/studiensemester.rdf.php?order=desc" flex="1"
ref="http://www.technikum-wien.at/studiensemester/liste">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/studiensemester/rdf#kurzbz"
label="rdf:http://www.technikum-wien.at/studiensemester/rdf#kurzbz"
uri="rdf:*"/>
</menupopup>
</template>
</menulist>
</row>
<row> <row>
<label value="LV-Teil" control="student-projektarbeit-menulist-lehreinheit"/> <label value="LV-Teil" control="student-projektarbeit-menulist-lehreinheit"/>
<menulist id="student-projektarbeit-menulist-lehreinheit" disabled="true" <menulist id="student-projektarbeit-menulist-lehreinheit" disabled="true"
+1 -36
View File
@@ -340,40 +340,6 @@ class benutzerberechtigung extends basis_db
return true; return true;
} }
protected function hasPreStudentStatusInGracePeriod($uid)
{
$period = defined('STUDENTS_KEEP_PERMISSIONS_AFTER_USER_INACTIVE_PERIOD')
? STUDENTS_KEEP_PERMISSIONS_AFTER_USER_INACTIVE_PERIOD
: '0 days';
$mapfunc = function($val) {
return $this->db_add_param($val);
};
$roles = defined('STUDENTS_KEEP_PERMISSIONS_AFTER_USER_INACTIVE_ROLES')
? implode(', ', array_map($mapfunc, unserialize(STUDENTS_KEEP_PERMISSIONS_AFTER_USER_INACTIVE_ROLES)))
: "'NO_DEFINED_ROLE'";
$sql = <<<EOSQL
SELECT
1
FROM
campus.vw_student vs
WHERE
vs.uid = {$this->db_add_param($uid)}
AND
vs.aktiv = false
AND
public.get_rolle_prestudent(vs.prestudent_id, null) IN ({$roles})
AND
(vs.updateaktivam + INTERVAL {$this->db_add_param($period)})::date >= CURRENT_DATE
EOSQL;
$result = $this->db_query($sql);
if($result && $this->db_num_rows($result) > 0)
{
return true;
}
return false;
}
/** /**
* Laedt die Berechtigungen eines Users * Laedt die Berechtigungen eines Users
* @param $uid * @param $uid
@@ -389,8 +355,7 @@ EOSQL;
if($row = $this->db_fetch_object($result)) if($row = $this->db_fetch_object($result))
{ {
// Wenn die Person nicht aktiv ist dann hat diese auch keine Rechte // Wenn die Person nicht aktiv ist dann hat diese auch keine Rechte
if($this->db_parse_bool($row->aktiv) == false if($this->db_parse_bool($row->aktiv) == false)
&& $this->hasPreStudentStatusInGracePeriod($uid) === false)
return false; return false;
} }
else else
+2 -2
View File
@@ -48,7 +48,7 @@ class bisarchiv extends basis_db
*/ */
protected function validate() protected function validate()
{ {
if($this->studiensemster_kurzbz == null || mb_strlen($this->studiensemster_kurzbz) > 6) if($this->studiensemester_kurzbz == null || mb_strlen($this->studiensemester_kurzbz) > 6)
{ {
$this->errormsg = "Studiensemester ist ungueltig"; $this->errormsg = "Studiensemester ist ungueltig";
return false; return false;
@@ -107,7 +107,7 @@ class bisarchiv extends basis_db
return false; return false;
$qry = "INSERT INTO bis.tbl_archiv (studiensemester_kurzbz, meldung, html, studiengang_kz, insertamum, insertvon, typ) VALUES (" $qry = "INSERT INTO bis.tbl_archiv (studiensemester_kurzbz, meldung, html, studiengang_kz, insertamum, insertvon, typ) VALUES ("
. $this->db_add_param($this->studiensemster_kurzbz) . "," . $this->db_add_param($this->studiensemester_kurzbz) . ","
. $this->db_add_param($this->meldung) . "," . $this->db_add_param($this->meldung) . ","
. $this->db_add_param($this->html) . "," . $this->db_add_param($this->html) . ","
. $this->db_add_param($this->studiengang_kz) . "," . $this->db_add_param($this->studiengang_kz) . ","
+172 -1
View File
@@ -2088,7 +2088,7 @@ class lehrveranstaltung extends basis_db
/** /**
* lädt die Lehrveranstaltungen zum zugehörigen Mitarbeiter * lädt die Lehrveranstaltungen zum zugehörigen Mitarbeiter
* @param String $uid User ID des Mitarbeiters * @param String $uid User ID des Mitarbeiters
* @param String $studiensemster_kurzbz Kurzbezeichnung des Studiensemesters * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters
*/ */
public function getLVByMitarbeiter($uid, $studiensemester_kurzbz = null) public function getLVByMitarbeiter($uid, $studiensemester_kurzbz = null)
{ {
@@ -2911,5 +2911,176 @@ class lehrveranstaltung extends basis_db
return null; return null;
} }
/**
* Filtert die geladenen Lehrveranstaltungen gegen den aktuellen Studienplan des Studenten.
* Ermittelt den Studienplan über den Prestudent-Status (aktuellster Eintrag) und gleicht
* die vorhandenen IDs mit der Tabelle tbl_studienplan_lehrveranstaltung ab.
* Die interne Liste wird nur bei gefundenen Treffern aktualisiert.
*
* @param string $student_uid Student uid.
* @return bool True bei erfolgreicher Abwicklung oder leeren Ausgangsdaten, False bei Datenbankfehlern.
*/
public function checkLvaAgainstStudentCurrentStudienplan($student_uid) {
$qryStudent = "SELECT prestudent_id FROM tbl_student WHERE student_uid = ".$this->db_add_param($student_uid)."";
if($result = $this->db_query($qryStudent))
{
if($row = $this->db_fetch_object($result))
{
$prestudent_id = $row->prestudent_id;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der des aktuellen studienplan für studenten über prestudent';
return false;
}
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
return false;
}
$qryHistory = "SELECT studienplan_id
FROM public.tbl_prestudentstatus
WHERE prestudent_id = ".$this->db_add_param($prestudent_id)."
ORDER BY public.tbl_prestudentstatus.datum DESC";
if($result = $this->db_query($qryHistory))
{
if($row = $this->db_fetch_object($result))
{
$studienplan_id = $row->studienplan_id;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der des aktuellen studienplan für studenten über prestudentstatus';
return false;
}
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
return false;
}
// needs to have lva_ids from previous query in this context
$lvsIDs = array_column($this->lehrveranstaltungen, 'lehrveranstaltung_id');
if (empty($lvsIDs)) {
// exit without modifying object state if no lva_id to query by are found
return true;
}
$ids = $this->db_implode4SQL($lvsIDs);
$qry = "SELECT tbl_lehrveranstaltung.*,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent,
tbl_studienplan_lehrveranstaltung.sort stpllv_sort,
tbl_studienplan_lehrveranstaltung.curriculum,
tbl_studienplan_lehrveranstaltung.export,
tbl_studienplan_lehrveranstaltung.genehmigung
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung
USING(lehrveranstaltung_id)
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id = ".$this->db_add_param($studienplan_id)."
AND tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id IN (".$ids.");";
if($result = $this->db_query($qry))
{
// reset the lva array and fill it with the new set
$temp_lvas = array();
while($row = $this->db_fetch_object($result))
{
$obj = new lehrveranstaltung();
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->bezeichnung = $row->bezeichnung;
$obj->kurzbz = $row->kurzbz;
$obj->lehrform_kurzbz = $row->lehrform_kurzbz;
$obj->semester = $row->semester;
$obj->ects = $row->ects;
$obj->semesterstunden = $row->semesterstunden;
$obj->anmerkung = $row->anmerkung;
$obj->lehre = $this->db_parse_bool($row->lehre);
$obj->lehreverzeichnis = $row->lehreverzeichnis;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$obj->ext_id = $row->ext_id;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->planfaktor = $row->planfaktor;
$obj->planlektoren = $row->planlektoren;
$obj->planpersonalkosten = $row->planpersonalkosten;
$obj->plankostenprolektor = $row->plankostenprolektor;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->sprache = $row->sprache;
$obj->sort = $row->sort;
$obj->incoming = $row->incoming;
$obj->zeugnis = $this->db_parse_bool($row->zeugnis);
$obj->projektarbeit = $this->db_parse_bool($row->projektarbeit);
$obj->koordinator = $row->koordinator;
$obj->bezeichnung_english = $row->bezeichnung_english;
$obj->orgform_kurzbz = $row->orgform_kurzbz;
$obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$obj->anzahlsemester = $row->anzahlsemester;
$obj->semesterwochen = $row->semesterwochen;
$obj->lvnr = $row->lvnr;
$obj->semester_alternativ = $row->semester_alternativ;
$obj->farbe = $row->farbe;
$obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$obj->stpllv_sort = $row->stpllv_sort;
$obj->benotung = $this->db_parse_bool($row->benotung);
$obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$obj->evaluierung = $this->db_parse_bool($row->evaluierung);
$obj->bezeichnung_arr['German'] = $row->bezeichnung;
$obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($obj->bezeichnung_arr['English'] == '')
$obj->bezeichnung_arr['English'] = $obj->bezeichnung_arr['German'];
$obj->sws = $row->sws;
$obj->lvs = $row->lvs;
$obj->alvs = $row->alvs;
$obj->lvps = $row->lvps;
$obj->las = $row->las;
$obj->stpllv_semester = $row->stpllv_semester;
$obj->stpllv_pflicht = $this->db_parse_bool($row->stpllv_pflicht);
$obj->stpllv_koordinator = $row->stpllv_koordinator;
$obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id;
$obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent;
$obj->curriculum = $this->db_parse_bool($row->curriculum);
$obj->export = $this->db_parse_bool($row->export);
$obj->genehmigung = $this->db_parse_bool($row->genehmigung);
$obj->new = false;
$temp_lvas[] = $obj;
}
// Only update the class property if we actually found matching records.
// If $temp_lvas is empty, $this->lehrveranstaltungen remains unchanged.
if (!empty($temp_lvas)) {
$this->lehrveranstaltungen = $temp_lvas;
}
return true;
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
return false;
}
}
} }
?> ?>
+24 -9
View File
@@ -37,6 +37,8 @@ class projektarbeit extends basis_db
public $titel; // string public $titel; // string
public $titel_english; // string public $titel_english; // string
public $lehreinheit_id; // integer public $lehreinheit_id; // integer
public $lehrveranstaltung_id; // integer
public $studiensemester_kurzbz; // string
public $student_uid; // integer public $student_uid; // integer
public $firma_id; // integer public $firma_id; // integer
public $note; // integer public $note; // integer
@@ -129,6 +131,8 @@ class projektarbeit extends basis_db
$this->titel = $row->titel; $this->titel = $row->titel;
$this->titel_english = $row->titel_english; $this->titel_english = $row->titel_english;
$this->lehreinheit_id = $row->lehreinheit_id; $this->lehreinheit_id = $row->lehreinheit_id;
$this->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->student_uid = $row->student_uid; $this->student_uid = $row->student_uid;
$this->firma_id = $row->firma_id; $this->firma_id = $row->firma_id;
$this->note = $row->note; $this->note = $row->note;
@@ -178,9 +182,13 @@ class projektarbeit extends basis_db
{ {
$this->errormsg='Projekttyp_kurzbz darf nicht NULL sein!'; $this->errormsg='Projekttyp_kurzbz darf nicht NULL sein!';
} }
if ($this->lehreinheit_id==null) if ($this->lehrveranstaltung_id==null)
{ {
$this->errormsg='Lehreinheit_id darf nicht NULL sein!'; $this->errormsg='Lehrveranstaltung_id darf nicht NULL sein!';
}
if ($this->studiensemester_kurzbz==null)
{
$this->errormsg='Studiensemester_kurzbz darf nicht NULL sein!';
} }
if(mb_strlen($this->projekttyp_kurzbz)>16) if(mb_strlen($this->projekttyp_kurzbz)>16)
{ {
@@ -261,12 +269,15 @@ class projektarbeit extends basis_db
{ {
//Neuen Datensatz einfuegen //Neuen Datensatz einfuegen
$qry='BEGIN; INSERT INTO lehre.tbl_projektarbeit (projekttyp_kurzbz, titel, lehreinheit_id, student_uid, firma_id, note, punkte, $qry='BEGIN; INSERT INTO lehre.tbl_projektarbeit (projekttyp_kurzbz, titel, lehreinheit_id,
lehrveranstaltung_id, studiensemester_kurzbz, student_uid, firma_id, note, punkte,
beginn, ende, faktor, freigegeben, gesperrtbis, stundensatz, gesamtstunden, themenbereich, anmerkung, beginn, ende, faktor, freigegeben, gesperrtbis, stundensatz, gesamtstunden, themenbereich, anmerkung,
insertamum, insertvon, updateamum, updatevon, titel_english, final) VALUES('. insertamum, insertvon, updateamum, updatevon, titel_english, final) VALUES('.
$this->db_add_param($this->projekttyp_kurzbz).', '. $this->db_add_param($this->projekttyp_kurzbz).', '.
$this->db_add_param($this->titel).', '. $this->db_add_param($this->titel).', '.
$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '. $this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).', '.
$this->db_add_param($this->studiensemester_kurzbz).', '.
$this->db_add_param($this->student_uid).', '. $this->db_add_param($this->student_uid).', '.
$this->db_add_param($this->firma_id, FHC_INTEGER).', '. $this->db_add_param($this->firma_id, FHC_INTEGER).', '.
$this->db_add_param($this->note).', '. $this->db_add_param($this->note).', '.
@@ -301,6 +312,8 @@ class projektarbeit extends basis_db
'titel='.$this->db_add_param($this->titel).', '. 'titel='.$this->db_add_param($this->titel).', '.
'titel_english='.$this->db_add_param($this->titel_english).', '. 'titel_english='.$this->db_add_param($this->titel_english).', '.
'lehreinheit_id='.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '. 'lehreinheit_id='.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
'lehrveranstaltung_id='.$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).', '.
'studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).', '.
'student_uid='.$this->db_add_param($this->student_uid).', '. 'student_uid='.$this->db_add_param($this->student_uid).', '.
'firma_id='.$this->db_add_param($this->firma_id, FHC_INTEGER).', '. 'firma_id='.$this->db_add_param($this->firma_id, FHC_INTEGER).', '.
'note='.$this->db_add_param($this->note).', '. 'note='.$this->db_add_param($this->note).', '.
@@ -406,6 +419,8 @@ class projektarbeit extends basis_db
$obj->titel = $row->titel; $obj->titel = $row->titel;
$obj->titel_english = $row->titel_english; $obj->titel_english = $row->titel_english;
$obj->lehreinheit_id = $row->lehreinheit_id; $obj->lehreinheit_id = $row->lehreinheit_id;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->student_uid = $row->student_uid; $obj->student_uid = $row->student_uid;
$obj->firma_id = $row->firma_id; $obj->firma_id = $row->firma_id;
$obj->note = $row->note; $obj->note = $row->note;
@@ -449,14 +464,13 @@ class projektarbeit extends basis_db
tbl_projektarbeit.* , tbl_projekttyp.bezeichnung tbl_projektarbeit.* , tbl_projekttyp.bezeichnung
FROM FROM
lehre.tbl_projektarbeit lehre.tbl_projektarbeit
JOIN JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
lehre.tbl_projekttyp USING (projekttyp_kurzbz), lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehrveranstaltung ON (lehre.tbl_projektarbeit.lehrveranstaltung_id = lehre.tbl_lehrveranstaltung.lehrveranstaltung_id)
WHERE WHERE
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND tbl_projektarbeit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehrveranstaltung.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." AND tbl_lehrveranstaltung.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." AND
tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); tbl_projektarbeit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if($this->db_query($qry)) if($this->db_query($qry))
{ {
@@ -470,6 +484,8 @@ class projektarbeit extends basis_db
$obj->titel = $row->titel; $obj->titel = $row->titel;
$obj->titel_english = $row->titel_english; $obj->titel_english = $row->titel_english;
$obj->lehreinheit_id = $row->lehreinheit_id; $obj->lehreinheit_id = $row->lehreinheit_id;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->student_uid = $row->student_uid; $obj->student_uid = $row->student_uid;
$obj->firma_id = $row->firma_id; $obj->firma_id = $row->firma_id;
$obj->note = $row->note; $obj->note = $row->note;
@@ -534,7 +550,6 @@ class projektarbeit extends basis_db
pa.projekttyp_kurzbz pa.projekttyp_kurzbz
FROM FROM
lehre.tbl_projektarbeit pa lehre.tbl_projektarbeit pa
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz) JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz)
LEFT JOIN ( LEFT JOIN (
SELECT SELECT
+12 -10
View File
@@ -378,7 +378,8 @@ class vertrag extends basis_db
FROM FROM
lehre.tbl_projektbetreuer lehre.tbl_projektbetreuer
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id) JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN lehre.tbl_lehreinheit ON(lehre.tbl_projektarbeit.lehrveranstaltung_id = lehre.tbl_lehreinheit.lehrveranstaltung_id AND lehre.tbl_projektarbeit.studiensemester_kurzbz = lehre.tbl_lehreinheit.studiensemester_kurzbz)
WHERE WHERE
tbl_projektbetreuer.person_id=".$this->db_add_param($person_id, FHC_INTEGER)." tbl_projektbetreuer.person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
AND vertrag_id IS NULL"; AND vertrag_id IS NULL";
@@ -535,12 +536,12 @@ class vertrag extends basis_db
UNION UNION
SELECT SELECT
'Betreuung' as type, 'Betreuung' as type,
tbl_projektarbeit.lehreinheit_id as lehreinheit_id, NULL as lehreinheit_id,
null as mitarbeiter_uid, null as mitarbeiter_uid,
null::integer as pruefung_id, null::integer as pruefung_id,
projektarbeit_id, projektarbeit_id,
(tbl_projektbetreuer.stunden*tbl_projektbetreuer.stundensatz) as betrag, (tbl_projektbetreuer.stunden*tbl_projektbetreuer.stundensatz) as betrag,
tbl_lehreinheit.studiensemester_kurzbz, tbl_projektarbeit.studiensemester_kurzbz,
tbl_projektbetreuer.betreuerart_kurzbz, tbl_projektbetreuer.betreuerart_kurzbz,
(SELECT nachname || ' ' || vorname FROM public.tbl_person JOIN public.tbl_benutzer USING(person_id) WHERE uid=tbl_projektarbeit.student_uid) (SELECT nachname || ' ' || vorname FROM public.tbl_person JOIN public.tbl_benutzer USING(person_id) WHERE uid=tbl_projektarbeit.student_uid)
as bezeichnung, as bezeichnung,
@@ -549,7 +550,6 @@ class vertrag extends basis_db
FROM FROM
lehre.tbl_projektbetreuer lehre.tbl_projektbetreuer
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id) JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_vertrag USING (vertrag_id) JOIN lehre.tbl_vertrag USING (vertrag_id)
WHERE WHERE
vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER).";"; vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER).";";
@@ -942,17 +942,18 @@ class vertrag extends basis_db
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE WHERE
vertrag_id=tbl_vertrag.vertrag_id vertrag_id=tbl_vertrag.vertrag_id
AND studiensemester_kurzbz=".$this->db_add_param($stsem).") AND lehre.tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($stsem).")
OR OR
EXISTS (SELECT EXISTS (SELECT
1 1
FROM FROM
lehre.tbl_projektbetreuer lehre.tbl_projektbetreuer
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id) JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN lehre.tbl_lehreinheit ON(lehre.tbl_projektarbeit.lehrveranstaltung_id = lehre.tbl_lehreinheit.lehrveranstaltung_id AND lehre.tbl_projektarbeit.studiensemester_kurzbz = lehre.tbl_lehreinheit.studiensemester_kurzbz)
WHERE WHERE
vertrag_id=tbl_vertrag.vertrag_id vertrag_id=tbl_vertrag.vertrag_id
AND studiensemester_kurzbz=".$this->db_add_param($stsem).") AND lehre.tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($stsem).")
OR OR
(NOT EXISTS (SELECT (NOT EXISTS (SELECT
1 1
@@ -980,7 +981,7 @@ class vertrag extends basis_db
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE WHERE
vertrag_id=tbl_vertrag.vertrag_id vertrag_id=tbl_vertrag.vertrag_id
AND studiensemester_kurzbz=".$this->db_add_param($stsem).") AND lehre.tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($stsem).")
) )
AND tbl_benutzer.uid=".$this->db_add_param($mitarbeiter_uid); AND tbl_benutzer.uid=".$this->db_add_param($mitarbeiter_uid);
@@ -1077,7 +1078,7 @@ class vertrag extends basis_db
JOIN lehre.tbl_lehreinheitmitarbeiter USING(vertrag_id) JOIN lehre.tbl_lehreinheitmitarbeiter USING(vertrag_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE WHERE
studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." lehre.tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT IN(SELECT uid FROM public.tbl_benutzer WHERE person_id=tbl_vertrag.person_id) AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT IN(SELECT uid FROM public.tbl_benutzer WHERE person_id=tbl_vertrag.person_id)
UNION UNION
SELECT SELECT
@@ -1086,7 +1087,8 @@ class vertrag extends basis_db
lehre.tbl_vertrag lehre.tbl_vertrag
JOIN lehre.tbl_projektbetreuer USING(vertrag_id) JOIN lehre.tbl_projektbetreuer USING(vertrag_id)
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id) JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN lehre.tbl_lehreinheit ON(lehre.tbl_projektarbeit.lehrveranstaltung_id = lehre.tbl_lehreinheit.lehrveranstaltung_id AND lehre.tbl_projektarbeit.studiensemester_kurzbz = lehre.tbl_lehreinheit.studiensemester_kurzbz)
WHERE WHERE
studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
AND tbl_projektbetreuer.person_id!=tbl_vertrag.person_id"; AND tbl_projektbetreuer.person_id!=tbl_vertrag.person_id";
+6 -8
View File
@@ -748,14 +748,12 @@ or not exists
UNION UNION
SELECT sum(pb.stunden) AS semstunden SELECT sum(pb.stunden) AS semstunden
FROM FROM
lehre.tbl_projektarbeit pa, lehre.tbl_projektarbeit pa
lehre.tbl_projektbetreuer pb, JOIN lehre.tbl_projektbetreuer pb ON(pa.projektarbeit_id = pb.projektarbeit_id)
public.tbl_benutzer b, JOIN public.tbl_benutzer b ON(pb.person_id = b.person_id)
lehre.tbl_lehreinheit l JOIN lehre.tbl_lehreinheit l ON(pa.lehrveranstaltung_id = l.lehrveranstaltung_id AND pa.studiensemester_kurzbz = l.studiensemester_kurzbz)
JOIN JOIN lehre.tbl_lehrveranstaltung lv ON (l.lehrveranstaltung_id = lv.lehrveranstaltung_id)
lehre.tbl_lehrveranstaltung lv using (lehrveranstaltung_id) JOIN public.tbl_studiengang s USING (studiengang_kz)
JOIN
public.tbl_studiengang s using (studiengang_kz)
WHERE WHERE
pa.lehreinheit_id = l.lehreinheit_id AND pa.lehreinheit_id = l.lehreinheit_id AND
+35 -28
View File
@@ -147,8 +147,6 @@ html {
--fhc-cis-menu-lvl-5-color-hover: var(--fhc-text); --fhc-cis-menu-lvl-5-color-hover: var(--fhc-text);
--fhc-cis-grade-positive: var(--fhc-success); --fhc-cis-grade-positive: var(--fhc-success);
--fhc-cis-grade-negative: var(--fhc-danger); --fhc-cis-grade-negative: var(--fhc-danger);
--fhc-offcanvas-zindex: 1045;
} }
#themeSwitch i{ #themeSwitch i{
@@ -377,7 +375,7 @@ html {
/* searchbar */ /* searchbar */
#nav-search { #nav-search {
background-color: var(--fhc-primary); background-color: var(--fhc-primary);
z-index: calc(var(--fhc-offcanvas-zindex) + 1) !important; z-index: 1;
} }
#nav-search.me-3 { #nav-search.me-3 {
margin: 0 !important; margin: 0 !important;
@@ -388,6 +386,12 @@ html {
#nav-search > .input-group > * { #nav-search > .input-group > * {
border-radius: 0 !important; border-radius: 0 !important;
} }
#nav-search .searchbar_results {
top: 100% !important;
left: 0;
right: 0 !important;
width: 100% !important;
}
/* frame */ /* frame */
.in-frame { .in-frame {
@@ -409,18 +413,10 @@ html {
color: var(--fhc-link) !important; color: var(--fhc-link) !important;
} }
#nav-main {
z-index: var(--fhc-offcanvas-zindex);
}
#nav-main-sticky { #nav-main-sticky {
max-height: calc(100vh - var(--fhc-cis-header-height)); max-height: calc(100vh - var(--fhc-cis-header-height));
} }
#nav-user-menu {
z-index: calc(var(--fhc-offcanvas-zindex) + 1);
}
#nav-user-menu img { #nav-user-menu img {
object-fit: cover; object-fit: cover;
height: calc( 3 * var(--fhc-cis-header-py)); height: calc( 3 * var(--fhc-cis-header-py));
@@ -461,14 +457,7 @@ html {
/* overflow: visible !important; */ /* overflow: visible !important; */
} }
#cis-header { #cis-header {
z-index: 10; z-index: 10;
}
#cis-header-bar {
position: fixed;
top: 0;
height: var(--fhc-cis-header-height);
width: 100%;
background-color: var(--fhc-primary);
} }
#cis-header nav { #cis-header nav {
position: initial; position: initial;
@@ -484,7 +473,12 @@ html {
display: none; display: none;
} }
#nav-logo { #nav-logo {
position: fixed;
top: 0;
left: 0;
height: var(--fhc-cis-header-height);
width: var(--fhc-cis-menu-width); width: var(--fhc-cis-menu-width);
background-color: var(--fhc-primary);
padding: var(--fhc-cis-header-py) var(--fhc-cis-header-px); padding: var(--fhc-cis-header-py) var(--fhc-cis-header-px);
z-index: 2; z-index: 2;
} }
@@ -499,27 +493,37 @@ html {
top: var(--fhc-cis-header-height); top: var(--fhc-cis-header-height);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 100%; }
#nav-main-sticky > :not(#nav-main-toggle) {
overflow: auto;
} }
#nav-main-toggle { #nav-main-toggle {
width: 0;
z-index: 1; z-index: 1;
} }
#nav-main-toggle:hover { #nav-main-toggle .btn,
background-color: var(--fhc-secondary-highlight); #nav-main-toggle .fa-arrow-circle-left {
}
#nav-main-toggle .div,
#nav-main-toggle .fa-chevron-left {
transition: all 0.5s ease-in-out; transition: all 0.5s ease-in-out;
} }
#nav-main-toggle .collapsed.btn { #nav-main-toggle .collapsed.btn {
background-color: transparent !important; background-color: transparent !important;
} }
#nav-main-toggle .collapsed .fa-chevron-left { #nav-main-toggle .collapsed .fa-arrow-circle-left {
transform: scaleX(-1); transform: scaleX(-1);
color: var(--fhc-black-40); color: var(--fhc-black-40);
} }
#nav-search { #nav-search {
position: relative; position: fixed;
top: 0;
left: var(--fhc-cis-menu-width);
height: var(--fhc-cis-header-height);
right: calc(var(--fhc-cis-header-height) + 2 * var(--fhc-cis-header-px) - 2 * var(--fhc-cis-header-py));
width: auto !important;
}
#nav-user {
position: fixed;
top: 0;
right: 0;
} }
#nav-user-btn { #nav-user-btn {
border-width: 0; border-width: 0;
@@ -554,7 +558,7 @@ html {
#nav-main-menu { #nav-main-menu {
height: 100%; height: 100%;
background-color: var(--fhc-primary); background-color: var(--fhc-cis-menu-bg);
} }
#nav-main-menu > div { #nav-main-menu > div {
width: var(--fhc-cis-menu-width); width: var(--fhc-cis-menu-width);
@@ -596,6 +600,9 @@ html {
} }
#nav-user{ #nav-user{
position: relative; position: relative;
}
#nav-user-btn {
} }
#nav-user-btn img { #nav-user-btn img {
object-fit: cover; object-fit: cover;
-100
View File
@@ -306,103 +306,3 @@
#abgabetable .tabulator-row:hover .tabulator-cell.sticky-col { #abgabetable .tabulator-row:hover .tabulator-cell.sticky-col {
background-color: #ccc; /* Match your existing hover color */ background-color: #ccc; /* Match your existing hover color */
} }
.tabulator-cell {
container-type: inline-size;
}
.tabulator-col-title {
container-type: inline-size;
}
@container (max-width: 100px) {
.full-text {
display: none !important;
}
.short-text {
display: inline-block !important;
width: 100%;
}
}
/*conditional tooltips fix*/
.p-tooltip.custom-tooltip {
z-index: 8001 !important;
}
/* Shrinks font and table rows for desktop users who have zoomed in their browser (150%+).
Does not affect mobile/touchscreen devices, which use touch input instead of a mouse. */
@media (pointer: fine) and (min-resolution: 1.5dppx) {
html.abgabetool {
font-size: 0.5rem;
}
.abgabetool .tabulator-cell,
.abgabetool .tabulator-row {
height: 20px;
max-height: 20px;
}
}
/*confetti celebration on endupload - impossible to miss*/
#confetti-container {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
pointer-events: none;
z-index: 9999;
overflow: hidden;
}
.confetti-piece {
position: absolute;
opacity: 0;
will-change: top, transform, opacity;
}
/* Background Rain */
@keyframes fallAndSpin {
0% {
top: var(--start-y);
transform: translate3d(0, 0, 0) rotateX(0deg) rotateY(0deg);
opacity: 1;
}
100% {
top: 105vh;
transform: translate3d(var(--drift), 0, 0) rotateX(720deg) rotateY(360deg);
opacity: 0.3;
}
}
/* Corner Cannons*/
@keyframes cannonBlast {
0% {
transform: translate3d(0, 0, 0) scale(0.3) rotate(0deg);
opacity: 1;
animation-timing-function: cubic-bezier(0.1, 0.8, 0.2, 1);
}
30% {
transform: translate3d(var(--blast-x), var(--blast-y), 0) scale(1.2) rotate(270deg);
opacity: 1;
animation-timing-function: linear;
}
100% {
transform: translate3d(calc(var(--blast-x) * 1.4), 15vh, 0) scale(0.4) rotate(630deg);
opacity: 0;
}
}
.p-timeline-event-opposite {
flex: 0 0 90px;
max-width: 90px;
}
.p-timeline-event-content {
flex: 1 1 auto;
min-width: 0;
}
+52 -60
View File
@@ -2,7 +2,7 @@
@import './dashboard/news.css'; @import './dashboard/news.css';
@import './dashboard/LvPlan.css'; @import './dashboard/LvPlan.css';
:root { :root{
--fhc-dashboard-danger: var(--fhc-danger, #842029); --fhc-dashboard-danger: var(--fhc-danger, #842029);
--fhc-dashboard-grid-size: 4; --fhc-dashboard-grid-size: 4;
--fhc-dashboard-link: var(--fhc-link, #0a57ca); --fhc-dashboard-link: var(--fhc-link, #0a57ca);
@@ -17,16 +17,22 @@
--fhc-dashboard-section-info-color-hover: var(--fhc-primary-highlight, #005585); --fhc-dashboard-section-info-color-hover: var(--fhc-primary-highlight, #005585);
} }
.core-dashboard a { @media(max-width: 577px) {
:root {
--fhc-dashboard-grid-size: 1;
}
}
.core-dashboard a{
color: var(--fhc-dashboard-link); color: var(--fhc-dashboard-link);
} }
@media (max-width: 576px) { @media (max-width: 576px){
.widget-icon { .widget-icon {
max-height: 250px; max-height: 250px;
object-fit: cover; object-fit: cover;
} }
.widget-icon-container { .widget-icon-container{
max-width: 250px; max-width: 250px;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
@@ -40,36 +46,27 @@
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
background-size: cover; background-size: cover;
cursor: pointer; cursor:pointer;
} }
.dashboard-section.edit-active { .dashboard-section > .newGridRow{
/** position:absolute;
* replaces margin for extra row width:20px;
* 10% equals 0.1 of 100% height:20px;
* 1rem equals the padding of pb-3 that is overwritten here padding:0;
*/ bottom:0;
padding-bottom: calc(10% / var(--fhc-dashboard-grid-size) + 1rem) !important; left:50%;
} transform:translate(-50%, 50%);
.dashboard-section > .newGridRow {
position: absolute;
width: 20px;
height: 20px;
padding: 0;
bottom: 0;
left: 50%;
transform: translate(-50%, 50%);
background-color: var(--fhc-dashboard-gridrow-background); background-color: var(--fhc-dashboard-gridrow-background);
} }
.newGridRow:hover { .newGridRow:hover {
color: white; color:white;
background-color: var(--fhc-dashboard-gridrow-background-highlight); background-color: var(--fhc-dashboard-gridrow-background-highlight);
} }
.empty-tile-hover:hover { .empty-tile-hover:hover {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-500 -500 1448 1512"><path fill="rgb(211, 211, 211)" d="M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"/></svg>'); background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-500 -500 1448 1512"><path fill="rgb(211, 211, 211)" d="M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"/></svg>');
} }
.alert-danger .form-check-input:checked { .alert-danger .form-check-input:checked {
@@ -77,6 +74,16 @@
background-color: var(--fhc-dashboard-danger); background-color: var(--fhc-dashboard-danger);
} }
:root {
--fhc-dashboard-grid-size: 4;
}
@media(max-width: 1400px) {
:root {
--fhc-dashboard-grid-size: 4;
}
}
@media(max-width: 1200px) { @media(max-width: 1200px) {
:root { :root {
--fhc-dashboard-grid-size: 3; --fhc-dashboard-grid-size: 3;
@@ -98,7 +105,6 @@
@media(max-width: 577px) { @media(max-width: 577px) {
:root { :root {
--fhc-dashboard-grid-size: 1; --fhc-dashboard-grid-size: 1;
--fhc-dg-item-py: .75rem;
} }
} }
@@ -126,64 +132,50 @@
cursor: move !important; cursor: move !important;
} }
.drop-grid-item-resize > .dashboard-item, .draggedItem {
.drop-grid-item-move > .dashboard-item {
height: 100%; height: 100%;
width: 100%; width: 100%;
background-color: var(--fhc-dashboard-draggeditem-background); background-color: var(--fhc-dashboard-draggeditem-background);
position: relative; position: relative;
} }
.drop-grid-item-resize > .dashboard-item > *, .dashboard-item-overlay{
.drop-grid-item-move > .dashboard-item > * {
display: none;
}
.drop-grid-item-sizechanged > .dashboard-item,
.drop-grid-item-move > .dashboard-item {
background-color: var(--fhc-dashboard-item-overlay-background); background-color: var(--fhc-dashboard-item-overlay-background);
} }
.drop-grid-item-sizechanged > .dashboard-item::before, .dashboard-item-overlay::before{
.drop-grid-item-move > .dashboard-item::before { position:absolute;
position: absolute; content:"";
content: ""; top:0.25rem;
top: .25rem; left:0.25rem;
left: .25rem; right:0.25rem;
right: .25rem; bottom:0.25rem;
bottom: .25rem; border:4px dashed var(--fhc-dashboard-item-overly-border-color);
border: 4px dashed var(--fhc-dashboard-item-overly-border-color); opacity: 0.5;
opacity: .5;
} }
.drop-grid-item-oversized > .dashboard-item { #deleteBookmark i{
/* Bootstrap: border-danger */
--bs-border-opacity: 1;
border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;
}
#deleteBookmark i {
color: var(--fhc-dashboard-danger); color: var(--fhc-dashboard-danger);
} }
.pin:hover { .pin:hover{
cursor: pointer; cursor: pointer;
} }
.pin[pinned]:hover { .pin[pinned]:hover{
color: var(--fhc-dashboard-pin-pinned-hover-color); color: var(--fhc-dashboard-pin-pinned-hover-color);
} }
.section-info { .section-info{
color: var(--fhc-dashboard-section-info-color); color: var(--fhc-dashboard-section-info-color);
cursor: pointer; cursor:pointer;
} }
.section-info:hover { .section-info:hover {
color: var(--fhc-dashboard-section-info-color-hover); color: var(--fhc-dashboard-section-info-color-hover);
} }
.drop-grid-item-blocker [pinned='true'] { .denied-dragging-animation {
animation: wiggle 0.5s linear; animation: wiggle 0.5s linear;
color: var(--fhc-dashboard-denied-dragging-animation-color) !important; color: var(--fhc-dashboard-denied-dragging-animation-color) !important;
} }
@@ -212,13 +204,13 @@
} }
.hidden-widget { .hiddenWidget{
background: var(--fhc-disabled-background); background: var(--fhc-disabled-background);
opacity: 40%; opacity: 40%;
} }
.hidden-widget .card, .hiddenWidget .card,
.hidden-widget .card-body, .hiddenWidget .card-body,
.hidden-widget .card-body * { .hiddenWidget .card-body *{
background: inherit !important; background: inherit !important;
} }

Some files were not shown because too many files have changed in this diff Show More