aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2023-04-10 12:41:38 +0200
committerGravatar GitHub <noreply@github.com> 2023-04-10 12:41:38 +0200
commit74bf894db02c2d50fa414cc652512cfe48db4267 (patch)
treeff704aad39b0d682eea5a3254ec1bccaff5c7673
parent73057f66469c19a79b4b7f833069d81a94e29595 (diff)
PHPStan 6 for remaining controllers (#5279)
Contributes to https://github.com/FreshRSS/FreshRSS/issues/4112
-rw-r--r--app/Controllers/feedController.php45
-rw-r--r--app/Controllers/userController.php49
-rw-r--r--tests/phpstan-next.txt2
3 files changed, 44 insertions, 52 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index 63042ad1e..39a1c7289 100644
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -27,18 +27,14 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
}
/**
- * @param string $url
- * @param string $title
- * @param int $cat_id
- * @param string $new_cat_name
- * @param string $http_auth
- * @return FreshRSS_Feed
+ * @param array<string,mixed> $attributes
* @throws FreshRSS_AlreadySubscribed_Exception
* @throws FreshRSS_FeedNotAdded_Exception
* @throws FreshRSS_Feed_Exception
* @throws Minz_FileNotExistException
*/
- public static function addFeed($url, $title = '', $cat_id = 0, $new_cat_name = '', $http_auth = '', $attributes = array(), $kind = FreshRSS_Feed::KIND_RSS) {
+ public static function addFeed(string $url, string $title = '', int $cat_id = 0, string $new_cat_name = '',
+ string $http_auth = '', array $attributes = [], int $kind = FreshRSS_Feed::KIND_RSS): FreshRSS_Feed {
FreshRSS_UserDAO::touch();
@set_time_limit(300);
@@ -131,7 +127,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
*
* If url_rss is false, nothing happened.
*/
- public function addAction() {
+ public function addAction(): void {
$url = Minz_Request::paramString('url_rss');
if ($url == '') {
@@ -294,7 +290,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
* Parameter is:
* - id (default: false)
*/
- public function truncateAction() {
+ public function truncateAction(): void {
$id = Minz_Request::paramInt('id');
$url_redirect = array(
'c' => 'subscription',
@@ -318,14 +314,9 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
}
/**
- * @param int $feed_id
- * @param string $feed_url
- * @param bool $force
- * @param SimplePie|null $simplePiePush
- * @param bool $noCommit
- * @param int $maxFeeds
+ * @return array{0:int,1:FreshRSS_Feed|false,2:int}
*/
- public static function actualizeFeed($feed_id, $feed_url, $force, $simplePiePush = null, $noCommit = false, $maxFeeds = 10) {
+ public static function actualizeFeed(int $feed_id, string $feed_url, bool $force, ?SimplePie $simplePiePush = null, bool $noCommit = false, int $maxFeeds = 10) {
@set_time_limit(300);
$feedDAO = FreshRSS_Factory::createFeedDao();
@@ -644,7 +635,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
* If id and url are not specified, all the feeds are actualized. But if force is
* false, process stops at 10 feeds to avoid time execution problem.
*/
- public function actualizeAction() {
+ public function actualizeAction(): int {
Minz_Session::_param('actualize_feeds', false);
$id = Minz_Request::paramInt('id');
$url = Minz_Request::paramString('url');
@@ -691,16 +682,16 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
return $updated_feeds;
}
- public static function renameFeed(int $feed_id, string $feed_name) {
+ public static function renameFeed(int $feed_id, string $feed_name): bool {
if ($feed_id <= 0 || $feed_name == '') {
return false;
}
FreshRSS_UserDAO::touch();
$feedDAO = FreshRSS_Factory::createFeedDao();
- return $feedDAO->updateFeed($feed_id, array('name' => $feed_name));
+ return $feedDAO->updateFeed($feed_id, array('name' => $feed_name)) === 1;
}
- public static function moveFeed(int $feed_id, int $cat_id, string $new_cat_name = '') {
+ public static function moveFeed(int $feed_id, int $cat_id, string $new_cat_name = ''): bool {
if ($feed_id <= 0 || ($cat_id <= 0 && $new_cat_name == '')) {
return false;
}
@@ -720,7 +711,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
}
$feedDAO = FreshRSS_Factory::createFeedDao();
- return $feedDAO->updateFeed($feed_id, array('category' => $cat_id));
+ return $feedDAO->updateFeed($feed_id, array('category' => $cat_id)) === 1;
}
/**
@@ -735,7 +726,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
*
* @todo should handle order of the feed inside the category.
*/
- public function moveAction() {
+ public function moveAction(): void {
if (!Minz_Request::isPost()) {
Minz_Request::forward(array('c' => 'subscription'), true);
}
@@ -753,7 +744,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
}
}
- public static function deleteFeed($feed_id) {
+ public static function deleteFeed(int $feed_id): bool {
FreshRSS_UserDAO::touch();
$feedDAO = FreshRSS_Factory::createFeedDao();
if ($feedDAO->deleteFeed($feed_id)) {
@@ -782,7 +773,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
*
* @todo handle "r" redirection in Minz_Request::forward()?
*/
- public function deleteAction() {
+ public function deleteAction(): void {
$from = Minz_Request::paramString('from');
$id = Minz_Request::paramInt('id');
@@ -822,7 +813,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
* - id (mandatory - no default): Feed ID
*
*/
- public function clearCacheAction() {
+ public function clearCacheAction(): void {
//Get Feed.
$id = Minz_Request::paramInt('id');
@@ -848,7 +839,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
* - id (mandatory - no default): Feed ID
*
*/
- public function reloadAction() {
+ public function reloadAction(): void {
@set_time_limit(300);
//Get Feed ID.
@@ -905,7 +896,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
* - selector (mandatory - no default): Selector to preview
*
*/
- public function contentSelectorPreviewAction() {
+ public function contentSelectorPreviewAction(): void {
//Configure.
$this->view->fatalError = '';
diff --git a/app/Controllers/userController.php b/app/Controllers/userController.php
index 6d8d510db..b44ec5d46 100644
--- a/app/Controllers/userController.php
+++ b/app/Controllers/userController.php
@@ -10,15 +10,16 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
*/
const USERNAME_PATTERN = '([0-9a-zA-Z_][0-9a-zA-Z_.@-]{1,38}|[0-9a-zA-Z])';
- public static function checkUsername($username) {
+ public static function checkUsername(string $username): bool {
return preg_match('/^' . self::USERNAME_PATTERN . '$/', $username) === 1;
}
- public static function userExists($username) {
+ public static function userExists(string $username): bool {
return @file_exists(USERS_PATH . '/' . $username . '/config.php');
}
- public static function updateUser($user, $email, $passwordPlain, $userConfigUpdated = array()) {
+ /** @param array<string,mixed> $userConfigUpdated */
+ public static function updateUser(string $user, ?string $email, string $passwordPlain, array $userConfigUpdated = []): bool {
$userConfig = get_user_configuration($user);
if ($userConfig === null) {
return false;
@@ -52,7 +53,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
return $ok;
}
- public function updateAction() {
+ public function updateAction(): void {
if (!FreshRSS_Auth::hasAccess('admin')) {
Minz_Error::error(403);
}
@@ -83,7 +84,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
/**
* This action displays the user profile page.
*/
- public function profileAction() {
+ public function profileAction(): void {
if (!FreshRSS_Auth::hasAccess()) {
Minz_Error::error(403);
}
@@ -148,7 +149,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
}
}
- public function purgeAction() {
+ public function purgeAction(): void {
if (!FreshRSS_Auth::hasAccess('admin')) {
Minz_Error::error(403);
}
@@ -168,7 +169,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
/**
* This action displays the user management page.
*/
- public function manageAction() {
+ public function manageAction(): void {
if (!FreshRSS_Auth::hasAccess('admin')) {
Minz_Error::error(403);
}
@@ -210,7 +211,9 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
}
}
- public static function createUser($new_user_name, $email, $passwordPlain, $userConfigOverride = [], $insertDefaultFeeds = true) {
+ /** @param array<string,mixed> $userConfigOverride */
+ public static function createUser(string $new_user_name, string $email, string $passwordPlain,
+ array $userConfigOverride = [], bool $insertDefaultFeeds = true): bool {
$userConfig = [];
$customUserConfigPath = join_path(DATA_PATH, 'config-user.custom.php');
@@ -265,7 +268,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
$ok &= self::updateUser($new_user_name, $email, $passwordPlain);
}
- return $ok;
+ return (bool)$ok;
}
/**
@@ -281,7 +284,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
* @todo clean up this method. Idea: write a method to init a user with basic information.
* @todo handle r redirection in Minz_Request::forward directly?
*/
- public function createAction() {
+ public function createAction(): void {
if (!FreshRSS_Auth::hasAccess('admin') && max_registrations_reached()) {
Minz_Error::error(403);
}
@@ -380,7 +383,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
Minz_Request::forward($redirect_url, true);
}
- public static function deleteUser($username) {
+ public static function deleteUser(string $username): bool {
$ok = self::checkUsername($username);
if ($ok) {
$default_user = FreshRSS_Context::$system_conf->default_user;
@@ -395,7 +398,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
$ok &= recursive_unlink($user_data);
array_map('unlink', glob(PSHB_PATH . '/feeds/*/' . $username . '.txt'));
}
- return $ok;
+ return (bool)$ok;
}
/**
@@ -415,7 +418,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
*
* It returns 403 if user isn’t logged in and `username` param isn’t passed.
*/
- public function validateEmailAction() {
+ public function validateEmailAction(): void {
if (!FreshRSS_Context::$system_conf->force_email_validation) {
Minz_Error::error(404);
}
@@ -480,7 +483,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
* not POST. Else it redirects silently to the index if user has already
* validated its email, or to the user#validateEmail route.
*/
- public function sendValidationEmailAction() {
+ public function sendValidationEmailAction(): void {
if (!FreshRSS_Auth::hasAccess()) {
Minz_Error::error(403);
}
@@ -524,7 +527,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
*
* @todo clean up this method. Idea: create a User->clean() method.
*/
- public function deleteAction() {
+ public function deleteAction(): void {
$username = Minz_Request::paramString('username');
$self_deletion = Minz_User::name() === $username;
@@ -568,23 +571,23 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
Minz_Request::forward($redirect_url, true);
}
- public function promoteAction() {
+ public function promoteAction(): void {
$this->toggleAction('is_admin', true);
}
- public function demoteAction() {
+ public function demoteAction(): void {
$this->toggleAction('is_admin', false);
}
- public function enableAction() {
+ public function enableAction(): void {
$this->toggleAction('enabled', true);
}
- public function disableAction() {
+ public function disableAction(): void {
$this->toggleAction('enabled', false);
}
- private function toggleAction($field, $value) {
+ private function toggleAction(string $field, bool $value): void {
if (!FreshRSS_Auth::hasAccess('admin')) {
Minz_Error::error(403);
}
@@ -615,7 +618,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
}
}
- public function detailsAction() {
+ public function detailsAction(): void {
if (!FreshRSS_Auth::hasAccess('admin')) {
Minz_Error::error(403);
}
@@ -629,8 +632,8 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
$this->view->details = $this->retrieveUserDetails($username);
}
- /** @return array<string,int|string|bool> */
- private function retrieveUserDetails($username): array {
+ /** @return array{'feed_count':int|false,'article_count':int|false,'database_size':int,'language':string,'mail_login':string,'enabled':bool,'is_admin':bool,'last_user_activity':string,'is_default':bool} */
+ private function retrieveUserDetails(string $username): array {
$feedDAO = FreshRSS_Factory::createFeedDao($username);
$entryDAO = FreshRSS_Factory::createEntryDao($username);
$databaseDAO = FreshRSS_Factory::createDatabaseDAO($username);
diff --git a/tests/phpstan-next.txt b/tests/phpstan-next.txt
index 9c2508c2a..90f26e09c 100644
--- a/tests/phpstan-next.txt
+++ b/tests/phpstan-next.txt
@@ -4,8 +4,6 @@
# Can be regenerated with something like:
# find . -type d -name 'vendor' -prune -o -name '*.php' -exec sh -c 'vendor/bin/phpstan analyse --level 6 --memory-limit 512M {} >/dev/null 2>/dev/null || echo {}' \;
-./app/Controllers/feedController.php
-./app/Controllers/userController.php
./app/install.php
./app/Models/Category.php
./app/Models/CategoryDAO.php