PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.8.19
Advanced Ads – Ad Manager & AdSense v1.8.19
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
EDD_SL_Plugin_Updater.php 8 years ago ad-ajax.php 9 years ago ad-debug.php 8 years ago ad-model.php 9 years ago ad-select.php 9 years ago ad.php 8 years ago ad_ajax_callbacks.php 8 years ago ad_group.php 8 years ago ad_placements.php 8 years ago ad_type_abstract.php 11 years ago ad_type_content.php 8 years ago ad_type_dummy.php 8 years ago ad_type_group.php 8 years ago ad_type_image.php 8 years ago ad_type_plain.php 9 years ago checks.php 9 years ago display-conditions.php 8 years ago filesystem.php 8 years ago frontend_checks.php 8 years ago plugin.php 8 years ago upgrades.php 9 years ago utils.php 9 years ago visitor-conditions.php 8 years ago widget.php 8 years ago
ad_type_content.php
177 lines
1 <?php
2 /**
3 * Advanced Ads Content Ad Type
4 *
5 * @package Advanced_Ads
6 * @author Thomas Maier <thomas.maier@webgilde.com>
7 * @license GPL-2.0+
8 * @link http://webgilde.com
9 * @copyright 2014 Thomas Maier, webgilde 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 = array(
38 'content' => ''
39 );
40
41 add_filter( 'advanced-ads-save-options', array( $this, 'save_ad_options' ), 10, 2);
42 }
43
44
45 /**
46 * output for the ad parameters metabox
47 *
48 * this will be loaded using ajax when changing the ad type radio buttons
49 * echo the output right away here
50 * name parameters must be in the "advanced_ads" array
51 *
52 * @param obj $ad ad object
53 * @since 1.0.0
54 */
55 public function render_parameters($ad){
56 // load tinymc content exitor
57 $content = (isset($ad->content)) ? $ad->content : '';
58
59 /**
60 * build the tinymc editor
61 * @link http://codex.wordpress.org/Function_Reference/wp_editor
62 *
63 * don’t build it when ajax is used; display message and buttons instead
64 */
65 if ( defined( 'DOING_AJAX' ) ){ ?>
66 <textarea id="advads-ad-content-plain" style="display:none;" cols="40" rows="10" name="advanced_ad[content]"><?php echo esc_textarea( $content ); ?></textarea>
67 <?php
68 } else {
69 if ( ! user_can_richedit() ) {
70 $content = esc_textarea( $content );
71 }
72 $args = array(
73 'textarea_name' => 'advanced_ad[content]',
74 'textarea_rows' => 10,
75 'drag_drop_upload' => true
76 );
77 wp_editor( $content, 'advanced-ad-parameters-content', $args );
78 } ?><br class="clear"/><?php
79 include ADVADS_BASE_PATH . 'admin/views/ad-info-after-textarea.php';
80 }
81
82 /**
83 * sanitize content field on save
84 *
85 * @param str $content ad content
86 * @return str $content sanitized ad content
87 * @since 1.0.0
88 */
89 public function sanitize_content($content = ''){
90 // use WordPress core content filter
91 $content = apply_filters( 'content_save_pre', $content );
92
93 // remove slashes from content
94 $content = wp_unslash( $content );
95 return $content;
96 }
97
98 /**
99 * prepare the ads frontend output
100 *
101 * @param obj $ad ad object
102 * @return str $content ad content prepared for frontend output
103 * @since 1.0.0
104 */
105 public function prepare_output($ad){
106
107 // apply functions normally running through the_content filter
108 // the_content filter is not used here because it created an infinite loop (ads within ads for "before content" and other auto injections)
109 // maybe the danger is not here yet, but changing it to use the_content filter changes a lot
110
111 $output = $ad->content;
112
113 if ( isset( $GLOBALS['wp_embed'] ) ) {
114 // temporarily replace the global $post variable with the current ad (post)
115 $old_post = $GLOBALS['post'];
116 $GLOBALS['post'] = $ad->id;
117
118 // get the [embed] shortcode to run before wpautop()
119 $output = $GLOBALS['wp_embed']->run_shortcode( $output );
120 // attempts to embed all URLs in a post
121 $output = $GLOBALS['wp_embed']->autoembed( $output );
122
123 $GLOBALS['post'] = $old_post;
124 }
125
126 $output = wptexturize( $output );
127 $output = convert_smilies( $output );
128 $output = convert_chars( $output );
129 $output = wpautop( $output );
130 $output = shortcode_unautop( $output );
131 $output = $this->do_shortcode( $output, $ad );
132 $output = prepend_attachment( $output );
133 // make included images responsive, since WordPress 4.4
134 if( ! defined( 'ADVADS_DISABLE_RESPONSIVE_IMAGES' ) && function_exists( 'wp_make_content_images_responsive' ) ){
135 $output = wp_make_content_images_responsive( $output );
136 }
137
138 return $output;
139 }
140
141 /**
142 * Add ad options.
143 *
144 * @param array $options Ad options.
145 * @param obj $ad Advanced_Ads_Ad.
146 * @retutn array $options Ad options.
147 */
148 public function save_ad_options( $options, $ad ) {
149 if ( $ad->type === $this->ID ) {
150 $pattern = get_shortcode_regex( array( 'the_ad', 'the_ad_group', 'the_ad_placement' ) );
151 $options['output']['has_shortcode'] = preg_match( '/' . $pattern . '/s', $ad->content );
152 }
153 return $options;
154 }
155
156 /**
157 * Process shortcodes.
158 *
159 * @param str $output Ad content.
160 * @return obj Advanced_Ads_Ad
161 */
162 private function do_shortcode( $output, Advanced_Ads_Ad $ad ) {
163 $ad_options = $ad->options();
164
165 if ( ! isset( $ad_options['output']['has_shortcode'] ) || $ad_options['output']['has_shortcode'] ) {
166 // Store arguments so that shortcode hooks can access it.
167 $ad_args = $ad->args;
168 $ad_args['shortcode_ad_id'] = $ad->id;
169 $output = preg_replace( '/\[(the_ad_group|the_ad_placement|the_ad)/', '[$1 ad_args="' . urlencode( json_encode( $ad_args ) ) . '"', $output );
170 }
171
172 $output = do_shortcode( $output );
173 return $output;
174 }
175
176 }
177