PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.10
Advanced Ads – Ad Manager & AdSense v1.10
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 / modules / gadsense / includes / class-ad-type-adsense.php
advanced-ads / modules / gadsense / includes Last commit date
class-ad-type-adsense.php 8 years ago class-gadsense-data.php 8 years ago class-mapi.php 8 years ago
class-ad-type-adsense.php
262 lines
1 <?php
2
3 /**
4 * Advanced Ads dfp Ad Type
5 *
6 * @package Advanced_Ads
7 * @author Thomas Maier <thomas.maier@webgilde.com>
8 * @license GPL-2.0+
9 * @link http://webgilde.com
10 * @copyright 2013-2018 Thomas Maier, webgilde GmbH
11 *
12 * Class containing information about the adsense ad type
13 *
14 * see also includes/class-ad-type-abstract.php for basic object
15 *
16 */
17 class Advanced_Ads_Ad_Type_Adsense 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.4
26 */
27 public $ID = 'adsense';
28
29 /**
30 * set basic attributes
31 *
32 * @since 1.4
33 */
34 public function __construct() {
35 $this->title = __( 'AdSense ad', 'advanced-ads' );
36 $this->description = __( 'Use ads from your Google AdSense account', 'advanced-ads' );
37 $this->parameters = array(
38 'content' => ''
39 );
40 }
41
42 /**
43 * output for the ad parameters metabox
44 *
45 * this will be loaded using ajax when changing the ad type radio buttons
46 * echo the output right away here
47 * name parameters must be in the "advanced_ads" array
48 *
49 * @param obj $ad ad object
50 * @since 1.4
51 */
52 public function render_parameters($ad) {
53 $options = $ad->options();
54
55 $content = (string) ( isset( $ad->content ) ? $ad->content : '' );
56 $unit_id = '';
57 $unit_code = '';
58 $unit_type = '';
59 $unit_width = 0;
60 $unit_height = 0;
61 $json_content = '';
62 $unit_resize = '';
63 $extra_params = array(
64 'default_width' => '',
65 'default_height' => '',
66 'at_media' => array(),
67 );
68
69 $db = Advanced_Ads_AdSense_Data::get_instance();
70 $pub_id = trim( $db->get_adsense_id() );
71
72 // check pub_id for errors
73 $pub_id_errors = false;
74 if( $pub_id !== '' && 0 !== strpos( $pub_id, 'pub-' )){
75 $pub_id_errors = __( 'The Publisher ID has an incorrect format. (must start with "pub-")', 'advanced-ads' );
76 }
77
78 if ( trim($content) !== '' ) {
79
80 $json_content = stripslashes( $content );
81
82 // get json content striped by slashes
83 $content = json_decode( stripslashes( $content ) );
84
85 if ( isset($content->unitType) ) {
86 $content->json = $json_content;
87 $unit_type = $content->unitType;
88 $unit_code = $content->slotId;
89 $layout = isset( $content->layout ) ? $content->layout : '';
90 $layout_key = isset( $content->layout_key ) ? $content->layout_key : '';
91
92 if ( 'responsive' != $content->unitType && 'link-responsive' != $content->unitType && 'matched-content' != $content->unitType ) {
93 // Normal ad unit
94 $unit_width = $ad->width;
95 $unit_height = $ad->height;
96 } else {
97 // Responsive && matched content
98 $unit_resize = (isset($content->resize)) ? $content->resize : 'auto';
99 if ( 'auto' != $unit_resize ) {
100 $extra_params = apply_filters( 'advanced-ads-gadsense-ad-param-data', $extra_params, $content, $ad );
101 }
102 }
103 if ( ! empty($pub_id) ) {
104 $unit_id = 'ca-' . $pub_id . ':' . $unit_code;
105 }
106 }
107 }
108
109 if( '' === trim( $pub_id ) && '' !== trim( $unit_code ) ){
110 $pub_id_errors = __( 'Your AdSense Publisher ID is missing.', 'advanced-ads' );
111 }
112
113 $default_template = GADSENSE_BASE_PATH . 'admin/views/adsense-ad-parameters.php';
114 /**
115 * Inclusion of other UI template is done here. The content is passed in order to allow the inclusion of different
116 * templates file, depending of the ad. It's up to the developer to verify that $content is not an empty
117 * variable (which is the case for a new ad).
118 *
119 * Inclusion of .js and .css files for the ad creation/editon page are done by another hook. See
120 * 'advanced-ads-gadsense-ad-param-script' and 'advanced-ads-gadsense-ad-param-style' in "../admin/class-gadsense-admin.php".
121 */
122 $template = apply_filters( 'advanced-ads-gadsense-ad-param-template', $default_template, $content );
123
124 require $template;
125 }
126
127 /**
128 * sanitize content field on save
129 *
130 * @param str $content ad content
131 * @return str $content sanitized ad content
132 * @since 1.0.0
133 */
134 public function sanitize_content($content = '') {
135 return $content = wp_unslash( $content );
136 }
137
138 /**
139 * prepare the ads frontend output
140 *
141 * @param obj $ad ad object
142 * @return str $content ad content prepared for frontend output
143 * @since 1.0.0
144 */
145 public function prepare_output($ad) {
146 global $gadsense;
147
148 $content = json_decode( stripslashes( $ad->content ) );
149
150 if( isset( $ad->args['wp_the_query']['is_404'] )
151 && $ad->args['wp_the_query']['is_404']
152 && ! defined( 'ADVADS_ALLOW_ADSENSE_ON_404' ) ){
153 return '';
154 }
155
156 $output = '';
157 $db = Advanced_Ads_AdSense_Data::get_instance();
158 $pub_id = $db->get_adsense_id();
159 $limit_per_page = $db->get_limit_per_page();
160
161 if ( ! isset($content->unitType) || empty($pub_id) ) {
162 return $output; }
163 // deprecated since the adsbygoogle.js file is now always loaded
164 if ( ! isset($gadsense['google_loaded']) || ! $gadsense['google_loaded'] ) {
165 $gadsense['google_loaded'] = true;
166 }
167
168 //check if passive cb is used
169 if ( isset( $gadsense['adsense_count'] ) ) {
170 $gadsense['adsense_count']++;
171 } else {
172 $gadsense['adsense_count'] = 1;
173 }
174
175 if ( $limit_per_page && 3 < $gadsense['adsense_count'] && $ad->global_output ) {
176 // The maximum allowed adSense ad per page count is 3 (according to the current Google AdSense TOS).
177 return '';
178 }
179
180 $output = apply_filters( 'advanced-ads-gadsense-output', false, $ad, $pub_id, $content );
181 if ( $output !== false ) {
182 return $output;
183 } elseif ( advads_is_amp() ) {
184 // Prevent output on AMP pages.
185 return '';
186 }
187
188 $output = '';
189
190 // build static normal content ads first
191 if ( ! in_array( $content->unitType, array( 'responsive', 'link-responsive', 'matched-content', 'in-article', 'in-feed' ) ) ) {
192 $output .= '<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>' . "\n";
193 $output .= '<ins class="adsbygoogle" ';
194 $output .= 'style="display:inline-block;width:' . $ad->width . 'px;height:' . $ad->height . 'px;" ' . "\n";
195 $output .= 'data-ad-client="ca-' . $pub_id . '" ' . "\n";
196 $output .= 'data-ad-slot="' . $content->slotId . '"';
197 // ad type for static link unit
198 if( 'link' == $content->unitType ){
199 $output .= "\n" . 'data-ad-format="link"';
200 }
201 $output .= '></ins> ' . "\n";
202 $output .= '<script> ' . "\n";
203 $output .= '(adsbygoogle = window.adsbygoogle || []).push({}); ' . "\n";
204 $output .= '</script>' . "\n";
205 } else {
206 /**
207 * The value of $ad->content->resize should be tested to format the output correctly
208 */
209 $unmodified = $output;
210 $output = apply_filters( 'advanced-ads-gadsense-responsive-output', $output, $ad, $pub_id );
211 if ( $unmodified == $output ) {
212 /**
213 * If the output has not been modified, perform a default responsive output.
214 * A simple did_action check isn't sufficient, some hooks may be attached and fired but didn't touch the output
215 */
216 $this->append_defaut_responsive_content( $output, $pub_id, $content );
217 }
218 }
219 return $output;
220 }
221
222 protected function append_defaut_responsive_content(&$output, $pub_id, $content) {
223 $format = '';
224 $style = 'display:block;';
225 switch( $content->unitType ){
226 case 'matched-content' :
227 $format = 'autorelaxed';
228 break;
229 case 'link-responsive' :
230 $format = 'link';
231 break;
232 case 'in-feed' :
233 $format = 'fluid';
234 $layout = $content->layout;
235 $layout_key = $content->layout_key;
236 break;
237 case 'in-article' :
238 $format = 'fluid';
239 $layout = 'in-article';
240 $style = 'display:block; text-align:center;';
241 break;
242 default :
243 $format = 'auto';
244 }
245
246 $output .= '<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>' . "\n";
247 $output .= '<ins class="adsbygoogle" ';
248 $output .= 'style="'. $style .'" ';
249 $output .= 'data-ad-client="ca-' . $pub_id . '" ' . "\n";
250 $output .= 'data-ad-slot="' . $content->slotId . '" ' . "\n";
251 $output .= isset( $layout ) ? 'data-ad-layout="' . $layout . '"' . "\n" : '';
252 $output .= isset( $layout_key ) ? 'data-ad-layout-key="' . $layout_key . '"' . "\n" : '';
253 $output .= 'data-ad-format="';
254 $output .= $format;
255 $output .= '"></ins>' . "\n";
256 $output .= '<script> ' . "\n";
257 $output .= apply_filters( 'advanced-ads-gadsense-responsive-adsbygoogle', '(adsbygoogle = window.adsbygoogle || []).push({}); ' . "\n");
258 $output .= '</script>' . "\n";
259 }
260
261 }
262