PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.14.9
Advanced Ads – Ad Manager & AdSense v1.14.9
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 / ad-ajax.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
ad-ajax.php
137 lines
1 <?php
2
3 /**
4 * Provide public ajax interface.
5 *
6 * @since 1.5.0
7 */
8 class Advanced_Ads_Ajax {
9
10 private function __construct()
11 {
12 add_action( 'wp_ajax_advads_ad_select', array( $this, 'advads_ajax_ad_select' ) );
13 add_action( 'wp_ajax_nopriv_advads_ad_select', array( $this, 'advads_ajax_ad_select' ) );
14 add_action( 'wp_ajax_advads-ad-health-notice-push', array( $this, 'ad_health_notice_push' ) );
15 add_action( 'wp_ajax_nopriv_advads-ad-health-notice-push', array( $this, 'ad_health_notice_push' ) );
16 }
17
18 private static $instance;
19
20 public static function get_instance()
21 {
22 if ( ! isset(self::$instance) ) {
23 self::$instance = new self;
24 }
25
26 return self::$instance;
27 }
28
29 /**
30 * Simple wp ajax interface for ad selection.
31 */
32 public function advads_ajax_ad_select() {
33 // set proper header
34 header( 'Content-Type: application/json; charset: utf-8' );
35
36 // allow modules / add ons to test (this is rather late but should happen before anything important is called)
37 do_action( 'advanced-ads-ajax-ad-select-init' );
38
39 $adIds = isset( $_REQUEST['ad_ids'] ) ? $_REQUEST['ad_ids'] : null;
40 if ( is_string( $adIds ) ) {
41 $adIds = json_decode( $adIds, true );
42 }
43 if (is_array($adIds)) { // ads loaded previously and passed by query
44 Advanced_Ads::get_instance()->current_ads += $adIds;
45 }
46
47 $deferedAds = isset( $_REQUEST['deferedAds'] ) ? $_REQUEST['deferedAds'] : null;
48 if ( $deferedAds ) { // load all ajax ads with a single request
49 $response = array();
50
51 $requests_by_blog = array();
52 foreach ( (array) $deferedAds as $request ) {
53 $blog_id = isset( $request['blog_id'] ) ? $request['blog_id'] : get_current_blog_id();
54 $requests_by_blog[ $blog_id ][] = $request;
55 }
56 foreach ( $requests_by_blog as $blog_id => $requests ) {
57 if ( $blog_id !== get_current_blog_id() ) { Advanced_Ads::get_instance()->switch_to_blog( $blog_id ); }
58
59 foreach ( $requests as $request ) {
60 $result = $this->select_one( $request );
61 $result['elementId'] = ! empty( $request['elementId'] ) ? $request['elementId'] : null;
62 $response[] = $result;
63 }
64
65 if ( $blog_id !== get_current_blog_id() ) { Advanced_Ads::get_instance()->restore_current_blog(); }
66 }
67
68 echo json_encode( $response );
69 die();
70 }
71
72 $response = $this->select_one( $_REQUEST );
73 echo json_encode( $response );
74 die();
75 }
76
77 /**
78 * Provides a single ad (ad, group, placement) given ID and selection method.
79 *
80 * @param $request array
81 */
82 private function select_one( $request ) {
83 // init handlers
84 $selector = Advanced_Ads_Select::get_instance();
85 $methods = $selector->get_methods();
86 $method = isset( $request['ad_method'] ) ? (string) $request['ad_method'] : null;
87 $id = isset( $request['ad_id'] ) ? (string) $request['ad_id'] : null;
88 $arguments = isset( $request['ad_args'] ) ? $request['ad_args'] : array();
89 if (is_string($arguments)) {
90 $arguments = stripslashes($arguments);
91 $arguments = json_decode($arguments, true);
92 }
93 if ( ! empty( $request['elementId'] ) ) {
94 $arguments['cache_busting_elementid'] = $request['elementId'];
95 }
96
97 $response = array();
98 if ( isset( $methods[ $method ] ) && isset( $id ) ) {
99 $advads = Advanced_Ads::get_instance();
100 $l = count( $advads->current_ads );
101
102 // build content
103 $content = $selector->get_ad_by_method( $id, $method, $arguments );
104 $adIds = array_slice( $advads->current_ads, $l ); // ads loaded by this request
105
106 return array( 'status' => 'success', 'item' => $content, 'id' => $id, 'method' => $method, 'ads' => $adIds, 'blog_id' => get_current_blog_id() );
107 } else {
108 // report error
109 return array( 'status' => 'error', 'message' => 'No valid ID or METHOD found.' );
110 }
111 }
112
113 /**
114 * Push an Ad Health notice to the queue in the backend
115 */
116 public function ad_health_notice_push(){
117
118 check_ajax_referer( 'advanced-ads-ad-health-ajax-nonce', 'nonce' );
119
120 if ( ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads') ) ) {
121 return;
122 }
123
124 $key = ( !empty( $_REQUEST['key'] ) ) ? esc_attr( $_REQUEST['key'] ) : false;
125 $attr = ( !empty( $_REQUEST['attr'] ) && is_array( $_REQUEST['attr'] ) ) ? $_REQUEST['attr'] : array();
126
127 // update or new entry?
128 if( isset( $attr['mode'] ) && 'update' === $attr['mode'] ){
129 Advanced_Ads_Ad_Health_Notices::get_instance()->update( $key, $attr );
130 } else {
131 Advanced_Ads_Ad_Health_Notices::get_instance()->add( $key, $attr );
132 }
133
134 die();
135 }
136 }
137