/** * WP_oEmbed_Controller class, used to provide an oEmbed endpoint. * * @package WordPress * @subpackage Embeds * @since 4.4.0 */ /** * oEmbed API endpoint controller. * * Registers the REST API route and delivers the response data. * The output format (XML or JSON) is handled by the REST API. * * @since 4.4.0 */ #[AllowDynamicProperties] final class WP_oEmbed_Controller { /** * Register the oEmbed REST API route. * * @since 4.4.0 */ public function register_routes() { /** * Filters the maxwidth oEmbed parameter. * * @since 4.4.0 * * @param int $maxwidth Maximum allowed width. Default 600. */ $maxwidth = apply_filters( 'oembed_default_width', 600 ); register_rest_route( 'oembed/1.0', '/embed', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => '__return_true', 'args' => array( 'url' => array( 'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ), 'required' => true, 'type' => 'string', 'format' => 'uri', ), 'format' => array( 'default' => 'json', 'sanitize_callback' => 'wp_oembed_ensure_format', ), 'maxwidth' => array( 'default' => $maxwidth, 'sanitize_callback' => 'absint', ), ), ), ) ); register_rest_route( 'oembed/1.0', '/proxy', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_proxy_item' ), 'permission_callback' => array( $this, 'get_proxy_item_permissions_check' ), 'args' => array( 'url' => array( 'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ), 'required' => true, 'type' => 'string', 'format' => 'uri', ), 'format' => array( 'description' => __( 'The oEmbed format to use.' ), 'type' => 'string', 'default' => 'json', 'enum' => array( 'json', 'xml', ), ), 'maxwidth' => array( 'description' => __( 'The maximum width of the embed frame in pixels.' ), 'type' => 'integer', 'default' => $maxwidth, 'sanitize_callback' => 'absint', ), 'maxheight' => array( 'description' => __( 'The maximum height of the embed frame in pixels.' ), 'type' => 'integer', 'sanitize_callback' => 'absint', ), 'discover' => array( 'description' => __( 'Whether to perform an oEmbed discovery request for unsanctioned providers.' ), 'type' => 'boolean', 'default' => true, ), ), ), ) ); } /** * Callback for the embed API endpoint. * * Returns the JSON object for the post. * * @since 4.4.0 * * @param WP_REST_Request $request Full data about the request. * @return array|WP_Error oEmbed response data or WP_Error on failure. */ public function get_item( $request ) { $post_id = url_to_postid( $request['url'] ); /** * Filters the determined post ID. * * @since 4.4.0 * * @param int $post_id The post ID. * @param string $url The requested URL. */ $post_id = apply_filters( 'oembed_request_post_id', $post_id, $request['url'] ); $data = get_oembed_response_data( $post_id, $request['maxwidth'] ); if ( ! $data ) { return new WP_Error( 'oembed_invalid_url', get_status_header_desc( 404 ), array( 'status' => 404 ) ); } return $data; } /** * Checks if current user can make a proxy oEmbed request. * * @since 4.8.0 * * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_proxy_item_permissions_check() { if ( ! current_user_can( 'edit_posts' ) ) { return new WP_Error( 'rest_forbidden', __( 'Sorry, you are not allowed to make proxied oEmbed requests.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Callback for the proxy API endpoint. * * Returns the JSON object for the proxied item. * * @since 4.8.0 * * @see WP_oEmbed::get_html() * @global WP_Embed $wp_embed WordPress Embed object. * @global WP_Scripts $wp_scripts * * @param WP_REST_Request $request Full data about the request. * @return object|WP_Error oEmbed response data or WP_Error on failure. */ public function get_proxy_item( $request ) { global $wp_embed, $wp_scripts; $args = $request->get_params(); // Serve oEmbed data from cache if set. unset( $args['_wpnonce'] ); $cache_key = 'oembed_' . md5( serialize( $args ) ); $data = get_transient( $cache_key ); if ( ! empty( $data ) ) { return $data; } $url = $request['url']; unset( $args['url'] ); // Copy maxwidth/maxheight to width/height since WP_oEmbed::fetch() uses these arg names. if ( isset( $args['maxwidth'] ) ) { $args['width'] = $args['maxwidth']; } if ( isset( $args['maxheight'] ) ) { $args['height'] = $args['maxheight']; } // Short-circuit process for URLs belonging to the current site. $data = get_oembed_response_data_for_url( $url, $args ); if ( $data ) { return $data; } $data = _wp_oembed_get_object()->get_data( $url, $args ); if ( false === $data ) { // Try using a classic embed, instead. /* @var WP_Embed $wp_embed */ $html = $wp_embed->get_embed_handler_html( $args, $url ); if ( $html ) { // Check if any scripts were enqueued by the shortcode, and include them in the response. $enqueued_scripts = array(); foreach ( $wp_scripts->queue as $script ) { $enqueued_scripts[] = $wp_scripts->registered[ $script ]->src; } return (object) array( 'provider_name' => __( 'Embed Handler' ), 'html' => $html, 'scripts' => $enqueued_scripts, ); } return new WP_Error( 'oembed_invalid_url', get_status_header_desc( 404 ), array( 'status' => 404 ) ); } /** This filter is documented in wp-includes/class-wp-oembed.php */ $data->html = apply_filters( 'oembed_result', _wp_oembed_get_object()->data2html( (object) $data, $url ), $url, $args ); /** * Filters the oEmbed TTL value (time to live). * * Similar to the {@see 'oembed_ttl'} filter, but for the REST API * oEmbed proxy endpoint. * * @since 4.8.0 * * @param int $time Time to live (in seconds). * @param string $url The attempted embed URL. * @param array $args An array of embed request arguments. */ $ttl = apply_filters( 'rest_oembed_ttl', DAY_IN_SECONDS, $url, $args ); set_transient( $cache_key, $data, $ttl ); return $data; } } Online eller offline vilket typ av spelande ger bäst upplevelse -

