PluginProbe ʕ •ᴥ•ʔ
Search Regex / trunk
Search Regex vtrunk
trunk 1.4.12 1.4.13 1.4.14 1.4.15 1.4.16 2.0 2.0.1 2.1 2.2 2.2.1 2.3 2.3.1 2.3.2 2.3.3 2.4 2.4.1 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1 3.1.1 3.1.2 3.2 3.3 3.3.0 3.3.1 3.4 3.4.1 3.4.2
search-regex / includes / api / route / class-settings-route.php
search-regex / includes / api / route Last commit date
class-plugin-route.php 1 month ago class-preset-route.php 1 month ago class-search-route.php 1 month ago class-settings-route.php 1 month ago class-source-route.php 1 month ago
class-settings-route.php
83 lines
1 <?php
2
3 namespace SearchRegex\Api\Route;
4
5 use SearchRegex\Api;
6 use SearchRegex\Plugin;
7 use WP_REST_Request;
8 use WP_Error;
9
10 /**
11 * Settings API endpoint
12 */
13 class Settings_Route extends Api\Route {
14 /**
15 * Create API endpoints with the given namespace
16 *
17 * @param non-falsy-string $namespace Namespace.
18 */
19 public function __construct( $namespace ) {
20 register_rest_route(
21 $namespace, '/setting', [
22 $this->get_route( \WP_REST_Server::READABLE, 'route_settings', [ $this, 'permission_callback' ] ),
23 $this->get_route( \WP_REST_Server::EDITABLE, 'route_save_settings', [ $this, 'permission_callback' ] ),
24 ]
25 );
26 }
27
28 /**
29 * Get settings
30 *
31 * @param WP_REST_Request<array<string, mixed>> $request Request.
32 * @return array<string, mixed> Settings
33 */
34 public function route_settings( WP_REST_Request $request ) {
35 $settings = Plugin\Settings::init();
36
37 return [
38 'settings' => $settings->get_as_json(),
39 ];
40 }
41
42 /**
43 * Set settings
44 *
45 * @param WP_REST_Request<array<string, mixed>> $request Request.
46 * @return array<string, mixed> Settings
47 */
48 public function route_save_settings( WP_REST_Request $request ) {
49 $params = $request->get_params();
50 $settings = Plugin\Settings::init();
51
52 if ( isset( $params['rest_api'] ) ) {
53 $settings->set_rest_api( $params['rest_api'] );
54 }
55
56 if ( isset( $params['support'] ) ) {
57 $settings->set_is_supported( $params['support'] );
58 }
59
60 // Legacy setting kept for backwards compatibility. New clients
61 // should use startupMode/startupPreset instead.
62 if ( isset( $params['defaultPreset'] ) ) {
63 $settings->set_default_preset( $params['defaultPreset'] );
64 }
65
66 if ( isset( $params['startupMode'] ) ) {
67 $settings->set_startup_mode( $params['startupMode'] );
68 }
69
70 if ( isset( $params['startupPreset'] ) ) {
71 $settings->set_startup_preset( $params['startupPreset'] );
72 }
73
74 if ( isset( $params['update_notice'] ) ) {
75 $settings->set_latest_version();
76 }
77
78 $settings->save();
79
80 return $this->route_settings( $request );
81 }
82 }
83