2010-10-06 2 views
0

J'ai téléchargé un exemple de code pour openId dans Joomla 1.5. J'apprends comme je vais avec cette chose Joomla et ré-apprendre des choses PHP. Donc, je suis fondamentalement nouveau à tout ce monde Content Manager. J'essaye de faire un petit plug-in pour l'authentification avec openid mais il semble que ce soit juste faux.jimport ne fonctionne pas dans Joomla 1.5

J'ai réussi le débogage du projet dans eclipse et j'ai trouvé que l'erreur venait de mon jimport.

class plgAuthenticationOpenId extends JPlugin{ 
    /** 
    * OpenId Atributes. 
    */ 
    private static $attribute; 

    private static $proxyHost; 
    private static $proxyPort; 
    private static $proxyUser; 
    private static $proxyPassword; 
    private static $appId; 
    private static $appPassword; 


function plgAuthenticationOpenId(& $subject, $config){ 
     parent::__construct($subject, $config); 


     plgAuthenticationOpenId::$appId=$this->params->get('userKey', ''); 
     plgAuthenticationOpenId::$appPassword = $this->params->get('apiKey', ''); 

     define('Auth_OpenID_RAND_SOURCE', null); 

     jimport('openid.consumer'); 
     jimport('openid.Auth.OpenID.AX'); 

     //Basic Attributes 
     plgAuthenticationOpenId::$attribute = array(); 

     //more code messing with plgAuthenticationOpenId [...] 

J'ai essayé de mettre la bibliothèque en php include_path, le mettre dans le chemin de PEAR, je l'ai essayé le required_once (il freine là au lieu de la jimport), je l'ai essayé de jimport l'ensemble chemin et essayé d'utiliser comprennent directement. J'ai également défini le séparateur de répertoire et le JPATH_BASE. Rien ne semble fonctionner.

Je pense que cela devrait avoir une solution très facile, car j'ai copié/collé le code (je ne l'ai pas créé moi-même) et c'est un simple jimport. Mais néanmoins je suis nouveau à cela et coincé. Alors s'il vous plaît, aidez.

Merci beaucoup.

Répondre

1

Le problème est que jimport('openid.consumer'); changé include_path

Voici un test pour le démontrer.

<?php 
// I executed code below in the view to obtain output 
var_dump(ini_get('include_path')); 
jimport('openid.consumer'); 
jimport('openid.Auth.OpenID.AX'); 
var_dump(ini_get('include_path')); 

// OUTPUT 
string '.:/opt/lampp/lib/php' (length=20) 
string '/opt/lampp/htdocs/promark_eblaster/libraries/openid/.:/opt/lampp/lib/php' (length=72) 
?> 

Comme vous pouvez le voir, le chemin d'inclusion a été modifié.

Vous pouvez essayer la solution de contournement suivante.

<?php 
// Remember the Original Path 
$oldPath = ini_get('include_path'); 

// Include OpenID Stuff 
jimport('openid.consumer'); 
jimport('openid.Auth.OpenID.AX'); 

// Set back the include_path so Joomla can import files with old include path 
ini_set('include_path', $oldPath); 

// Check if Success 
JFactory::getApplication()->enqueueMessage("Hellow World"); 

// The rest of your code... 
?> 
+0

Merci pour la réponse. Mais je ne vois pas comment je peux changer mon code pour le faire fonctionner. J'ai sorti le include_path (il est dans php/PEAR dans mon xampp), je l'ai changé dans mon php.ini dans le dossier de la bibliothèque Joomla du projet. J'ai copié/collé le dossier openid vers le chemin PEAR et il est dans mon dossier de bibliothèque Joomla. Aucun des deux ne fonctionne. Merci de votre aide! :) – Random

+0

après que le chemin d'inclusion change pour la première fois à cause de 'jimport ('openid.cunsumer')' ce n'est pas bon pour Joomla. La solution est simple, après 'jimport ('openid.consumer');' et 'jimport ('openid.Auth.OpenID.AX');' changer le chemin d'inclusion vers l'ancien chemin. Fondamentalement, réutiliser le code que j'ai posté. – Alex

+0

Je dois m'excuser. Je ne me suis pas expliqué correctement. Mon problème est que quand il exécute l'instruction jimport ('openid.consumer') le code casse. Cela ne change pas mon include_path car il ne fait rien après cette instruction. – Random

Questions connexes