PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.24
Advanced Ads – Ad Manager & AdSense v2.0.24
2.0.24 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 / includes / rest / class-placements.php
advanced-ads / includes / rest Last commit date
class-groups.php 1 day ago class-onboarding.php 1 year ago class-page-quick-edit.php 1 year ago class-placements.php 1 year ago class-utilities.php 1 year ago
class-placements.php
185 lines
1 <?php
2 /**
3 * Rest Forms.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 1.50.0
8 */
9
10 namespace AdvancedAds\Rest;
11
12 use WP_REST_Request;
13 use AdvancedAds\Constants;
14 use AdvancedAds\Utilities\Conditional;
15 use AdvancedAds\Framework\Utilities\Arr;
16 use AdvancedAds\Framework\Interfaces\Routes_Interface;
17
18 defined( 'ABSPATH' ) || exit;
19
20 /**
21 * Placement screen modal forms handling
22 */
23 class Placements implements Routes_Interface {
24 /**
25 * Registers routes with WordPress.
26 *
27 * @return void
28 */
29 public function register_routes(): void {
30 register_rest_route(
31 Constants::REST_BASE,
32 '/placement',
33 [
34
35 [
36 'methods' => \WP_REST_Server::ALLMETHODS,
37 'callback' => [ $this, 'call_endpoint' ],
38 'permission_callback' => function () {
39 return Conditional::user_can( 'advanced_ads_manage_placements' );
40 },
41 ],
42 ]
43 );
44 }
45
46 /**
47 * Call the appropriate endpoint handler
48 *
49 * @param WP_REST_Request $request the request object.
50 *
51 * @return array
52 */
53 public function call_endpoint( $request ) {
54 switch ( $request->get_method() ) {
55 case 'POST':
56 return $this->create( $request );
57 case 'PUT':
58 return $this->update( $request );
59 case 'GET':
60 return $this->read( $request );
61 default:
62 }
63
64 return [ 'error' => __( 'No endpoint found', 'advanced-ads' ) ];
65 }
66
67 /**
68 * Get placement data
69 *
70 * @param WP_REST_Request $request the request object.
71 *
72 * @return array
73 */
74 public function read( $request ) {
75 $params = $request->get_params();
76 $placement = wp_advads_get_placement( (int) $params['id'] );
77
78 if ( ! $placement ) {
79 return [ 'error' => __( 'No placement found', 'advanced-ads' ) ];
80 }
81
82 /**
83 * Allow add-ons to send other placement props.
84 */
85 $placement_data = apply_filters( 'advanced-ads-placement-read', $placement->get_data() );
86
87 return $placement_data;
88 }
89
90 /**
91 * Create placement
92 *
93 * @param WP_REST_Request $request the request object.
94 *
95 * @return mixed
96 */
97 public function create( $request ) {
98 $body = json_decode( $request->get_body(), JSON_UNESCAPED_UNICODE );
99 parse_str( $body['fields'], $payload );
100
101 if ( ! wp_verify_nonce( sanitize_key( $payload['nonce'] ), 'advads-create-placement' ) ) {
102 return [ 'error' => __( 'Not authorized create', 'advanced-ads' ) ];
103 }
104
105 $placement_data = wp_unslash( $payload['advads'] );
106
107 if ( ! isset( $placement_data['placement'] ) ) {
108 return [ 'error' => __( 'No placement data provided', 'advanced-ads' ) ];
109 }
110
111 $placement_data = wp_unslash( $placement_data['placement'] );
112 $placement = wp_advads_create_new_placement( $placement_data['type'] ?? 'default' );
113 $placement->set_props( $placement_data );
114 $placement->save();
115
116 return apply_filters(
117 'advanced-ads-placements-updated',
118 [
119 'action' => 'create',
120 'placement_data' => $placement->get_data(),
121 'reload' => true,
122 'redirectUrl' => admin_url( 'edit.php?post_type=' . Constants::POST_TYPE_PLACEMENT ),
123 ],
124 $placement
125 );
126 }
127
128 /**
129 * Update placement
130 *
131 * @param WP_REST_Request $request the request object.
132 *
133 * @return mixed
134 */
135 public function update( $request ) {
136 $body = json_decode( $request->get_body(), JSON_UNESCAPED_UNICODE );
137 parse_str( $body['fields'], $payload );
138
139 if ( ! wp_verify_nonce( sanitize_key( $payload['nonce'] ), 'advads-update-placement' ) ) {
140 return [ 'error' => __( 'Not authorized update', 'advanced-ads' ) ];
141 }
142
143 $placement = wp_advads_get_placement( (int) $payload['post_ID'] );
144
145 if ( ! $placement ) {
146 return [ 'error' => __( 'Placement not found', 'advanced-ads' ) ];
147 }
148
149 $placement->set_title( sanitize_text_field( $payload['post_title'] ) );
150 $placement->set_status( sanitize_text_field( $payload['post_status'] ) );
151
152 if ( isset( $payload['advads']['placements'] ) ) {
153 $placement_data = wp_unslash( $payload['advads']['placements'] );
154 $placement->set_item( $placement_data['item'] );
155 $placement->set_props( $placement_data['options'] );
156
157 if ( ! Arr::get( $payload, 'advads.placements.options.repeat' ) && $placement->get_prop( 'repeat' ) ) {
158 $placement->set_prop( 'repeat', null );
159 }
160
161 if ( ! Arr::get( $payload, 'advads.placements.options.start_from_bottom' ) && $placement->get_prop( 'start_from_bottom' ) ) {
162 $placement->set_prop( 'start_from_bottom', null );
163 }
164 }
165
166 // Allow add-ons to trigger a page refresh or show errors if needed.
167 $results = apply_filters(
168 'advanced-ads-placements-updated',
169 [
170 'action' => 'update',
171 'payload' => $payload,
172 'title' => $placement->get_title(),
173 'item' => $placement->get_item(),
174 'placement_data' => $placement->get_data(),
175 'reload' => false,
176 ],
177 $placement
178 );
179
180 $placement->save();
181
182 return $results;
183 }
184 }
185