callback('networkAdminMenuAction')); if (!KalturaHelpers::getOption('kaltura_partner_id') && !isset($_POST['submit']) && !strpos($_SERVER['REQUEST_URI'], 'page=kaltura_options')) { add_action('admin_notices', $this->callback('adminWarning')); return; } // filters add_filter('comment_text', $this->callback('commentTextFilter')); add_filter('media_buttons_context', $this->callback('mediaButtonsContextFilter')); add_filter('media_upload_tabs', $this->callback('mediaUploadTabsFilter')); add_filter('mce_external_plugins', $this->callback('mceExternalPluginsFilter')); add_filter('tiny_mce_version', $this->callback('tinyMceVersionFilter')); // actions add_action('admin_menu', $this->callback('adminMenuAction')); add_action('wp_print_scripts', $this->callback('printScripts')); add_action('wp_enqueue_scripts', $this->callback('enqueueScripts')); add_action('wp_enqueue_styles', $this->callback('enqueueStyles')); add_action('admin_enqueue_scripts', $this->callback('adminEnqueueScripts')); // media upload actions add_action('media_upload_kaltura_upload', $this->callback('mediaUploadAction')); add_action('media_upload_kaltura_browse', $this->callback('mediaBrowseAction')); add_action('admin_print_scripts-media-upload-popup', $this->callback('mediaUploadPrintScriptsAction')); add_action('save_post', $this->callback('savePost')); add_action('wp_ajax_kaltura_ajax', $this->callback('executeLibraryController')); if (KalturaHelpers::videoCommentsEnabled()) add_action('comment_form', $this->callback('commentFormAction')); add_shortcode('kaltura-widget', $this->callback('shortcodeHandler')); add_filter('parse_request', $this->callback('parseRequest')); } private function callback($functionName) { return array($this, $functionName); } public function adminWarning() { echo "

".__('To complete the All in One Video Pack installation, you must get a Partner ID.')."

