mirror of
https://github.com/e107inc/e107.git
synced 2025-07-26 01:11:28 +02:00
More work on plugin.xml support
This commit is contained in:
@@ -11,8 +11,8 @@
|
||||
| GNU General Public License (http://gnu.org).
|
||||
|
|
||||
| $Source: /cvs_backup/e107_0.8/e107_admin/plugin.php,v $
|
||||
| $Revision: 1.9 $
|
||||
| $Date: 2008-01-26 05:19:58 $
|
||||
| $Revision: 1.10 $
|
||||
| $Date: 2008-01-27 01:34:59 $
|
||||
| $Author: mcfly_e107 $
|
||||
+----------------------------------------------------------------------------+
|
||||
*/
|
||||
@@ -501,8 +501,11 @@ function render_plugs($pluginList)
|
||||
foreach($pluginList as $plug)
|
||||
{
|
||||
$_path = e_PLUGIN.$plug['plugin_path'].'/';
|
||||
$plug_vars = $plugin->parse_plugin($_path);
|
||||
|
||||
$plug_vars = false;
|
||||
if($plugin->parse_plugin($_path))
|
||||
{
|
||||
$plug_vars = $plugin->plug_vars;
|
||||
}
|
||||
if($plug_vars)
|
||||
{
|
||||
|
||||
@@ -616,10 +619,14 @@ function show_uninstall_confirm()
|
||||
global $plugin, $tp, $id, $ns;
|
||||
$id = intval($id);
|
||||
$plug = $plugin->getinfo($id);
|
||||
$_path = e_PLUGIN.$plug['plugin_path'];
|
||||
|
||||
if ($plug['plugin_installflag'] == true )
|
||||
{
|
||||
$plug_vars = $plugin->parse_plugin($_path);
|
||||
if($plugin->parse_plugin($_path))
|
||||
{
|
||||
$plug_vars = $plugin->plug_vars;
|
||||
}
|
||||
}
|
||||
|
||||
if(is_writable(e_PLUGIN.$plug['plugin_path']))
|
||||
|
@@ -11,8 +11,8 @@
|
||||
| GNU General Public License (http://gnu.org).
|
||||
|
|
||||
| $Source: /cvs_backup/e107_0.8/e107_handlers/plugin_class.php,v $
|
||||
| $Revision: 1.17 $
|
||||
| $Date: 2008-01-26 05:19:59 $
|
||||
| $Revision: 1.18 $
|
||||
| $Date: 2008-01-27 01:34:59 $
|
||||
| $Author: mcfly_e107 $
|
||||
+----------------------------------------------------------------------------+
|
||||
*/
|
||||
@@ -66,6 +66,8 @@ class e107plugin
|
||||
'plugin_addons' // List of any extras associated with plugin - bbcodes, e_XXX files...
|
||||
);
|
||||
|
||||
var $plug_vars;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
@@ -280,9 +282,22 @@ class e107plugin
|
||||
}
|
||||
}
|
||||
|
||||
function manage_link($action, $link_url, $link_name,$link_class=0)
|
||||
function manage_link($action, $link_url, $link_name, $link_class=0)
|
||||
{
|
||||
global $sql, $tp;
|
||||
|
||||
if(!ctype_digit($link_class))
|
||||
{
|
||||
$link_class = strtolower($link_class);
|
||||
$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;
|
||||
$link_class = ($plug_perm[$link_class]) ? $plug_perm[$link_class] : e_UC_PUBLIC;
|
||||
}
|
||||
|
||||
$link_url = $tp -> toDB($link_url, true);
|
||||
$link_name = $tp -> toDB($link_name, true);
|
||||
$path = str_replace("../", "", $link_url); // This should clean up 'non-standard' links
|
||||
@@ -563,21 +578,156 @@ class e107plugin
|
||||
$sql -> db_Update("core", "e107_value='".$s_prefs."' WHERE e107_name='notify_prefs'");
|
||||
}
|
||||
|
||||
function install_plugin_xml($path)
|
||||
function manage_plugin_xml($path, $function='')
|
||||
{
|
||||
$plug_vars = $this->parse_plugin_xml($path);
|
||||
|
||||
//Still working on this, let's install via plugin.php still
|
||||
//Will just install using plugin.php file for now.
|
||||
return $this->install_plugin_php($path);
|
||||
|
||||
//New code to install using plugin.xml below.
|
||||
if(!file_exists($path.'plugin.xml') || $function == '')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$error = array();
|
||||
|
||||
if($this->parse_plugin_xml($path))
|
||||
{
|
||||
$plug_vars = $this->plug_vars;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//tables
|
||||
if(($function == 'install' || $function == 'uninstall') || isset($plug_vars['sqlFile']))
|
||||
{
|
||||
if($sql_data = file_get_contents($path.$plug_vars['sqlFile']))
|
||||
{
|
||||
preg_match_all("/create(.*?)myisam.*?;/si", $sql_data, $result );
|
||||
foreach ($result[0] as $sql_table)
|
||||
{
|
||||
if($function == 'uninstall')
|
||||
{
|
||||
preg_match("/CREATE TABLE(.*?)\(/si", $sql_table, $match);
|
||||
$tablename = trim($match[1]);
|
||||
echo "Removing table $tablename <br />";
|
||||
// $this->manage_tables('remove', array($tablename));
|
||||
}
|
||||
if($function == 'install')
|
||||
{
|
||||
$sql_table = preg_replace("/create table\s+/si", "CREATE TABLE #", $sql_table);
|
||||
echo "Adding table: <pre>{$sql_table}</pre><br />";
|
||||
// $this->manage_tables('add', array($sql_table));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//main menu items
|
||||
if(isset($plug_vars['menuLink']))
|
||||
{
|
||||
//Ensure it is an array for use with foreach()
|
||||
if(!is_array($plug_vars['menuLink']))
|
||||
{
|
||||
$plug_vars['menuLink'] = array($plug_vars['menuLink']);
|
||||
}
|
||||
foreach($plug_vars['menuLink'] as $link)
|
||||
{
|
||||
$attrib = $link['@attributes'];
|
||||
switch($function)
|
||||
{
|
||||
case 'upgrade':
|
||||
case 'install':
|
||||
// Add any active link
|
||||
if(!isset($attrib['active']) || $attrib['active'] == 'true')
|
||||
{
|
||||
$perm = (isset($attrib['perm']) ? $attrib['perm'] : 0);
|
||||
echo "Adding link {$attrib['name']} with url [{$attrib['url']}] and perm {$perm} <br />";
|
||||
// manage_link('add', $attrib['url'], $attrib['name'], $perm);
|
||||
}
|
||||
//remove inactive links on upgrade
|
||||
if($function == 'upgrade' && isset($attrib['active']) && $attrib['active'] == 'false')
|
||||
{
|
||||
echo "Removing link {$attrib['name']} with url [{$attrib['url']}] <br />";
|
||||
// manage_link('remove', $attrib['url'], $attrib['name']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'uninstall':
|
||||
//remove all links
|
||||
echo "Removing link {$attrib['name']} with url [{$attrib['url']}] <br />";
|
||||
// manage_link('remove', $attrib['url'], $attrib['name']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//main pref items
|
||||
if(isset($plug_vars['mainPrefs']))
|
||||
{
|
||||
if(isset($plug_vars['mainPrefs']['pref']))
|
||||
{
|
||||
if(!is_array($plug_vars['mainPrefs']['pref']))
|
||||
{
|
||||
$pref_list = array($plug_vars['mainPrefs']['pref']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$pref_list = $plug_vars['mainPrefs']['pref'];
|
||||
}
|
||||
|
||||
$list = array();
|
||||
foreach($pref_list as $pref)
|
||||
{
|
||||
$attrib = $pref['@attributes'];
|
||||
$list['all'][$attrib['name']] = $attrib['value'];
|
||||
if(!isset($attrib['active']) || $attrib['active'] == 'true')
|
||||
{
|
||||
$list['active'][$attrib['name']] = $attrib['value'];
|
||||
}
|
||||
if(isset($attrib['active']) && $attrib['active'] == 'false')
|
||||
{
|
||||
$list['inactive'][$attrib['name']] = $attrib['value'];
|
||||
}
|
||||
}
|
||||
switch($function)
|
||||
{
|
||||
case 'install':
|
||||
case 'upgrade':
|
||||
if(!isset($attrib['active']) || $attrib['active'] == true)
|
||||
{
|
||||
echo "Adding prefs ".print_a($list['active'], true)."<br />";
|
||||
// manage_prefs('add', $list['active']);
|
||||
}
|
||||
|
||||
//If upgrading, removing any inactive pref
|
||||
if($function == 'upgrade')
|
||||
{
|
||||
echo "Removing prefs ".print_a($list['inactive'], true)."<br />";
|
||||
// manage_prefs('remove', $list['inactive']);
|
||||
}
|
||||
break;
|
||||
|
||||
//If uninstalling, remove all prefs (active or inactive)
|
||||
case 'uninstall':
|
||||
echo "Removing prefs ".print_a($list['all'], true)."<br />";
|
||||
// manage_prefs('remove', $list['all']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function install_plugin_php($path)
|
||||
{
|
||||
global $sql;
|
||||
$plug = array();
|
||||
$plug['plug_action'] = 'install';
|
||||
|
||||
// $plug_vars = $this->parse_plugin_php($path);
|
||||
// $plug_vars = $this->parse_plugin_php($path);
|
||||
include_once($path.'plugin.php');
|
||||
|
||||
$func = $eplug_folder.'_install';
|
||||
@@ -650,15 +800,8 @@ class e107plugin
|
||||
|
||||
if ($eplug_link === TRUE && $eplug_link_url != '' && $eplug_link_name != '')
|
||||
{
|
||||
$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);
|
||||
$linkperm = ($plug_perm[$eplug_link_perms]) ? $plug_perm[$eplug_link_perms] : e_UC_PUBLIC;
|
||||
$this->manage_link('add', $eplug_link_url, $eplug_link_name,$linkperm);
|
||||
$linkperm = (isset($eplug_link_perms) ? $eplug_link_perms : e_UC_PUBLIC);
|
||||
$this->manage_link('add', $eplug_link_url, $eplug_link_name, $linkperm);
|
||||
}
|
||||
|
||||
if ($eplug_userclass)
|
||||
@@ -702,14 +845,14 @@ class e107plugin
|
||||
if ($plug['plugin_installflag'] == FALSE)
|
||||
{
|
||||
$_path = e_PLUGIN.$plug['plugin_path'].'/';
|
||||
if(file_exists($path.'plugin.php'))
|
||||
if(file_exists($_path.'plugin.xml'))
|
||||
{
|
||||
$text = $this->manage_plugin_xml($_path, 'install');
|
||||
}
|
||||
elseif(file_exists($_path.'plugin.php'))
|
||||
{
|
||||
$text = $this->install_plugin_php($_path);
|
||||
}
|
||||
elseif(file_exists($path.'plugin.xml'))
|
||||
{
|
||||
$text = $this->install_plugin_xml($_path);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -905,11 +1048,11 @@ class e107plugin
|
||||
|
||||
function parse_plugin($path)
|
||||
{
|
||||
if(file_exists($_path.'plugin.xml'))
|
||||
if(file_exists($path.'plugin.xml'))
|
||||
{
|
||||
return $this->parse_plugin_xml($path);
|
||||
}
|
||||
elseif(file_exists($_path.'plugin.php'))
|
||||
elseif(file_exists($path.'plugin.php'))
|
||||
{
|
||||
return $this->parse_plugin_php($path);
|
||||
}
|
||||
@@ -942,10 +1085,10 @@ class e107plugin
|
||||
|
||||
// Set this key so we know the vars came from a plugin.php file
|
||||
$ret['plugin_php'] = true;
|
||||
return $ret;
|
||||
$this->plug_vars = $ret;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function parse_plugin_xml($path)
|
||||
{
|
||||
global $tp;
|
||||
@@ -955,7 +1098,8 @@ class e107plugin
|
||||
$xml = new xmlClass;
|
||||
$xml->loadXMLfile($path.'plugin.xml', true, true);
|
||||
$xml->xmlFileContents = $tp->replaceConstants($xml->xmlFileContents, '', true);
|
||||
return $xml->parseXml();
|
||||
$this->plug_vars = $xml->parseXml();
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -14,7 +14,7 @@ CREATE TABLE forum (
|
||||
forum_order int(10) unsigned NOT NULL default '0',
|
||||
forum_postclass tinyint(3) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (forum_id)
|
||||
) TYPE=MyISAM AUTO_INCREMENT=1
|
||||
) TYPE=MyISAM;
|
||||
|
||||
CREATE TABLE forum_t (
|
||||
thread_id int(10) unsigned NOT NULL auto_increment,
|
||||
@@ -35,5 +35,5 @@ CREATE TABLE forum_t (
|
||||
KEY thread_parent (thread_parent),
|
||||
KEY thread_datestamp (thread_datestamp),
|
||||
KEY thread_forum_id (thread_forum_id)
|
||||
) TYPE=MyISAM AUTO_INCREMENT=1;
|
||||
) TYPE=MyISAM;
|
||||
|
||||
|
@@ -16,7 +16,8 @@
|
||||
<latest>true</latest>
|
||||
<status>true</status>
|
||||
</administration>
|
||||
<menuLink name="Forum" value="forum/forum.php" perm='everyone'/>
|
||||
<menuLink name="Forum" url="forum/forum.php" perm='everyone'/>
|
||||
<menuLink name="Forum1" url="forum/forum1.php" perm='everyone' active='false'/>
|
||||
<mainPrefs>
|
||||
<pref name="forum_show_topics" value="1" />
|
||||
<pref name="forum_postfix" value="[more...]" />
|
||||
|
Reference in New Issue
Block a user