2009-03-24 9 views
0

Ich habe ein Hilfsskript für ein Joomla 1.0-Modul, das ich entwickle. Ich verwende es, um AJAX-Aufgaben auszuführen (Lesen und Schreiben in die Datenbank, Rückgabe von JSON), also muss ich Joomla davon abhalten, seine Header und so weiter auszugeben.Wie erstellen Sie das Benutzerobjekt in Joomla 1.0?

Ich habe bisher um diese bekam durch einige Code-Hacking gemeinsam das Notwendige zu tun enthält die Datenbank-Verbindung einzurichten, etc:

define('_VALID_MOS', 1); 
require_once '../globals.php'; 
require_once '../configuration.php'; 
require_once '../includes/joomla.php'; 

Das einzige Problem ist, dass die $my Variable (die mos_user Objekt für den aktuellen Benutzer) wird nicht erstellt.

Wie erstelle ich diesen Benutzer? Welche Datei muss ich aufnehmen?

Antwort

0

Ich fand, dass es sich um eine Funktion auf dem $mainframe Objekt ist, aber Sie dann, dass konstruieren müssen:

$mainframe = new mosMainFrame($database, '', '.'); 
$mainframe->initSession(); 
$my = $mainframe->getUser(); 
0

Sie können auch anrufen index2.php no_html = 1 (durch andere Parameter, gefolgt Sie brauchen), um eine Rohausgabe auf einer Standardkomponente zu erhalten.

+0

ah ich fragte mich, wie man vermeidet, dass der Header gedruckt wird. Was ist, wenn es ein Modul ist? – nickf

+0

Sie können ein Modul nicht direkt aufrufen, aber jede Anfrage in Joomla! lädt genau eine Komponente. Wenn Sie ein Modul haben, das AJAX-Anfragen ausführt, müssen Sie eine Komponente dafür erstellen. – jlleblanc

0

Ich habe gerade genau dieses Problem bei der Migration eines 1.5-Moduls auf 1.0 konfrontiert, aber keine der obigen Antworten schien die vollständige Geschichte zu geben. Nickfs Antwort hat mich am meisten dorthin gebracht, aber ich bin dann in ein Kaninchenloch gefallen und habe versucht, den Mainframe zu bauen.

Ich nahm dann an, dass $ my bereits erstellt wurde, und obwohl es innerhalb einer Funktion nicht funktionierte (ich bin neu zu PHP, also nahm ich an, dass es zugänglich sein würde) fand ich, dass es im Modulbereich verwendet wurde fein, wie unten dargestellt:

<?php 
/** 
* Demo package 
* 
* @package Demo package 
* @subpackage Modules 
*/ 

// no direct access 
defined('_VALID_MOS') or die('Restricted access'); 


class modDcsgSimulatorHelper 
{ 

    /** 
    * security by obscurity 
    */ 
    function getAppToken($username) 
    { 
     return urlencode($username); 
    } 
} 

$apptoken = modDcsgSimulatorHelper::getAppToken($my->username); 
?> 
Run the <A href="http://somesecurewebsite.com?apptoken=<?php echo $apptoken; ?>">A Secure Link</A>. 

Und bevor mir jemand für diesen wunderbar sicheren Mechanismus Flammen, sicher sein, ich Details aus der realen Umsetzung elided habe, wie es für meine Antwort unnötig ausführlichen war.

+0

um von internen Funktionen auf globale Variablen (wie $ my) zuzugreifen, fügen Sie diese Zeile zum Anfang der Funktion hinzu: "global $ my;" – nickf

Verwandte Themen