mirror of
https://github.com/phpbb/phpbb.git
synced 2025-01-17 22:28:46 +01:00
Merge pull request #546 from p/ticket/10614
[ticket/10614] Add a script to enable, disable and view status of extens...
This commit is contained in:
commit
14b1c87714
123
phpBB/develop/extensions.php
Normal file
123
phpBB/develop/extensions.php
Normal file
@ -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();
|
||||
}
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user