mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-04-16 04:17:12 -04:00
Catch extension exceptions in override (#7475)
* Catch extension exceptions in override https://github.com/FreshRSS/Extensions/pull/300#issuecomment-2768578464 * Fix error message
This commit is contained in:
committed by
GitHub
parent
dbdadbb410
commit
3336631a84
@@ -131,7 +131,12 @@ class FreshRSS_extension_Controller extends FreshRSS_ActionController {
|
||||
|
||||
FreshRSS_View::prependTitle($ext->getName() . ' · ' . _t('admin.extensions.title') . ' · ');
|
||||
$this->view->extension = $ext;
|
||||
$this->view->extension->handleConfigureAction();
|
||||
try {
|
||||
$this->view->extension->handleConfigureAction();
|
||||
} catch (Minz_Exception $e) { // @phpstan-ignore catch.neverThrown (Thrown by extensions)
|
||||
Minz_Log::error('Error while configuring extension ' . $ext->getName() . ': ' . $e->getMessage());
|
||||
Minz_Request::bad(_t('feedback.extensions.enable.ko', $ext_name, _url('index', 'logs')), ['c' => 'extension', 'a' => 'index']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -91,6 +91,10 @@ abstract class Minz_Extension {
|
||||
$this->is_enabled = true;
|
||||
}
|
||||
|
||||
final public function disable(): void {
|
||||
$this->is_enabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return if the extension is currently enabled.
|
||||
*
|
||||
@@ -253,6 +257,8 @@ abstract class Minz_Extension {
|
||||
switch ($type) {
|
||||
case 'system': return FreshRSS_Context::hasSystemConf();
|
||||
case 'user': return FreshRSS_Context::hasUserConf();
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -268,7 +268,13 @@ final class Minz_ExtensionManager {
|
||||
spl_autoload_register([$ext, 'autoload']);
|
||||
}
|
||||
$ext->enable();
|
||||
$ext->init();
|
||||
try {
|
||||
$ext->init();
|
||||
} catch (Minz_Exception $e) { // @phpstan-ignore catch.neverThrown (Thrown by extensions)
|
||||
Minz_Log::warning('Error while enabling extension ' . $ext->getName() . ': ' . $e->getMessage());
|
||||
$ext->disable();
|
||||
unset(self::$ext_list_enabled[$ext_name]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user