PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.7.2
GiveWP – Donation Plugin and Fundraising Platform v2.7.2
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 6 years ago class-give-api.php 6 years ago
class-give-api-v2.php
210 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', array( $this, 'register_routes' ) );
83 add_action( 'wp_enqueue_scripts', array( $this, 'localize_script' ), 999 );
84 add_action( 'admin_enqueue_scripts', array( $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 array(
102 'methods' => 'GET',
103 'callback' => array( $this, 'get_forms_data' ),
104 )
105 );
106
107 register_rest_route(
108 $this->rest_base,
109 '/form-grid',
110 array(
111 'methods' => 'GET',
112 'callback' => array( $this, 'get_donation_grid' ),
113 )
114 );
115
116 register_rest_route(
117 $this->rest_base,
118 '/donor-wall',
119 array(
120 'methods' => 'GET',
121 'callback' => array( $this, 'get_donor_wall' ),
122 )
123 );
124 }
125
126 /**
127 * Add api localize data
128 *
129 * @since 2.1
130 * @access public
131 */
132 public function localize_script() {
133 $data = array(
134 'root' => esc_url_raw( self::get_rest_api() ),
135 'rest_base' => $this->rest_base,
136 );
137
138 if ( is_admin() ) {
139 wp_localize_script( 'give-admin-scripts', 'giveApiSettings', $data );
140 } else {
141 wp_localize_script( 'give', 'giveApiSettings', $data );
142 }
143 }
144
145 /**
146 * Rest fetch form data callback
147 *
148 * @param WP_REST_Request $request
149 *
150 * @access public
151 * @return array|mixed|object
152 */
153 public function get_forms_data( $request ) {
154 $parameters = $request->get_params();
155
156 // Bailout
157 if ( ! isset( $parameters['id'] ) || empty( $parameters['id'] ) ) {
158 return array( 'error' => 'no_parameter_given' );
159 }
160
161 return give_form_shortcode( $parameters );
162 }
163
164 /**
165 * Rest fetch form data callback
166 *
167 * @param WP_REST_Request $request
168 *
169 * @access public
170 * @return array|mixed|object
171 */
172 public function get_donation_grid( $request ) {
173 $parameters = $request->get_params();
174
175 return give_form_grid_shortcode( $parameters );
176 }
177
178 /**
179 * Rest fetch form data callback
180 *
181 * @param WP_REST_Request $request
182 *
183 * @access public
184 * @return array|mixed|object
185 */
186 public function get_donor_wall( $request ) {
187 $parameters = $request->get_params();
188
189 return Give_Donor_Wall::get_instance()->render_shortcode( $parameters );
190 }
191
192 /**
193 * Get api reset url
194 *
195 * @since 2.1
196 * @access public
197 *
198 * @param int $blog_id Optional. Blog ID. Default of null returns URL for current blog.
199 * @param string $path Optional. REST route. Default '/'.
200 * @param string $scheme Optional. Sanitization scheme. Default 'rest'.
201 *
202 * @return string Full URL to the endpoint.
203 */
204 public static function get_rest_api( $blog_id = null, $path = '/', $scheme = 'rest' ) {
205 return trailingslashit( get_rest_url( $blog_id, $path, $scheme ) . self::$instance->rest_base );
206 }
207 }
208
209 Give_API_V2::get_instance();
210