PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.6.6
Advanced Ads – Ad Manager & AdSense v1.6.6
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 / plugin.php
advanced-ads / classes Last commit date
EDD_SL_Plugin_Updater.php 11 years ago ad-ajax.php 10 years ago ad-model.php 11 years ago ad-select.php 11 years ago ad.php 10 years ago ad_ajax_callbacks.php 11 years ago ad_group.php 11 years ago ad_placements.php 10 years ago ad_type_abstract.php 11 years ago ad_type_content.php 11 years ago ad_type_plain.php 11 years ago plugin.php 10 years ago visitor-conditions.php 10 years ago widget.php 10 years ago
plugin.php
549 lines
1 <?php
2
3 /**
4 * Wordpress integration and definitions:
5 *
6 * - posttypes
7 * - taxonomy
8 * - textdomain
9 *
10 * @since 1.5.0
11 */
12 class Advanced_Ads_Plugin {
13
14 /**
15 *
16 * @var Advanced_Ads_Plugin
17 */
18 protected static $instance;
19
20 /**
21 *
22 * @var Advanced_Ads_Model
23 */
24 protected $model;
25
26 /**
27 * plugin options
28 *
29 * @since 1.0.1
30 * @var array (if loaded)
31 */
32 protected $options;
33
34 /**
35 * interal plugin options – set by the plugin
36 *
37 * @since 1.4.5
38 * @var array (if loaded)
39 */
40 protected $internal_options;
41
42 private function __construct() {
43 register_activation_hook( dirname( __FILE__ ), array( $this, 'activate' ) );
44 register_deactivation_hook( dirname( __FILE__ ), array( $this, 'deactivate' ) );
45
46 add_action( 'plugins_loaded', array( $this, 'wp_plugins_loaded' ) );
47 }
48
49 /**
50 *
51 * @return Advanced_Ads_Plugin
52 */
53 public static function get_instance() {
54 // If the single instance hasn't been set, set it now.
55 if ( null === self::$instance ) {
56 self::$instance = new self;
57 }
58
59 return self::$instance;
60 }
61
62 /**
63 *
64 * @param Advanced_Ads_Model $model
65 */
66 public function set_model(Advanced_Ads_Model $model) {
67 $this->model = $model;
68 }
69
70 public function wp_plugins_loaded() {
71 // Load plugin text domain
72 $this->load_plugin_textdomain();
73
74 // activate plugin when new blog is added on multisites // -TODO this is admin-only
75 add_action( 'wpmu_new_blog', array( $this, 'activate_new_site' ) );
76
77 // Load public-facing style sheet and JavaScript.
78 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
79 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
80
81 // add short codes
82 add_shortcode( 'the_ad', array( $this, 'shortcode_display_ad' ) );
83 add_shortcode( 'the_ad_group', array( $this, 'shortcode_display_ad_group' ) );
84 add_shortcode( 'the_ad_placement', array( $this, 'shortcode_display_ad_placement' ) );
85
86 // remove default ad group menu item // -TODO only for admin
87 add_action( 'admin_menu', array( $this, 'remove_taxonomy_menu_item' ) );
88 // load widgets
89 add_action( 'widgets_init', array( $this, 'widget_init' ) );
90
91 // update add-ons
92 add_action( 'admin_init', array($this, 'add_on_updater'), 1 );
93
94 }
95
96 /**
97 * Register and enqueue public-facing style sheet.
98 *
99 * @since 1.0.0
100 */
101 public function enqueue_styles() {
102 // wp_enqueue_style( $this->get_plugin_slug() . '-plugin-styles', plugins_url('assets/css/public.css', __FILE__), array(), ADVADS_VERSION);
103 }
104
105 /**
106 * Return the plugin slug.
107 *
108 * @since 1.0.0
109 * @return Plugin slug variable.
110 */
111 public function get_plugin_slug() {
112 return ADVADS_SLUG;
113 }
114
115 /**
116 * Register and enqueues public-facing JavaScript files.
117 *
118 * @since 1.0.0
119 */
120 public function enqueue_scripts() {
121 // wp_enqueue_script( $this->get_plugin_slug() . '-plugin-script', plugins_url('assets/js/public.js', __FILE__), array('jquery'), ADVADS_VERSION);
122 $options = $this->options();
123 if ( ! empty($options['advanced-js']) ){
124 wp_enqueue_script( $this->get_plugin_slug() . '-advanced-js', ADVADS_BASE_URL . 'public/assets/js/advanced.js', array( 'jquery' ), ADVADS_VERSION );
125 }
126 }
127
128 public function widget_init() {
129 register_widget( 'Advanced_Ads_Widget' );
130 }
131
132 /**
133 * Fired when a new site is activated with a WPMU environment.
134 *
135 * @since 1.0.0
136 * @param int $blog_id ID of the new blog.
137 */
138 public function activate_new_site($blog_id) {
139
140 if ( 1 !== did_action( 'wpmu_new_blog' ) ) {
141 return;
142 }
143
144 switch_to_blog( $blog_id );
145 $this->single_activate();
146 restore_current_blog();
147 }
148
149 /**
150 * Fired for each blog when the plugin is activated.
151 *
152 * @since 1.0.0
153 */
154 protected function single_activate() {
155 $this->post_types_rewrite_flush();
156 // -TODO inform modules
157 }
158
159 /**
160 * Fired for each blog when the plugin is deactivated.
161 *
162 * @since 1.0.0
163 */
164 protected function single_deactivate() {
165 // -TODO inform modules
166 }
167
168 /**
169 * Load the plugin text domain for translation.
170 *
171 * @since 1.0.0
172 */
173 public function load_plugin_textdomain() {
174 // $locale = apply_filters('advanced-ads-plugin-locale', get_locale(), $domain);
175 load_plugin_textdomain( ADVADS_SLUG, false, ADVADS_BASE_DIR . '/languages' );
176 }
177
178 /**
179 * Fired when the plugin is activated.
180 *
181 * @since 1.0.0
182 * @param boolean $network_wide True if WPMU superadmin uses
183 * "Network Activate" action, false if
184 * WPMU is disabled or plugin is
185 * activated on an individual blog.
186 */
187 public function activate($network_wide) {
188
189 if ( function_exists( 'is_multisite' ) && is_multisite() ) {
190
191 if ( $network_wide ) {
192
193 // Get all blog ids
194 $blog_ids = $this->model->get_blog_ids();
195
196 foreach ( $blog_ids as $blog_id ) {
197
198 switch_to_blog( $blog_id );
199 $this->single_activate();
200 }
201
202 restore_current_blog();
203 } else {
204 $this->single_activate();
205 }
206 } else {
207 $this->single_activate();
208 }
209 }
210
211 /**
212 * Fired when the plugin is deactivated.
213 *
214 * @since 1.0.0
215 * @param boolean $network_wide
216 *
217 * True if WPMU superadmin uses
218 * "Network Deactivate" action, false if
219 * WPMU is disabled or plugin is
220 * deactivated on an individual blog.
221 */
222 public function deactivate($network_wide) {
223
224 if ( function_exists( 'is_multisite' ) && is_multisite() ) {
225
226 if ( $network_wide ) {
227
228 // Get all blog ids
229 $blog_ids = $this->model->get_blog_ids();
230
231 foreach ( $blog_ids as $blog_id ) {
232
233 switch_to_blog( $blog_id );
234 $this->single_deactivate();
235 }
236
237 restore_current_blog();
238 } else {
239 $this->single_deactivate();
240 }
241 } else {
242 $this->single_deactivate();
243 }
244 }
245
246 /**
247 * flush rewrites on plugin activation so permalinks for them work from the beginning on
248 *
249 * @since 1.0.0
250 * @link http://codex.wordpress.org/Function_Reference/register_post_type#Flushing_Rewrite_on_Activation
251 */
252 public function post_types_rewrite_flush(){
253 // load custom post type
254 Advanced_Ads::get_instance()->create_post_types();
255 // flush rewrite rules
256 flush_rewrite_rules();
257 }
258
259 /**
260 * remove WP tag edit page for the ad group taxonomy
261 * needed, because we can’t remove it with `show_ui` without also removing the meta box
262 *
263 * @since 1.0.0
264 */
265 public function remove_taxonomy_menu_item() {
266 remove_submenu_page( 'edit.php?post_type=advanced_ads', 'edit-tags.php?taxonomy=advanced_ads_groups&amp;post_type=advanced_ads' );
267 }
268
269 /**
270 * shortcode to include ad in frontend
271 *
272 * @since 1.0.0
273 * @param arr $atts
274 */
275 public function shortcode_display_ad($atts){
276 $id = isset($atts['id']) ? (int) $atts['id'] : 0;
277
278 // use the public available function here
279 return get_ad( $id );
280 }
281
282 /**
283 * shortcode to include ad from an ad group in frontend
284 *
285 * @since 1.0.0
286 * @param arr $atts
287 */
288 public function shortcode_display_ad_group($atts){
289 $id = isset($atts['id']) ? (int) $atts['id'] : 0;
290
291 // use the public available function here
292 return get_ad_group( $id );
293 }
294
295 /**
296 * shortcode to display content of an ad placement in frontend
297 *
298 * @since 1.1.0
299 * @param arr $atts
300 */
301 public function shortcode_display_ad_placement($atts){
302 $id = isset($atts['id']) ? (string) $atts['id'] : '';
303
304 // use the public available function here
305 return get_ad_placement( $id );
306 }
307
308 /**
309 * return plugin options
310 * these are the options updated by the user
311 *
312 * @since 1.0.1
313 * @return array $options
314 * @todo parse default options
315 */
316 public function options() {
317 if ( ! isset( $this->options ) ) {
318 $this->options = get_option( ADVADS_SLUG, array() );
319 }
320
321 return $this->options;
322 }
323
324 /**
325 * update plugin options (not for settings page, but if automatic options are needed)
326 *
327 * @since 1.5.1
328 * @param array $options new options
329 */
330 public function update_options( array $options ) {
331 // do not allow to clear options
332 if ( $options === array() ) {
333 return;
334 }
335
336 $this->options = $options;
337 update_option( ADVADS_SLUG, $options );
338 }
339
340 /**
341 * return internal plugin options
342 * these are options set by the plugin
343 *
344 * @since 1.0.1
345 * @return array $options
346 * @todo parse default options
347 */
348 public function internal_options() {
349 if ( ! isset( $this->internal_options ) ) {
350 $defaults = array(
351 'version' => ADVADS_VERSION,
352 'installed' => time(), // when was this installed
353 );
354 $this->internal_options = get_option( ADVADS_SLUG . '-internal', array() );
355
356 // save defaults
357 if($this->internal_options === array()){
358 $this->internal_options = $defaults;
359 $this->update_internal_options($this->internal_options);
360 }
361
362 // for versions installed prior to 1.5.3 set installed date for now
363 if( ! isset( $this->internal_options['installed'] )){
364 $this->internal_options['installed'] = time();
365 $this->update_internal_options($this->internal_options);
366 }
367 }
368
369 return $this->internal_options;
370 }
371
372 /**
373 * update internal plugin options
374 *
375 * @since 1.5.1
376 * @param array $options new internal options
377 */
378 public function update_internal_options( array $options ) {
379 // do not allow to clear options
380 if ( $options === array() ) {
381 return;
382 }
383
384 $this->internal_options = $options;
385 update_option( ADVADS_SLUG . '-internal', $options );
386 }
387
388 /*
389 * add-on updater
390 *
391 * @since 1.5.7
392 *
393 */
394 public function add_on_updater(){
395
396 /**
397 * list of registered add ons
398 * contains:
399 * name
400 * version
401 * path
402 * options_slug
403 * short option slug (=key)
404 */
405 $add_ons = apply_filters( 'advanced-ads-add-ons', array() );
406
407 if( $add_ons === array() ) {
408 return;
409 }
410
411 foreach( $add_ons as $_add_on_key => $_add_on ){
412
413 // check if a license expired over time
414 $expiry_date = get_option($_add_on['options_slug'] . '-license-expires', false);
415 $now = time();
416 if( $expiry_date && strtotime( $expiry_date ) < $now ){
417 // remove license status
418 delete_option( $_add_on['options_slug'] . '-license-status' );
419 continue;
420 }
421
422 // check status
423 if( get_option($_add_on['options_slug'] . '-license-status', false) !== 'valid' ) {
424 continue;
425 }
426
427 // retrieve our license key from the DB
428 $licenses = get_option(ADVADS_SLUG . '-licenses', array());
429 $license_key = isset($licenses[$_add_on_key]) ? $licenses[$_add_on_key] : '';
430
431 // setup the updater
432 if( $license_key ){
433 new EDD_SL_Plugin_Updater( ADVADS_URL, $_add_on['path'], array(
434 'version' => $_add_on['version'],
435 'license' => $license_key,
436 'item_name' => $_add_on['name'],
437 'author' => 'Thomas Maier'
438 )
439 );
440 }
441 }
442 }
443
444 /**
445 * check if license keys are missing or invalid
446 *
447 * @since 1.6.6
448 * @return true if there are missing licenses
449 */
450 static function check_licenses_invalid(){
451
452 $add_ons = apply_filters( 'advanced-ads-add-ons', array() );
453
454 if( $add_ons === array() ) {
455 return false;
456 }
457
458 foreach( $add_ons as $_add_on_key => $_add_on ){
459 $status = get_option($_add_on['options_slug'] . '-license-status', false);
460
461 // don’t check if license is valid
462 if( $status === 'valid' ) {
463 continue;
464 }
465
466 // retrieve our license key from the DB
467 $licenses = get_option(ADVADS_SLUG . '-licenses', array());
468
469 $license_key = isset($licenses[$_add_on_key]) ? $licenses[$_add_on_key] : false;
470
471 if( ! $license_key || $status !== 'valid' ){
472 return true;
473 }
474 }
475
476 return false;
477 }
478
479 /**
480 * check if license keys are going to expire within next 14 days
481 *
482 * @since 1.6.6
483 * @return true if there are expiring licenses
484 */
485 static function check_licenses_expire(){
486
487 $add_ons = apply_filters( 'advanced-ads-add-ons', array() );
488
489 if( $add_ons === array() ) {
490 return false;
491 }
492
493 $now = time();
494
495 foreach( $add_ons as $_add_on_key => $_add_on ){
496 // don’t display error for invalid licenses
497 if( get_option($_add_on['options_slug'] . '-license-status', false) === 'invalid' ) {
498 continue;
499 }
500
501 $expiry_date = get_option($_add_on['options_slug'] . '-license-expires', false);
502
503 if( $expiry_date ){
504 $expiry_date_t = strtotime( $expiry_date );
505 $in_two_weeks = time() + ( WEEK_IN_SECONDS * 2) ;
506 // check if expiry date is within next comming 2 weeks
507 if( $expiry_date_t < $in_two_weeks && $expiry_date_t >= $now ){
508 return true;
509 }
510
511 }
512 }
513
514 return false;
515 }
516
517 /**
518 * check if license keys are already expired
519 *
520 * @since 1.6.6
521 * @return true if there are expired licenses
522 */
523 static function check_licenses_expired(){
524
525 $add_ons = apply_filters( 'advanced-ads-add-ons', array() );
526
527 if( $add_ons === array() ) {
528 return false;
529 }
530
531 $now = time();
532
533 foreach( $add_ons as $_add_on_key => $_add_on ){
534 // don’t display error for invalid licenses
535 if( get_option($_add_on['options_slug'] . '-license-status', false) === 'invalid' ) {
536 continue;
537 }
538
539 $expiry_date = get_option($_add_on['options_slug'] . '-license-expires', false);
540
541 if( $expiry_date && strtotime( $expiry_date ) < $now ){
542 return true;
543 }
544 }
545
546 return false;
547 }
548 }
549