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;
 }