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");