$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 'big'|'small'|'none' $mark_read_button * @property 'ASC'|'DESC' $sort_order * @property 'id'|'c.name'|'date'|'f.name'|'link'|'title'|'rand'|'length' $sort * @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_myLabels * @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 string $view_mode * @property array $volatile * @property array> $extensions * @property bool $retrieve_extension_list */ 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 { /** @var FreshRSS_UserConfiguration|null $default_user_conf */ 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; } /** * Register and return the configuration for a given user. * * Note this function has been created to generate temporary configuration * objects. If you need a long-time configuration, please don't use this function. * * @param string $username the name of the user of which we want the configuration. * @return FreshRSS_UserConfiguration|null object, or null if the configuration cannot be loaded. * @throws Minz_ConfigurationNamespaceException */ public static function getForUser(string $username): ?FreshRSS_UserConfiguration { if (!FreshRSS_user_Controller::checkUsername($username)) { return null; } $namespace = 'user_' . $username; try { FreshRSS_UserConfiguration::register($namespace, USERS_PATH . '/' . $username . '/config.php', FRESHRSS_PATH . '/config-user.default.php'); } catch (Minz_FileNotExistException $e) { Minz_Log::warning($e->getMessage(), ADMIN_LOG); return null; } $user_conf = FreshRSS_UserConfiguration::get($namespace); return $user_conf; } }