1
0
mirror of https://github.com/e107inc/e107.git synced 2025-01-17 12:48:24 +01:00

Plugin Manager fixes.

This commit is contained in:
Cameron 2017-02-06 08:47:39 -08:00
parent fec05adfab
commit 4b3317ad18
3 changed files with 94 additions and 32 deletions

View File

@ -37,14 +37,10 @@ if(!deftrue('e_DEBUG_PLUGMANAGER'))
$plugin = new e107plugin;
$pman = new pluginManager;
define("e_PAGETITLE",ADLAN_98." - ".$pman->pagetitle);
}
define("e_PAGETITLE",ADLAN_98." - ".$pman->pagetitle);
if(isset($_POST['uninstall_cancel']))
{
header("location:".e_SELF);
@ -248,6 +244,7 @@ class plugin_ui extends e_admin_ui
$model->set('plugin_author',$plg->getAuthor());
$model->set('plugin_compatible',$plg->getCompat());
$model->set('plugin_admin_url',$plg->getAdminUrl());
$model->set('plugin_admin_caption', $plg->getAdminCaption());
$model->set('plugin_description',$plg->getDescription());
$model->set('plugin_version_file',$plg->getVersion());
$model->set('plugin_install_required',$plg->getInstallRequired());
@ -297,6 +294,33 @@ class plugin_ui extends e_admin_ui
}
function renderHelp()
{
$plg = e107::getPlug();
if(!$list = $plg->getUpgradableList())
{
return null;
}
$text = "<ul class='list-unstyled'>";
foreach($list as $path=>$ver)
{
$plg->load($path);
$url = e_ADMIN."plugin.php?mode=installed&action=upgrade&id=".$path;
$text .= "<li><a href='".$url."'>".$plg->getIcon(32)." ".$plg->getName()."</a></li>";
}
$text .= "</ul>";
return array('caption'=>"Updates to be Installed", 'text'=>$text);
}
// Action Pages.
@ -870,7 +894,8 @@ class plugin_form_ui extends e_admin_form_ui
if($var['plugin_admin_url'] && $var['plugin_installflag'] == true)
{
$conf_title = LAN_CONFIGURE . ' ' . $tp->toHTML($var['@attributes']['name'], "", "defs,emotes_off, no_make_clickable");
$conf_title = !empty($var['plugin_admin_caption']) ? $var['plugin_admin_caption'] : LAN_CONFIGURE . ' ' . $tp->toHTML($var['plugin_name'], "", "defs,emotes_off, no_make_clickable");
$plugin_config_icon = "<a class='btn btn-default' title='{$conf_title}' href='" . $var['plugin_admin_url'] . "' >" . ADMIN_CONFIGURE_ICON . "</a>";
}
@ -908,9 +933,7 @@ class plugin_form_ui extends e_admin_form_ui
if($var['plugin_version'] != $var['plugin_version_file'] && $var['plugin_installflag'])
{
// $text .= "<br /><input type='button' class='btn' onclick=\"location.href='".e_SELF."?upgrade.{$var['plugin_id']}'\" title='".EPL_UPGRADE." to v".$var['@attributes']['version']."' value='".EPL_UPGRADE."' />";
e107::getMessage()->addInfo("<b>" . $tp->toHtml($var['plugin_name'], false, 'TITLE') . "</b> is ready to be upgraded. (see below)"); // TODO LAN
$text .= "<a class='btn btn-default' href='" . e_SELF . "?mode=".$mode."&action=upgrade&id={$var['plugin_path']}' title=\"" . EPL_UPGRADE . " v" . $var['@attributes']['version'] . "\" >" . ADMIN_UPGRADEPLUGIN_ICON . "</a>";
$text .= "<a class='btn btn-default' href='" . e_SELF . "?mode=".$mode."&action=upgrade&id={$var['plugin_path']}' title=\"" . EPL_UPGRADE . " v" . $var['plugin_version'] . "\" >" . ADMIN_UPGRADEPLUGIN_ICON . "</a>";
}
if($var['plugin_installflag'] && e_DEBUG == true)

View File

