} /** * REST API: WP_REST_Post_Statuses_Controller class * * @package WordPress * @subpackage REST_API * @since 4.7.0 */ /** * Core class used to access post statuses via the REST API. * * @since 4.7.0 * * @see WP_REST_Controller */ class WP_REST_Post_Statuses_Controller extends WP_REST_Controller { /** * Constructor. * * @since 4.7.0 */ public function __construct() { $this->namespace = 'wp/v2'; $this->rest_base = 'statuses'; } /** * Registers the routes for post statuses. * * @since 4.7.0 * * @see register_rest_route() */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_items' ), 'permission_callback' => array( $this, 'get_items_permissions_check' ), 'args' => $this->get_collection_params(), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( 'args' => array( 'status' => array( 'description' => __( 'An alphanumeric identifier for the status.' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), 'args' => array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } /** * Checks whether a given request has permission to read post statuses. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_items_permissions_check( $request ) { if ( 'edit' === $request['context'] ) { $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( current_user_can( $type->cap->edit_posts ) ) { return true; } } return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to manage post statuses.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Retrieves all post statuses, depending on user context. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_items( $request ) { $data = array(); $statuses = get_post_stati( array( 'internal' => false ), 'object' ); $statuses['trash'] = get_post_status_object( 'trash' ); foreach ( $statuses as $slug => $obj ) { $ret = $this->check_read_permission( $obj ); if ( ! $ret ) { continue; } $status = $this->prepare_item_for_response( $obj, $request ); $data[ $obj->name ] = $this->prepare_response_for_collection( $status ); } return rest_ensure_response( $data ); } /** * Checks if a given request has access to read a post status. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access for the item, WP_Error object otherwise. */ public function get_item_permissions_check( $request ) { $status = get_post_status_object( $request['status'] ); if ( empty( $status ) ) { return new WP_Error( 'rest_status_invalid', __( 'Invalid status.' ), array( 'status' => 404 ) ); } $check = $this->check_read_permission( $status ); if ( ! $check ) { return new WP_Error( 'rest_cannot_read_status', __( 'Cannot view status.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Checks whether a given post status should be visible. * * @since 4.7.0 * * @param object $status Post status. * @return bool True if the post status is visible, otherwise false. */ protected function check_read_permission( $status ) { if ( true === $status->public ) { return true; } if ( false === $status->internal || 'trash' === $status->name ) { $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( current_user_can( $type->cap->edit_posts ) ) { return true; } } } return false; } /** * Retrieves a specific post status. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_item( $request ) { $obj = get_post_status_object( $request['status'] ); if ( empty( $obj ) ) { return new WP_Error( 'rest_status_invalid', __( 'Invalid status.' ), array( 'status' => 404 ) ); } $data = $this->prepare_item_for_response( $obj, $request ); return rest_ensure_response( $data ); } /** * Prepares a post status object for serialization. * * @since 4.7.0 * @since 5.9.0 Renamed `$status` to `$item` to match parent class for PHP 8 named parameter support. * * @param stdClass $item Post status data. * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response Post status data. */ public function prepare_item_for_response( $item, $request ) { // Restores the more descriptive, specific name for use within this method. $status = $item; $fields = $this->get_fields_for_response( $request ); $data = array(); if ( in_array( 'name', $fields, true ) ) { $data['name'] = $status->label; } if ( in_array( 'private', $fields, true ) ) { $data['private'] = (bool) $status->private; } if ( in_array( 'protected', $fields, true ) ) { $data['protected'] = (bool) $status->protected; } if ( in_array( 'public', $fields, true ) ) { $data['public'] = (bool) $status->public; } if ( in_array( 'queryable', $fields, true ) ) { $data['queryable'] = (bool) $status->publicly_queryable; } if ( in_array( 'show_in_list', $fields, true ) ) { $data['show_in_list'] = (bool) $status->show_in_admin_all_list; } if ( in_array( 'slug', $fields, true ) ) { $data['slug'] = $status->name; } if ( in_array( 'date_floating', $fields, true ) ) { $data['date_floating'] = $status->date_floating; } $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 ); $rest_url = rest_url( rest_get_route_for_post_type_items( 'post' ) ); if ( 'publish' === $status->name ) { $response->add_link( 'archives', $rest_url ); } else { $response->add_link( 'archives', add_query_arg( 'status', $status->name, $rest_url ) ); } /** * Filters a post status returned from the REST API. * * Allows modification of the status data right before it is returned. * * @since 4.7.0 * * @param WP_REST_Response $response The response object. * @param object $status The original post status object. * @param WP_REST_Request $request Request used to generate the response. */ return apply_filters( 'rest_prepare_status', $response, $status, $request ); } /** * Retrieves the post status' schema, conforming to JSON Schema. * * @since 4.7.0 * * @return array Item schema data. */ public function get_item_schema() { if ( $this->schema ) { return $this->add_additional_fields_schema( $this->schema ); } $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'status', 'type' => 'object', 'properties' => array( 'name' => array( 'description' => __( 'The title for the status.' ), 'type' => 'string', 'context' => array( 'embed', 'view', 'edit' ), 'readonly' => true, ), 'private' => array( 'description' => __( 'Whether posts with this status should be private.' ), 'type' => 'boolean', 'context' => array( 'edit' ), 'readonly' => true, ), 'protected' => array( 'description' => __( 'Whether posts with this status should be protected.' ), 'type' => 'boolean', 'context' => array( 'edit' ), 'readonly' => true, ), 'public' => array( 'description' => __( 'Whether posts of this status should be shown in the front end of the site.' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'queryable' => array( 'description' => __( 'Whether posts with this status should be publicly-queryable.' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'show_in_list' => array( 'description' => __( 'Whether to include posts in the edit listing for their post type.' ), 'type' => 'boolean', 'context' => array( 'edit' ), 'readonly' => true, ), 'slug' => array( 'description' => __( 'An alphanumeric identifier for the status.' ), 'type' => 'string', 'context' => array( 'embed', 'view', 'edit' ), 'readonly' => true, ), 'date_floating' => array( 'description' => __( 'Whether posts of this status may have floating published dates.' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), ), ); $this->schema = $schema; return $this->add_additional_fields_schema( $this->schema ); } /** * Retrieves the query params for collections. * * @since 4.7.0 * * @return array Collection parameters. */ public function get_collection_params() { return array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ); } } DJI Mavic Air 2 – Shawn Ide Studios https://shawnidestudios.com Thu, 15 Apr 2021 16:32:46 +0000 en-US hourly 1 https://wordpress.org/?v=6.2.8 https://shawnidestudios.com/wp-content/uploads/2023/03/SIS-Icon-1.svg DJI Mavic Air 2 – Shawn Ide Studios https://shawnidestudios.com 32 32 DJI Air 2S Release Date April 15 https://shawnidestudios.com/dji-air-2s-release-date-april-15 https://shawnidestudios.com/dji-air-2s-release-date-april-15#respond Thu, 08 Apr 2021 23:27:40 +0000 http://shawnidestudios.com/?p=24472
New leaked footage

Various reports across the internet suggest that the DJI Air 2S will be released on April 15, 2021.  Some retailers have reported already having the drone in stock.  If the rumors are true, the Air 2S should have the same camera as the current DJI Mavic 2 Pro with it’s 1-inch sensor.  The lensmaker Hasselblad has not been on any of the leaks we have seen so far, so the camera may just includes similar specs.

Will you be getting the DJI Air 2S on release day or are you holding out for the DJI Pro3??

Here is a video from my YouTube Channel from the DJI Mavic Air 2.

Building a Neighborhood – Dronelink and the DJI Mavic Air 2
]]>
https://shawnidestudios.com/dji-air-2s-release-date-april-15/feed 0
DJI Air 2S teaser reveals a 1-inch sensor, 20MP, ADS-B https://shawnidestudios.com/dji-air-2s-teaser-video-confirms-1-inch-sensor-20mp-ads-b https://shawnidestudios.com/dji-air-2s-teaser-video-confirms-1-inch-sensor-20mp-ads-b#comments Tue, 06 Apr 2021 21:08:33 +0000 http://shawnidestudios.com/?p=24426 Breaking the internet is a leaked teaser/marketing video showing the soon-to-be-released DJI Air 2S drone. In the video, we can see the following specs seemingly confirmed.

