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