summaryrefslogtreecommitdiff
path: root/extensions/TimedMediaHandler/handlers/WAVHandler/WAVHandler.php
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@parabola.nu>2016-07-15 12:01:49 -0300
committerAndré Fabian Silva Delgado <emulatorman@parabola.nu>2016-07-15 12:01:49 -0300
commit90060b2cf06033ede8f6d3c2f5acf4d180174905 (patch)
tree4664208d55a7b3048053acb1ac064d325f25ef91 /extensions/TimedMediaHandler/handlers/WAVHandler/WAVHandler.php
parent7a31146918cdceef14689bf05d8f1602ec05bfcb (diff)
Add TimedMediaHandler extension that allows display audio and video files in wiki pages, using the same syntax as for image files
Diffstat (limited to 'extensions/TimedMediaHandler/handlers/WAVHandler/WAVHandler.php')
-rw-r--r--extensions/TimedMediaHandler/handlers/WAVHandler/WAVHandler.php87
1 files changed, 87 insertions, 0 deletions
diff --git a/extensions/TimedMediaHandler/handlers/WAVHandler/WAVHandler.php b/extensions/TimedMediaHandler/handlers/WAVHandler/WAVHandler.php
new file mode 100644
index 00000000..9fae12b8
--- /dev/null
+++ b/extensions/TimedMediaHandler/handlers/WAVHandler/WAVHandler.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * WAV handler
+ */
+class WAVHandler extends ID3Handler {
+
+ /**
+ * @param $file File
+ * @return string
+ */
+ function getMetadataType( $file ) {
+ return 'wav';
+ }
+
+ /**
+ * @param $file File
+ * @return String
+ */
+ function getWebType( $file ) {
+ return 'audio/wav';
+ }
+
+ function verifyUpload( $filename ) {
+ $metadata = $this->getID3( $filename );
+
+ if(
+ isset( $metadata['audio'] )
+ && $metadata['audio']['dataformat'] == 'wav'
+ && ( $metadata['audio']['codec'] == 'Pulse Code Modulation (PCM)' || $metadata['audio']['codec'] == 'IEEE Float' )
+ ){
+ return Status::newGood();
+ }
+
+ return Status::newFatal( 'timedmedia-wav-pcm-required' );
+ }
+ /**
+ * @param $file File
+ * @return array|bool
+ */
+ function getStreamTypes( $file ) {
+ $streamTypes = array();
+ $metadata = $this->unpackMetadata( $file->getMetadata() );
+
+ if ( !$metadata || isset( $metadata['error'] ) ) {
+ return false;
+ }
+
+ if( isset( $metadata['audio'] ) && $metadata['audio']['dataformat'] == 'wav' ){
+ $streamTypes[] = 'WAV';
+ }
+
+ return $streamTypes;
+ }
+
+ /**
+ * @param $file File
+ * @return String
+ */
+ function getShortDesc( $file ) {
+ global $wgLang;
+
+ $streamTypes = $this->getStreamTypes( $file );
+ if ( !$streamTypes ) {
+ return parent::getShortDesc( $file );
+ }
+ return wfMessage( 'timedmedia-wav-short-audio',
+ $wgLang->formatTimePeriod( $this->getLength( $file ) ) )->text();
+ }
+
+ /**
+ * @param $file File
+ * @return String
+ */
+ function getLongDesc( $file ) {
+ global $wgLang;
+ $streamTypes = $this->getStreamTypes( $file );
+ if ( !$streamTypes ) {
+ return parent::getLongDesc( $file );
+ }
+ return wfMessage('timedmedia-wav-long-audio',
+ $wgLang->formatTimePeriod( $this->getLength($file) ),
+ $wgLang->formatBitrate( $this->getBitRate( $file ) )
+ )->text();
+
+ }
+
+}