>> Inhaltsverzeichnis >> Anleitung für Entwickler

Profilvariablen lesen und schreiben

Allgemeines zum Verständnis

YANA stellt einen globalen Speicherbereich zur Verfügung, der von allen Plugins gelesen und verändert werden kann. Alle Variablen, die in diesem Bereich gespeichert werden, stehen Ihnen automatisch in allen Skins und Templates für die Ausgabe zur Verfügung. Bitte beachten Sie: der globale Speicherbereich in YANA ist etwas anderes als der global Namespace von PHP.

Innerhalb dieses Speichers werden Werte als ein Baum, in Form von mehrdimensionalen, assoziativen Arrays gespeichert. Der Zugriff auf diesen Speicherbereich erfolgt analog zu Smarty – oder, falls Ihnen der Vergleich besser gefällt, ähnlich wie mit XPath – über einen Schlüssel.

Zum Beispiel:

Angenommen der Baum sieht wie folgt aus:

array(
    "a" => 2,
    "b" => array(
        "c" => 3,
         1  => 4
        )
);

Dann können Sie folgende Schlüssel verwenden:
<?php 
$array $YANA->getVar("*"); // mit Hilfe des Schlüssels "*" erhalten Sie eine Kopie des gesamten Arrays
$int $YANA->getVar("a");   // Ausgabe: 2
$array $YANA->getVar("b"); // Ausgabe: array("c" => 3, 1 => 4)
$int $YANA->getVar("b.c"); // Ausgabe: 3

/* Anders als in XML-Dateien sind hier numerische Ids erlaubt: */
$int $YANA->getVar("b.1"); // Ausgabe: 4
?>

Wie kann ich Variablen aus dem globalen Speicher lesen?

Die Funktion $YANA->getVar() erlaubt Ihnen das Lesen von Werten im globalen Speicherbereich.

<?php 
global $YANA;

/* alle Werte lesen */
$array $YANA->getVar("*");

/* einzelne Werte lesen */
$mixed $YANA->getVar("FOO1.FOO2.FOO3");

/* alternativ */
$mixed $YANA->registry->getVar("FOO1.FOO2.FOO3");
?>

Wie kann ich Variablen im globalen Speicher schreiben?

Die Funktion $YANA->setVar() erlaubt Ihnen das Schreiben von Werten in den globalen Speicherbereich.

<?php 
global $YANA;

/* Variable "MEINE_VARIABLE" registrieren */
$bool $YANA->setVar("MEINE_VARIABLE"$neuer_wert);

$bool $YANA->setVar("FOO1.FOO2.MEINE_VARIABLE"$neuer_wert);

/* alternativ */
$mixed $YANA->registry->setVar("FOO1.FOO2.MEINE_VARIABLE"$neuer_wert);
?>

Wie kann ich Variablen im globalen Speicher löschen?

Dazu bietet YANA die Funktion $YANA->unsetVar(). Ein Beispiel:

<?php 
global $YANA;

/* Variable "MEINE_VARIABLE" löschen */
$bool $YANA->unsetVar("MEINE_VARIABLE");

$bool $YANA->unsetVar("FOO1.FOO2.MEINE_VARIABLE");

/* alternativ */
$mixed $YANA->registry->unsetVar("FOO1.FOO2.MEINE_VARIABLE");
?>

Wie kann ich den Typ einer Variablen im globalen Speicher ändern?

Dazu bietet YANA die Funktion $YANA->setType(). Ein Beispiel:

<?php 
global $YANA;

/* den Typ der Variable "MEINE_VARIABLE" auf String ändern */
$bool $YANA->setType("MEINE_VARIABLE""string");

$bool $YANA->setType("FOO1.FOO2.MEINE_VARIABLE""string");

/* alternativ */
$mixed $YANA->registry->setType("FOO1.FOO2.MEINE_VARIABLE""string");
?>

Welche interessanten Daten liegen im globalen Speicher?

Liste der installierten Plugins
Eine Liste der installierten Plugins ausgeben:
<?php 
global $YANA;

$array $YANA->getVar("INSTALLED_PLUGINS");
print_r($array);
?>
Ausgabe:
    Array
        (
            [CONFIG] => 1
            [DB_ADMIN] => 1
            [DEFAULT_LIBRARY] => 1
            [GUESTBOOK] => 1
            [GUESTBOOK_ADMIN] => 1
            [USER] => 1
        )
Prüfen ob ein bestimmtes Plugin installiert ist:
<?php 
$bool $YANA->getVar("INSTALLED_PLUGINS.MEIN_PLUGIN");
if ($bool) {
    print "Plugin 'MEIN_PLUGIN' gefunden.";
} else {
    print "Plugin 'MEIN_PLUGIN' nicht gefunden.";
}

/* alternativ */
$YANA->plugins->isInstalled('MEIN_PLUGIN');
?>
aktuelle Profileinstellungen

Das "Website-Profil" wird über den URL-Parameter "id" ausgewählt. Jedes Profil kann individuelle Einstellungen haben. Diese Einstellungen werden ebenfalls im globalen Speicherbereich des Frameworks abgelegt. Wird kein Profil gewählt, dann wird das Profil "default" verwendet. De facto müssen Sie als Programmierer sich nicht darum kümmern, welches Profil gewählt ist. Sie müssen nur wissen, dass in den Profildaten Einstellungen, wie die gewählte Hintergrundfarbe der Seite, die bevorzugte Schriftart und andere interessante Daten gespeichert sind, auf die Sie bei Bedarf zugreifen können.