The DJI Air 2S in the video shows us:

  • A 1-inch sensor
  • 20MP stills capability
  • Silent props
  • ADS-B In
  • Obstacle avoidance sensors in the front, top, and back.
  • Confirms the Air 2S name

Apart from the new top OA sensors, the DJI Air 2S looks very similar if not identical to the original DJI Mavic 2 Air.

The Air 2s will weigh 600 grams, which is about 30 grams heavier than the Air 2. The drone is said to include10 bit color into the camera, giving it the ability to capture over a billion colors and support Intelligent HDR.

Other features include hyperlapse and a panorama function. Apparently the Air 2S is capable of reaching a maximum speed of up to 19 meters per second (about 68 kilometers per hour), which is the same as the Mavic Air 2. Like the Mavic Air 2, the Air 2S also has 8GB of onboard storage.

Another new addition includes “Master Shots,” which has the drone perform ten different maneuvers of a subject and make short recordings.

The drone should also include DJI’s “Spotlight 2.0” and “Point of Interest 3.0” along with the “ActiveTrack 4.0.” Additionally, the DJI Air 2S will also be upgraded to autopilot version 4.0. This would allow it to detect objects in all four directions and avoid them. The drone is expected to be powered by a 3,500mAh battery, which had been first confirmed in a previous FCC listing. While the exact pricing and launch date are unknown, it is expected to be around $950 US Dollars and could be announced sometime this month.

Sources: gizmochina.com, dronexl.co

]]>
https://shawnidestudios.com/dji-air-2s-teaser-video-confirms-1-inch-sensor-20mp-ads-b/feed 1
Drones and Chill – Live (011921) https://shawnidestudios.com/drones-and-chill-live-011921 https://shawnidestudios.com/drones-and-chill-live-011921#respond Wed, 20 Jan 2021 05:10:00 +0000 http://shawnidestudios.com/?p=24319

Buy the DJI Mavic Air 2: Click Here

Tonight we are mainly going to be talking about drones and just hanging out. Come in the chat if you like.

A midrange drone with flagship features, the DJI Mavic Air 2 Fly More Combo combines a foldable and portable frame, high-end camera system, and a host of accessories to get you flying quickly. The 3-axis gimbal sports a 1/2″ CMOS sensor capable of capturing 8K Hyperlapse time-lapse shots, 4K60 video, 240 fps slow-motion 1080p video, and up to 48MP stills. In addition, photos, panoramas, and video can be captured in HDR for more dynamic results. All your footage can be saved to 8GB of internal storage and on optional SD cards up to 256GB in size.

  • 8K Hyperlapse Time-Lapse Video
  • Up to 4K60p Video & 48MP Images
  • Up to 34 Minutes of Flight Time
  • Remote Controller & Fly More Accessories

#djimavicair2 #flymorecombo #upyourgame

]]>
https://shawnidestudios.com/drones-and-chill-live-011921/feed 0