"; } public function mceExternalPluginsFilter($content) { $pluginUrl = KalturaHelpers::getPluginUrl(); $content['kaltura'] = $pluginUrl . '/tinymce/kaltura_tinymce.js?v'.KalturaHelpers::getPluginVersion(); return $content; } public function tinyMceVersionFilter($content) { return $content . '_k'.KalturaHelpers::getPluginVersion(); } public function adminMenuAction() { add_options_page('All in One Video', 'All in One Video', 'manage_options', 'kaltura_options', $this->callback('executeAdminController')); add_media_page('All in One Video', 'All in One Video', 'edit_posts', 'kaltura_library', $this->callback('executeLibraryController')); } public function printScripts() { KalturaHelpers::addWPVersionJS(); } public function enqueueStyles() { } public function enqueueScripts() { wp_enqueue_style('kaltura', KalturaHelpers::cssUrl('css/kaltura.css')); wp_enqueue_script('kaltura', KalturaHelpers::jsUrl('js/kaltura.js')); wp_enqueue_script('jquery'); } public function adminEnqueueScripts() { wp_register_script('kaltura', KalturaHelpers::jsUrl('js/kaltura.js')); wp_register_script('kaltura-admin', KalturaHelpers::jsUrl('js/kaltura-admin.js')); wp_register_script('kaltura-player-selector', KalturaHelpers::jsUrl('js/kaltura-player-selector.js')); wp_register_script('kaltura-entry-status-checker', KalturaHelpers::jsUrl('js/kaltura-entry-status-checker.js')); wp_register_script('kaltura-editable-name', KalturaHelpers::jsUrl('js/kaltura-editable-name.js')); wp_register_script('kaltura-jquery-validate', KalturaHelpers::jsUrl('js/jquery.validate.min.js')); wp_register_style('kaltura-admin', KalturaHelpers::cssUrl('css/admin.css')); wp_enqueue_script('kaltura'); wp_enqueue_style('kaltura'); wp_enqueue_style('kaltura-admin'); } function executeLibraryController() { if (!isset($_GET['kaction'])) $_GET['kaction'] = 'library'; $controller = new Kaltura_LibraryController(); $controller->execute(); } function executeAdminController() { $controller = new Kaltura_AdminController(); $controller->execute(); } public function commentTextFilter($content) { global $shortcode_tags; // we want to run our shortcode and not all $shortcode_tags_backup = $shortcode_tags; $shortcode_tags = array(); add_shortcode('kaltura-widget', array($this, 'shortcodeHandler')); $content = do_shortcode($content); // restore the original array $shortcode_tags = $shortcode_tags_backup; return $content; } public function mediaButtonsContextFilter($content) { global $post_ID, $temp_ID; $uploading_iframe_ID = (int) (0 == $post_ID ? $temp_ID : $post_ID); $media_upload_iframe_src = "media-upload.php?post_id=$uploading_iframe_ID"; $kaltura_iframe_src = apply_filters('kaltura_iframe_src', "$media_upload_iframe_src&tab=kaltura_upload"); $kaltura_browse_iframe_src = apply_filters('kaltura_iframe_src', "$media_upload_iframe_src&tab=kaltura_browse"); $kaltura_title = __('Add Kaltura Media'); $kaltura_button_src = KalturaHelpers::getPluginUrl() . '/images/kaltura_button.png'; $content .= <<$kaltura_title EOF; return $content; } public function mediaUploadTabsFilter($content) { $content['kaltura_upload'] = __('Add Media'); $content['kaltura_browse'] = __('Browse Existing Media'); return $content; } public function mediaUploadTabsFilterOnlyKaltura($content) { $content = array(); return $this->mediaUploadTabsFilter($content); } public function mediaUploadAction() { $this->setKalturaOnlyMediaTabs(); if (!isset($_GET['kaction'])) $_GET['kaction'] = 'upload'; $controller = new Kaltura_LibraryController(); wp_iframe(array($controller, 'execute')); } public function mediaBrowseAction() { $this->setKalturaOnlyMediaTabs(); if (!isset($_GET['kaction'])) $_GET['kaction'] = 'browse'; $controller = new Kaltura_LibraryController(); wp_iframe(array($controller, 'execute')); } public function mediaUploadPrintScriptsAction() { wp_enqueue_script('kaltura_upload_popup', KalturaHelpers::jsUrl('js/upload-popup.js')); } public function commentFormAction($post_id) { if (wp_is_mobile()) return; $user = wp_get_current_user(); if (!$user->ID && !KalturaHelpers::anonymousCommentsAllowed()) { echo "You must be logged in to post a
video comment."; } else { $js_click_code = "Kaltura.openCommentCW('".site_url().'?kaltura_iframe_handler'."'); "; echo ""; } } public function shortcodeHandler($attrs) { // prevent xss foreach($attrs as $key => $value) { $attrs[$key] = esc_js($value); } if (!isset($attrs['entryid'])) return ''; // get the embed options from the attributes $embedOptions = KalturaHelpers::getEmbedOptions($attrs); $isComment = isset($attrs['size']) && ($attrs['size'] == 'comments') ? true : false; $wid = $embedOptions['wid'] ? $embedOptions['wid']: '_' . KalturaHelpers::getOption('kaltura_partner_id'); $entryId = $embedOptions['entryId']; $width = $embedOptions['width']; $height = $embedOptions['height']; $randId = md5($wid . $entryId . rand(0, time())); $divId = 'kaltura_wrapper_' . $randId; $thumbnailDivId = 'kaltura_thumbnail_' . $randId; $playerId = 'kaltura_player_' . $randId; $link = ''; $link .= 'Video Management, '; $link .= 'Video Hosting, '; $link .= 'Video Streaming, '; $link .= 'Video Platform'; $html =''; $poweredByBox ='
Video Player by Kaltura
'; if ($isComment) { $embedOptions['flashVars'] .= '"autoPlay":"true",'; $html.='
'.$link.'
'; } else { $style = ''; $style .= 'width:' . $width .'px;'; $style .= 'height:' . ($height + 10) . 'px;'; // + 10 is for the powered by div if (isset($embedOptions['align'])) $style .= 'float:' . $embedOptions['align'] . ';'; // append the manual style properties if (isset($embedOptions['style'])) $style .= $embedOptions['style']; $html.='
'.$link.'
'.$poweredByBox.'
'; } return $html; } public function savePost($postId) { if (!KalturaHelpers::getOption('kaltura_save_permalink')) return; // ignore revisions if (wp_is_post_revision($postId)) { return; } try { $kmodel = KalturaModel::getInstance(); $kmodel->updateEntryPermalink($postId); } catch(Exception $ex) { error_log('An error occurred while updating entry\'s permalink - ' . $ex->getMessage() . ' - ' . $ex->getTraceAsString()); } } public function networkAdminMenuAction() { add_submenu_page('settings.php', 'All in One Video', 'All in One Video', 'manage_network_options', 'all-in-one-video-pack-mu-settings', $this->callback('networkSettings')); } public function networkSettings() { $controller = new Kaltura_NetworkAdminController(); $controller->execute(); } public function parseRequest($args) { if (isset($_GET['kaltura_iframe_handler'])) { nocache_headers(); $controller = new Kaltura_FrontEndController(); $controller->execute(); die; } elseif (isset($_GET['kaltura_admin_iframe_handler'])) { auth_redirect(); nocache_headers(); global $show_admin_bar; $show_admin_bar = false; $controller = new Kaltura_LibraryController(); // we want to execute our controller before wordpress starts outputting the html ob_start(); $controller->execute(); $this->controllerOutput = ob_get_clean(); wp_iframe(create_function('', 'global $kalturaPlugin; echo $kalturaPlugin->controllerOutput;')); die; } } private function setKalturaOnlyMediaTabs() { unset($GLOBALS['wp_filter']['media_upload_tabs']); // remove all registerd filters for the tabs add_filter('media_upload_tabs', $this->callback('mediaUploadTabsFilterOnlyKaltura')); // register our filter for the tabs media_upload_header(); // will add the tabs menu } }