/var/www/hkosl.com/aga/wp-content/plugins/jetpack/modules/shortcodes/kickstarter.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
/**
 * Kickstarter shortcode
 *
 * Usage:
 * [kickstarter url="https://www.kickstarter.com/projects/peaktoplateau/yak-wool-baselayers-from-tibet-to-the-world" width="480" height=""]
 *
 * @package Jetpack
 */

add_shortcode'kickstarter''jetpack_kickstarter_shortcode' );
add_filter'pre_kses''jetpack_kickstarter_embed_to_shortcode' );

/**
 * Parse shortcode arguments and render its output.
 *
 * @since 4.5.0
 *
 * @param array $atts Shortcode parameters.
 *
 * @return string
 */
function jetpack_kickstarter_shortcode$atts ) {
    if ( empty( 
$atts['url'] ) ) {
        return 
'';
    }

    
$url esc_url_raw$atts['url'] );
    if ( ! 
preg_match'#^(www\.)?kickstarter\.com$#i'wp_parse_url$urlPHP_URL_HOST ) ) ) {
        return 
'<!-- Invalid Kickstarter URL -->';
    }

    global 
$wp_embed;
    return 
$wp_embed->shortcode$atts$url );
}

/**
 * Converts Kickstarter iframe embeds to a shortcode.
 *
 * EG: <iframe width="480" height="360" src="http://www.kickstarter.com/projects/deweymac/dewey-mac-kid-detective-book-make-diy-and-stem-spy/widget/video.html" frameborder="0" scrolling="no"> </iframe>
 *
 * @since 4.5.0
 *
 * @param string $content Entry content that possibly includes a Kickstarter embed.
 *
 * @return string
 */
function jetpack_kickstarter_embed_to_shortcode$content ) {
    if ( ! 
is_string$content ) || false === stripos$content'www.kickstarter.com/projects' ) ) {
        return 
$content;
    }

    
$regexp     '!<iframe((?:\s+\w+=[\'"][^\'"]*[\'"])*)\s+src=[\'"](http://www\.kickstarter\.com/projects/[^/]+/[^/]+)/[^\'"]+[\'"]((?:\s+\w+=[\'"][^\'"]*[\'"])*)>[\s]*</iframe>!i';
    
$regexp_ent str_replace'&amp;#0*58;''&amp;#0*58;|&#0*58;'htmlspecialchars$regexpENT_NOQUOTES ) ); // phpcs:ignore

    
foreach ( array( 'regexp''regexp_ent' ) as $reg ) {
        if ( ! 
preg_match_all( $$reg$content$matchesPREG_SET_ORDER ) ) {
            continue;
        }

        foreach ( 
$matches as $match ) {
            
$url esc_url$match[2] );

            
$params $match[1] . $match[3];

            if ( 
'regexp_ent' === $reg ) {
                
$params html_entity_decode$params );
            }

            
$params wp_kses_hair$params, array( 'http' ) );

            
$width = isset( $params['width'] ) ? (int) $params['width']['value'] : 0;

            
$shortcode '[kickstarter url=' $url . ( ( ! empty( $width ) ) ? " width=$width'' ) . ']';
            
$content   str_replace$match[0], $shortcode$content );
        }
    }

    return 
$content;
}