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

