diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php index bb0954694..54ddee409 100644 --- a/airtime_mvc/application/Bootstrap.php +++ b/airtime_mvc/application/Bootstrap.php @@ -18,6 +18,7 @@ require_once 'Preference.php'; require_once 'Locale.php'; require_once "DateHelper.php"; require_once "LocaleHelper.php"; +require_once "FileDataHelper.php"; require_once "HTTPHelper.php"; require_once "OsPath.php"; require_once "Database.php"; diff --git a/airtime_mvc/application/common/FileDataHelper.php b/airtime_mvc/application/common/FileDataHelper.php new file mode 100644 index 000000000..fc93c64fe --- /dev/null +++ b/airtime_mvc/application/common/FileDataHelper.php @@ -0,0 +1,22 @@ +id)) { - $objInfo = Application_Model_Library::getObjInfo($obj_sess->type); - $objInfo = Application_Model_Library::getObjInfo($obj_sess->type); $obj = new $objInfo['className']($obj_sess->id); $userInfo = Zend_Auth::getInstance()->getStorage()->read(); @@ -446,22 +444,11 @@ class LibraryController extends Zend_Controller_Action $serialized[$j["name"]] = $j["value"]; } + // Sanitize any wildly incorrect metadata before it goes to be validated. + FileDataHelper::sanitizeData($serialized); + if ($form->isValid($serialized)) { - - $formValues = $this->_getParam('data', null); - $formdata = array(); - foreach ($formValues as $val) { - $formdata[$val["name"]] = $val["value"]; - } - $file->setDbColMetadata($formdata); - - $data = $file->getMetadata(); - - // set MDATA_KEY_FILEPATH - $data['MDATA_KEY_FILEPATH'] = $file->getFilePath(); - Logging::info($data['MDATA_KEY_FILEPATH']); - Application_Model_RabbitMq::SendMessageToMediaMonitor("md_update", $data); - + $file->setDbColMetadata($serialized); $this->_redirect('Library'); } } diff --git a/airtime_mvc/application/forms/EditAudioMD.php b/airtime_mvc/application/forms/EditAudioMD.php index 69ddbccde..9fc41e314 100644 --- a/airtime_mvc/application/forms/EditAudioMD.php +++ b/airtime_mvc/application/forms/EditAudioMD.php @@ -59,7 +59,7 @@ class Application_Form_EditAudioMD extends Zend_Form $track_number->class = 'input_text'; $track_number->setLabel('Track Number:') ->setFilters(array('StringTrim')) - ->setValidators(array(new Zend_Validate_Digits())); + ->setValidators(array(new Zend_Validate_Int())); $this->addElement($track_number); // Add genre field diff --git a/airtime_mvc/application/modules/rest/controllers/MediaController.php b/airtime_mvc/application/modules/rest/controllers/MediaController.php index 03ae689f1..c351746c2 100644 --- a/airtime_mvc/application/modules/rest/controllers/MediaController.php +++ b/airtime_mvc/application/modules/rest/controllers/MediaController.php @@ -172,6 +172,7 @@ class Rest_MediaController extends Zend_Rest_Controller $file->save(); return; } else if ($file && isset($requestData["resource_id"])) { + $file->fromArray($whiteList, BasePeer::TYPE_FIELDNAME); //store the original filename @@ -200,6 +201,7 @@ class Rest_MediaController extends Zend_Rest_Controller ->setHttpResponseCode(200) ->appendBody(json_encode(CcFiles::sanitizeResponse($file))); } else if ($file) { + //local file storage $file->setDbDirectory(self::MUSIC_DIRS_STOR_PK); $file->fromArray($whiteList, BasePeer::TYPE_FIELDNAME); @@ -294,12 +296,15 @@ class Rest_MediaController extends Zend_Rest_Controller private function validateRequestData($file, &$whiteList) { + // Sanitize any wildly incorrect metadata before it goes to be validated + FileDataHelper::sanitizeData($whiteList); + try { // EditAudioMD form is used here for validation $fileForm = new Application_Form_EditAudioMD(); $fileForm->startForm($file->getDbId()); $fileForm->populate($whiteList); - + /* * Here we are truncating metadata of any characters greater than the * max string length set in the database. In the rare case a track's