/** * * @param WP_REST_Request $request - See WC_Connect_API_Client::get_label_rates() * @return array|WP_Error */ public function update_items($request) { $request_body = $request->get_body(); $payload = json_decode($request_body, true, WOOCOMMERCE_CONNECT_MAX_JSON_DECODE_DEPTH); // Hardcode USPS rates for now $payload['carrier'] = 'usps'; $response = $this->api_client->get_label_rates($payload); if (is_wp_error($response)) { $error = new WP_Error($response->get_error_code(), $response->get_error_message(), array('message' => $response->get_error_message())); $this->logger->log($error, __CLASS__); return $error; } return array('success' => true, 'rates' => property_exists($response, 'rates') ? $response->rates : new stdClass()); }
/** * Update one item from the collection * * @param \WP_REST_Request $request Full data about the request. * * @return \WP_Error|\WP_REST_Request */ public function update_item($request) { $params = $request->get_params(); $color = $params[0]; if (!array_key_exists($color, self::$lights)) { return new \WP_Error('cant-update', __('message', 'particle-api'), array('status' => 500)); } $json = json_decode($request->get_body()); $status = isset($json->status) ? $json->status : null; $string_status = $status ? 'true' : 'false'; $data = new \stdClass(); update_option(self::$lights[$color], $string_status); $data->status = $status; if (is_object($data)) { return new \WP_REST_Response($data, 200); } return new \WP_Error('cant-update', __('message', 'particle-api'), array('status' => 500)); }
/** * Update one item from the collection * * @param \WP_REST_Request $request Full data about the request. * * @return \WP_Error|\WP_REST_Request */ public function update_item($request) { //$item = $this->prepare_item_for_database( $request ); $params = $request->get_params(); $id = intval($params[0]); if (!array_key_exists($id, self::$switches)) { return new \WP_Error('cant-update', __('message', 'particle-api'), array('status' => 500)); } $json = json_decode($request->get_body()); $status = isset($json->status) ? $json->status : null; $data = new \stdClass(); update_option(self::$switches[$id], $status); $data->status = $status; if (is_object($data)) { return new \WP_REST_Response($data, 200); } return new \WP_Error('cant-update', __('message', 'particle-api'), array('status' => 500)); }
/** * This method use for handler request from Github's webhook. * * Because of github not required to response payload on response, so we can make a do_action instead of apply_filters * * @param \WP_REST_Request $request * * @return \WP_REST_Response */ public function onGithubRequest(\WP_REST_Request $request) { // Create the response object $request_payload = json_decode($request->get_body()); $response = new \WP_REST_Response(); if ($request_payload) { ob_start(); $repo = new Repository($request_payload->repository->git_url); if ($repo->exists()) { $event = $request->get_header('X-Github-Event'); do_action('wppm_webhook_recived_' . $event, $repo, $request_payload); } else { $response->set_status(404); echo "Repo is not exist."; } $out_put = ob_get_clean(); $response->set_data($out_put); } else { $response->set_status(500); } return $response; }
/** * Creates a single attachment. * * @since 4.7.0 * @access public * * @param WP_REST_Request $request Full details about the request. * @return WP_Error|WP_REST_Response Response object on success, WP_Error object on failure. */ public function create_item($request) { if (!empty($request['post']) && in_array(get_post_type($request['post']), array('revision', 'attachment'), true)) { return new WP_Error('rest_invalid_param', __('Invalid parent type.'), array('status' => 400)); } // Get the file via $_FILES or raw data. $files = $request->get_file_params(); $headers = $request->get_headers(); if (!empty($files)) { $file = $this->upload_from_file($files, $headers); } else { $file = $this->upload_from_data($request->get_body(), $headers); } if (is_wp_error($file)) { return $file; } $name = basename($file['file']); $name_parts = pathinfo($name); $name = trim(substr($name, 0, -(1 + strlen($name_parts['extension'])))); $url = $file['url']; $type = $file['type']; $file = $file['file']; // use image exif/iptc data for title and caption defaults if possible $image_meta = @wp_read_image_metadata($file); if (!empty($image_meta)) { if (empty($request['title']) && trim($image_meta['title']) && !is_numeric(sanitize_title($image_meta['title']))) { $request['title'] = $image_meta['title']; } if (empty($request['caption']) && trim($image_meta['caption'])) { $request['caption'] = $image_meta['caption']; } } $attachment = $this->prepare_item_for_database($request); $attachment->file = $file; $attachment->post_mime_type = $type; $attachment->guid = $url; if (empty($attachment->post_title)) { $attachment->post_title = preg_replace('/\\.[^.]+$/', '', basename($file)); } $id = wp_insert_post(wp_slash((array) $attachment), true); if (is_wp_error($id)) { if ('db_update_error' === $id->get_error_code()) { $id->add_data(array('status' => 500)); } else { $id->add_data(array('status' => 400)); } return $id; } $attachment = get_post($id); /** * Fires after a single attachment is created or updated via the REST API. * * @since 4.7.0 * * @param WP_Post $attachment Inserted or updated attachment * object. * @param WP_REST_Request $request The request sent to the API. * @param bool $creating True when creating an attachment, false when updating. */ do_action('rest_insert_attachment', $attachment, $request, true); // Include admin functions to get access to wp_generate_attachment_metadata(). require_once ABSPATH . 'wp-admin/includes/admin.php'; wp_update_attachment_metadata($id, wp_generate_attachment_metadata($id, $file)); if (isset($request['alt_text'])) { update_post_meta($id, '_wp_attachment_image_alt', sanitize_text_field($request['alt_text'])); } $fields_update = $this->update_additional_fields_for_object($attachment, $request); if (is_wp_error($fields_update)) { return $fields_update; } $request->set_param('context', 'edit'); $response = $this->prepare_item_for_response($attachment, $request); $response = rest_ensure_response($response); $response->set_status(201); $response->header('Location', rest_url(sprintf('%s/%s/%d', $this->namespace, $this->rest_base, $id))); return $response; }
/** * Prepare the item for create or update operation * * @param WP_REST_Request $request Request object * @since 7.0 * @return WP_Error|object $prepared_item */ protected function prepare_item_for_database($request) { $body = $request->get_body(); if (!empty($body)) { $body = json_decode($body, true); $raw_title = !empty($body['title']) && !empty($body['title']['raw']) ? $body['title']['raw'] : ''; $body['title'] = $raw_title; return $body; } return false; }
/** * Create a single attachment * * @param WP_REST_Request $request Full details about the request * @return WP_Error|WP_REST_Response */ public function create_item($request) { // Permissions check - Note: "upload_files" cap is returned for an attachment by $post_type_obj->cap->create_posts $post_type_obj = get_post_type_object($this->post_type); if (!current_user_can($post_type_obj->cap->create_posts) || !current_user_can($post_type_obj->cap->edit_posts)) { return new WP_Error('rest_cannot_create', __('Sorry, you are not allowed to post on this site.'), array('status' => 400)); } // If a user is trying to attach to a post make sure they have permissions. Bail early if post_id is not being passed if (!empty($request['post'])) { $parent = get_post((int) $request['post']); $post_parent_type = get_post_type_object($parent->post_type); if (!current_user_can($post_parent_type->cap->edit_post, $request['post'])) { return new WP_Error('rest_cannot_edit', __('Sorry, you are not allowed to edit this post.'), array('status' => 401)); } } // Get the file via $_FILES or raw data $files = $request->get_file_params(); $headers = $request->get_headers(); if (!empty($files)) { $file = $this->upload_from_file($files, $headers); } else { $file = $this->upload_from_data($request->get_body(), $headers); } if (is_wp_error($file)) { return $file; } $name = basename($file['file']); $name_parts = pathinfo($name); $name = trim(substr($name, 0, -(1 + strlen($name_parts['extension'])))); $url = $file['url']; $type = $file['type']; $file = $file['file']; $title = $name; $caption = ''; // use image exif/iptc data for title and caption defaults if possible // @codingStandardsIgnoreStart $image_meta = @wp_read_image_metadata($file); // @codingStandardsIgnoreEnd if (!empty($image_meta)) { if (empty($request['title']) && trim($image_meta['title']) && !is_numeric(sanitize_title($image_meta['title']))) { $title = $image_meta['title']; } if (empty($request['caption']) && trim($image_meta['caption'])) { $caption = $image_meta['caption']; } } $attachment = $this->prepare_item_for_database($request); $attachment->file = $file; $attachment->post_mime_type = $type; $attachment->guid = $url; $id = wp_insert_post($attachment, true); if (is_wp_error($id)) { return $id; } /** Include admin functions to get access to wp_generate_attachment_metadata() */ require_once ABSPATH . 'wp-admin/includes/admin.php'; wp_update_attachment_metadata($id, wp_generate_attachment_metadata($id, $file)); if (isset($request['alt_text'])) { update_post_meta($id, '_wp_attachment_image_alt', sanitize_text_field($request['alt_text'])); } $this->update_additional_fields_for_object($attachment, $request); $response = $this->get_item(array('id' => $id, 'context' => 'edit')); $response = rest_ensure_response($response); $response->set_status(201); $response->header('Location', rest_url('/wp/v2/' . $this->get_post_type_base($attachment->post_type) . '/' . $id)); /** * Fires after a single attachment is created or updated via the REST API. * * @param object $attachment Inserted attachment. * @param WP_REST_Request $request The request sent to the API. * @param bool $creating True when creating an attachment, false when updating. */ do_action('rest_insert_attachment', $attachment, $request, true); return $response; }
public function update_unit(WP_REST_Request $request) { $id = (int) $request['id']; $unit = $this->get_unit(array("id" => $id), false); if (empty($id) || empty($unit->id)) { return new WP_Error('error', __('unit not found 3 '), array('status' => 404)); } // why do I have to do this?? $data = json_decode($request->get_body(), true); if (!empty($data['unit'])) { $data = $data["unit"]; } // $data["parent"] = $data["parent_id"]; // unset($data["parent_id"]); // $data["type"] = $data["type_id"]; // unset($data["type_id"]); /* if ( isset( $_headers['IF_UNMODIFIED_SINCE'] ) ) { // As mandated by RFC2616, we have to check all of RFC1123, RFC1036 // and C's asctime() format (and ignore invalid headers) $formats = array( DateTime::RFC1123, DateTime::RFC1036, 'D M j H:i:s Y' ); foreach ( $formats as $format ) { $check = WP_JSON_DateTime::createFromFormat( $format, $_headers['IF_UNMODIFIED_SINCE'] ); if ( $check !== false ) { break; } } // If the post has been modified since the date provided, return an error. if ( $check && mysql2date( 'U', $post['post_modified_gmt'] ) > $check->format('U') ) { return new WP_Error( 'json_old_revision', __( 'There is a revision of this post that is more recent.' ), array( 'status' => 412 ) ); } } */ global $wpdb; $table_name = $wpdb->prefix . "ot_unit"; $res = $wpdb->update($table_name, $data, array('id' => $id)); if (false !== $res) { return $this->get_unit(array("id" => $id)); } else { return new WP_Error('error', __('update unit error ' . $res->last_error), array('status' => 404)); } }
/** * Create a single attachment * * @param WP_REST_Request $request Full details about the request * @return WP_Error|WP_REST_Response */ public function create_item($request) { // Get the file via $_FILES or raw data $files = $request->get_file_params(); $headers = $request->get_headers(); if (!empty($files)) { $file = $this->upload_from_file($files, $headers); } else { $file = $this->upload_from_data($request->get_body(), $headers); } if (is_wp_error($file)) { return $file; } $name = basename($file['file']); $name_parts = pathinfo($name); $name = trim(substr($name, 0, -(1 + strlen($name_parts['extension'])))); $url = $file['url']; $type = $file['type']; $file = $file['file']; // use image exif/iptc data for title and caption defaults if possible // @codingStandardsIgnoreStart $image_meta = @wp_read_image_metadata($file); // @codingStandardsIgnoreEnd if (!empty($image_meta)) { if (empty($request['title']) && trim($image_meta['title']) && !is_numeric(sanitize_title($image_meta['title']))) { $request['title'] = $image_meta['title']; } if (empty($request['caption']) && trim($image_meta['caption'])) { $request['caption'] = $image_meta['caption']; } } $attachment = $this->prepare_item_for_database($request); $attachment->file = $file; $attachment->post_mime_type = $type; $attachment->guid = $url; $id = wp_insert_post($attachment, true); if (is_wp_error($id)) { if (in_array($id->get_error_code(), array('db_update_error'))) { $id->add_data(array('status' => 500)); } else { $id->add_data(array('status' => 400)); } return $id; } $attachment = get_post($id); /** Include admin functions to get access to wp_generate_attachment_metadata() */ require_once ABSPATH . 'wp-admin/includes/admin.php'; wp_update_attachment_metadata($id, wp_generate_attachment_metadata($id, $file)); if (isset($request['alt_text'])) { update_post_meta($id, '_wp_attachment_image_alt', sanitize_text_field($request['alt_text'])); } $this->update_additional_fields_for_object($attachment, $request); $request->set_param('context', 'edit'); $response = $this->prepare_item_for_response($attachment, $request); $response = rest_ensure_response($response); $response->set_status(201); $response->header('Location', rest_url('/wp/v2/' . $this->get_post_type_base($attachment->post_type) . '/' . $id)); /** * Fires after a single attachment is created or updated via the REST API. * * @param object $attachment Inserted attachment. * @param WP_REST_Request $request The request sent to the API. * @param boolean $creating True when creating an attachment, false when updating. */ do_action('rest_insert_attachment', $attachment, $request, true); return $response; }