s?://v\.wordpress\.com/([a-zA-Z\d]{8})(.+)?$|i', 'https://public-api.wordpress.com/oembed/?for=' . $host, true ); // phpcs:ignore WordPress.WP.CapitalPDangit.MisspelledInText add_filter( 'embed_oembed_html', array( __CLASS__, 'video_enqueue_bridge_when_oembed_present' ), 10, 4 ); } /** * Enqueues VideoPress token bridge when a VideoPress oembed is present on the current page. * * @param string|false $cache The cached HTML result, stored in post meta. * @param string $url The attempted embed URL. * @param array $attr An array of shortcode attributes. * @param int $post_ID Post ID. * * @return string|false */ public static function video_enqueue_bridge_when_oembed_present( $cache, $url, $attr, $post_ID ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable if ( Utils::is_videopress_url( $url ) ) { Jwt_Token_Bridge::enqueue_jwt_token_bridge(); } return $cache; } /** * Register all VideoPress blocks * * @return void */ public static function register_videopress_blocks() { // Register VideoPress Video block. self::register_videopress_video_block(); } /** * VideoPress video block render method * * @param array $block_attributes - Block attributes. * @param string $content - Current block markup. * @param WP_Block $block - Current block. * * @return string Block markup. */ public static function render_videopress_video_block( $block_attributes, $content, $block ) { global $wp_embed; // CSS classes $align = isset( $block_attributes['align'] ) ? $block_attributes['align'] : null; $align_class = $align ? ' align' . $align : ''; $custom_class = isset( $block_attributes['className'] ) ? ' ' . $block_attributes['className'] : ''; $classes = 'wp-block-jetpack-videopress jetpack-videopress-player' . $custom_class . $align_class; // Inline style $style = ''; $max_width = isset( $block_attributes['maxWidth'] ) ? $block_attributes['maxWidth'] : null; if ( $max_width && $max_width !== '100%' ) { $style = sprintf( 'max-width: %s; margin: auto;', $max_width ); } /* *
element * Caption is stored into the block attributes, * but also it was stored into the
element, * meaning that it could be stored in two different places. */ $figcaption = ''; // Caption from block attributes $caption = isset( $block_attributes['caption'] ) ? $block_attributes['caption'] : null; /* * If the caption is not stored into the block attributes, * try to get it from the
element. */ if ( $caption === null ) { preg_match( '/
(.*?)<\/figcaption>/', $content, $matches ); $caption = isset( $matches[1] ) ? $matches[1] : null; } // If we have a caption, create the
element. if ( $caption !== null ) { $figcaption = sprintf( '
%s
', wp_kses_post( $caption ) ); } // Custom anchor from block content $id_attribute = ''; // Try to get the custom anchor from the block attributes. if ( isset( $block_attributes['anchor'] ) && $block_attributes['anchor'] ) { $id_attribute = sprintf( 'id="%s"', esc_attr( $block_attributes['anchor'] ) ); } elseif ( preg_match( '/]*id="([^"]+)"/', $content, $matches ) ) { // Othwerwise, try to get the custom anchor from the
element. $id_attribute = sprintf( 'id="%s"', $matches[1] ); } // Preview On Hover data $is_poh_enabled = isset( $block_attributes['posterData']['previewOnHover'] ) && $block_attributes['posterData']['previewOnHover']; $autoplay = isset( $block_attributes['autoplay'] ) ? $block_attributes['autoplay'] : false; $controls = isset( $block_attributes['controls'] ) ? $block_attributes['controls'] : false; $poster = isset( $block_attributes['posterData']['url'] ) ? $block_attributes['posterData']['url'] : null; $preview_on_hover = ''; if ( $is_poh_enabled ) { $preview_on_hover = array( 'previewAtTime' => $block_attributes['posterData']['previewAtTime'], 'previewLoopDuration' => $block_attributes['posterData']['previewLoopDuration'], 'autoplay' => $autoplay, 'showControls' => $controls, ); // Create inlione style in case video has a custom poster. $inline_style = ''; if ( $poster ) { $inline_style = sprintf( 'style="background-image: url(%s); background-size: cover; background-position: center center;"', esc_attr( $poster ) ); } // Expose the preview on hover data to the client. $preview_on_hover = sprintf( '
', $inline_style, wp_json_encode( $preview_on_hover ) ); // Set `autoplay` and `muted` attributes to the video element. $block_attributes['autoplay'] = true; $block_attributes['muted'] = true; } $figure_template = '
%4$s %5$s %6$s
'; // VideoPress URL $guid = isset( $block_attributes['guid'] ) ? $block_attributes['guid'] : null; $videopress_url = Utils::get_video_press_url( $guid, $block_attributes ); $video_wrapper = ''; $video_wrapper_classes = 'jetpack-videopress-player__wrapper'; if ( $videopress_url ) { $videopress_url = wp_kses_post( $videopress_url ); $oembed_html = apply_filters( 'video_embed_html', $wp_embed->shortcode( array(), $videopress_url ) ); $video_wrapper = sprintf( '
%s %s
', $video_wrapper_classes, $preview_on_hover, $oembed_html ); } // Get premium content from block context $premium_block_plan_id = isset( $block->context['premium-content/planId'] ) ? intval( $block->context['premium-content/planId'] ) : 0; $is_premium_content_child = isset( $block->context['isPremiumContentChild'] ) ? (bool) $block->context['isPremiumContentChild'] : false; $maybe_premium_script = ''; if ( $is_premium_content_child ) { Access_Control::instance()->set_guid_subscription( $guid, $premium_block_plan_id ); $escaped_guid = esc_js( $guid ); $script_content = "if ( ! window.__guidsToPlanIds ) { window.__guidsToPlanIds = {}; }; window.__guidsToPlanIds['$escaped_guid'] = $premium_block_plan_id;"; $maybe_premium_script = ''; } // $id_attribute, $video_wrapper, $figcaption properly escaped earlier on the code return sprintf( $figure_template, esc_attr( $classes ), esc_attr( $style ), $id_attribute, $video_wrapper, $figcaption, $maybe_premium_script ); } /** * Register the VideoPress block editor block, * AKA "VideoPress Block v6". * * @return void */ public static function register_videopress_video_block() { $videopress_video_metadata_file = __DIR__ . '/../build/block-editor/blocks/video/block.json'; $videopress_video_metadata_file_exists = file_exists( $videopress_video_metadata_file ); if ( ! $videopress_video_metadata_file_exists ) { return; } $videopress_video_metadata = json_decode( // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents file_get_contents( $videopress_video_metadata_file ) ); // Pick the block name straight from the block metadata .json file. $videopress_video_block_name = $videopress_video_metadata->name; // Is the block already registered? $is_block_registered = \WP_Block_Type_Registry::get_instance()->is_registered( $videopress_video_block_name ); // Do not register if the block is already registered. if ( $is_block_registered ) { return; } // Is this a REST API request? $is_rest = defined( 'REST_API_REQUEST' ) && REST_API_REQUEST; if ( $is_rest ) { register_block_type( $videopress_video_metadata_file, array( 'render_callback' => array( __CLASS__, 'render_videopress_video_block' ), ) ); return; } $registration = register_block_type( $videopress_video_metadata_file, array( 'render_callback' => array( __CLASS__, 'render_videopress_video_block' ), 'uses_context' => array( 'premium-content/planId', 'isPremiumContentChild', 'selectedPlanId' ), ) ); // Do not enqueue scripts if the block could not be registered. if ( empty( $registration ) || empty( $registration->editor_script_handles ) ) { return; } // Extensions use Connection_Initial_State::render_script with script handle as parameter. if ( is_array( $registration->editor_script_handles ) ) { $script_handle = $registration->editor_script_handles[0]; } else { $script_handle = $registration->editor_script_handles; } // Register and enqueue scripts used by the VideoPress video block. Block_Editor_Extensions::init( $script_handle ); } /** * Enqueue the VideoPress Iframe API script * when the URL of oEmbed HTML is a VideoPress URL. * * @param string|false $cache The cached HTML result, stored in post meta. * @param string $url The attempted embed URL. * @param array $attr An array of shortcode attributes. * @param int $post_ID Post ID. * * @return string|false */ public static function enqueue_videopress_iframe_api_script( $cache, $url, $attr, $post_ID ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable if ( Utils::is_videopress_url( $url ) ) { // Enqueue the VideoPress IFrame API in the front-end. wp_enqueue_script( self::JETPACK_VIDEOPRESS_IFRAME_API_HANDLER, 'https://s0.wp.com/wp-content/plugins/video/assets/js/videojs/videopress-iframe-api.js', array(), gmdate( 'YW' ), false ); } return $cache; } } s?://v\.wordpress\.com/([a-zA-Z\d]{8})(.+)?$|i', 'https://public-api.wordpress.com/oembed/?for=' . $host, true ); // phpcs:ignore WordPress.WP.CapitalPDangit.MisspelledInText add_filter( 'embed_oembed_html', array( __CLASS__, 'video_enqueue_bridge_when_oembed_present' ), 10, 4 ); } /** * Enqueues VideoPress token bridge when a VideoPress oembed is present on the current page. * * @param string|false $cache The cached HTML result, stored in post meta. * @param string $url The attempted embed URL. * @param array $attr An array of shortcode attributes. * @param int $post_ID Post ID. * * @return string|false */ public static function video_enqueue_bridge_when_oembed_present( $cache, $url, $attr, $post_ID ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable if ( Utils::is_videopress_url( $url ) ) { Jwt_Token_Bridge::enqueue_jwt_token_bridge(); } return $cache; } /** * Register all VideoPress blocks * * @return void */ public static function register_videopress_blocks() { // Register VideoPress Video block. self::register_videopress_video_block(); } /** * VideoPress video block render method * * @param array $block_attributes - Block attributes. * @param string $content - Current block markup. * @param WP_Block $block - Current block. * * @return string Block markup. */ public static function render_videopress_video_block( $block_attributes, $content, $block ) { global $wp_embed; // CSS classes $align = isset( $block_attributes['align'] ) ? $block_attributes['align'] : null; $align_class = $align ? ' align' . $align : ''; $custom_class = isset( $block_attributes['className'] ) ? ' ' . $block_attributes['className'] : ''; $classes = 'wp-block-jetpack-videopress jetpack-videopress-player' . $custom_class . $align_class; // Inline style $style = ''; $max_width = isset( $block_attributes['maxWidth'] ) ? $block_attributes['maxWidth'] : null; if ( $max_width && $max_width !== '100%' ) { $style = sprintf( 'max-width: %s; margin: auto;', $max_width ); } /* *
element * Caption is stored into the block attributes, * but also it was stored into the
element, * meaning that it could be stored in two different places. */ $figcaption = ''; // Caption from block attributes $caption = isset( $block_attributes['caption'] ) ? $block_attributes['caption'] : null; /* * If the caption is not stored into the block attributes, * try to get it from the
element. */ if ( $caption === null ) { preg_match( '/
(.*?)<\/figcaption>/', $content, $matches ); $caption = isset( $matches[1] ) ? $matches[1] : null; } // If we have a caption, create the
element. if ( $caption !== null ) { $figcaption = sprintf( '
%s
', wp_kses_post( $caption ) ); } // Custom anchor from block content $id_attribute = ''; // Try to get the custom anchor from the block attributes. if ( isset( $block_attributes['anchor'] ) && $block_attributes['anchor'] ) { $id_attribute = sprintf( 'id="%s"', esc_attr( $block_attributes['anchor'] ) ); } elseif ( preg_match( '/]*id="([^"]+)"/', $content, $matches ) ) { // Othwerwise, try to get the custom anchor from the
element. $id_attribute = sprintf( 'id="%s"', $matches[1] ); } // Preview On Hover data $is_poh_enabled = isset( $block_attributes['posterData']['previewOnHover'] ) && $block_attributes['posterData']['previewOnHover']; $autoplay = isset( $block_attributes['autoplay'] ) ? $block_attributes['autoplay'] : false; $controls = isset( $block_attributes['controls'] ) ? $block_attributes['controls'] : false; $poster = isset( $block_attributes['posterData']['url'] ) ? $block_attributes['posterData']['url'] : null; $preview_on_hover = ''; if ( $is_poh_enabled ) { $preview_on_hover = array( 'previewAtTime' => $block_attributes['posterData']['previewAtTime'], 'previewLoopDuration' => $block_attributes['posterData']['previewLoopDuration'], 'autoplay' => $autoplay, 'showControls' => $controls, ); // Create inlione style in case video has a custom poster. $inline_style = ''; if ( $poster ) { $inline_style = sprintf( 'style="background-image: url(%s); background-size: cover; background-position: center center;"', esc_attr( $poster ) ); } // Expose the preview on hover data to the client. $preview_on_hover = sprintf( '
', $inline_style, wp_json_encode( $preview_on_hover ) ); // Set `autoplay` and `muted` attributes to the video element. $block_attributes['autoplay'] = true; $block_attributes['muted'] = true; } $figure_template = '
%4$s %5$s %6$s
'; // VideoPress URL $guid = isset( $block_attributes['guid'] ) ? $block_attributes['guid'] : null; $videopress_url = Utils::get_video_press_url( $guid, $block_attributes ); $video_wrapper = ''; $video_wrapper_classes = 'jetpack-videopress-player__wrapper'; if ( $videopress_url ) { $videopress_url = wp_kses_post( $videopress_url ); $oembed_html = apply_filters( 'video_embed_html', $wp_embed->shortcode( array(), $videopress_url ) ); $video_wrapper = sprintf( '
%s %s
', $video_wrapper_classes, $preview_on_hover, $oembed_html ); } // Get premium content from block context $premium_block_plan_id = isset( $block->context['premium-content/planId'] ) ? intval( $block->context['premium-content/planId'] ) : 0; $is_premium_content_child = isset( $block->context['isPremiumContentChild'] ) ? (bool) $block->context['isPremiumContentChild'] : false; $maybe_premium_script = ''; if ( $is_premium_content_child ) { Access_Control::instance()->set_guid_subscription( $guid, $premium_block_plan_id ); $escaped_guid = esc_js( $guid ); $script_content = "if ( ! window.__guidsToPlanIds ) { window.__guidsToPlanIds = {}; }; window.__guidsToPlanIds['$escaped_guid'] = $premium_block_plan_id;"; $maybe_premium_script = ''; } // $id_attribute, $video_wrapper, $figcaption properly escaped earlier on the code return sprintf( $figure_template, esc_attr( $classes ), esc_attr( $style ), $id_attribute, $video_wrapper, $figcaption, $maybe_premium_script ); } /** * Register the VideoPress block editor block, * AKA "VideoPress Block v6". * * @return void */ public static function register_videopress_video_block() { $videopress_video_metadata_file = __DIR__ . '/../build/block-editor/blocks/video/block.json'; $videopress_video_metadata_file_exists = file_exists( $videopress_video_metadata_file ); if ( ! $videopress_video_metadata_file_exists ) { return; } $videopress_video_metadata = json_decode( // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents file_get_contents( $videopress_video_metadata_file ) ); // Pick the block name straight from the block metadata .json file. $videopress_video_block_name = $videopress_video_metadata->name; // Is the block already registered? $is_block_registered = \WP_Block_Type_Registry::get_instance()->is_registered( $videopress_video_block_name ); // Do not register if the block is already registered. if ( $is_block_registered ) { return; } // Is this a REST API request? $is_rest = defined( 'REST_API_REQUEST' ) && REST_API_REQUEST; if ( $is_rest ) { register_block_type( $videopress_video_metadata_file, array( 'render_callback' => array( __CLASS__, 'render_videopress_video_block' ), ) ); return; } $registration = register_block_type( $videopress_video_metadata_file, array( 'render_callback' => array( __CLASS__, 'render_videopress_video_block' ), 'uses_context' => array( 'premium-content/planId', 'isPremiumContentChild', 'selectedPlanId' ), ) ); // Do not enqueue scripts if the block could not be registered. if ( empty( $registration ) || empty( $registration->editor_script_handles ) ) { return; } // Extensions use Connection_Initial_State::render_script with script handle as parameter. if ( is_array( $registration->editor_script_handles ) ) { $script_handle = $registration->editor_script_handles[0]; } else { $script_handle = $registration->editor_script_handles; } // Register and enqueue scripts used by the VideoPress video block. Block_Editor_Extensions::init( $script_handle ); } /** * Enqueue the VideoPress Iframe API script * when the URL of oEmbed HTML is a VideoPress URL. * * @param string|false $cache The cached HTML result, stored in post meta. * @param string $url The attempted embed URL. * @param array $attr An array of shortcode attributes. * @param int $post_ID Post ID. * * @return string|false */ public static function enqueue_videopress_iframe_api_script( $cache, $url, $attr, $post_ID ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable if ( Utils::is_videopress_url( $url ) ) { // Enqueue the VideoPress IFrame API in the front-end. wp_enqueue_script( self::JETPACK_VIDEOPRESS_IFRAME_API_HANDLER, 'https://s0.wp.com/wp-content/plugins/video/assets/js/videojs/videopress-iframe-api.js', array(), gmdate( 'YW' ), false ); } return $cache; } } Coffee Lovers Gift Bundle| Doubleshot Coffee

Coffee Lovers Gift Bundle

Sometimes you do everything right but it’s still not good enough. No more begging and going the extra mile, now you can bribe your way into the good books with a DOUBLESHOT COFEE GIFT SET.

Gift bundle contains:

1 x Hario or Gator V60 2 cup pour over cone.

100 Hario #2 unbleached filter papers

1 x 200 gm CityBlend Coffee

1 x Bottle of artisanal flavour syrup

PLEASE NOTE, THIS PRODUCT IS LIMITED TO AVAILABILTY.

R480.00

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

0
    0
    Your Cart
    Your cart is emptyReturn to Shop