@ -139,6 +139,7 @@ class e_plugin
return false;
}
public function getAuthor($type='name')
{
if(!isset($this->_data[$this->_plugdir]['author']['@attributes'][$type]))
@ -152,8 +153,6 @@ class e_plugin
public function getCategory()
{
if(!isset($this->_data[$this->_plugdir]['category']))
@ -234,11 +233,42 @@ class e_plugin
}
/**
* Check if the current plugin is a legacy plugin which doesn't use plugin.xml
* @return mixed
*/
public function isLegacy()
{
return $this->_data[$this->_plugdir]['legacy'];
}
public function getUpgradableList()
{
$needed = array();
foreach($this->_installed as $path=>$curVal)
{
$version = $this->load($path)->getVersion();
if(version_compare($curVal,$version,"<")) // check pref version against file version.
{
$needed[$path] = $version;
}
}
return !empty($needed) ? $needed : false;
}
private function initIDs()
{
$sql = e107::getDb();
if ($rows = $sql->retrieve("plugin", "plugin_id,plugin_path,plugin_installflag", "plugin_id != '' ORDER by plugin_path ", true))
if ($rows = $sql->retrieve("plugin", "*", "plugin_id != '' ORDER by plugin_path ", true))
{
foreach($rows as $row)
@ -248,7 +278,7 @@ class e_plugin
if(!empty($row['plugin_installflag']))
{
$this->_installed[$path] = $path;
$this->_installed[$path] = $row['plugin_version'];
}
$this->_addons[$path] = !empty($row['plugin_addons']) ? explode(',',$row['plugin_addons']) : null;// $path;
@ -350,7 +380,7 @@ class e_plugin
$mes = e107::getMessage();
e107::getDebug()->log("Parsing Plugin: ".$plugName);
// $xml->setOptArrayTags('extendedField,userclass,menuLink,commentID'); // always arrays for these tags.
// $xml->setOptStringTags('install,uninstall,upgrade');
@ -419,7 +449,7 @@ class e_plugin
$ret['administration']['caption'] = varset($ret['adminLinks']['link'][0]['@attributes']['description']);
$ret['administration']['iconSmall'] = varset($ret['adminLinks']['link'][0]['@attributes']['iconSmall']);
$ret['administration']['configFile'] = varset($ret['adminLinks']['link'][0]['@attributes']['url']);
$ret['legacy'] = false;
return $ret;
@ -523,7 +553,7 @@ class e_plugin
}
$ret['files'] = preg_grep('/^([^.])/', scandir(e_PLUGIN.$plugName,SCANDIR_SORT_ASCENDING));
$ret['legacy'] = true;
return $ret;
@ -846,27 +876,33 @@ class e107plugin
require_once(e_HANDLER."db_verify_class.php");
$dbv = new db_verify;
$plg = e107::getPlug();
foreach($plugVersions as $path=>$version)
{
$fullPath = e_PLUGIN.$path."/plugin.xml";
if(file_exists(e_PLUGIN.$path."/plugin.xml"))
{
$data = $xml->loadXMLfile($fullPath, true);
if($plg->isLegacy() === true)
{
continue;
}
$data = $plg->load($path)->getMeta();
// $data = $xml->loadXMLfile($fullPath, true);
if(!isset($this->core_plugins[$path])) // check non-core plugins for sql file changes.
{
$dbv->errors = array();
$dbv->compare($path);
if(!isset($this->core_plugins[$path])) // check non-core plugins for sql file changes.
{
$dbv->errors = array();
$dbv->compare($path);
if($dbv->errors())
{
$needed[$path] = $data;
}
if($dbv->errors())
{
$needed[$path] = $data;
}
}
$curVal = floatval($version);
$fileVal = floatval($data['@attributes']['version']);
$fileVal = $plg->getVersion(); // floatval($data['@attributes']['version']);
if($ret = $this->execute_function($path, 'upgrade', 'required', array($this, $curVal, $fileVal))) // Check {plugin}_setup.php and run a 'required' method, if true, then update is required.
{
@ -893,7 +929,7 @@ class e107plugin
// $log->flushMessages();
$needed[$path] = $data;
}
}
}
@ -4207,6 +4243,7 @@ class e107plugin
$eplug_icon = null;
$eplug_icon_small = null;
e107::getDebug()->log("Legacy Plugin Parse (php): ".$plugName);
ob_start();
if (include(e_PLUGIN.$plugName.'/plugin.php'))
@ -4297,6 +4334,8 @@ class e107plugin
$xml = e107::getXml();
$mes = e107::getMessage();
e107::getDebug()->log("Legacy Plugin Parse (xml): ".$plugName);
// $xml->setOptArrayTags('extendedField,userclass,menuLink,commentID'); // always arrays for these tags.
// $xml->setOptStringTags('install,uninstall,upgrade');
if(null === $where) $where = 'plugin.xml';

View File

@ -990,7 +990,7 @@ i.e-cat_users-32{ background-position: -555px 0; width: 32px; height: 32px; }
$pref = e107::getPref();
foreach($data as $path)
foreach($data as $path=>$ver)
{
if(!e107::isInstalled($path))