PRESS_PRIVACY::IS_PUBLIC ), $videopress_privacy_setting_list, true ) ) {
$videopress_privacy_setting_list[] = \VIDEOPRESS_PRIVACY::SITE_DEFAULT;
}
}
$args['meta_query'][] = array(
'key' => 'videopress_privacy_setting',
'value' => $videopress_privacy_setting_list,
'compare' => 'IN',
);
}
/* Filter using rating meta key */
if ( isset( $request['videopress_rating'] ) ) {
$videopress_rating = sanitize_text_field( $request['videopress_rating'] );
/* Allows the filtering to happens using a list of ratings separated by comma */
$videopress_rating_list = explode( ',', $videopress_rating );
$args['meta_query'][] = array(
'key' => 'videopress_rating',
'value' => $videopress_rating_list,
'compare' => 'IN',
);
}
return $args;
}
/**
* Defines data structure and what elements are visible in which contexts
*/
public function get_schema() {
return array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => $this->field_name,
'type' => 'object',
'context' => array( 'view', 'edit' ),
'readonly' => true,
'description' => __( 'VideoPress Data', 'jetpack-videopress-pkg' ),
);
}
/**
* Getter: Retrieve current VideoPress data for a given attachment.
*
* @param array $attachment Response from the attachment endpoint.
* @param WP_REST_Request $request Request to the attachment endpoint.
*
* @return array
*/
public function get( $attachment, $request ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
if ( ! isset( $attachment['id'] ) ) {
return array();
}
$blog_id = Jetpack_Connection::get_site_id();
if ( ! is_int( $blog_id ) ) {
return array();
}
$videopress = $this->get_videopress_data( (int) $attachment['id'], $blog_id );
if ( ! $videopress ) {
return array();
}
return $videopress;
}
/**
* Gets the VideoPress GUID for a given attachment.
*
* This is pulled out into a separate method to support unit test mocking.
*
* @param int $attachment_id Attachment ID.
* @param int $blog_id Blog ID.
*
* @return array
*/
public function get_videopress_data( $attachment_id, $blog_id ) {
$info = video_get_info_by_blogpostid( $blog_id, $attachment_id );
if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
$title = video_get_title( $blog_id, $attachment_id );
$description = video_get_description( $blog_id, $attachment_id );
$video_attachment = get_blog_post( $blog_id, $attachment_id );
if ( null === $video_attachment ) {
$caption = '';
} else {
$caption = $video_attachment->post_excerpt;
}
} else {
$title = $info->title;
$description = $info->description;
$caption = $info->caption;
}
$video_privacy_setting = ! isset( $info->privacy_setting ) ? \VIDEOPRESS_PRIVACY::SITE_DEFAULT : intval( $info->privacy_setting );
$private_enabled_for_site = Data::get_videopress_videos_private_for_site();
$is_private = $this->video_is_private( $video_privacy_setting, $private_enabled_for_site );
// The video needs a playback token if it's private for any reason (video privacy setting or site default privacy setting)
$video_needs_playback_token = $is_private;
return array(
'title' => $title,
'description' => $description,
'caption' => $caption,
'guid' => $info->guid ?? null,
'rating' => $info->rating ?? null,
'allow_download' =>
isset( $info->allow_download ) && $info->allow_download ? 1 : 0,
'display_embed' =>
isset( $info->display_embed ) && $info->display_embed ? 1 : 0,
'privacy_setting' => $video_privacy_setting,
'needs_playback_token' => $video_needs_playback_token,
'is_private' => $is_private,
'private_enabled_for_site' => $private_enabled_for_site,
);
}
/**
* Checks if the given attachment is a video.
*
* @param object $attachment The attachment object.
*
* @return false|int
*/
public function is_video( $attachment ) {
return isset( $attachment->post_mime_type ) && wp_startswith( $attachment->post_mime_type, 'video/' );
}
/**
* Removes the jetpack_videopress field from the response if the
* given attachment is not a video.
*
* @param WP_REST_Response $response Response from the attachment endpoint.
* @param WP_Post $attachment The original attachment object.
*
* @return mixed
*/
public function remove_field_for_non_videos( $response, $attachment ) {
if ( ! $this->is_video( $attachment ) ) {
unset( $response->data[ $this->field_name ] );
}
return $response;
}
/**
* Determines if a video is private based on the video privacy
* setting and the site default privacy setting.
*
* @param int $video_privacy_setting The privacy setting for the video.
* @param bool $private_enabled_for_site Flag stating if the default video privacy is private.
*
* @return bool
*/
private function video_is_private( $video_privacy_setting, $private_enabled_for_site ) {
if ( $video_privacy_setting === \VIDEOPRESS_PRIVACY::IS_PUBLIC ) {
return false;
}
if ( $video_privacy_setting === \VIDEOPRESS_PRIVACY::IS_PRIVATE ) {
return true;
}
return $private_enabled_for_site;
}
}
if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
wpcom_rest_api_v2_load_plugin( 'Automattic\Jetpack\VideoPress\WPCOM_REST_API_V2_Attachment_VideoPress_Data' );
}
Fatal error: Uncaught Error: Class 'Automattic\Jetpack\VideoPress\WPCOM_REST_API_V2_Attachment_VideoPress_Data' not found in /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-videopress/src/class-initializer.php:93
Stack trace:
#0 /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-videopress/src/class-initializer.php(36): Automattic\Jetpack\VideoPress\Initializer::unconditional_initialization()
#1 /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-config/src/class-config.php(325): Automattic\Jetpack\VideoPress\Initializer::init()
#2 /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-config/src/class-config.php(217): Automattic\Jetpack\Config->enable_videopress()
#3 /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-config/src/class-config.php(153): Automattic\Jetpack\Config->ensure_feature('videopres in /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-videopress/src/class-initializer.php on line 93