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 +82 -92 2.8trunk View file →
@@ -1,114 +1,104 @@
1 1 <?php
2 2 /*
3 3 Plugin Name: iframe
4 4 Plugin URI: http://wordpress.org/plugins/iframe/
5 -Description: [iframe src="http://www.youtube.com/embed/A3PDXmYoF5U" width="100%" height="480"] shortcode
6 -Version: 2.8
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 URI: http://web-profile.com.ua/wordpress/plugins/
8 +Author URI: http://web-profile.net/wordpress/plugins/
9 9 License: GPLv3
10 10 */
11 11
12 +if ( ! defined( 'ABSPATH' ) ) { // Avoid direct calls to this file and prevent full path disclosure
13 + exit;
14 +}
12 15
13 -if ( ! function_exists( 'iframe_unqprfx_embed_shortcode' ) ) :
16 +define('IFRAME_PLUGIN_VERSION', '6.0');
14 17
15 - function iframe_unqprfx_enqueue_script() {
16 - wp_enqueue_script( 'jquery' );
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();
17 38 }
18 - add_action( 'wp_enqueue_scripts', 'iframe_unqprfx_enqueue_script' );
19 -
20 -
21 - function iframe_unqprfx_embed_shortcode( $atts, $content = null ) {
22 - $defaults = array(
23 - 'src' => 'http://www.youtube.com/embed/A3PDXmYoF5U',
24 - 'width' => '100%',
25 - 'height' => '480',
26 - 'scrolling' => 'no',
27 - 'class' => 'iframe-class',
28 - 'frameborder' => '0'
29 - );
30 39
31 - foreach ( $defaults as $default => $value ) { // add defaults
32 - if ( ! @array_key_exists( $default, $atts ) ) { // hide warning with "@" when no params at all
33 - $atts[$default] = $value;
34 - }
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;
35 43 }
44 + }
36 45
37 - // get_params_from_url
38 - if( isset( $atts["get_params_from_url"] ) && ( $atts["get_params_from_url"] == '1' || $atts["get_params_from_url"] == 1 || $atts["get_params_from_url"] == 'true' ) ) {
39 - if( $_GET != NULL ){
40 - if( strpos( $atts["src"], '?' ) ){ // if we already have '?' and GET params
41 - $encode_string = '&';
42 - }else{
43 - $encode_string = '?';
44 - }
45 - foreach( $_GET as $key => $value ){
46 - $encode_string .= $key.'='.$value.'&';
47 - }
48 - }
49 - $atts["src"] .= $encode_string;
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 );
50 51 }
51 52
52 - $html = '';
53 - if( isset( $atts["same_height_as"] ) ){
54 - $same_height_as = $atts["same_height_as"];
55 - }else{
56 - $same_height_as = '';
53 + // Remove 'srcdoc' attribute
54 + if ( strtolower($attr) == 'srcdoc' ) {
55 + continue;
57 56 }
58 -
59 - if( $same_height_as != '' ){
60 - $atts["same_height_as"] = '';
61 - if( $same_height_as != 'content' ){ // we are setting the height of the iframe like as target element
62 - if( $same_height_as == 'document' || $same_height_as == 'window' ){ // remove quotes for window or document selectors
63 - $target_selector = $same_height_as;
64 - }else{
65 - $target_selector = '"' . $same_height_as . '"';
66 - }
67 - $html .= '
68 - <script>
69 - jQuery(function($){
70 - var target_height = $(' . $target_selector . ').height();
71 - $("iframe.' . $atts["class"] . '").height(target_height);
72 - });
73 - </script>
74 - ';
75 - }else{ // set the actual height of the iframe (show all content of the iframe without scroll)
76 - $html .= '
77 - <script>
78 - jQuery(function($){
79 - $("iframe.' . $atts["class"] . '").bind("load", function() {
80 - var embed_height = $(this).contents().find("body").height();
81 - $(this).height(embed_height);
82 - });
83 - });
84 - </script>
85 - ';
86 - }
57 +
58 + // Skip attributes starting with "on". Examples: onload, onmouseover, onfocus, onpageshow, onclick
59 + if ( strpos( strtolower( $attr ), 'on' ) === 0 ) {
60 + continue;
87 61 }
88 - $html .= "\n".'<!-- iframe plugin v.2.8 wordpress.org/plugins/iframe/ -->'."\n";
89 - $html .= '<iframe';
90 - foreach( $atts as $attr => $value ) {
91 - if( $attr != 'same_height_as' ){ // remove some attributes
92 - if( $value != '' ) { // adding all attributes
93 - $html .= ' ' . $attr . '="' . $value . '"';
94 - } else { // adding empty attributes
95 - $html .= ' ' . $attr;
96 - }
97 - }
62 +
63 + // Skip loading attribute if set to 'none' (browser default)
64 + if ( strtolower($attr) == 'loading' && strtolower($value) == 'none' ) {
65 + continue;
98 66 }
99 - $html .= '></iframe>'."\n";
100 - return $html;
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 + }
101 73 }
102 - add_shortcode( 'iframe', 'iframe_unqprfx_embed_shortcode' );
103 -
74 + $html .= '></iframe>'."\n";
104 75
105 - function iframe_unqprfx_plugin_meta( $links, $file ) { // add 'Plugin page' and 'Donate' links to plugin meta row
106 - if ( strpos( $file, 'iframe.php' ) !== false ) {
107 - $links = array_merge( $links, array( '<a href="http://web-profile.com.ua/wordpress/plugins/iframe/" title="Plugin page">Iframe</a>' ) );
108 - $links = array_merge( $links, array( '<a href="http://web-profile.com.ua/donate/" title="Support the development">Donate</a>' ) );
109 - }
110 - return $links;
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 + ';
111 87 }
112 - add_filter( 'plugin_row_meta', 'iframe_unqprfx_plugin_meta', 10, 2 );
113 -
114 -endif; // end of if(function_exists('iframe_unqprfx_embed_shortcode'))
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 );