aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Wiedler <igor@wiedler.ch>2012-02-11 14:54:22 -0800
committerIgor Wiedler <igor@wiedler.ch>2012-02-11 14:54:22 -0800
commit14b1c877141355307c598d8ac337b93121a8b6c9 (patch)
tree5e553e5162d77d91103f0cda20f1b17fd752cae3
parent9611b5ff83582d7bda22ab991e8d69786dab5b93 (diff)
parent87914d2788b54a5e59f54431a4745e62d42de907 (diff)
downloadforums-14b1c877141355307c598d8ac337b93121a8b6c9.tar
forums-14b1c877141355307c598d8ac337b93121a8b6c9.tar.gz
forums-14b1c877141355307c598d8ac337b93121a8b6c9.tar.bz2
forums-14b1c877141355307c598d8ac337b93121a8b6c9.tar.xz
forums-14b1c877141355307c598d8ac337b93121a8b6c9.zip
Merge pull request #546 from p/ticket/10614
[ticket/10614] Add a script to enable, disable and view status of extens...
-rw-r--r--phpBB/develop/extensions.php123
-rw-r--r--phpBB/includes/extension/manager.php30
2 files changed, 151 insertions, 2 deletions
diff --git a/phpBB/develop/extensions.php b/phpBB/develop/extensions.php
new file mode 100644
index 0000000000..2f7c3d1167
--- /dev/null
+++ b/phpBB/develop/extensions.php
@@ -0,0 +1,123 @@
+<?php
+/**
+*
+* @copyright (c) 2012 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+define('IN_PHPBB', 1);
+define('ANONYMOUS', 1);
+$phpEx = substr(strrchr(__FILE__, '.'), 1);
+$phpbb_root_path = __DIR__.'/../';
+
+include($phpbb_root_path . 'common.'.$phpEx);
+
+function usage()
+{
+ echo "Usage: extensions.php COMMAND [OPTION]...\n";
+ echo "Console extension manager.\n";
+ echo "\n";
+ echo "list:\n";
+ echo " Lists all extensions in the database and the filesystem.\n";
+ echo "\n";
+ echo "enable NAME:\n";
+ echo " Enables the specified extension.\n";
+ echo "\n";
+ echo "disable NAME:\n";
+ echo " Disables the specified extension.\n";
+ echo "\n";
+ echo "purge NAME:\n";
+ echo " Purges the specified extension.\n";
+ exit(2);
+}
+
+function list_extensions()
+{
+ global $phpbb_extension_manager;
+
+ $phpbb_extension_manager->load_extensions();
+
+ echo "Enabled:\n";
+ $enabled = array_keys($phpbb_extension_manager->all_enabled());
+ print_extensions($enabled);
+ echo "\n";
+
+ echo "Disabled:\n";
+ $disabled = array_keys($phpbb_extension_manager->all_disabled());
+ print_extensions($disabled);
+ echo "\n";
+
+ echo "Available:\n";
+ $all = array_keys($phpbb_extension_manager->all_available());
+ $purged = array_diff($all, $enabled, $disabled);
+ print_extensions($purged);
+}
+
+function print_extensions($exts)
+{
+ foreach ($exts as $ext)
+ {
+ echo "- $ext\n";
+ }
+}
+
+function enable_extension($name)
+{
+ global $phpbb_extension_manager;
+
+ $phpbb_extension_manager->enable($name);
+}
+
+function disable_extension($name)
+{
+ global $phpbb_extension_manager;
+
+ $phpbb_extension_manager->disable($name);
+}
+
+function purge_extension($name)
+{
+ global $phpbb_extension_manager;
+
+ $phpbb_extension_manager->purge($name);
+}
+
+function validate_argument_count($count)
+{
+ global $argv;
+
+ if (count($argv) <= $count)
+ {
+ usage();
+ }
+}
+
+validate_argument_count(1);
+
+$action = $argv[1];
+
+switch ($action)
+{
+ case 'list':
+ list_extensions();
+ break;
+
+ case 'enable':
+ validate_argument_count(2);
+ enable_extension($argv[2]);
+ break;
+
+ case 'disable':
+ validate_argument_count(2);
+ disable_extension($argv[2]);
+ break;
+
+ case 'purge':
+ validate_argument_count(2);
+ purge_extension($argv[2]);
+ break;
+
+ default:
+ usage();
+}
diff --git a/phpBB/includes/extension/manager.php b/phpBB/includes/extension/manager.php
index 438578e7e7..c38f0df32e 100644
--- a/phpBB/includes/extension/manager.php
+++ b/phpBB/includes/extension/manager.php
@@ -61,7 +61,7 @@ class phpbb_extension_manager
*
* @return null
*/
- protected function load_extensions()
+ public function load_extensions()
{
$sql = 'SELECT *
FROM ' . $this->extension_table;
@@ -167,6 +167,11 @@ class phpbb_extension_manager
$this->db->sql_query($sql);
}
+ if ($this->cache)
+ {
+ $this->cache->destroy($this->cache_name);
+ }
+
return !$active;
}
@@ -219,6 +224,11 @@ class phpbb_extension_manager
WHERE ext_name = '" . $this->db->sql_escape($name) . "'";
$this->db->sql_query($sql);
+ if ($this->cache)
+ {
+ $this->cache->destroy($this->cache_name);
+ }
+
return true;
}
@@ -234,6 +244,11 @@ class phpbb_extension_manager
WHERE ext_name = '" . $this->db->sql_escape($name) . "'";
$this->db->sql_query($sql);
+ if ($this->cache)
+ {
+ $this->cache->destroy($this->cache_name);
+ }
+
return false;
}
@@ -292,6 +307,11 @@ class phpbb_extension_manager
WHERE ext_name = '" . $this->db->sql_escape($name) . "'";
$this->db->sql_query($sql);
+ if ($this->cache)
+ {
+ $this->cache->destroy($this->cache_name);
+ }
+
return true;
}
@@ -301,6 +321,11 @@ class phpbb_extension_manager
WHERE ext_name = '" . $this->db->sql_escape($name) . "'";
$this->db->sql_query($sql);
+ if ($this->cache)
+ {
+ $this->cache->destroy($this->cache_name);
+ }
+
return false;
}
@@ -329,7 +354,8 @@ class phpbb_extension_manager
$available = array();
$iterator = new RecursiveIteratorIterator(
- new RecursiveDirectoryIterator($this->phpbb_root_path . 'ext/'));
+ new RecursiveDirectoryIterator($this->phpbb_root_path . 'ext/'),
+ RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $file_info)
{
if ($file_info->isFile() && $file_info->getFilename() == 'ext' . $this->phpEx)