aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2014-08-07 13:00:21 +0200
committerJoas Schilling <nickvergessen@gmx.de>2014-08-07 13:00:21 +0200
commit3722aac495014f190d2c8f14d7b3ee0b1b712186 (patch)
tree86fa40fccf11c7b9b6126187b6dcf2f98c0f4058 /phpBB/phpbb
parent28224bad70fe5c2d912d96f2f35e4e5d99301c71 (diff)
parentf474e33a430176fd7ef809141b258eec77993e03 (diff)
downloadforums-3722aac495014f190d2c8f14d7b3ee0b1b712186.tar
forums-3722aac495014f190d2c8f14d7b3ee0b1b712186.tar.gz
forums-3722aac495014f190d2c8f14d7b3ee0b1b712186.tar.bz2
forums-3722aac495014f190d2c8f14d7b3ee0b1b712186.tar.xz
forums-3722aac495014f190d2c8f14d7b3ee0b1b712186.zip
Merge branch 'develop-ascraeus' into develop
* develop-ascraeus: [ticket/12847] Allow the extensions to say if they can be enabled
Diffstat (limited to 'phpBB/phpbb')
-rw-r--r--phpBB/phpbb/extension/base.php8
-rw-r--r--phpBB/phpbb/extension/extension_interface.php7
-rw-r--r--phpBB/phpbb/extension/manager.php6
3 files changed, 21 insertions, 0 deletions
diff --git a/phpBB/phpbb/extension/base.php b/phpBB/phpbb/extension/base.php
index 53051ce881..288fb7d19c 100644
--- a/phpBB/phpbb/extension/base.php
+++ b/phpBB/phpbb/extension/base.php
@@ -55,6 +55,14 @@ class base implements \phpbb\extension\extension_interface
}
/**
+ * {@inheritdoc}
+ */
+ public function is_enableable()
+ {
+ return true;
+ }
+
+ /**
* Single enable step that installs any included migrations
*
* @param mixed $old_state State returned by previous call of this method
diff --git a/phpBB/phpbb/extension/extension_interface.php b/phpBB/phpbb/extension/extension_interface.php
index cc8b8be980..6a6b6adb8f 100644
--- a/phpBB/phpbb/extension/extension_interface.php
+++ b/phpBB/phpbb/extension/extension_interface.php
@@ -20,6 +20,13 @@ namespace phpbb\extension;
interface extension_interface
{
/**
+ * Indicate whether or not the extension can be enabled.
+ *
+ * @return bool
+ */
+ public function is_enableable();
+
+ /**
* enable_step is executed on enabling an extension until it returns false.
*
* Calls to this function can be made in subsequent requests, when the
diff --git a/phpBB/phpbb/extension/manager.php b/phpBB/phpbb/extension/manager.php
index 4a12e9ec8c..76f0e3558e 100644
--- a/phpBB/phpbb/extension/manager.php
+++ b/phpBB/phpbb/extension/manager.php
@@ -178,6 +178,12 @@ class manager
$old_state = (isset($this->extensions[$name]['ext_state'])) ? unserialize($this->extensions[$name]['ext_state']) : false;
$extension = $this->get_extension($name);
+
+ if (!$extension->is_enableable())
+ {
+ return false;
+ }
+
$state = $extension->enable_step($old_state);
$active = ($state === false);