PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.2.2
GiveWP – Donation Plugin and Fundraising Platform v2.2.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 8 years ago class-give-api-v2.php 8 years ago class-give-api.php 7 years ago
class-give-api-v2.php
177 lines
1 <?php
2 /**
3 * Give API V2
4 *
5 * @package Give
6 * @subpackage Classes/API
7 * @copyright Copyright (c) 2018, WordImpress
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 * @todo : prevent cross domain api request
91 *
92 * @since 2.1
93 * @access private
94 */
95 public function register_routes() {
96 register_rest_route( $this->rest_base, '/form/(?P<id>[\d]+)', array(
97 'methods' => 'GET',
98 'callback' => array( $this, 'get_forms_data' ),
99 ) );
100
101 register_rest_route( $this->rest_base, '/form-grid', array(
102 'methods' => 'GET',
103 'callback' => array( $this, 'get_donation_grid' ),
104 ) );
105 }
106
107 /**
108 * Add api localize data
109 *
110 * @since 2.1
111 * @access public
112 */
113 public function localize_script() {
114 $data = array(
115 'root' => esc_url_raw( Give_API_V2::get_rest_api() ),
116 'rest_base' => $this->rest_base
117 );
118
119 if ( is_admin() ) {
120 wp_localize_script( 'give-admin-scripts', 'giveApiSettings', $data );
121 } else {
122 wp_localize_script( 'give', 'giveApiSettings', $data );
123 }
124 }
125
126 /**
127 * Rest fetch form data callback
128 *
129 * @param WP_REST_Request $request
130 *
131 * @access public
132 * @return array|mixed|object
133 */
134 public function get_forms_data( $request ) {
135 $parameters = $request->get_params();
136
137 // Bailout
138 if ( ! isset( $parameters['id'] ) || empty( $parameters['id'] ) ) {
139 return array( 'error' => 'no_parameter_given' );
140 }
141
142 return give_form_shortcode( $parameters );
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_donation_grid( $request ) {
154 $parameters = $request->get_params();
155
156 return give_form_grid_shortcode( $parameters );
157 }
158
159 /**
160 * Get api reset url
161 *
162 * @since 2.1
163 * @access public
164 *
165 * @param int $blog_id Optional. Blog ID. Default of null returns URL for current blog.
166 * @param string $path Optional. REST route. Default '/'.
167 * @param string $scheme Optional. Sanitization scheme. Default 'rest'.
168 *
169 * @return string Full URL to the endpoint.
170 */
171 public static function get_rest_api( $blog_id = null, $path = '/', $scheme = 'rest' ) {
172 return trailingslashit( get_rest_url( $blog_id, $path, $scheme ) . self::$instance->rest_base );
173 }
174 }
175
176 Give_API_V2::get_instance();
177