Add AbstractPicoPlugin::configEnabled()

This commit is contained in:
Daniel Rudolf 2019-09-11 12:05:56 +02:00
parent bbccb374de
commit 581a3a0609
No known key found for this signature in database
GPG key ID: A061F02CD8DE4538

View file

@ -93,25 +93,7 @@ abstract class AbstractPicoPlugin implements PicoPluginInterface
{ {
// plugins can be enabled/disabled using the config // plugins can be enabled/disabled using the config
if ($eventName === 'onConfigLoaded') { if ($eventName === 'onConfigLoaded') {
$pluginEnabled = $this->getConfig(get_called_class() . '.enabled'); $this->configEnabled();
if ($pluginEnabled !== null) {
$this->setEnabled($pluginEnabled);
} else {
$pluginEnabled = $this->getPluginConfig('enabled');
if ($pluginEnabled !== null) {
$this->setEnabled($pluginEnabled);
} elseif ($this->enabled) {
$this->setEnabled($this->enabled, true, true);
} elseif ($this->enabled === null) {
// make sure dependencies are already fulfilled,
// otherwise the plugin needs to be enabled manually
try {
$this->setEnabled(true, false, true);
} catch (RuntimeException $e) {
$this->enabled = false;
}
}
}
} }
if ($this->isEnabled() || ($eventName === 'onPluginsLoaded')) { if ($this->isEnabled() || ($eventName === 'onPluginsLoaded')) {
@ -121,6 +103,32 @@ abstract class AbstractPicoPlugin implements PicoPluginInterface
} }
} }
/**
* Enables or disables this plugin depending on Pico's config
*/
protected function configEnabled()
{
$pluginEnabled = $this->getPico()->getConfig(get_called_class() . '.enabled');
if ($pluginEnabled !== null) {
$this->setEnabled($pluginEnabled);
} else {
$pluginEnabled = $this->getPluginConfig('enabled');
if ($pluginEnabled !== null) {
$this->setEnabled($pluginEnabled);
} elseif ($this->enabled) {
$this->setEnabled(true, true, true);
} elseif ($this->enabled === null) {
// make sure dependencies are already fulfilled,
// otherwise the plugin needs to be enabled manually
try {
$this->setEnabled(true, false, true);
} catch (RuntimeException $e) {
$this->enabled = false;
}
}
}
}
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */