c static function get_post_checkout_url() { return self::get_manage_url(); } /** * Get the WPCOM product slug used to make the purchase * * @return ?string */ public static function get_wpcom_product_slug() { return 'jetpack_videopress'; } /** * Get the URL the user is taken after activating the product * * @return ?string */ public static function get_post_activation_url() { return ''; // stay in My Jetpack page. } /** * Get the URL where the user manages the product * * @return ?string */ public static function get_manage_url() { if ( method_exists( 'Automattic\Jetpack\VideoPress\Initializer', 'should_initialize_admin_ui' ) && \Automattic\Jetpack\VideoPress\Initializer::should_initialize_admin_ui() ) { return \Automattic\Jetpack\VideoPress\Admin_UI::get_admin_page_url(); } else { return admin_url( 'admin.php?page=jetpack#/settings?term=videopress' ); } } /** * Get the product-slugs of the paid plans for this product (not including bundles) * * @return array */ public static function get_paid_plan_product_slugs() { return array( 'jetpack_videopress', 'jetpack_videopress_monthly', 'jetpack_videopress_bi_yearly', ); } /** * Return product bundles list * that supports the product. * * @return boolean|array Products bundle list. */ public static function is_upgradable_by_bundle() { return array( 'complete' ); } /** * Get stats for VideoPress * * @return array|WP_Error */ private static function get_videopress_stats() { $video_count = array_sum( (array) wp_count_attachments( 'video' ) ); if ( ! class_exists( 'Automattic\Jetpack\VideoPress\Stats' ) ) { return array( 'videoCount' => $video_count, ); } $featured_stats = get_transient( self::VIDEOPRESS_STATS_KEY ); if ( $featured_stats ) { return array( 'featuredStats' => $featured_stats, 'videoCount' => $video_count, ); } $stats_period = get_transient( self::VIDEOPRESS_PERIOD_KEY ); $videopress_stats = new VideoPress_Stats(); // If the stats period exists, retrieve that information without checking the view count. // If it does not, check the view count of monthly stats and determine if we want to show yearly or monthly stats. if ( $stats_period ) { if ( $stats_period === 'day' ) { $featured_stats = $videopress_stats->get_featured_stats( 60, 'day' ); } else { $featured_stats = $videopress_stats->get_featured_stats( 2, 'year' ); } } else { $featured_stats = $videopress_stats->get_featured_stats( 60, 'day' ); if ( ! is_wp_error( $featured_stats ) && $featured_stats && ( $featured_stats['data']['views']['current'] < 500 || $featured_stats['data']['views']['previous'] < 500 ) ) { $featured_stats = $videopress_stats->get_featured_stats( 2, 'year' ); } } if ( is_wp_error( $featured_stats ) || ! $featured_stats ) { return array( 'videoCount' => $video_count, ); } set_transient( self::VIDEOPRESS_PERIOD_KEY, $featured_stats['period'], WEEK_IN_SECONDS ); set_transient( self::VIDEOPRESS_STATS_KEY, $featured_stats, DAY_IN_SECONDS ); return array( 'featuredStats' => $featured_stats, 'videoCount' => $video_count, ); } /** * Get VideoPress data for the REST API * * @return WP_REST_Response|WP_Error */ public static function get_site_videopress_data() { $videopress_stats = self::get_videopress_stats(); return rest_ensure_response( $videopress_stats ); } }