mirror of
https://github.com/e107inc/e107.git
synced 2025-08-02 12:48:26 +02:00
<pluginPrefs> support added to plugin.xml spec. XML handler array exceptions option added.
This commit is contained in:
@@ -11,8 +11,8 @@
|
|||||||
| GNU General Public License (http://gnu.org).
|
| GNU General Public License (http://gnu.org).
|
||||||
|
|
|
|
||||||
| $Source: /cvs_backup/e107_0.8/e107_handlers/plugin_class.php,v $
|
| $Source: /cvs_backup/e107_0.8/e107_handlers/plugin_class.php,v $
|
||||||
| $Revision: 1.90 $
|
| $Revision: 1.91 $
|
||||||
| $Date: 2009-09-19 17:43:19 $
|
| $Date: 2009-09-21 21:53:37 $
|
||||||
| $Author: e107coders $
|
| $Author: e107coders $
|
||||||
+----------------------------------------------------------------------------+
|
+----------------------------------------------------------------------------+
|
||||||
*/
|
*/
|
||||||
@@ -47,44 +47,44 @@ class e107plugin
|
|||||||
// List of all plugin variables which need to be checked - install required if one or more set and non-empty
|
// List of all plugin variables which need to be checked - install required if one or more set and non-empty
|
||||||
// Deprecated in 0.8 (used in plugin.php only). Probably delete in 0.9
|
// Deprecated in 0.8 (used in plugin.php only). Probably delete in 0.9
|
||||||
var $all_eplug_install_variables = array(
|
var $all_eplug_install_variables = array(
|
||||||
'eplug_link_url',
|
'eplug_link_url',
|
||||||
'eplug_link',
|
'eplug_link',
|
||||||
'eplug_prefs',
|
'eplug_prefs',
|
||||||
'eplug_array_pref',
|
'eplug_array_pref',
|
||||||
'eplug_table_names',
|
'eplug_table_names',
|
||||||
// 'eplug_sc', // Not used in 0.8 (or later 0.7)
|
// 'eplug_sc', // Not used in 0.8 (or later 0.7)
|
||||||
'eplug_userclass',
|
'eplug_userclass',
|
||||||
'eplug_module',
|
'eplug_module',
|
||||||
// 'eplug_bb', // Not used in 0.8 (or later 0.7)
|
// 'eplug_bb', // Not used in 0.8 (or later 0.7)
|
||||||
'eplug_latest',
|
'eplug_latest',
|
||||||
'eplug_status',
|
'eplug_status',
|
||||||
'eplug_comment_ids',
|
'eplug_comment_ids',
|
||||||
'eplug_conffile',
|
'eplug_conffile',
|
||||||
'eplug_menu_name'
|
'eplug_menu_name'
|
||||||
);
|
);
|
||||||
|
|
||||||
// List of all plugin variables involved in an update (not used ATM, but worth 'documenting')
|
// List of all plugin variables involved in an update (not used ATM, but worth 'documenting')
|
||||||
// Deprecated in 0.8 (used in plugin.php only). Probably delete in 0.9
|
// Deprecated in 0.8 (used in plugin.php only). Probably delete in 0.9
|
||||||
var $all_eplug_update_variables = array (
|
var $all_eplug_update_variables = array (
|
||||||
'upgrade_alter_tables',
|
'upgrade_alter_tables',
|
||||||
// 'upgrade_add_eplug_sc', // Not used in 0.8 (or later 0.7)
|
// 'upgrade_add_eplug_sc', // Not used in 0.8 (or later 0.7)
|
||||||
// 'upgrade_remove_eplug_sc', // Not used in 0.8 (or later 0.7)
|
// 'upgrade_remove_eplug_sc', // Not used in 0.8 (or later 0.7)
|
||||||
// 'upgrade_add_eplug_bb', // Not used in 0.8 (or later 0.7)
|
// 'upgrade_add_eplug_bb', // Not used in 0.8 (or later 0.7)
|
||||||
// 'upgrade_remove_eplug_bb', // Not used in 0.8 (or later 0.7)
|
// 'upgrade_remove_eplug_bb', // Not used in 0.8 (or later 0.7)
|
||||||
'upgrade_add_prefs',
|
'upgrade_add_prefs',
|
||||||
'upgrade_remove_prefs',
|
'upgrade_remove_prefs',
|
||||||
'upgrade_add_array_pref',
|
'upgrade_add_array_pref',
|
||||||
'upgrade_remove_array_pref'
|
'upgrade_remove_array_pref'
|
||||||
);
|
);
|
||||||
|
|
||||||
// List of all 'editable' DB fields ('plugin_id' is an arbitrary reference which is never edited)
|
// List of all 'editable' DB fields ('plugin_id' is an arbitrary reference which is never edited)
|
||||||
var $all_editable_db_fields = array (
|
var $all_editable_db_fields = array (
|
||||||
'plugin_name', // Name of the plugin - language dependent
|
'plugin_name', // Name of the plugin - language dependent
|
||||||
'plugin_version', // Version - arbitrary text field
|
'plugin_version', // Version - arbitrary text field
|
||||||
'plugin_path', // Name of the directory off e_PLUGIN - unique
|
'plugin_path', // Name of the directory off e_PLUGIN - unique
|
||||||
'plugin_installflag', // '0' = not installed, '1' = installed
|
'plugin_installflag', // '0' = not installed, '1' = installed
|
||||||
'plugin_addons', // List of any extras associated with plugin - bbcodes, e_XXX files...
|
'plugin_addons', // List of any extras associated with plugin - bbcodes, e_XXX files...
|
||||||
'plugin_category' // Plugin Category: settings, users, content, management, tools, misc, about
|
'plugin_category' // Plugin Category: settings, users, content, management, tools, misc, about
|
||||||
);
|
);
|
||||||
|
|
||||||
var $accepted_categories = array('settings', 'users', 'content', 'tools', 'manage', 'misc', 'menu', 'about');
|
var $accepted_categories = array('settings', 'users', 'content', 'tools', 'manage', 'misc', 'menu', 'about');
|
||||||
@@ -130,42 +130,24 @@ class e107plugin
|
|||||||
|
|
||||||
global $mySQLprefix, $menu_pref, $pref;
|
global $mySQLprefix, $menu_pref, $pref;
|
||||||
|
|
||||||
$pluginList = $fl->get_files(e_PLUGIN, "^plugin\.(php|xml)$", "standard", 1);
|
|
||||||
$sp = FALSE;
|
$sp = FALSE;
|
||||||
|
|
||||||
// Read all the plugin DB info into an array to save lots of accesses
|
|
||||||
$pluginDBList = array();
|
$pluginDBList = array();
|
||||||
if ($sql->db_Select('plugin',"*"))
|
if ($sql->db_Select('plugin',"*")) // Read all the plugin DB info into an array to save lots of accesses
|
||||||
{
|
{
|
||||||
while ($row = $sql->db_Fetch(MYSQL_ASSOC))
|
while ($row = $sql->db_Fetch(MYSQL_ASSOC))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
$pluginDBList[$row['plugin_path']] = $row;
|
$pluginDBList[$row['plugin_path']] = $row;
|
||||||
$pluginDBList[$row['plugin_path']]['status'] = 'read';
|
$pluginDBList[$row['plugin_path']]['status'] = 'read';
|
||||||
// echo "Found plugin: ".$row['plugin_path']." in DB<br />";
|
// echo "Found plugin: ".$row['plugin_path']." in DB<br />";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$i = 1;
|
$plugList = $fl->get_files(e_PLUGIN, "^plugin\.(php|xml)$", "standard", 1);
|
||||||
while ( $i < count($pluginList))
|
foreach($plugList as $num=>$val) // Remove Duplicates caused by having both plugin.php AND plugin.xml.
|
||||||
{
|
{
|
||||||
if ($pluginList[$i-1]['path'] == $pluginList[$i]['path']) // Must have plugin.php and plugin.xml
|
$key = basename($val['path']);
|
||||||
{
|
$pluginList[$key] =$val;
|
||||||
if (($pluginList[$i-1]['fname'] == 'plugin.php') && ($pluginList[$i]['fname'] == 'plugin.xml'))
|
|
||||||
{
|
|
||||||
// echo "deleting: {$pluginList[$i-1]['path']}<br />";
|
|
||||||
unset($pluginList[$i-1]);
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
if (($pluginList[$i]['fname'] == 'plugin.php') && ($pluginList[$i-1]['fname'] == 'plugin.xml'))
|
|
||||||
{
|
|
||||||
// echo "deleting: {$pluginList[$i]['path']}<br />";
|
|
||||||
unset($pluginList[$i]);
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$p_installed = e107::getPref('plug_installed',array()); // load preference;
|
$p_installed = e107::getPref('plug_installed',array()); // load preference;
|
||||||
@@ -188,15 +170,11 @@ class e107plugin
|
|||||||
|
|
||||||
if(!$this->parse_plugin($p['path']))
|
if(!$this->parse_plugin($p['path']))
|
||||||
{
|
{
|
||||||
//parsing of plugin.php/plugin.xml failed.
|
//parsing of plugin.php/plugin.xml failed.
|
||||||
|
$emessage->add("Parsing failed - file format error: {$p['path']}", E_MESSAGE_ERROR);
|
||||||
|
continue; // Carry on and do any others that are OK
|
||||||
$emessage->add("Parsing failed - file format error: {$p['path']}", E_MESSAGE_ERROR);
|
|
||||||
continue; // Carry on and do any others that are OK
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$plug_info = $this->plug_vars;
|
$plug_info = $this->plug_vars;
|
||||||
// $plugin_path = substr(str_replace(e_PLUGIN,"",$p['path']),0,-1);
|
// $plugin_path = substr(str_replace(e_PLUGIN,"",$p['path']),0,-1);
|
||||||
|
|
||||||
@@ -204,8 +182,6 @@ class e107plugin
|
|||||||
$eplug_addons = $this->getAddons($plugin_path); // Returns comma-separated list
|
$eplug_addons = $this->getAddons($plugin_path); // Returns comma-separated list
|
||||||
// $eplug_addons = $this->getAddons($plugin_path,'check'); // Checks opening/closing tags on addon files
|
// $eplug_addons = $this->getAddons($plugin_path,'check'); // Checks opening/closing tags on addon files
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Ensure the plugin path lives in the same folder as is configured in the plugin.php/plugin.xml
|
//Ensure the plugin path lives in the same folder as is configured in the plugin.php/plugin.xml
|
||||||
if ($plugin_path == $plug_info['folder'])
|
if ($plugin_path == $plug_info['folder'])
|
||||||
{
|
{
|
||||||
@@ -262,7 +238,7 @@ class e107plugin
|
|||||||
// echo "Trying to insert: ".$eplug_folder."<br />";
|
// echo "Trying to insert: ".$eplug_folder."<br />";
|
||||||
$_installed = ($plug_info['@attributes']['installRequired'] == 'true' || $plug_info['@attributes']['installRequired'] == 1 ? 0 : 1 );
|
$_installed = ($plug_info['@attributes']['installRequired'] == 'true' || $plug_info['@attributes']['installRequired'] == 1 ? 0 : 1 );
|
||||||
e107::getDb()->db_Insert("plugin", "0, '".$tp -> toDB($plug_info['@attributes']['name'], true)."', '".$tp -> toDB($plug_info['@attributes']['version'], true)."', '".$tp -> toDB($plugin_path, true)."', {$_installed}, '{$eplug_addons}', '".$this->manage_category($plug_info['category'])."', '".varset($plug_info['@attributes']['releaseUrl'])."' ");
|
e107::getDb()->db_Insert("plugin", "0, '".$tp -> toDB($plug_info['@attributes']['name'], true)."', '".$tp -> toDB($plug_info['@attributes']['version'], true)."', '".$tp -> toDB($plugin_path, true)."', {$_installed}, '{$eplug_addons}', '".$this->manage_category($plug_info['category'])."', '".varset($plug_info['@attributes']['releaseUrl'])."' ");
|
||||||
|
echo "<br />Installing: ".$plug_info['@attributes']['name'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -414,14 +390,14 @@ class e107plugin
|
|||||||
return $getinfo_results[$id];
|
return $getinfo_results[$id];
|
||||||
}
|
}
|
||||||
|
|
||||||
function manage_extended_field($action, $field_name, $field_type, $field_default, $field_source)
|
function manage_extended_field($action, $field_name, $field_type, $field_default='', $field_source='')
|
||||||
{
|
{
|
||||||
if(!isset($this->module['ue']))
|
if(!isset($this->module['ue']))
|
||||||
{
|
{
|
||||||
include_once(e_HANDLER.'user_extended_class.php');
|
include_once(e_HANDLER.'user_extended_class.php');
|
||||||
$this->module['ue'] = new e107_user_extended;
|
$this->module['ue'] = new e107_user_extended;
|
||||||
}
|
}
|
||||||
$type = constant($field_type);
|
$type = defined($field_type) ? constant($field_type) : $field_type;
|
||||||
|
|
||||||
if($action == 'add')
|
if($action == 'add')
|
||||||
{
|
{
|
||||||
@@ -539,7 +515,7 @@ class e107plugin
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// DEPRECATED - See managePrefs();
|
||||||
// Update prefs array according to $action
|
// Update prefs array according to $action
|
||||||
// $prefType specifies the storage type - may be 'pref', 'listPref' or 'arrayPref'
|
// $prefType specifies the storage type - may be 'pref', 'listPref' or 'arrayPref'
|
||||||
function manage_prefs($action, $var, $prefType = 'pref', $path = '', $unEscape = FALSE)
|
function manage_prefs($action, $var, $prefType = 'pref', $path = '', $unEscape = FALSE)
|
||||||
@@ -691,7 +667,7 @@ class e107plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// DEPRECATED for 0.8 xml files - See managePrefs();
|
||||||
// Handle prefs from arrays (mostly 0.7 stuff, possibly apart from the special cases)
|
// Handle prefs from arrays (mostly 0.7 stuff, possibly apart from the special cases)
|
||||||
function manage_plugin_prefs($action, $prefname, $plugin_folder, $varArray = '')
|
function manage_plugin_prefs($action, $prefname, $plugin_folder, $varArray = '')
|
||||||
{ // These prefs are 'cumulative' - several plugins may contribute an array element
|
{ // These prefs are 'cumulative' - several plugins may contribute an array element
|
||||||
@@ -1101,7 +1077,10 @@ class e107plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
// REPLACED BY managePrefs() function.. see below;
|
||||||
//main pref items
|
//main pref items
|
||||||
if(isset($plug_vars['mainPrefs']))
|
if(isset($plug_vars['mainPrefs']))
|
||||||
{
|
{
|
||||||
@@ -1110,6 +1089,7 @@ class e107plugin
|
|||||||
if(isset($plug_vars['mainPrefs'][$prefType]))
|
if(isset($plug_vars['mainPrefs'][$prefType]))
|
||||||
{
|
{
|
||||||
$list = $this->parse_prefs($plug_vars['mainPrefs'][$prefType]);
|
$list = $this->parse_prefs($plug_vars['mainPrefs'][$prefType]);
|
||||||
|
|
||||||
switch($function)
|
switch($function)
|
||||||
{
|
{
|
||||||
case 'install':
|
case 'install':
|
||||||
@@ -1147,19 +1127,25 @@ class e107plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
//Plugin pref items
|
//Core pref items <mainPrefs>
|
||||||
if(isset($plug_vars['pluginPrefs']))
|
if(varset($plug_vars['mainPrefs']))
|
||||||
{
|
{
|
||||||
//TODO plugin pref handling.
|
$this->managePrefs('core',$function,$plug_vars['mainPrefs']);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Plugin pref items <pluginPrefs>
|
||||||
|
if(varset($plug_vars['pluginPrefs']))
|
||||||
|
{
|
||||||
|
$this->managePrefs($plug['plugin_path'],$function,$plug_vars['pluginPrefs']);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Userclasses
|
//Userclasses
|
||||||
//$this->manage_userclass('add', $eplug_userclass, $eplug_userclass_description);
|
//$this->manage_userclass('add', $eplug_userclass, $eplug_userclass_description);
|
||||||
if(isset($plug_vars['userclass']))
|
if(isset($plug_vars['userclass']))
|
||||||
{
|
{
|
||||||
foreach($uclass_list as $uclass)
|
foreach($plug_vars['userclass'] as $uclass)
|
||||||
{
|
{
|
||||||
$attrib = $uclass['@attributes'];
|
$attrib = $uclass['@attributes'];
|
||||||
switch($function)
|
switch($function)
|
||||||
@@ -1201,7 +1187,7 @@ class e107plugin
|
|||||||
//Extended user fields
|
//Extended user fields
|
||||||
if(isset($plug_vars['extendedField']))
|
if(isset($plug_vars['extendedField']))
|
||||||
{
|
{
|
||||||
foreach($efield_list as $efield)
|
foreach($plug_vars['extendedField'] as $efield)
|
||||||
{
|
{
|
||||||
$attrib = $efield['@attributes'];
|
$attrib = $efield['@attributes'];
|
||||||
$attrib['default'] = varset($attrib['default']);
|
$attrib['default'] = varset($attrib['default']);
|
||||||
@@ -1333,6 +1319,114 @@ class e107plugin
|
|||||||
return $txt;
|
return $txt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* New Pref Management Function for 0.8. Handles Core and Plugin prefs.
|
||||||
|
* @param object $mode 'core' or the folder name of the plugin.
|
||||||
|
* @param object $function install|uninstall|upgrade|refresh
|
||||||
|
* @param object $prefArray XML array of prefs. eg. mainPref() or pluginPref();
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
function managePrefs($mode='core',$function,$prefArray)
|
||||||
|
{
|
||||||
|
|
||||||
|
//XXX Could also be used for theme prefs.. perhaps this function should be moved elsewhere?
|
||||||
|
$emessage = &eMessage::getInstance();
|
||||||
|
|
||||||
|
if(!varset($prefArray) || !varset($prefArray))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$config = ($mode == 'core') ? e107::getConfig('core') : e107::getPlugConfig($mode);
|
||||||
|
|
||||||
|
foreach($prefArray['pref'] as $tag)
|
||||||
|
{
|
||||||
|
$key = varset($tag['@attributes']['name']);
|
||||||
|
$value = vartrue($tag['@value']);
|
||||||
|
|
||||||
|
if(varset($tag['@attributes']['value']))
|
||||||
|
{
|
||||||
|
$emessage->add("Deprecated plugin.xml spec. found. Use the following format: ".htmlentities("<pref name='name'>value</pref>"), E_MESSAGE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch($function)
|
||||||
|
{
|
||||||
|
case 'install':
|
||||||
|
$config->add($key,$value);
|
||||||
|
$emessage->add("Adding Pref: ".$key, E_MESSAGE_SUCCESS);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'upgrade' :
|
||||||
|
case 'refresh' :
|
||||||
|
$config->update($key,$value);
|
||||||
|
$emessage->add("Updating Pref: ".$key, E_MESSAGE_SUCCESS);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'uninstall':
|
||||||
|
$config->remove($key,$value);
|
||||||
|
$emessage->add("Removing Pref: ".$key, E_MESSAGE_SUCCESS);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$config->save();
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// TODO - 'active' 'inactive' etc. needs to be reviewed in light of the new pref-handler upgrades.
|
||||||
|
|
||||||
|
/* foreach (array('pref','listPref','arrayPref') as $prefType)
|
||||||
|
{
|
||||||
|
if(isset($plug_vars['pluginPrefs'][$prefType]))
|
||||||
|
{
|
||||||
|
$list = $this->parse_prefs($plug_vars['pluginPrefs'][$prefType]);
|
||||||
|
print_a($list);
|
||||||
|
switch($function)
|
||||||
|
{
|
||||||
|
case 'install':
|
||||||
|
if(varset($list['active']) && is_array($list['active']))
|
||||||
|
{
|
||||||
|
$txt .= $this->displayArray($list['active'], "Adding '{$prefType}' prefs:");
|
||||||
|
// $this->manage_prefs('add', $list['active'], $prefType, $plug['plugin_path'], TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'upgrade' :
|
||||||
|
case 'refresh' : // Add any defined prefs which don't already exist
|
||||||
|
if(varset($list['active']) && is_array($list['active']))
|
||||||
|
{
|
||||||
|
$txt .= $this->displayArray($list['active'], "Updating '{$prefType}' prefs:");
|
||||||
|
// $this->manage_prefs('update', $list['active'], $prefType, $plug['plugin_path'], TRUE); // This only adds prefs which aren't already defined
|
||||||
|
}
|
||||||
|
|
||||||
|
//If upgrading, removing any inactive pref
|
||||||
|
if(varset($list['inactive']) && is_array($list['inactive']))
|
||||||
|
{
|
||||||
|
$txt .= $this->displayArray($list['inactive'], "Removing '{$prefType}' prefs:");
|
||||||
|
// $this->manage_prefs('remove', $list['inactive'], $prefType, $plug['plugin_path'], TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
//If uninstalling, remove all prefs (active or inactive)
|
||||||
|
case 'uninstall':
|
||||||
|
if(varset($list['all']) && is_array($list['all']))
|
||||||
|
{
|
||||||
|
$txt .= $this->displayArray($list['all'], "Removing '{$prefType}' prefs:");
|
||||||
|
// $this->manage_prefs('remove', $list['all'], $prefType, $plug['plugin_path'], TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function execute_function($path = '', $what='', $when='')
|
function execute_function($path = '', $what='', $when='')
|
||||||
{
|
{
|
||||||
if($what == '' || $when == '') { return true; }
|
if($what == '' || $when == '') { return true; }
|
||||||
@@ -1363,7 +1457,8 @@ class e107plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function parse_prefs($pref_array)
|
// DEPRECATED - See managePrefs();
|
||||||
|
function parse_prefs($pref_array,$mode='simple')
|
||||||
{
|
{
|
||||||
$ret = array();
|
$ret = array();
|
||||||
if(!isset($pref_array[0]))
|
if(!isset($pref_array[0]))
|
||||||
@@ -1628,21 +1723,20 @@ class e107plugin
|
|||||||
{
|
{
|
||||||
$fl = e107::getFile();
|
$fl = e107::getFile();
|
||||||
|
|
||||||
|
|
||||||
$p_addons = array();
|
$p_addons = array();
|
||||||
$addonlist = $fl->get_files(e_PLUGIN.$plugin_path, "^e_.*\.php$", "standard", 1);
|
|
||||||
// print_a($addonlist);
|
foreach($this->plugin_addons as $addon) //Find exact matches only.
|
||||||
foreach($addonlist as $f)
|
{
|
||||||
{
|
// if(preg_match("#^(e_.*)\.php$#", $f['fname'], $matches))
|
||||||
if(preg_match("#^(e_.*)\.php$#", $f['fname'], $matches))
|
|
||||||
{
|
$addonPHP = $addon.".php";
|
||||||
$addon = $matches[1];
|
|
||||||
if(is_readable(e_PLUGIN.$plugin_path."/".$f['fname']))
|
if(is_readable(e_PLUGIN.$plugin_path."/".$addonPHP))
|
||||||
{
|
{
|
||||||
if ($debug === 'check')
|
if ($debug === 'check')
|
||||||
{
|
{
|
||||||
$passfail = '';
|
$passfail = '';
|
||||||
$file_text = file_get_contents(e_PLUGIN.$plugin_path."/".$f['fname']);
|
$file_text = file_get_contents(e_PLUGIN.$plugin_path."/".$addonPHP);
|
||||||
if ((substr($file_text,0,5) != '<'.'?php') || (substr($file_text,-2,2) !='?>'))
|
if ((substr($file_text,0,5) != '<'.'?php') || (substr($file_text,-2,2) !='?>'))
|
||||||
{
|
{
|
||||||
$passfail = '<b>fail</b>';
|
$passfail = '<b>fail</b>';
|
||||||
@@ -1655,7 +1749,6 @@ class e107plugin
|
|||||||
}
|
}
|
||||||
$p_addons[] = $addon;
|
$p_addons[] = $addon;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grab List of Shortcodes & BBcodes
|
// Grab List of Shortcodes & BBcodes
|
||||||
@@ -1752,7 +1845,7 @@ class e107plugin
|
|||||||
$ret['@attributes']['version'] = varset($eplug_version);
|
$ret['@attributes']['version'] = varset($eplug_version);
|
||||||
$ret['@attributes']['name'] = varset($eplug_name);
|
$ret['@attributes']['name'] = varset($eplug_name);
|
||||||
$ret['@attributes']['compatibility'] = varset($eplug_compatible);
|
$ret['@attributes']['compatibility'] = varset($eplug_compatible);
|
||||||
$ret['folder'] = varset($eplug_folder);
|
$ret['folder'] = (varset($eplug_folder)) ? $eplug_folder : $plugName;
|
||||||
$ret['category'] = varset($eplug_category) ? $this->manage_category($eplug_category) : "misc";
|
$ret['category'] = varset($eplug_category) ? $this->manage_category($eplug_category) : "misc";
|
||||||
$ret['description'] = varset($eplug_description);
|
$ret['description'] = varset($eplug_description);
|
||||||
$ret['author']['@attributes']['name'] = varset($eplug_author);
|
$ret['author']['@attributes']['name'] = varset($eplug_author);
|
||||||
@@ -1784,8 +1877,10 @@ class e107plugin
|
|||||||
require_once(e_HANDLER.'xml_class.php');
|
require_once(e_HANDLER.'xml_class.php');
|
||||||
$xml = new xmlClass;
|
$xml = new xmlClass;
|
||||||
$xml->setOptArrayTags('extendedField,userclass,menuLink,commentID'); // always arrays for these tags.
|
$xml->setOptArrayTags('extendedField,userclass,menuLink,commentID'); // always arrays for these tags.
|
||||||
$this->plug_vars = $xml->loadXMLfile(e_PLUGIN.$plugName.'/plugin.xml', true, true);
|
$xml->setOptStringTags('icon,iconSmall,configFile,caption,installDone,install,uninstall,upgrade');
|
||||||
|
|
||||||
|
// $plug_vars2 = $xml->loadXMLfile(e_PLUGIN.$plugName.'/plugin.xml', true, true);
|
||||||
|
$this->plug_vars = $xml->loadXMLfile(e_PLUGIN.$plugName.'/plugin.xml', 'advanced');
|
||||||
if ($this->plug_vars === FALSE)
|
if ($this->plug_vars === FALSE)
|
||||||
{
|
{
|
||||||
require_once(e_HANDLER."message_handler.php");
|
require_once(e_HANDLER."message_handler.php");
|
||||||
@@ -1795,7 +1890,17 @@ class e107plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->plug_vars['category'] = (isset($this->plug_vars['category'])) ? $this->manage_category($this->plug_vars['category']) : "misc";
|
$this->plug_vars['category'] = (isset($this->plug_vars['category'])) ? $this->manage_category($this->plug_vars['category']) : "misc";
|
||||||
|
$this->plug_vars['folder'] = $plugName; // remove the need for <folder> tag in plugin.xml.
|
||||||
|
/*
|
||||||
|
if($plugName == "tinymce")
|
||||||
|
{
|
||||||
|
echo "<table><tr><td>";
|
||||||
|
print_a($plug_vars2);
|
||||||
|
echo "</td><td>";
|
||||||
|
print_a($this->plug_vars);
|
||||||
|
echo "</table>";
|
||||||
|
}
|
||||||
|
*/
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -9,8 +9,8 @@
|
|||||||
* e107 Admin Theme Handler
|
* e107 Admin Theme Handler
|
||||||
*
|
*
|
||||||
* $Source: /cvs_backup/e107_0.8/e107_handlers/theme_handler.php,v $
|
* $Source: /cvs_backup/e107_0.8/e107_handlers/theme_handler.php,v $
|
||||||
* $Revision: 1.53 $
|
* $Revision: 1.54 $
|
||||||
* $Date: 2009-09-17 01:47:20 $
|
* $Date: 2009-09-21 21:53:37 $
|
||||||
* $Author: e107coders $
|
* $Author: e107coders $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -1274,6 +1274,7 @@ class themeHandler{
|
|||||||
require_once(e_HANDLER.'xml_class.php');
|
require_once(e_HANDLER.'xml_class.php');
|
||||||
$xml = new xmlClass;
|
$xml = new xmlClass;
|
||||||
$xml->setOptArrayTags('layout'); // layout should always be an array.
|
$xml->setOptArrayTags('layout'); // layout should always be an array.
|
||||||
|
$xml->setOptStringTags('menuPresets,customPages');
|
||||||
$vars = $xml->loadXMLfile(e_THEME.$path.'/theme.xml', true, true);
|
$vars = $xml->loadXMLfile(e_THEME.$path.'/theme.xml', true, true);
|
||||||
|
|
||||||
$vars['name'] = varset($vars['@attributes']['name']);
|
$vars['name'] = varset($vars['@attributes']['name']);
|
||||||
|
@@ -9,8 +9,8 @@
|
|||||||
* Simple XML Parser
|
* Simple XML Parser
|
||||||
*
|
*
|
||||||
* $Source: /cvs_backup/e107_0.8/e107_handlers/xml_class.php,v $
|
* $Source: /cvs_backup/e107_0.8/e107_handlers/xml_class.php,v $
|
||||||
* $Revision: 1.27 $
|
* $Revision: 1.28 $
|
||||||
* $Date: 2009-09-17 04:30:25 $
|
* $Date: 2009-09-21 21:53:38 $
|
||||||
* $Author: e107coders $
|
* $Author: e107coders $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -86,6 +86,8 @@ class xmlClass
|
|||||||
|
|
||||||
private $arrayTags = false;
|
private $arrayTags = false;
|
||||||
|
|
||||||
|
private $stringTags = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -205,6 +207,12 @@ class xmlClass
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setOptStringTags($string)
|
||||||
|
{
|
||||||
|
$this->stringTags = (array) explode(",",$string);
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set forceArray option
|
* Set forceArray option
|
||||||
*
|
*
|
||||||
@@ -424,6 +432,7 @@ class xmlClass
|
|||||||
}
|
}
|
||||||
|
|
||||||
$ret = $this->parseArrayTags($ret);
|
$ret = $this->parseArrayTags($ret);
|
||||||
|
$ret = $this->parseStringTags($ret);
|
||||||
|
|
||||||
return ($this->_optAddRoot ? array($xml->getName() => $ret) : $ret);
|
return ($this->_optAddRoot ? array($xml->getName() => $ret) : $ret);
|
||||||
}
|
}
|
||||||
@@ -463,16 +472,19 @@ class xmlClass
|
|||||||
for ($i = 0; $i < $count; $i++)
|
for ($i = 0; $i < $count; $i++)
|
||||||
{
|
{
|
||||||
$ret[$tag][$i] = $this->xml2array($xml->{$tag}[$i], $tag);
|
$ret[$tag][$i] = $this->xml2array($xml->{$tag}[$i], $tag);
|
||||||
|
$ret[$tag][$i] = $this->parseStringTags($ret[$tag][$i]);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else //single element
|
else //single element
|
||||||
{
|
{
|
||||||
$ret[$tag] = $this->xml2array($xml->{$tag}, $tag);
|
$ret[$tag] = $this->xml2array($xml->{$tag}, $tag);
|
||||||
|
$ret[$tag] = $this->parseStringTags($ret[$tag]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$ret = $this->parseStringTags($ret);
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -525,16 +537,40 @@ class xmlClass
|
|||||||
if (count($xml) == 1 && isset($xml[0]))
|
if (count($xml) == 1 && isset($xml[0]))
|
||||||
{
|
{
|
||||||
$xml = $xml[0];
|
$xml = $xml[0];
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$xml = $this->parseArrayTags($xml);
|
$xml = $this->parseArrayTags($xml);
|
||||||
|
// $xml = $this->parseStringTags($xml);
|
||||||
|
|
||||||
return $xml;
|
return $xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert Array(0) to String based on specified Tags.
|
||||||
|
* @param object $vars
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
function parseStringTags($vars)
|
||||||
|
{
|
||||||
|
if(!$this->stringTags)
|
||||||
|
{
|
||||||
|
return $vars;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($this->stringTags as $vl)
|
||||||
|
{
|
||||||
|
if(is_array($vars[$vl]) && varset($vars[$vl][0]))
|
||||||
|
{
|
||||||
|
$vars[$vl] = $vars[$vl][0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $vars;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return as an array, even when a single xml tag value is found
|
* Return as an array, even when a single xml tag value is found
|
||||||
* Use setArrayTags() to set which tags are affected.
|
* Use setArrayTags() to set which tags are affected.
|
||||||
@@ -549,6 +585,7 @@ class xmlClass
|
|||||||
return $vars;
|
return $vars;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
foreach($this->arrayTags as $vl)
|
foreach($this->arrayTags as $vl)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -561,6 +598,8 @@ class xmlClass
|
|||||||
|
|
||||||
return $vars;
|
return $vars;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user