check_login('user/'); $this->data['title'] = 'Benutzer-Administration'; } function add($param='') { $this->check_login('user/add/'); $this->data['title'] = "Neuen Benutzer anlegen"; if ( $param == 'save') { $data = ( isset( $_POST['fl'] ))? $_POST['fl']: $this->goToTarget('user/add/'); $this->functions->needs('validation'); $val = new validation(); $val->set_rule('mail', 'email'); $val->set_msg('mail', 'Bitten geben Sie eine gültige e-mail-Adresse an.'); $errors = $val->validate_form($data); if( $this->model->doesnt_exist($data['name']) == FALSE ) { $errors[] = 'Der Username ist bereits vergeben, bitte verwenden Sie einen anderen Namen.'; } if ( !isset($data['password1']) OR ( empty($data['password1']) AND empty($data['password2']) ) ) { $data['password1'] = $data['password2'] = $this->model->generate_PW(); } if ( $data['password1'] != $data['password2'] ) { $errors[] = 'Es wurden zwei verschiedene Passwörter eingetragen'; } if ( count($errors) == 0 ) { $created = $this->model->create_user($data); $msg = ( $created == TRUE )? 'Benutzer '.$data['name'].' wurde angelegt': 'Fehler beim Anlegen des neuen Benutzers'; $this->flash($msg); if ( $created == TRUE ) { $sent = $this->model->notify_user($data['name'], $data['password1']); $msg = ( $sent == TRUE )? 'Benutzer ' . $data['name'] . ' wurde per mail an ' . $data['mail'] . ' informiert.': 'Fehler beim versenden der mail: ' . $sent; $this->flash($msg); } } else { $this->data += $data; $msg = implode( '
', $errors ); $this->flash($msg); } } } function edit($params) { @list($user, $action) = explode('/', $params); if ( !isset($user) OR !is_numeric($user) ) $this->goToTarget('user/'); $this->check_login('user/edit/'.$user); if ( isset($action) AND $action == 'save' ) { $data = ( isset( $_POST['fl'] ))? $_POST['fl']: $this->goToTarget('user/'); $this->functions->needs('validation'); $val = new validation(); $val->set_rule('email', 'email'); $val->set_msg('email', 'Bitten geben Sie eine gültige e-mail-Adresse an.'); $errors = $val->validate_form($data); if ( $data['password1'] == '' ) { unset($data['password1'], $data['password2']); } else { if ( $data['password1'] != $data['password2'] ) { $errors[] = 'Es wurden zwei verschiedene Passwörter eingetragen'; } } if ( count($errors) == 0 ) { $updated = $this->model->update_user($data, $user); $msg = ( $updated == TRUE )? 'Benutzer '.$user.' wurde aktualisiert': 'Fehler beim Aktialisieren des Benutzers ('.$user.')' ; $this->flash($msg); $this->goToTarget('user/'); } else { $this->data += $data; $msg = implode( '
', $errors ); $this->flash($msg); } } else { /* Formular anzeigen */ $result = $this->datamodel->retrieve('user', '*', 'id="'.$user.'"', '' ,'1'); unset($result['password']); $this->data += $result; $this->data['title'] = "Benutzer ".$result['name']." bearbeiten"; } } function del($user) { $user_number = (int) $user; $this->check_login('user/del/'.$user); $this->data['title'] = "Benutzeraccount löschen"; if ( $user_number > 0 AND $user_number == $user ) { $user = $user_number; } $this->data = $this->model->get_data('user', $user, 'name'); if ( $this->data['name'] != $_SESSION['username'] ) { $this->flash('Sie können nur Ihren eigenen Benutzeraccount löschen.'); $this->goToTarget('user/'); } else { $this->data['title'] = 'Benutzer "'.$this->data['name'].'" löschen'; if ( is_string($user) ) { $this->flash('Warnung: Der Benutzeraccount wird endgültig gelöscht, wenn sie den unten stehenden Löschknopf betätigen.'); } elseif ( is_numeric($user) OR empty($user) ) { $result = ( $this->datamodel->del('user', $user) )? 'Benutzeraccount von '.$_SESSION['username'].' gelöscht.': 'Fehler beim Löschen des Benutzeraccounts '.$_SESSION['username']; $this->flash($result); $this->logaction($result); $this->goToTarget(ADMINMODULE.'/logout/'); } } } /** * Neuen Benutzer per e-mail informieren * * Ein neu angelegter Benutzer erhält eine e-mail mit den Zugangsdaten. * Wenn die mail nicht abgeschickt werden kann, werden die Zugangsdaten * auf dem Bildschirm ausgegeben. * * @param array $data Array aus Username, Passwort und e-mail-Adresse * @return array erfolgreicher mailversand und Statusmeldung. */ function _notifyUser($data) { $content = "Für Sie wurde ein Benutzerkonto für die Administration der Internetseite \"http://".$_SERVER['HTTP_HOST']."\" eingerichtet.\n\nIhre Zugangsdaten lauten:\nBenutzername:\t".$data['name']."\nPasswort:\t".$data['password']."\n\nBitte ändern Sie das Passwort bei Ihrer ersten Anmeldung auf \"http://".$_SERVER['HTTP_HOST']."/user/\"."; $result = $this->datamodel->retrieve(ADMINMODULE.'_options', '*', "optionname='SEITENTITEL'", '', '1'); $seitentitel = $result['value']; $config[mailreceipient] = $data['email']; $config[mailtopic] = '['.$seitentitel.'] Benutzerkonto angelegt'; $config[mailfrom] = 'usermanagement@'.$_SERVER['HTTP_HOST']; if ( mail($config['mailreceipient'],$config['mailtopic'],$content, "From: {$config[mailfrom]}") ) { $notify['mailed'] = TRUE; $notify['status'] = "Benutzer wurde per e-mail informiert."; } else { $notify['mailed'] = FALSE; $notify['status'] = "

Fehler

Auf diesem Server ist kein Mailversand möglich. Bitte teilen Sie dem neuangelegten Benutzer die folgende Nachricht mit:

".nl2br($content); } return $notify; } function common() { if ( isset($_SESSION['username']) ) { $this->data += $this->datamodel->retrieve('user', 'id AS my_id, email AS my_email, name AS my_name, level AS my_level', "name = '" . $_SESSION['username'] . "'", '', '1'); } $this->functions->needs('bereiche'); return TRUE; } } ?>