Как вы строите пользовательский объект в Joomla 1.0? - PullRequest
0 голосов
/ 25 марта 2009

У меня есть вспомогательный скрипт для разрабатываемого модуля Joomla 1.0. Я использую его для выполнения задач AJAX (чтение и запись в базу данных, возвращение JSON), поэтому мне нужно остановить вывод Joomla его заголовков и еще много чего.

До сих пор я справлялся с этим, взламывая код для выполнения необходимых действий по настройке соединения с базой данных и т. Д .:

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

Единственная проблема заключается в том, что переменная $my (объект mos_user для текущего пользователя) не создается.

Как мне создать этого пользователя? Какой файл мне нужно включить?

Ответы [ 3 ]

0 голосов
/ 25 марта 2009

Вы также можете вызвать index2.php? No_html = 1 (с последующими любыми другими необходимыми параметрами), чтобы получить необработанный вывод для стандартного компонента.

0 голосов
/ 31 марта 2009

Я только что столкнулся именно с этой проблемой при переносе модуля 1.5 на 1.0, но ни один из приведенных выше ответов не дал полной версии. Ответ Никфа привел меня к этому, но я упал в кроличью нору, пытаясь построить мейнфрейм.

Затем я предположил, что, возможно, $ my уже был создан, и хотя он не работал внутри функции (я новичок в PHP, поэтому предположил, что он будет доступен), но обнаружил, что использовать его в области видимости модуля можно , как показано ниже:

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

И прежде, чем кто-либо воспламенит меня за этот удивительно безопасный механизм, будьте уверены, я исключил детали из реальной реализации, поскольку это было излишне многословно для моего ответа.

0 голосов
/ 25 марта 2009

Я обнаружил, что это функция для объекта $mainframe, но затем вам нужно будет также сконструировать это:

$mainframe = new mosMainFrame( $database, '', '.' );
$mainframe->initSession();
$my = $mainframe->getUser();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...