$mark_when * @property int $max_posts_per_rss * @property-read array $limits * @property int|null $old_entries * @property bool $onread_jump_next * @property string $passwordHash * @property int $posts_per_page * @property array $queries * @property bool $reading_confirm * @property int $since_hours_posts_per_rss * @property bool $show_fav_unread * @property bool $show_favicons * @property bool $icons_as_emojis * @property int $simplify_over_n_feeds * @property bool $show_nav_buttons * @property 'ASC'|'DESC' $sort_order * @property array> $sharing * @property array $shortcuts * @property bool $sides_close_article * @property bool $sticky_post * @property string $theme * @property string $darkMode * @property string $token * @property bool $topline_date * @property bool $topline_display_authors * @property bool $topline_favorite * @property bool $topline_sharing * @property bool $topline_link * @property bool $topline_read * @property bool $topline_summary * @property string $topline_website * @property string $topline_thumbnail * @property int $ttl_default * @property int $dynamic_opml_ttl_default * @property-read bool $unsafe_autologin_enabled * @property string $view_mode * @property array $volatile * @property array> $extensions */ final class FreshRSS_UserConfiguration extends Minz_Configuration { use FreshRSS_FilterActionsTrait; /** @throws Minz_FileNotExistException */ public static function init(string $config_filename, ?string $default_filename = null): FreshRSS_UserConfiguration { parent::register('user', $config_filename, $default_filename); try { return parent::get('user'); } catch (Minz_ConfigurationNamespaceException $ex) { FreshRSS::killApp($ex->getMessage()); } } /** * Access the default configuration for users. * @throws Minz_FileNotExistException */ public static function default(): FreshRSS_UserConfiguration { static $default_user_conf = null; if ($default_user_conf == null) { $namespace = 'user_default'; FreshRSS_UserConfiguration::register($namespace, '_', FRESHRSS_PATH . '/config-user.default.php'); $default_user_conf = FreshRSS_UserConfiguration::get($namespace); } return $default_user_conf; } /** * @param non-empty-string $key * @return array|null */ public function attributeArray(string $key): ?array { $a = parent::param($key, null); return is_array($a) ? $a : null; } /** @param non-empty-string $key */ public function attributeBool(string $key): ?bool { $a = parent::param($key, null); return is_bool($a) ? $a : null; } /** @param non-empty-string $key */ public function attributeInt(string $key): ?int { $a = parent::param($key, null); return is_numeric($a) ? (int)$a : null; } /** @param non-empty-string $key */ public function attributeString(string $key): ?string { $a = parent::param($key, null); return is_string($a) ? $a : null; } /** * @param non-empty-string $key * @param array|mixed|null $value Value, not HTML-encoded */ public function _attribute(string $key, $value = null): void { parent::_param($key, $value); } }