# timetics/1.0.0/core/settings/api-settings.php

Timetics – Appointment Booking Calendar &amp; Scheduling, version 1.0.0. 99 lines.

- Page: https://pluginprobe.com/plugins/timetics/1.0.0/code/core/settings/api-settings.php
- Raw: https://pluginprobe.com/plugins/timetics/1.0.0/raw/core/settings/api-settings.php
- Modified: 2023-01-30T14:51:10+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/timetics/1.0.0/code/core/settings/api-settings.php#L10-L20`.

```php
<?php
/**
 * Class Api Settings
 *
 * @package Timetics
 */
namespace Timetics\Core\Settings;

use Timetics\Base\Api;
use Timetics\Utils\Singleton;

class Api_Settings extends Api {
    use Singleton;

    /**
     * Store api namespace
     *
     * @var string
     */
    protected $namespace = 'timetics/v1';

    /**
     * Store rest base
     *
     * @var string
     */
    protected $rest_base = 'settings';

    /**
     * Register rest route
     *
     * @return  void
     */
    public function register_routes() {
        register_rest_route(
            $this->namespace, $this->rest_base, [
				[
					'methods'             => \WP_REST_Server::READABLE,
					'callback'            => [ $this, 'get_settings' ],
					'permission_callback' => function () {
						return current_user_can( 'manage_timetics' );
					},
				],
				[
					'methods'             => \WP_REST_Server::EDITABLE,
					'callback'            => [ $this, 'update_settings' ],
					'permission_callback' => function () {
						return current_user_can( 'manage_timetics' );
					},
				],
			]
        );
    }

    /**
     * Get settings
     *
     * @return  JSON
     */
    public function get_settings() {
        $settings = timetics_get_settings();

        $data = [
            'status_code' => 200,
            'success'   => 1,
            'message'   => __( 'Get all settings', 'timetics' ),
            'data'      => $settings,
        ];

        return rest_ensure_response( $settings );
    }

    /**
     * Update settings
     *
     * @param   WP_Rest_Request  $request
     *
     * @return  JSON
     */
    public function update_settings( $request ) {
        $options = json_decode( $request->get_body(), true );

        if ( $options ) {
            foreach ( $options as $key => $value ) {
                timetics_update_option( $key, $value );
            }
        }

        $data = [
            'status_code'   => 200,
            'success' => 1,
            'message' => __( 'Settings successfully updated', 'timetics' ),
            'data'    => timetics_get_settings(),
        ];

        return rest_ensure_response( $data );
    }
}

```
