Leitgedanken/user_bearbeiten.php
2022-11-21 09:47:28 +01:00

457 lines
15 KiB
PHP

<?php
/*
# Fuer debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);
#echo __LINE__."<br>";
*/
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";
session_start();
# Wenn Seite neu aufgerufen wird, dann alle Sessions, die mit "bearbeiten_" beginnen löschen
if(isset($_GET['new']) AND $_GET['new'] == 1){;
$search_prefix = 'user_bearbeiten_';
$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_admbearb','RE')){require("lib/rechte.php");exit;}
// Rechteüberprüfung ende
if(isset($_GET['action'])){
$action = $_GET['action'];
}else{
$action = '';
}
if($action == ''){
$db = dbconnect();
$query = "SELECT vaid, vorname, nachname
FROM admin
ORDER BY nachname ASC";
$result = $db->query( $query)
or die ("Cannot execute query");
while ($row = $result->fetch_array()){
$bezeichnung ="$row[nachname], $row[vorname]";
$row['bezeichnung'] = $bezeichnung;
$value_while[] = $row;
}
$smarty->assign('table_data', $value_while);
}
if($action == 'stammdaten'){
# Daten aus Startseite speichern
if(isset($_POST['benutzer'])){
$_SESSION["user_bearbeiten_vaid"] = $_POST['benutzer'];
}else{
if(!isset($_SESSION["user_bearbeiten_vaid"])){
$_SESSION["user_bearbeiten_vaid"] = "";
}
}
# Daten aus Startseite speichern ENDE
if($_SESSION["user_bearbeiten_vaid"] == ""){
$smarty->assign('user_bearbeiten_mandatory_auswahl', "1");
}else{
$smarty->assign('user_bearbeiten_mandatory_auswahl', "2");
# Daten aufbereiten für Zurückbutton
if(isset($_SESSION["user_bearbeiten_vorname"])){
$smarty->assign('user_bearbeiten_vorname', $_SESSION["user_bearbeiten_vorname"]);
}else{
$db = dbconnect();
$result_data = $db->query("SELECT vorname FROM admin WHERE vaid='$_SESSION[user_bearbeiten_vaid]'");
$row_data = $result_data->fetch_array();
$_SESSION["user_bearbeiten_vorname"] = "$row_data[vorname]";
$smarty->assign('user_bearbeiten_vorname', $_SESSION["user_bearbeiten_vorname"]);
}
if(isset($_SESSION["user_bearbeiten_nachname"])){
$smarty->assign('user_bearbeiten_nachname', $_SESSION["user_bearbeiten_nachname"]);
}else{
$db = dbconnect();
$result_data = $db->query("SELECT nachname FROM admin WHERE vaid='$_SESSION[user_bearbeiten_vaid]'");
$row_data = $result_data->fetch_array();
$_SESSION["user_bearbeiten_nachname"] = "$row_data[nachname]";
$smarty->assign('user_bearbeiten_nachname', $_SESSION["user_bearbeiten_nachname"]);
}
if(isset($_SESSION["user_bearbeiten_mail"])){
$smarty->assign('user_bearbeiten_mail', $_SESSION["user_bearbeiten_mail"]);
}else{
$db = dbconnect();
$result_data = $db->query("SELECT mail FROM admin WHERE vaid='$_SESSION[user_bearbeiten_vaid]'");
$row_data = $result_data->fetch_array();
$_SESSION["user_bearbeiten_mail"] = "$row_data[mail]";
$smarty->assign('user_bearbeiten_mail', $_SESSION["user_bearbeiten_mail"]);
}
# Daten aufbereiten für Zurückbutton ENDE
}
}
if($action == 'profil'){
# Daten aus Stammdaten speichern
if(isset($_POST['vorname'])){
$_SESSION["user_bearbeiten_vorname"] = $_POST['vorname'];
}
if(isset($_POST['nachname'])){
$_SESSION["user_bearbeiten_nachname"] = $_POST['nachname'];
}
if(isset($_POST['mail'])){
$_SESSION["user_bearbeiten_mail"] = $_POST['mail'];
}
# Daten aus Stammdaten speichern ENDE
if ($_SESSION["user_bearbeiten_mail"] == "" or $_SESSION["user_bearbeiten_nachname"] == "" or $_SESSION["user_bearbeiten_vorname"] == ""){ // Fehler, falls Pflichtfelder unausgef&uuml;llt
$smarty->assign('user_bearbeiten_mandatory', "1");
}else{
$smarty->assign('user_bearbeiten_mandatory', "2");
$db = dbconnect();
$query = "SELECT rid, bezeichnung FROM admin_rolle ORDER BY bezeichnung ASC";
$result = $db->query( $query)
or die ("Cannot execute query");
while ($row = $result->fetch_array()){
# Daten aufbereiten für zurückbutton
if(isset($_SESSION["user_bearbeiten_profil"])){
if(@in_array($row['rid'], $_SESSION["user_bearbeiten_profil"])){
$select = "Y";
}else{
$select = "N";
}
}else{
# Beim ersten bearbeiten ist die Session noch nicht gesetzt, daher die Daten aus DB holen
$result_data = $db->query("SELECT rozuid, rid FROM admin_rollen_user_zuord WHERE vaid='$_SESSION[user_bearbeiten_vaid]'");
while ($row_data = $result_data->fetch_array()){
$_SESSION["user_bearbeiten_profil"][] = $row_data['rid'];
}
# Die Variable ist nur für das Speichern damit man zuordnen kann, was der alte Wert war beim update
$_SESSION["user_bearbeiten_profil_rozuid"] = $row_data['rozuid'];
if(@in_array($row['rid'], $_SESSION["user_bearbeiten_profil"])){
$select = "Y";
}else{
$select = "N";
}
}
$row['select'] = $select;
$value[] = $row;
}
$smarty->assign('table_data', $value);
}
}
if($action == 'passwort'){
# Daten aufbereiten für Zurückbutton
if(isset($_SESSION["user_bearbeiten_passwort"])){
$smarty->assign('user_bearbeiten_passwort_check', $_SESSION["user_bearbeiten_passwort"]);
}else{
# Standardwert auf N
$smarty->assign('user_bearbeiten_passwort_check', "N");
}
# Daten aufbereiten für Zurückbutton ENDE
# Daten aus Profil speichern
if(isset($_POST['profil'])){
$_SESSION["user_bearbeiten_profil"] = $_POST['profil'];
}
# Beim zurückbutton darf die Variable nicht gelöscht werden, nur wenn man die Daten aus Stammdaten sendet. Variable back wird beim Zurückbutton mitgegeben
if(sizeof($_POST['profil']) == "0" AND !isset($_GET["back"])){
unset($_SESSION["user_bearbeiten_profil"]);
}
if ($_SESSION["user_bearbeiten_profil"][0] == ""){ // Fehler, falls Pflichtfelder unausgef&uuml;llt
$smarty->assign('user_bearbeiten_mandatory_profil', "1");
}else{
$smarty->assign('user_bearbeiten_mandatory_profil', "2");
}
}
if($action == 'inaktiv'){
# Daten aufbereiten für Zurückbutton
if(isset($_SESSION["user_bearbeiten_inaktiv"])){
$smarty->assign('user_bearbeiten_inaktiv_check', $_SESSION["user_bearbeiten_inaktiv"]);
}else{
$result_data = $db->query("SELECT inaktiv FROM admin WHERE vaid='$_SESSION[user_bearbeiten_vaid]'");
$row_data = $result_data->fetch_array();
$_SESSION["user_bearbeiten_inaktiv"] = $row_data['inaktiv'];
$smarty->assign('user_bearbeiten_inaktiv_check', $_SESSION["user_bearbeiten_inaktiv"]);
}
# Daten aufbereiten für Zurückbutton ENDE
# Daten aus Passwort speichern
if(isset($_POST['passwort'])){
$_SESSION["user_bearbeiten_passwort"] = $_POST['passwort'];
}
# Daten aus Passwort speichern ENDE
}
if($action == 'overview'){
# Daten aus "inaktiv" speichern
if(isset($_POST['inaktiv'])){
$_SESSION["user_bearbeiten_inaktiv"] = $_POST['inaktiv'];
}
# Daten aus "inaktiv" speichern ENDE
#echo "<hr>";
#echo nl2br(print_r($_SESSION,true));
#echo "<hr>";
if($_SESSION["user_bearbeiten_passwort"] == 'J'){
$passwd = "Ja";
}else{
$passwd = "Nein";
}
if($_SESSION["user_bearbeiten_inaktiv"] == 'J'){
$inaktiv = "Ja";
}else{
$inaktiv = "Nein";
}
$profil = $_SESSION['user_bearbeiten_profil'];
$bezeichnung_profil = "";
for ($i=0;$i<sizeof($profil);$i++) {
$result_profil = $db->query("SELECT bezeichnung FROM admin_rolle WHERE rid='$profil[$i]'");
$row_profil = $result_profil->fetch_array();
$bezeichnung_profil .= "$row_profil[bezeichnung]<br>";
}
$result_uid = $db->query("SELECT user FROM admin WHERE vaid='$_SESSION[user_bearbeiten_vaid]'");
$row_uid = $result_uid->fetch_array();
$smarty->assign('user_bearbeiten_vorname', $_SESSION["user_bearbeiten_vorname"]);
$smarty->assign('user_bearbeiten_nachname', $_SESSION["user_bearbeiten_nachname"]);
$smarty->assign('user_bearbeiten_user', $row_uid["user"]);
$smarty->assign('user_bearbeiten_mail', $_SESSION["user_bearbeiten_mail"]);
$smarty->assign('user_bearbeiten_profil', $bezeichnung_profil);
$smarty->assign('user_bearbeiten_passwort', $passwd);
$smarty->assign('user_bearbeiten_inaktiv', $inaktiv);
}
if($action == 'save'){
# dt_patrone
$bearbeiten_vorname = trim($_SESSION["user_bearbeiten_vorname"]);
$bearbeiten_nachname = trim($_SESSION["user_bearbeiten_nachname"]);
$bearbeiten_mail = trim($_SESSION["user_bearbeiten_mail"]);
$db = dbconnect();
$result_uid = $db->query("SELECT user FROM admin WHERE vaid='$_SESSION[user_bearbeiten_vaid]'");
$row_uid = $result_uid->fetch_array();
$benutzerkennung = $row_uid["user"];
$passwortcheck = $_SESSION["user_bearbeiten_passwort"];
$inaktiv = $_SESSION["user_bearbeiten_inaktiv"];
$vaid = $_SESSION["user_bearbeiten_vaid"];
# Profil
$bearbeiten_profil = $_SESSION["user_bearbeiten_profil"];
$bearbeiten_profil_rozuid = $_SESSION["user_bearbeiten_profil_rozuid"];
if($passwortcheck == "J"){
$passwd = md5($benutzerkennung);
# Passwort als abgelaufen markieren
$pw_expire = date("Y-m-d H:i:s", mktime(date("H"), date("i"), date("s"), date("m")-1, date("d"), date("Y"))); // ISO-8601 Format
}else{
$db = dbconnect();
$result_pwd = $db->query("SELECT passwort, pw_expire FROM admin WHERE vaid='$_SESSION[user_bearbeiten_vaid]'");
$row_pwd = $result_pwd->fetch_array();
$passwd = $row_pwd['passwort'];
$pw_expire = $row_pwd['pw_expire']; // ISO-8601 Format
}
$sql1 = $db->query("UPDATE admin
SET vorname = '$bearbeiten_vorname'
,nachname = '$bearbeiten_nachname'
,mail = '$bearbeiten_mail'
,passwort = '$passwd'
,pw_expire = '$pw_expire'
,inaktiv = '$inaktiv'
WHERE vaid = '$vaid'
");
if(!$sql1){
$error = TRUE;
$error_reason .= "Fehler beim anlegen von Stammdaten (admin)<br>";
}else{
$error = FALSE;
}
$sql = $db->query("DELETE FROM admin_rollen_user_zuord WHERE vaid='$vaid'");
for ($i=0;$i<sizeof($bearbeiten_profil);$i++) {
$sql3 = $db->query("INSERT INTO admin_rollen_user_zuord ( rid
, vaid
)
VALUES
( '$bearbeiten_profil[$i]'
, '$vaid'
)
");
if(!$sql3){
$error = TRUE;
$error_reason .= "Fehler beim anlegen der Benutzer - Rollenzuordnung (admin_rollen_user_zuord)<br>";
}else{
$error = FALSE;
}
}
if(!$error){
$smarty->assign('user_bearbeiten_inserterr', "2");
if($passwortcheck == "J"){
# Passwort wurde geändert. Anwender bekommt eine Mail
$result_abs = $db->query("SELECT vorname, nachname, mail FROM admin WHERE user='$user_admin'");
$row_abs = $result_abs->fetch_array();
$empfaenger = "$bearbeiten_mail";
$betreff = "Anmeldung LG-ON";
$text = "
<html>
<head>
<title>Anmeldung LG-ON</title>
</head>
<body>
<font face='Arial' size='2'>
Guten Tag $bearbeiten_vorname $bearbeiten_nachname!<br><br>
Ihr Passwort wurde von $row_abs[vorname] $row_abs[nachname] in Leitgedanken-Online zurückgesetzt!<br>
Nachfolgend finden Sie Ihre Zugangsdaten:
<br>
<br>
<table>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
Benutzerkennung:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$benutzerkennung</b>
</font>
</td>
</tr>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
Passwort:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$benutzerkennung</b>
</font>
</td>
</tr>
</table>
<br>
Bitte beachten Sie, dass zwischen Gro&szlig;- und<br>
Kleinschreibung unterschieden wird.
<p>
&Auml;ndern Sie bitte zu Ihrer eigenen Sicherheit das<br>
Passwort nach dem ersten Login.
<p>
Link zur Leitgedanken-Online: <a href=\"http://www.lg-on.de\">Leitgedanken-Online</a>
<p>
Diese Mail wurde automatisch generiert!<br>
Antworten Sie daher nicht auf diese Mail<br>
<br>
Vielen Dank
</body>
</html>";
$headers = "MIME-Version: 1.0\n";
#$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "From: Leitgedanken Online <admin@lg-on.de>\n";
$return = @mail($empfaenger, $betreff, $text, $headers);
if($return){ // Abfrage ob Mailversand funktioniert hat
$smarty->assign('user_bearbeiten_mailsuccess', "2"); // Mailversand
$smarty->assign('user_bearbeiten_returnmailadr', "$bearbeiten_mail"); // Mailadresse
}else{
$smarty->assign('user_bearbeiten_mailsuccess', "1"); // Kein Mailversand
}
}else{
# Passwort wurde nicht geändert
$smarty->assign('user_bearbeiten_success', "1"); // Erfolgsmeldung ausgeben
}
}else{ // ELSE IF: Wenn Insert nicht geklappt hat
$smarty->assign('user_bearbeiten_inserterr', "1");
$smarty->assign('user_bearbeiten_reason', "$error_reason"); // Kein Mailversand
} // Ende IF : Insert hat geklappt
session_destroy();
}
$smarty->assign('action', "$action");
$smarty->display("$template/$templatename");
?>