- wording angepasst lehreinheit -> lvteil

- Kollisionscheck an/aus wird angezeigt
- Shortcut für Ignore-Collision (F9) hinzugefuegt
- coursepicker:
 - design angepasst
 - favorisieren ermoeglicht
 - phrases
- bei lv immer alle raeume/lektoren/gruppen anzeigen unabhaengig vom filter
This commit is contained in:
ma0048
2026-07-15 14:58:41 +02:00
parent a413ae17b8
commit 81c16a3bf2
10 changed files with 247 additions and 62 deletions
@@ -14,6 +14,7 @@ class Config extends FHCAPI_Controller
'get' => ['admin:r', 'assistenz:r'],
'getHeader' => ['admin:r', 'assistenz:r'],
'set' => ['admin:r', 'assistenz:r'],
'updateCollision' => ['admin:r', 'assistenz:r'],
]);
// Load Phrases
@@ -23,12 +24,12 @@ class Config extends FHCAPI_Controller
$this->_ci = &get_instance();
$this->_ci->load->model('ressource/Kalenderstatus_model', 'KalenderStatusModel');
$this->_ci->load->model('system/Variable_model', 'VariableModel');
$this->_ci->load->library('VariableLib', array('uid' => getAuthUID()));
}
public function get()
{
$this->_ci->load->model('system/Variable_model', 'VariableModel');
$config = [];
$result = $this->_ci->VariableModel->getVariables(getAuthUID(), ['ignore_kollision', 'kollision_student', 'ignore_reservierung', 'ignore_zeitsperre']);
@@ -87,8 +88,6 @@ class Config extends FHCAPI_Controller
public function set()
{
$this->_ci->load->model('system/Variable_model', 'VariableModel');
$this->_ci->VariableModel->setVariable(
getAuthUID(),
'ignore_kollision',
@@ -112,5 +111,14 @@ class Config extends FHCAPI_Controller
$this->terminateWithSuccess();
}
public function updateCollision()
{
$original_ignore = $this->_ci->variablelib->getVar('ignore_kollision');
$this->_ci->VariableModel->setVariable(
getAuthUID(),
'ignore_kollision',
$original_ignore === 'true' ? 'false' : 'true'
);
}
}
@@ -211,7 +211,7 @@ class Coursepicker extends FHCAPI_Controller
'studiensemester_kurzbz' => $row->studiensemester_kurzbz,
'fachbereich_kurzbz' => isset($row->fachbereich_kurzbz) ? $row->fachbereich_kurzbz : null,
'lektoren' => array(),
'lehreinheit_id' => array(),
'lehreinheit_id' => $lehreinheit_id,
'lvnr' => array(),
'lehrfach' => array(),
'lehrform' => array(),
@@ -235,7 +235,6 @@ class Coursepicker extends FHCAPI_Controller
'name' => $row->vorname . ' ' . $row->nachname,
);
$group->lehreinheit_id[] = $row->lehreinheit_id;
$group->lvnr[] = $row->lvnr;
$group->lehrfach[] = $row->lehrfach;
$group->lehrform[] = $row->lehrform;
+69 -21
View File
@@ -344,43 +344,91 @@ class KalenderLib
$this->_getBasePlan($start_date, $end_date);
if (!is_null($ort))
$this->_ci->KalenderModel->db->where_in('tbl_kalender_ort.ort_kurzbz', $ort);
{
$ort_array = (array) $ort;
$escaped_orte = array();
foreach ($ort_array as $ort)
{
$escaped_orte[] = $this->_ci->KalenderModel->db->escape($ort);
}
$in_list = '(' . implode(',', $escaped_orte) . ')';
$this->_ci->KalenderModel->db->where(
"(EXISTS (
SELECT 1
FROM lehre.tbl_kalender_ort filter_ort
WHERE filter_ort.kalender_id = tbl_kalender.kalender_id
AND filter_ort.ort_kurzbz IN $in_list
))"
);
}
if (!is_null($uids))
{
$this->_ci->KalenderModel->db->group_start();
$this->_ci->KalenderModel->db->where_in('tbl_lehreinheitmitarbeiter.mitarbeiter_uid', $uids);
$this->_ci->KalenderModel->db->or_where_in('orginasator.uid', $uids);
$this->_ci->KalenderModel->db->or_where_in('teilnehmer.uid', $uids);
$this->_ci->KalenderModel->db->group_end();
$uid_array = (array) $uids;
$db = $this->_ci->KalenderModel->db;
$escaped_uids = array();
foreach ($uid_array as $uid)
$escaped_uids[] = $db->escape($uid);
$in_list = '(' . implode(',', $escaped_uids) . ')';
$this->_ci->KalenderModel->db->where(
"(EXISTS (
SELECT 1
FROM lehre.tbl_lehreinheitmitarbeiter filter_lem
WHERE filter_lem.lehreinheit_id = tbl_lehreinheit.lehreinheit_id
AND filter_lem.mitarbeiter_uid IN $in_list
)
OR EXISTS (
SELECT 1
FROM lehre.tbl_kalender_event_teilnehmer filter_org
WHERE filter_org.kalender_id = tbl_kalender.kalender_id
AND filter_org.rolle_kurzbz = 'organisator'
AND filter_org.uid IN $in_list
)
OR EXISTS (
SELECT 1
FROM lehre.tbl_kalender_event_teilnehmer filter_teil
WHERE filter_teil.kalender_id = tbl_kalender.kalender_id
AND filter_teil.rolle_kurzbz = 'teilnehmer'
AND filter_teil.uid IN $in_list
))"
);
}
if (!is_null($studiengaenge))
{
$db = $this->_ci->KalenderModel->db;
$or_conditions = array();
$this->_ci->KalenderModel->db->group_start();
$first = true;
foreach ($studiengaenge as $studiengang)
{
if ($first)
$this->_ci->KalenderModel->db->group_start();
else
{
$this->_ci->KalenderModel->db->or_group_start();
}
$first = false;
$this->_ci->KalenderModel->db->where('tbl_lehrveranstaltung.studiengang_kz', $studiengang['studiengang_kz']);
$conditions = array();
$conditions[] = 'filter_lv.studiengang_kz = ' . $db->escape($studiengang['studiengang_kz']);
if (isset($studiengang['semester']))
$this->_ci->KalenderModel->db->where('tbl_lehrveranstaltung.semester', $studiengang['semester']);
$conditions[] = 'filter_lv.semester = ' . $db->escape($studiengang['semester']);
if (isset($studiengang['orgform_kurzbz']))
$this->_ci->KalenderModel->db->where('tbl_lehrveranstaltung.orgform_kurzbz', $studiengang['orgform_kurzbz']);
$conditions[] = 'filter_lv.orgform_kurzbz = ' . $db->escape($studiengang['orgform_kurzbz']);
$this->_ci->KalenderModel->db->group_end();
$or_conditions[] = '(' . implode(' AND ', $conditions) . ')';
}
$this->_ci->KalenderModel->db->group_end();
$or_block = implode(' OR ', $or_conditions);
$this->_ci->KalenderModel->db->where(
"(EXISTS (
SELECT 1
FROM lehre.tbl_kalender_lehreinheit filter_kl
JOIN lehre.tbl_lehreinheit filter_le ON filter_le.lehreinheit_id = filter_kl.lehreinheit_id
JOIN lehre.tbl_lehrveranstaltung filter_lv ON filter_lv.lehrveranstaltung_id = filter_le.lehrveranstaltung_id
WHERE filter_kl.kalender_id = tbl_kalender.kalender_id
AND ($or_block)
))"
);
}
$this->_ci->KalenderModel->db->where('NOT EXISTS (