458 lines
14 KiB
PHP
Executable File
458 lines
14 KiB
PHP
Executable File
<?php
|
|
/*
|
|
# Fuer debugging
|
|
error_reporting(E_ALL);
|
|
ini_set('display_errors', 1);
|
|
#echo __LINE__."<br>";
|
|
*/
|
|
|
|
session_start();
|
|
include_once 'classes/TestProjektSmarty.class.php';
|
|
require_once("config.inc.php");
|
|
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
|
$smarty = new Smarty();
|
|
|
|
require_once "language/german.inc.php";
|
|
require_once("func_rollenrechte.php");
|
|
|
|
# Wenn Seite neu aufgerufen wird, dann alle Sessions, die mit "erfassen_" beginnen löschen, damit man eine Doppelspeicherung verhindert
|
|
if (isset($_GET['new']) AND $_GET['new'] == 1) {
|
|
$search_prefix = 'rollen_';
|
|
$search_len = strlen($search_prefix);
|
|
foreach ($_SESSION as $key => $value) {
|
|
if (substr($key, 0, $search_len) == $search_prefix) {
|
|
unset($_SESSION[$key]);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Rechteüberprüfung
|
|
if (!rore($uid, '3', 'RE')) {echo "Keine Rechte";exit;}
|
|
// Rechteüberprüfung ende
|
|
|
|
|
|
if (isset($_GET['action'])) {
|
|
$action = $_GET['action'];
|
|
} else {
|
|
$action = '';
|
|
}
|
|
|
|
if ($action == '') {
|
|
|
|
if ($_GET['error'] == 1) {
|
|
$smarty->assign('rollen_pflichtfelder', "1");
|
|
$smarty->assign('rollen_error_text', "Es ist zu einem Fehler gekommen. Bitte füllen Sie eines der Felder aus.");
|
|
}
|
|
|
|
if ($_GET['error'] == 2) {
|
|
$smarty->assign('rollen_pflichtfelder', "1");
|
|
$smarty->assign('rollen_error_text', "Bitte wählen Sie nur eine Option aus.");
|
|
}
|
|
|
|
$query = "SELECT roid, bezeichnung
|
|
FROM dep_rolle
|
|
ORDER BY bezeichnung ASC
|
|
";
|
|
|
|
$result = $db->query($query);
|
|
while ($row = $result->fetch_array()) {
|
|
|
|
# Daten aufbereiten für zurückbutton
|
|
if (isset($_SESSION["rollen_roid"])) {
|
|
if ($_SESSION["rollen_roid"] == $row[roid]) {
|
|
$select = 'Y';
|
|
} else {
|
|
$select = 'N';
|
|
}
|
|
} else {
|
|
$select = '';
|
|
}
|
|
|
|
$row['select'] = $select;
|
|
$value1[] = $row;
|
|
}
|
|
$smarty->assign('table_data', $value1);
|
|
|
|
}
|
|
|
|
if ($action == 'admin') {
|
|
|
|
if (isset($_POST['rolle'])) {
|
|
$_SESSION["rollen_rolle"] = $_POST['rolle'];
|
|
} else {
|
|
if (!isset($_SESSION["rollen_rolle"])) {
|
|
$_SESSION["rollen_rolle"] = "";
|
|
}
|
|
}
|
|
if (isset($_POST['rolle_neu'])) {
|
|
$_SESSION["rollen_rolle_neu"] = $_POST['rolle_neu'];
|
|
} else {
|
|
if (!isset($_SESSION["rollen_rolle_neu"])) {
|
|
$_SESSION["rollen_rolle_neu"] = "";
|
|
}
|
|
}
|
|
|
|
if ($_SESSION["rollen_rolle_neu"] == "" AND $_SESSION["rollen_rolle"] == "") {
|
|
$fehler = 1;
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=$fehler\">";
|
|
}
|
|
|
|
|
|
if ($_SESSION["rollen_rolle_neu"] != "" AND $_SESSION["rollen_rolle"] != "") {
|
|
$fehler = 2;
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=$fehler\">";
|
|
}
|
|
|
|
if ($_SESSION["rollen_rolle"] != "") {
|
|
# Problem ist, dass man bei der Startseite mit unterschiedlichen Werten kommt. Einmal übers Dropdown mit der roid
|
|
# Bei Neuanlage nur mit der Bezeichnung. Diese haben noch keine roid.
|
|
# Ziel ist es in diesem Schrit auf die einheitliche session[rollen_roid] zu kommen.
|
|
|
|
# Hier kommt die roid direkt über das Dropdown, daher kann sie direkt in die neue Session umgeschrieben werden
|
|
$roid = $_SESSION["rollen_rolle"];
|
|
$_SESSION["rollen_roid"] = $roid;
|
|
}
|
|
|
|
if ($_SESSION["rollen_rolle_neu"] != "" AND isset($_SESSION["rollen_rolle_neu"])) {
|
|
# Hier muss zunächst der Wert aus dem Textfeld eingefügt werden. Der neue Wert wird dann zur session[rollen_roid]
|
|
|
|
|
|
|
|
# Prüfen, ob es den Datensatz bereits gibt
|
|
$result0 = $db->query("SELECT roid
|
|
FROM dep_rolle
|
|
WHERE bezeichnung = '$_SESSION[rollen_rolle_neu]'
|
|
");
|
|
$row0 = $result0->fetch_array();
|
|
|
|
# Wenns den String noch nicht gibt, einfügen. Sonst roid übernehmen
|
|
if ($row0['roid'] == "") {
|
|
#$db = dbconnect();
|
|
|
|
# Beim bearbeiten des Rollennamens findet er die bezeichnung nach Änderung nicht mehr und php würde insert machen
|
|
# Wenn session[roid] gesetzt ist, dann ändern
|
|
if (!isset($_SESSION["rollen_roid"])) {
|
|
$sql1 = $db->query("INSERT INTO dep_rolle ( bezeichnung)
|
|
VALUES ('$_SESSION[rollen_rolle_neu]')");
|
|
$roid = $db->insert_id;
|
|
} else {
|
|
$roid = $_SESSION["rollen_roid"];
|
|
}
|
|
|
|
} else {
|
|
$roid = $row0['roid'];
|
|
}
|
|
|
|
$_SESSION["rollen_roid"] = $roid;
|
|
}
|
|
|
|
# Hier gibt es dann bei beiden Varianten (Dropdown / Textfeld) die session[rollen_roid]
|
|
$result1 = $db->query("SELECT bezeichnung
|
|
FROM dep_rolle
|
|
WHERE roid = '$_SESSION[rollen_roid]'
|
|
");
|
|
$row1 = $result1->fetch_array();
|
|
$smarty->assign('rollen_bezeichnung', "$row1[bezeichnung]");
|
|
|
|
# Abfragen der zugewiesenen Rechte ohne abhängige Rechte(parent) Diese werden automatisch vergeben
|
|
$result_anz1 = $db->query("SELECT count(*) Anz
|
|
FROM dep_rollen_rechte_zuord a, dep_rechte b
|
|
WHERE a.reid = b.reid
|
|
AND a.roid = '$_SESSION[rollen_roid]'
|
|
");
|
|
$row_anz1 = $result_anz1->fetch_array();
|
|
$smarty->assign('rollen_anzahl_rechte', "$row_anz1[Anz]");
|
|
|
|
$result_anz2 = $db->query("SELECT count(*) Anz
|
|
FROM dep_rollen_user_zuord
|
|
WHERE roid = '$_SESSION[rollen_roid]'
|
|
");
|
|
$row_anz2 = $result_anz2->fetch_array();
|
|
$smarty->assign('rollen_anzahl_user', "$row_anz2[Anz]");
|
|
|
|
|
|
$result_anz3 = $db->query("SELECT count(*) Anz
|
|
FROM dep_user
|
|
WHERE imtuid NOT IN (SELECT distinct imtuid FROM dep_rollen_user_zuord)
|
|
");
|
|
$row_anz3 = $result_anz3->fetch_array();
|
|
$smarty->assign('rollen_anzahl_ohnerechte', "$row_anz3[Anz]");
|
|
|
|
# Wenn Benutzer oder Rechte der Rolle zugeordnet sind, darf nicht gelöscht werden
|
|
if ($row_anz1['Anz'] == 0 AND $row_anz2['Anz'] == 0) {
|
|
$smarty->assign('rollen_button_del', "1");
|
|
} else {
|
|
$smarty->assign('rollen_button_del', "2");
|
|
}
|
|
|
|
$query = "SELECT vorname, nachname
|
|
FROM dep_user a, dep_rollen_user_zuord b, dep_rolle c
|
|
WHERE a.imtuid=b.imtuid
|
|
AND b.roid= c.roid
|
|
AND c.roid = '$_SESSION[rollen_roid]'";
|
|
|
|
$result = $db->query($query) or die("Cannot execute query 1a");
|
|
|
|
|
|
$bez_user = "";
|
|
while ($row = $result->fetch_array()) {
|
|
$bez_user .= "$row[vorname] $row[nachname]<br>";
|
|
}
|
|
$smarty->assign('rollen_zugeordnete_user', $bez_user);
|
|
|
|
# Abfreagen der zugewiesenen Rechte ohne abhängige Rechte(parent) Diese werden automatisch vergeben
|
|
$query = "SELECT beschreibung
|
|
FROM dep_rechte a, dep_rollen_rechte_zuord b
|
|
WHERE a.reid=b.reid
|
|
AND b.roid = '$_SESSION[rollen_roid]'
|
|
ORDER BY bereich ASC, sort_order ASC
|
|
";
|
|
|
|
$result = $db->query($query) or die("Cannot execute query 2");
|
|
|
|
$bez_rechte = "";
|
|
while ($row = $result->fetch_array()) {
|
|
$bez_rechte .= "$row[beschreibung]<br>";
|
|
}
|
|
|
|
$smarty->assign('rollen_zugeordnete_rechte', $bez_rechte);
|
|
|
|
|
|
$query = "SELECT vorname, nachname
|
|
FROM dep_user
|
|
WHERE imtuid NOT IN (SELECT distinct imtuid FROM dep_rollen_user_zuord)";
|
|
|
|
$result = $db->query($query) or die("Cannot execute query 3");
|
|
|
|
$bez_user_ohne_rolle = "";
|
|
while ($row = $result->fetch_array()) {
|
|
$bez_user_ohne_rolle .= "$row[vorname] $row[nachname]<br>";
|
|
}
|
|
$smarty->assign('rollen_user_ohnezugeordnete_rolle', $bez_user_ohne_rolle);
|
|
}
|
|
|
|
|
|
# Löschung der Rolle
|
|
if ($action == 'del') {
|
|
$roid = $_SESSION["rollen_roid"];
|
|
$sql = $db->query("DELETE FROM dep_rolle WHERE roid=$roid");
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=?new=1\">";
|
|
}
|
|
|
|
# Bearbeiten der Rolle
|
|
if ($action == 'edit') {
|
|
$roid = $_SESSION["rollen_roid"];
|
|
|
|
$query = $db->query("SELECT bezeichnung
|
|
FROM dep_rolle
|
|
WHERE roid='$roid'
|
|
");
|
|
$row = $query->fetch_array();
|
|
$smarty->assign('rollen_edit_bez', "$row[bezeichnung]");
|
|
}
|
|
|
|
if ($action == 'edit1') {
|
|
$roid = $_SESSION["rollen_roid"];
|
|
$sql1 = $db->query("UPDATE dep_rolle
|
|
SET bezeichnung = '$_POST[rolle_neu]'
|
|
WHERE roid='$roid'
|
|
");
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?action=admin\">";
|
|
}
|
|
|
|
|
|
|
|
if ($action == 'rechte') {
|
|
|
|
$roid = $_SESSION["rollen_roid"];
|
|
|
|
#$db = dbconnect();
|
|
$query = "SELECT reid, beschreibung, bereich
|
|
FROM dep_rechte
|
|
ORDER BY sort_order ASC";
|
|
$result = $db->query($query) or die("Cannot execute query3");
|
|
|
|
while ($row = $result->fetch_array()) {
|
|
|
|
#$db = dbconnect();
|
|
$bearb_adm = $db->query("SELECT DISTINCT 1
|
|
FROM dep_rollen_rechte_zuord
|
|
WHERE reid = '$row[reid]'
|
|
AND roid='$roid'");
|
|
$admin = $bearb_adm->fetch_array();
|
|
|
|
|
|
switch ($row['bereich']) {
|
|
case "ADA":
|
|
$bereich = "Administration";
|
|
break;
|
|
case "j":
|
|
$bereich = "Jahrgangsabhängig";
|
|
break;
|
|
case "o":
|
|
$bereich = "keine Zuordnung";
|
|
break;
|
|
case "s":
|
|
$bereich = "Statistik";
|
|
break;
|
|
default:
|
|
$bereich = "keine Zuordnung";
|
|
}
|
|
|
|
$row['bereich'] = $bereich;
|
|
$row['select'] = $admin[0];
|
|
$value2[] = $row;
|
|
}
|
|
$smarty->assign('table_data1', $value2);
|
|
}
|
|
|
|
|
|
if ($action == 'rechte1') {
|
|
|
|
$roid = $_SESSION["rollen_roid"];
|
|
$sql_del = $db->query("DELETE FROM dep_rollen_rechte_zuord WHERE roid = $roid");
|
|
|
|
if (isset($_POST['admre'])) {
|
|
$rechte = $_POST['admre'];
|
|
} else {
|
|
$rechte = 0;
|
|
}
|
|
|
|
for ($i = 0; $i < sizeof($rechte); $i++) {
|
|
|
|
# Reguläre Rechte, die im Dropdownmenü gewählt wurden erfassen
|
|
$sql = $db->query("INSERT INTO dep_rollen_rechte_zuord (roid, reid)
|
|
VALUES
|
|
($roid, '$rechte[$i]')");
|
|
|
|
}
|
|
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?action=admin\">";
|
|
}
|
|
|
|
|
|
if ($action == 'user') {
|
|
|
|
$roid = $_SESSION["rollen_roid"];
|
|
|
|
$result1 = $db->query("SELECT bezeichnung
|
|
FROM dep_rolle
|
|
WHERE roid = '$roid'
|
|
");
|
|
$row1 = $result1->fetch_array();
|
|
$smarty->assign('rollen_bezeichnung', "$row1[bezeichnung]");
|
|
|
|
#$db = dbconnect();
|
|
$query = "SELECT imtuid, vorname, nachname
|
|
FROM dep_user
|
|
WHERE imtuid not in (select imtuid from dep_rollen_user_zuord where roid = $roid)
|
|
ORDER BY nachname ASC, vorname ASC";
|
|
$result = $db->query($query) or die("Cannot execute query4");
|
|
|
|
while ($row = $result->fetch_array()) {
|
|
|
|
|
|
$beschreibung = "$row[nachname], $row[vorname]";
|
|
|
|
$row['beschreibung'] = $beschreibung;
|
|
$value1[] = $row;
|
|
}
|
|
$smarty->assign('table_data1', $value1);
|
|
|
|
#
|
|
|
|
$rollen_anz = $db->query("SELECT count(*) Anz
|
|
FROM dep_user a, dep_rollen_user_zuord b
|
|
WHERE a.imtuid=b.imtuid
|
|
AND b.roid = '$roid'");
|
|
$row_rollenanz = $rollen_anz->fetch_array();
|
|
$smarty->assign('rollen_rollenanz', $row_rollenanz['Anz']);
|
|
|
|
$query = "SELECT a.imtuid, vorname, nachname
|
|
FROM dep_user a, dep_rollen_user_zuord b
|
|
WHERE a.imtuid=b.imtuid
|
|
AND b.roid = '$roid'
|
|
ORDER BY nachname ASC, vorname ASC";
|
|
|
|
$result = $db->query($query) or die("Cannot execute query5");
|
|
|
|
while ($row = $result->fetch_array()) {
|
|
$value2 = '';
|
|
$query1 = "SELECT a.roid roid_ges, bezeichnung
|
|
FROM dep_rolle a, dep_rollen_user_zuord b
|
|
WHERE a.roid=b.roid
|
|
AND b.imtuid='$row[imtuid]'
|
|
ORDER BY bezeichnung asc";
|
|
$result1 = $db->query($query1) or die("Cannot execute query1");
|
|
|
|
|
|
while ($row2 = $result1->fetch_array()) {
|
|
/*
|
|
array_push($table_data2, array(
|
|
'imtuid' => $row['imtuid'],
|
|
'roid_ges' => $row2['roid_ges'],
|
|
'bezeichnung' => $row2['bezeichnung']
|
|
)
|
|
);
|
|
*/
|
|
$row2['imtuid'] = $row['imtuid'];
|
|
$value2[] = $row2;
|
|
}
|
|
|
|
|
|
/*
|
|
array_push($outer_loop, array(
|
|
'imtuid' => $row['imtuid'],
|
|
'vorname' => $row['vorname'],
|
|
'nachname' => $row['nachname'],
|
|
'inner' => $table_data2
|
|
)
|
|
);
|
|
*/
|
|
$row['inner'] = $value2;
|
|
$value3[] = $row;
|
|
}
|
|
$smarty->assign('outer_loop', $value3);
|
|
}
|
|
|
|
|
|
if ($action == 'user1') {
|
|
$roid = $_SESSION["rollen_roid"];
|
|
|
|
if (isset($_POST['user'])) {
|
|
$user = $_POST['user'];
|
|
} else {
|
|
$user = 0;
|
|
}
|
|
|
|
for ($i = 0; $i < sizeof($user); $i++) {
|
|
|
|
$result0 = $db->query("SELECT count(*) Anz
|
|
FROM dep_rollen_user_zuord
|
|
WHERE imtuid = '$user[$i]'
|
|
AND roid = '$roid'
|
|
");
|
|
$add_user = $result0->fetch_array();
|
|
|
|
if ($add_user['Anz'] == 0) {
|
|
$sql = $db->query("INSERT INTO dep_rollen_user_zuord (roid, imtuid)
|
|
VALUES
|
|
($roid, '$user[$i]')
|
|
");
|
|
}
|
|
}
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?action=user\">";
|
|
}
|
|
|
|
# Löschung der Rolle
|
|
if ($action == 'deluserrol') {
|
|
$roid = $_GET["roid"];
|
|
$imtuid = $_GET["imtuid"];
|
|
|
|
$sql = $db->query("DELETE FROM dep_rollen_user_zuord WHERE roid=$roid AND imtuid='$imtuid'");
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=?action=user\">";
|
|
}
|
|
|
|
$smarty->assign('action', "$action");
|
|
$smarty->display("$template/$templatename");
|
|
?>
|