40.2 Informationen über den Benutzer 

Informationen über den User stehen in der Klasse JUser. Dort finden Sie zwei wichtige Eigenschaften: username enthält den Namen des Benutzers, und usertype gibt an, in welcher Gruppe er sich befindet. Zudem haben Sie über id noch Zugriff auf eine Identifikationsnummer, die bei Datenbankabfragen von Bedeutung sein kann (s. u.). Wir wollen nun statt »Hallo Joomla!« den Namen des Benutzers ausgeben. Dazu erstellen wir ein neues Modul namens »API«. Dieses Modul besteht aus den folgenden Dateien:
- mod_api.php enthält ein Gerüst des Moduls.
- helper.php führt die Aufgaben des Controllers durch.
- mod_api.xml wird für die Installation und für eventuell anzugebende Parameter auf der Einstellungsseite benötigt.
- index.html dient zur Vorbeugung gegen unberechtigten Zugriff.
- tmpl/default.php stellt das Template und somit den View-Part dar.
- tmpl/index.html dient wiederum als Sicherheitsmaßnahme.
Da das Modul auf »Hallo Joomla!« aufbaut, können Sie die Dateien einfach kopieren. Den Zugriff auf das Benutzerobjekt packen wir in die Helper-Datei. Der Übersichtlichkeit halber sollte die Klasse nun auch in ModAPIHelper umbenannt werden.
1 <?php 2 defined( '_JEXEC' ) or die( 'Restricted Access' ); 3 class ModAPIHelper { 4 public function getRandomColor() … 13 public function getUserName() { 14 $user =& JFactory::getUser(); 15 if ($user->id == 0) { 16 return "Besucher"; 17 } else { 18 return $user->username; 19 } 20 } 21 } 21 ?>
Listing 40.1 Auszug aus »helper.php«
Das Objekt mit den Daten des aktuellen Benutzers wird in Zeile 14 abgeholt. In Zeile 15 wird überprüft, ob die User-ID 0 ist. In diesem Fall gibt es keinen angemeldeten Benutzer und wir müssen unseren Gast neutral ansprechen. Als Ergebnis wird »Besucher« zurückgegeben (Zeile 16). Hat sich ein User angemeldet, so können wir ihn mit seinem Usernamen begrüßen, der dann in Zeile 17 als Rückgabewert an die Ausgabevariable übergeben wird.
Jetzt muss die zentrale Modulsteuerung angepasst werden, so dass der Benutzername an die View weitergereicht wird.
1 <?php
2 defined( '_JEXEC' ) or die( 'Restricted Access' );
3 require_once(dirname(__FILE__).DS.'helper.php');
4 $color = ModAPIHelper::getRandomColor();
5 $username = ModAPIHelper::getUserName();
6 require_once(JModuleHelper::getLayoutPath('mod_api'));
7 ?>
Listing 40.2 mod_api.php
In Zeile 5 wird die neue Funktion getUserName aufgerufen und das Ergebnis zur Weiterverarbeitung in die Variable $username gespeichert. Sie erraten es sicher schon: Wir müssen auch noch die Datei default.php anpassen, um das Ergebnis ausgeben zu lassen.
1 <?php
2 defined( '_JEXEC' ) or die( 'Restricted Access' );
3 ?>
4 <font color="<?php echo $color; ?>">
5 Hallo <?php echo $username; ?>!
6 </font>
Listing 40.3 Die Datei »default.php«
In Zeile 5 wird einfach ein weiterer Ausgabebefehl eingefügt, der den Benutzernamen ausgibt. Zum Testen können Sie dieses Modul wieder installieren. Die XML-Datei können Sie aus mod_hallojoomla.xml übernehmen. Vergessen Sie nicht, den Eintrag <filename> in der zugehörigen XML-Datei anzupassen. Dies gilt auch für die folgenden Programme.
Wenn Sie auch noch den Typ des Benutzers ausgeben wollen, dann können Sie diesen über $my->usertype abfragen. Hier wollen wir keine Veränderung des Wertes vornehmen, sondern ihn einfach direkt ausgeben. Dazu reicht es, einfach eine weitere Zeile in die Datei default.php einzufügen:
4 <font color="<?php echo $color; ?>">
5 Hallo <?php echo $username; ?>!
6 <br/>Ihr Status: <?php echo $my->usertype; ?>.
7 </font>
Listing 40.4 Auszug aus »default.php«
Selbstverständlich können Sie diese Information nutzen, um abzufragen, ob ein Benutzer die entsprechenden Rechte besitzt, um Ihr Modul zu verwenden. Mögliche Werte sind in Tabelle 40.3 angegeben.
Wert | Benutzerrecht |
<leer> |
Der Benutzer ist nicht angemeldet. |
Registered |
Der Benutzer ist angemeldet, hat aber keine weitergehenden Rechte. |
Author |
Der Benutzer hat Autorenrechte. |
Editor |
Der Benutzer hat Editorrechte. |
Publisher |
Der Benutzer hat Publisherrechte. |
Manager |
Der Benutzer hat Zugang zum Backend. |
Administrator |
Der Benutzer ist Administrator. |
Super Administrator |
Der Benutzer hat alle Rechte. |