PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.13
Advanced Ads – Ad Manager & AdSense v1.13
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 7 years ago ad-ajax.php 7 years ago ad-debug.php 8 years ago ad-health-notices.php 7 years ago ad-model.php 8 years ago ad-select.php 9 years ago ad.php 7 years ago ad_ajax_callbacks.php 7 years ago ad_group.php 7 years ago ad_placements.php 7 years ago ad_type_abstract.php 8 years ago ad_type_content.php 7 years ago ad_type_dummy.php 7 years ago ad_type_group.php 8 years ago ad_type_image.php 7 years ago ad_type_plain.php 7 years ago checks.php 7 years ago compatibility.php 7 years ago display-conditions.php 7 years ago filesystem.php 8 years ago frontend_checks.php 7 years ago plugin.php 7 years ago upgrades.php 7 years ago utils.php 7 years ago visitor-conditions.php 7 years ago widget.php 7 years ago
checks.php
326 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.4;
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 5.4
25 *
26 * @return bool true if 5.4 and 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 * any plugin updates available
76 *
77 * @return bool true if plugin updates are available
78 */
79 public static function plugin_updates_available(){
80
81 // iterate throught the plugins and check if any of them is ours (i.e., starts with the string "advanced-ads")
82 $update_plugins = get_site_transient( 'update_plugins' );
83 if ( ! empty( $update_plugins->response ) ) {
84 foreach( $update_plugins->response as $_key => $_responsive ){
85 if( 0 === strpos( $_key, 'advanced-ads') ){
86 return true;
87 }
88 }
89 }
90
91 return false;
92 }
93
94 /**
95 * check if license keys are missing or invalid or expired
96 *
97 * @since 1.6.6
98 * @update 1.6.9 moved from Advanced_Ads_Plugin
99 * @update 1.8.21 also check for expired licenses
100 * @return true if there are missing licenses
101 */
102 public static function licenses_invalid(){
103
104 $add_ons = apply_filters( 'advanced-ads-add-ons', array() );
105
106 if( $add_ons === array() ) {
107 Advanced_Ads_Ad_Health_Notices::get_instance()->remove( 'license_invalid' );
108 return false;
109 }
110
111 foreach( $add_ons as $_add_on_key => $_add_on ){
112 $status = Advanced_Ads_Admin_Licenses::get_instance()->get_license_status( $_add_on['options_slug'] );
113
114 // check expiry date
115 $expiry_date = Advanced_Ads_Admin_Licenses::get_instance()->get_license_expires( $_add_on['options_slug'] );
116
117 if( $expiry_date && 'lifetime' !== $expiry_date && strtotime( $expiry_date ) < time() ){
118 return true;
119 }
120
121 // don’t check if license is valid
122 if( $status === 'valid' ) {
123 continue;
124 }
125
126 // retrieve our license key from the DB
127 $licenses = Advanced_Ads_Admin_Licenses::get_instance()->get_licenses();
128
129 $license_key = isset($licenses[$_add_on_key]) ? $licenses[$_add_on_key] : false;
130
131 if( ! $license_key || $status !== 'valid' ){
132 return true;
133 }
134 }
135
136 // remove notice, if one is given
137 Advanced_Ads_Ad_Health_Notices::get_instance()->remove( 'license_invalid' );
138 return false;
139 }
140
141 /**
142 * Autoptimize plugin installed
143 * can change ad tags, especially inline css and scripts
144 *
145 * @link https://wordpress.org/plugins/autoptimize/
146 * @return bool true if Autoptimize is installed
147 */
148 public static function active_autoptimize(){
149
150 if( defined( 'AUTOPTIMIZE_PLUGIN_VERSION' ) ){
151 return true;
152 }
153
154 return false;
155 }
156
157 /**
158 * WP rocket plugin installed
159 *
160 * @return bool true if WP rocket is installed
161 */
162 public static function active_wp_rocket(){
163 if( defined( 'WP_ROCKET_SLUG' ) ){
164 return true;
165 }
166
167 return false;
168 }
169
170 /**
171 * checks the settings of wp rocket to find out if combining of javascript files is enabled
172 * @return boolean true, when "Combine JavaScript files" is enabled
173 */
174 public static function is_wp_rocket_combine_js_enabled(){
175 if (self::active_wp_rocket()){
176 $settings = get_option("wp_rocket_settings");
177 if ($settings){
178 if (isset($settings['minify_concatenate_js']) && $settings['minify_concatenate_js']) return true;
179 }
180 }
181 return false;
182 }
183
184 /**
185 * checks if the preconditions are met to wrap an ad with <!--noptimize--> comments
186 * @return boolean
187 */
188 public static function requires_noptimize_wrapping(){
189 return Advanced_Ads_Checks::active_autoptimize() || Advanced_Ads_Checks::is_wp_rocket_combine_js_enabled();
190 }
191
192 /**
193 * check for additional conflicting plugins
194 *
195 * @return arr $plugins names of conflicting plugins
196 */
197 public static function conflicting_plugins(){
198
199 $conflicting_plugins = array();
200
201 if( defined( 'Publicize_Base' ) ){ // JetPack Publicize module
202 $conflicting_plugins[] = 'Jetpack – Publicize';
203 }
204 if( defined( 'PF__PLUGIN_DIR' ) ){ // Facebook Instant Articles & Google AMP Pages by PageFrog
205 $conflicting_plugins[] = 'Facebook Instant Articles & Google AMP Pages by PageFrog';
206 }
207 if( defined( 'GT_VERSION' ) ){ // GT ShortCodes
208 $conflicting_plugins[] = 'GT ShortCodes';
209 }
210 if( class_exists( 'ITSEC_Core', false ) && defined ( 'AAP_VERSION' ) ){ // iThemes Security, but only if Pro is enabled
211 $conflicting_plugins[] = 'iThemes Security';
212 }
213 if( class_exists( 'SimilarPosts', false ) ){ // Similar Posts, https://de.wordpress.org/plugins/similar-posts/
214 $conflicting_plugins[] = 'Similar Posts';
215 }
216
217 return $conflicting_plugins;
218 }
219
220 /**
221 * check if any of the global hide ads options is set
222 * ignore RSS feed setting, because it is standard
223 *
224 * @since 1.7.10
225 * @return bool
226 */
227 public static function ads_disabled(){
228 $options = Advanced_Ads::get_instance()->options();
229 if( isset( $options['disabled-ads'] ) && is_array( $options['disabled-ads'] ) ){
230 foreach( $options['disabled-ads'] as $_key => $_value ){
231 // don’t warn if "RSS Feed" and "404" option are enabled, because they are normally not critical
232 if( !empty( $_value ) && !in_array($_key, array( 'feed', '404') ) ){
233 return true;
234 }
235 }
236 }
237 return false;
238 }
239
240 /**
241 * check for required php extensions
242 *
243 * @since 1.8.21
244 * @return bool
245 */
246 public static function php_extensions(){
247
248 $missing_extensions = array();
249
250 if( !extension_loaded('dom') ){
251 $missing_extensions[] = 'dom';
252 }
253
254 if( !extension_loaded('xml') ){
255 $missing_extensions[] = 'xml';
256 }
257
258 return $missing_extensions;
259 }
260
261 /**
262 * Get the list of Advanced Ads constant defined by the user.
263 *
264 * @return array
265 */
266 public static function get_defined_constants() {
267 $constants = apply_filters( 'advanced-ads-constants', array(
268 'ADVADS_ADS_DISABLED',
269 'ADVADS_ALLOW_ADSENSE_ON_404',
270 'ADVADS_DISABLE_RESPONSIVE_IMAGES',
271 'ADVANCED_ADS_AD_DEBUG_FOR_ADMIN_ONLY',
272 'ADVANCED_ADS_DISABLE_ANALYTICS_ANONYMIZE_IP',
273 'ADVANCED_ADS_DISABLE_CHANGE',
274 'ADVANCED_ADS_DISABLE_CODE_HIGHLIGHTING',
275 'ADVANCED_ADS_DISABLE_FRONTEND_AD_WEIGHT_UPDATE',
276 'ADVANCED_ADS_DISABLE_SHORTCODE_BUTTON',
277 'ADVANCED_ADS_DISALLOW_PHP',
278 'ADVANCED_ADS_ENABLE_REVISIONS',
279 'ADVANCED_ADS_GEO_TEST_IP',
280 'ADVANCED_ADS_PRO_CUSTOM_POSITION_MOVE_INTO_HIDDEN',
281 'ADVANCED_ADS_PRO_PAGE_IMPR_EXDAYS',
282 'ADVANCED_ADS_PRO_REFERRER_EXDAYS',
283 'ADVANCED_ADS_RESPONSIVE_DISABLE_BROWSER_WIDTH',
284 'ADVANCED_ADS_SHOW_LICENSE_RESPONSE',
285 'ADVANCED_ADS_SUPPRESS_PLUGIN_ERROR_NOTICES',
286 'ADVANCED_ADS_TRACKING_DEBUG',
287 'ADVANCED_ADS_TRACKING_NO_HOURLY_LIMIT',
288 ) );
289
290 $result = array();
291 foreach ( $constants as $constant ) {
292 if ( defined( $constant ) ) {
293 $result[] = $constant;
294 }
295 }
296 return $result;
297 }
298
299 /**
300 * Notice for Adblocker module if assets have expired
301 */
302 public static function assets_expired() {
303 $plugin_options = Advanced_Ads_Plugin::get_instance()->options();
304 $adblocker_options = Advanced_Ads_Ad_Blocker::get_instance()->options();
305
306 return ( ! empty ( $plugin_options['use-adblocker'] ) && empty ( $adblocker_options['module_can_work'] ) );
307 }
308
309 /**
310 * check for potential jQuery errors
311 * only script, so no return, but direct output
312 *
313 */
314 public static function jquery_ui_conflict(){
315 ?>
316 <script>// string from jquery-ui source code
317 jQuery(document).ready(function(){
318 var needle = 'var g="string"==typeof f,h=c.call(arguments,1)';
319 if ( jQuery.fn.button.toString().indexOf( needle ) === -1 || jQuery.fn.tooltip.toString().indexOf( needle ) === -1 ) {
320 advads_push_notice( 'jquery_ui_conflict' );
321 }
322 });
323 </script><?php
324 }
325 }
326