blob: 4e673459d21947edfa7dac07e36599f3ecebc625 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
<?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 " Next to each extension name are two flags:\n";
echo "\n";
echo " * P|M - present|missing: whether the extension exists in the filesystem\n";
echo " * A|I - active|inactive: whether the extension is activated in the database\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";
exit(2);
}
function list_extensions()
{
global $db, $phpbb_root_path;
$sql = "SELECT ext_name, ext_active from " . EXT_TABLE;
$result = $db->sql_query($sql);
$extensions = array();
while ($row = $db->sql_fetchrow($result))
{
$extensions[$row['ext_name']]['active'] = (bool) $row['ext_active'];
if (file_exists($phpbb_root_path . 'ext/' . $row['ext_name']))
{
$extensions[$row['ext_name']]['present'] = true;
}
else
{
$extensions[$row['ext_name']]['present'] = false;
}
}
$iterator = new DirectoryIterator($phpbb_root_path . 'ext');
foreach ($iterator as $file)
{
// ignore hidden files
// php refuses to subscript iterator objects
$file = "$file";
if ($file[0] != '.')
{
if (!array_key_exists($file, $extensions))
{
$extensions[$file] = array('active' => false, 'present' => true);
}
}
}
ksort($extensions);
foreach ($extensions as $name => $ext)
{
$present = $ext['active'] ? 'P' : 'M';
$active = $ext['active'] ? 'A' : 'I';
printf("%-20s %s %s\n", $name, $present, $active);
}
}
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 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;
default:
usage();
}
|