Online eller offline vilket typ av spelande ger bäst upplevelse

Online eller offline vilket typ av spelande ger bäst upplevelse

Fördelar med online spelande

Online spelande erbjuder en oöverträffad bekvämlighet. Spelare kan delta i sina favoritspel var som helst och när som helst, bara med en internetanslutning. Det är enkelt att se fördelarna med att välja att spela på ett online casino, eftersom detta innebär att du inte behöver resa till ett fysiskt kasino eller en spelhall, vilket sparar tid och resurser. Dessutom finns det ofta fler speltitlar och variationer online än vad som finns tillgängligt offline.

En annan stor fördel är den sociala aspekten. Många online casinon har funktioner som låter spelare interagera med varandra genom chattar och turneringar. Detta skapar en känsla av gemenskap, som många spelare saknar när de spelar offline. Genom att utnyttja dessa funktioner kan spelare dela erfarenheter och strategier, vilket berikar spelupplevelsen ytterligare.

Nackdelar med online spelande

Trots fördelarna finns det också nackdelar med online spelande. En av de största riskerna är avståndet mellan spelaren och spelet, vilket kan leda till impulsiva beslut. Utan fysisk närvaro kan spelare lätt förlora kontrollen över sina spelvanor och överskrida sina budgetar. Dessutom är det lättare att bli distraherad av andra aktiviteter när man spelar online, vilket kan påverka fokus och beslutsfattande.

Säkerhetsfrågor är också en viktig aspekt att beakta. Även om många online casinon har robusta säkerhetsåtgärder, finns det alltid en risk för bedrägeri och identitetsstöld. Detta gör det avgörande för spelare att noga välja plattformar och vara medvetna om sina rättigheter och ansvar.

Fördelar med offline spelande

Offline spelande erbjuder en unik upplevelse som ofta inte kan replikeras online. Att besöka ett kasino eller en spelhall ger en social atmosfär där man kan träffa andra spelare ansikte mot ansikte. Denna interaktion kan förstärka nöjet och spänningen i spelandet. Många spelare uppskattar den fysiska upplevelsen av att satsa och se korten eller tärningarna rulla i verkligheten.

En annan fördel är att offline spelande ofta ger en bättre känsla av kontroll. Spelare kan se sina insatser och resultat i realtid, vilket kan göra det lättare att hålla sig till en budget. Den fysiska närvaron kan också minska risken för distraktioner, vilket kan leda till mer fokuserade och strategiska beslut.

Nackdelar med offline spelande

Trots de många fördelarna med offline spelande finns det också nackdelar. En av de mest påtagliga är begränsningarna i tid och plats. Spelare måste resa till kasinot eller spelhallen, vilket kan ta tid och kostnader för transport. Dessutom kan det vara svårt att hitta spelställen som erbjuder de specifika spelen man är intresserad av.

En annan nackdel är att offline spelande ofta saknar flexibiliteten och variationen som online spelande erbjuder. Många spelare kan känna sig begränsade av de spelalternativ som finns tillgängliga i en fysisk miljö. Detta kan leda till att de missar ut på nya och spännande spelupplevelser som erbjuds online.

AirServer och spelupplevelsen

AirServer erbjuder en plattform som kan förbättra spelupplevelsen, oavsett om du spelar online eller offline. Med möjligheten att strömma och spegla innehåll från enheter till större skärmar, kan spelare njuta av sina favoritspel på ett mer engagerande sätt. Detta kan vara särskilt användbart för spelgrupper som vill dela upplevelser och strategier i realtid.

Genom att använda AirServer kan spelare förvandla sina hemmamiljöer till en interaktiv spelarena, vilket gör det enklare att samla vänner och delta i gemensamma spelupplevelser. Oavsett om du väljer att spela online eller offline, kan AirServer bidra till att göra varje spelstund minnesvärd.

Leave a Reply

Your email address will not be published. Required fields are marked *