35 include(
"inc/common.php");
50 if(isset($_GET[
'view']) && ctype_digit($_GET[
'view'])) {
51 $userId = $_GET[
'view'];
58 $details = array(
'userid' => $userDetails[
'id'],
59 'username' =>$userDetails[
'username'],
60 'firstname' => $userDetails[
'firstname'],
61 'lastname'=>$userDetails[
'lastname'],
62 'email' => $userDetails[
'email'],
63 'mobile'=>$userDetails[
'mobile'],
64 'title' =>$userDetails[
'title']
69 $smarty->assign(
'active', $userDetails[
'active']);
72 $smarty->assign(
'details',$details);
78 }
else if(isset($_GET[
'id'])&& ctype_digit($_GET[
'id'])) {
82 header(
"Location: users.php");
87 $userId = $_GET[
'id'];
91 $selfInformation = $userId == $loggedInUser->userId;
97 if(!empty($_POST[
'permanent'])&&($_POST[
'permanent']==
'permanent')) {
101 if(!empty($_POST[
'permanentDelete'])) {
103 if($userdetails[
'active']==-1) {
106 $deletions = $_POST[
'permanentDelete'];
110 $errors[] =
"Endgültiges Löschen derzeit deaktiviert.";
115 if ($deletionCount > 0) {
117 if($deletionCount == 1) {
118 $deletionCount =
"Ein";
120 $successes[] =
lang(
"ACCOUNT_DELETIONS_SUCCESSFUL", array($deletionCount));
122 header(
"Refresh: 3; users.php");
125 if ($deletionCount === FALSE) {
131 $errors[] =
"Dieses Benutzerkonto kann nicht gelöscht werden.";
136 $errors[] =
"Nur \'gelöschte\' Benutzer können endgültig gelöscht werden.";
141 $errors[] =
"Keine Berechtigung";
146 if (!empty($_POST[
'delete'])) {
149 $deletions = $_POST[
'delete'];
152 $errors[] =
"Löschen derzeit deaktiviert.";
155 if ($deletionCount > 0) {
157 if($deletionCount == 1) {
158 $deletionCount =
"Ein";
160 $successes[] =
lang(
"ACCOUNT_DELETIONS_SUCCESSFUL", array($deletionCount));
162 header(
"Refresh: 3; users.php");
165 if ($deletionCount === FALSE) {
168 $errors[] =
"Dieses Benutzerkonto kann nicht gelöscht werden.";
173 $errors[] =
"Keine ausreichende Berechtigung für diese Aktion.";
178 if (isset($_POST[
'state'])) {
182 if ($_POST[
'state'] ===
"lock" && $userdetails[
'active'] <> 2) {
186 $successes[] =
lang(
"ACCOUNT_MANUALLY_LOCKED", array($userdetails[
'username']));
195 }
else if ($_POST[
'state'] ===
"unlock" && $userdetails[
'active'] <> 1) {
198 $successes[] =
lang(
"ACCOUNT_MANUALLY_UNLOCKED", array($userdetails[
'username']));
203 }
else if ($_POST[
'state'] ===
"activate") {
206 $successes[] =
lang(
"ACCOUNT_MANUALLY_ACTIVATED", array($userdetails[
'username']));
212 $errors[] =
"Keine ausreichende Berechtigung für diese Aktion.";
217 if(!empty($_POST[
'updateUsername']) && strcmp($_POST[
'updateUsername'],
"update") == 0 && !$selfInformation) {
221 if(!empty($_POST[
'firstname']) && !empty($_POST[
'lastname'])) {
226 if(strcmp($username, $userdetails[
'username'])!=0) {
236 $newUsername = $username.rand(1000,9999);
240 $username = $newUsername;
257 "searchStrs" => array(
"#NEWUSERNAME#",
"#OLDUSERNAME#"),
258 "subjectStrs" => array($username, $userdetails[
'username'])
263 if (!$mail->newTemplateMsg(
"change-username.txt", $hooks)) {
264 $mail_failure =
true;
268 if (!$mail->sendMail($userdetails[
'email'],
'Neuer Benutzername')) {
269 $mail_failure =
true;
270 $errors[] =
"Der Benutzer konnte nicht über die Änderung seines Benutzernames benachrichtig werden.";
271 $errors[] =
"Der Benutzername wurde nicht geändert.";
274 $errors[] =
"Ändern des Benutzernamens fehlgeschlagen!";
276 $successes[] =
'Der Benutzername wurde aktualisiert.';
290 if(!empty($_POST[
'email'])) {
292 if(strcmp($userdetails[
'email'], $_POST[
'email']) != 0) {
293 $email = trim($_POST[
"email"]);
302 $errors[] =
lang(
"ACCOUNT_EMAIL_IN_USE",array($email));
315 $activation_message =
lang(
"ACCOUNT_CHANGE_MAIL", array(
$websiteUrl, $activation_token));
319 "searchStrs" => array(
"#CHANGE-MESSAGE#",
"#ACTIVATION-KEY",
"#USERNAME#"),
320 "subjectStrs" => array($activation_message, $activation_token, $userdetails[
'username'])
322 $mail_failure =
false;
326 if (!$mail->newTemplateMsg(
"change-email.txt", $hooks)) {
327 $mail_failure =
true;
331 if (!$mail->sendMail($email,
'Bestätigung der neuen E-Mail-Adresse')) {
332 $mail_failure =
true;
333 $errors[] =
"Die Bestätigungs-E-Mail konnte nicht versendet werden.";
338 $successes[] =
"Die E-Mail-Adresse wurde geändert. Es wurde eine Validierungs-E-Mail versand.";
354 if(!empty($_POST[
'firstname'])) {
357 if(strcmp($userdetails[
'firstname'], $firstname) != 0) {
359 $errors[] =
lang(
'ACCOUNT_FIRST_INVALID_CHARACTERS');
370 if(!empty($_POST[
'lastname'])) {
373 if(strcmp($userdetails[
'lastname'], $lastname) != 0) {
375 $errors[] =
lang(
'ACCOUNT_LAST_INVALID_CHARACTERS');
388 if(!empty($_POST[
'mobile'])) {
390 $mobile = str_replace(array(
'/',
' ',
'-'),
'', trim($_POST[
"mobile"]));
391 if(strcmp($userdetails[
'mobile'], $mobile) != 0) {
398 $errors[] =
lang(
"ACCOUNT_MOBILE_IN_USE",array($mobile));
413 if(!empty($_POST[
'title'])) {
416 $title = trim(preg_replace(
"|[^A-Za-z_\-\&üÜäÄöÖß/0-9\(\)\s]{1,}|",
"", $_POST[
'title']));
417 $title = preg_replace(
"/\s{1,}/",
" ", $title);
418 if(strcmp($title, $userdetails[
'title'])!=0) {
420 $title = htmlspecialchars($title);
422 $successes[] =
"Aufgabenbereich aktualisiert";
430 if($selfInformation&&!empty($_POST[
'newPassword'])) {
431 $password = trim($_POST[
"password"]);
433 if(empty($password)) {
434 $errors[] =
"Zum Ändern des Passwortes bitte auch das alte Passwort angeben.";
438 $password_new = $_POST[
"newPassword"];
439 $password_confirm = $_POST[
"confirmPassword"];
440 $pwdErrors = array();
441 if($password_new !=
"" OR $password_confirm !=
"") {
442 if(trim($password_new) ==
"") {
443 $pwdErrors[] =
lang(
"ACCOUNT_SPECIFY_NEW_PASSWORD");
445 else if(trim($password_confirm) ==
"") {
446 $pwdErrors[] =
lang(
"ACCOUNT_SPECIFY_CONFIRM_PASSWORD");
449 $pwdErrors[] =
lang(
"ACCOUNT_NEW_PASSWORD_LENGTH",array(8,50));
451 else if($password_new != $password_confirm) {
452 $pwdErrors[] =
lang(
"ACCOUNT_PASS_MISMATCH");
456 if(count($pwdErrors) == 0) {
457 $loggedInUser->updatePassword($password_new);
460 $smarty->assign(
'changePassword',
false);
466 $errors[] =
"Das angegebene Passwort war nicht korrekt.";
473 if(!empty($_POST[
'rank'])) {
474 if($_POST[
'rank']===
'administrator') {
485 $successes[] = str_replace(
"#username#", $userdetails[
'username'],
"#username# ist jetzt \"Administrator\".");
491 }
else if($_POST[
'rank']===
'user') {
501 $successes[] = str_replace(
"#username#", $userdetails[
'username'],
"#username# ist jetzt \"Benutzer\".");
514 $postf = ($userDetails[
'valid_email']==1)?
' (validiert)':($userDetails[
'active'] == -1?
'':
' (nicht validiert)');
515 $userHasValidMail = ($userDetails[
'valid_email']==1);
518 $details = array(
'userid' => $userDetails[
'id'],
519 'username' =>$userDetails[
'username'],
520 'firstname' => $userDetails[
'firstname'],
521 'lastname'=>$userDetails[
'lastname'],
522 'email' => $userDetails[
'email'],
523 'validated' => $postf,
524 'mobile'=>$userDetails[
'mobile'],
525 'title' =>$userDetails[
'title']
529 $smarty->assign(
'currentUser',$userDetails[
'username']);
531 $smarty->assign(
'active', $userDetails[
'active']);
532 $smarty->assign(
'validMail',$userHasValidMail);
535 $smarty->assign(
'details',$details);
538 if($selfInformation===TRUE) {
557 $activeUsers = array();
558 $deletedUsers = array();
565 foreach ($userData as $user) {
567 $rank = (
isAdministrator($user[
'id'])) ? (
isRoot($user[
'id'])?
'Haupt-Administrator':
'Administrator') :
'Benutzer';
570 $lastActivity = ($user[
'lastSignInStamp'] == 0) ? NULL : $user[
'lastSignInStamp'];
574 if($user[
'active']==-1) {
575 $deletedUsers[] = array(
'id' => $user[
'id'],
576 'username' => $user[
'username'],
577 'name' => $user[
'firstname'].
' '.$user[
'lastname'],
579 'lastActivity'=> $lastActivity,
580 'status'=>
'gelöscht');
581 }
else if ($user[
'active']==0) {
582 $newUsers[] = array(
'id' => $user[
'id'],
583 'username'=>$user[
'username'],
584 'name'=>$user[
'firstname'].
' '.$user[
'lastname'],
586 'lastActivity'=> $user[
'signUpStamp'],
587 'status'=>
'nicht freigeschaltet');
589 $activeUsers[] = array(
'id' => $user[
'id'],
590 'username'=>$user[
'username'],
591 'name'=>$user[
'firstname'].
' '.$user[
'lastname'],
593 'lastActivity'=> $lastActivity,
594 'status'=> ($user[
'active'] == 0) ?
'nicht aktiviert' : (($user[
'active'] == 1) ? (
hasSessionTimedOut($user[
'id'])?
'freigeschaltet':
'online'): (($user[
'active'] == -1) ?
'gelöscht' :
'gesperrt')));
600 if(isset($_GET[
'sort']) && ctype_digit($_GET[
'sort'])) {
601 $columnIdx = $_GET[
'sort'];
602 if(isset($_GET[
'dir']) && ctype_digit($_GET[
'dir'])) {
603 $direction = ($_GET[
'dir'] == 0) ? SORT_ASC : SORT_DESC;
604 kdsort($activeUsers, $columnIdx, $direction);
605 $smarty->assign(
'sort', array(
'colIdx' => $columnIdx,
606 'direction' => $_GET[
'dir']));
611 $smarty->assign(
'isUserAdministrator', $isUserAdministrator);
612 $smarty->assign(
'users',$activeUsers);
613 $smarty->assign(
'deletedUsers',$deletedUsers);
614 $smarty->assign(
'newUsers',$newUsers);