PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.14.10
Advanced Ads – Ad Manager & AdSense v1.14.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 8 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 8 years ago ad_type_content.php 6 years ago ad_type_dummy.php 6 years ago ad_type_group.php 8 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_checks.php 6 years ago plugin.php 6 years ago upgrades.php 6 years ago utils.php 6 years ago visitor-conditions.php 6 years ago widget.php 6 years ago
checks.php
398 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( $add_ons === array() ) {
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( $status === 'valid' ) {
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 || $status !== 'valid' ){
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 * @return boolean true, when "Combine JavaScript files" is enabled
153 */
154 public static function is_wp_rocket_combine_js_enabled(){
155 if (self::active_wp_rocket()){
156 $settings = get_option("wp_rocket_settings");
157 if ($settings){
158 if (isset($settings['minify_concatenate_js']) && $settings['minify_concatenate_js']) return true;
159 }
160 }
161 return false;
162 }
163
164 /**
165 * Any AMP plugin enabled
166 *
167 * @return bool true if AMP plugin is installed
168 */
169 public static function active_amp_plugin(){
170 // Accelerated Mobile Pages
171 if( function_exists( 'ampforwp_is_amp_endpoint' ) ){
172 return true;
173 }
174
175 // AMP plugin
176 if( function_exists( 'is_amp_endpoint' ) ){
177 return true;
178 }
179
180 // other plugins
181 if ( function_exists( 'is_wp_amp' ) ){
182 return true;
183 }
184
185 return false;
186 }
187
188 /**
189 * checks if the preconditions are met to wrap an ad with <!--noptimize--> comments
190 * @return boolean
191 */
192 public static function requires_noptimize_wrapping(){
193 return Advanced_Ads_Checks::active_autoptimize() || Advanced_Ads_Checks::is_wp_rocket_combine_js_enabled();
194 }
195
196 /**
197 * check for additional conflicting plugins
198 *
199 * @return arr $plugins names of conflicting plugins
200 */
201 public static function conflicting_plugins(){
202
203 $conflicting_plugins = array();
204
205 if( defined( 'Publicize_Base' ) ){ // JetPack Publicize module
206 $conflicting_plugins[] = 'Jetpack – Publicize';
207 }
208 if( defined( 'PF__PLUGIN_DIR' ) ){ // Facebook Instant Articles & Google AMP Pages by PageFrog
209 $conflicting_plugins[] = 'Facebook Instant Articles & Google AMP Pages by PageFrog';
210 }
211 if( defined( 'GT_VERSION' ) ){ // GT ShortCodes
212 $conflicting_plugins[] = 'GT ShortCodes';
213 }
214 if( class_exists( 'ITSEC_Core', false ) && defined ( 'AAP_VERSION' ) ){ // iThemes Security, but only if Pro is enabled
215 $conflicting_plugins[] = 'iThemes Security';
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" and "404" option are enabled, because they are normally not critical
236 if( !empty( $_value ) && !in_array($_key, array( 'feed', '404') ) ){
237 return true;
238 }
239 }
240 }
241 return false;
242 }
243
244 /**
245 * check for required php extensions
246 *
247 * @since 1.8.21
248 * @return bool
249 */
250 public static function php_extensions(){
251
252 $missing_extensions = array();
253
254 if( !extension_loaded('dom') ){
255 $missing_extensions[] = 'dom';
256 }
257
258 if( !extension_loaded('xml') ){
259 $missing_extensions[] = 'xml';
260 }
261
262 return $missing_extensions;
263 }
264
265 /**
266 * Get the list of Advanced Ads constant defined by the user.
267 *
268 * @return array
269 */
270 public static function get_defined_constants() {
271 $constants = apply_filters( 'advanced-ads-constants', array(
272 'ADVADS_ADS_DISABLED',
273 'ADVADS_ALLOW_ADSENSE_ON_404',
274 'ADVADS_DISABLE_RESPONSIVE_IMAGES',
275 'ADVANCED_ADS_AD_DEBUG_FOR_ADMIN_ONLY',
276 'ADVANCED_ADS_DISABLE_ANALYTICS_ANONYMIZE_IP',
277 'ADVANCED_ADS_DISABLE_CHANGE',
278 'ADVANCED_ADS_DISABLE_CODE_HIGHLIGHTING',
279 'ADVANCED_ADS_DISABLE_FRONTEND_AD_WEIGHT_UPDATE',
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 $result = array();
295 foreach ( $constants as $constant ) {
296 if ( defined( $constant ) ) {
297 $result[] = $constant;
298 }
299 }
300 return $result;
301 }
302
303
304 /**
305 * WP Engine hosting detected
306 *
307 * @return bool true if site is hosted by WP Engine
308 */
309 public static function wp_engine_hosting(){
310 if( defined( 'WPE_APIKEY' ) ){
311 return true;
312 }
313
314 return false;
315 }
316
317 /**
318 * Notice for Adblocker module if assets have expired
319 */
320 public static function assets_expired() {
321 $plugin_options = Advanced_Ads_Plugin::get_instance()->options();
322 $adblocker_options = Advanced_Ads_Ad_Blocker::get_instance()->options();
323
324 return ( ! empty ( $plugin_options['use-adblocker'] ) && empty ( $adblocker_options['module_can_work'] ) );
325 }
326
327 /**
328 * check for potential jQuery errors
329 * only script, so no return, but direct output
330 *
331 */
332 public static function jquery_ui_conflict(){
333 ?>
334 <script>// string from jquery-ui source code
335 jQuery(document).ready(function(){
336 var needle = 'var g="string"==typeof f,h=c.call(arguments,1)';
337 if ( jQuery.fn.button.toString().indexOf( needle ) === -1 || jQuery.fn.tooltip.toString().indexOf( needle ) === -1 ) {
338 advads_push_notice( 'jquery_ui_conflict' );
339 }
340 });
341 </script><?php
342 }
343
344 /**
345 * Check for other ads.txt plugins
346 *
347 * @return array
348 */
349 public static function ads_txt_plugins(){
350
351 $ads_txt_plugins = array();
352
353 // Ads.txt Manager
354 if( function_exists( 'tenup_display_ads_txt' ) ) {
355 $ads_txt_plugins[] = 'Ads.txt Manager';
356 }
357
358 // todo:
359 // ads-txt-admin/unveil-media-ads-txt.php
360 // simple-ads-txt/bs_ads_txt.php
361 // ads-txt-manager/adstxtmanager.php
362 // monetizemore-ads-txt/wp-ads-txt.php
363 // authorized-sellers-manager/ads-txt-publisher.php' ) ) {
364
365 return $ads_txt_plugins;
366 }
367
368 /**
369 * Check for activated plugins that manage header or footer code
370 *
371 * @return array
372 */
373 public static function header_footer_plugins(){
374
375 $plugins = array();
376
377 // Header Footer Code Manager
378 if( function_exists( 'hfcm_options_install' ) ) {
379 $plugins[] = 'Header Footer Code Manager';
380 }
381 // Head, Footer and Post Injections
382 if( function_exists( 'hefo_template_redirect' ) ) {
383 $plugins[] = 'Head, Footer and Post Injections';
384 }
385 // Insert Headers and Footers /insert-headers-and-footers/
386 if( class_exists( 'InsertHeadersAndFooters', false ) ) {
387 $plugins[] = 'Insert Headers and Footers';
388 }
389 // Header and Footer Scripts /header-and-footer-scripts/
390 if( class_exists( 'HeaderAndFooterScripts', false ) ) {
391 $plugins[] = 'Header and Footer Scripts';
392 }
393
394
395 return $plugins;
396 }
397 }
398