true, 'signups' => true, 'woocommerce' => true, 'cf7' => true, 'wpforms' => true, 'gravity' => true, 'elementor' => true, 'fluent' => true, 'login' => true, ); public static function all() { $saved = get_option( self::NAME, array() ); $saved = is_array( $saved ) ? $saved : array(); $forms = isset( $saved['forms'] ) && is_array( $saved['forms'] ) ? $saved['forms'] : array(); return array( 'site_key' => isset( $saved['site_key'] ) ? (string) $saved['site_key'] : '', 'secret_key' => isset( $saved['secret_key'] ) ? (string) $saved['secret_key'] : '', 'proxy' => ! empty( $saved['proxy'] ), 'xmlrpc_off' => ! empty( $saved['xmlrpc_off'] ), 'scanners' => ! isset( $saved['scanners'] ) || ! empty( $saved['scanners'] ), 'users' => ! isset( $saved['users'] ) || ! empty( $saved['users'] ), 'versions' => ! isset( $saved['versions'] ) || ! empty( $saved['versions'] ), 'forms' => array_merge( self::FORMS, array_intersect_key( array_map( 'boolval', $forms ), self::FORMS ) ), 'site' => isset( $saved['site'] ) && is_array( $saved['site'] ) ? $saved['site'] : array(), 'proof' => isset( $saved['proof'] ) ? (string) $saved['proof'] : '', ); } public static function get( $key ) { $all = self::all(); return isset( $all[ $key ] ) ? $all[ $key ] : null; } public static function update( array $changes ) { $all = array_merge( self::all(), $changes ); update_option( self::NAME, $all, false ); } public static function connected() { $all = self::all(); return self::valid_site_key( $all['site_key'] ) && self::valid_secret_key( $all['secret_key'] ) && ! self::gone(); } public static function gone() { return (int) get_option( 'rabbitproof_gone', 0 ) > 0; } public static function valid_site_key( $key ) { return is_string( $key ) && 1 === preg_match( '/^pk_live_[0-9a-f]{24}-[0-9]{10}-[A-Za-z0-9_-]{43}$/', $key ); } public static function valid_secret_key( $key ) { return is_string( $key ) && 1 === preg_match( '/^sk_live_[A-Za-z0-9_-]{20,64}$/', $key ); } }