Merge branch 'master' into cis40_2026-05_ma_rc

This commit is contained in:
Harald Bamberger
2026-07-03 14:27:45 +02:00
3 changed files with 57 additions and 4 deletions
+17 -3
View File
@@ -36,6 +36,7 @@ require_once('../../../include/notenschluessel.class.php');
require_once('../../../include/Excel/excel.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/pruefung.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
$uid = get_uid();
@@ -44,7 +45,7 @@ $uid = get_uid();
$sprache = getSprache();
$p = new phrasen($sprache);
if(!check_lektor($uid))
if (!check_lektor($uid))
die('Sie haben keine Berechtigung fuer diese Seite');
if (!$db = new basis_db())
@@ -90,6 +91,21 @@ if(isset($_GET['lehreinheit_id']))
else
$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
*/
@@ -143,8 +159,6 @@ else
// let's 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);
$stg_obj = new studiengang($stg);
+4
View File
@@ -373,4 +373,8 @@ define('TESTTOOL_EXTERNE_UEBERWACHUNG_ALLOWED', false);
//enable tags in StudVW
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')));
?>
+36 -1
View File
@@ -340,6 +340,40 @@ class benutzerberechtigung extends basis_db
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
* @param $uid
@@ -355,7 +389,8 @@ class benutzerberechtigung extends basis_db
if($row = $this->db_fetch_object($result))
{
// 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;
}
else