diff --git a/e107_handlers/plugin_class.php b/e107_handlers/plugin_class.php
index 41b85d304..7eba9adc2 100644
--- a/e107_handlers/plugin_class.php
+++ b/e107_handlers/plugin_class.php
@@ -11,9 +11,9 @@
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_handlers/plugin_class.php,v $
-| $Revision: 1.14 $
-| $Date: 2007-12-03 20:43:07 $
-| $Author: e107steved $
+| $Revision: 1.15 $
+| $Date: 2008-01-20 15:01:19 $
+| $Author: mcfly_e107 $
+----------------------------------------------------------------------------+
*/
@@ -21,72 +21,73 @@ if (!defined('e107_INIT')) { exit; }
class e107plugin
{
- var $plugin_addons = array("e_rss", "e_notify", "e_linkgen", "e_list", "e_bb", "e_meta", "e_emailprint", "e_frontpage", "e_latest", "e_status", "e_search", "e_sc", "e_module", "e_comment", "e_sql", "e_userprofile");
+ var $plugin_addons = array("e_rss", "e_notify", "e_linkgen", "e_list", "e_bb", "e_meta", "e_emailprint", "e_frontpage", "e_latest", "e_status", "e_search", "e_sc", "e_module", "e_comment", "e_sql", "e_userprofile");
// List of all plugin variables which need to be checked - install required if one or more set and non-empty
var $all_eplug_install_variables = array(
- 'eplug_link_url',
- 'eplug_link',
- 'eplug_prefs',
- 'eplug_array_pref', // missing previously
- 'eplug_table_names',
- 'eplug_user_prefs',
- 'eplug_sc',
- 'eplug_userclass',
- 'eplug_module',
- 'eplug_bb',
- 'eplug_latest',
- 'eplug_status' //,
-// 'eplug_comment_ids', // Not sure about this one
-// 'eplug_menu_name', // ...or this one
-// 'eplug_conffile' // ...or this one
+ 'eplug_link_url',
+ 'eplug_link',
+ 'eplug_prefs',
+ 'eplug_array_pref', // missing previously
+ 'eplug_table_names',
+ 'eplug_user_prefs',
+ 'eplug_sc',
+ 'eplug_userclass',
+ 'eplug_module',
+ 'eplug_bb',
+ 'eplug_latest',
+ 'eplug_status' //,
+ // 'eplug_comment_ids', // Not sure about this one
+ // 'eplug_menu_name', // ...or this one
+ // 'eplug_conffile' // ...or this one
);
// List of all plugin variables involved in an update (not used ATM, but worth 'documenting')
var $all_eplug_update_variables = array (
- 'upgrade_alter_tables',
- 'upgrade_add_eplug_sc',
- 'upgrade_remove_eplug_sc',
- 'upgrade_add_eplug_bb',
- 'upgrade_remove_eplug_bb',
- 'upgrade_add_prefs',
- 'upgrade_remove_prefs',
- 'upgrade_add_user_prefs',
- 'upgrade_remove_user_prefs',
- 'upgrade_add_array_pref',
- 'upgrade_remove_array_pref'
+ 'upgrade_alter_tables',
+ 'upgrade_add_eplug_sc',
+ 'upgrade_remove_eplug_sc',
+ 'upgrade_add_eplug_bb',
+ 'upgrade_remove_eplug_bb',
+ 'upgrade_add_prefs',
+ 'upgrade_remove_prefs',
+ 'upgrade_add_user_prefs',
+ 'upgrade_remove_user_prefs',
+ 'upgrade_add_array_pref',
+ 'upgrade_remove_array_pref'
);
-
+
// List of all 'editable' DB fields ('plugin_id' is an arbitrary reference which is never edited)
var $all_editable_db_fields = array (
- 'plugin_name', // Name of the plugin - language dependent
- 'plugin_version', // Version - arbitrary text field
- 'plugin_path', // Name of the directory off e_PLUGIN - unique
- 'plugin_installflag', // '0' = not installed, '1' = installed
- 'plugin_addons' // List of any extras associated with plugin - bbcodes, e_XXX files...
+ 'plugin_name', // Name of the plugin - language dependent
+ 'plugin_version', // Version - arbitrary text field
+ 'plugin_path', // Name of the directory off e_PLUGIN - unique
+ 'plugin_installflag', // '0' = not installed, '1' = installed
+ 'plugin_addons' // List of any extras associated with plugin - bbcodes, e_XXX files...
);
-
+
/**
- * 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.
- * @return array plugin details
- */
+ * 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.
+ * @return array plugin details
+ */
function getall($flag)
{
-
+
global $sql;
- if ($sql->db_Select("plugin","*","plugin_installflag = '".intval($flag)."' ORDER BY plugin_path ASC"))
+ if ($sql->db_Select("plugin","*","plugin_installflag = ".(int)$flag." ORDER BY plugin_path ASC"))
{
$ret = $sql->db_getList();
- }
- return ($ret) ? $ret : FALSE;
+ return $ret;
+ }
+ return false;
}
/**
- * Check for new plugins, create entry in plugin table and remove deleted plugins
- */
- function update_plugins_table()
+ * Check for new plugins, create entry in plugin table and remove deleted plugins
+ */
+ function update_plugins_table()
{
global $sql, $sql2, $mySQLprefix, $menu_pref, $tp, $pref;
@@ -96,129 +97,129 @@ class e107plugin
$pluginList = $fl->get_files(e_PLUGIN, "^plugin\.php$", "standard", 1);
$sp = FALSE;
-// Read all the plugin DB info into an array to save lots of accesses
+ // Read all the plugin DB info into an array to save lots of accesses
$pluginDBList = array();
if ($sql->db_Select('plugin',"*"))
{
- while ($row = $sql->db_Fetch())
- {
- $pluginDBList[$row['plugin_path']] = $row;
- $pluginDBList[$row['plugin_path']]['status'] = 'read';
-// echo "Found plugin: ".$row['plugin_path']." in DB
";
- }
+ while ($row = $sql->db_Fetch())
+ {
+ $pluginDBList[$row['plugin_path']] = $row;
+ $pluginDBList[$row['plugin_path']]['status'] = 'read';
+ // echo "Found plugin: ".$row['plugin_path']." in DB
";
+ }
}
// Get rid of any variables previously defined which may occur in plugin.php
foreach($pluginList as $p)
{
- $defined_vars = array_keys(get_defined_vars());
- foreach($defined_vars as $varname)
- {
- if ((substr($varname, 0, 6) == 'eplug_') || (substr($varname, 0, 8) == 'upgrade_'))
+ $defined_vars = array_keys(get_defined_vars());
+ foreach($defined_vars as $varname)
{
- unset($$varname);
- }
- }
-
- // We have to include here to set the variables, otherwise we only get uninstalled plugins
- // Would be nice to eval() the file contents to pick up errors better, but too many path issues
- $plug['plug_action'] = 'scan'; // Make sure plugin.php knows what we're up to
- include("{$p['path']}{$p['fname']}");
- $plugin_path = substr(str_replace(e_PLUGIN,"",$p['path']),0,-1);
-
- // scan for addons.
- $eplug_addons = $this->getAddons($plugin_path); // Returns comma-separated list
-// $eplug_addons = $this->getAddons($plugin_path,'check'); // Checks opening/closing tags on addon files
-
- // See whether the plugin needs installation - it does if one or more variables defined
- $no_install_needed = 1;
- foreach ($this->all_eplug_install_variables as $check_var)
- {
- if (isset($$check_var) && ($$check_var)) { $no_install_needed = 0; }
- }
-
- if ($plugin_path == $eplug_folder)
- {
- if(array_key_exists($plugin_path,$pluginDBList))
- { // Update the addons needed by the plugin
- $pluginDBList[$plugin_path]['status'] = 'exists';
- // If plugin not installed, and version number of files changed, update version as well
- if (($pluginDBList[$plugin_path]['plugin_installflag'] == 0) && ($pluginDBList[$plugin_path]['plugin_version'] != $eplug_version))
- { // Update stored version
- $pluginDBList[$plugin_path]['plugin_version'] = $eplug_version;
- $pluginDBList[$plugin_path]['status'] = 'update';
- }
- if ($pluginDBList[$plugin_path]['plugin_addons'] != $eplug_addons)
- { // Update stored addons list
- $pluginDBList[$plugin_path]['plugin_addons'] = $eplug_addons;
- $pluginDBList[$plugin_path]['status'] = 'update';
- }
-
- if ($pluginDBList[$plugin_path]['plugin_installflag'] == 0)
- { // Plugin not installed - make sure $pref not set
- if (isset($pref['plug_installed'][$plugin_path]))
+ if ((substr($varname, 0, 6) == 'eplug_') || (substr($varname, 0, 8) == 'upgrade_'))
{
- unset($pref['plug_installed'][$plugin_path]);
-// echo "Remove: ".$plugin_path."->".$ep_row['plugin_version']."
";
- $sp = TRUE;
+ unset($$varname);
}
- }
- else
- { // Plugin installed - make sure $pref is set
- if (!isset($pref['plug_installed'][$plugin_path]) || ($pref['plug_installed'][$plugin_path] != $pluginDBList[$plugin_path]['plugin_version']))
- { // Update prefs array of installed plugins
- $pref['plug_installed'][$plugin_path] = $pluginDBList[$plugin_path]['plugin_version'];
-// echo "Add: ".$plugin_path."->".$ep_row['plugin_version']."
";
- $sp = TRUE;
+ }
+
+ // We have to include here to set the variables, otherwise we only get uninstalled plugins
+ // Would be nice to eval() the file contents to pick up errors better, but too many path issues
+ $plug['plug_action'] = 'scan'; // Make sure plugin.php knows what we're up to
+ include("{$p['path']}{$p['fname']}");
+ $plugin_path = substr(str_replace(e_PLUGIN,"",$p['path']),0,-1);
+
+ // scan for addons.
+ $eplug_addons = $this->getAddons($plugin_path); // Returns comma-separated list
+ // $eplug_addons = $this->getAddons($plugin_path,'check'); // Checks opening/closing tags on addon files
+
+ // See whether the plugin needs installation - it does if one or more variables defined
+ $no_install_needed = 1;
+ foreach ($this->all_eplug_install_variables as $check_var)
+ {
+ if (isset($$check_var) && ($$check_var)) { $no_install_needed = 0; }
+ }
+
+ if ($plugin_path == $eplug_folder)
+ {
+ if(array_key_exists($plugin_path,$pluginDBList))
+ { // Update the addons needed by the plugin
+ $pluginDBList[$plugin_path]['status'] = 'exists';
+ // If plugin not installed, and version number of files changed, update version as well
+ if (($pluginDBList[$plugin_path]['plugin_installflag'] == 0) && ($pluginDBList[$plugin_path]['plugin_version'] != $eplug_version))
+ { // Update stored version
+ $pluginDBList[$plugin_path]['plugin_version'] = $eplug_version;
+ $pluginDBList[$plugin_path]['status'] = 'update';
+ }
+ if ($pluginDBList[$plugin_path]['plugin_addons'] != $eplug_addons)
+ { // Update stored addons list
+ $pluginDBList[$plugin_path]['plugin_addons'] = $eplug_addons;
+ $pluginDBList[$plugin_path]['status'] = 'update';
+ }
+
+ if ($pluginDBList[$plugin_path]['plugin_installflag'] == 0)
+ { // Plugin not installed - make sure $pref not set
+ if (isset($pref['plug_installed'][$plugin_path]))
+ {
+ unset($pref['plug_installed'][$plugin_path]);
+ // echo "Remove: ".$plugin_path."->".$ep_row['plugin_version']."
";
+ $sp = TRUE;
+ }
+ }
+ else
+ { // Plugin installed - make sure $pref is set
+ if (!isset($pref['plug_installed'][$plugin_path]) || ($pref['plug_installed'][$plugin_path] != $pluginDBList[$plugin_path]['plugin_version']))
+ { // Update prefs array of installed plugins
+ $pref['plug_installed'][$plugin_path] = $pluginDBList[$plugin_path]['plugin_version'];
+ // echo "Add: ".$plugin_path."->".$ep_row['plugin_version']."
";
+ $sp = TRUE;
+ }
+ }
+ }
+ else
+ { // New plugin - not in table yet, so add it. If no install needed, mark it as 'installed'
+ if ($eplug_name)
+ {
+ // Can just add to DB - shouldn''t matter that its not in our current table
+ // echo "Trying to insert: ".$eplug_folder."
";
+ $sql->db_Insert("plugin", "0, '".$tp -> toDB($eplug_name, true)."', '".$tp -> toDB($eplug_version, true)."', '".$tp -> toDB($eplug_folder, true)."', {$no_install_needed}, '{$eplug_addons}' ");
+ }
}
- }
}
else
- { // New plugin - not in table yet, so add it. If no install needed, mark it as 'installed'
- if ($eplug_name)
- {
- // Can just add to DB - shouldn''t matter that its not in our current table
-// echo "Trying to insert: ".$eplug_folder."
";
- $sql->db_Insert("plugin", "0, '".$tp -> toDB($eplug_name, true)."', '".$tp -> toDB($eplug_version, true)."', '".$tp -> toDB($eplug_folder, true)."', {$no_install_needed}, '{$eplug_addons}' ");
- }
+ { // May be useful that we ignore what will usually be copies/backups of plugins - but don't normally say anything
+ // echo "Plugin copied to wrong directory. Is in: {$plugin_path} Should be: {$eplug_folder}
";
}
- }
- else
- { // May be useful that we ignore what will usually be copies/backups of plugins - but don't normally say anything
-// echo "Plugin copied to wrong directory. Is in: {$plugin_path} Should be: {$eplug_folder}
";
- }
}
// Now scan the table, updating the DB where needed
foreach ($pluginDBList as $plug_path => $plug_info)
{
- if ($plug_info['status'] == 'read')
- { // In table, not on server - delete it
- $sql->db_Delete('plugin', "`plugin_id`='{$plug_info['plugin_id']}'");
-// echo "Deleted: ".$plug_path."
";
- }
- if ($plug_info['status'] == 'update')
- {
- $temp = array();
- foreach ($this->all_editable_db_fields as $p_f)
- {
- $temp[] ="`{$p_f}` = '{$plug_info[$p_f]}'";
+ if ($plug_info['status'] == 'read')
+ { // In table, not on server - delete it
+ $sql->db_Delete('plugin', "`plugin_id`={$plug_info['plugin_id']}");
+ // echo "Deleted: ".$plug_path."
";
+ }
+ if ($plug_info['status'] == 'update')
+ {
+ $temp = array();
+ foreach ($this->all_editable_db_fields as $p_f)
+ {
+ $temp[] ="`{$p_f}` = '{$plug_info[$p_f]}'";
+ }
+ $sql->db_Update('plugin', implode(", ",$temp)." WHERE `plugin_id`={$plug_info['plugin_id']}");
+ // echo "Updated: ".$plug_path."
";
}
- $sql->db_Update('plugin', implode(", ",$temp)." WHERE `plugin_id`='{$plug_info['plugin_id']}'");
-// echo "Updated: ".$plug_path."
";
- }
}
- if ($sp) save_prefs();
+ if ($sp) save_prefs();
}
/**
- * Returns deatils of a plugin from the plugin table from it's ID
- *
- * @param int $id
- * @return array plugin info
- */
+ * Returns deatils of a plugin from the plugin table from it's ID
+ *
+ * @param int $id
+ * @return array plugin info
+ */
function getinfo($id) {
global $sql;
$id = intval($id);
@@ -227,38 +228,51 @@ class e107plugin
}
}
- function manage_userclass($action, $class_name, $class_description) {
+ function manage_userclass($action, $class_name, $class_description)
+ {
global $sql, $tp;
$class_name = $tp -> toDB($class_name, true);
$class_description = $tp -> toDB($class_description, true);
- if ($action == 'add') {
+ if ($action == 'add')
+ {
$i = 1;
- while ($sql->db_Select('userclass_classes', '*', "userclass_id='{$i}' ") && $i < e_UC_READONLY) {
+ while ($sql->db_Select('userclass_classes', '*', "userclass_id={$i} ") && $i < e_UC_READONLY)
+ {
$i++;
}
- if ($i < e_UC_READONLY) {
+ if ($i < e_UC_READONLY)
+ {
return $sql->db_Insert('userclass_classes', "{$i},'".strip_tags(strtoupper($class_name))."', '{$class_description}' ,".e_UC_PUBLIC);
- } else {
+ }
+ else
+ {
return FALSE;
}
}
- if ($action == 'remove') {
- if ($sql->db_Select('userclass_classes', 'userclass_id', "userclass_name = '{$class_name}'")) {
+ if ($action == 'remove')
+ {
+ if ($sql->db_Select('userclass_classes', 'userclass_id', "userclass_name = '{$class_name}'"))
+ {
$row = $sql->db_Fetch();
$class_id = $row['userclass_id'];
- if ($sql->db_Delete('userclass_classes', "userclass_id = '{$class_id}'")) {
- if ($sql->db_Select('user', 'user_id, user_class', "user_class REGEXP('^{$class_id}\.') OR user_class REGEXP('\.{$class_id}\.') OR user_class REGEXP('\.{$class_id}$')")) {
+ if ($sql->db_Delete('userclass_classes', "userclass_id = {$class_id}"))
+ {
+ if ($sql->db_Select('user', 'user_id, user_class', "user_class REGEXP('^{$class_id}\.') OR user_class REGEXP('\.{$class_id}\.') OR user_class REGEXP('\.{$class_id}$')"))
+ {
$sql2 = new db;
- while ($row = $sql->db_Fetch()) {
+ while ($row = $sql->db_Fetch())
+ {
$classes = explode(".", $row['user_class']);
unset($classes[$class_id]);
- foreach($classes as $k => $v) {
- if ($v = '') {
+ foreach($classes as $k => $v)
+ {
+ if ($v = '')
+ {
unset($classes[$k]);
}
}
$newclass = '.'.implode('.', $classes).'.';
- $sql2->db_Update('user', "user_class = '{$newclass}' WHERE user_id = '{$row['user_id']}");
+ $sql2->db_Update('user', "user_class = '{$newclass}' WHERE user_id = {$row['user_id']}");
}
}
}
@@ -266,92 +280,103 @@ 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;
$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
$path = $tp->createConstants($path); // Add in standard {e_XXXX} directory constants if we can
- if ($action == 'add')
+ if ($action == 'add')
{
$link_t = $sql->db_Count('links');
- if (!$sql->db_Count('links', '(*)', "WHERE link_url = '{$path}' OR link_name = '{$link_name}'"))
+ if (!$sql->db_Count('links', '(*)', "WHERE link_url = '{$path}' OR link_name = '{$link_name}'"))
{
- return $sql->db_Insert('links', "0, '{$link_name}', '{$path}', '', '', '1', '".($link_t + 1)."', '0', '0', '{$link_class}' ");
- }
- else
+ return $sql->db_Insert('links', "0, '{$link_name}', '{$path}', '', '', '1', '".($link_t + 1)."', '0', '0', '{$link_class}' ");
+ }
+ else
{
- return FALSE;
+ return FALSE;
}
}
- if ($action == 'remove')
+ if ($action == 'remove')
{ // Look up by URL if we can - should be more reliable. Otherwise try looking up by name (as previously)
- if (($path && $sql->db_Select('links', 'link_id,link_order', "link_url = '{$path}'")) ||
- $sql->db_Select('links', 'link_id,link_order', "link_name = '{$link_name}'"))
- {
- $row = $sql->db_Fetch();
- $sql->db_Update('links', "link_order = link_order - 1 WHERE link_order > {$row['link_order']}");
- return $sql->db_Delete('links', "link_id = '{$row['link_id']}'");
- }
+ if (($path && $sql->db_Select('links', 'link_id,link_order', "link_url = '{$path}'")) ||
+ $sql->db_Select('links', 'link_id,link_order', "link_name = '{$link_name}'"))
+ {
+ $row = $sql->db_Fetch();
+ $sql->db_Update('links', "link_order = link_order - 1 WHERE link_order > {$row['link_order']}");
+ return $sql->db_Delete('links', "link_id = {$row['link_id']}");
+ }
}
}
- function manage_prefs($action, $var) {
+ function manage_prefs($action, $var)
+ {
global $pref;
- if (is_array($var)) {
- switch ($action)
- {
- case 'add' :
- foreach($var as $k => $v)
- {
- $pref[$k] = $v;
- }
- break;
-
- case 'update' :
- foreach($var as $k => $v)
- { // Only update if $pref doesn't exist
- if (!isset($pref[$k])) $pref[$k] = $v;
- }
- break;
-
- case 'remove' :
- foreach($var as $k => $v)
- {
- if (is_numeric($k))
- { // Sometimes arrays specified with value being the name of the key to delete
- unset($pref[$var[$k]]);
+ if (is_array($var))
+ {
+ switch ($action)
+ {
+ case 'add' :
+ foreach($var as $k => $v)
+ {
+ $pref[$k] = $v;
}
- else
- { // This is how the array should be specified - key is the name of the pref
- unset($pref[$k]);
- }
- }
- break;
- }
- save_prefs();
+ break;
+
+ case 'update' :
+ foreach($var as $k => $v)
+ { // Only update if $pref doesn't exist
+ if (!isset($pref[$k])) $pref[$k] = $v;
+ }
+ break;
+
+ case 'remove' :
+ foreach($var as $k => $v)
+ {
+ if (is_numeric($k))
+ { // Sometimes arrays specified with value being the name of the key to delete
+ unset($pref[$var[$k]]);
+ }
+ else
+ { // This is how the array should be specified - key is the name of the pref
+ unset($pref[$k]);
+ }
+ }
+ break;
+ }
+ save_prefs();
}
}
- function manage_comments($action,$comment_id){
+ function manage_comments($action,$comment_id)
+ {
global $sql, $tp;
- if($action == 'remove'){
- foreach($comment_id as $com){
- $tmp[] = "comment_type='".$tp -> toDB($com, true)."'";
+ if($action == 'remove')
+ {
+ foreach($comment_id as $com)
+ {
+ $tmp[] = "comment_type='".$tp -> toDB($com, true)."'";
}
$qry = implode(" OR ",$tmp);
- return $sql->db_Delete('comments',$qry);
- }
+ return $sql->db_Delete('comments',$qry);
+ }
}
- function manage_tables($action, $var) {
+ function manage_tables($action, $var)
+ {
global $sql;
- if ($action == 'add') {
- if (is_array($var)) {
- foreach($var as $tab) {
- if (!$sql->db_Query($tab)) {
+ if ($action == 'add')
+ {
+ if (is_array($var))
+ {
+ foreach($var as $tab)
+ {
+ if (!$sql->db_Query($tab))
+ {
return FALSE;
}
}
@@ -359,10 +384,14 @@ class e107plugin
}
return TRUE;
}
- if ($action == 'upgrade') {
- if (is_array($var)) {
- foreach($var as $tab) {
- if (!$sql->db_Query_all($tab)) {
+ if ($action == 'upgrade')
+ {
+ if (is_array($var))
+ {
+ foreach($var as $tab)
+ {
+ if (!$sql->db_Query_all($tab))
+ {
return FALSE;
}
}
@@ -370,11 +399,15 @@ class e107plugin
}
return TRUE;
}
- if ($action == 'remove') {
- if (is_array($var)) {
- foreach($var as $tab) {
+ if ($action == 'remove')
+ {
+ if (is_array($var))
+ {
+ foreach($var as $tab)
+ {
$qry = 'DROP TABLE '.MPREFIX.$tab;
- if (!$sql->db_Query_all($qry)) {
+ if (!$sql->db_Query_all($qry))
+ {
return $tab;
}
}
@@ -384,114 +417,144 @@ class e107plugin
}
}
- 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
global $pref;
- if ($prefname == 'plug_sc' || $prefname == 'plug_bb')
+ if ($prefname == 'plug_sc' || $prefname == 'plug_bb')
{ // Special cases - shortcodes and bbcodes - each plugin may contribute several elements
- foreach($varArray as $code) {
+ foreach($varArray as $code)
+ {
$prefvals[] = "$code:$plugin_folder";
}
- } else {
+ }
+ else
+ {
$prefvals[] = $varArray;
-// $prefvals[] = $plugin_folder;
+ // $prefvals[] = $plugin_folder;
}
$curvals = explode(',', $pref[$prefname]);
- if ($action == 'add')
+ if ($action == 'add')
{
$newvals = array_merge($curvals, $prefvals);
}
- if ($action == 'remove')
+ if ($action == 'remove')
{
- foreach($prefvals as $v)
- {
- if (($i = array_search($v, $curvals)) !== FALSE)
+ foreach($prefvals as $v)
{
- unset($curvals[$i]);
+ if (($i = array_search($v, $curvals)) !== FALSE)
+ {
+ unset($curvals[$i]);
+ }
}
- }
- $newvals = $curvals;
+ $newvals = $curvals;
}
$newvals = array_unique($newvals);
$pref[$prefname] = implode(',', $newvals);
if(substr($pref[$prefname], 0, 1) == ",")
{
- $pref[$prefname] = substr($pref[$prefname], 1);
+ $pref[$prefname] = substr($pref[$prefname], 1);
}
save_prefs();
}
-
-
-
-
-
- function manage_search($action, $eplug_folder) {
+ function manage_search($action, $eplug_folder)
+ {
global $sql, $sysprefs;
$search_prefs = $sysprefs -> getArray('search_prefs');
$default = file_exists(e_PLUGIN.$eplug_folder.'/e_search.php') ? TRUE : FALSE;
$comments = file_exists(e_PLUGIN.$eplug_folder.'/search/search_comments.php') ? TRUE : FALSE;
- if ($action == 'add'){
+ if ($action == 'add')
+ {
$install_default = $default ? TRUE : FALSE;
$install_comments = $comments ? TRUE : FALSE;
- } else if ($action == 'remove'){
+ }
+ else if ($action == 'remove')
+ {
$uninstall_default = isset($search_prefs['plug_handlers'][$eplug_folder]) ? TRUE : FALSE;
$uninstall_comments = isset($search_prefs['comments_handlers'][$eplug_folder]) ? TRUE : FALSE;
- } else if ($action == 'upgrade'){
- if (isset($search_prefs['plug_handlers'][$eplug_folder])) {
+ }
+ else if ($action == 'upgrade')
+ {
+ if (isset($search_prefs['plug_handlers'][$eplug_folder]))
+ {
$uninstall_default = $default ? FALSE : TRUE;
- } else {
+ }
+ else
+ {
$install_default = $default ? TRUE : FALSE;
}
- if (isset($search_prefs['comments_handlers'][$eplug_folder])) {
+ if (isset($search_prefs['comments_handlers'][$eplug_folder]))
+ {
$uninstall_comments = $comments ? FALSE : TRUE;
- } else {
+ }
+ else
+ {
$install_comments = $comments ? TRUE : FALSE;
}
}
- if ($install_default) {
+ if ($install_default)
+ {
$search_prefs['plug_handlers'][$eplug_folder] = array('class' => 0, 'pre_title' => 1, 'pre_title_alt' => '', 'chars' => 150, 'results' => 10);
- } else if ($uninstall_default) {
+ }
+ else if ($uninstall_default)
+ {
unset($search_prefs['plug_handlers'][$eplug_folder]);
}
- if ($install_comments) {
+ if ($install_comments)
+ {
require_once(e_PLUGIN.$eplug_folder.'/search/search_comments.php');
$search_prefs['comments_handlers'][$eplug_folder] = array('id' => $comments_type_id, 'class' => 0, 'dir' => $eplug_folder);
- } else if ($uninstall_comments) {
+ }
+ else if ($uninstall_comments)
+ {
unset($search_prefs['comments_handlers'][$eplug_folder]);
}
$tmp = addslashes(serialize($search_prefs));
$sql->db_Update("core", "e107_value = '{$tmp}' WHERE e107_name = 'search_prefs' ");
}
- function manage_notify($action, $eplug_folder) {
+ function manage_notify($action, $eplug_folder)
+ {
global $sql, $sysprefs, $eArrayStorage, $tp;
$notify_prefs = $sysprefs -> get('notify_prefs');
$notify_prefs = $eArrayStorage -> ReadArray($notify_prefs);
$e_notify = file_exists(e_PLUGIN.$eplug_folder.'/e_notify.php') ? TRUE : FALSE;
- if ($action == 'add'){
+ if ($action == 'add')
+ {
$install_notify = $e_notify ? TRUE : FALSE;
- } else if ($action == 'remove'){
+ }
+ else if ($action == 'remove')
+ {
$uninstall_notify = isset($notify_prefs['plugins'][$eplug_folder]) ? TRUE : FALSE;
- } else if ($action == 'upgrade'){
- if (isset($notify_prefs['plugins'][$eplug_folder])) {
+ }
+ else if ($action == 'upgrade')
+ {
+ if (isset($notify_prefs['plugins'][$eplug_folder]))
+ {
$uninstall_notify = $e_notify ? FALSE : TRUE;
- } else {
+ }
+ else
+ {
$install_notify = $e_notify ? TRUE : FALSE;
}
}
- if ($install_notify) {
+ if ($install_notify)
+ {
$notify_prefs['plugins'][$eplug_folder] = TRUE;
require_once(e_PLUGIN.$eplug_folder.'/e_notify.php');
- foreach ($config_events as $event_id => $event_text) {
+ foreach ($config_events as $event_id => $event_text)
+ {
$notify_prefs['event'][$event_id] = array('type' => 'off', 'class' => '254', 'email' => '');
}
- } else if ($uninstall_notify) {
+ }
+ else if ($uninstall_notify)
+ {
unset($notify_prefs['plugins'][$eplug_folder]);
require_once(e_PLUGIN.$eplug_folder.'/e_notify.php');
- foreach ($config_events as $event_id => $event_text) {
+ foreach ($config_events as $event_id => $event_text)
+ {
unset($notify_prefs['event'][$event_id]);
}
}
@@ -501,11 +564,11 @@ class e107plugin
}
/**
- * Installs a plugin by ID
- *
- * @param int $id
- */
- function install_plugin($id)
+ * Installs a plugin by ID
+ *
+ * @param int $id
+ */
+ function install_plugin($id)
{
global $sql, $ns, $sysprefs,$mySQLprefix, $tp;
@@ -513,20 +576,26 @@ class e107plugin
$plug = $this->getinfo($id);
$plug['plug_action'] = 'install';
- if ($plug['plugin_installflag'] == FALSE) {
+ if ($plug['plugin_installflag'] == FALSE)
+ {
include_once(e_PLUGIN.$plug['plugin_path'].'/plugin.php');
$func = $eplug_folder.'_install';
- if (function_exists($func)) {
+ if (function_exists($func))
+ {
$text .= call_user_func($func);
}
- if (is_array($eplug_tables)) {
+ if (is_array($eplug_tables))
+ {
$result = $this->manage_tables('add', $eplug_tables);
- if ($result === TRUE) {
+ if ($result === TRUE)
+ {
$text .= EPL_ADLAN_19.'
';
//success
- } else {
+ }
+ else
+ {
$text .= EPL_ADLAN_18.'
';
//fail
}
@@ -534,58 +603,70 @@ class e107plugin
- if (is_array($eplug_prefs)) {
+ if (is_array($eplug_prefs))
+ {
$this->manage_prefs('add', $eplug_prefs);
$text .= EPL_ADLAN_8.'
';
}
- if (is_array($eplug_array_pref)){
- foreach($eplug_array_pref as $key => $val){
+ if (is_array($eplug_array_pref))
+ {
+ foreach($eplug_array_pref as $key => $val)
+ {
$this->manage_plugin_prefs('add', $key, $eplug_folder, $val);
}
}
- if (is_array($eplug_sc)) {
+ if (is_array($eplug_sc))
+ {
$this->manage_plugin_prefs('add', 'plug_sc', $eplug_folder, $eplug_sc);
}
- if (is_array($eplug_bb)) {
+ if (is_array($eplug_bb))
+ {
$this->manage_plugin_prefs('add', 'plug_bb', $eplug_folder, $eplug_bb);
}
- if (is_array($eplug_user_prefs)) {
+ if (is_array($eplug_user_prefs))
+ {
$sql->db_Select("core", " e107_value", " e107_name = 'user_entended'");
$row = $sql->db_Fetch();
$user_entended = unserialize($row[0]);
- while (list($e_user_pref, $default_value) = each($eplug_user_prefs)) {
+ while (list($e_user_pref, $default_value) = each($eplug_user_prefs))
+ {
$user_entended[] = $e_user_pref;
$user_pref['$e_user_pref'] = $default_value;
}
save_prefs("user");
$tmp = addslashes(serialize($user_entended));
- if ($sql->db_Select("core", "e107_value", " e107_name = 'user_entended'")) {
+ if ($sql->db_Select("core", "e107_value", " e107_name = 'user_entended'"))
+ {
$sql->db_Update("core", "e107_value = '{$tmp}' WHERE e107_name = 'user_entended' ");
- } else {
+ }
+ else
+ {
$sql->db_Insert("core", "'user_entended', '{$tmp}' ");
}
$text .= EPL_ADLAN_8."
";
}
- if ($eplug_link === TRUE && $eplug_link_url != '' && $eplug_link_name != '') {
- $plug_perm['everyone'] = e_UC_PUBLIC;
+ 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;
+ $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);
}
- if ($eplug_userclass) {
+ if ($eplug_userclass)
+ {
$this->manage_userclass('add', $eplug_userclass, $eplug_userclass_description);
}
@@ -595,75 +676,78 @@ class e107plugin
$eplug_addons = $this->getAddons($eplug_folder);
- $sql->db_Update('plugin', "plugin_installflag = 1, plugin_addons = '{$eplug_addons}' WHERE plugin_id = '".intval($id)."'");
+ $sql->db_Update('plugin', "plugin_installflag = 1, plugin_addons = '{$eplug_addons}' WHERE plugin_id = ".(int)$id);
$pref['plug_installed'][$plugin_path] = $plug['plugin_version'];
save_prefs();
-
- if($rssmess) { $text .= $rssmess; }
+
+ if($rssmess)
+ { $text .= $rssmess;
+ }
$text .= (isset($eplug_done) ? "
{$eplug_done}" : "
".LAN_INSTALL_SUCCESSFUL);
- } else {
+ }
+ else
+ {
$text = EPL_ADLAN_21;
}
if($eplug_conffile){ $text .= " [".LAN_CONFIGURE."]"; }
$ns->tablerender(EPL_ADLAN_33, $text);
}
-
-
- function save_addon_prefs(){ // scan the plugin table and create path-array-prefs for each addon.
+ function save_addon_prefs()
+ { // scan the plugin table and create path-array-prefs for each addon.
global $sql,$pref;
-// $query = "SELECT * FROM #plugin WHERE plugin_installflag = 1 AND plugin_addons !='' ORDER BY plugin_path ASC";
- $query = "SELECT * FROM #plugin WHERE plugin_addons !='' ORDER BY plugin_path ASC";
+ // $query = "SELECT * FROM #plugin WHERE plugin_installflag = 1 AND plugin_addons !='' ORDER BY plugin_path ASC";
+ $query = "SELECT * FROM #plugin WHERE plugin_addons !='' ORDER BY plugin_path ASC";
- // clear all addon prefs before re-creation.
+ // clear all addon prefs before re-creation.
unset($pref['shortcode_list'],$pref['bbcode_list'],$pref['e_sql_list']);
- foreach($this->plugin_addons as $plg)
+ foreach($this->plugin_addons as $plg)
{
- unset($pref[$plg."_list"]);
+ unset($pref[$plg."_list"]);
}
if ($sql -> db_Select_gen($query))
{
while($row = $sql-> db_Fetch())
{
- $is_installed = ($row['plugin_installflag'] == 1 );
- $tmp = explode(",",$row['plugin_addons']);
+ $is_installed = ($row['plugin_installflag'] == 1 );
+ $tmp = explode(",",$row['plugin_addons']);
$path = $row['plugin_path'];
- if ($is_installed)
- {
- foreach($this->plugin_addons as $val)
+ if ($is_installed)
{
- if(in_array($val,$tmp))
+ foreach($this->plugin_addons as $val)
{
- $pref[$val."_list"][$path] = $path;
+ if(in_array($val,$tmp))
+ {
+ $pref[$val."_list"][$path] = $path;
+ }
}
}
- }
- // search for .bb and .sc files.
+ // search for .bb and .sc files.
$sc_array = array();
$bb_array = array();
$sql_array = array();
- foreach($tmp as $adds)
+ foreach($tmp as $adds)
{
- if(substr($adds,-3) == ".sc")
+ if(substr($adds,-3) == ".sc")
{
$sc_name = substr($adds, 0,-3); // remove the .sc
if ($is_installed)
{
- $sc_array[$sc_name] = "0"; // default userclass = e_UC_PUBLIC
+ $sc_array[$sc_name] = "0"; // default userclass = e_UC_PUBLIC
}
else
{
- $sc_array[$sc_name] = e_UC_NOBODY; // register shortcode, but disable it
+ $sc_array[$sc_name] = e_UC_NOBODY; // register shortcode, but disable it
}
}
if($is_installed && (substr($adds,-3) == ".bb"))
{
$bb_name = substr($adds, 0,-3); // remove the .bb
- $bb_array[$bb_name] = "0"; // default userclass.
+ $bb_array[$bb_name] = "0"; // default userclass.
}
if($is_installed && (substr($adds,-4) == "_sql"))
@@ -672,68 +756,79 @@ class e107plugin
}
}
- // Build Bbcode list (will be empty if plugin not installed)
- if(count($bb_array) > 0)
+ // Build Bbcode list (will be empty if plugin not installed)
+ if(count($bb_array) > 0)
{
ksort($bb_array);
- $pref['bbcode_list'][$path] = $bb_array;
+ $pref['bbcode_list'][$path] = $bb_array;
}
else
{
- if (isset($pref['bbcode_list'][$path])) unset($pref['bbcode_list'][$path]);
+ if (isset($pref['bbcode_list'][$path])) unset($pref['bbcode_list'][$path]);
}
- // Build shortcode list - do if uninstalled as well
+ // Build shortcode list - do if uninstalled as well
if(count($sc_array) > 0)
{
- ksort($sc_array);
- $pref['shortcode_list'][$path] = $sc_array;
- }
+ ksort($sc_array);
+ $pref['shortcode_list'][$path] = $sc_array;
+ }
else
{
- if(isset($pref['shortcode_list'][$path])) unset($pref['shortcode_list'][$path]);
+ if(isset($pref['shortcode_list'][$path])) unset($pref['shortcode_list'][$path]);
}
}
}
- save_prefs();
+ save_prefs();
return;
-
}
- // return a list of available plugin addons for the specified plugin. e_xxx etc.
+ // return a list of available plugin addons for the specified plugin. e_xxx etc.
// $debug = TRUE - prints diagnostics
// $debug = 'check' - checks each file found for php tags - prints 'pass' or 'fail'
- function getAddons($plugin_path,$debug=FALSE)
+ function getAddons($plugin_path, $debug=FALSE)
{
- global $fl;
- $p_addons = array();
- foreach($this->plugin_addons as $e_xxx)
- {
- if(is_readable(e_PLUGIN.$plugin_path."/".$e_xxx.".php"))
- {
- $passfail = '';
- if ($debug == 'check')
- {
- $file_text = file_get_contents(e_PLUGIN.$plugin_path."/".$e_xxx.".php");
- if ((substr($file_text,0,5) != '<'.'?php') || (substr($file_text,-2,2) !='?>')) $passfail = 'fail'; else $passfail = 'pass';
- echo $plugin_path."/".$e_xxx.".php - ".$passfail."
";
- }
- $p_addons[] = $e_xxx;
- }
- }
-
+ global $fl;
if(!is_object($fl)){
require_once(e_HANDLER.'file_class.php');
- $fl = new e_file;
+ $fl = new e_file;
+ }
+ $p_addons = array();
+ $addonlist = $fl->get_files(e_PLUGIN.$plugin_path, "^e_.*\.php$", "standard", 1);
+ // print_a($addonlist);
+ foreach($addonlist as $f)
+ {
+ if(preg_match("#^(e_.*)\.php$#", $f['fname'], $matches))
+ {
+ $addon = $matches[1];
+ if(is_readable(e_PLUGIN.$plugin_path."/".$f['fname']))
+ {
+ if ($debug === 'check')
+ {
+ $passfail = '';
+ $file_text = file_get_contents(e_PLUGIN.$plugin_path."/".$f['fname']);
+ if ((substr($file_text,0,5) != '<'.'?php') || (substr($file_text,-2,2) !='?>'))
+ {
+ $passfail = 'fail';
+ }
+ else
+ {
+ $passfail = 'pass';
+ }
+ echo $plugin_path."/".$addon.".php - ".$passfail."
";
+ }
+ $p_addons[] = $addon;
+ }
+ }
}
// Grab List of Shortcodes & BBcodes
$shortcodeList = $fl->get_files(e_PLUGIN.$plugin_path, ".sc$", "standard", 1);
$bbcodeList = $fl->get_files(e_PLUGIN.$plugin_path, ".bb$", "standard", 1);
- $sqlList = $fl->get_files(e_PLUGIN.$plugin_path, "_sql.php$", "standard", 1);
+ $sqlList = $fl->get_files(e_PLUGIN.$plugin_path, "_sql.php$", "standard", 1);
// Search Shortcodes
foreach($shortcodeList as $sc)
@@ -744,8 +839,8 @@ class e107plugin
}
}
- // Search Bbcodes.
- foreach($bbcodeList as $bb)
+ // Search Bbcodes.
+ foreach($bbcodeList as $bb)
{
if(is_readable(e_PLUGIN.$plugin_path."/".$bb['fname']))
{
@@ -753,8 +848,8 @@ class e107plugin
}
}
- // Search _sql files.
- foreach($sqlList as $esql)
+ // Search _sql files.
+ foreach($sqlList as $esql)
{
if(is_readable(e_PLUGIN.$plugin_path."/".$esql['fname']))
{
@@ -762,8 +857,7 @@ class e107plugin
}
}
-
- if($debug==TRUE)
+ if($debug == true)
{
echo $plugin_path." = ".implode(",",$p_addons)."
";
}
@@ -773,13 +867,13 @@ class e107plugin
function checkAddon($plugin_path,$e_xxx)
{ // Return 0 = OK, 1 = Fail, 2 = inaccessible
- if(is_readable(e_PLUGIN.$plugin_path."/".$e_xxx.".php"))
- {
- $file_text = file_get_contents(e_PLUGIN.$plugin_path."/".$e_xxx.".php");
- if ((substr($file_text,0,5) != '<'.'?php') || (substr($file_text,-2,2) !='?>')) return 1;
- return 0;
+ if(is_readable(e_PLUGIN.$plugin_path."/".$e_xxx.".php"))
+ {
+ $file_text = file_get_contents(e_PLUGIN.$plugin_path."/".$e_xxx.".php");
+ if ((substr($file_text,0,5) != '<'.'?php') || (substr($file_text,-2,2) !='?>')) return 1;
+ return 0;
}
- return 2;
+ return 2;
}
}