477 lines
14 KiB
PHP
477 lines
14 KiB
PHP
<?php
|
|
/*
|
|
# Fuer debugging
|
|
error_reporting(E_ALL);
|
|
ini_set('display_errors', 1);
|
|
#echo __LINE__."<br>";
|
|
*/
|
|
|
|
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]<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 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]<br>";
|
|
}
|
|
|
|
$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]<br>";
|
|
}
|
|
$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 "<meta http-equiv=\"refresh\" content=\"0; URL=?new=1\">";
|
|
}
|
|
|
|
# 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 "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?action=admin\">";
|
|
}
|
|
|
|
|
|
|
|
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;$i<sizeof($rechte);$i++) {
|
|
|
|
# Reguläre Rechte, die im Dropdownmenü gewählt wurden erfassen
|
|
$sql = $db->query( "INSERT INTO admin_rollen_rechte_zuord (rid, admin_rolle)
|
|
VALUES
|
|
($rid, '$rechte[$i]')
|
|
" );
|
|
|
|
}
|
|
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?action=admin\">";
|
|
}
|
|
|
|
|
|
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;$i<sizeof($user);$i++) {
|
|
|
|
$result0 = $db->query("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 "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?action=user\">";
|
|
}
|
|
|
|
|
|
# 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 "<meta http-equiv=\"refresh\" content=\"0; URL=?action=user\">";
|
|
}
|
|
|
|
|
|
|
|
$smarty->assign('action', "$action");
|
|
$smarty->display("$template/$templatename");
|
|
?>
|