PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.7.4.3
Advanced Ads – Ad Manager & AdSense v1.7.4.3
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 10 years ago ad-ajax.php 10 years ago ad-model.php 10 years ago ad-select.php 10 years ago ad.php 10 years ago ad_ajax_callbacks.php 10 years ago ad_group.php 10 years ago ad_placements.php 10 years ago ad_type_abstract.php 11 years ago ad_type_content.php 10 years ago ad_type_group.php 10 years ago ad_type_image.php 10 years ago ad_type_plain.php 10 years ago checks.php 10 years ago display-conditions.php 10 years ago plugin.php 10 years ago upgrades.php 10 years ago visitor-conditions.php 10 years ago widget.php 10 years ago
plugin.php
511 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 * @var Advanced_Ads_Plugin
16 */
17 protected static $instance;
18
19 /**
20 *
21 * @var Advanced_Ads_Model
22 */
23 protected $model;
24
25 /**
26 * plugin options
27 *
28 * @since 1.0.1
29 * @var array (if loaded)
30 */
31 protected $options;
32
33 /**
34 * interal plugin options – set by the plugin
35 *
36 * @since 1.4.5
37 * @var array (if loaded)
38 */
39 protected $internal_options;
40
41 /**
42 * default prefix of selectors (id, class) in the frontend
43 * can be changed by options
44 *
45 * @var Advanced_Ads_Plugin
46 */
47 const DEFAULT_FRONTEND_PREFIX = 'advads-';
48
49 /**
50 *
51 * @var frontend prefix for classes and IDs
52 */
53 private $frontend_prefix;
54
55
56 private function __construct() {
57 register_activation_hook( ADVADS_BASE, array( $this, 'activate' ) );
58 register_deactivation_hook( ADVADS_BASE, array( $this, 'deactivate' ) );
59
60 add_action( 'plugins_loaded', array( $this, 'wp_plugins_loaded' ) );
61 }
62
63 /**
64 *
65 * @return Advanced_Ads_Plugin
66 */
67 public static function get_instance() {
68 // If the single instance hasn't been set, set it now.
69 if ( null === self::$instance ) {
70 self::$instance = new self;
71 }
72
73 return self::$instance;
74 }
75
76 /**
77 *
78 * @param Advanced_Ads_Model $model
79 */
80 public function set_model(Advanced_Ads_Model $model) {
81 $this->model = $model;
82 }
83
84 public function wp_plugins_loaded() {
85 // Load plugin text domain
86 $this->load_plugin_textdomain();
87
88 $internal_options = $this->internal_options();
89
90 /**
91 * run upgrades, if this is a new version or version does not exist
92 */
93 if ( ! defined( 'DOING_AJAX' ) && ( ! isset( $internal_options['version'] ) || version_compare( $internal_options['version'], ADVADS_VERSION, '<' ) ) ) {
94 new Advanced_Ads_Upgrades();
95 }
96
97 // activate plugin when new blog is added on multisites // -TODO this is admin-only
98 add_action( 'wpmu_new_blog', array( $this, 'activate_new_site' ) );
99
100 // Load public-facing style sheet and JavaScript.
101 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
102 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
103
104 // add short codes
105 add_shortcode( 'the_ad', array( $this, 'shortcode_display_ad' ) );
106 add_shortcode( 'the_ad_group', array( $this, 'shortcode_display_ad_group' ) );
107 add_shortcode( 'the_ad_placement', array( $this, 'shortcode_display_ad_placement' ) );
108
109 // remove default ad group menu item // -TODO only for admin
110 add_action( 'admin_menu', array( $this, 'remove_taxonomy_menu_item' ) );
111 // load widgets
112 add_action( 'widgets_init', array( $this, 'widget_init' ) );
113
114 // load display conditions
115 Advanced_Ads_Display_Conditions::get_instance();
116 }
117
118 /**
119 * Register and enqueue public-facing style sheet.
120 *
121 * @since 1.0.0
122 */
123 public function enqueue_styles() {
124 // wp_enqueue_style( $this->get_plugin_slug() . '-plugin-styles', plugins_url('assets/css/public.css', __FILE__), array(), ADVADS_VERSION);
125 }
126
127 /**
128 * Return the plugin slug.
129 *
130 * @since 1.0.0
131 * @return Plugin slug variable.
132 */
133 public function get_plugin_slug() {
134 return ADVADS_SLUG;
135 }
136
137 /**
138 * Register and enqueues public-facing JavaScript files.
139 *
140 * @since 1.0.0
141 */
142 public function enqueue_scripts() {
143 // wp_enqueue_script( $this->get_plugin_slug() . '-plugin-script', plugins_url('assets/js/public.js', __FILE__), array('jquery'), ADVADS_VERSION);
144 $options = $this->options();
145 $activated_js = apply_filters( 'advanced-ads-activate-advanced-js', isset( $options['advanced-js'] ) );
146 if ( $activated_js ){
147 wp_enqueue_script( $this->get_plugin_slug() . '-advanced-js', ADVADS_BASE_URL . 'public/assets/js/advanced.js', array( 'jquery' ), ADVADS_VERSION );
148 }
149 }
150
151 public function widget_init() {
152 register_widget( 'Advanced_Ads_Widget' );
153 }
154
155 /**
156 * Fired when a new site is activated with a WPMU environment.
157 *
158 * @since 1.0.0
159 * @param int $blog_id ID of the new blog.
160 */
161 public function activate_new_site($blog_id) {
162
163 if ( 1 !== did_action( 'wpmu_new_blog' ) ) {
164 return;
165 }
166
167 switch_to_blog( $blog_id );
168 $this->single_activate();
169 restore_current_blog();
170 }
171
172 /**
173 * Fired for each blog when the plugin is activated.
174 *
175 * @since 1.0.0
176 */
177 protected function single_activate() {
178 $this->post_types_rewrite_flush();
179 // -TODO inform modules
180 }
181
182 /**
183 * Fired for each blog when the plugin is deactivated.
184 *
185 * @since 1.0.0
186 */
187 protected function single_deactivate() {
188 // -TODO inform modules
189 }
190
191 /**
192 * Load the plugin text domain for translation.
193 *
194 * @since 1.0.0
195 */
196 public function load_plugin_textdomain() {
197 // $locale = apply_filters('advanced-ads-plugin-locale', get_locale(), $domain);
198 load_plugin_textdomain( ADVADS_SLUG, false, ADVADS_BASE_DIR . '/languages' );
199 }
200
201 /**
202 * Fired when the plugin is activated.
203 *
204 * @since 1.0.0
205 * @param boolean $network_wide True if WPMU superadmin uses
206 * "Network Activate" action, false if
207 * WPMU is disabled or plugin is
208 * activated on an individual blog.
209 */
210 public function activate($network_wide) {
211 $this->create_capabilities();
212
213 return;
214 // was never used nor missed, but could come in handy one day
215
216 if ( function_exists( 'is_multisite' ) && is_multisite() ) {
217
218 if ( $network_wide ) {
219
220 // Get all blog ids
221 $blog_ids = $this->model->get_blog_ids();
222
223 foreach ( $blog_ids as $blog_id ) {
224
225 switch_to_blog( $blog_id );
226 $this->single_activate();
227 }
228
229 restore_current_blog();
230 } else {
231 $this->single_activate();
232 }
233 } else {
234 $this->single_activate();
235 }
236 }
237
238 /**
239 * Fired when the plugin is deactivated.
240 *
241 * @since 1.0.0
242 * @param boolean $network_wide
243 *
244 * True if WPMU superadmin uses
245 * "Network Deactivate" action, false if
246 * WPMU is disabled or plugin is
247 * deactivated on an individual blog.
248 */
249 public function deactivate($network_wide) {
250 $this->remove_capabilities();
251
252 return;
253
254 if ( function_exists( 'is_multisite' ) && is_multisite() ) {
255
256 if ( $network_wide ) {
257
258 // Get all blog ids
259 $blog_ids = $this->model->get_blog_ids();
260
261 foreach ( $blog_ids as $blog_id ) {
262
263 switch_to_blog( $blog_id );
264 $this->single_deactivate();
265 }
266
267 restore_current_blog();
268 } else {
269 $this->single_deactivate();
270 }
271 } else {
272 $this->single_deactivate();
273 }
274 }
275
276 /**
277 * flush rewrites on plugin activation so permalinks for them work from the beginning on
278 *
279 * @since 1.0.0
280 * @link http://codex.wordpress.org/Function_Reference/register_post_type#Flushing_Rewrite_on_Activation
281 */
282 /*public function post_types_rewrite_flush(){
283 // load custom post type
284 Advanced_Ads::get_instance()->create_post_types();
285 // flush rewrite rules
286 flush_rewrite_rules();
287 }*/
288
289 /**
290 * remove WP tag edit page for the ad group taxonomy
291 * needed, because we can’t remove it with `show_ui` without also removing the meta box
292 *
293 * @since 1.0.0
294 */
295 public function remove_taxonomy_menu_item() {
296 remove_submenu_page( 'edit.php?post_type=advanced_ads', 'edit-tags.php?taxonomy=advanced_ads_groups&amp;post_type=advanced_ads' );
297 }
298
299 /**
300 * shortcode to include ad in frontend
301 *
302 * @since 1.0.0
303 * @param arr $atts
304 */
305 public function shortcode_display_ad($atts){
306 $id = isset($atts['id']) ? (int) $atts['id'] : 0;
307
308 // use the public available function here
309 return get_ad( $id );
310 }
311
312 /**
313 * shortcode to include ad from an ad group in frontend
314 *
315 * @since 1.0.0
316 * @param arr $atts
317 */
318 public function shortcode_display_ad_group($atts){
319 $id = isset($atts['id']) ? (int) $atts['id'] : 0;
320
321 // use the public available function here
322 return get_ad_group( $id );
323 }
324
325 /**
326 * shortcode to display content of an ad placement in frontend
327 *
328 * @since 1.1.0
329 * @param arr $atts
330 */
331 public function shortcode_display_ad_placement($atts){
332 $id = isset($atts['id']) ? (string) $atts['id'] : '';
333
334 // use the public available function here
335 return get_ad_placement( $id );
336 }
337
338 /**
339 * return plugin options
340 * these are the options updated by the user
341 *
342 * @since 1.0.1
343 * @return array $options
344 * @todo parse default options
345 */
346 public function options() {
347 if ( ! isset( $this->options ) ) {
348 $this->options = get_option( ADVADS_SLUG, array() );
349 }
350
351 return $this->options;
352 }
353
354 /**
355 * update plugin options (not for settings page, but if automatic options are needed)
356 *
357 * @since 1.5.1
358 * @param array $options new options
359 */
360 public function update_options( array $options ) {
361 // do not allow to clear options
362 if ( $options === array() ) {
363 return;
364 }
365
366 $this->options = $options;
367 update_option( ADVADS_SLUG, $options );
368 }
369
370 /**
371 * return internal plugin options
372 * these are options set by the plugin
373 *
374 * @since 1.0.1
375 * @return array $options
376 * @todo parse default options
377 */
378 public function internal_options() {
379 if ( ! isset( $this->internal_options ) ) {
380 $defaults = array(
381 'version' => ADVADS_VERSION,
382 'installed' => time(), // when was this installed
383 );
384 $this->internal_options = get_option( ADVADS_SLUG . '-internal', array() );
385
386 // save defaults
387 if($this->internal_options === array()){
388 $this->internal_options = $defaults;
389 $this->update_internal_options($this->internal_options);
390 }
391
392 // for versions installed prior to 1.5.3 set installed date for now
393 if( ! isset( $this->internal_options['installed'] )){
394 $this->internal_options['installed'] = time();
395 $this->update_internal_options($this->internal_options);
396 }
397 }
398
399 return $this->internal_options;
400 }
401
402 /**
403 * update internal plugin options
404 *
405 * @since 1.5.1
406 * @param array $options new internal options
407 */
408 public function update_internal_options( array $options ) {
409 // do not allow to clear options
410 if ( $options === array() ) {
411 return;
412 }
413
414 $this->internal_options = $options;
415 update_option( ADVADS_SLUG . '-internal', $options );
416 }
417
418 /**
419 * get prefix used for frontend elements
420 *
421 * @since 1.6.8.2
422 */
423 public function get_frontend_prefix(){
424 if ( ! $this->frontend_prefix ) {
425 $options = $this->options();
426
427 if ( ! isset( $options['front-prefix'] ) ) {
428 if ( isset( $options['id-prefix'] ) ) {
429 // deprecated: keeps widgets working that previously received an id based on the front-prefix
430 $this->frontend_prefix = esc_attr( $options['id-prefix'] );
431 } else {
432 $host = parse_url( get_home_url(), PHP_URL_HOST );
433 $this->frontend_prefix = preg_match( '/[A-Za-z][A-Za-z0-9_]{4}/', $host, $result ) ? $result[0] . '-' : Advanced_Ads_Plugin::DEFAULT_FRONTEND_PREFIX;
434 }
435 } else {
436 $this->frontend_prefix = $options['front-prefix'];
437 }
438 }
439 return $this->frontend_prefix;
440 }
441
442 /**
443 * get priority used for injection inside content
444 *
445 * @since 1.6.10.2
446 */
447 public function get_content_injection_priority(){
448 $options = $this->options();
449
450 return isset( $options['content-injection-priority'] ) ? intval( $options['content-injection-priority'] ) : 100;
451 }
452
453 /**
454 * returns the capability needed to perform an action
455 *
456 * @since 1.6.14
457 * @param str $capability a capability to check, can be internal to Advanced Ads
458 * @return str $capability a valid WordPress capability
459 */
460 public static function user_cap( $capability = 'manage_options' ){
461
462 global $advanced_ads_capabilities;
463
464 // admins can do everything
465 // is also a fallback if no option or more specific capability is given
466 if( current_user_can( 'manage_options' ) ){
467 return 'manage_options';
468 }
469
470 return apply_filters( 'advanced-ads-capability', $capability );
471
472 // check, if capability is mapped to an existing WP capability
473 /*if( isset( $advanced_ads_capabilities[ $capability ] ) ){
474 return apply_filters( 'advanced-ads-capability', $advanced_ads_capabilities[ $capability ], $capability );
475 } else {
476 // if not, use 'manage_posts' capability
477 return apply_filters( 'advanced-ads-capability', 'manage_options', $capability );
478 }*/
479
480 }
481
482 /**
483 * Create roles and capabilities
484 *
485 */
486 public function create_capabilities() {
487 if ( $role = get_role( 'administrator' ) ) {
488 $role->add_cap( 'advanced_ads_manage_options' );
489 $role->add_cap( 'advanced_ads_see_interface' );
490 $role->add_cap( 'advanced_ads_edit_ads' );
491 $role->add_cap( 'advanced_ads_manage_placements' );
492 $role->add_cap( 'advanced_ads_place_ads' );
493 }
494 }
495
496 /**
497 * Remove roles and capabilities
498 *
499 */
500 public function remove_capabilities() {
501 if ( $role = get_role( 'administrator' ) ) {
502 $role->remove_cap( 'advanced_ads_manage_options' );
503 $role->remove_cap( 'advanced_ads_see_interface' );
504 $role->remove_cap( 'advanced_ads_edit_ads' );
505 $role->remove_cap( 'advanced_ads_manage_placements' );
506 $role->remove_cap( 'advanced_ads_place_ads' );
507 }
508 }
509
510 }
511