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:
<?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
?>
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");
?>
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);
?>
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");
?>
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");
?>
<?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');
?>
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);
?>
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>';
?>
<?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 ) ) )
<?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
Thomas Meyer, www.yanaframework.net