PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.24.1
Advanced Ads – Ad Manager & AdSense v1.24.1
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 5 years ago ad-ajax.php 5 years ago ad-debug.php 6 years ago ad-health-notices.php 6 years ago ad-model.php 5 years ago ad-select.php 9 years ago ad.php 5 years ago ad_ajax_callbacks.php 5 years ago ad_group.php 5 years ago ad_placements.php 5 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 5 years ago checks.php 5 years ago compatibility.php 5 years ago display-conditions.php 5 years ago filesystem.php 8 years ago frontend-notices.php 6 years ago frontend_checks.php 5 years ago plugin.php 5 years ago upgrades.php 6 years ago utils.php 5 years ago visitor-conditions.php 6 years ago widget.php 6 years ago
checks.php
382 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_FRONTEND_AD_WEIGHT_UPDATE',
281 'ADVANCED_ADS_DISABLE_SHORTCODE_BUTTON',
282 'ADVANCED_ADS_DISALLOW_PHP',
283 'ADVANCED_ADS_ENABLE_REVISIONS',
284 'ADVANCED_ADS_GEO_TEST_IP',
285 'ADVANCED_ADS_PRO_CUSTOM_POSITION_MOVE_INTO_HIDDEN',
286 'ADVANCED_ADS_PRO_PAGE_IMPR_EXDAYS',
287 'ADVANCED_ADS_PRO_REFERRER_EXDAYS',
288 'ADVANCED_ADS_RESPONSIVE_DISABLE_BROWSER_WIDTH',
289 'ADVANCED_ADS_SHOW_LICENSE_RESPONSE',
290 'ADVANCED_ADS_SUPPRESS_PLUGIN_ERROR_NOTICES',
291 'ADVANCED_ADS_TRACKING_DEBUG',
292 'ADVANCED_ADS_TRACKING_NO_HOURLY_LIMIT',
293 )
294 );
295
296 $result = array();
297 foreach ( $constants as $constant ) {
298 if ( defined( $constant ) ) {
299 $result[] = $constant;
300 }
301 }
302 return $result;
303 }
304
305
306 /**
307 * WP Engine hosting detected
308 *
309 * @return bool true if site is hosted by WP Engine
310 */
311 public static function wp_engine_hosting() {
312 if ( defined( 'WPE_APIKEY' ) ) {
313 return true;
314 }
315
316 return false;
317 }
318
319 /**
320 * Notice for Adblocker module if assets have expired
321 */
322 public static function assets_expired() {
323 $plugin_options = Advanced_Ads_Plugin::get_instance()->options();
324 $adblocker_options = Advanced_Ads_Ad_Blocker::get_instance()->options();
325
326 return ( ! empty( $plugin_options['use-adblocker'] ) && empty( $adblocker_options['module_can_work'] ) );
327 }
328
329 /**
330 * Check for other ads.txt plugins
331 *
332 * @return array
333 */
334 public static function ads_txt_plugins() {
335
336 $ads_txt_plugins = array();
337
338 // Ads.txt Manager.
339 if ( function_exists( 'tenup_display_ads_txt' ) ) {
340 $ads_txt_plugins[] = 'Ads.txt Manager';
341 }
342
343 // todo:
344 // ads-txt-admin/unveil-media-ads-txt.php
345 // simple-ads-txt/bs_ads_txt.php
346 // ads-txt-manager/adstxtmanager.php
347 // monetizemore-ads-txt/wp-ads-txt.php
348 // authorized-sellers-manager/ads-txt-publisher.php.
349
350 return $ads_txt_plugins;
351 }
352
353 /**
354 * Check for activated plugins that manage header or footer code
355 *
356 * @return array
357 */
358 public static function header_footer_plugins() {
359
360 $plugins = array();
361
362 // Header Footer Code Manager.
363 if ( function_exists( 'hfcm_options_install' ) ) {
364 $plugins[] = 'Header Footer Code Manager';
365 }
366 // Head, Footer and Post Injections.
367 if ( function_exists( 'hefo_template_redirect' ) ) {
368 $plugins[] = 'Head, Footer and Post Injections';
369 }
370 // Insert Headers and Footers /insert-headers-and-footers/.
371 if ( class_exists( 'InsertHeadersAndFooters', false ) ) {
372 $plugins[] = 'Insert Headers and Footers';
373 }
374 // Header and Footer Scripts /header-and-footer-scripts/.
375 if ( class_exists( 'HeaderAndFooterScripts', false ) ) {
376 $plugins[] = 'Header and Footer Scripts';
377 }
378
379 return $plugins;
380 }
381 }
382