瀏覽代碼

Check FRESHRSS_PATH is writable.

FRESHRSS_PATH needs to be writable before performing update.
Marien Fressinaud 11 年之前
父節點
當前提交
48f91da2e5
共有 3 個文件被更改,包括 18 次插入27 次删除
  1. 14 27
      app/Controllers/updateController.php
  2. 2 0
      app/i18n/en.php
  3. 2 0
      app/i18n/fr.php

+ 14 - 27
app/Controllers/updateController.php

@@ -15,15 +15,19 @@ class FreshRSS_update_Controller extends Minz_ActionController {
 	}
 
 	public function indexAction() {
-		if (file_exists(UPDATE_FILENAME)) {
+		if (file_exists(UPDATE_FILENAME) && !is_writable(FRESHRSS_PATH)) {
+			$this->view->message = array(
+				'status' => 'bad',
+				'title' => _t('damn'),
+				'body' => _t('file_is_nok', FRESHRSS_PATH)
+			);
+		} elseif (file_exists(UPDATE_FILENAME)) {
 			// There is an update file to apply!
 			$this->view->message = array(
 				'status' => 'good',
 				'title' => _t('ok'),
 				'body' => _t('update_can_apply', _url('update', 'apply'))
 			);
-
-			return;
 		}
 	}
 
@@ -33,11 +37,7 @@ class FreshRSS_update_Controller extends Minz_ActionController {
 		if (file_exists(UPDATE_FILENAME)) {
 			// There is already an update file to apply: we don't need to check
 			// the webserver!
-			$this->view->message = array(
-				'status' => 'good',
-				'title' => _t('ok'),
-				'body' => _t('update_can_apply', _url('update', 'apply'))
-			);
+			Minz_Request::forward(array('c' => 'update'));
 
 			return;
 		}
@@ -73,11 +73,7 @@ class FreshRSS_update_Controller extends Minz_ActionController {
 
 		$script = $res_array[1];
 		if (file_put_contents(UPDATE_FILENAME, $script) !== false) {
-			$this->view->message = array(
-				'status' => 'good',
-				'title' => _t('ok'),
-				'body' => _t('update_can_apply', _url('update', 'apply'))
-			);
+			Minz_Request::forward(array('c' => 'update'));
 		} else {
 			$this->view->message = array(
 				'status' => 'bad',
@@ -88,7 +84,7 @@ class FreshRSS_update_Controller extends Minz_ActionController {
 	}
 
 	public function applyAction() {
-		if (!file_exists(UPDATE_FILENAME)) {
+		if (!file_exists(UPDATE_FILENAME) || !is_writable(FRESHRSS_PATH)) {
 			Minz_Request::forward(array('c' => 'update'), true);
 		}
 
@@ -104,21 +100,12 @@ class FreshRSS_update_Controller extends Minz_ActionController {
 			if ($res === true) {
 				@unlink(UPDATE_FILENAME);
 
-				// TODO: record last update
+				// TODO: record last update_finished
 
-				Minz_Session::_param('notification', array(
-					'type' => 'good',
-					'content' => Minz_Translate::t('update_finished')
-				));
-
-				Minz_Request::forward(array(), true);
+				Minz_Request::good(_t('update_finished'));
 			} else {
-				Minz_Session::_param('notification', array(
-					'type' => 'bad',
-					'content' => Minz_Translate::t('update_problem', $res)
-				));
-
-				Minz_Request::forward(array('c' => 'update'), true);
+				Minz_Request::bad(_t('update_problem', $res),
+				                  array('c' => 'update', 'a' => 'index'));
 			}
 		}
 	}

+ 2 - 0
app/i18n/en.php

@@ -152,6 +152,8 @@ return array (
 	'public'			=> 'Public',
 	'invalid_login'			=> 'Login is invalid',
 
+	'file_is_nok'			=> 'Check permissions on <em>%s</em> directory. HTTP server must have rights to write into.',
+
 	// VIEWS
 	'save'				=> 'Save',
 	'delete'			=> 'Delete',

+ 2 - 0
app/i18n/fr.php

@@ -152,6 +152,8 @@ return array (
 	'public'			=> 'Public',
 	'invalid_login'			=> 'L’identifiant est invalide !',
 
+	'file_is_nok'			=> 'Veuillez vérifier les droits sur le répertoire <em>%s</em>. Le serveur HTTP doit être capable d’écrire dedans.',
+
 	// VIEWS
 	'save'				=> 'Enregistrer',
 	'delete'			=> 'Supprimer',