小编Tho*_*sen的帖子

使用com_joomlaupdate通过CLI升级Joomla

我正在尝试编写一个Joomla CLI脚本,自动将站点升级到当前版本.在Joomla中,这似乎是通过*com_joomlaupdate*完成的.我们的想法是能够从管理员前端升级服务器上的任何Joomla站点.

我编写了以下内容进行测试,尝试通过直接访问其模型中的方法来模拟com_joomlaupdate中的控制器.我不熟悉joomla框架所以我可能在这里做一些愚蠢的事情.

<?php

const _JEXEC = 1;

error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', 1);

define('JPATH_BASE', dirname(__DIR__));

require_once JPATH_BASE . '/includes/defines.php';
require_once JPATH_BASE . '/includes/framework.php';

require_once JPATH_LIBRARIES . '/import.legacy.php';
require_once JPATH_LIBRARIES . '/cms.php';

// Load the configuration
require_once JPATH_CONFIGURATION . '/configuration.php';

define('JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR . '/components/com_joomlaupdate');

require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/default.php';

class Upgradejoomla extends JApplicationCli
{

        public function doExecute()
        {
                $app = JFactory::getApplication('administrator');
                $app->initialise();
                $app->input->set('method', 'direct');

                $this->out('Fetching updates...');

                $updater = JModelLegacy::getInstance('JoomlaupdateModelDefault');

                $updater->refreshUpdates();

                $updater->applyUpdateSite();

                $basename = $updater->download();

                $app->setUserState('com_joomlaupdate.file', $basename);

                $updater->createRestorationFile($basename);

                echo ($updater->finaliseUpgrade());

                $updater->cleanUp();
        }
} …
Run Code Online (Sandbox Code Playgroud)

joomla command-line-interface joomla-extensions joomla2.5 joomla3.0

5
推荐指数
1
解决办法
2045
查看次数