Parcourir la source

Refactor updateContext into its own FreshRSS_Context class (#4496)

So that it is both cleaner and easier to call from other controllers and extensions
Alexandre Alapetite il y a 3 ans
Parent
commit
09aeeeb325
2 fichiers modifiés avec 58 ajouts et 58 suppressions
  1. 4 58
      app/Controllers/indexController.php
  2. 54 0
      app/Models/Context.php

+ 4 - 58
app/Controllers/indexController.php

@@ -35,7 +35,7 @@ class FreshRSS_index_Controller extends FreshRSS_ActionController {
 		}
 
 		try {
-			$this->updateContext();
+			FreshRSS_Context::updateUsingRequest();
 		} catch (FreshRSS_Context_Exception $e) {
 			Minz_Error::error(404);
 		}
@@ -116,7 +116,7 @@ class FreshRSS_index_Controller extends FreshRSS_ActionController {
 		FreshRSS_View::appendScript(Minz_Url::display('/scripts/global_view.js?' . @filemtime(PUBLIC_PATH . '/scripts/global_view.js')));
 
 		try {
-			$this->updateContext();
+			FreshRSS_Context::updateUsingRequest();
 		} catch (FreshRSS_Context_Exception $e) {
 			Minz_Error::error(404);
 		}
@@ -155,7 +155,7 @@ class FreshRSS_index_Controller extends FreshRSS_ActionController {
 		}
 
 		try {
-			$this->updateContext();
+			FreshRSS_Context::updateUsingRequest();
 		} catch (FreshRSS_Context_Exception $e) {
 			Minz_Error::error(404);
 		}
@@ -186,7 +186,7 @@ class FreshRSS_index_Controller extends FreshRSS_ActionController {
 		}
 
 		try {
-			$this->updateContext();
+			FreshRSS_Context::updateUsingRequest();
 		} catch (FreshRSS_Context_Exception $e) {
 			Minz_Error::error(404);
 		}
@@ -244,60 +244,6 @@ class FreshRSS_index_Controller extends FreshRSS_ActionController {
 		header('Content-Type: application/xml; charset=utf-8');
 	}
 
-	/**
-	 * This action updates the Context object by using request parameters.
-	 *
-	 * Parameters are:
-	 *   - state (default: conf->default_view)
-	 *   - search (default: empty string)
-	 *   - order (default: conf->sort_order)
-	 *   - nb (default: conf->posts_per_page)
-	 *   - next (default: empty string)
-	 *   - hours (default: 0)
-	 */
-	private function updateContext() {
-		if (empty(FreshRSS_Context::$categories)) {
-			$catDAO = FreshRSS_Factory::createCategoryDao();
-			FreshRSS_Context::$categories = $catDAO->listSortedCategories();
-		}
-
-		// Update number of read / unread variables.
-		$entryDAO = FreshRSS_Factory::createEntryDao();
-		FreshRSS_Context::$total_starred = $entryDAO->countUnreadReadFavorites();
-		FreshRSS_Context::$total_unread = FreshRSS_CategoryDAO::CountUnreads(
-			FreshRSS_Context::$categories, 1
-		);
-
-		FreshRSS_Context::_get(Minz_Request::param('get', 'a'));
-
-		FreshRSS_Context::$state = Minz_Request::param(
-			'state', FreshRSS_Context::$user_conf->default_state
-		);
-		$state_forced_by_user = Minz_Request::param('state', false) !== false;
-		if (!$state_forced_by_user && !FreshRSS_Context::isStateEnabled(FreshRSS_Entry::STATE_READ)) {
-			if (FreshRSS_Context::$user_conf->default_view === 'adaptive' && FreshRSS_Context::$get_unread <= 0) {
-				FreshRSS_Context::$state |= FreshRSS_Entry::STATE_READ;
-			}
-			if (FreshRSS_Context::$user_conf->show_fav_unread &&
-					(FreshRSS_Context::isCurrentGet('s') || FreshRSS_Context::isCurrentGet('T') || FreshRSS_Context::isTag())) {
-				FreshRSS_Context::$state |= FreshRSS_Entry::STATE_READ;
-			}
-		}
-
-		FreshRSS_Context::$search = new FreshRSS_BooleanSearch(Minz_Request::param('search', ''));
-		FreshRSS_Context::$order = Minz_Request::param(
-			'order', FreshRSS_Context::$user_conf->sort_order
-		);
-		FreshRSS_Context::$number = intval(Minz_Request::param('nb', FreshRSS_Context::$user_conf->posts_per_page));
-		if (FreshRSS_Context::$number > FreshRSS_Context::$user_conf->max_posts_per_rss) {
-			FreshRSS_Context::$number = max(
-				FreshRSS_Context::$user_conf->max_posts_per_rss,
-				FreshRSS_Context::$user_conf->posts_per_page);
-		}
-		FreshRSS_Context::$first_id = Minz_Request::param('next', '');
-		FreshRSS_Context::$sinceHours = intval(Minz_Request::param('hours', 0));
-	}
-
 	/**
 	 * This method returns a list of entries based on the Context object.
 	 */

+ 54 - 0
app/Models/Context.php

@@ -143,6 +143,60 @@ class FreshRSS_Context {
 		return FreshRSS_Context::$user_conf;
 	}
 
+	/**
+	 * This action updates the Context object by using request parameters.
+	 *
+	 * Parameters are:
+	 *   - state (default: conf->default_view)
+	 *   - search (default: empty string)
+	 *   - order (default: conf->sort_order)
+	 *   - nb (default: conf->posts_per_page)
+	 *   - next (default: empty string)
+	 *   - hours (default: 0)
+	 */
+	public static function updateUsingRequest() {
+		if (empty(self::$categories)) {
+			$catDAO = FreshRSS_Factory::createCategoryDao();
+			self::$categories = $catDAO->listSortedCategories();
+		}
+
+		// Update number of read / unread variables.
+		$entryDAO = FreshRSS_Factory::createEntryDao();
+		self::$total_starred = $entryDAO->countUnreadReadFavorites();
+		self::$total_unread = FreshRSS_CategoryDAO::CountUnreads(
+			self::$categories, 1
+		);
+
+		self::_get(Minz_Request::param('get', 'a'));
+
+		self::$state = Minz_Request::param(
+			'state', self::$user_conf->default_state
+		);
+		$state_forced_by_user = Minz_Request::param('state', false) !== false;
+		if (!$state_forced_by_user && !self::isStateEnabled(FreshRSS_Entry::STATE_READ)) {
+			if (self::$user_conf->default_view === 'adaptive' && self::$get_unread <= 0) {
+				self::$state |= FreshRSS_Entry::STATE_READ;
+			}
+			if (self::$user_conf->show_fav_unread &&
+					(self::isCurrentGet('s') || self::isCurrentGet('T') || self::isTag())) {
+				self::$state |= FreshRSS_Entry::STATE_READ;
+			}
+		}
+
+		self::$search = new FreshRSS_BooleanSearch(Minz_Request::param('search', ''));
+		self::$order = Minz_Request::param(
+			'order', self::$user_conf->sort_order
+		);
+		self::$number = intval(Minz_Request::param('nb', self::$user_conf->posts_per_page));
+		if (self::$number > self::$user_conf->max_posts_per_rss) {
+			self::$number = max(
+				self::$user_conf->max_posts_per_rss,
+				self::$user_conf->posts_per_page);
+		}
+		self::$first_id = Minz_Request::param('next', '');
+		self::$sinceHours = intval(Minz_Request::param('hours', 0));
+	}
+
 	/**
 	 * Returns if the current state includes $state parameter.
 	 * @param int $state