Jimport не работает в Joomla 1.5 - PullRequest
       12

Jimport не работает в Joomla 1.5

0 голосов
/ 06 октября 2010

Я скачал пример кода для openId в Joomla 1.5. Я учусь на Joomla и переучиваю PHP. Так что я в целом ужасно новичок во всем мире Content Manager. Я пытаюсь создать небольшой плагин для аутентификации с помощью openid, но, похоже, это неправильно.

Я успешно отладил проект в Eclipse и обнаружил, что ошибка произошла из моего 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 [...]

Я попытался поместить библиотеку в путь php include, поместил ее в путь PEAR, я попытался required_once (он тормозит там, а не в jimport), я попытался импортировать весь путь и попытался использовать включить напрямую. Я также определил разделитель каталогов и JPATH_BASE. Кажется, ничего не работает.

Я думаю, что это должно иметь очень простое решение, так как я скопировал / вставил код (а не создал его сам) и представляет собой простой jimport. Но тем не менее я новичок в этом и застрял. Поэтому, пожалуйста, помогите.

Большое спасибо.

1 Ответ

1 голос
/ 07 октября 2010

Проблема в том, что jimport('openid.consumer'); изменилось include_path

Вот тест, чтобы продемонстрировать это.

<?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)
?>

Как видите, include_path изменился.

Вы можете попробовать следующий обходной путь.

<?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...
?>
...