// Enqueue VideoPress scripts $js_url = is_ssl() ? 'https://v0.wordpress.com/js/videopress.js' : 'http://s0.videopress.com/js/videopress.js'; wp_enqueue_script('videopress', $js_url, array('jquery', 'swfobject'), '1.09'); require_once dirname(__FILE__) . '/class.videopress-video.php'; require_once dirname(__FILE__) . '/class.videopress-player.php'; $player = new VideoPress_Player($guid, $attr['width'], $options); if (is_feed()) { return $player->asXML(); } else { return $player->asHTML(); } } /** * Validate user-supplied guid values against expected inputs * * @since 1.1 * @param string $guid video identifier * @return bool true if passes validation test */ public function is_valid_guid($guid) { if (!empty($guid) && strlen($guid) === 8 && ctype_alnum($guid)) { return true; } else { return false; } } } // Initialize the shortcode handler. Jetpack_VideoPress_Shortcode::init();
/** * Our custom AJAX callback for the query-attachments action * used in the media modal. By-passed if not for VideoPress. */ function wp_ajax_query_attachments() { // Watch for VideoPress calls if (!isset($_POST['query']['videopress'])) { return; } if (!$this->can('read_videos')) { return wp_send_json_error('permission denied'); } // Get and sanitize query arguments. $query_args = $this->sanitize_wp_query_args($_POST['query']); // Fire a remote WP_Query $result = $this->query('jetpack.vpQuery', $query_args); if (is_wp_error($result)) { return wp_send_json_error('xml rpc request error'); } $items = $result; $shortcode_handler = Jetpack_VideoPress_Shortcode::init(); foreach ($items as $key => $item) { // Check local permissions if (!$this->can('edit_videos')) { unset($item['vp_nonces']['update']); } if (!$this->can('delete_videos')) { unset($item['vp_nonces']['delete']); } // Add a second pair of nonces for the .org blog. $item['nonces'] = array(); if (!empty($item['vp_nonces']['update'])) { $item['nonces']['update'] = wp_create_nonce('update-videopress-post_' . $item['id']); } if (!empty($item['vp_nonces']['delete'])) { $item['nonces']['delete'] = wp_create_nonce('delete-videopress-post_' . $item['id']); } $item['vp_embed'] = $shortcode_handler->shortcode_callback(array($item['vp_guid'], 'autoplay' => true, 'flashonly' => true, 'w' => 440)); $items[$key] = $item; } wp_send_json_success($items); }
/** * Always load certain scripts when IS is enabled, as they can't be loaded after `document.ready` fires, meaning they can't leverage IS's script loader. * * @global $videopress * @uses do_action() * @uses apply_filters() * @uses wp_enqueue_style() * @uses wp_enqueue_script() * @action wp_enqueue_scripts * @return null */ public function action_wp_enqueue_scripts() { // VideoPress stand-alone plugin global $videopress; if (!empty($videopress) && The_Neverending_Home_Page::archive_supports_infinity() && is_a($videopress, 'VideoPress') && method_exists($videopress, 'enqueue_scripts')) { $videopress->enqueue_scripts(); } // VideoPress Jetpack module if (Jetpack::is_module_active('videopress')) { Jetpack_VideoPress_Shortcode::enqueue_scripts(); } // Fire the post_gallery action early so Carousel scripts are present. if (Jetpack::is_module_active('carousel')) { do_action('post_gallery', '', ''); } // Always enqueue Tiled Gallery scripts when both IS and Tiled Galleries are enabled if (Jetpack::is_module_active('tiled-gallery')) { Jetpack_Tiled_Gallery::default_scripts_and_styles(); } // Core's Audio and Video Shortcodes if ('mediaelement' === apply_filters('wp_audio_shortcode_library', 'mediaelement')) { wp_enqueue_style('wp-mediaelement'); wp_enqueue_script('wp-mediaelement'); } if ('mediaelement' === apply_filters('wp_video_shortcode_library', 'mediaelement')) { wp_enqueue_style('wp-mediaelement'); wp_enqueue_script('wp-mediaelement'); } }