version = $this->version.'.'.time(); // dev mode parent::__construct( $plugin ); $this->hooks(); } /** * Initiate our hooks. * * @since 0.0.2 */ public function hooks() { } public function rest_api_init() { // No API Endpoints for this model // All manipulations should be done through an Appointment // $this->register_routes(); } public function belongs_to() { return array( // 'Author' => array( // 'model' => 'WP_User_Model', // 'foreign_key' => 'author_id', // ), 'Appointment' => array( 'model' => $this->plugin->appointment_model, 'foreign_key' => 'appointment_id', ), ); } protected $schema = array( 'appointment_id' => array( 'field' => 'appointment_id', 'label' => 'Appointment Type ID', 'default_value' => 0, 'format' => '%d', 'mysql_type' => 'BIGINT', 'mysql_length' => 20, 'mysql_unsigned' => true, 'mysql_allow_null' => false, 'mysql_extra' => '', 'cache_key' => false, ), 'meta_key' => array( 'field' => 'meta_key', 'label' => 'Meta Key', 'default_value' => false, 'format' => '%s', 'mysql_type' => 'VARCHAR', 'mysql_length' => '120', 'mysql_unsigned' => false, 'mysql_allow_null' => false, 'mysql_extra' => '', 'cache_key' => false, ), 'meta_value' => array( 'field' => 'meta_value', 'label' => 'Meta Value', 'default_value' => false, 'format' => '%s', 'mysql_type' => 'TEXT', 'mysql_length' => false, 'mysql_unsigned' => false, 'mysql_allow_null' => false, 'mysql_extra' => '', 'cache_key' => false, 'encoder' => 'json_serialize', ), ); public $indexes = array( 'appointment_id' => [ 'appointment_id' ], 'meta_key' => [ 'meta_key' ], ); public function filter_where_conditions( $where, $args ) { global $wpdb; if ( ! empty( $args['appointment_id'] ) ) { // Check if appointment_id is an array if ( is_array( $args['appointment_id'] ) ) { $ids = array_map('sanitize_text_field', $args['appointment_id']); $ids = array_map('esc_sql', $ids); $placeholders = implode(',', array_fill(0, count($ids), '%d')); $where .= call_user_func_array(array($wpdb, 'prepare'), array_merge(array(" AND appointment_id IN ($placeholders)"), $ids)); } else { $where .= $wpdb->prepare( ' AND appointment_id=%d', sanitize_text_field( $args['appointment_id'] ) ); } } if ( ! empty( $args['meta_key'] ) ) { $where .= $wpdb->prepare( ' AND meta_key=%s', sanitize_text_field( $args['meta_key'] ) ); } if ( ! empty( $args['meta_value'] ) ) { $where .= $wpdb->prepare( ' AND meta_value=%s', sanitize_text_field( $args['meta_value'] ) ); } return $where; } public function create_item_permissions_check( $request ) { return $this->nonce_permissions_check( $request ); } /** * Check if a given request has access to update a specific item * * @param WP_REST_Request $request Full data about the request. * @return WP_Error|bool */ public function update_item_permissions_check( $request ) { if ( true === $this->get_item_permissions_check( $request ) ) { return true; } return false; } }