diff options
Diffstat (limited to 'app/Controllers/configureController.php')
| -rw-r--r-- | app/Controllers/configureController.php | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php index 55fd48393..5a60daa55 100644 --- a/app/Controllers/configureController.php +++ b/app/Controllers/configureController.php @@ -176,10 +176,17 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController { FreshRSS_View::appendScript(Minz_Url::display('/scripts/draggable.js?' . @filemtime(PUBLIC_PATH . '/scripts/draggable.js'))); if (Minz_Request::isPost()) { - $params = $_POST; - FreshRSS_Context::userConf()->sharing = $params['share']; - FreshRSS_Context::userConf()->save(); - invalidateHttpCache(); + $share = $_POST['share'] ?? null; + if (is_array($share)) { + $share = array_filter($share, fn($value, $key): bool => + is_string($key) && is_array($value) && + is_array_values_string($value), + ARRAY_FILTER_USE_BOTH); + /** @var array<string,array<string,string>> $share */ + FreshRSS_Context::userConf()->sharing = $share; + FreshRSS_Context::userConf()->save(); + invalidateHttpCache(); + } Minz_Request::good(_t('feedback.conf.updated'), [ 'c' => 'configure', 'a' => 'integration' ]); } @@ -308,7 +315,7 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController { FreshRSS_View::appendScript(Minz_Url::display('/scripts/draggable.js?' . @filemtime(PUBLIC_PATH . '/scripts/draggable.js'))); if (Minz_Request::isPost()) { - /** @var array<int,array{'get'?:string,'name'?:string,'order'?:string,'search'?:string,'state'?:int,'url'?:string,'token'?:string}> $params */ + /** @var array<int,array{get?:string,name?:string,order?:string,search?:string,state?:int,url?:string,token?:string}> $params */ $params = Minz_Request::paramArray('queries'); $queries = []; @@ -390,7 +397,7 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController { $queryParams['search'] = htmlspecialchars_decode($params['search'], ENT_QUOTES); } if (!empty($params['state']) && is_array($params['state'])) { - $queryParams['state'] = (int)array_sum($params['state']); + $queryParams['state'] = (int)array_sum(array_map('intval', $params['state'])); } if (empty($params['token']) || !is_string($params['token'])) { $queryParams['token'] = FreshRSS_UserQuery::generateToken($name); @@ -453,9 +460,10 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController { foreach (FreshRSS_Context::userConf()->queries as $key => $query) { $queries[$key] = (new FreshRSS_UserQuery($query, FreshRSS_Context::categories(), FreshRSS_Context::labels()))->toArray(); } - $params = $_GET; + $params = array_filter($_GET, 'is_string', ARRAY_FILTER_USE_KEY); unset($params['name']); unset($params['rid']); + /** @var array{get?:string,name?:string,order?:string,search?:string,state?:int,url?:string,token?:string,shareRss?:bool,shareOpml?:bool,description?:string,imageUrl?:string} $params */ $params['url'] = Minz_Url::display(['params' => $params]); $params['name'] = _t('conf.query.number', count($queries) + 1); $queries[] = (new FreshRSS_UserQuery($params, FreshRSS_Context::categories(), FreshRSS_Context::labels()))->toArray(); |
