PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.17.10
Advanced Ads – Ad Manager & AdSense v1.17.10
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 / checks.php
advanced-ads / classes Last commit date
EDD_SL_Plugin_Updater.php 6 years ago ad-ajax.php 6 years ago ad-debug.php 8 years ago ad-health-notices.php 6 years ago ad-model.php 6 years ago ad-select.php 9 years ago ad.php 6 years ago ad_ajax_callbacks.php 6 years ago ad_group.php 6 years ago ad_placements.php 6 years ago ad_type_abstract.php 6 years ago ad_type_content.php 6 years ago ad_type_dummy.php 6 years ago ad_type_group.php 6 years ago ad_type_image.php 6 years ago ad_type_plain.php 6 years ago checks.php 6 years ago compatibility.php 6 years ago display-conditions.php 6 years ago filesystem.php 8 years ago frontend-notices.php 6 years ago frontend_checks.php 6 years ago plugin.php 6 years ago upgrades.php 7 years ago utils.php 6 years ago visitor-conditions.php 6 years ago widget.php 6 years ago
checks.php
403 lines
1 <?php
2
3 /**
4 * Checks for various things
5 *
6 * @since 1.6.9
7 */
8 class Advanced_Ads_Checks {
9
10 /**
11 * Minimum required PHP version of Advanced Ads
12 */
13 const MINIMUM_PHP_VERSION = '5.6.20';
14
15
16 /**
17 * Show the list of potential issues
18 */
19 public static function show_issues() {
20 include_once ADVADS_BASE_PATH . '/admin/views/checks.php';
21 }
22
23 /**
24 * PHP version minimum
25 *
26 * @return bool true if uses the minimum PHP version or higher
27 */
28 public static function php_version_minimum() {
29
30 if ( version_compare( phpversion(), self::MINIMUM_PHP_VERSION, '>=' ) ) {
31 return true;
32 }
33
34 return false;
35 }
36
37 /**
38 * Caching used
39 *
40 * @return bool true if active
41 */
42 public static function cache() {
43 if ( ( defined( 'WP_CACHE' ) && WP_CACHE ) // general cache constant.
44 || defined( 'W3TC' ) // W3 Total Cache.
45 || function_exists( 'wp_super_cache_text_domain' ) // WP SUper Cache.
46 || defined( 'WP_ROCKET_SLUG' ) // WP Rocket.
47 || defined( 'WPFC_WP_CONTENT_DIR' ) // WP Fastest Cache.
48 || class_exists( 'HyperCache', false ) // Hyper Cache.
49 || defined( 'CE_CACHE_DIR' ) // Cache Enabler.
50 ) {
51 return true;
52 }
53
54 return false;
55 }
56
57 /**
58 * WordPress update available
59 *
60 * @return bool true if WordPress update available
61 */
62 public static function wp_update_available() {
63
64 $update_data = wp_get_update_data();
65 $count = absint( $update_data['counts']['wordpress'] );
66
67 if ( $count ) {
68 return true;
69 }
70
71 return false;
72 }
73
74 /**
75 * Check if license keys are missing or invalid or expired
76 *
77 * @since 1.6.6
78 * @update 1.6.9 moved from Advanced_Ads_Plugin
79 * @update 1.8.21 also check for expired licenses
80 * @return true if there are missing licenses
81 */
82 public static function licenses_invalid() {
83
84 $add_ons = apply_filters( 'advanced-ads-add-ons', array() );
85
86 if ( array() === $add_ons ) {
87 Advanced_Ads_Ad_Health_Notices::get_instance()->remove( 'license_invalid' );
88 return false;
89 }
90
91 foreach ( $add_ons as $_add_on_key => $_add_on ) {
92 $status = Advanced_Ads_Admin_Licenses::get_instance()->get_license_status( $_add_on['options_slug'] );
93
94 // check expiry date.
95 $expiry_date = Advanced_Ads_Admin_Licenses::get_instance()->get_license_expires( $_add_on['options_slug'] );
96
97 if ( $expiry_date && 'lifetime' !== $expiry_date && strtotime( $expiry_date ) < time() ) {
98 return true;
99 }
100
101 // don’t check if license is valid.
102 if ( 'valid' === $status ) {
103 continue;
104 }
105
106 // retrieve our license key from the DB.
107 $licenses = Advanced_Ads_Admin_Licenses::get_instance()->get_licenses();
108
109 $license_key = isset( $licenses[ $_add_on_key ] ) ? $licenses[ $_add_on_key ] : false;
110
111 if ( ! $license_key || 'valid' !== $status ) {
112 return true;
113 }
114 }
115
116 // remove notice, if one is given.
117 Advanced_Ads_Ad_Health_Notices::get_instance()->remove( 'license_invalid' );
118 return false;
119 }
120
121 /**
122 * Autoptimize plugin installed
123 * can change ad tags, especially inline css and scripts
124 *
125 * @link https://wordpress.org/plugins/autoptimize/
126 * @return bool true if Autoptimize is installed
127 */
128 public static function active_autoptimize() {
129
130 if ( defined( 'AUTOPTIMIZE_PLUGIN_VERSION' ) ) {
131 return true;
132 }
133
134 return false;
135 }
136
137 /**
138 * WP rocket plugin installed
139 *
140 * @return bool true if WP rocket is installed
141 */
142 public static function active_wp_rocket() {
143 if ( defined( 'WP_ROCKET_SLUG' ) ) {
144 return true;
145 }
146
147 return false;
148 }
149
150 /**
151 * Checks the settings of wp rocket to find out if combining of javascript files is enabled
152 *
153 * @return boolean true, when "Combine JavaScript files" is enabled
154 */
155 public static function is_wp_rocket_combine_js_enabled() {
156 if ( self::active_wp_rocket() ) {
157 $settings = get_option( 'wp_rocket_settings' );
158 if ( $settings ) {
159 if ( isset( $settings['minify_concatenate_js'] ) && $settings['minify_concatenate_js'] ) {
160 return true;
161 }
162 }
163 }
164 return false;
165 }
166
167 /**
168 * Any AMP plugin enabled
169 *
170 * @return bool true if AMP plugin is installed
171 */
172 public static function active_amp_plugin() {
173 // Accelerated Mobile Pages.
174 if ( function_exists( 'ampforwp_is_amp_endpoint' ) ) {
175 return true;
176 }
177
178 // AMP plugin.
179 if ( function_exists( 'is_amp_endpoint' ) ) {
180 return true;
181 }
182
183 // other plugins.
184 if ( function_exists( 'is_wp_amp' ) ) {
185 return true;
186 }
187
188 return false;
189 }
190
191 /**
192 * Checks if the preconditions are met to wrap an ad with <!--noptimize--> comments
193 *
194 * @return boolean
195 */
196 public static function requires_noptimize_wrapping() {
197 return self::active_autoptimize() || self::is_wp_rocket_combine_js_enabled();
198 }
199
200 /**
201 * Check for additional conflicting plugins
202 *
203 * @return array $plugins names of conflicting plugins
204 */
205 public static function conflicting_plugins() {
206
207 $conflicting_plugins = array();
208
209 if ( defined( 'Publicize_Base' ) ) { // JetPack Publicize module.
210 $conflicting_plugins[] = 'Jetpack – Publicize';
211 }
212 if ( defined( 'PF__PLUGIN_DIR' ) ) { // Facebook Instant Articles & Google AMP Pages by PageFrog.
213 $conflicting_plugins[] = 'Facebook Instant Articles & Google AMP Pages by PageFrog';
214 }
215 if ( defined( 'GT_VERSION' ) ) { // GT ShortCodes.
216 $conflicting_plugins[] = 'GT ShortCodes';
217 }
218 if ( class_exists( 'ITSEC_Core', false ) && defined( 'AAP_VERSION' ) ) { // iThemes Security, but only if Pro is enabled.
219 $conflicting_plugins[] = 'iThemes Security';
220 }
221 if ( class_exists( 'SimilarPosts', false ) ) { // Similar Posts, https://de.wordpress.org/plugins/similar-posts/.
222 $conflicting_plugins[] = 'Similar Posts';
223 }
224
225 return $conflicting_plugins;
226 }
227
228 /**
229 * Check if any of the global hide ads options is set
230 * ignore RSS feed setting, because it is standard
231 *
232 * @since 1.7.10
233 * @return bool
234 */
235 public static function ads_disabled() {
236 $options = Advanced_Ads::get_instance()->options();
237 if ( isset( $options['disabled-ads'] ) && is_array( $options['disabled-ads'] ) ) {
238 foreach ( $options['disabled-ads'] as $_key => $_value ) {
239 // don’t warn if "RSS Feed", "404", or "REST API" option are enabled, because they are normally not critical.
240 if ( ! empty( $_value ) && ! in_array( $_key, array( 'feed', '404', 'rest-api' ), true ) ) {
241 return true;
242 }
243 }
244 }
245 return false;
246 }
247
248 /**
249 * Check for required php extensions
250 *
251 * @return array
252 */
253 public static function php_extensions() {
254
255 $missing_extensions = array();
256
257 if ( ! extension_loaded( 'dom' ) ) {
258 $missing_extensions[] = 'dom';
259 }
260
261 if ( ! extension_loaded( 'mbstring' ) ) {
262 $missing_extensions[] = 'mbstring';
263 }
264
265 return $missing_extensions;
266 }
267
268 /**
269 * Get the list of Advanced Ads constant defined by the user.
270 *
271 * @return array
272 */
273 public static function get_defined_constants() {
274 $constants = apply_filters(
275 'advanced-ads-constants',
276 array(
277 'ADVADS_ADS_DISABLED',
278 'ADVADS_ALLOW_ADSENSE_ON_404',
279 'ADVADS_DISABLE_RESPONSIVE_IMAGES',
280 'ADVANCED_ADS_AD_DEBUG_FOR_ADMIN_ONLY',
281 'ADVANCED_ADS_DISABLE_ANALYTICS_ANONYMIZE_IP',
282 'ADVANCED_ADS_DISABLE_CHANGE',
283 'ADVANCED_ADS_DISABLE_CODE_HIGHLIGHTING',
284 'ADVANCED_ADS_DISABLE_FRONTEND_AD_WEIGHT_UPDATE',
285 'ADVANCED_ADS_DISABLE_SHORTCODE_BUTTON',
286 'ADVANCED_ADS_DISALLOW_PHP',
287 'ADVANCED_ADS_ENABLE_REVISIONS',
288 'ADVANCED_ADS_GEO_TEST_IP',
289 'ADVANCED_ADS_PRO_CUSTOM_POSITION_MOVE_INTO_HIDDEN',
290 'ADVANCED_ADS_PRO_PAGE_IMPR_EXDAYS',
291 'ADVANCED_ADS_PRO_REFERRER_EXDAYS',
292 'ADVANCED_ADS_RESPONSIVE_DISABLE_BROWSER_WIDTH',
293 'ADVANCED_ADS_SHOW_LICENSE_RESPONSE',
294 'ADVANCED_ADS_SUPPRESS_PLUGIN_ERROR_NOTICES',
295 'ADVANCED_ADS_TRACKING_DEBUG',
296 'ADVANCED_ADS_TRACKING_NO_HOURLY_LIMIT',
297 )
298 );
299
300 $result = array();
301 foreach ( $constants as $constant ) {
302 if ( defined( $constant ) ) {
303 $result[] = $constant;
304 }
305 }
306 return $result;
307 }
308
309
310 /**
311 * WP Engine hosting detected
312 *
313 * @return bool true if site is hosted by WP Engine
314 */
315 public static function wp_engine_hosting() {
316 if ( defined( 'WPE_APIKEY' ) ) {
317 return true;
318 }
319
320 return false;
321 }
322
323 /**
324 * Notice for Adblocker module if assets have expired
325 */
326 public static function assets_expired() {
327 $plugin_options = Advanced_Ads_Plugin::get_instance()->options();
328 $adblocker_options = Advanced_Ads_Ad_Blocker::get_instance()->options();
329
330 return ( ! empty( $plugin_options['use-adblocker'] ) && empty( $adblocker_options['module_can_work'] ) );
331 }
332
333 /**
334 * Check for potential jQuery errors
335 * only script, so no return, but direct output
336 */
337 public static function jquery_ui_conflict() {
338 ?>
339 <script>
340 jQuery(document).ready(function(){
341 var needle = 'prior to initialization;' // A string from jquery-ui source code.
342 if ( jQuery.fn.button.toString().indexOf( needle ) === -1 || jQuery.fn.tooltip.toString().indexOf( needle ) === -1 ) {
343 advads_push_notice( 'jquery_ui_conflict' );
344 }
345 });
346 </script>
347 <?php
348 }
349
350 /**
351 * Check for other ads.txt plugins
352 *
353 * @return array
354 */
355 public static function ads_txt_plugins() {
356
357 $ads_txt_plugins = array();
358
359 // Ads.txt Manager.
360 if ( function_exists( 'tenup_display_ads_txt' ) ) {
361 $ads_txt_plugins[] = 'Ads.txt Manager';
362 }
363
364 // todo:
365 // ads-txt-admin/unveil-media-ads-txt.php
366 // simple-ads-txt/bs_ads_txt.php
367 // ads-txt-manager/adstxtmanager.php
368 // monetizemore-ads-txt/wp-ads-txt.php
369 // authorized-sellers-manager/ads-txt-publisher.php.
370
371 return $ads_txt_plugins;
372 }
373
374 /**
375 * Check for activated plugins that manage header or footer code
376 *
377 * @return array
378 */
379 public static function header_footer_plugins() {
380
381 $plugins = array();
382
383 // Header Footer Code Manager.
384 if ( function_exists( 'hfcm_options_install' ) ) {
385 $plugins[] = 'Header Footer Code Manager';
386 }
387 // Head, Footer and Post Injections.
388 if ( function_exists( 'hefo_template_redirect' ) ) {
389 $plugins[] = 'Head, Footer and Post Injections';
390 }
391 // Insert Headers and Footers /insert-headers-and-footers/.
392 if ( class_exists( 'InsertHeadersAndFooters', false ) ) {
393 $plugins[] = 'Insert Headers and Footers';
394 }
395 // Header and Footer Scripts /header-and-footer-scripts/.
396 if ( class_exists( 'HeaderAndFooterScripts', false ) ) {
397 $plugins[] = 'Header and Footer Scripts';
398 }
399
400 return $plugins;
401 }
402 }
403