This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
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 { |
||
0 ignored issues
–
show
Coding Style
introduced
by
![]() |
|||
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 | View Code Duplication | public static function get_instance() { |
|
0 ignored issues
–
show
This method seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
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 |