<?php 
global $YANA;

/* die aktuellen Profileinstellungen lesen und ausgeben */
$array $YANA->getVar("PROFILE");
print_r($array);
?>

Ausgabe:
Array
(

>> Layout der Website

    [BGCOLOR] => #F0F0F0
    [PFONT] => Arial, Helvetica, sans-serif
    [BGIMAGE] => 
    [LOGO] => 
    [HSIZE] => 
    [HCOLOR] => 
    [HFONT] => 
    [PSIZE] => 
    [PCOLOR] => 

>> Gewählte Sprache, Skin und Verzeichnis für Emoticons / Smilies

    [LANGUAGE] => deutsch.config
    [SKIN] => default.config
    [SMILEYDIR] => common_files/smilies/

>> Sonstige Einstellungen

    [USERMODE] => 1
    [AUTO] => 1
    [TIMEFORMAT] => 0

>> Protokollierung

    [LOGGING] => 1
    [LOG_LENGTH] => 50

>> Einstellungen für Plugin "rss to html factory"

    [RSS] => Array
        (
            [FILE] => plugins/rss/test.rss
            [MAX] => 5
        )

>> Einstellungen für Plugin "guestbook" (Gästebuch)

    [GUESTBOOK] => Array
        (
            [NOREPLY] => noReply@meineAdresse.tld
            [FLOODING] => 0
            [ENTPERPAGE] => 5
            [NOTIFICATION] => 
            [SENDMAIL] => 
            [MAIL] => meinName@meineAdresse.tld
            [FILE] => 
            [SPAMPROTECT] => 1
            [PROFILE] => 
            [USE_DB] => 
        )

>> Einstellungen für Plugin "search" (Stichwortsuche)

    [SEARCH] => Array
        (
            [TARGET] => _self
        )

>> Einstellungen für Plugin "user_admin" (Nutzerverwaltung)

    [USER] => Array
        (
            [ALLOW_CREATE] => 0
        )

)

<?php 
/* die gewählte Hintergrundfarbe auslesen */
$string $YANA->getVar("PROFILE.BGCOLOR");
print '<p style="background-color: '.$string.'">test</p>';
?>
Default-Einstellungen
<?php 
global $YANA;

/* YANA Defaut-Einstellungen ausgeben */
$array $YANA->getVar("DEFAULT");
print_r($a);
?>
Ausgabe:
    Array
        (

>> Legt fest, welche Aktion automatisch aufgerufen werden soll, wenn das
   Argument "action" leer oder nicht gesetzt ist.
   Voreingestellt ist "sitemap" - man kann aber z.Bsp. auch "guestbook_read_read"
   verwenden für das Gästebuch, oder "search_start" für die Suchmaschine.
   Diese Einstellung wurde eingeführt in Version 2.8.0

            [HOMEPAGE] => sitemap

>> Legt fest, ob Textmeldungen (Fehler, Hinweise etc.) in einem eigenen Fenster (true)
   oder im Text der normalen Seite (false) angezeigt werden sollen.
   Diese Einstellung wurde eingeführt in Version 2.8.2

            [MESSAGE] => false

>> Default-Event Konfiguration für Ereignisse, die nicht definiert sind

            [EVENT] => Array
                (
                    [TYPE] => default
                    [MODE] => 0
                    [PERMISSION] => 0
                    [TEMPLATE] => index
                    [INSERT] =>
                )

>> Default-Interface Konfiguration

            [INTERFACE] => Array
                (
                    [TEST] => Array
                        (
                            [TYPE] => private
                            [MODE] => 0
                            [PERMISSION] => 0
                            [TEMPLATE] => NULL
                        )

                )

>> Default-Skin Konfiguration

            [SKIN] => Array
                (
                    [DIRECTORY] => default/
                )

>> Default-Language Konfiguration

            [LANGUAGE] => Array
                (
                    [DIRECTORY] => de/
                )

>> Voreingestellung für Datenbankverbindungen

            [DATABASE] => Array
                (
                    [DSN] => Array
                        (
                            [USE_ODBC] =>
                            [DBMS] => mysql
                            [HOST] => localhost
                            [PORT] => 0
                            [USERNAME] => root
                            [PASSWORD] =>
                            [DATABASE] => yana
                        )

>> Konfiguration der Datenbankschnittstelle

                    [OPTIONS] => Array
                        (
                            [AUTOFREE] => 1
                            [PERSISTENT] => 1
                            [SSL] =>
                        )

>> Liste der DBMS, welche über die ODBC-Schnittstelle angesprochen werden sollen

                    [REQUIRE_ODBC] => Array
                        (
                            [0] => db2
                            [1] => access
                        )

                )

        )
Nutzer-Informationen
<?php 
global $YANA;

/* Nutzer IP */
print $YANA->getVar("REMOTE_ADDR")."\n";
/* Nutzer Name */
print $YANA->getVar("SESSION_USER_ID")."\n";
/* Zugriffslevel des Nutzers */
print $YANA->getVar("PERMISSION")."\n";
/* Session-Name */
print $YANA->getVar("SESSION_NAME")."\n";
/* Session-ID */
print $YANA->getVar("SESSION_ID")."\n";
?>

Ausgabe:
127.0.0.1
ADMINISTRATOR
100
YSID
480f97e69eae2311d3157cc3377a2d73

Autor: Thomas Meyer, www.yanaframework.net