PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.30.2
Advanced Ads – Ad Manager & AdSense v1.30.2
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 4 years ago ad-ajax.php 5 years ago ad-debug.php 6 years ago ad-health-notices.php 5 years ago ad-model.php 5 years ago ad-select.php 9 years ago ad.php 4 years ago ad_ajax_callbacks.php 5 years ago ad_group.php 4 years ago ad_placements.php 4 years ago ad_type_abstract.php 5 years ago ad_type_content.php 5 years ago ad_type_dummy.php 5 years ago ad_type_group.php 5 years ago ad_type_image.php 5 years ago ad_type_plain.php 4 years ago checks.php 4 years ago compatibility.php 4 years ago display-conditions.php 4 years ago filesystem.php 8 years ago frontend-notices.php 6 years ago frontend_checks.php 4 years ago inline-css.php 4 years ago plugin.php 4 years ago upgrades.php 6 years ago utils.php 4 years ago visitor-conditions.php 4 years ago widget.php 4 years ago
checks.php
381 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 $conflicting_plugins = array();
207
208 if ( defined( 'Publicize_Base' ) ) { // JetPack Publicize module.
209 $conflicting_plugins[] = 'Jetpack – Publicize';
210 }
211 if ( defined( 'PF__PLUGIN_DIR' ) ) { // Facebook Instant Articles & Google AMP Pages by PageFrog.
212 $conflicting_plugins[] = 'Facebook Instant Articles & Google AMP Pages by PageFrog';
213 }
214 if ( defined( 'GT_VERSION' ) ) { // GT ShortCodes.
215 $conflicting_plugins[] = 'GT ShortCodes';
216 }
217 if ( class_exists( 'SimilarPosts', false ) ) { // Similar Posts, https://de.wordpress.org/plugins/similar-posts/.
218 $conflicting_plugins[] = 'Similar Posts';
219 }
220
221 return $conflicting_plugins;
222 }
223
224 /**
225 * Check if any of the global hide ads options is set
226 * ignore RSS feed setting, because it is standard
227 *
228 * @since 1.7.10
229 * @return bool
230 */
231 public static function ads_disabled() {
232 $options = Advanced_Ads::get_instance()->options();
233 if ( isset( $options['disabled-ads'] ) && is_array( $options['disabled-ads'] ) ) {
234 foreach ( $options['disabled-ads'] as $_key => $_value ) {
235 // don’t warn if "RSS Feed", "404", or "REST API" option are enabled, because they are normally not critical.
236 if ( ! empty( $_value ) && ! in_array( (string) $_key, array( 'feed', '404', 'rest-api' ), true ) ) {
237 return true;
238 }
239 }
240 }
241 return false;
242 }
243
244 /**
245 * Check for required php extensions
246 *
247 * @return array
248 */
249 public static function php_extensions() {
250
251 $missing_extensions = array();
252
253 if ( ! extension_loaded( 'dom' ) ) {
254 $missing_extensions[] = 'dom';
255 }
256
257 if ( ! extension_loaded( 'mbstring' ) ) {
258 $missing_extensions[] = 'mbstring';
259 }
260
261 return $missing_extensions;
262 }
263
264 /**
265 * Get the list of Advanced Ads constant defined by the user.
266 *
267 * @return array
268 */
269 public static function get_defined_constants() {
270 $constants = apply_filters(
271 'advanced-ads-constants',
272 array(
273 'ADVADS_ADS_DISABLED',
274 'ADVADS_ALLOW_ADSENSE_ON_404',
275 'ADVADS_DISABLE_RESPONSIVE_IMAGES',
276 'ADVANCED_ADS_AD_DEBUG_FOR_ADMIN_ONLY',
277 'ADVANCED_ADS_DISABLE_ANALYTICS_ANONYMIZE_IP',
278 'ADVANCED_ADS_DISABLE_CHANGE',
279 'ADVANCED_ADS_DISABLE_CODE_HIGHLIGHTING',
280 'ADVANCED_ADS_DISABLE_SHORTCODE_BUTTON',
281 'ADVANCED_ADS_DISALLOW_PHP',
282 'ADVANCED_ADS_ENABLE_REVISIONS',
283 'ADVANCED_ADS_GEO_TEST_IP',
284 'ADVANCED_ADS_PRO_CUSTOM_POSITION_MOVE_INTO_HIDDEN',
285 'ADVANCED_ADS_PRO_PAGE_IMPR_EXDAYS',
286 'ADVANCED_ADS_PRO_REFERRER_EXDAYS',
287 'ADVANCED_ADS_RESPONSIVE_DISABLE_BROWSER_WIDTH',
288 'ADVANCED_ADS_SHOW_LICENSE_RESPONSE',
289 'ADVANCED_ADS_SUPPRESS_PLUGIN_ERROR_NOTICES',
290 'ADVANCED_ADS_TRACKING_DEBUG',
291 'ADVANCED_ADS_TRACKING_NO_HOURLY_LIMIT',
292 )
293 );
294
295 $result = array();
296 foreach ( $constants as $constant ) {
297 if ( defined( $constant ) ) {
298 $result[] = $constant;
299 }
300 }
301 return $result;
302 }
303
304
305 /**
306 * WP Engine hosting detected
307 *
308 * @return bool true if site is hosted by WP Engine
309 */
310 public static function wp_engine_hosting() {
311 if ( defined( 'WPE_APIKEY' ) ) {
312 return true;
313 }
314
315 return false;
316 }
317
318 /**
319 * Notice for Adblocker module if assets have expired
320 */
321 public static function assets_expired() {
322 $plugin_options = Advanced_Ads_Plugin::get_instance()->options();
323 $adblocker_options = Advanced_Ads_Ad_Blocker::get_instance()->options();
324
325 return ( ! empty( $plugin_options['use-adblocker'] ) && empty( $adblocker_options['module_can_work'] ) );
326 }
327
328 /**
329 * Check for other ads.txt plugins
330 *
331 * @return array
332 */
333 public static function ads_txt_plugins() {
334
335 $ads_txt_plugins = array();
336
337 // Ads.txt Manager.
338 if ( function_exists( 'tenup_display_ads_txt' ) ) {
339 $ads_txt_plugins[] = 'Ads.txt Manager';
340 }
341
342 // todo:
343 // ads-txt-admin/unveil-media-ads-txt.php
344 // simple-ads-txt/bs_ads_txt.php
345 // ads-txt-manager/adstxtmanager.php
346 // monetizemore-ads-txt/wp-ads-txt.php
347 // authorized-sellers-manager/ads-txt-publisher.php.
348
349 return $ads_txt_plugins;
350 }
351
352 /**
353 * Check for activated plugins that manage header or footer code
354 *
355 * @return array
356 */
357 public static function header_footer_plugins() {
358
359 $plugins = array();
360
361 // Header Footer Code Manager.
362 if ( function_exists( 'hfcm_options_install' ) ) {
363 $plugins[] = 'Header Footer Code Manager';
364 }
365 // Head, Footer and Post Injections.
366 if ( function_exists( 'hefo_template_redirect' ) ) {
367 $plugins[] = 'Head, Footer and Post Injections';
368 }
369 // Insert Headers and Footers /insert-headers-and-footers/.
370 if ( class_exists( 'InsertHeadersAndFooters', false ) ) {
371 $plugins[] = 'Insert Headers and Footers';
372 }
373 // Header and Footer Scripts /header-and-footer-scripts/.
374 if ( class_exists( 'HeaderAndFooterScripts', false ) ) {
375 $plugins[] = 'Header and Footer Scripts';
376 }
377
378 return $plugins;
379 }
380 }
381