aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/extension/manager.php20
1 files changed, 19 insertions, 1 deletions
diff --git a/phpBB/includes/extension/manager.php b/phpBB/includes/extension/manager.php
index 438578e7e7..b7f76d0400 100644
--- a/phpBB/includes/extension/manager.php
+++ b/phpBB/includes/extension/manager.php
@@ -132,6 +132,12 @@ class phpbb_extension_manager
*/
public function enable_step($name)
{
+ $ext_path = $this->get_extension_path($name);
+ if (!file_exists($ext_path))
+ {
+ throw new InvalidArgumentException('The provided extension does not exist.');
+ }
+
// ignore extensions that are already enabled
if (isset($this->extensions[$name]) && $this->extensions[$name]['ext_active'])
{
@@ -152,7 +158,7 @@ class phpbb_extension_manager
);
$this->extensions[$name] = $extension_data;
- $this->extensions[$name]['ext_path'] = $this->get_extension_path($extension_data['ext_name']);
+ $this->extensions[$name]['ext_path'] = $ext_path;
ksort($this->extensions);
$sql = 'UPDATE ' . $this->extension_table . '
@@ -195,6 +201,12 @@ class phpbb_extension_manager
*/
public function disable_step($name)
{
+ $ext_path = $this->get_extension_path($name);
+ if (!file_exists($ext_path))
+ {
+ throw new InvalidArgumentException('The provided extension does not exist.');
+ }
+
// ignore extensions that are already disabled
if (!isset($this->extensions[$name]) || !$this->extensions[$name]['ext_active'])
{
@@ -262,6 +274,12 @@ class phpbb_extension_manager
*/
public function purge_step($name)
{
+ $ext_path = $this->get_extension_path($name);
+ if (!file_exists($ext_path))
+ {
+ throw new InvalidArgumentException('The provided extension does not exist.');
+ }
+
// ignore extensions that do not exist
if (!isset($this->extensions[$name]))
{