<?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");
?>