221 Zeilen
9.2 KiB
PHP
221 Zeilen
9.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* ConLite PluginManager Backend Overview
|
|
*
|
|
* based on the excellent work of Frederic Schneider (4fb)
|
|
* adapted and recoded for ConLite by Ortwin Pinke
|
|
*
|
|
* @package PluginManager
|
|
* @version $Rev: 41 $
|
|
* @author Ortwin Pinke <ortwin.pinke@conlite.org>
|
|
* @author Frederic Schneider
|
|
* @copyright (c) 2008-2015, ConLite.org
|
|
*
|
|
* $Id: include.right_bottom.php 41 2018-05-20 21:55:49Z oldperl $
|
|
*/
|
|
if (!defined('CON_FRAMEWORK')) {
|
|
die('Illegal call');
|
|
}
|
|
/* @var $sess Contenido_Session */
|
|
/* @var $perm Contenido_Perm */
|
|
/* @var $auth Contenido_Challenge_Crypt_Auth */
|
|
|
|
$oNoti = new Contenido_Notification();
|
|
$aMessages = array();
|
|
$oPage = new cPage();
|
|
$oPage->sendNoCacheHeaders();
|
|
$oPage->setHtml5();
|
|
$oPage->addCssFile("plugins/pluginmanager/css/pluginmanager.css");
|
|
$oPage->addJsFile("plugins/pluginmanager/scripts/jquery.plainoverlay.js");
|
|
$oPage->addJsFile("plugins/pluginmanager/scripts/jquery.plainmodal.js");
|
|
$oPage->addJsFile("plugins/pluginmanager/scripts/pluginmanager.js");
|
|
|
|
// give permission only to sysadmin
|
|
/* @var $perm Contenido_Perm */
|
|
if (!$perm->isSysadmin()) {
|
|
$oPage->setContent($oNoti->returnNotification(Contenido_Notification::LEVEL_ERROR, i18n("Permission denied!")));
|
|
$oPage->render();
|
|
die();
|
|
}
|
|
|
|
// check disable plugin var
|
|
if ($cfg['debug']['disable_plugins'] === true) {
|
|
$oPage->setContent($oNoti->returnNotification(Contenido_Notification::LEVEL_WARNING, i18n('Currently the plugin system is disabled via configuration', "pluginmanager")));
|
|
$oPage->render();
|
|
}
|
|
|
|
$oPimPluginCollection = new pimPluginCollection();
|
|
$oView = new pimView();
|
|
|
|
$sViewAction = isset($_REQUEST['plugin_action']) ? $_REQUEST['plugin_action'] : 'overview';
|
|
|
|
switch ($sViewAction) {
|
|
case 'uninstall_plugin':
|
|
$iPluginId = (int) $_POST['plugin_id'];
|
|
$oPluginHandler = new pimPluginHandler();
|
|
if($oPluginHandler->loadPluginFromDb($iPluginId)) {
|
|
if($oPluginHandler->uninstallPlugin($_POST['delete_sql'])) {
|
|
$aMessages[] = "info:".i18n("Plugin uninstalled!", "pluginmanager");
|
|
} else {
|
|
$aMessages[] = "error:".i18n("Cannot uninstall Plugin!", "pluginmanager");
|
|
}
|
|
} else {
|
|
$aMessages[] = "error:".i18n("Cannot uninstall Plugin! Plugin not found in Db.", "pluginmanager");
|
|
}
|
|
break;
|
|
case 'upload':
|
|
$aMessages[] = "info:".i18n("Feature not implemented right now!", "pluginmanager");
|
|
/*
|
|
// name of uploaded file
|
|
$sTempFile = Contenido_Security::escapeDB($_FILES['package']['name'], null);
|
|
|
|
// path to pluginmanager temp-dir
|
|
$sTempFilePath = $cfg['path']['contenido'] . $cfg['path']['plugins'] . 'pluginmanager' . DIRECTORY_SEPARATOR . 'temp' . DIRECTORY_SEPARATOR;
|
|
|
|
move_uploaded_file($_FILES['package']['tmp_name'], $sTempFilePath . $sTempFile);
|
|
|
|
$oExtractor = new Contenido_ArchiveExtractor($sTempFilePath . $sTempFile);
|
|
|
|
// xml file validation
|
|
$oSetup->sTempXml = $oExtractor->extractArchiveFileToVariable('plugin.xml');
|
|
$oSetup->checkXml();
|
|
|
|
// load plugin.xml to an xml-string
|
|
$oTempXml = simplexml_load_string($oSetup->sTempXml);
|
|
|
|
// check min contenido version
|
|
if (!empty($oTempXml->general->min_contenido_version) && version_compare($cfg['version'], $oTempXml->general->min_contenido_version, '<')) {
|
|
throw new Contenido_VersionCompare_Exception(i18n("You have to installed Contenido ") . $oTempXml->general->min_contenido_version . i18n(" or higher to install this plugin!"));
|
|
}
|
|
|
|
// build the new plugin dir
|
|
$sTempPluginDir = $cfg['path']['contenido'] . $cfg['path']['plugins'] . $oTempXml->general->plugin_foldername . DIRECTORY_SEPARATOR;
|
|
|
|
// add sql inserts
|
|
$oSql = new Contenido_PluginSqlBuilder_Install($cfg, (int) $client, $oTempXml);
|
|
|
|
if ($oSetup->bValid === true) {
|
|
$oExtractor->setDestinationPath($sTempPluginDir);
|
|
$oExtractor->extractArchive();
|
|
}
|
|
|
|
unlink($sTempPluginDir . 'plugin.xml');
|
|
unlink($sTempFilePath . $sTempFile);
|
|
*/
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
// get installed plugins and build view
|
|
$aPluginsInstalled = array();
|
|
$sPlugins = '';
|
|
$oPimPluginCollection->select(NULL, NULL, 'executionorder');
|
|
$iNumInstalledPlugins = $oPimPluginCollection->count();
|
|
/* @var $oPimPlugin pimPlugin */
|
|
while ($oPimPlugin = $oPimPluginCollection->next()) {
|
|
// initalization new class
|
|
$iIdPlugin = $oPimPlugin->get("idplugin");
|
|
$oView2 = new pimView();
|
|
$oPluginHandler = new pimPluginHandler();
|
|
$sPlugins .= $oPluginHandler->getInfoInstalled($iIdPlugin);
|
|
$aPluginsInstalled[] = $oPimPlugin->get("folder");
|
|
}
|
|
|
|
// get plugins extracted but not installed
|
|
if (is_dir($cfg['path']['plugins'])) {
|
|
if ($handle = opendir($cfg['path']['plugins'])) {
|
|
$iPiExCount = (int) count($aPluginsInstalled) + 1;
|
|
$pluginsExtracted = '';
|
|
$aNeededTplVar = array(
|
|
"description"=> i18n("This plugin has no description.", "pluginmanager"),
|
|
"dependencies" => i18n("This plugin has no dependencies.", "pluginmanager"),
|
|
"license" => i18n("License not set.", "pluginmanager")
|
|
);
|
|
|
|
$aDefaultLang = array(
|
|
'lang_foldername' => i18n('Foldername', 'pluginmanager'),
|
|
'lang_author' => i18n("Author", "pluginmanager"),
|
|
'lang_contact' => i18n("Contact", "pluginmanager"),
|
|
'lang_license' => i18n("License", "pluginmanager"),
|
|
'lang_dependencies' => i18n("Dependencies", "pluginmanager"),
|
|
'lang_writeable' => i18n("Writable", "pluginmanager")
|
|
);
|
|
|
|
while ($pluginFoldername = readdir($handle)) {
|
|
$pluginPath = $cfg['path']['contenido'] . $cfg['path']['plugins'] . $pluginFoldername;
|
|
$bPiPathWritable = (is_writable($pluginPath))?TRUE:FALSE;
|
|
$sPiCfg = $pluginPath . '/cl_plugin.xml';
|
|
|
|
if (is_dir($pluginPath) && file_exists($sPiCfg) && !in_array($pluginFoldername, $aPluginsInstalled)) {
|
|
|
|
// get infos from plugin.xml
|
|
$oPluginHandler = new pimPluginHandler();
|
|
if(FALSE === $oPluginHandler->loadXmlFile($sPiCfg)) {
|
|
$aMessages[] = "error:".sprintf(i18n('Invalid Xml document for %s. Please contact the plugin author.', 'pluginmanager'),$sPiCfg);
|
|
continue;
|
|
}
|
|
//echo "<pre>";
|
|
//print_r($oPluginHandler->getCfgXmlObject());
|
|
$aNeededTplVar['writeable'] = ($bPiPathWritable)?i18n("Everything looks fine.", "pluginmanager"):'<span style="color:red;">'
|
|
.i18n("Pluginfolder not writable!", "pluginmanager").'</span>';
|
|
$aInfoGeneral = array_merge($aNeededTplVar, $oPluginHandler->getPiGeneralArray());
|
|
echo "<pre>";
|
|
print_r($aInfoGeneral);
|
|
|
|
// initalization new template class
|
|
$oView2 = new pimView();
|
|
$oView2->setVariable($iPiExCount, "PLUGIN_NUMBER");
|
|
$oView2->setMultiVariables($aInfoGeneral);
|
|
$aLang = array(
|
|
'FOLDERNAME' => $pluginFoldername,
|
|
'INSTALL_LINK' => $sess->url('main.php?area='.$area.'&frame=4&pim_view=install-extracted&pluginFoldername=' . $pluginFoldername)
|
|
);
|
|
$oView2->setMultiVariables(array_merge($aLang, $aDefaultLang));
|
|
|
|
$oView2->setTemplate('pi_manager_extracted_plugins.html');
|
|
$pluginsExtracted .= $oView2->getRendered(1);
|
|
$iPiExCount++;
|
|
}
|
|
}
|
|
closedir($handle);
|
|
}
|
|
}
|
|
|
|
// if pluginsExtracted var is empty
|
|
if (empty($pluginsExtracted)) {
|
|
$pluginsExtracted = i18n('No entries', 'pim');
|
|
}
|
|
|
|
|
|
// added language vars
|
|
$oView->setVariable(i18n("Add new plugin", 'pluginmanager'), 'LANG_ADD');
|
|
$oView->setVariable(i18n("Please choose a plugin package", 'pluginmanager'), 'LANG_ADD_CHOOSE');
|
|
$oView->setVariable(i18n("Upload plugin package", 'pluginmanager'), 'LANG_ADD_UPLOAD');
|
|
$oView->setVariable(i18n("Remove marked Plugins", 'pluginmanager'), 'LANG_DELETE');
|
|
$oView->setVariable(i18n("Installed Plugins", 'pluginmanager'), 'LANG_INSTALLED');
|
|
$oView->setVariable(i18n("Update marked plugins", 'pluginmanager'), 'LANG_UPDATE');
|
|
$oView->setVariable(i18n('Plugins to install', 'pluginmanager'), 'LANG_EXTRACTED');
|
|
$oView->setVariable(i18n('Drag & Drop plugin to list of installed plugins to install it.', 'pluginmanager'), 'LANG_HINT_EXTRACTED');
|
|
|
|
// added installed plugins to pi_manager_overview
|
|
$oView->setVariable($iNumInstalledPlugins, 'INSTALLED_PLUGINS');
|
|
$oView->setVariable($sPlugins, 'PLUGINS');
|
|
$oView->setVariable($pluginsExtracted, 'PLUGINS_EXTRACTED');
|
|
|
|
//print_r($aMessages);
|
|
// show overview page
|
|
$oView->setTemplate('pi_manager_overview.html');
|
|
$sMessages = "";
|
|
if(count($aMessages) > 0 ) {
|
|
$sMessages .= '<ul id="pim_messages" style="display:none">';
|
|
foreach($aMessages as $sMessage) {
|
|
$sMessages .= "<li>".$sMessage."</li>";
|
|
}
|
|
$sMessages .= "</ul>";
|
|
}
|
|
//$oView->getRendered();
|
|
$oPage->setContent(array($oView->getRendered(1), $sMessages));
|
|
$oPage->render();
|
|
?>
|