PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.13.2
GiveWP – Donation Plugin and Fundraising Platform v2.13.2
4.16.3 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 / src / Onboarding / Routes / SettingsRoute.php
give / src / Onboarding / Routes Last commit date
AddonsRoute.php 5 years ago CurrencyRoute.php 5 years ago FeaturesRoute.php 5 years ago FormRoute.php 5 years ago LocationRoute.php 5 years ago SettingsRoute.php 4 years ago
SettingsRoute.php
135 lines
1 <?php
2
3 namespace Give\Onboarding\Routes;
4
5 use WP_REST_Request;
6 use Give\API\RestRoute;
7 use Give\Onboarding\Helpers\Currency;
8 use Give\Onboarding\SettingsRepositoryFactory;
9
10 /**
11 * @since 2.8.0
12 */
13 class SettingsRoute implements RestRoute {
14
15 /** @var string */
16 protected $endpoint = 'onboarding/settings/(?P<setting>\w+)';
17
18 /** @var SettingsRepository */
19 protected $settingsRepository;
20
21 /**
22 * @param SettingsRepository $settingsRepository
23 *
24 * @since 2.8.0
25 */
26 public function __construct( SettingsRepositoryFactory $settingsRepositoryFactory ) {
27 $this->settingsRepository = $settingsRepositoryFactory->make( 'give_settings' );
28 }
29
30 /**
31 * @param WP_REST_Request $request
32 *
33 * @return array
34 *
35 * @since 2.8.0
36 */
37 public function handleRequest( WP_REST_Request $request ) {
38
39 $setting = $request->get_param( 'setting' );
40 $value = json_decode( $request->get_param( 'value' ) );
41
42 $this->settingsRepository->set( $setting, $value );
43 $this->settingsRepository->save();
44
45 return [
46 'data' => [
47 'setting' => $setting,
48 'value' => $value,
49 ],
50 ];
51 }
52
53 /**
54 * @param string $setting
55 *
56 * @return bool
57 *
58 * @since 2.8.0
59 */
60 public function validateSetting( $setting ) {
61 return in_array(
62 $setting,
63 [
64 'user_type',
65 'cause_type',
66 'usage_tracking',
67 'base_country',
68 'base_state',
69 'addons',
70 'features',
71 ]
72 );
73 }
74
75 /**
76 * @inheritDoc
77 */
78 public function registerRoute() {
79 register_rest_route(
80 'give-api/v2',
81 $this->endpoint,
82 [
83 [
84 'methods' => 'POST',
85 'callback' => [ $this, 'handleRequest' ],
86 'permission_callback' => function() {
87 return current_user_can( 'manage_options' );
88 },
89 'args' => [
90 'setting' => [
91 'type' => 'string',
92 'required' => true,
93 'validate_callback' => [ $this, 'validateSetting' ],
94 'sanitize_callback' => 'sanitize_text_field',
95 ],
96 'value' => [
97 'type' => 'string',
98 'required' => false,
99 // 'validate_callback' => [ $this, 'validateValue' ],
100 'sanitize_callback' => 'sanitize_text_field',
101 ],
102 ],
103 ],
104 'schema' => [ $this, 'getSchema' ],
105 ]
106 );
107 }
108
109 /**
110 * @return array
111 *
112 * @since 2.8.0
113 */
114 public function getSchema() {
115 return [
116 // This tells the spec of JSON Schema we are using which is draft 4.
117 '$schema' => 'http://json-schema.org/draft-04/schema#',
118 // The title property marks the identity of the resource.
119 'title' => 'onboarding',
120 'type' => 'object',
121 // In JSON Schema you can specify object properties in the properties attribute.
122 'properties' => [
123 'setting' => [
124 'description' => esc_html__( 'The reference name for the setting being updated.', 'give' ),
125 'type' => 'string',
126 ],
127 'value' => [
128 'description' => esc_html__( 'The value of the setting being updated.', 'give' ),
129 'type' => 'string',
130 ],
131 ],
132 ];
133 }
134 }
135