Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
woocommerce
/
includes
/
legacy
/
api
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php if (!defined('ABSPATH')) { exit; } class WC_REST_Legacy_Coupons_Controller extends WC_REST_CRUD_Controller { public function query_args($args, $request) { if (!empty($request['code'])) { $id = wc_get_coupon_id_by_code($request['code']); $args['post__in'] = array($id); } return $args; } public function prepare_item_for_response($post, $request) { $coupon = new WC_Coupon((int) $post->ID); $data = $coupon->get_data(); $format_decimal = array('amount', 'minimum_amount', 'maximum_amount'); $format_date = array('date_created', 'date_modified', 'date_expires'); $format_null = array('usage_limit', 'usage_limit_per_user', 'limit_usage_to_x_items'); foreach ($format_decimal as $key) { $data[$key] = wc_format_decimal($data[$key], 2); } foreach ($format_date as $key) { $data[$key] = $data[$key] ? wc_rest_prepare_date_response(get_gmt_from_date(date('Y-m-d H:i:s', $data[$key]))) : null; } foreach ($format_null as $key) { $data[$key] = $data[$key] ? $data[$key] : null; } $context = !empty($request['context']) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object($data, $request); $data = $this->filter_response_by_context($data, $context); $response = rest_ensure_response($data); $response->add_links($this->prepare_links($post, $request)); return apply_filters("woocommerce_rest_prepare_{$this->post_type}", $response, $post, $request); } protected function prepare_item_for_database($request) { global $wpdb; $id = isset($request['id']) ? absint($request['id']) : 0; $coupon = new WC_Coupon($id); $schema = $this->get_item_schema(); $data_keys = array_keys(array_filter($schema['properties'], array($this, 'filter_writable_props'))); if ('POST' === $request->get_method() && 0 === $coupon->get_id()) { if (empty($request['code'])) { return new WP_Error('woocommerce_rest_empty_coupon_code', sprintf(__('The coupon code cannot be empty.', 'woocommerce'), 'code'), array('status' => 400)); } } foreach ($data_keys as $key) { $value = $request[$key]; if (!is_null($value)) { switch ($key) { case 'code': $coupon_code = wc_format_coupon_code($value); $id = $coupon->get_id() ? $coupon->get_id() : 0; $id_from_code = wc_get_coupon_id_by_code($coupon_code, $id); if ($id_from_code) { return new WP_Error('woocommerce_rest_coupon_code_already_exists', __('The coupon code already exists', 'woocommerce'), array('status' => 400)); } $coupon->set_code($coupon_code); break; case 'meta_data': if (is_array($value)) { foreach ($value as $meta) { $coupon->update_meta_data($meta['key'], $meta['value'], isset($meta['id']) ? $meta['id'] : ''); } } break; case 'description': $coupon->set_description(wp_filter_post_kses($value)); break; default: if (is_callable(array($coupon, "set_{$key}"))) { $coupon->{"set_{$key}"}($value); } break; } } } return apply_filters("woocommerce_rest_pre_insert_{$this->post_type}", $coupon, $request); } }