PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.17.3
Advanced Ads – Ad Manager & AdSense v1.17.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 / 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 6 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 6 years ago ad_type_content.php 6 years ago ad_type_dummy.php 6 years ago ad_type_group.php 6 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-notices.php 6 years ago frontend_checks.php 6 years ago plugin.php 6 years ago upgrades.php 7 years ago utils.php 6 years ago visitor-conditions.php 6 years ago widget.php 6 years ago
ad-ajax.php
200 lines
1 <?php
2
3 /**
4 * Provide public ajax interface.
5 *
6 * @since 1.5.0
7 */
8 class Advanced_Ads_Ajax {
9
10 /**
11 * Advanced_Ads_Ajax constructor.
12 */
13 private function __construct() {
14 add_action( 'wp_ajax_advads_ad_select', array( $this, 'advads_ajax_ad_select' ) );
15 add_action( 'wp_ajax_nopriv_advads_ad_select', array( $this, 'advads_ajax_ad_select' ) );
16 add_action( 'wp_ajax_advads-ad-health-notice-push', array( $this, 'ad_health_notice_push' ) );
17 add_action( 'wp_ajax_nopriv_advads-ad-health-notice-push', array( $this, 'ad_health_notice_push' ) );
18 add_action( 'wp_ajax_advads-ad-frontend-notice-update', array( $this, 'frontend_notice_update' ) );
19 }
20
21 /**
22 * Instance of Advanced_Ads_Ajax
23 *
24 * @var $instance
25 */
26 private static $instance;
27
28 /**
29 * Instance getter
30 *
31 * @return Advanced_Ads_Ajax
32 */
33 public static function get_instance() {
34 if ( ! isset( self::$instance ) ) {
35 self::$instance = new self();
36 }
37
38 return self::$instance;
39 }
40
41 /**
42 * Simple wp ajax interface for ad selection.
43 */
44 public function advads_ajax_ad_select() {
45 // set proper header.
46 header( 'Content-Type: application/json; charset: utf-8' );
47
48 // allow modules / add ons to test (this is rather late but should happen before anything important is called).
49 do_action( 'advanced-ads-ajax-ad-select-init' );
50
51 $ad_ids = isset( $_REQUEST['ad_ids'] ) ? $_REQUEST['ad_ids'] : null;
52 if ( is_string( $ad_ids ) ) {
53 $ad_ids = json_decode( $ad_ids, true );
54 }
55 if ( is_array( $ad_ids ) ) { // ads loaded previously and passed by query.
56 Advanced_Ads::get_instance()->current_ads += $ad_ids;
57 }
58
59 $defered_ads = isset( $_REQUEST['deferedAds'] ) ? $_REQUEST['deferedAds'] : null;
60 if ( $defered_ads ) { // load all ajax ads with a single request.
61 $response = array();
62
63 $requests_by_blog = array();
64 foreach ( (array) $defered_ads as $request ) {
65 $blog_id = isset( $request['blog_id'] ) ? $request['blog_id'] : get_current_blog_id();
66 $requests_by_blog[ $blog_id ][] = $request;
67 }
68 foreach ( $requests_by_blog as $blog_id => $requests ) {
69 if ( get_current_blog_id() !== $blog_id ) {
70 Advanced_Ads::get_instance()->switch_to_blog( $blog_id );
71 }
72
73 foreach ( $requests as $request ) {
74 $result = $this->select_one( $request );
75 $result['elementId'] = ! empty( $request['elementId'] ) ? $request['elementId'] : null;
76 $response[] = $result;
77 }
78
79 if ( get_current_blog_id() !== $blog_id ) {
80 Advanced_Ads::get_instance()->restore_current_blog();
81 }
82 }
83
84 echo wp_json_encode( $response );
85 die();
86 }
87
88 $response = $this->select_one( $_REQUEST );
89 echo wp_json_encode( $response );
90 die();
91 }
92
93 /**
94 * Provides a single ad (ad, group, placement) given ID and selection method.
95 *
96 * @param array $request request.
97 *
98 * @return array
99 */
100 private function select_one( $request ) {
101 // init handlers.
102 $selector = Advanced_Ads_Select::get_instance();
103 $methods = $selector->get_methods();
104 $method = isset( $request['ad_method'] ) ? (string) $request['ad_method'] : null;
105 $id = isset( $request['ad_id'] ) ? (string) $request['ad_id'] : null;
106 $arguments = isset( $request['ad_args'] ) ? $request['ad_args'] : array();
107 if ( is_string( $arguments ) ) {
108 $arguments = stripslashes( $arguments );
109 $arguments = json_decode( $arguments, true );
110 }
111 if ( ! empty( $request['elementId'] ) ) {
112 $arguments['cache_busting_elementid'] = $request['elementId'];
113 }
114
115 $response = array();
116 if ( isset( $methods[ $method ] ) && isset( $id ) ) {
117 $advads = Advanced_Ads::get_instance();
118 $l = count( $advads->current_ads );
119
120 // build content.
121 $content = $selector->get_ad_by_method( $id, $method, $arguments );
122 $ad_ids = array_slice( $advads->current_ads, $l ); // ads loaded by this request.
123
124 $r = array(
125 'status' => 'success',
126 'item' => $content,
127 'id' => $id,
128 'method' => $method,
129 'ads' => $ad_ids,
130 'blog_id' => get_current_blog_id(),
131 );
132
133 return apply_filters(
134 'advanced-ads-cache-busting-item',
135 $r,
136 array(
137 'id' => $id,
138 'method' => $method,
139 'args' => $arguments,
140 )
141 );
142 } else {
143 // report error.
144 return array(
145 'status' => 'error',
146 'message' => 'No valid ID or METHOD found.',
147 );
148 }
149 }
150
151 /**
152 * Push an Ad Health notice to the queue in the backend
153 */
154 public function ad_health_notice_push() {
155
156 check_ajax_referer( 'advanced-ads-ad-health-ajax-nonce', 'nonce' );
157
158 if ( ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads' ) ) ) {
159 return;
160 }
161
162 $key = ( ! empty( $_REQUEST['key'] ) ) ? esc_attr( $_REQUEST['key'] ) : false;
163 $attr = ( ! empty( $_REQUEST['attr'] ) && is_array( $_REQUEST['attr'] ) ) ? $_REQUEST['attr'] : array();
164
165 // update or new entry?
166 if ( isset( $attr['mode'] ) && 'update' === $attr['mode'] ) {
167 Advanced_Ads_Ad_Health_Notices::get_instance()->update( $key, $attr );
168 } else {
169 Advanced_Ads_Ad_Health_Notices::get_instance()->add( $key, $attr );
170 }
171
172 die();
173 }
174
175 /**
176 * Update frontend notice array
177 */
178 public function frontend_notice_update() {
179
180 check_ajax_referer( 'advanced-ads-frontend-notice-nonce', 'nonce' );
181
182 if ( ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads' ) ) ) {
183 return;
184 }
185
186 $key = ( ! empty( $_REQUEST['key'] ) ) ? esc_attr( $_REQUEST['key'] ) : false;
187 $attr = ( ! empty( $_REQUEST['attr'] ) && is_array( $_REQUEST['attr'] ) ) ? $_REQUEST['attr'] : array();
188
189 // update or new entry?
190 if ( isset( $attr['mode'] ) && 'update' === $attr['mode'] ) {
191 die();
192 // Advanced_Ads_Frontend_Notices::get_instance()->update( $key, $attr );
193 } else {
194 Advanced_Ads_Frontend_Notices::get_instance()->update( $key, $attr );
195 }
196
197 die();
198 }
199 }
200