Difference between revisions of "Extension:VideoSectionLink"
m |
(remove unnecessary concatenation) |
||
Line 50: | Line 50: | ||
global $egVideoSectionLinkMagic,$wgScript; | global $egVideoSectionLinkMagic,$wgScript; | ||
− | $text = "[{{SERVER}} | + | $text = "[{{SERVER}}$wgScript?action=videosection&url=" . urlencode($url) . "&start=$start&duration=$duration Click to download video]"; |
# Return result with available parser flags | # Return result with available parser flags | ||
Line 68: | Line 68: | ||
*/ | */ | ||
function onUnknownAction ($action, $article) { | function onUnknownAction ($action, $article) { | ||
− | global $wgOut,$action,$article,$wgRequest,$wgUploadDirectory; | + | global $wgOut, $action, $article, $wgRequest, $wgUploadDirectory; |
− | |||
− | |||
+ | # Get the parameters from the title | ||
$param1 = $wgRequest->getText('url'); | $param1 = $wgRequest->getText('url'); | ||
$param2 = $wgRequest->getText('start'); | $param2 = $wgRequest->getText('start'); | ||
$param3 = $wgRequest->getText('duration'); | $param3 = $wgRequest->getText('duration'); | ||
− | #Execute the ffmpeg command | + | # Execute the ffmpeg command |
− | + | $movieStr = "ffmpeg -i $param1 -ss $param2 -t $param3 -ar 22050 $wgUploadDirectory/winterfest03.mpg"; | |
− | $movieStr = "ffmpeg -i | ||
$success = shell_exec($movieStr); | $success = shell_exec($movieStr); | ||
− | #Set headers as video | + | # Set headers as video |
− | |||
$wgOut->disable(); | $wgOut->disable(); | ||
header("Content-Type: video/mpeg"); | header("Content-Type: video/mpeg"); | ||
− | $wgHfile = "Content-Disposition: attachment; filename=\" | + | $wgHfile = "Content-Disposition: attachment; filename=\"$wgUploadDirectory/winterfest03.mpg\""; |
header($wgHfile); | header($wgHfile); | ||
− | #Return the file as binary back to the client | + | # Return the file as binary back to the client |
− | + | readfile("$wgUploadDirectory/winterfest03.mpg"); | |
− | readfile($wgUploadDirectory | ||
return true; | return true; | ||
} | } |
Revision as of 03:31, 22 November 2008
<?php /**
Template:PhpCategory:Extensions created with Template:Extension
* VideoSectionLink extension - An extension to enable users to link to defined sections of video. Made with Template:Extension * * See http://www.mediawiki.org/wiki/Extension:VideoSectionLink for installation and usage details * * @package MediaWiki * @subpackage Extensions * @author User:Jack * @copyright © 2008 User:Jack * @licence GNU General Public Licence 2.0 or later */
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('VIDEOSECTIONLINK_VERSION', '0.0.1, 2008-10-31');
$egVideoSectionLinkMagic = 'videosection'; $wgExtensionFunctions[] = 'efSetupVideoSectionLink'; $wgHooks['LanguageGetMagic'][] = 'efVideoSectionLinkLanguageGetMagic';
$wgExtensionCredits['parserhook'][] = array(
'name' => 'VideoSectionLink',
'author' => 'User:Jack',
'description' => 'An extension to enable users to link to defined sections of video. Made with Template:Extension',
'url' => 'http://www.organicdesign.co.nz/Extension:VideoSectionLink',
'version' => VIDEOSECTIONLINK_VERSION
);
class VideoSectionLink {
/** * Constructor */ function __construct() { global $wgHooks, $wgParser, $egVideoSectionLinkMagic;
# Add the parser-function $wgParser->setFunctionHook($egVideoSectionLinkMagic, array($this,'magicVideosectionlink'));
#Add the Unknownaction hook $wgHooks['UnknownAction'][] = $this; }
/** * Expand the videosection-magic */ function magicVideosectionlink (&$parser, $url = , $start = ,$duration = ) { global $egVideoSectionLinkMagic,$wgScript;
$text = "" . urlencode($url) . "&start=$start&duration=$duration Click to download video";
# Return result with available parser flags
return array( $text, 'found' => true, 'nowiki' => false, 'noparse' => false, 'noargs' => false, 'isHTML' => false ); }
/** * Callback method executes a shell command returning the section of the movie requested */ function onUnknownAction ($action, $article) { global $wgOut, $action, $article, $wgRequest, $wgUploadDirectory;
# Get the parameters from the title $param1 = $wgRequest->getText('url'); $param2 = $wgRequest->getText('start');
$param3 = $wgRequest->getText('duration');
# Execute the ffmpeg command $movieStr = "ffmpeg -i $param1 -ss $param2 -t $param3 -ar 22050 $wgUploadDirectory/winterfest03.mpg"; $success = shell_exec($movieStr);
# Set headers as video
$wgOut->disable(); header("Content-Type: video/mpeg"); $wgHfile = "Content-Disposition: attachment; filename=\"$wgUploadDirectory/winterfest03.mpg\""; header($wgHfile);
# Return the file as binary back to the client readfile("$wgUploadDirectory/winterfest03.mpg"); return true; }
/** * Needed in some versions to prevent Special:Version from breaking */ function __toString() { return __CLASS__; }
}
/**
* Called from $wgExtensionFunctions array when initialising extensions */
function efSetupVideoSectionLink() { global $egVideoSectionLink; $egVideoSectionLink = new VideoSectionLink();
}
/**
* Needed in MediaWiki >1.8.0 for magic word hooks to work properly */
function efVideoSectionLinkLanguageGetMagic(&$magicWords, $langCode = 0) { global $egVideoSectionLinkMagic; $magicWords[$egVideoSectionLinkMagic] = array($langCode, $egVideoSectionLinkMagic); return true; }