/** * Retrieve the current event queue * * @subcommand get-queue */ public function get_queue($args, $assoc_args) { // Build and make request $queue_request = new \WP_REST_Request('POST', '/' . \Automattic\WP\Cron_Control\REST_API::API_NAMESPACE . '/' . \Automattic\WP\Cron_Control\REST_API::ENDPOINT_LIST); $queue_request->add_header('Content-Type', 'application/json'); $queue_request->set_body(wp_json_encode(array('secret' => \WP_CRON_CONTROL_SECRET))); $queue_request = rest_do_request($queue_request); // Oh well if ($queue_request->is_error()) { \WP_CLI::error($queue_request->as_error()->get_error_message()); } // Get the decoded JSON object returned by the API $queue_response = $queue_request->get_data(); // No events, nothing more to do if (empty($queue_response['events'])) { \WP_CLI::warning(__('No events in the current queue', 'automattic-cron-control')); return; } // Prepare items for display $events_for_display = $this->format_events($queue_response['events']); $total_events_to_display = count($events_for_display); \WP_CLI::line(sprintf(_n('Displaying one event', 'Displaying %s events', $total_events_to_display, 'automattic-cron-control'), number_format_i18n($total_events_to_display))); // And reformat $format = 'table'; if (isset($assoc_args['format'])) { if ('ids' === $assoc_args['format']) { \WP_CLI::error(__('Invalid output format requested', 'automattic-cron-control')); } else { $format = $assoc_args['format']; } } \WP_CLI\Utils\format_items($format, $events_for_display, array('timestamp', 'action', 'instance', 'scheduled_for', 'internal_event', 'schedule_name', 'event_args')); }
/** * Test Shipping Zone Locations update endpoint. * @since 2.7.0 */ public function test_update_locations() { wp_set_current_user($this->user); $zone = $this->create_shipping_zone('Test Zone'); $request = new WP_REST_Request('PUT', '/wc/v1/shipping/zones/' . $zone->get_id() . '/locations'); $request->add_header('Content-Type', 'application/json'); $request->set_body(json_encode(array(array('code' => 'UK', 'type' => 'country'), array('code' => 'US'), array('code' => 'SW1A0AA', 'type' => 'postcode'), array('type' => 'continent')))); $response = $this->server->dispatch($request); $data = $response->get_data(); $this->assertEquals(count($data), 2); $this->assertEquals(array(array('code' => 'UK', 'type' => 'country', '_links' => array('collection' => array(array('href' => rest_url('/wc/v1/shipping/zones/' . $zone->get_id() . '/locations'))), 'describes' => array(array('href' => rest_url('/wc/v1/shipping/zones/' . $zone->get_id()))))), array('code' => 'SW1A0AA', 'type' => 'postcode', '_links' => array('collection' => array(array('href' => rest_url('/wc/v1/shipping/zones/' . $zone->get_id() . '/locations'))), 'describes' => array(array('href' => rest_url('/wc/v1/shipping/zones/' . $zone->get_id())))))), $data); }
public function test_update_user_invalid_id() { $this->allow_user_to_manage_multisite(); wp_set_current_user(self::$user); $params = array('id' => '156', 'username' => 'lisasimpson', 'password' => 'DavidHasselhoff', 'email' => '*****@*****.**'); $request = new WP_REST_Request('PUT', sprintf('/wp/v2/users/%d', self::$editor)); $request->add_header('content-type', 'application/x-www-form-urlencoded'); $request->set_body_params($params); $response = $this->server->dispatch($request); $this->assertErrorResponse('rest_user_invalid_id', $response, 404); }
public function test_rest_update_post_raw() { wp_set_current_user(self::$editor_id); $request = new WP_REST_Request('PUT', sprintf('/wp/v2/posts/%d', self::$post_id)); $request->add_header('content-type', 'application/json'); $params = $this->set_raw_post_data(); $request->set_body(wp_json_encode($params)); $response = $this->server->dispatch($request); $this->check_update_post_response($response); $new_data = $response->get_data(); $this->assertEquals(self::$post_id, $new_data['id']); $this->assertEquals($params['title']['raw'], $new_data['title']['raw']); $this->assertEquals($params['content']['raw'], $new_data['content']['raw']); $this->assertEquals($params['excerpt']['raw'], $new_data['excerpt']['raw']); $post = get_post(self::$post_id); $this->assertEquals($params['title']['raw'], $post->post_title); $this->assertEquals($params['content']['raw'], $post->post_content); $this->assertEquals($params['excerpt']['raw'], $post->post_excerpt); }
/** * @ticket 38477 */ public function test_update_comment_content_too_long() { wp_set_current_user(self::$admin_id); $params = array('content' => rand_long_str(66525)); $request = new WP_REST_Request('PUT', sprintf('/wp/v2/comments/%d', self::$approved_id)); $request->add_header('content-type', 'application/json'); $request->set_body(wp_json_encode($params)); $response = $this->server->dispatch($request); $this->assertErrorResponse('comment_content_column_length', $response, 400); }
public function test_update_comment_invalid_permission() { wp_set_current_user(0); $params = array('content' => 'Disco Stu likes disco music.'); $request = new WP_REST_Request('PUT', sprintf('/wp/v2/comments/%d', $this->hold_id)); $request->add_header('content-type', 'application/json'); $request->set_body(wp_json_encode($params)); $response = $this->server->dispatch($request); $this->assertErrorResponse('rest_cannot_edit', $response, 403); }
/** * Adds the included models indicated in the request to the entity provided * @param \EEM_Base $model * @param \WP_REST_Request $rest_request * @param array $entity_array * @return array the modified entity */ protected function _include_requested_models(\EEM_Base $model, \WP_REST_Request $rest_request, $entity_array) { $includes_for_this_model = $this->explode_and_get_items_prefixed_with($rest_request->get_param('include'), ''); $includes_for_this_model = $this->_remove_model_names_from_array($includes_for_this_model); //if they passed in * or didn't specify any includes, return everything if (!in_array('*', $includes_for_this_model) && !empty($includes_for_this_model)) { if ($model->has_primary_key_field()) { //always include the primary key. ya just gotta know that at least $includes_for_this_model[] = $model->primary_key_name(); } if ($this->explode_and_get_items_prefixed_with($rest_request->get_param('calculate'), '')) { $includes_for_this_model[] = '_calculated_fields'; } $entity_array = array_intersect_key($entity_array, array_flip($includes_for_this_model)); } $relation_settings = $this->get_model_version_info()->relation_settings($model); foreach ($relation_settings as $relation_name => $relation_obj) { $related_fields_to_include = $this->explode_and_get_items_prefixed_with($rest_request->get_param('include'), $relation_name); $related_fields_to_calculate = $this->explode_and_get_items_prefixed_with($rest_request->get_param('calculate'), $relation_name); //did they specify they wanted to include a related model, or //specific fields from a related model? //or did they specify to calculate a field from a related model? if ($related_fields_to_include || $related_fields_to_calculate) { //if so, we should include at least some part of the related model $pretend_related_request = new \WP_REST_Request(); $pretend_related_request->set_query_params(array('caps' => $rest_request->get_param('caps'), 'include' => $related_fields_to_include, 'calculate' => $related_fields_to_calculate)); $pretend_related_request->add_header('no_rest_headers', true); $related_results = $this->get_entities_from_relation($entity_array[$model->primary_key_name()], $relation_obj, $pretend_related_request); $entity_array[Read::get_related_entity_name($relation_name, $relation_obj)] = $related_results instanceof \WP_Error ? null : $related_results; } } return $entity_array; }