Deaktivierung des Benutzerprofils

08. Dez 2011

Benutzer deaktivieren, die längere Zeit nicht eingeloggt waren.

Um Benutzer zu deaktiveren oder zu löschen, die sich längere Zeit nicht mehr in Weblication® CMS angemeldet haben, können Sie auf PHP-Framework Funktionen zurückgreifen.

In diesem Beispiel können Sie im Skript die Anzahl an Tagen angeben ($days), auf die seit dem letzten Login eines Benutzers geprüft wird. Bei Login in Weblication® CMS wird in der Benutzerdatei im Tag lastLogin der Unix Zeitstempel als Wert hinterlegt, auf welchen Sie für das letzte Login zurückgreifen können.

Auf diese Weise können Sie z.B. alle Benutzer auslesen, die sich (Stand heute) seit 30 Tagen nicht mehr angemeldet haben und über den generierten Link den Benutzer deaktivieren.

Das Beispiel lässt sich individuell erweitern (z.B. Benutzer benachrichtigen, Benutzerdatei löschen, etc.).

Beispiel: Benutzer über ein Skript auslesen und deaktivieren können (z.B. setUserOffline.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>Deaktivierung des Benutzerprofils</title>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  <style type="text/css">
  /*# Tabellen */
  
  body                 {margin:20px;padding:0;font-family:Arial, Sans-serif, Helvetica;font-size:12px;color:#000000;background-repeat:repeat;background-attachment:fixed;background-color:#bcbcbc}
  h1                   {font-size:25px;line-height:28px;font-weight:normal;color:#666666;padding:0;margin:0 0 16px 0}
  h2                   {font-size:19px;line-height:22px;font-weight:normal;color:#666666;padding:0;margin:0 0 12px 0}
  table                {font:inherit;color:inherit;border:none}
  tr, thead, tbody     {}
  th, td               {vertical-align:top}
  
  table.default        {width:500px;background-color:#ffffff;border-style:solid none none solid;border-width:1px;border-color:#a0a0a0;margin-bottom:12px;border-collapse:collapse;}
  table.default th     {border-style:none solid solid none;border-width:1px;border-color:#a0a0a0;padding:4px;text-align:left;background-color:#b0b0b0;color:#ffffff}
  table.default td     {border-style:none solid solid none;border-width:1px;border-color:#a0a0a0;padding:4px}
  </style>
</head>
<body>
<?php
  
  $usersQuery    = array();
  $usertype      = "public"; // Benutzertyp (falls weiter unten auf Benutzertyp public, standard oder admin gefiltert werden soll)
  $days          = "30"; // Anzahl Tage
  $lastLoginTime = time() - ($days * 24 * 60 * 60); // letzter Login vor x Tagen ($days)
  
  $usersQuery['filterset']   = array('type' => 'and'); 
  //$usersQuery['filterset'][] = array('wPath' => '/wUser/type/@value', 'operator' => '==', 'condition' => $usertype);
  //$usersQuery['filterset'][] = array('wPath' => '/wd:stat/@path', 'operator' => 'contains', 'condition' => 'wUser.php');
  $usersQuery['filterset'][] = array('wPath' => '/wUser/status/@online', 'operator' => '!=', 'condition' => 'off');
  $usersQuery['filterset'][] = array('wPath' => '/wUser/lastLogin/@value', 'operator' => '<', 'condition' => $lastLoginTime);
  $usersQuery['filterset'][] = array('wPath' => '/wd:stat/@path', 'operator' => 'pregiMatch', 'condition' => 'mu');
  
  $allowSettings = "1";
  if(wUserCur::getType() == 'admin' && $allowSettings == '1'){
  
    $users = wUsers::selectUsers($usersQuery);
    
    print '<h1>Benutzer, die sich länger als '.$days.' Tage nicht mehr angemeldet haben</h1>';  
    print '<table class="default">';  
    print '<tr><th>Benutzername</th><th>Nachname</th><th>Vorname</th><th>Status setzen</th></tr>'; 
    foreach($users as $user){
      print '<tr><td>'.$user.'</td><td>'.wUserData::getData($user, 'surname').'</td><td>'.wUserData::getData($user, 'firstname').'</td><td><img src="http://domain.dd/weblication/grid5/gui/images/icon_small/status_online.gif" alt="Benutzer aktiv" title="Benutzer aktiv"/> =&gt; <a onclick="if(!confirm(\'Wollen Sie den Benutzer wirklich deaktivieren?\'))return false" href="?action=setOffline&user='.$user.'"> <img src="http://domain.dd/weblication/grid5/gui/images/icon_small/status_offline.gif" alt="Benutzer deaktivieren" title="Benutzer deaktivieren"/> Benutzer deaktivieren</a></td></tr>';    
  
    }
    print '</table><hr />';
    
    if(wRequest::getParameter('action') == 'setOffline' && wRequest::getParameter('user') != ''){
      $user = wRequest::getParameter('user');
      wUsers::setUserOffline($user);
      wResponse::redirect($_SERVER[PHP_SELF]);
    }
  }

?>
</body>
</html>

Ähnliche Seiten

Entwicklerbereich Weblication® CMS - © Scholl Communications AG