diff options
author | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2016-07-15 12:01:49 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2016-07-15 12:01:49 -0300 |
commit | 90060b2cf06033ede8f6d3c2f5acf4d180174905 (patch) | |
tree | 4664208d55a7b3048053acb1ac064d325f25ef91 /extensions/TimedMediaHandler/handlers/FLACHandler/FLACHandler.php | |
parent | 7a31146918cdceef14689bf05d8f1602ec05bfcb (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/FLACHandler/FLACHandler.php')
-rw-r--r-- | extensions/TimedMediaHandler/handlers/FLACHandler/FLACHandler.php | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/extensions/TimedMediaHandler/handlers/FLACHandler/FLACHandler.php b/extensions/TimedMediaHandler/handlers/FLACHandler/FLACHandler.php new file mode 100644 index 00000000..f08c9b90 --- /dev/null +++ b/extensions/TimedMediaHandler/handlers/FLACHandler/FLACHandler.php @@ -0,0 +1,74 @@ +<?php +/** + * FLAC handler + */ +class FLACHandler extends ID3Handler { + + /** + * @param $file File + * @return string + */ + function getMetadataType( $file ) { + return 'flac'; + } + + /** + * @param $file File + * @return String + */ + function getWebType( $file ) { + return 'audio/flac'; + } + + /** + * @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'] == 'flac' ){ + $streamTypes[] = 'FLAC'; + } + + 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-flac-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-flac-long-audio', + $wgLang->formatTimePeriod( $this->getLength($file) ), + $wgLang->formatBitrate( $this->getBitRate( $file ) ) + )->text(); + + } + +} |