get_prefs_map( $user->user_login );
?>
get_user_repository();
// Save default_access
$access = isset( $_POST['webcal_default_access'] ) && is_string( $_POST['webcal_default_access'] )
? sanitize_text_field( wp_unslash( $_POST['webcal_default_access'] ) )
: 'P';
if ( in_array( $access, [ 'P', 'C', 'R' ], true ) ) {
$user_repo->savePreference( $user->user_login, new UserPreference( 'default_access', $access ) );
}
// Save single_event_pages
$sep = isset( $_POST['webcal_single_event_pages'] ) && is_string( $_POST['webcal_single_event_pages'] )
? sanitize_text_field( wp_unslash( $_POST['webcal_single_event_pages'] ) )
: 'on';
if ( in_array( $sep, [ 'on', 'off' ], true ) ) {
$user_repo->savePreference( $user->user_login, new UserPreference( 'single_event_pages', $sep ) );
}
}
/**
* Get the current preferences as a map with defaults.
*
* @param string $login User login.
* @return array{default_access: string, single_event_pages: string}
*/
private function get_prefs_map( string $login ): array {
$defaults = [
'default_access' => 'P',
'single_event_pages' => 'on',
];
try {
$user_repo = Container::get_instance()->get_user_repository();
$prefs = $user_repo->getPreferences( $login );
foreach ( $prefs as $pref ) {
if ( isset( $defaults[ $pref->key() ] ) ) {
$defaults[ $pref->key() ] = $pref->value();
}
}
} catch ( \Exception $e ) {
// Use defaults on failure
}
return $defaults;
}
}