diff --git a/e107_admin/plugin.php b/e107_admin/plugin.php
index 8b7552036..b125b7544 100644
--- a/e107_admin/plugin.php
+++ b/e107_admin/plugin.php
@@ -11,8 +11,8 @@
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_admin/plugin.php,v $
-| $Revision: 1.5 $
-| $Date: 2007-02-04 21:42:48 $
+| $Revision: 1.6 $
+| $Date: 2007-05-07 13:38:28 $
| $Author: e107steved $
+----------------------------------------------------------------------------+
*/
@@ -124,7 +124,8 @@ if ($action == 'uninstall')
$id = intval($id);
$plug = $plugin->getinfo($id);
//Uninstall Plugin
- if ($plug['plugin_installflag'] == TRUE ) {
+ if ($plug['plugin_installflag'] == TRUE )
+ {
include(e_PLUGIN.$plug['plugin_path'].'/plugin.php');
$func = $eplug_folder.'_uninstall';
@@ -149,7 +150,7 @@ if ($action == 'uninstall')
}
else
{
- $text .= "Tables not deleted during uninstall process by request
";
+ $text .= EPL_ADLAN_49."
";
}
if (is_array($eplug_prefs)) {
@@ -229,6 +230,12 @@ if ($action == 'uninstall')
$plugin -> manage_notify('remove', $eplug_folder);
$sql->db_Update('plugin', "plugin_installflag=0, plugin_version='{$eplug_version}' WHERE plugin_id='{$id}' ");
+ if (isset($pref['plug_installed'][$plug['plugin_path']]))
+ {
+ unset($pref['plug_installed'][$plug['plugin_path']]);
+ save_prefs();
+ }
+
if($_POST['delete_files'])
{
@@ -371,6 +378,8 @@ if ($action == 'upgrade') {
$text .= (isset($eplug_upgrade_done)) ? '
'.$eplug_upgrade_done : "
".LAN_UPGRADE_SUCCESSFUL;
$sql->db_Update('plugin', "plugin_version ='{$eplug_version}', plugin_addons='{$eplug_addons}' WHERE plugin_id='$id' ");
+ $pref['plug_installed'][$plug['plugin_path']] = $eplug_version; // Update the version
+ save_prefs();
$ns->tablerender(EPL_ADLAN_34, $text);
$plugin -> save_addon_prefs();
diff --git a/e107_handlers/plugin_class.php b/e107_handlers/plugin_class.php
index a47d7d089..cc9250628 100644
--- a/e107_handlers/plugin_class.php
+++ b/e107_handlers/plugin_class.php
@@ -11,9 +11,9 @@
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_handlers/plugin_class.php,v $
-| $Revision: 1.6 $
-| $Date: 2007-03-27 13:48:30 $
-| $Author: lisa_ $
+| $Revision: 1.7 $
+| $Date: 2007-05-07 13:38:28 $
+| $Author: e107steved $
+----------------------------------------------------------------------------+
*/
@@ -58,7 +58,8 @@ class e107plugin
);
/**
- * Returns an array containing details of all plugins in the plugin table - should noramlly use e107plugin::update_plugins_table() first to make sure the table is up to date.
+ * Returns an array containing details of all plugins in the plugin table - should normally use e107plugin::update_plugins_table() first to
+ * make sure the table is up to date. (Primarily called from plugin manager to get lists of installed and uninstalled plugins.
* @return array plugin details
*/
function getall($flag)
@@ -77,12 +78,13 @@ class e107plugin
*/
function update_plugins_table()
{
- global $sql, $sql2, $mySQLprefix, $menu_pref, $tp;
+ global $sql, $sql2, $mySQLprefix, $menu_pref, $tp, $pref;
require_once(e_HANDLER.'file_class.php');
$fl = new e_file;
$pluginList = $fl->get_files(e_PLUGIN, "^plugin\.php$", "standard", 1);
+ $sp = FALSE;
// Get rid of any variables previously defined which may occur in plugin.php
foreach($pluginList as $p)
@@ -98,6 +100,7 @@ class e107plugin
// We have to include here to set the variables, otherwise we only get uninstalled plugins
// Would be nice to eval() the file contents to pick up errors better, but too many path issues
+ $plug['plug_action'] = 'scan'; // Make sure plugin.php knows what we're up to
include("{$p['path']}{$p['fname']}");
$plugin_path = substr(str_replace(e_PLUGIN,"",$p['path']),0,-1);
@@ -121,6 +124,19 @@ class e107plugin
// If plugin not installed, and version number of files changed, update version as well
if (($ep_row['plugin_installflag'] == 0) && ($ep_row['plugin_version'] != $eplug_version)) $ep_update = ", plugin_version = '{$eplug_version}' ";
$sql->db_Update("plugin", "plugin_addons = '{$eplug_addons}'{$ep_update} WHERE plugin_path = '$plugin_path'");
+
+ if (($ep_row['plugin_installflag'] != 0) && (!isset($pref['plug_installed'][$plugin_path]) || ($pref['plug_installed'][$plugin_path] != $ep_row['plugin_version'])))
+ {
+ $pref['plug_installed'][$plugin_path] = $ep_row['plugin_version'];
+// echo "Add: ".$plugin_path."->".$ep_row['plugin_version']."
";
+ $sp = TRUE;
+ }
+ elseif (($ep_row['plugin_installflag'] == 0) && isset($pref['plug_installed'][$plugin_path]))
+ {
+ unset($pref['plug_installed'][$plugin_path]);
+// echo "Remove: ".$plugin_path."->".$ep_row['plugin_version']."
";
+ $sp = TRUE;
+ }
unset($ep_row, $ep_update);
}
@@ -144,8 +160,11 @@ class e107plugin
$sql2->db_Delete('plugin', "plugin_path = '{$row['plugin_path']}'");
}
}
+ if ($sp) save_prefs();
}
+
+
/**
* Returns deatils of a plugin from the plugin table from it's ID
*
@@ -414,6 +433,7 @@ class e107plugin
// install plugin ...
$plug = $this->getinfo($id);
+ $plug['plug_action'] = 'install';
if ($plug['plugin_installflag'] == FALSE) {
include_once(e_PLUGIN.$plug['plugin_path'].'/plugin.php');
@@ -479,6 +499,7 @@ class e107plugin
$plug_perm['everyone'] = e_UC_PUBLIC;
$plug_perm['guest'] = e_UC_GUEST;
$plug_perm['member'] = e_UC_MEMBER;
+ $plug_perm['mainadmin'] = e_UC_MAINADMIN;
$plug_perm['admin'] = e_UC_ADMIN;
$plug_perm['nobody'] = e_UC_NOBODY;
$eplug_link_perms = strtolower($eplug_link_perms);
@@ -497,6 +518,9 @@ class e107plugin
$eplug_addons = $this->getAddons($eplug_folder);
$sql->db_Update('plugin', "plugin_installflag = 1, plugin_addons = '{$eplug_addons}' WHERE plugin_id = '".intval($id)."'");
+ $pref['plug_installed'][$plugin_path] = $plug['plugin_version'];
+ save_prefs();
+
if($rssmess){ $text .= $rssmess; }
$text .= (isset($eplug_done) ? "
{$eplug_done}" : "
".LAN_INSTALL_SUCCESSFUL);
} else {
@@ -567,17 +591,18 @@ class e107plugin
}
else
{
- unset($pref['bbcode_list'][$path]);
+ if (isset($pref['bbcode_list'][$path])) unset($pref['bbcode_list'][$path]);
}
// Build shortcode list
- if(count($sc_array) > 0){
- ksort($sc_array);
- $pref['shortcode_list'][$path] = $sc_array;
+ if(count($sc_array) > 0)
+ {
+ ksort($sc_array);
+ $pref['shortcode_list'][$path] = $sc_array;
}
else
{
- unset($pref['shortcode_list'][$path]);
+ if(isset($pref['shortcode_list'][$path])) unset($pref['shortcode_list'][$path]);
}
}
diff --git a/e107_languages/English/admin/lan_plugin.php b/e107_languages/English/admin/lan_plugin.php
index 504ca0d4c..229a41aa2 100644
--- a/e107_languages/English/admin/lan_plugin.php
+++ b/e107_languages/English/admin/lan_plugin.php
@@ -4,8 +4,8 @@
| e107 website system - Language File.
|
| $Source: /cvs_backup/e107_0.8/e107_languages/English/admin/lan_plugin.php,v $
-| $Revision: 1.2 $
-| $Date: 2007-02-04 21:42:55 $
+| $Revision: 1.3 $
+| $Date: 2007-05-07 13:38:34 $
| $Author: e107steved $
+----------------------------------------------------------------------------+
*/
@@ -60,6 +60,7 @@ define("EPL_ADLAN_45", "Your menu item has been uploaded and unzipped, to activa
define("EPL_ADLAN_46", "PCLZIP extract error:");
define("EPL_ADLAN_47", "PCLTAR extract error: ");
define("EPL_ADLAN_48", "code:");
+define('EPL_ADLAN_49', "Tables not deleted during uninstall process by request");
// define("EPL_CANCEL", "Cancel"); use LAN_CANCEL instead !!
// define("EPL_EMAIL", "email");