PluginProbe
iframe / trunk
iframe vtrunk
trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7 1.8 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 4.1 4.2 4.3 All 35 releases
← All changes | iframe.php +93 -69 1.7trunk View file →
@@ -1,80 +1,104 @@
1 1 <?php
2 2 /*
3 -Plugin Name: Iframe
4 -Plugin URI: http://web-profile.com.ua/wordpress/plugins/iframe/
5 -Description: Plugin shows iframe with [iframe src="http://player.vimeo.com/video/3261363" width="100%" height="480"] shortcode.
6 -Version: 1.7
3 +Plugin Name: iframe
4 +Plugin URI: http://wordpress.org/plugins/iframe/
5 +Description: [iframe src="http://www.youtube.com/embed/7_nAZQt9qu0" width="100%" height="500"] shortcode
6 +Version: 6.0
7 7 Author: webvitaly
8 -Author Email: webvitaly(at)gmail.com
9 -Author URI: http://web-profile.com.ua/wordpress/
8 +Author URI: http://web-profile.net/wordpress/plugins/
9 +License: GPLv3
10 10 */
11 11
12 -if ( !function_exists( 'iframe_embed_shortcode' ) ) :
12 +if ( ! defined( 'ABSPATH' ) ) { // Avoid direct calls to this file and prevent full path disclosure
13 + exit;
14 +}
13 15
14 - function iframe_enqueue_script() {
15 - wp_enqueue_script( 'jquery' );
16 +define('IFRAME_PLUGIN_VERSION', '6.0');
17 +
18 +// Load settings page functionality
19 +require_once( plugin_dir_path( __FILE__ ) . 'iframe-settings.php' );
20 +
21 +
22 +function iframe_plugin_add_shortcode_cb( $atts ) {
23 + // Get plugin settings
24 + $settings = iframe_plugin_get_settings();
25 +
26 + $defaults = array(
27 + //'src' => 'http://www.youtube.com/embed/7_nAZQt9qu0',
28 + 'width' => '100%',
29 + 'height' => '500',
30 + 'scrolling' => 'yes',
31 + 'class' => 'iframe-class',
32 + 'frameborder' => '0',
33 + 'loading' => $settings['loading'] // Global setting from settings array
34 + );
35 +
36 + if ( ! is_array( $atts ) ) {
37 + $atts = array();
16 38 }
17 - add_action('wp_enqueue_scripts', 'iframe_enqueue_script');
18 -
19 - function iframe_embed_shortcode($atts, $content = null) {
20 - extract(shortcode_atts(array(
21 - 'width' => '100%',
22 - 'height' => '480',
23 - 'src' => '',
24 - 'frameborder' => '0',
25 - 'scrolling' => 'no',
26 - 'marginheight' => '0',
27 - 'marginwidth' => '0',
28 - 'allowtransparency' => 'true',
29 - 'id' => '',
30 - 'class' => 'iframe-class',
31 - 'same_height_as' => ''
32 - ), $atts));
33 - $src_cut = substr($src, 0, 35);
34 - if(strpos($src_cut, 'maps.google' )){
35 - $google_map_fix = '&output=embed';
36 - }else{
37 - $google_map_fix = '';
39 +
40 + foreach ( $defaults as $default => $value ) { // add defaults
41 + if ( ! @array_key_exists( $default, $atts ) ) { // mute warning with "@" when no params at all
42 + $atts[$default] = $value;
38 43 }
39 - $return = '';
40 - if( $same_height_as != '' ){
41 - if( $same_height_as != 'content' ){ // we are setting the height of the iframe like as target element
42 - if( $same_height_as == 'document' || $same_height_as == 'window' ){ // remove quotes for window or document selectors
43 - $target_selector = $same_height_as;
44 - }else{
45 - $target_selector = '"'.$same_height_as.'"';
46 - }
47 - $return .= '
48 - <script>
49 - jQuery(document).ready(function($) {
50 - var target_height = $('.$target_selector.').height();
51 - $("iframe.'.$class.'").height(target_height);
52 - });
53 - </script>
54 - ';
55 - }else{ // set the actual height of the iframe (show all content of the iframe without scroll)
56 - $return .= '
57 - <script>
58 - jQuery(document).ready(function($) {
59 - $("iframe.'.$class.'").bind("load", function() {
60 - var embed_height = $(this).contents().find("body").height();
61 - $(this).height(embed_height);
62 - });
63 - });
64 - </script>
65 - ';
66 - }
44 + }
45 +
46 + $html = "\n".'<!-- iframe plugin v.'.IFRAME_PLUGIN_VERSION.' wordpress.org/plugins/iframe/ -->'."\n";
47 + $html .= '<iframe';
48 + foreach( $atts as $attr => $value ) {
49 + if ( strtolower($attr) == 'src' ) { // sanitize url
50 + $value = esc_url( $value );
67 51 }
68 - if( $id != '' ){
69 - $id_text = 'id="'.$id.'" ';
70 - }else{
71 - $id_text = '';
52 +
53 + // Remove 'srcdoc' attribute
54 + if ( strtolower($attr) == 'srcdoc' ) {
55 + continue;
72 56 }
73 - $return .= "\n".'<!-- powered by Iframe plugin ver. 1.7 (wordpress.org/extend/plugins/iframe/) -->'."\n";
74 - $return .= '<iframe '.$id_text.'class="'.$class.'" width="'.$width.'" height="'.$height.'" src="'.$src.$google_map_fix.'" frameborder="'.$frameborder.'" scrolling="'.$scrolling.'" marginheight="'.$marginheight.'" marginwidth="'.$marginwidth.'" allowtransparency="'.$allowtransparency.'"></iframe>';
75 - // &amp;output=embed
76 - return $return;
57 +
58 + // Skip attributes starting with "on". Examples: onload, onmouseover, onfocus, onpageshow, onclick
59 + if ( strpos( strtolower( $attr ), 'on' ) === 0 ) {
60 + continue;
61 + }
62 +
63 + // Skip loading attribute if set to 'none' (browser default)
64 + if ( strtolower($attr) == 'loading' && strtolower($value) == 'none' ) {
65 + continue;
66 + }
67 +
68 + if ($value !== '') { // adding all attributes
69 + $html .= ' ' . esc_attr($attr) . '="' . esc_attr($value) . '"';
70 + } else { // adding empty attributes
71 + $html .= ' ' . esc_attr($attr);
72 + }
77 73 }
78 - add_shortcode('iframe', 'iframe_embed_shortcode');
79 -
80 -endif;
74 + $html .= '></iframe>'."\n";
75 +
76 + if ( isset( $atts["same_height_as"] ) ) {
77 + $html .= '
78 + <script>
79 + document.addEventListener("DOMContentLoaded", function(){
80 + var target_element, iframe_element;
81 + iframe_element = document.querySelector("iframe.' . esc_attr( $atts["class"] ) . '");
82 + target_element = document.querySelector("' . esc_attr( $atts["same_height_as"] ) . '");
83 + iframe_element.style.height = target_element.offsetHeight + "px";
84 + });
85 + </script>
86 + ';
87 + }
88 +
89 + return $html;
90 +}
91 +add_shortcode( 'iframe', 'iframe_plugin_add_shortcode_cb' );
92 +
93 +
94 +function iframe_plugin_row_meta_cb( $links, $file ) {
95 + if ( $file == plugin_basename( __FILE__ ) ) {
96 + $row_meta = array(
97 + 'support' => '<a href="http://web-profile.net/wordpress/plugins/iframe/" target="_blank">' . __( 'Iframe', 'iframe' ) . '</a>',
98 + 'donate' => '<a href="http://web-profile.net/donate/" target="_blank">' . __( 'Donate', 'iframe' ) . '</a>'
99 + );
100 + $links = array_merge( $links, $row_meta );
101 + }
102 + return (array) $links;
103 +}
104 +add_filter( 'plugin_row_meta', 'iframe_plugin_row_meta_cb', 10, 2 );