From feb9a79aa01662cb30eda484d9a37e1b8806f83b Mon Sep 17 00:00:00 2001 From: CaMer0n Date: Tue, 13 Nov 2012 21:40:29 +0000 Subject: [PATCH] Fix for duplicate messages and plugin install issue. --- e107_handlers/message_handler.php | 8 ++- e107_handlers/plugin_class.php | 98 ++++++++----------------------- 2 files changed, 30 insertions(+), 76 deletions(-) diff --git a/e107_handlers/message_handler.php b/e107_handlers/message_handler.php index 2d5fa7ffe..c315d05ae 100644 --- a/e107_handlers/message_handler.php +++ b/e107_handlers/message_handler.php @@ -190,6 +190,7 @@ class eMessage { $message = array($message); } + foreach ($message as $m) { $this->add(array($m, $mstack), $type, $session); @@ -430,7 +431,7 @@ class eMessage $this->mergeWithSession(true, $mstack); } $ret = array(); - + $unique = array(); foreach ($this->_get_types() as $type) { if(E_MESSAGE_DEBUG === $type && !deftrue('E107_DEBUG_LEVEL')) @@ -438,7 +439,7 @@ class eMessage continue; } $message = $this->get($type, $mstack, $raw); - + if(!empty($message)) { $ret[$type] = $message; @@ -448,7 +449,7 @@ class eMessage if($reset) $this->reset(false, $mstack); if(true === $raw || empty($ret)) return ($raw ? $ret : ''); - //changed to class + return "
".implode("\n", $ret)." @@ -469,6 +470,7 @@ class eMessage if (empty($message)) return ''; elseif (is_array($message)) { + $message = array_unique($message); // quick fix for duplicates. $message = "
".implode("
\n
", $message)."
"; } return " diff --git a/e107_handlers/plugin_class.php b/e107_handlers/plugin_class.php index 5ae90aa1e..6c58306c9 100644 --- a/e107_handlers/plugin_class.php +++ b/e107_handlers/plugin_class.php @@ -1175,42 +1175,10 @@ class e107plugin $canContinue = FALSE; } - /* - * NEW upgrade XML - Not required. - * higher priority -> from-to version upgrade XML - e.g. upgrade/upgrade_1.0-1.1.xml (v1.0 to v1.1 only) - * when above not present -> generic version upgrade XML - e.g. upgrade/upgrade_1.1.xml (all prior versions to v1.1) - * last checked -> generic upgrade file - plugName/plugin_upgrade.xml (all version) - * All upgrade XMLs are optional BUT recommended (at least plugin_upgrade.xml) - * The reason is plugin prefs will be reset to default values, user classes will be duplicated etx if plugin.xml is used - * To avoid this, put upgrade XML with basic data nodes (version, description, category, author etc) - */ - /* - if ($canContinue && $function === 'upgrade') - { - $found = false; - $search = array( - 'upgrade/upgrade_'.$this->current_plug['plugin_version'].'-'.$this->plug_vars['@attributes']['version'].'.xml', - 'upgrade/upgrade_'.$this->plug_vars['@attributes']['version'].'.xml', - 'plugin_upgrade.xml', - ); - foreach ($search as $case) - { - if(file_exists($path.$case) && is_readable($path.$case) && $this->parse_plugin_xml($plug['plugin_path'], $case)) - { - // TODO - lan - $mes->addSuccess('Upgrade using '.$case); - $plug_vars = $this->plug_vars; - break; - } - } - } - * */ - // END upgrade XML - if (varset($plug_vars['languageFiles'])) { $this->XmlLanguageFiles($function, $plug_vars['languageFiles'], 'pre'); // First of all, see if there's a language file specific to install - } + } // Next most important, if installing or upgrading, check that any dependencies are met if ($canContinue && ($function != 'uninstall') && isset($plug_vars['dependencies'])) @@ -1225,45 +1193,17 @@ class e107plugin // All the dependencies are OK - can start the install now - if ($canContinue) + if ($canContinue) // Run custom {plugin}_setup install/upgrade etc. for INSERT, ALTER etc. etc. etc. { - $ret = $this->execute_function($path, $function, 'pre'); + $ret = $this->execute_function($path, $function, 'pre'); if (!is_bool($ret)) $txt .= $ret; } - /* - * XXX - sql upgrade draft - we need better 'parse sql' support, INSERTs, ALTERs, etc - * NEW upgrade SQL - ALREADY EXISTS - use upgrade_pre($var) OR upgrade_post() methods in the {plugin}_setup.php file. - * All upgrade sql scripts are optional, if not found system is using the auto detection mode (diff against main sql file) - * ONLY table CONTENT should be changed with this. - */ - - /* - $doSql = true; - if($canContinue && $function === 'upgrade') - { - $search = array( - 'upgrade/sql_'.$this->current_plug['plugin_version'].'-'.$this->plug_vars['@attributes']['version'].'.php', - 'upgrade/sql_'.$this->plug_vars['@attributes']['version'].'.php', - ); - foreach ($search as $case) - { - if(file_exists($path.$case) && is_readable($path.$case) && $this->parse_plugin_xml($plug['plugin_path'], $case)) - { - // TODO - lan - $mes->addSuccess('(draft) Upgrade using '.$case); - $doSql = false; - break; - } - } - } - - */ - - if ($canContinue && $doSql && count($sql_list)) // TODO - move to it's own function. - - { // Handle tables + + // Handle tables + if ($canContinue && count($sql_list)) // TODO - move to it's own function. XmlTables(). + { require_once(e_HANDLER.'db_table_admin_class.php'); $dbHandler = new db_table_admin; @@ -1283,7 +1223,7 @@ class e107plugin { case 'install': $sqlTable = str_replace("CREATE TABLE ".MPREFIX.'`', "CREATE TABLE `".MPREFIX, preg_replace("/create table\s+/si", "CREATE TABLE ".MPREFIX, $ct[0])); - $txt = "Adding table: {$ct[1]} ... "; + $txt = "Adding Table: {$ct[1]} ... "; $status = $this->manage_tables('add', array($sqlTable)) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; // Pass the statement to create the table $mes->add($txt, $status); break; @@ -1291,7 +1231,7 @@ class e107plugin $tmp = $dbHandler->update_table_structure($ct, FALSE, TRUE, $pref['multilanguage']); if ($tmp === FALSE) { - $error[] = 'Error updating table: '.$ct[1]; + $error[] = 'Error Updating Table: '.$ct[1]; } elseif ($tmp !== TRUE) { @@ -1303,7 +1243,7 @@ class e107plugin case 'uninstall': if (vartrue($options['delete_tables'], FALSE)) { - $txt = "Removing table {$ct[1]}
"; + $txt = "Removing Table: {$ct[1]}
"; $status = $this->manage_tables('remove', array($ct[1])) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; // Delete the table $mes->add($txt, $status); } @@ -1400,7 +1340,7 @@ class e107plugin e107::getConfig('core')->save(); - /* if($function == 'install') + /* if($function == 'install') { if(isset($plug_vars['management']['installDone'][0])) { @@ -1408,8 +1348,9 @@ class e107plugin } }*/ - if (!$this->execute_function($path, $function, 'post')) // Call any custom post functions defined in _setup.php or the deprecated section - + // Run custom {plugin}_setup install/upgrade etc. for INSERT, ALTER etc. etc. etc. + // Call any custom post functions defined in _setup.php or the deprecated section + if (!$this->execute_function($path, $function, 'post')) { if ($function == 'install') { @@ -1427,6 +1368,17 @@ class e107plugin } + // Placeholder. + function XmlTables($data) + { + + } + + + + + + /** * Process XML Tag (deprecated 'depend' which is a brand of adult diapers) * @param array $tag