PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.11.0
GiveWP – Donation Plugin and Fundraising Platform v2.11.0
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / api / class-give-api-v2.php
give / includes / api Last commit date
class-give-api-v1.php 7 years ago class-give-api-v2.php 5 years ago class-give-api.php 6 years ago
class-give-api-v2.php
213 lines
1 <?php
2 /**
3 * Give API V2
4 *
5 * @package Give
6 * @subpackage Classes/API
7 * @copyright Copyright (c) 2018, GiveWP
8 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 * @since 2.1
10 */
11
12 // Exit if accessed directly.
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17
18 /**
19 * Give_API_V2 Class
20 *
21 * The base version API class
22 *
23 * @since 2.1
24 */
25 class Give_API_V2 {
26 /**
27 * API base prefix
28 *
29 * @since 2.1
30 * @access private
31 *
32 * @var string
33 */
34 private $rest_base = 'give-api/v2';
35
36 /**
37 * Instance.
38 *
39 * @since 2.1
40 * @access private
41 *
42 * @var Give_API_V2
43 */
44 private static $instance;
45
46 /**
47 * Singleton pattern.
48 *
49 * @since 2.1
50 * @access private
51 */
52 private function __construct() {
53 }
54
55
56 /**
57 * Get instance.
58 *
59 * @since 2.1
60 * @access public
61 * @return Give_API_V2
62 */
63 public static function get_instance() {
64 if ( null === static::$instance ) {
65 self::$instance = new static();
66
67 self::$instance->init();
68 }
69
70 return self::$instance;
71 }
72
73
74 /**
75 * Initialize API
76 *
77 * @since 2.1
78 * @access private
79 */
80 private function init() {
81 // Setup hooks.
82 add_action( 'rest_api_init', [ $this, 'register_routes' ] );
83 add_action( 'wp_enqueue_scripts', [ $this, 'localize_script' ], 999 );
84 add_action( 'admin_enqueue_scripts', [ $this, 'localize_script' ], 999 );
85 }
86
87
88 /**
89 * Register API routes
90 * Note: only for internal purpose.
91 *
92 * @todo : prevent cross domain api request
93 *
94 * @since 2.1
95 * @access private
96 */
97 public function register_routes() {
98 register_rest_route(
99 $this->rest_base,
100 '/form/(?P<id>[\d]+)',
101 [
102 'methods' => 'GET',
103 'callback' => [ $this, 'get_forms_data' ],
104 'permission_callback' => '__return_true',
105 ]
106 );
107
108 register_rest_route(
109 $this->rest_base,
110 '/form-grid',
111 [
112 'methods' => 'GET',
113 'callback' => [ $this, 'get_donation_grid' ],
114 'permission_callback' => '__return_true',
115 ]
116 );
117
118 register_rest_route(
119 $this->rest_base,
120 '/donor-wall',
121 [
122 'methods' => 'GET',
123 'callback' => [ $this, 'get_donor_wall' ],
124 'permission_callback' => '__return_true',
125 ]
126 );
127 }
128
129 /**
130 * Add api localize data
131 *
132 * @since 2.1
133 * @access public
134 */
135 public function localize_script() {
136 $data = [
137 'root' => esc_url_raw( self::get_rest_api() ),
138 'rest_base' => $this->rest_base,
139 ];
140
141 if ( is_admin() ) {
142 wp_localize_script( 'give-admin-scripts', 'giveApiSettings', $data );
143 } else {
144 wp_localize_script( 'give', 'giveApiSettings', $data );
145 }
146 }
147
148 /**
149 * Rest fetch form data callback
150 *
151 * @param WP_REST_Request $request
152 *
153 * @access public
154 * @return array|mixed|object
155 */
156 public function get_forms_data( $request ) {
157 $parameters = $request->get_params();
158
159 // Bailout
160 if ( ! isset( $parameters['id'] ) || empty( $parameters['id'] ) ) {
161 return [ 'error' => 'no_parameter_given' ];
162 }
163
164 return give_form_shortcode( $parameters );
165 }
166
167 /**
168 * Rest fetch form data callback
169 *
170 * @param WP_REST_Request $request
171 *
172 * @access public
173 * @return array|mixed|object
174 */
175 public function get_donation_grid( $request ) {
176 $parameters = $request->get_params();
177
178 return give_form_grid_shortcode( $parameters );
179 }
180
181 /**
182 * Rest fetch form data callback
183 *
184 * @param WP_REST_Request $request
185 *
186 * @access public
187 * @return array|mixed|object
188 */
189 public function get_donor_wall( $request ) {
190 $parameters = $request->get_params();
191
192 return Give_Donor_Wall::get_instance()->render_shortcode( $parameters );
193 }
194
195 /**
196 * Get api reset url
197 *
198 * @since 2.1
199 * @access public
200 *
201 * @param int $blog_id Optional. Blog ID. Default of null returns URL for current blog.
202 * @param string $path Optional. REST route. Default '/'.
203 * @param string $scheme Optional. Sanitization scheme. Default 'rest'.
204 *
205 * @return string Full URL to the endpoint.
206 */
207 public static function get_rest_api( $blog_id = null, $path = '/', $scheme = 'rest' ) {
208 return trailingslashit( get_rest_url( $blog_id, $path, $scheme ) . self::$instance->rest_base );
209 }
210 }
211
212 Give_API_V2::get_instance();
213