1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-03 13:17:24 +02:00

Fix for duplicate messages and plugin install issue.

This commit is contained in:
CaMer0n
2012-11-13 21:40:29 +00:00
parent e15d57cb3a
commit feb9a79aa0
2 changed files with 30 additions and 76 deletions

View File

@@ -190,6 +190,7 @@ class eMessage
{ {
$message = array($message); $message = array($message);
} }
foreach ($message as $m) foreach ($message as $m)
{ {
$this->add(array($m, $mstack), $type, $session); $this->add(array($m, $mstack), $type, $session);
@@ -430,7 +431,7 @@ class eMessage
$this->mergeWithSession(true, $mstack); $this->mergeWithSession(true, $mstack);
} }
$ret = array(); $ret = array();
$unique = array();
foreach ($this->_get_types() as $type) foreach ($this->_get_types() as $type)
{ {
if(E_MESSAGE_DEBUG === $type && !deftrue('E107_DEBUG_LEVEL')) if(E_MESSAGE_DEBUG === $type && !deftrue('E107_DEBUG_LEVEL'))
@@ -448,7 +449,7 @@ class eMessage
if($reset) $this->reset(false, $mstack); if($reset) $this->reset(false, $mstack);
if(true === $raw || empty($ret)) return ($raw ? $ret : ''); if(true === $raw || empty($ret)) return ($raw ? $ret : '');
//changed to class
return " return "
<div class='s-message'> <div class='s-message'>
".implode("\n", $ret)." ".implode("\n", $ret)."
@@ -469,6 +470,7 @@ class eMessage
if (empty($message)) return ''; if (empty($message)) return '';
elseif (is_array($message)) elseif (is_array($message))
{ {
$message = array_unique($message); // quick fix for duplicates.
$message = "<div class='s-message-item'>".implode("</div>\n<div class='s-message-item'>", $message)."</div>"; $message = "<div class='s-message-item'>".implode("</div>\n<div class='s-message-item'>", $message)."</div>";
} }
return " return "

View File

@@ -1175,38 +1175,6 @@ class e107plugin
$canContinue = FALSE; $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'])) 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 $this->XmlLanguageFiles($function, $plug_vars['languageFiles'], 'pre'); // First of all, see if there's a language file specific to install
@@ -1225,45 +1193,17 @@ class e107plugin
// All the dependencies are OK - can start the install now // 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)) if (!is_bool($ret))
$txt .= $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.
*/
/* // Handle tables
$doSql = true; if ($canContinue && count($sql_list)) // TODO - move to it's own function. XmlTables().
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
require_once(e_HANDLER.'db_table_admin_class.php'); require_once(e_HANDLER.'db_table_admin_class.php');
$dbHandler = new db_table_admin; $dbHandler = new db_table_admin;
@@ -1283,7 +1223,7 @@ class e107plugin
{ {
case 'install': case 'install':
$sqlTable = str_replace("CREATE TABLE ".MPREFIX.'`', "CREATE TABLE `".MPREFIX, preg_replace("/create table\s+/si", "CREATE TABLE ".MPREFIX, $ct[0])); $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 $status = $this->manage_tables('add', array($sqlTable)) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; // Pass the statement to create the table
$mes->add($txt, $status); $mes->add($txt, $status);
break; break;
@@ -1291,7 +1231,7 @@ class e107plugin
$tmp = $dbHandler->update_table_structure($ct, FALSE, TRUE, $pref['multilanguage']); $tmp = $dbHandler->update_table_structure($ct, FALSE, TRUE, $pref['multilanguage']);
if ($tmp === FALSE) if ($tmp === FALSE)
{ {
$error[] = 'Error updating table: '.$ct[1]; $error[] = 'Error Updating Table: '.$ct[1];
} }
elseif ($tmp !== TRUE) elseif ($tmp !== TRUE)
{ {
@@ -1303,7 +1243,7 @@ class e107plugin
case 'uninstall': case 'uninstall':
if (vartrue($options['delete_tables'], FALSE)) if (vartrue($options['delete_tables'], FALSE))
{ {
$txt = "Removing table {$ct[1]} <br />"; $txt = "Removing Table: {$ct[1]} <br />";
$status = $this->manage_tables('remove', array($ct[1])) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; // Delete the table $status = $this->manage_tables('remove', array($ct[1])) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; // Delete the table
$mes->add($txt, $status); $mes->add($txt, $status);
} }
@@ -1408,8 +1348,9 @@ class e107plugin
} }
}*/ }*/
if (!$this->execute_function($path, $function, 'post')) // Call any custom post functions defined in <plugin>_setup.php or the deprecated <management> section // Run custom {plugin}_setup install/upgrade etc. for INSERT, ALTER etc. etc. etc.
// Call any custom post functions defined in <plugin>_setup.php or the deprecated <management> section
if (!$this->execute_function($path, $function, 'post'))
{ {
if ($function == 'install') if ($function == 'install')
{ {
@@ -1427,6 +1368,17 @@ class e107plugin
} }
// Placeholder.
function XmlTables($data)
{
}
/** /**
* Process XML Tag <dependencies> (deprecated 'depend' which is a brand of adult diapers) * Process XML Tag <dependencies> (deprecated 'depend' which is a brand of adult diapers)
* @param array $tag * @param array $tag