Benutzerdaten über ein Formular bearbeiten

Die Systembenutzer von Weblication® CMS können Sie auch über eigene Formulare bearbeiten. Die Benutzerdaten ändern Sie über ein entsprechendes Formular unabhängig von der Weblication® Benutzerverwaltung.

Zusätzlich zur Weblication® CMS Benutzerverwaltung können Sie in Ihren Webseiten auch eigene Formulare für den Zugriff auf Benutzerdaten einsetzen. Ermöglichen Sie es Benutzern, Ihre eigenen Benutzerdaten (Vorname, Nachname, E-Mail Adresse, Strasse, Ort, etc.) zu ändern. Ebenso können Sie das Formular für einen definierten Benutzerkreis (z.B. Chefredakteure) so anpassen, dass diese Benutzer auch andere Benutzer bearbeiten können. Vergewissern Sie sich, dass dieser Zugriff auf Benutzerdaten im von Ihnen gedachten Rahmen bleibt!

Nachfolgend ein Formularbeispiel für die Auflistung aller Benutzer über eine Auswahlbox. Die Benutzerdaten des jeweils ausgewählten Benutzers können über das definierte Formular bearbeitet werden.

Schränken Sie den Zugriff auf andere Benutzer über entsprechende Abfragen ein. Auf diese Weise können Sie z.B. registrierten öffentlichen Benutzern die Möglichkeit geben, nur ihre eigenen Benutzerdaten anpassen zu können.

Hinweis:
Alternativ steht Ihnen auch ein Weblic® ("Persönliche Daten ändern Formular") zur Verfügung, das Sie über das Weblics® Portal installieren können (siehe weiterführende Links unten).

Beispiel: HTML-Seite mit Formular zur Benutzerverwaltung (z.B. benutzerverwaltung.php)

<?php include($_SERVER['DOCUMENT_ROOT'].'/weblication/grid.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">
<html>
<head>
  <title>Benutzerverwaltung</title>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php

  $usersQuery = array();
  
  $usersQuery['filterset']   = array('type' => 'and'); 
  //$usersQuery['filterset'][] = array('wPath' => '/wUser/type/@value', 'operator' => '==', 'condition' => 'standard');   
  
  $users = wUsers::selectUsers($usersQuery);
  
  if(wUserCur::getType() == 'admin'){
  
    print '<h1>Benutzerverwaltung</h1>';  
    print '<div>';  
    print '<select onchange="location.href=\'?user=\'+this.value">';
    
    foreach($users as $user){
      print '<option value="'.$user.'">'.wUserData::getData($user, 'surname').', '.wUserData::getData($user, 'firstname').' ('.$user.')</option>';    
  
    }
    print '</select>';  
    print '</div><hr />';
  
  }
  else{
    print '<span style="color:#FF0000">Auf die Benutzerauswahl erhalten nur Administratoren Zugriff!</span><br />';
  }

  $userNameCur = wRequest::getParameterSecure('user');
  
  if($userNameCur != '' && wUserCur::getType() == 'admin'){
    // zur Bearbeitung muss der URL der Benutzer mitgegeben werden, z.B.: ?user=mustermann

    print '<h2>Benutzer '.$userNameCur.' bearbeiten</h2>';

    $formular = new wForm();

    $formular->setVar('urlForm', $_SERVER['PHP_SELF']);
    $formular->setVar('userName', $userNameCur);
    $formular->addElement('input', 'firstname', 'Vorname*', array('value' => wUserData::getData($userNameCur, 'firstname'), 'validators' => array(array('type' => 'required', 'errorMessage' => 'Bitte geben Sie einen Namen an'))));
    $formular->addElement('input', 'surname',  'Nachname*', array('value' => wUserData::getData($userNameCur, 'surname'), 'validators' => array(array('type' => 'required', 'errorMessage' => 'Bitte geben Sie einen Namen an'))));    
    $formular->addElement('input', 'email', 'E-Mail*', array('value' => wUserData::getData($userNameCur, 'email'), 'validators' => array(array('type' => 'email', 'errorMessage' => 'Bitte geben Sie eine gültige E-Mail Adresse an'))));
    $formular->addElement('input', 'department', 'Abteilung', array('value' => wUserData::getData($userNameCur, 'department[@class = "business"]/@value'), 'validators' => array(array('type' => '', 'errorMessage' => ''))));
    $formular->addElement('input', 'phonePrivate', 'Telefon Privat', array('value' => wUserData::getData($userNameCur, 'phone[@class = "private"]/@value'), 'validators' => array(array('type' => '', 'errorMessage' => ''))));
    $formular->addElement('input', 'phoneBusiness', 'Telefon Business', array('value' => wUserData::getData($userNameCur, 'phone[@class = "business"]/@value'), 'validators' => array(array('type' => '', 'errorMessage' => ''))));
    $formular->addElement('selectMulti', 'groups', 'Gruppen', array());

    $formular->addElement('input', 'groupStandard', 'Standardgruppe*', array('value' => wUserData::getData($userNameCur, 'groupStandard'), 'validators' => array(array('type' => 'required', 'errorMessage' => 'Bitte geben Sie eine gültige E-Mail Adresse an'))));    
    
    foreach(wUserData::getGroups($userNameCur) as $group){
      $formular->elements['groups']->addOption($group, $group, true);
    }    
    $formular->elements['groups']->addOption('neu', 'neu', true);
        
    $formular->addElement('reset', 'reset', 'Löschen');
    $formular->addElement('submit', 'submit', 'Absenden');    

    $formular->addEventServer('onSubmit', '
      $this->setFormData(wRequest::getParameters());
  
      if(wRequest::getParameter(\'wFormAction\') == \'reset\'){
        wResponse::redirect($this->getVar("urlForm"));
      }
      else if($this->validate()){ 
        /*
        print "<pre style=\"color:red\">";
        var_dump($this->getFormData());
        var_dump($this->formData);
        print "</pre>";
        */
        wUserData::setData($this->getVar("userName"), array("firstname", "surname", "email", "phone[@class = \"business\"]/@value", "phone[@class = \"private\"]/@value"), array($this->formData["firstname"], $this->formData["surname"], $this->formData["email"], $this->formData["phonePrivate"], $this->formData["phoneBusiness"]));
        wUserData::setGroups($this->getVar("userName"), $this->formData["groups"], $this->formData["groupStandard"]);
        $this->initFormData();
        wResponse::redirect($this->getVar("urlForm"));
      }
      else{
        $this->setStatus("failed");    
        print "Fehler";
      }
    ');

    if($formular->getStatus() == 'sent'){
      print '<div style="padding:8px;background-color:#ffffff;border:solid 1px #666666">Vielen Dank für Ihre Nachricht!</div>';
      $formular->setStatus("");  
    }
    else{
      if($formular->getStatus() == 'failed'){
        $formular->setStatus(""); 
      }
      
      $formular->show();
    }
  }
  else{
    print '<span style="color:#FF0000">Auf die Benutzerbearbeitung erhalten nur Administratoren Zugriff!</span><br />';
  }  

?>
</body>