Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
25.00% covered (danger)
25.00%
7 / 28
20.00% covered (danger)
20.00%
1 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
MP3Handler
25.00% covered (danger)
25.00%
7 / 28
20.00% covered (danger)
20.00%
1 / 5
62.05
0.00% covered (danger)
0.00%
0 / 1
 getMetadataType
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getWebType
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getStreamTypes
85.71% covered (warning)
85.71%
6 / 7
0.00% covered (danger)
0.00%
0 / 1
5.07
 getShortDesc
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
6
 getLongDesc
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace MediaWiki\TimedMediaHandler\Handlers\MP3Handler;
4
5use File;
6use MediaWiki\TimedMediaHandler\Handlers\ID3Handler\ID3Handler;
7
8/**
9 * MP3 handler
10 */
11class MP3Handler extends ID3Handler {
12
13    /**
14     * @param File $image
15     * @return string
16     */
17    public function getMetadataType( $image ) {
18        return 'mp3';
19    }
20
21    /**
22     * @param File $file
23     * @return string
24     */
25    public function getWebType( $file ) {
26        return 'audio/mpeg';
27    }
28
29    /**
30     * @param File $file
31     * @return string[]|false
32     */
33    public function getStreamTypes( $file ) {
34        $streamTypes = [];
35        $metadata = $this->unpackMetadata( $file->getMetadata() );
36        if ( !$metadata || isset( $metadata['error'] ) ) {
37            return false;
38        }
39        if ( isset( $metadata['audio'] ) && $metadata['audio']['dataformat'] === 'mp3' ) {
40            $streamTypes[] = 'MP3';
41        }
42        return $streamTypes;
43    }
44
45    /**
46     * @param File $file
47     * @return string
48     */
49    public function getShortDesc( $file ) {
50        $streamTypes = $this->getStreamTypes( $file );
51        if ( !$streamTypes ) {
52            return parent::getShortDesc( $file );
53        }
54        return wfMessage( 'timedmedia-mp3-short-audio'
55        )->timeperiodParams(
56            $this->getLength( $file )
57        )->text();
58    }
59
60    /**
61     * @param File $file
62     * @return string
63     */
64    public function getLongDesc( $file ) {
65        $streamTypes = $this->getStreamTypes( $file );
66        if ( !$streamTypes ) {
67            return parent::getLongDesc( $file );
68        }
69        return wfMessage(
70            'timedmedia-mp3-long-audio'
71            )->timeperiodParams(
72                $this->getLength( $file )
73            )->bitrateParams(
74                $this->getBitRate( $file )
75            )->sizeParams(
76                $file->getSize()
77            )->text();
78    }
79
80}