通常,当您要卸载或安装组件,软件包,插件或模块时,通常可以在Joomla管理界面中手动执行此操作。
在这种情况下,我正在寻找一种方法,可以直接从PHP(在Joomla框架内)以编程方式卸载和安装组件或软件包,可能来自系统插件。
所以基本上我想以编程方式启动软件包的卸载和安装过程,以便卸载和安装所有组件,模块,插件等,通常通过卸载和安装来卸载和安装所有组件,模块,插件等。从Joomla admin。手动打包。
有人可以给我一个暗示我将如何实现这一点,最好使用Joomla的核心类特定功能。
我试图通过搜索各种Joomla文档找到相关信息,但到目前为止还没有运气。
更新 我找到了从Joomla admin安装和卸载扩展时使用的核心模型文件。
我在这个类文件中找到了一个可以用来从插件中卸载扩展的函数: /administrator/components/com_installer/models/manage.php
该函数是:“remove($ eid = array())”作为类的一部分:“InstallerModelManage”,它扩展了“InstallerModel”
我还在这个类文件中找到了一个用于从插件安装扩展的函数: /administrator/components/com_installer/models/install.php
该函数是:“install()”作为类的一部分:“InstallerModelInstall”扩展“JModelLegacy”
现在我只需要找到最好的(正确的)方法将这些函数包含在我的插件文件中,这样我就可以执行remove($ eid = array())和install()
答案 0 :(得分:1)
这就是你的称呼方式。
JModelLegacy::addIncludePath(JPATH_ROOT . '/administrator/components/com_installer/models');
$model = JModelLegacy::getInstance('Install', 'InstallerModel');
$model->install();
但它会从输入中获取一些数据。所以你必须在之前做好准备
$input = JFactory::getApplication()->input;
$input->set('installtype', 'url');
$input->set('install_url', 'path/to/instalation/asyou/would/enter/it/in/installation/interface');