# timetics/1.0.56/base/api.php

Timetics – Appointment Booking Calendar &amp; Scheduling, version 1.0.56. 70 lines.

- Page: https://pluginprobe.com/plugins/timetics/1.0.56/code/base/api.php
- Raw: https://pluginprobe.com/plugins/timetics/1.0.56/raw/base/api.php
- Modified: 2026-04-27T10:49:08+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.56/code/base/api.php#L10-L20`.

```php
<?php
/**
 * Abstract api class
 *
 * @package Timetics
 */
namespace Timetics\Base;

defined( 'ABSPATH' ) || exit;

use WP_Error;

/**
 * Abstract class Api.
 *
 * @since 1.0.0
 */
abstract class Api extends \WP_REST_Controller {

    /**
     * Api Constructor function.
     *
     * @since 1.0.0
     *
     * @return void
     */
    public function __construct() {
        add_action( 'rest_api_init', [ $this, 'register_routes' ] );
    }

    /**
     * Register routes
     *
     * @since 1.0.0
     *
     * @return void
     */
    public function register_routes() {
        // Need to override the function on child class.
    }

    /**
     * Validate input fields.
     *
     * @since 1.0.0
     *
     * @param array $data Accepts data in array format.
     * @param array $fields Optional. Default empty array.
     *
     * @return  bool | WP_error
     */
    public function validate( $data, $fields = [] ) {
        $error = new WP_Error();

        foreach ( $fields as $field ) {
            if ( empty( $data[ $field ] ) ) {
                /* translators: Error Message */
                $error->add( $field . '_error', sprintf( esc_html__( '%s can\'t be empty', 'timetics' ), $field ) );
            }
        }

        if ( ! empty( $error->errors ) ) {
            return $error;
        }

        return true;
    }

}

```
