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

Issue #67 - fix admin log handling of plugin-specific event titles (with language support).

This commit is contained in:
SteveD
2012-12-23 15:00:15 +00:00
parent 98741074c2
commit c11db9a05f
6 changed files with 121 additions and 27 deletions

View File

@@ -57,8 +57,8 @@ if(is_array($pref['lan_log_list'])) //... and for any plugins which support it
$file = str_replace('--LAN--', e_LANGUAGE, $file); $file = str_replace('--LAN--', e_LANGUAGE, $file);
// echo "orig = ".$file." "; // echo "orig = ".$file." ";
e107::lan($path,'log',true); //e107::lan($path,'log',true);
//include_lan(e_PLUGIN.$path.'/'.$file); include_lan(e_PLUGIN.$path.'/languages/'.$file);
} }
} }

View File

@@ -196,7 +196,7 @@ class system_tools
if(isset($_POST['plugin_scan']) || e_QUERY == "plugin" || isset($_POST['delplug']) || $_GET['mode']=='plugin_scan') if(isset($_POST['plugin_scan']) || e_QUERY == "plugin" || isset($_POST['delplug']) || $_GET['mode']=='plugin_scan')
{ {
$this->plugin_viewscan(); $this->plugin_viewscan('refresh');
} }
if(vartrue($_POST['perform_utf8_convert'])) if(vartrue($_POST['perform_utf8_convert']))
@@ -843,7 +843,7 @@ class system_tools
* Plugin Folder Scanner * Plugin Folder Scanner
* @return none * @return none
*/ */
private function plugin_viewscan() private function plugin_viewscan($mode = 'update')
{ {
$error_messages = array(0 => DBLAN_31, 1 => DBLAN_32, 2 => DBLAN_33, 3 => DBLAN_34); $error_messages = array(0 => DBLAN_31, 1 => DBLAN_32, 2 => DBLAN_33, 3 => DBLAN_34);
$error_image = array("integrity_pass.png", "integrity_fail.png", "warning.png", "blank.png"); $error_image = array("integrity_pass.png", "integrity_fail.png", "warning.png", "blank.png");
@@ -858,8 +858,8 @@ class system_tools
require_once (e_HANDLER."plugin_class.php"); require_once (e_HANDLER."plugin_class.php");
$ep = new e107plugin(); $ep = new e107plugin();
$ep->update_plugins_table(); // scan for e_xxx changes and save to plugin table. $ep->update_plugins_table($mode); // scan for e_xxx changes and save to plugin table.
$ep->save_addon_prefs(); // generate global e_xxx_list prefs from plugin table. $ep->save_addon_prefs($mode); // generate global e_xxx_list prefs from plugin table.
/* we all are awaiting for PHP5 only support - method chaining... /* we all are awaiting for PHP5 only support - method chaining...
$mes->add(DBLAN_22.' - '.DBLAN_23, E_MESSAGE_SUCCESS) $mes->add(DBLAN_22.' - '.DBLAN_23, E_MESSAGE_SUCCESS)

View File

@@ -66,7 +66,7 @@ if(e_AJAX_REQUEST && isset($_GET['src'])) // Ajax
$dir = basename($unarc[0]['filename']); $dir = basename($unarc[0]['filename']);
$plugPath = preg_replace("/[^a-z0-9-\._]/", "-", strtolower($dir)); $plugPath = preg_replace("/[^a-z0-9-\._]/", "-", strtolower($dir));
e107::getSingleton('e107plugin')->update_plugins_table(); e107::getSingleton('e107plugin')->update_plugins_table('update');
e107::getDb()->db_Select_gen("SELECT plugin_id FROM #plugin WHERE plugin_path = '".$plugPath."' LIMIT 1"); e107::getDb()->db_Select_gen("SELECT plugin_id FROM #plugin WHERE plugin_path = '".$plugPath."' LIMIT 1");
$row = e107::getDb()->db_Fetch(MYSQL_ASSOC); $row = e107::getDb()->db_Fetch(MYSQL_ASSOC);
$status = e107::getSingleton('e107plugin')->install_plugin($row['plugin_id']); $status = e107::getSingleton('e107plugin')->install_plugin($row['plugin_id']);
@@ -528,7 +528,7 @@ class pluginManager{
$text .= '<br />'.EPL_ADLAN_31.' <b>'.e_PLUGIN.$eplug_folder.'</b> '.EPL_ADLAN_32; $text .= '<br />'.EPL_ADLAN_31.' <b>'.e_PLUGIN.$eplug_folder.'</b> '.EPL_ADLAN_32;
} }
$plugin->save_addon_prefs(); $plugin->save_addon_prefs('update');
$this->show_message($text, E_MESSAGE_SUCCESS); $this->show_message($text, E_MESSAGE_SUCCESS);
// $ns->tablerender(EPL_ADLAN_1.' '.$tp->toHtml($plug['plugin_name'], "", "defs,emotes_off,no_make_clickable"), $text); // $ns->tablerender(EPL_ADLAN_1.' '.$tp->toHtml($plug['plugin_name'], "", "defs,emotes_off,no_make_clickable"), $text);
@@ -651,7 +651,7 @@ class pluginManager{
} }
else else
{ {
$plugin ->save_addon_prefs(); $plugin ->save_addon_prefs('update');
$admin_log->log_event('PLUGMAN_01', $this->id.':'.$eplug_folder, E_LOG_INFORMATIVE, ''); $admin_log->log_event('PLUGMAN_01', $this->id.':'.$eplug_folder, E_LOG_INFORMATIVE, '');
$this->show_message($text, E_MESSAGE_SUCCESS); $this->show_message($text, E_MESSAGE_SUCCESS);
} }
@@ -745,7 +745,7 @@ class pluginManager{
$emessage->add($text, E_MESSAGE_SUCCESS); $emessage->add($text, E_MESSAGE_SUCCESS);
$plugin->save_addon_prefs(); $plugin->save_addon_prefs('update');
} }
@@ -773,7 +773,7 @@ class pluginManager{
function pluginCheck() function pluginCheck()
{ {
global $plugin; global $plugin;
$plugin->update_plugins_table(); $plugin->update_plugins_table('update');
} }
// ---------------------------------------------------------- // ----------------------------------------------------------
// render plugin information ... // render plugin information ...

View File

@@ -1066,7 +1066,7 @@ function update_706_to_800($type='')
if ($just_check) return update_needed('Update plugin table'); if ($just_check) return update_needed('Update plugin table');
require_once(e_HANDLER.'plugin_class.php'); require_once(e_HANDLER.'plugin_class.php');
$ep = new e107plugin; $ep = new e107plugin;
$ep -> update_plugins_table(); $ep -> update_plugins_table('update');
// $_pdateMessages[] = LAN_UPDATE_XX24; // $_pdateMessages[] = LAN_UPDATE_XX24;
// catch_error($sql); // catch_error($sql);
} }
@@ -1435,8 +1435,8 @@ function update_70x_to_706($type='')
// update new fields // update new fields
require_once(e_HANDLER."plugin_class.php"); require_once(e_HANDLER."plugin_class.php");
$ep = new e107plugin; $ep = new e107plugin;
$ep->update_plugins_table(); $ep->update_plugins_table('update');
$ep->save_addon_prefs(); $ep->save_addon_prefs('update');
} }
if (!isset($pref['displayname_maxlength'])) if (!isset($pref['displayname_maxlength']))

View File

@@ -211,10 +211,18 @@ class e107plugin
return count($needed) ? $needed : FALSE; return count($needed) ? $needed : FALSE;
} }
/** /**
* Check for new plugins, create entry in plugin table and remove deleted plugins * Check for new plugins, create entry in plugin table and remove deleted plugins
*
* @param string $mode = install|upgrade|refresh|uninstall - defines the intent of the call
*
* 'upgrade' and 'refresh' are very similar in intent, and often take the same actions:
* 'upgrade' signals a possible change to the installed list of plugins
* 'refresh' validates the stored data for existing plugins, recreating any that has gone missing
*/ */
function update_plugins_table() function update_plugins_table($mode = 'upgrade')
{ {
$sql = e107::getDb(); $sql = e107::getDb();
@@ -300,7 +308,10 @@ class e107plugin
$this->XmlLanguageFiles('upgrade'); $this->XmlLanguageFiles('upgrade');
} }
if ($mode == 'refresh')
{
if ($this->XmlLanguageFileCheck('_log', 'lan_log_list', 'refresh', $pluginDBList[$plugin_path]['plugin_installflag'], $plugin_path)) $sp = TRUE;
}
// Check for missing plugin_category in plugin table. // Check for missing plugin_category in plugin table.
if ($pluginDBList[$plugin_path]['plugin_category'] == '' || $pluginDBList[$plugin_path]['plugin_category'] != $plug_info['category']) if ($pluginDBList[$plugin_path]['plugin_category'] == '' || $pluginDBList[$plugin_path]['plugin_category'] != $plug_info['category'])
@@ -527,7 +538,7 @@ class e107plugin
} }
/** /**
* Field atributes ($field_attrib array) as they have to be defined in plugin.xml: * Field attributes ($field_attrib array) as they have to be defined in plugin.xml:
* name - REQUIRED string * name - REQUIRED string
* text - (string|constant name) field label * text - (string|constant name) field label
* type - REQUIRED (constant name) see EUF_* constants in e107_user_extended class * type - REQUIRED (constant name) see EUF_* constants in e107_user_extended class
@@ -545,6 +556,7 @@ class e107plugin
* @param string $field_name normalized field name (see self::ue_field_name()) * @param string $field_name normalized field name (see self::ue_field_name())
* @param array $field_attrib * @param array $field_attrib
* @param string $field_source used for system user fields * @param string $field_source used for system user fields
*
* @return boolean success * @return boolean success
*/ */
function manage_extended_field($action, $field_name, $field_attrib, $field_source = '') function manage_extended_field($action, $field_name, $field_attrib, $field_source = '')
@@ -882,7 +894,8 @@ class e107plugin
$pref[$k] = $v; $pref[$k] = $v;
break; break;
case 'update': case 'update' :
case 'upgrade' :
case 'refresh': case 'refresh':
// Only update if $pref doesn't exist // Only update if $pref doesn't exist
if (!isset($pref[$k])) if (!isset($pref[$k]))
@@ -908,7 +921,8 @@ class e107plugin
switch ($action) switch ($action)
{ {
case 'add': case 'add':
case 'update': case 'update' :
case 'upgrade' :
case 'refresh': case 'refresh':
if (!in_array($v, $tmp)) if (!in_array($v, $tmp))
$tmp[] = $v; $tmp[] = $v;
@@ -926,7 +940,8 @@ class e107plugin
case 'add': case 'add':
$pref[$k][$path] = $v; $pref[$k][$path] = $v;
break; break;
case 'update': case 'update' :
case 'upgrade' :
case 'refresh': case 'refresh':
if (!isset($pref[$k][$path])) if (!isset($pref[$k][$path]))
$pref[$k][$path] = $v; $pref[$k][$path] = $v;
@@ -1295,7 +1310,7 @@ class e107plugin
$canContinue = FALSE; $canContinue = FALSE;
} }
// Load install longuage file and set lan_global pref. // Load install language file and set lan_global pref.
$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
// Next most important, if installing or upgrading, check that any dependencies are met // Next most important, if installing or upgrading, check that any dependencies are met
@@ -1569,10 +1584,79 @@ class e107plugin
return $canContinue; return $canContinue;
} }
/** /**
* Process XML Tag <LanguageFiles> // DEPRECATED - using _install _log and _global * Look for a language file in the two acceptable places.
* @param object $function * If found, update the appropriate pref
* @param object $tag *
* @param string $fileEnd - the suffix of the file name (e.g. '_global')
* @param string $prefName - the name of the pref to be updated
* @param string $when = install|upgrade|refresh|uninstall ('update' also supported as alias for 'upgrade')
* @param string $isInstalled - flag indicates whether plugin installed
* - if false, any preference is removed.
* - if TRUE, any preference is added
* - so set TRUE to add value to pref regardless
* @param string $plugin - name of plugin folder. If empty string, $this->plugFolder is used.
*
* @return boolean TRUE if pref changed
*/
public function XmlLanguageFileCheck($fileEnd, $prefName, $when, $isInstalled, $plugin = '')
{
$core = e107::getConfig('core');
if (trim($plugin) == '') $plugin = $this->plugFolder;
if (!$isInstalled) $when = 'uninstall';
$updated = false;
$path_a = e_PLUGIN.$plugin.'/languages/English'.$fileEnd.'.php'; // always check for English so we have a fall-back
$path_b = e_PLUGIN.$plugin.'/languages/English/English'.$fileEnd.'.php';
$pathEntry = '';
if (file_exists($path_a))
{
$pathEntry = '--LAN--'.$fileEnd.'.php';
}
elseif (file_exists($path_b))
{
$pathEntry = '--LAN--/--LAN--'.$fileEnd.'.php';
}
$currentPref = $core->getPref($prefName.'/'.$plugin);
echo 'Path: '.$plugin.' Current: '.$currentPref.' New: '.$pathEntry.'<br />';
switch ($when)
{
case 'install':
case 'upgrade':
case 'update' :
case 'refresh':
if ($currentPref != $pathEntry)
{
e107::getMessage()->addDebug('Adding '.$plugin.' to '.$prefName);
$core->setPref($prefName.'/'.$plugin, $pathEntry);
$updated = true;
}
break;
case 'uninstall':
if ($currentPref)
{
e107::getMessage()->addDebug('Removing '.$plugin.' from '.$prefName);
$core->removePref($prefName.'/'.$plugin);
$updated = true;
}
break;
}
return $updated;
}
/**
* Process XML Tag <LanguageFiles> // Tag is DEPRECATED - using _install _log and _global
* @param object $function - should $when have been used?
* @param object $tag (not used?)
* @param string $when = install|upgrade|refresh|uninstall
* @return none * @return none
*/ */
function XmlLanguageFiles($function, $tag='', $when = '') function XmlLanguageFiles($function, $tag='', $when = '')
@@ -2259,7 +2343,17 @@ class e107plugin
return $text; return $text;
} }
function save_addon_prefs() // scan the plugin table and create path-array-prefs for each addon.
/*
* scan the plugin table and create path-array-prefs for each addon.
*
* @param string $mode = install|upgrade|refresh|uninstall - defines the intent of the call
*
* 'upgrade' and 'refresh' are very similar in intent, and often take the same actions:
* 'upgrade' signals a possible change to the installed list of plugins - usually an upgrade
* 'refresh' validates the stored data for existing plugins, recreating any that has gone missing
*/
function save_addon_prefs($mode = 'upgrade')
{ {
$sql = e107::getDb(); $sql = e107::getDb();
$core = e107::getConfig('core'); $core = e107::getConfig('core');

View File

@@ -1326,7 +1326,7 @@ class e_install
//Create default plugin-table entries. //Create default plugin-table entries.
// e107::getConfig('core')->clearPrefCache(); // e107::getConfig('core')->clearPrefCache();
e107::getPlugin()->update_plugins_table(); e107::getPlugin()->update_plugins_table('update');
$this->logLine('Plugins table updated'); $this->logLine('Plugins table updated');
// Install Theme-required plugins // Install Theme-required plugins
@@ -1345,7 +1345,7 @@ class e_install
} }
} }
e107::getSingleton('e107plugin')->save_addon_prefs(); // save plugin addon pref-lists. eg. e_latest_list. e107::getSingleton('e107plugin')->save_addon_prefs('update'); // save plugin addon pref-lists. eg. e_latest_list.
$this->logLine('Addon prefs saved'); $this->logLine('Addon prefs saved');
$tm = e107::getSingleton('themeHandler'); $tm = e107::getSingleton('themeHandler');