QueryUIDAlias()
***************


FUNKTION
========

   varargs string* QueryUIDsForWizard(string uidalias, int recursive);


DEFINIERT IN
============

   /secure/master/userinfo.c


ARGUMENTE
=========

   uidalias
     UID, die expandiert werden soll.
   recursive (optional)
     Gibt an, ob QueryUIDAlias() (indirekt) rekursiv aufgerufen wurde.
     Sollte normalerweise nicht per Hand gesetzt werden.


BESCHREIBUNG
============

   Die Funktion ermittelt aus einer "Alias-UID" die UID, fuer die sie steht.
   Hierbei werden folgende UID-Aliase beruecksichtigt:
   "region":    d.region.* + region + d.region
   "gilde":     GUILD.gilde, GUILD.gildenspellbook, p.gilde
   "p":         p.* (ohne p.service)
   "p.service": p.service.*
   "magierid":  QueryUIDsForWizard()

   Das Ergebnis dieser Funktion wird laengere Zeit gecachet (bis zu 24h).


RUeCKGABEWERT
=============

   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
   Sollte uidaliase keines der o.g. sein, wird ein ({uidalias}) geliefert.


BEISPIELE
=========

   string *uids = master()->QueryUIDAlias("schattenwelt");
   // uids enthaelt nun:
   // ({"d.anfaenger","anfaenger","d.anfaenger.ark","d.anfaenger.ennox",
   //   "d.anfaenger.humni","d.anfaenger.kiria","d.anfaenger.konzepte",
   //   "d.anfaenger.miril"})


SIEHE AUCH
==========

   QueryWizardsForUID(),
               AddWizardForUID(), RemoveWizardFromUID()

16.12.2007, Zesstra
