PluginProbe
iframe / 5.0
iframe v5.0
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
iframe / iframe.php

iframe.php in iframe 5.0, at iframe.php

107 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: iframe
4 Plugin URI: http://wordpress.org/plugins/iframe/
5 Description: [iframe src="http://www.youtube.com/embed/dUpTjDqjQoo" width="100%" height="500"] shortcode
6 Version: 5.0
7 Author: webvitaly
8 Author URI: http://web-profile.net/wordpress/plugins/
9 License: GPLv3
10 */
11
12 if ( ! defined( 'ABSPATH' ) ) { // Avoid direct calls to this file and prevent full path disclosure
13 exit;
14 }
15
16 define('IFRAME_PLUGIN_VERSION', '5.0');
17
18 function iframe_plugin_add_shortcode_cb( $atts ) {
19 $defaults = array(
20 'src' => 'http://www.youtube.com/embed/dUpTjDqjQoo',
21 'width' => '100%',
22 'height' => '500',
23 'scrolling' => 'yes',
24 'class' => 'iframe-class',
25 'frameborder' => '0'
26 );
27
28 $allowed_tags = array(
29 'h1' => array(),
30 'h2' => array(),
31 'h3' => array(),
32 'h4' => array(),
33 'h5' => array(),
34 'h6' => array(),
35 'p' => array(),
36 'a' => array(
37 'href' => true,
38 'title' => true,
39 ),
40 'br' => array(),
41 'em' => array(),
42 'strong' => array()
43 );
44
45 if ( ! is_array( $atts ) ) {
46 $atts = array();
47 }
48
49 foreach ( $defaults as $default => $value ) { // add defaults
50 if ( ! @array_key_exists( $default, $atts ) ) { // mute warning with "@" when no params at all
51 $atts[$default] = $value;
52 }
53 }
54
55 $html = "\n".'<!-- iframe plugin v.'.IFRAME_PLUGIN_VERSION.' wordpress.org/plugins/iframe/ -->'."\n";
56 $html .= '<iframe';
57 foreach( $atts as $attr => $value ) {
58 if ( strtolower($attr) == 'src' ) { // sanitize url
59 $value = esc_url( $value );
60 }
61 if ( strtolower($attr) == 'srcdoc' ) { // sanitize html
62 $value = htmlspecialchars_decode( $value );
63 $value = wp_kses( $value, $allowed_tags );
64 $value = esc_html( $value );
65 }
66 // Remove all attributes starting with "on". Examples: onload, onmouseover, onfocus, onpageshow, onclick
67 if ( strpos( strtolower( $attr ), 'on' ) !== 0 ) {
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 }
73 }
74 }
75 $html .= '></iframe>'."\n";
76
77 if ( isset( $atts["same_height_as"] ) ) {
78 $html .= '
79 <script>
80 document.addEventListener("DOMContentLoaded", function(){
81 var target_element, iframe_element;
82 iframe_element = document.querySelector("iframe.' . esc_attr( $atts["class"] ) . '");
83 target_element = document.querySelector("' . esc_attr( $atts["same_height_as"] ) . '");
84 iframe_element.style.height = target_element.offsetHeight + "px";
85 });
86 </script>
87 ';
88 }
89
90 return $html;
91 }
92 add_shortcode( 'iframe', 'iframe_plugin_add_shortcode_cb' );
93
94
95 function iframe_plugin_row_meta_cb( $links, $file ) {
96 if ( $file == plugin_basename( __FILE__ ) ) {
97 $row_meta = array(
98 'support' => '<a href="http://web-profile.net/wordpress/plugins/iframe/" target="_blank">' . __( 'Iframe', 'iframe' ) . '</a>',
99 'donate' => '<a href="http://web-profile.net/donate/" target="_blank">' . __( 'Donate', 'iframe' ) . '</a>',
100 'pro' => '<a href="https://1.envato.market/Ym5aq" target="_blank">' . __( 'Advanced iFrame Pro', 'iframe' ) . '</a>'
101 );
102 $links = array_merge( $links, $row_meta );
103 }
104 return (array) $links;
105 }
106 add_filter( 'plugin_row_meta', 'iframe_plugin_row_meta_cb', 10, 2 );
107