diff --git a/airtime_mvc/application/common/FileDataHelper.php b/airtime_mvc/application/common/FileDataHelper.php index 5a600e419..0d2c243c0 100644 --- a/airtime_mvc/application/common/FileDataHelper.php +++ b/airtime_mvc/application/common/FileDataHelper.php @@ -24,4 +24,31 @@ class FileDataHelper { $data["bpm"] = intval($data["bpm"]); } } + + /** + * Return a suitable extension for the given file + * + * @param string $mime + * + * @return string file extension with(!) a dot + * + * @throws Exception + */ + public static function getFileExtensionFromMime($mime) + { + if ($mime == "audio/ogg" || $mime == "application/ogg" || $mime == "audio/vorbis") { + return ".ogg"; + } elseif ($mime == "audio/mp3" || $mime == "audio/mpeg" || $mime == "audio/mpeg3") { + return ".mp3"; + } 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"); + } + } + } \ No newline at end of file diff --git a/airtime_mvc/application/common/HTTPHelper.php b/airtime_mvc/application/common/HTTPHelper.php index 04a9e9cc5..c702da480 100644 --- a/airtime_mvc/application/common/HTTPHelper.php +++ b/airtime_mvc/application/common/HTTPHelper.php @@ -45,8 +45,6 @@ class Application_Common_HTTPHelper class ZendActionHttpException extends Exception { - private $_action; - /** * @param Zend_Controller_Action $action * @param int $statusCode @@ -58,8 +56,7 @@ class ZendActionHttpException extends Exception { */ public function __construct(Zend_Controller_Action $action, $statusCode, $message, $code = 0, Exception $previous = null) { - $this->_action = $action; - Logging::info("Error in action " . $action->getRequest()->getActionName() + Logging::error("Error in action " . $action->getRequest()->getActionName() . " with status code $statusCode: $message"); $action->getResponse() ->setHttpResponseCode($statusCode) @@ -67,8 +64,4 @@ class ZendActionHttpException extends Exception { parent::__construct($message, $code, $previous); } - public function getAction() { - return $this->_action; - } - } \ No newline at end of file diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 736dbef98..5c1e7c889 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -163,9 +163,9 @@ class Application_Model_Preference $sql .= " AND subjid = :id"; $paramMap[':id'] = $userId; } - + $result = Application_Common_Database::prepareAndExecute($sql, $paramMap, Application_Common_Database::COLUMN); - + //return an empty string if the result doesn't exist. if ($result == 0) { $res = ""; diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 58fe8a703..ebc2ab2b0 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -17,6 +17,7 @@ class Application_Model_StoredFile { /** * @holds propel database object + * @var CcFiles */ private $_file; @@ -467,48 +468,6 @@ SQL; $this->_file->save(); } - - public function getRealFileExtension() { - $path = $this->_file->getDbFilepath(); - $path_elements = explode('.', $path); - if (count($path_elements) < 2) { - return ""; - } else { - return $path_elements[count($path_elements) - 1]; - } - } - - /** - * Return suitable extension. - * - * @return string - * file extension without a dot - */ - public function getFileExtension() - { - $possible_ext = $this->getRealFileExtension(); - if ($possible_ext !== "") { - return $possible_ext; - } - - // We fallback to guessing the extension from the mimetype if we - // cannot extract it from the file name - - $mime = $this->_file->getDbMime(); - - if ($mime == "audio/ogg" || $mime == "application/ogg" || $mime == "audio/vorbis") { - return "ogg"; - } elseif ($mime == "audio/mp3" || $mime == "audio/mpeg") { - return "mp3"; - } elseif ($mime == "audio/x-flac") { - return "flac"; - } elseif ($mime == "audio/mp4") { - return "mp4"; - } else { - throw new Exception("Unknown $mime"); - } - } - /** * Get the absolute filepath * @@ -568,7 +527,7 @@ SQL; */ public function getRelativeFileUrl($baseUrl) { - return $baseUrl."api/get-media/file/".$this->getId().".".$this->getFileExtension(); + return $baseUrl."api/get-media/file/".$this->getId().FileDataHelper::getFileExtensionFromMime($this->_file->getDbMime()); } public function getResourceId() diff --git a/airtime_mvc/application/models/airtime/CcFiles.php b/airtime_mvc/application/models/airtime/CcFiles.php index 16fb99c67..c574c9d7c 100644 --- a/airtime_mvc/application/models/airtime/CcFiles.php +++ b/airtime_mvc/application/models/airtime/CcFiles.php @@ -205,11 +205,6 @@ class CcFiles extends BaseCcFiles { $cloudFile->save(); Application_Model_Preference::updateDiskUsage($fileSizeBytes); - - $now = new DateTime("now", new DateTimeZone("UTC")); - $file->setDbMtime($now); - $file->save(); - } else if ($file) { // Since we check for this value when deleting files, set it first @@ -238,14 +233,13 @@ class CcFiles extends BaseCcFiles { $file->setDbFilepath($filePathRelativeToStor); } } - - $now = new DateTime("now", new DateTimeZone("UTC")); - $file->setDbMtime($now); - $file->save(); - } else { throw new FileNotFoundException(); } + + $now = new DateTime("now", new DateTimeZone("UTC")); + $file->setDbMtime($now); + $file->save(); } catch (FileNotFoundException $e) { @@ -356,17 +350,27 @@ class CcFiles extends BaseCcFiles { /** * * Strips out the private fields we do not want to send back in API responses - * @param $file string a CcFiles object + * + * @param CcFiles $file a CcFiles object + * + * @return array */ //TODO: rename this function? - public static function sanitizeResponse($file) - { + public static function sanitizeResponse($file) { $response = $file->toArray(BasePeer::TYPE_FIELDNAME); - + foreach (self::$privateFields as $key) { unset($response[$key]); } - + + $mime = $file->getDbMime(); + if (!empty($mime)) { + // Get an extension based on the file's mime type and change the path to use this extension + $path = pathinfo($file->getDbFilepath()); + $ext = FileDataHelper::getFileExtensionFromMime($mime); + $response["filepath"] = ($path["dirname"] . '/' . $path["filename"] . $ext); + } + return $response; }