HAUPPAUGE WinTV-PVR und Media Center Edition 2005: Fernbedienung
Dez 30

Von: Marcel Binot
30.12.2003 

Da bei meiner Modifikation des Kits das Aktivieren von neu registrierten Benutzern erforderlich ist, benötigte ich noch die Information, wann sich jemand neu registriert hat. Im User-Admin kann man zwar auch nach Registrierungsdatum sortieren, aber wer will schon ständig checken, ob da jemand hinzugekommen ist? Ich nicht.

Prinzipiell wären ja mindestens zwei Ansätze möglich: Erstens ein Control, dass alle Neuanmeldungen des letzten Monats anzeigt, und zweitens eine Email-Benachrichtigung dafür. Da man bei ersterem ja auch wieder ständig nachschauen muss, entschied ich mich für letzteres.

Um die neue Funktionalität möglichst sicher einzubauen, fügte ich sie nicht in der Registrierungsseite, sondern in der UserUtility-Klasse ein. Welches Skript auch immer eine Registrierung durchführt, wird dazu wohl diese Hilfsklasse verwenden. Diesen (doch recht tief sitzenden) Eingriff wollte ich nicht so ganz zwingend verankern. Schön fände ich, wenn man diese Funktion optional hinzuschalten könnte. web.confg? Jau! :)

Ich habe also eine neue Sektion (<flags>) in die Konfiguration hinzugefügt, und mit <add key="notifyRegistrations" value="true" /> ein entsprechendes Flag bereitgestellt.
Leider mußte ich dann feststellen, dass die in der meisten meiner Bücher angegebene Weise dieses Flag abzurufen nicht funktioniert. Um es auf den Punkt zu bringen, schreibe ich mal nur wie es auf jeden Fall funktioniert:
NameValueCollection nvc = (NameValueCollection) System.Configuration.ConfigurationSettings.GetConfig("communityStarterKit/flags");
if(nvc != null  && nvc["notifyRegistrations"] != null  && nvc["notifyRegistrations"].ToLower().Equals("true"))
...

Für die Nachricht als solche habe ich einfach einen entsprechenden Eintrag in der Tabelle 'Community_Messages' erzeugt, und somit die bestehenden Hausmittel benutzen.

Letztlich fehlte mir nur noch die Möglichkeit alle Mitglieder der Rolle 'Community-Administrators' herauszusuchen. Es gibt zwar die Möglichkeit alle Rollen eines Benutzers zu ermitteln, aber umgekehrt bislang nicht.
Um auch hier flexibel für die Zukunft zu bleiben, habe ich eine StoredProcedure geschrieben, die einerseits die CommunityID und andererseits einen Rollennamen als Parameter erwartet. Sie liefert zu diesen Angaben passend alle Benutzer zurück (Anm.: Nachträglich habe ich noch alle inaktiven Benutzer (Status=0) herausgefiltert).
Nach Anlegen einer entsprechenden Methode in der UserUtility-Klasse, welche die StoredProcedure aufruft und das Ergebnis  in eine ArrayList aus ProfileInfos übersetzt, war mein Werk vollbracht.

Tags:
Nutzungsbedingungen
(c) 2010 e-llusions