"; */ 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 ""; } if ($_SESSION["rollen_rolle_neu"] != "" AND $_SESSION["rollen_rolle"] != "") { $fehler = 2; echo ""; } 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]
"; } $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]
"; } $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]
"; } $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 ""; } # 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 ""; } 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 ""; } 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 ""; } # 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 ""; } $smarty->assign('action', "$action"); $smarty->display("$template/$templatename"); ?>