SAAS-922 - replace large conditionals with single public mime-type map

This commit is contained in:
Duncan Sommerville 2015-07-07 15:48:22 -04:00
parent e246771af0
commit 776596d5b6
2 changed files with 33 additions and 50 deletions

View file

@ -2,6 +2,25 @@
class FileDataHelper { class FileDataHelper {
public static function getAudioMimeTypeArray() {
return array(
"audio/ogg" => "ogg",
"application/ogg" => "ogg",
"audio/vorbis" => "ogg",
"audio/mp3" => "mp3",
"audio/mpeg" => "mp3",
"audio/mpeg3" => "mp3",
"audio/mp4" => "mp4",
"audio/x-flac" => "flac",
"audio/wav" => "wav",
"audio/x-wav" => "wav",
"audio/mp2" => "mp2",
"audio/mp1" => "mp1",
"audio/x-ms-wma" => "wma",
"audio/basic" => "au",
);
}
/** /**
* We want to throw out invalid data and process the upload successfully * We want to throw out invalid data and process the upload successfully
* at all costs, so check the data and sanitize it if necessary * at all costs, so check the data and sanitize it if necessary
@ -30,28 +49,17 @@ class FileDataHelper {
* *
* @param string $mime * @param string $mime
* *
* @return string file extension with(!) a dot * @return string file extension with(!) a dot (for convenience)
* *
* @throws Exception * @throws Exception
*/ */
public static function getFileExtensionFromMime($mime) public static function getFileExtensionFromMime($mime)
{ {
if ($mime == "audio/ogg" || $mime == "application/ogg" || $mime == "audio/vorbis") { $mime = trim(strtolower($mime));
return ".ogg"; try {
} elseif ($mime == "audio/mp3" || $mime == "audio/mpeg" || $mime == "audio/mpeg3") { return ('.' . static::getAudioMimeTypeArray()[$mime]);
return ".mp3"; } catch (Exception $e) {
} elseif ($mime == "audio/mp2") { throw new Exception("Unknown file type: $mime");
return ".mp2";
} elseif ($mime == "audio/mp1") {
return ".mp1";
} elseif ($mime == "audio/x-flac") {
return ".flac";
} elseif ($mime == "audio/mp4") {
return ".mp4";
} elseif ($mime == "audio/wav" || $mime == "audio/x-wav") {
return ".wav";
} else {
throw new Exception("Unknown $mime");
} }
} }

View file

@ -198,23 +198,10 @@ class AudiopreviewController extends Zend_Controller_Action
$elementMap['type'] = $track['type']; $elementMap['type'] = $track['type'];
if ($track['type'] == 0) { if ($track['type'] == 0) {
$mime = $track['mime']; $mime = trim(strtolower($track['mime']));
//type is file try {
if (strtolower($mime) === 'audio/mp3') { $elementMap['element_' . FileDataHelper::getAudioMimeTypeArray()[$mime]] = $track['item_id'];
$elementMap['element_mp3'] = $track['item_id']; } catch (Exception $e) {
} elseif (strtolower($mime) === 'audio/ogg') {
$elementMap['element_oga'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/vorbis') {
$elementMap['element_oga'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/mp4') {
$elementMap['element_m4a'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/wav') {
$elementMap['element_wav'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/x-wav') {
$elementMap['element_wav'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/x-flac') {
$elementMap['element_flac'] = $track['item_id'];
} else {
throw new Exception("Unknown file type: $mime"); throw new Exception("Unknown file type: $mime");
} }
@ -288,22 +275,10 @@ class AudiopreviewController extends Zend_Controller_Action
$elementMap['type'] = $track['type']; $elementMap['type'] = $track['type'];
if ($track['type'] == 0) { if ($track['type'] == 0) {
$mime = $track['mime']; $mime = trim(strtolower($track['mime']));
if (strtolower($mime) === 'audio/mp3') { try {
$elementMap['element_mp3'] = $track['item_id']; $elementMap['element_' . FileDataHelper::getAudioMimeTypeArray()[$mime]] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/ogg') { } catch (Exception $e) {
$elementMap['element_oga'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/vorbis') {
$elementMap['element_oga'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/mp4') {
$elementMap['element_m4a'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/wav') {
$elementMap['element_wav'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/x-wav') {
$elementMap['element_wav'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/x-flac') {
$elementMap['element_flac'] = $track['item_id'];
} else {
throw new Exception("Unknown file type: $mime"); throw new Exception("Unknown file type: $mime");
} }