static function register() { global $wgParserOutputHooks, $wgHooks, $wgJobClasses, $wgJobTypesExcludedFromDefaultQueue, $wgMediaHandlers, $wgResourceModules, $wgExcludeFromThumbnailPurge, $wgExtraNamespaces, $wgTmhFileExtensions, $wgParserOutputHooks, $wgOut, $wgAPIPropModules, $wgTimedTextNS; // Register the Timed Media Handler javascript resources ( MwEmbed modules ) MwEmbedResourceManager::register('extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer'); MwEmbedResourceManager::register('extensions/TimedMediaHandler/MwEmbedModules/TimedText'); // Set the default webPath for this embed player extension global $wgExtensionAssetsPath, $wgMwEmbedModuleConfig, $timedMediaDir; $wgMwEmbedModuleConfig['EmbedPlayer.WebPath'] = $wgExtensionAssetsPath . '/' . basename($timedMediaDir) . '/MwEmbedModules/EmbedPlayer'; // Setup media Handlers: $wgMediaHandlers['application/ogg'] = 'OggHandler'; $wgMediaHandlers['video/webm'] = 'WebMHandler'; // Add transcode job class: $wgJobClasses += array('webVideoTranscode' => 'WebVideoTranscodeJob'); // Transcode jobs must be explicitly requested from the job queue: $wgJobTypesExcludedFromDefaultQueue[] = 'webVideoTranscode'; $baseExtensionResource = array('localBasePath' => dirname(__FILE__), 'remoteExtPath' => 'TimedMediaHandler'); // Add the PopUpMediaTransform module ( specific to timedMedia handler ( no support in mwEmbed modules ) $wgResourceModules += array('mw.PopUpMediaTransform' => array_merge($baseExtensionResource, array('scripts' => 'resources/mw.PopUpThumbVideo.js', 'styles' => 'resources/PopUpThumbVideo.css', 'dependencies' => array('jquery.ui.dialog'))), 'embedPlayerIframeStyle' => array_merge($baseExtensionResource, array('styles' => 'resources/embedPlayerIframe.css')), 'ext.tmh.transcodetable' => array_merge($baseExtensionResource, array('scripts' => 'resources/ext.tmh.transcodetable.js', 'styles' => 'resources/transcodeTable.css', 'messages' => array('mwe-ok', 'mwe-cancel', 'timedmedia-reset-error', 'timedmedia-reset', 'timedmedia-reset-confirm'))), "mw.MediaWikiPlayerSupport" => array_merge($baseExtensionResource, array('scripts' => 'resources/mw.MediaWikiPlayerSupport.js', 'dependencies' => array('mw.Api'))), "mw.MediaWikiPlayer.loader" => array_merge($baseExtensionResource, array('loaderScripts' => 'resources/mw.MediaWikiPlayer.loader.js'))); // Setup a hook for iframe embed handling: $wgHooks['ArticleFromTitle'][] = 'TimedMediaIframeOutput::iframeHook'; // When an upload completes ( check clear any existing transcodes ) $wgHooks['UploadComplete'][] = 'TimedMediaHandlerHooks::checkUploadComplete'; // When an image page is moved: $wgHooks['TitleMoveComplete'][] = 'TimedMediaHandlerHooks::checkTitleMoveComplete'; // When image page is deleted so that we remove transcode settings / files. $wgHooks['ArticleDeleteComplete'][] = 'TimedMediaHandlerHooks::checkArticleDeleteComplete'; // Add parser hook $wgParserOutputHooks['TimedMediaHandler'] = array('TimedMediaHandler', 'outputHook'); // We should probably move this script output to a parser function but not working correctly in // dynamic contexts ( for example in special upload, when there is an "existing file" warning. ) $wgHooks['BeforePageDisplay'][] = 'TimedMediaHandlerHooks::pageOutputHook'; // Exclude transcoded assets from normal thumbnail purging // ( a maintenance script could handle transcode asset purging) if (isset($wgExcludeFromThumbnailPurge)) { $wgExcludeFromThumbnailPurge = array_merge($wgExcludeFromThumbnailPurge, $wgTmhFileExtensions); // Also add the .log file ( used in two pass encoding ) // ( probably should move in-progress encodes out of web accessible directory ) $wgExcludeFromThumbnailPurge[] = 'log'; } $wgHooks['LoadExtensionSchemaUpdates'][] = 'TimedMediaHandlerHooks::loadExtensionSchemaUpdates'; // Add unit tests $wgHooks['UnitTestsList'][] = 'TimedMediaHandlerHooks::registerUnitTests'; /** * Add support for the "TimedText" NameSpace */ define("NS_TIMEDTEXT", $wgTimedTextNS); define("NS_TIMEDTEXT_TALK", $wgTimedTextNS + 1); $wgExtraNamespaces[NS_TIMEDTEXT] = "TimedText"; $wgExtraNamespaces[NS_TIMEDTEXT_TALK] = "TimedText_talk"; // Check for timed text page: $wgHooks['ArticleFromTitle'][] = 'TimedMediaHandlerHooks::checkForTimedTextPage'; // Add transcode status to video asset pages: $wgHooks['ImagePageAfterImageLinks'][] = 'TimedMediaHandlerHooks::checkForTranscodeStatus'; // for MediaWiki 1.17 compatibility TranscodeStatusTable::getLinker(); return true; }