summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2015-01-14 21:38:35 +0100
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2015-01-14 21:38:35 +0100
commit806b4de54ffd1dd682ec7b42a5be8343a464e5f0 (patch)
tree05e74724c0c80d32c2073d51d06c3bc9cd4b2f33
parentf1ffdd8b9d1f3d8742f1328dfa805664a66e34aa (diff)
Add mechanism at (un)install of an extension
Test if the install or uninstall has been successfully performed. If these methods return true, all is ok but if a string is returned, the string must explain the problem. This problem is stored in log file. A feedback is given to explain to check log file. This commit fix a problem in the english translation of feedback.sub.feed.internal_problem.
-rw-r--r--app/Controllers/extensionController.php40
-rw-r--r--app/i18n/en/feedback.php12
-rw-r--r--app/i18n/fr/feedback.php10
-rw-r--r--lib/Minz/Extension.php14
4 files changed, 55 insertions, 21 deletions
diff --git a/app/Controllers/extensionController.php b/app/Controllers/extensionController.php
index e013bb369..692595a4c 100644
--- a/app/Controllers/extensionController.php
+++ b/app/Controllers/extensionController.php
@@ -88,15 +88,21 @@ class FreshRSS_extension_Controller extends Minz_ActionController {
$url_redirect);
}
- $ext->install();
+ $res = $ext->install();
- $ext_list = $conf->extensions_enabled;
- array_push_unique($ext_list, $ext_name);
- $conf->extensions_enabled = $ext_list;
- $conf->save();
+ if ($res === true) {
+ $ext_list = $conf->extensions_enabled;
+ array_push_unique($ext_list, $ext_name);
+ $conf->extensions_enabled = $ext_list;
+ $conf->save();
- Minz_Request::good(_t('feedback.extensions.enabled', $ext_name),
- $url_redirect);
+ Minz_Request::good(_t('feedback.extensions.enable.ok', $ext_name),
+ $url_redirect);
+ } else {
+ Minz_Log::warning('Can not enable extension ' . $ext_name . ': ' . $res);
+ Minz_Request::bad(_t('feedback.extensions.enable.ko', $ext_name, _url('index', 'logs')),
+ $url_redirect);
+ }
}
Minz_Request::forward($url_redirect, true);
@@ -138,15 +144,21 @@ class FreshRSS_extension_Controller extends Minz_ActionController {
$url_redirect);
}
- $ext->uninstall();
+ $res = $ext->uninstall();
- $ext_list = $conf->extensions_enabled;
- array_remove($ext_list, $ext_name);
- $conf->extensions_enabled = $ext_list;
- $conf->save();
+ if ($res === true) {
+ $ext_list = $conf->extensions_enabled;
+ array_remove($ext_list, $ext_name);
+ $conf->extensions_enabled = $ext_list;
+ $conf->save();
- Minz_Request::good(_t('feedback.extensions.disabled', $ext_name),
- $url_redirect);
+ Minz_Request::good(_t('feedback.extensions.disable.ok', $ext_name),
+ $url_redirect);
+ } else {
+ Minz_Log::warning('Can not unable extension ' . $ext_name . ': ' . $res);
+ Minz_Request::bad(_t('feedback.extensions.disable.ko', $ext_name, _url('index', 'logs')),
+ $url_redirect);
+ }
}
Minz_Request::forward($url_redirect, true);
diff --git a/app/i18n/en/feedback.php b/app/i18n/en/feedback.php
index e9499ed46..19af81e5b 100644
--- a/app/i18n/en/feedback.php
+++ b/app/i18n/en/feedback.php
@@ -31,8 +31,14 @@ return array(
),
'extensions' => array(
'already_enabled' => '%s is already enabled',
- 'disabled' => '%s is now disabled',
- 'enabled' => '%s is now enabled',
+ 'disable' => array(
+ 'ko' => '%s cannot be disabled. <a href="%s">Check FressRSS logs</a> for details.',
+ 'ok' => '%s is now disabled',
+ ),
+ 'enable' => array(
+ 'ko' => '%s cannot be enabled. <a href="%s">Check FressRSS logs</a> for details.',
+ 'ok' => '%s is now enabled',
+ ),
'no_access' => 'You have no access on %s',
'not_enabled' => '%s is not enabled yet',
'not_found' => '%s does not exist',
@@ -67,7 +73,7 @@ return array(
'already_subscribed' => 'You have already subscribed to <em>%s</em>',
'deleted' => 'Feed has been deleted',
'error' => 'Feed cannot be updated',
- 'internal_problem_feed' => 'The RSS feed could not be added. <a href="%s">Check FressRSS logs</a> for details.',
+ 'internal_problem' => 'The RSS feed could not be added. <a href="%s">Check FressRSS logs</a> for details.',
'invalid_url' => 'URL <em>%s</em> is invalid',
'marked_read' => 'Feeds have been marked as read',
'n_actualized' => '%d feeds have been updated',
diff --git a/app/i18n/fr/feedback.php b/app/i18n/fr/feedback.php
index c99314411..e2364a251 100644
--- a/app/i18n/fr/feedback.php
+++ b/app/i18n/fr/feedback.php
@@ -31,8 +31,14 @@ return array(
),
'extensions' => array(
'already_enabled' => '%s est déjà activée',
- 'disabled' => '%s est désormais désactivée',
- 'enabled' => '%s est désormais activée',
+ 'disable' => array(
+ 'ko' => '%s ne peut pas être désactivée. <a href="%s">Consulter les logs de FreshRSS</a> pour plus de détails.',
+ 'ok' => '%s est désormais désactivée',
+ ),
+ 'enable' => array(
+ 'ko' => '%s ne peut pas être activée. <a href="%s">Consulter les logs de FreshRSS</a> pour plus de détails.',
+ 'ok' => '%s est désormais activée',
+ ),
'no_access' => 'Vous n’avez aucun accès sur %s',
'not_enabled' => '%s n’est pas encore activée',
'not_found' => '%s n’existe pas',
diff --git a/lib/Minz/Extension.php b/lib/Minz/Extension.php
index b3991c129..ac7231e9c 100644
--- a/lib/Minz/Extension.php
+++ b/lib/Minz/Extension.php
@@ -51,16 +51,26 @@ class Minz_Extension {
* Used when installing an extension (e.g. update the database scheme).
*
* It must be redefined by child classes.
+ *
+ * @return true if the extension has been installed or a string explaining
+ * the problem.
*/
- public function install() {}
+ public function install() {
+ return true;
+ }
/**
* Used when uninstalling an extension (e.g. revert the database scheme to
* cancel changes from install).
*
* It must be redefined by child classes.
+ *
+ * @return true if the extension has been uninstalled or a string explaining
+ * the problem.
*/
- public function uninstall() {}
+ public function uninstall() {
+ return true;
+ }
/**
* Call at the initialization of the extension (i.e. when the extension is