PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.22.2
GiveWP – Donation Plugin and Fundraising Platform v3.22.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 4 years ago class-give-api.php 3 years ago
class-give-api-v2.php
189 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
119 /**
120 * Add api localize data
121 *
122 * @since 2.1
123 * @access public
124 */
125 public function localize_script() {
126 $data = [
127 'root' => esc_url_raw( self::get_rest_api() ),
128 'rest_base' => $this->rest_base,
129 ];
130
131 if ( is_admin() ) {
132 wp_localize_script( 'give-admin-scripts', 'giveApiSettings', $data );
133 } else {
134 wp_localize_script( 'give', 'giveApiSettings', $data );
135 }
136 }
137
138 /**
139 * Rest fetch form data callback
140 *
141 * @param WP_REST_Request $request
142 *
143 * @access public
144 * @return array|mixed|object
145 */
146 public function get_forms_data( $request ) {
147 $parameters = $request->get_params();
148
149 // Bailout
150 if ( ! isset( $parameters['id'] ) || empty( $parameters['id'] ) ) {
151 return [ 'error' => 'no_parameter_given' ];
152 }
153
154 return give_form_shortcode( $parameters );
155 }
156
157 /**
158 * Rest fetch form data callback
159 *
160 * @param WP_REST_Request $request
161 *
162 * @access public
163 * @return array|mixed|object
164 */
165 public function get_donation_grid( $request ) {
166 $parameters = $request->get_params();
167
168 return give_form_grid_shortcode( $parameters );
169 }
170
171 /**
172 * Get api reset url
173 *
174 * @since 2.1
175 * @access public
176 *
177 * @param int $blog_id Optional. Blog ID. Default of null returns URL for current blog.
178 * @param string $path Optional. REST route. Default '/'.
179 * @param string $scheme Optional. Sanitization scheme. Default 'rest'.
180 *
181 * @return string Full URL to the endpoint.
182 */
183 public static function get_rest_api( $blog_id = null, $path = '/', $scheme = 'rest' ) {
184 return trailingslashit( get_rest_url( $blog_id, $path, $scheme ) . self::$instance->rest_base );
185 }
186 }
187
188 Give_API_V2::get_instance();
189