PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.5
Advanced Ads – Ad Manager & AdSense v2.0.5
2.0.26 2.0.25 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-groups.php
advanced-ads / includes / rest Last commit date
class-groups.php 1 year ago class-onboarding.php 1 year ago class-page-quick-edit.php 1 year ago class-placements.php 1 year ago class-quick-edit.php 1 year ago class-utilities.php 1 year ago
class-groups.php
170 lines
1 <?php
2 /**
3 * Groups Rest route and endpoints
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_Server;
13 use AdvancedAds\Constants;
14 use AdvancedAds\Utilities\Conditional;
15 use AdvancedAds\Framework\Interfaces\Routes_Interface;
16
17 defined( 'ABSPATH' ) || exit;
18
19 /**
20 * Rest Groups.
21 */
22 class Groups implements Routes_Interface {
23 /**
24 * Registers routes with WordPress.
25 *
26 * @return void
27 */
28 public function register_routes(): void {
29 register_rest_route(
30 Constants::REST_BASE,
31 '/group',
32 [
33 'methods' => WP_REST_Server::ALLMETHODS,
34 'callback' => [ $this, 'call_endpoint' ],
35 'permission_callback' => function () {
36 return Conditional::user_can( 'advanced_ads_edit_ads' );
37 },
38 ]
39 );
40 }
41
42 /**
43 * Run a callback depending on the request method.
44 *
45 * @param \WP_REST_Request $request the request.
46 *
47 * @return array
48 */
49 public function call_endpoint( $request ): array {
50 switch ( $request->get_method() ) {
51 case 'POST':
52 return $this->create( $request );
53 case 'PUT':
54 return $this->update( $request );
55 case 'DELETE':
56 return $this->delete( $request );
57 default:
58 }
59
60 return [ 'error' => esc_html__( 'No endpoint found', 'advanced-ads' ) ];
61 }
62
63 /**
64 * Delete a group
65 *
66 * @param \WP_REST_Request $request the request.
67 *
68 * @return array
69 */
70 public function delete( $request ): array {
71 $payload = json_decode( $request->get_body(), true );
72
73 if ( ! wp_verify_nonce( $payload['nonce'], "delete-tag_{$payload['id']}" ) ) {
74 return [ 'error' => esc_html__( 'Sorry, you are not allowed to access this feature.', 'advanced-ads' ) ];
75 }
76
77 $group = wp_advads_get_group( $payload['id'] );
78
79 if ( $group ) {
80 $group->delete();
81 }
82
83 return [ 'done' => true ];
84 }
85
86 /**
87 * Create a new group
88 *
89 * @param \WP_REST_Request $request the request.
90 *
91 * @return array
92 */
93 public function create( $request ): array {
94 $payload = $this->get_payload( $request );
95
96 if ( ! wp_verify_nonce( $payload['nonce'], 'advads-create-group' ) ) {
97 return [ 'error' => esc_html__( 'Invalid nonce', 'advanced-ads' ) ];
98 }
99
100 $group_name = sanitize_text_field( $payload['advads-group-name'] );
101
102 if ( empty( $group_name ) ) {
103 return [ 'reload' => true ];
104 }
105
106 $posted_type = $payload['advads-group-type'] ?? 'default';
107
108 if ( ! wp_advads_has_group_type( $posted_type ) ) {
109 $posted_type = 'default';
110 }
111
112 $group = wp_advads_create_new_group( $posted_type );
113 $group->set_name( sanitize_text_field( wp_unslash( $group_name ) ) );
114 $group->set_type( $posted_type );
115 $group->set_ad_count( 1 );
116 $group->set_options( [] );
117 $group->save();
118
119 return [
120 'action' => 'create',
121 'group_data' => $group->get_data(),
122 ];
123 }
124
125 /**
126 * Update an existing group
127 *
128 * @param \WP_REST_Request $request the request.
129 *
130 * @return array
131 */
132 public function update( $request ): array {
133 $payload = $this->get_payload( $request );
134
135 if ( ! wp_verify_nonce( $payload['nonce'], 'advads-update-group' ) ) {
136 return [ 'error' => esc_html__( 'Invalid nonce', 'advanced-ads' ) ];
137 }
138
139 $data = wp_unslash( $payload['advads-groups'] );
140 $data = $data[ key( $data ) ];
141 $group = wp_advads_get_group( $data['id'] );
142 $group->set_name( $data['name'] );
143 $group->set_type( $data['type'] );
144 $group->set_ad_count( $data['ad_count'] );
145 $group->set_options( $data['options'] ?? [] );
146 $group->set_ad_weights( $data['ads'] ?? [] );
147 $group->save();
148
149 return [
150 'action' => 'update',
151 'group_data' => $group->get_data(),
152 'reload' => true,
153 ];
154 }
155
156 /**
157 * Get variable serialized with `jQuery.serialize()`
158 *
159 * @param \WP_REST_Request $request the request.
160 *
161 * @return array
162 */
163 private function get_payload( $request ): array {
164 $body = json_decode( $request->get_body(), JSON_UNESCAPED_UNICODE );
165 parse_str( $body['fields'], $payload );
166
167 return $payload;
168 }
169 }
170