'', 'fromEmail' => '', 'rateLimit' => 10, 'keepDays' => 0, 'deleteOnUninstall' => false, ) ); } /** * All settings. * * @return array */ public static function all() { $saved = get_option( self::OPTION, array() ); return array_merge( self::defaults(), is_array( $saved ) ? $saved : array() ); } /** * One setting. * * @param string $key Key. * @return mixed */ public static function get( $key ) { $all = self::all(); return isset( $all[ $key ] ) ? $all[ $key ] : null; } /** * Sanitize and save. * * @param array $raw Raw values. * @return array Saved settings. */ public static function save( array $raw ) { $current = self::all(); $raw = array_merge( $current, $raw ); $clean = array( 'fromName' => is_scalar( $raw['fromName'] ) ? sanitize_text_field( (string) $raw['fromName'] ) : '', 'fromEmail' => is_scalar( $raw['fromEmail'] ) ? (string) sanitize_email( (string) $raw['fromEmail'] ) : '', 'rateLimit' => max( 0, min( 1000, (int) $raw['rateLimit'] ) ), 'keepDays' => max( 0, min( 3650, (int) $raw['keepDays'] ) ), 'deleteOnUninstall' => (bool) $raw['deleteOnUninstall'], ); /** * Filters sanitized global settings. Add-ons sanitize their own keys. * * @param array $clean Clean core settings. * @param array $raw Raw values merged with current settings. */ $clean = (array) apply_filters( 'fillaro/sanitize_settings', $clean, $raw ); update_option( self::OPTION, $clean, false ); return $clean; } }