Wie kann ich aus einer normalen php Datei wird nicht über das Yii-Framework verwaltet, den Loginstatus des Benutzers abfragen?
Konkret:
Ich möchte für die FCKEditorIntegration eine möglichst generische Beispiel konfiguration hinterlegen, damit der Dateiupload funktioniert.
Derzeit schiebe ich den schwarzen Peter an die Nutzer. (So wie die vom FCKEditor auch) und lasse den Connector deaktiviert.
Mir schwebt gerade vor, dass ich irgendwie auf Yii::app() zugreifen kann, um mir den Userstatus zu ziehen, und wenn der Anwender angemeldet ist, den connector zu aktivieren, sonst zu deaktivieren.
$yii='E:\Daten\eclipse\yii-test\Yii\tags\1.0.7\framework\yii.php';
$absolutePath = dirname($_SERVER['DOCUMENT_ROOT'])."/Yii-test/trunk";
$YiiAppConfig = $absolutePath."/protected/config/main.php";
$relativePath = "/yiitest/trunk";
require_once($yii);
Yii::createWebApplication($YiiAppConfig);
/*
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
* Copyright (C) 2003-2008 Frederico Caldeira Knabben
*
* == BEGIN LICENSE ==
[...]
*/
global $Config ;
// SECURITY: You must explicitly enable this "connector". (Set it to "true").
// WARNING: don't just set "$Config['Enabled'] = true ;", you must be sure that only
// authenticated users can access this file or use some kind of session checking.
$auth = Yii::app()->user->getId();
$Config['Enabled'] = (isset($auth) && $auth !== '');
// Path to user files relative to the document root.
$Config['UserFilesPath'] = $relativePath.'/upload/' ;
// Fill the following value it you prefer to specify the absolute path for the
// user files directory. Useful if you are using a virtual directory, symbolic
// link or alias. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
// Attention: The above 'UserFilesPath' must point to the same directory.
$Config['UserFilesAbsolutePath'] = $absolutePath."/upload/";
OK ich bin einen Schritt weiter… aber irgendwie glaube ich, dass es da einen besseren Weg geben sollte.
Im Moment schaut es so aus, als ob ich das komplette YiiWebApplication Objekt erstelle, wo ich eigentlich nur die UserIdentity brauche.
Bin mir gerade nicht ganz sicher was du zu tun versuchst. Ich hab noch nie was mit dem FCKEditor gemacht (es geht um so eine WYSIWYG Komponente, richtig?), versuche aber einmal zu interpretieren…
Ich nehme an der Editor ist recht komplex zu konfigurieren, du schreibst ne Beispielkonfiguration die möglichst generisch gehalten sein soll, damit sie leicht wieder verwendet werden kann. Hab ich das soweit richtig verstanden? Und die Integration soll letztendlich auch für yii-Anwendungen sein?
Wenn das soweit richtig ist, hast du doch gar kein Problem. An der Stelle an der die Konfiguration des FCKEditors geladen wird muss lediglich das YiiWebApplication Objekt bereits erstellt worden sein; du kannst innerhalb der Konfiguration einfach Yii::app() verwenden um an das Objekt ran zu kommen ohne dass du es vorher nochmal erstellen musst.
Das hast du soweit richtig verstanden. Ich habe vor einiger Zeit eine Yii-Extension geschrieben, die den Editor einbindet. Der Editor kann Dateien mit dem Server austauschen. Dazu liefert der Editor einige PHP-Dateien mit. Dieses Feature muss man Serverseitig in einer extra Konfiguration aktivieren. Per default ist es deaktiviert.
Ich möchte in dieser Konfiguration, die ganz tief unten in dem FCKEditor liegt, auf die Yii::app() zugreifen.
Wie erstelle ich die Yii:app() ohne diese zu starten? Und müsste es nicht reichen, wenn ich die Authentifizierungsschnittstelle nutze? (gibt es eine Schnittstelle dafür?
Nee, passt soweit.
Oben hab ich die Yii:app() initialisiert. Hatte nur die Hoffnung, dass ich das einfacher drankomme.
Naja, wenn es sich um eine yii-Komponente handelt (wird vermutlich entweder wirklich eine “Komponente” sein, also von CComponent abgeleitet, oder evtl. auch ein Modul?), dann kann man doch davon ausgehen, dass das YiiWebApplication Objekt bereits erstellt ist zu dem Zeitpunkt zu dem die Erweiterung geladen wird. Passiert ganz am Anfang in der index.php, da erzähl ich sicherlich nix neues.
Jedenfalls müsstes du damit in einer Laufzeitumgebung sein, in der die yii-Klasse bekannt ist. Wenn du die Konfiguration inkludierst solltest es kein Problem geben wenn du einfach yii::app() aufrufst und dir davon das aktuell gültige Application-Objekt geben lässt. Der Aufruf macht ja im Prinzip nichts anderes als dir ein global vorhandenes Objekt zurückzugeben. Und dieses Objekt besteht zu dem Zeitpunkt zu dem du deine Erweiterung lädst schon. Du musst es also nicht extra nochmal erstellen oder initialisieren.