PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.47.3
Advanced Ads – Ad Manager & AdSense v1.47.3
2.0.26 2.0.25 2.0.24 2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / classes / ad_type_content.php
advanced-ads / classes Last commit date
Advanced_Ads_Modal.php 2 years ago EDD_SL_Plugin_Updater.php 4 years ago ad-ajax.php 2 years ago ad-debug.php 2 years ago ad-expiration.php 3 years ago ad-health-notices.php 2 years ago ad-model.php 2 years ago ad-select.php 3 years ago ad.php 2 years ago ad_ajax_callbacks.php 2 years ago ad_group.php 2 years ago ad_placements.php 2 years ago ad_type_abstract.php 2 years ago ad_type_content.php 2 years ago ad_type_dummy.php 3 years ago ad_type_group.php 2 years ago ad_type_image.php 2 years ago ad_type_plain.php 2 years ago checks.php 2 years ago class-translation-promo.php 3 years ago compatibility.php 2 years ago display-conditions.php 2 years ago filesystem.php 3 years ago frontend_checks.php 2 years ago in-content-injector.php 2 years ago inline-css.php 2 years ago plugin.php 2 years ago upgrades.php 2 years ago utils.php 3 years ago visitor-conditions.php 2 years ago widget.php 2 years ago
ad_type_content.php
171 lines
1 <?php
2 /**
3 * Advanced Ads Content Ad Type
4 *
5 * @package Advanced_Ads
6 * @author Thomas Maier <support@wpadvancedads.com>
7 * @license GPL-2.0+
8 * @link https://wpadvancedads.com
9 * @copyright 2014 Thomas Maier, Advanced Ads GmbH
10 *
11 * Class containing information about the content ad type
12 * this should also work as an example for other ad types
13 *
14 * see also includes/ad-type-abstract.php for basic object
15 *
16 */
17 class Advanced_Ads_Ad_Type_Content extends Advanced_Ads_Ad_Type_Abstract{
18
19 /**
20 * ID - internal type of the ad type
21 *
22 * must be static so set your own ad type ID here
23 * use slug like format, only lower case, underscores and hyphens
24 *
25 * @since 1.0.0
26 */
27 public $ID = 'content';
28
29 /**
30 * Set basic attributes
31 *
32 * @since 1.0.0
33 */
34 public function __construct() {
35 $this->title = __( 'Rich Content', 'advanced-ads' );
36 $this->description = __( 'The full content editor from WordPress with all features like shortcodes, image upload or styling, but also simple text/html mode for scripts and code.', 'advanced-ads' );
37 $this->parameters = [
38 'content' => ''
39 ];
40 }
41
42
43 /**
44 * Output for the ad parameters metabox
45 *
46 * this will be loaded using ajax when changing the ad type radio buttons
47 * echo the output right away here
48 * name parameters must be in the "advanced_ads" array
49 *
50 * @param obj $ad ad object
51 * @since 1.0.0
52 */
53 public function render_parameters($ad){
54 // load tinymc content exitor
55 $content = (isset($ad->content)) ? $ad->content : '';
56
57 /**
58 * Build the tinymc editor
59 * @link http://codex.wordpress.org/Function_Reference/wp_editor
60 *
61 * don’t build it when ajax is used; display message and buttons instead
62 */
63 if ( defined( 'DOING_AJAX' ) ){ ?>
64 <textarea id="advads-ad-content-plain" style="display:none;" cols="40" rows="10" name="advanced_ad[content]"><?php echo esc_textarea( $content ); ?></textarea>
65 <?php
66 } else {
67 if ( ! user_can_richedit() ) {
68 $content = esc_textarea( $content );
69 }
70 add_filter( 'tiny_mce_before_init', function( array $init_array, $editor_id ) {
71 if ( $editor_id !== 'advanced-ad-parameters-content' ) {
72 return $init_array;
73 }
74 // add a JS listener to trigger an `input` event for the rich text textarea.
75 $init_array['setup'] = <<<'JS'
76 [editor => {
77 const textarea = document.getElementById('advanced-ad-parameters-content');
78 editor.on('Dirty', event => {
79 textarea.value = editor.getContent();
80 textarea.dispatchEvent(new Event('input'));
81 });
82 }][0]
83 JS;
84
85 return $init_array;
86 }, 10, 2 );
87
88 $args = [
89 'textarea_name' => 'advanced_ad[content]',
90 'textarea_rows' => 10,
91 'drag_drop_upload' => true
92 ];
93 wp_editor( $content, 'advanced-ad-parameters-content', $args );
94 }
95 ?>
96 <br class="clear"/>
97
98 <input type="hidden" name="advanced_ad[output][allow_shortcodes]" value="1" /><?php
99 include ADVADS_ABSPATH . 'admin/views/ad-info-after-textarea.php';
100 }
101
102 /**
103 * Sanitize content field on save
104 *
105 * @param str $content ad content
106 * @return str $content sanitized ad content
107 * @since 1.0.0
108 */
109 public function sanitize_content($content = ''){
110 // use WordPress core content filter
111 $content = apply_filters( 'content_save_pre', $content );
112
113 // remove slashes from content
114 $content = wp_unslash( $content );
115 return $content;
116 }
117
118 /**
119 * Prepare the ads frontend output.
120 *
121 * @param Advanced_Ads_Ad $ad The ad object.
122 *
123 * @return string $content ad content prepared for frontend output.
124 * @since 1.0.0
125 */
126 public function prepare_output( $ad ) {
127
128 // apply functions normally running through the_content filter
129 // the_content filter is not used here because it created an infinite loop (ads within ads for "before content" and other auto injections)
130 // maybe the danger is not here yet, but changing it to use the_content filter changes a lot
131
132 $output = $ad->content;
133
134 if ( isset( $GLOBALS['wp_embed'] ) ) {
135 // temporarily replace the global $post variable with the current ad (post)
136 $old_post = $GLOBALS['post'];
137 $GLOBALS['post'] = $ad->id;
138
139 // get the [embed] shortcode to run before wpautop()
140 $output = $GLOBALS['wp_embed']->run_shortcode( $output );
141 // attempts to embed all URLs in a post
142 $output = $GLOBALS['wp_embed']->autoembed( $output );
143
144 $GLOBALS['post'] = $old_post;
145 }
146
147 $output = wptexturize( $output );
148 $output = convert_smilies( $output );
149 $output = convert_chars( $output );
150 $output = wpautop( $output );
151 $output = shortcode_unautop( $output );
152 $output = $this->do_shortcode( $output, $ad );
153
154 if ( defined( 'ADVADS_DISABLE_RESPONSIVE_IMAGES' ) && ADVADS_DISABLE_RESPONSIVE_IMAGES ) {
155 return $output;
156 }
157
158 // Make included images responsive, since WordPress 4.4, before WordPress 5.5.
159 if ( function_exists( 'wp_make_content_images_responsive' ) && ! function_exists( 'wp_filter_content_tags' ) ) {
160 return wp_make_content_images_responsive( $output );
161 }
162
163 // Function wp_make_content_images_responsive has been deprecated with WordPress 5.5.
164 if ( function_exists( 'wp_filter_content_tags' ) ) {
165 return wp_filter_content_tags( $output );
166 }
167
168 return $output;
169 }
170 }
171