"; */ session_start(); include_once 'classes/lg-on_Smarty.class.php'; $smarty = new lgon_Smarty(); require_once("config.inc.php"); require_once("func_rollenrechte.php"); $templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html"; require_once "language/german.inc.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 $db = dbconnect(); if ($user_admin == ""){ require("index.php"); exit;} //Wenn man nicht angemeldet ist, darf man nicht auf die Seite if(!rore($user_admin,'a_userro','RE')){require("lib/rechte.php");exit;} // Rechteüberprüfung ende if(isset($_GET['action'])){ $action = $_GET['action']; }else{ $action = ''; } if($action == ''){ // Suche nach den größten Marken, für den Schnellzugriff im Menü $query = "SELECT rid, bezeichnung FROM admin_rolle ORDER BY bezeichnung ASC "; $result = $db->query( $query); while ($row = $result->fetch_array()){ # Daten aufbereiten für zurückbutton if(isset($_SESSION["rollen_rid"])){ if($_SESSION["rollen_rid"] == $row[rid]){ $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"] == ""){ $smarty->assign('rollen_mandatory_haupt', "1"); }else{ $smarty->assign('rollen_mandatory_haupt', "2"); if($_SESSION["rollen_rolle_neu"] != "" AND $_SESSION["rollen_rolle"] != ""){ $smarty->assign('rollen_invalid_haupt', "1"); }else{ $smarty->assign('rollen_invalid_haupt', "2"); if($_SESSION["rollen_rolle"] != ""){ # Problem ist, dass man bei der Startseite mit unterschiedlichen Werten kommt. Einmal übers Dropdown mit der rid # Bei Neuanlage nur mit der Bezeichnung. Diese haben noch keine rid. # Ziel ist es in diesem Schrit auf die einheitliche session[rollen_rid] zu kommen. # Hier kommt die rid direkt über das Dropdown, daher kann sie direkt in die neue Session umgeschrieben werden $rid = $_SESSION["rollen_rolle"]; $_SESSION["rollen_rid"] = $rid; } 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_rid] # Prüfen, ob es den Datensatz bereits gibt $result0 = $db->query("SELECT rid FROM admin_rolle WHERE bezeichnung = '$_SESSION[rollen_rolle_neu]' "); $row0 = $result0->fetch_array(); # Wenns den String noch nicht gibt, einfügen. Sonst rid übernehmen if($row0['rid'] == ""){ $db = dbconnect(); # Beim bearbeiten des Rollennamens findet er die bezeichnung nach Änderung nicht mehr und php würde insert machen # Wenn session[rid] gesetzt ist, dann ändern if(!isset($_SESSION["rollen_rid"])){ $sql1 = $db->query( "INSERT INTO admin_rolle ( bezeichnung) VALUES ('$_SESSION[rollen_rolle_neu]')" ); $rid = $db->insert_id; }else{ $rid = $_SESSION["rollen_rid"]; } }else{ $rid = $row0['rid']; } $_SESSION["rollen_rid"] = $rid; } # Hier gibt es dann bei beiden Varianten (Dropdown / Textfeld) die session[rollen_rid] $result1 = $db->query("SELECT bezeichnung FROM admin_rolle WHERE rid = '$_SESSION[rollen_rid]' "); $row1 = $result1->fetch_array(); $smarty->assign('rollen_bezeichnung', "$row1[bezeichnung]"); # Abfreagen der zugewiesenen Rechte ohne abhängige Rechte(parent) Diese werden automatisch vergeben $result_anz1 = $db->query("SELECT count(*) Anz FROM admin_rollen_rechte_zuord a, admin_rechte b WHERE a.admin_rolle = b.admin_rolle AND a.rid = '$_SESSION[rollen_rid]' "); $row_anz1 = $result_anz1->fetch_array(); $smarty->assign('rollen_anzahl_rechte', "$row_anz1[Anz]"); $result_anz2 = $db->query("SELECT count(*) Anz FROM admin_rollen_user_zuord WHERE rid = '$_SESSION[rollen_rid]' "); $row_anz2 = $result_anz2->fetch_array(); $smarty->assign('rollen_anzahl_user', "$row_anz2[Anz]"); $result_anz3 = $db->query("SELECT count(*) Anz FROM admin WHERE vaid NOT IN (SELECT distinct vaid FROM admin_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 admin a, admin_rollen_user_zuord b, admin_rolle c WHERE a.vaid=b.vaid AND b.rid= c.rid AND c.rid = '$_SESSION[rollen_rid]'"; $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 admin_rechte a, admin_rollen_rechte_zuord b WHERE a.admin_rolle=b.admin_rolle AND b.rid = '$_SESSION[rollen_rid]' 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 admin WHERE vaid NOT IN (SELECT distinct vaid FROM admin_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'){ $rid = $_SESSION["rollen_rid"]; $sql = $db->query( "DELETE FROM admin_rolle WHERE rid=$rid"); echo ""; } # Bearbeiten der Rolle if($action == 'edit'){ $rid = $_SESSION["rollen_rid"]; $query = $db->query("SELECT bezeichnung FROM admin_rolle WHERE rid='$rid' "); $row = $query->fetch_array(); $smarty->assign('rollen_edit_bez', "$row[bezeichnung]"); } if($action == 'edit1'){ $rid = $_SESSION["rollen_rid"]; $sql1 = $db->query( "UPDATE admin_rolle SET bezeichnung = '$_POST[rolle_neu]' WHERE rid='$rid' " ); echo ""; } if($action == 'rechte'){ $rid = $_SESSION["rollen_rid"]; $db = dbconnect(); $query = "SELECT admin_rolle, beschreibung, bereich FROM admin_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 admin_rollen_rechte_zuord WHERE admin_rolle = '$row[admin_rolle]' AND rid='$rid'"); $admin = $bearb_adm->fetch_array(); switch ($row['bereich']) { case "a": $bereich = "Administration"; break; case "b": $bereich = "Besondere Gottesdienste"; break; case "j": $bereich = "Recherche"; 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'){ $rid = $_SESSION["rollen_rid"]; $sql_del = $db->query( "DELETE FROM admin_rollen_rechte_zuord WHERE rid = $rid" ); if(isset($_POST['admre'])){ $rechte = $_POST['admre']; }else{ $rechte = 0; } for ($i=0;$iquery( "INSERT INTO admin_rollen_rechte_zuord (rid, admin_rolle) VALUES ($rid, '$rechte[$i]') " ); } echo ""; } if($action == 'user'){ $rid = $_SESSION["rollen_rid"]; $result1 = $db->query("SELECT bezeichnung FROM admin_rolle WHERE rid = '$rid' "); $row1 = $result1->fetch_array(); $smarty->assign('rollen_bezeichnung', "$row1[bezeichnung]"); $db = dbconnect(); $query = "SELECT vaid, vorname, nachname FROM admin 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 admin a, admin_rollen_user_zuord b WHERE a.vaid=b.vaid AND b.rid = '$rid'"); $row_rollenanz = $rollen_anz->fetch_array(); $smarty->assign('rollen_rollenanz', $row_rollenanz['Anz']); $query = "SELECT a.vaid, vorname, nachname FROM admin a, admin_rollen_user_zuord b WHERE a.vaid=b.vaid AND b.rid = '$rid' ORDER BY nachname ASC, vorname ASC"; $result = $db->query( $query) or die ("Cannot execute query5"); while ($row = $result->fetch_array()){ $value2 = ''; $query1 = "SELECT a.rid rid_ges, bezeichnung FROM admin_rolle a, admin_rollen_user_zuord b WHERE a.rid=b.rid AND b.vaid='$row[vaid]' ORDER BY bezeichnung asc"; $result1 = $db->query( $query1) or die ("Cannot execute query1"); while ($row2 = $result1->fetch_array()){ /* array_push($table_data2, array( 'vaid' => $row['vaid'], 'rid_ges' => $row2['rid_ges'], 'bezeichnung' => $row2['bezeichnung'] ) ); */ $row2['vaid'] = $row['vaid']; $value2[] = $row2; } /* array_push($outer_loop, array( 'vaid' => $row['vaid'], 'vorname' => $row['vorname'], 'nachname' => $row['nachname'], 'inner' => $table_data2 ) ); */ $row['inner'] = $value2; $value3[] = $row; } $smarty->assign('outer_loop', $value3); } if($action == 'user1'){ $rid = $_SESSION["rollen_rid"]; if(isset($_POST['user'])){ $user = $_POST['user']; }else{ $user = 0; } for ($i=0;$iquery("SELECT count(*) Anz FROM admin_rollen_user_zuord WHERE vaid = '$user[$i]' AND rid = '$rid' "); $add_user = $result0->fetch_array(); if($add_user['Anz'] == 0){ $sql = $db->query( "INSERT INTO admin_rollen_user_zuord (rid, vaid) VALUES ($rid, '$user[$i]') "); } } echo ""; } # Löschung der Rolle if($action == 'deluserrol'){ $rid = $_GET["rid"]; $vaid = $_GET["vaid"]; $sql = $db->query( "DELETE FROM admin_rollen_user_zuord WHERE rid=$rid AND vaid='$vaid'"); echo ""; } $smarty->assign('action', "$action"); $smarty->display("$template/$templatename"); ?>