summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/modules/shortcodes/lytro.php')
-rw-r--r--plugins/jetpack/modules/shortcodes/lytro.php296
1 files changed, 0 insertions, 296 deletions
diff --git a/plugins/jetpack/modules/shortcodes/lytro.php b/plugins/jetpack/modules/shortcodes/lytro.php
deleted file mode 100644
index 0e222fda..00000000
--- a/plugins/jetpack/modules/shortcodes/lytro.php
+++ /dev/null
@@ -1,296 +0,0 @@
-<?php
-/**
- * Lytro.com Short Code
- *
- * Format:
- * [lytro photo='202' show_arrow='true' show_border='true' show_first_time_user='true' allow_full_view='true']
- * [lytro username='lytroweb' photo='431119']
- *
- * Legend:
- * username: the lytro.com username for newer embed format
- * photo: the ID or the URL of the photo on lytro.com
- * show_arrow: set to false to force-hide the menu in the lower right (not used in v2)
- * show_border: set to true to force-show the border
- * show_first_time_user: set to false to force-disable the first-time user experience (not used in v2)
- * allow_full_view: set to true to allow an external site to have a full-zoom mode (not used in v2)
- * enable_help: set to false to hide the question mark/help popup
- *
- * Output:
- * <iframe width="400" height="415" src="https://www.lytro.com/living-pictures/202/embed?showArrow=true&showBorder=true&showFTU=true" frameborder="0" allowfullscreen></iframe>
- * <iframe width="400" height="415" src="http://pictures.lytro.com/lytroweb/pictures/431119/embed" frameborder="0" allowfullscreen="" scrolling="no"></iframe>
- */
-
-/**
- * Lytro.com Short Code Attributes Definition
- *
- * This helper function returns an array all available
- * shortcode attributes, their validation method, default
- * value and more.
- *
- * Keys:
- * validate: a callable function or regular expression used to validate the input
- * default: default value for shortcode attribute
- * query_arg: the related lytro query argument name
- *
- * @since 4.5.0
- */
-function jetpack_lytro_shortcode_attributes() {
- return array(
- 'username' => array(
- 'default' => '',
- ),
- 'photo' => array( // could be ID or URL, validated separately
- 'default' => 0,
- ),
- 'width' => array(
- 'validate' => '#^\d+$#',
- 'default' => 400,
- ),
- 'height' => array(
- 'validate' => '#^\d+$#',
- 'default' => 415,
- ),
- 'show_arrow' => array(
- 'query_arg' => 'showArrow',
- 'validate' => '#^(true|false)$#',
- 'default' => 'true',
- ),
- 'show_border' => array(
- 'query_arg' => 'showBorder',
- 'validate' => '#^(true|false)$#',
- 'default' => 'true',
- ),
- 'show_first_time_user' => array(
- 'query_arg' => 'showFTU',
- 'validate' => '#^(true|false)$#',
- 'default' => 'true',
- ),
- 'allow_full_view' => array(
- 'query_arg' => 'allowFullView',
- 'validate' => '#^(true|false)$#',
- 'default' => 'true',
- ),
- 'enable_help' => array(
- 'query_arg' => 'enableHelp',
- 'validate' => '#^(true|false)$#',
- 'default' => 'true',
- ),
- 'enable_attribution' => array(
- 'query_arg' => 'enableAttribution',
- 'validate' => '#^(true|false)$#',
- 'default' => 'true',
- ),
- 'enable_logo' => array(
- 'query_arg' => 'enableLogo',
- 'validate' => '#^(true|false)$#',
- 'default' => 'true',
- ),
- 'enable_fullscreen' => array(
- 'query_arg' => 'enableFullscreen',
- 'validate' => '#^(true|false)$#',
- 'default' => 'true',
- ),
- 'enable_play' => array(
- 'query_arg' => 'enablePlay',
- 'validate' => '#^(true|false)$#',
- 'default' => 'true',
- ),
- 'bg_color' => array(
- 'query_arg' => 'bgColor',
- 'validate' => '/^#(?:[0-9a-fA-F]{3}){1,2}$/',
- 'default' => '',
- ),
- );
-}
-
-/**
- * Lytro.com Shortcode
- *
- * Allows embedding Lytro "living pictures" using [lytro photo="200"] or
- * [lytro photo="http://www.lytro.com/..."]. Additional attributes
- * like show_border, show_arrow, etc have priority over the ones supplied
- * in the URL.
- *
- * @since 4.5.0
- *
- * @param array $atts Shortcode attributes
- *
- * @uses jetpack_lytro_shortcode_attributes()
- * @return string Embed HTML or a <!-- commented out error -->
- */
-function jetpack_lytro_shortcode_handler( $atts ) {
- $defaults = array();
- $attributes = jetpack_lytro_shortcode_attributes();
- foreach ( $attributes as $key => $attribute ) {
- if ( isset( $attribute['default'] ) ) {
- $defaults[ $key ] = $attribute['default'];
- }
- }
-
- $atts = shortcode_atts( $defaults, $atts );
-
- // There has to at least be a photo attribute.
- if ( empty( $atts['photo'] ) ) {
- return '<!-- Lytro Shortcode Error: No Photo ID/URL -->';
- }
-
- // The photo attribute might be a URL
- if ( ! is_numeric( $atts['photo'] ) ) {
- $atts = array_merge( $atts, jetpack_lytro_shortcode_url_to_atts( $atts['photo'] ) );
- }
-
- // Validate all attributes by callable function or regular expression.
- foreach ( $atts as $key => $value ) {
- $attribute = $attributes[ $key ];
- if ( isset( $attribute['validate'] ) ) {
- $validate = $attribute['validate'];
- $valid = is_callable( $validate ) ? call_user_func( $validate, $value ) : preg_match( $validate, $value );
- if ( ! $valid ) {
- $atts[ $key ] = $defaults[ $key ];
- }
- }
- }
-
- // The photo attribute might have changed, make sure it's still valid.
- if ( ! is_numeric( $atts['photo'] ) || ! $atts['photo'] ) {
- return '<!-- Lytro Shortcode Error: Invalid Photo ID/URL -->';
- }
-
- // Build a query which is then appended to the iframe src.
- $query_args = array();
- foreach ( $atts as $key => $value ) {
- $attribute = $attributes[ $key ];
- if ( isset( $attribute['query_arg'] ) && ! empty( $attribute['query_arg'] ) && ! empty( $value ) ) {
- $query_args[ $attribute['query_arg'] ] = $value;
- }
- }
-
- if ( ! empty( $atts['username'] ) ) {
- $src = sprintf( 'https://pictures.lytro.com/%s/pictures/%d/embed', $atts['username'], $atts['photo'] );
- } else {
- $src = sprintf( 'https://pictures.lytro.com/pictures/%d/embed', $atts['photo'] );
- }
-
- // Add query args and build the iframe.
- $src = add_query_arg( $query_args, $src );
-
- return '<iframe width="' . esc_attr( $atts['width'] ) . '" height="' . esc_attr( $atts['height'] ) . '" src="' . esc_url( $src ) . '" frameborder="0" allowfullscreen scrolling="no"></iframe>';
-}
-
-add_shortcode( 'lytro', 'jetpack_lytro_shortcode_handler' );
-
-/**
- * Lytro Shortcode URL to Shortcode Attributes
- *
- * This helper function parses a Lytro.com URL
- * and returns an attributes array.
- *
- * @since 4.5.0
- *
- * @uses jetpack_lytro_shortcode_attributes()
- */
-function jetpack_lytro_shortcode_url_to_atts( $url ) {
- $attributes = jetpack_lytro_shortcode_attributes();
- $atts = array();
-
- $url = str_replace( '&amp;', '&', $url );
-
- if ( preg_match( '#^https?://(www\.)?lytro\.com/living-pictures/([0-9]+)/?#i', $url, $matches ) ) {
- $atts['photo'] = $matches[2];
- } elseif ( preg_match( '#^https?://(www\.)?pictures\.lytro\.com/([^/]+)/pictures/([0-9]+)/?#i', $url, $matches ) ) {
- $atts['username'] = $matches[2];
- $atts['photo'] = $matches[3];
- }
-
- $url = parse_url( $url );
- if ( isset( $url['query'] ) ) {
- parse_str( $url['query'], $qargs );
-
- // Get the attributes with query_args and fill in the $atts array
- foreach ( $attributes as $key => $attribute ) {
- if ( isset( $attribute['query_arg'] ) && in_array( $attribute['query_arg'], array_keys( $qargs ) ) ) {
- $atts[ $key ] = $qargs[ $attribute['query_arg'] ];
- }
- }
- }
-
- return $atts;
-}
-
-/**
- * Lytro Shortcode Reversal
- *
- * Example
- * <iframe width="400" height="415" src="https://www.lytro.com/living-pictures/202/embed?showBorder=true" frameborder="0" allowfullscreen></iframe>
- * <iframe width="400" height="415" src="http://pictures.lytro.com/lytroweb/pictures/431128/embed" frameborder="0" allowfullscreen="" scrolling="no"></iframe>
- *
- * Converts to:
- * [lytro photo="202" show_border="true" width="400" height="415"]
- *
- * @since 4.5.0
- *
- * @uses jetpack_lytro_shortcode_url_to_atts()
- * @uses wpcom_shortcodereverse_parseattr()
- */
-function wpcom_shortcodereverse_lytro( $atts ) {
- $atts = wpcom_shortcodereverse_parseattr( $atts );
- $shortcode_atts = array();
-
- // Grab the src URL and convert to shortcode attributes
- if ( $atts['src'] ) {
- $shortcode_atts = jetpack_lytro_shortcode_url_to_atts( $atts['src'] );
- }
-
- // Width and height too
- if ( $atts['width'] ) {
- $shortcode_atts['width'] = $atts['width'];
- }
- if ( $atts['height'] ) {
- $shortcode_atts['height'] = $atts['height'];
- }
-
- // Generate the shortcode.
- $shortcode = '';
- foreach ( $shortcode_atts as $key => $value ) {
- $shortcode .= " $key='" . esc_attr( $value ) . "'";
- }
- $shortcode = "[lytro {$shortcode}]";
-
- return $shortcode;
-}
-
-Filter_Embedded_HTML_Objects::register( '#^https?://(www\.)?lytro\.com/living-pictures/#i', 'wpcom_shortcodereverse_lytro', true );
-Filter_Embedded_HTML_Objects::register( '#^https?://(www\.)?pictures\.lytro\.com/([^/]+)/pictures/([0-9]+)/embed#i', 'wpcom_shortcodereverse_lytro', true );
-
-/**
- * Register Embed Handler
- *
- * Registers a WordPress Embed handler to allow embedding
- * Lytro images by publishing the Lytro URL on a line by itself.
- *
- * @since 4.5.0
- *
- * @uses wp_embed_register_handler
- */
-function jetpack_lytro_register_embed_handler() {
- wp_embed_register_handler( 'lytro', '#^https?://(www\.)?lytro\.com/living-pictures/([0-9]+)/?#i', 'jetpack_lytro_embed_handler' );
- wp_embed_register_handler( 'lytro-v2', '#^https?://(www\.)?pictures\.lytro\.com/([^/]+)/pictures/([0-9]+)/?#i', 'jetpack_lytro_embed_handler' );
-}
-
-add_action( 'init', 'jetpack_lytro_register_embed_handler' );
-
-/**
- * Lytro Embed Handler
- *
- * The embed handler function which converts a Lytro URL
- * on a line by itself into an embedded Lytro image.
- *
- * @since 4.5.0
- *
- * @see jetpack_lytro_register_embed_handler
- * @uses jetpack_lytro_shortcode_url_to_atts
- * @uses jetpack_lytro_shortcode_handler
- */
-function jetpack_lytro_embed_handler( $matches, $attr, $url, $rawattr ) {
- return jetpack_lytro_shortcode_handler( jetpack_lytro_shortcode_url_to_atts( $url ) );
-}