diff --git a/airtime_mvc/application/common/FileDataHelper.php b/airtime_mvc/application/common/FileDataHelper.php index 3c576f685..d9e8b638a 100644 --- a/airtime_mvc/application/common/FileDataHelper.php +++ b/airtime_mvc/application/common/FileDataHelper.php @@ -155,20 +155,8 @@ class FileDataHelper { } else { $ext = 'jpg'; } + self::resizeGroup($file, $ext); - if (file_exists($file)) { - self::resizeImage($file, $file . '-32.jpg', $ext, 32, 100); - self::resizeImage($file, $file . '-64.jpg', $ext, 64, 100); - self::resizeImage($file, $file . '-128.jpg', $ext, 128, 100); - self::resizeImage($file, $file . '-256.jpg', $ext, 256, 100); - self::resizeImage($file, $file . '-512.jpg', $ext, 512, 100); - self::imgToDataURI($file . '-32.jpg', $file . '-32'); - self::imgToDataURI($file . '-64.jpg', $file . '-64'); - self::imgToDataURI($file . '-128.jpg', $file . '-128'); - self::imgToDataURI($file . '-256.jpg', $file . '-256'); - } else { - Logging::error("The file $file does not exist"); - } } else { $get_img = ''; } @@ -231,26 +219,120 @@ class FileDataHelper { } else { $ext = 'jpg'; } + self::resizeGroup($rfile, $ext); - if (file_exists($rfile)) { - self::resizeImage($rfile, $rfile . '-32.jpg', $ext, 32, 100); - self::resizeImage($rfile, $rfile . '-64.jpg', $ext, 64, 100); - self::resizeImage($rfile, $rfile . '-128.jpg', $ext, 128, 100); - self::resizeImage($rfile, $rfile . '-256.jpg', $ext, 256, 100); - self::resizeImage($rfile, $rfile . '-512.jpg', $ext, 512, 100); - self::imgToDataURI($rfile . '-32.jpg', $rfile . '-32'); - self::imgToDataURI($rfile . '-64.jpg', $rfile . '-64'); - self::imgToDataURI($rfile . '-128.jpg', $rfile . '-128'); - self::imgToDataURI($rfile . '-256.jpg', $rfile . '-256'); - } else { - Logging::error("The file $rfile does not exist"); - } } else { $get_img = ""; } return $get_img; } + /** + * Upload artwork + * + * @param string $trackid + * @param string $data + * + * @return string Path to artwork + */ + public static function setArtwork($trackid, $data) + { + $file = Application_Model_StoredFile::RecallById($trackid); + $md = $file->getMetadata(); + + $storDir = Application_Model_MusicDir::getStorDir(); + $fp = $storDir->getDirectory(); + + $dbAudioPath = $md["MDATA_KEY_FILEPATH"]; + $fullpath = $fp . $dbAudioPath; + + if ($data == "0") { + + $get_img = ""; + self::removeArtwork($trackid, $data); + + } else { + + $base64 = @$data; + $mime = explode(';', $base64)[0]; + + $audioPath = dirname($fullpath); + $dbPath = dirname($dbAudioPath); + $path_parts = pathinfo($fullpath); + $file = $path_parts['filename']; + + //Save Data URI + if (file_put_contents($audioPath . "/" . $file, $base64)) { + $get_img = $dbPath . "/" . $file; + } else { + Logging::error("Could not save Data URI"); + } + + $rfile = $audioPath . "/" . $file; + + if ($mime == "data:image/png") { + $ext = 'png'; + } elseif ($mime == "data:image/gif") { + $ext = 'gif'; + } elseif ($mime == "data:image/bmp") { + $ext = 'bmp'; + } else { + $ext = 'jpg'; + } + self::resizeGroup($rfile, $ext); + + } + return $get_img; + } + + /** + * + * Deletes just the artwork + */ + public static function removeArtwork($trackid) + { + $file = Application_Model_StoredFile::RecallById($trackid); + $md = $file->getMetadata(); + + $storDir = Application_Model_MusicDir::getStorDir(); + $fp = $storDir->getDirectory(); + + $dbAudioPath = $md["MDATA_KEY_ARTWORK"]; + $fullpath = $fp . $dbAudioPath; + + if (file_exists($fullpath)) { + foreach (glob("$fullpath*", GLOB_NOSORT) as $filename) { + unlink($filename); + } + } else { + throw new Exception("Could not locate file ".$filepath); + } + return ""; + } + + /** + * Resize artwork group + * + * @param string $file + * @param string $ext + */ + public static function resizeGroup($file, $ext) + { + if (file_exists($file)) { + self::resizeImage($file, $file . '-32.jpg', $ext, 32, 100); + self::resizeImage($file, $file . '-64.jpg', $ext, 64, 100); + self::resizeImage($file, $file . '-128.jpg', $ext, 128, 100); + self::resizeImage($file, $file . '-256.jpg', $ext, 256, 100); + self::resizeImage($file, $file . '-512.jpg', $ext, 512, 100); + self::imgToDataURI($file . '-32.jpg', $file . '-32'); + self::imgToDataURI($file . '-64.jpg', $file . '-64'); + self::imgToDataURI($file . '-128.jpg', $file . '-128'); + self::imgToDataURI($file . '-256.jpg', $file . '-256'); + } else { + Logging::error("The file $file does not exist"); + } + } + /** * Render image * Used in API to render JPEG diff --git a/airtime_mvc/application/controllers/LibraryController.php b/airtime_mvc/application/controllers/LibraryController.php index 28c5f02bb..7b41603f7 100644 --- a/airtime_mvc/application/controllers/LibraryController.php +++ b/airtime_mvc/application/controllers/LibraryController.php @@ -395,7 +395,16 @@ class LibraryController extends Zend_Controller_Action //on edit, if no artwork is set and audiofile has image, automatically add it if ($j["name"] == "artwork") { if ($j["value"] == null || $j["value"] == ''){ - $serialized["artwork"] = FileDataHelper::resetArtwork($file_id); + $serialized["artwork"] = FileDataHelper::resetArtwork($file_id); + } + } elseif ($j["name"] == "set_artwork") { + if ($j["value"] != null || $j["value"] != ''){ + $serialized["artwork"] = FileDataHelper::setArtwork($file_id, $j["value"] ); + } + } elseif ($j["name"] == "remove_artwork") { + if ($j["value"] == 1){ + $remove_artwork = true; + $serialized["artwork"] = FileDataHelper::removeArtwork($file_id); } } else { $serialized[$j["name"]] = $j["value"]; diff --git a/airtime_mvc/application/forms/EditAudioMD.php b/airtime_mvc/application/forms/EditAudioMD.php index 62a83f66c..dda96aa5c 100644 --- a/airtime_mvc/application/forms/EditAudioMD.php +++ b/airtime_mvc/application/forms/EditAudioMD.php @@ -20,15 +20,32 @@ class Application_Form_EditAudioMD extends Zend_Form // Add artwork hidden field $artwork = new Zend_Form_Element_Hidden('artwork'); + $artwork->class = 'input_text artwork_'. $p_id; $artwork->setFilters(array('StringTrim')) ->setValidators(array( - new Zend_Validate_StringLength(array('max' => 512)) + new Zend_Validate_StringLength(array('max' => 2048)) )); $file_id->addDecorator('HtmlTag', array('tag' => 'div', 'style' => 'display:none')); $file_id->removeDecorator('Label'); $file_id->setAttrib('class', 'artwork'); $this->addElement($artwork); + // Set artwork hidden field + $set_artwork = new Zend_Form_Element_Hidden('set_artwork'); + $set_artwork->class = 'input_text set_artwork_'. $p_id; + $file_id->addDecorator('HtmlTag', array('tag' => 'div', 'style' => 'display:none')); + $file_id->removeDecorator('Label'); + $file_id->setAttrib('class', 'set_artwork'); + $this->addElement($set_artwork); + + // Remove artwork hidden field + $remove_artwork = new Zend_Form_Element_Hidden('remove_artwork'); + $remove_artwork->class = 'input_text remove_artwork_'. $p_id; + $file_id->addDecorator('HtmlTag', array('tag' => 'div', 'style' => 'display:none')); + $file_id->removeDecorator('Label'); + $file_id->setAttrib('class', 'remove_artwork'); + $this->addElement($remove_artwork); + // Add title field $track_title = new Zend_Form_Element_Text('track_title'); $track_title->class = 'input_text'; diff --git a/airtime_mvc/application/views/scripts/library/edit-file-md.phtml b/airtime_mvc/application/views/scripts/library/edit-file-md.phtml index 4f09f9db4..c216987ae 100644 --- a/airtime_mvc/application/views/scripts/library/edit-file-md.phtml +++ b/airtime_mvc/application/views/scripts/library/edit-file-md.phtml @@ -19,7 +19,19 @@