diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 221c42c2a..e81469fa9 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -315,6 +315,8 @@ class ApiController extends Zend_Controller_Action $upload_dir = ini_get("upload_tmp_dir"); StoredFile::uploadFile($upload_dir); + $fileName = isset($_REQUEST["name"]) ? $_REQUEST["name"] : ''; + StoredFile::copyFileToStor($upload_dir, $fileName); } public function uploadRecordedAction() diff --git a/airtime_mvc/application/controllers/PluploadController.php b/airtime_mvc/application/controllers/PluploadController.php index f52de7370..73d35196a 100644 --- a/airtime_mvc/application/controllers/PluploadController.php +++ b/airtime_mvc/application/controllers/PluploadController.php @@ -7,6 +7,7 @@ class PluploadController extends Zend_Controller_Action { $ajaxContext = $this->_helper->getHelper('AjaxContext'); $ajaxContext->addActionContext('upload', 'json') + ->addActionContext('copyfile', 'json') ->initContext(); } @@ -29,6 +30,14 @@ class PluploadController extends Zend_Controller_Action die('{"jsonrpc" : "2.0"}'); } + + public function copyfileAction(){ + $upload_dir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload"; + $filename = $this->_getParam('name'); + StoredFile::copyFileToStor($upload_dir, $filename); + + die('{"jsonrpc" : "2.0"}'); + } } diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index d4ca18214..156439f19 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -795,7 +795,7 @@ class StoredFile { die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}'); } - $audio_file = $p_targetDir . DIRECTORY_SEPARATOR . $fileName; + /*$audio_file = $p_targetDir . DIRECTORY_SEPARATOR . $fileName; $md5 = md5_file($audio_file); $duplicate = StoredFile::RecallByMd5($md5); @@ -816,9 +816,34 @@ class StoredFile { $audio_stor = $stor . DIRECTORY_SEPARATOR . $fileName; - $r = @copy($audio_file, $audio_stor); + $r = @copy($audio_file, $audio_stor);*/ } + + public static function copyFileToStor($p_targetDir, $fileName){ + $audio_file = $p_targetDir . DIRECTORY_SEPARATOR . $fileName; + + $md5 = md5_file($audio_file); + $duplicate = StoredFile::RecallByMd5($md5); + if ($duplicate) { + if (PEAR::isError($duplicate)) { + die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": ' . $duplicate->getMessage() .'}}'); + } + if (file_exists($duplicate->getFilePath())) { + $duplicateName = $duplicate->getMetadataValue('MDATA_KEY_TITLE'); + die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "An identical audioclip named ' . $duplicateName . ' already exists in the storage server."}}'); + } + } + + $storDir = MusicDir::getStorDir(); + $stor = $storDir->getDirectory(); + + $stor .= "/organize"; + + $audio_stor = $stor . DIRECTORY_SEPARATOR . $fileName; + + $r = @copy($audio_file, $audio_stor); + } public static function getFileCount() { diff --git a/airtime_mvc/public/js/airtime/library/plupload.js b/airtime_mvc/public/js/airtime/library/plupload.js index 6dabd207b..0eeffba2f 100644 --- a/airtime_mvc/public/js/airtime/library/plupload.js +++ b/airtime_mvc/public/js/airtime/library/plupload.js @@ -1,10 +1,11 @@ $(document).ready(function() { var uploader; - $("#plupload_files").pluploadQueue({ + uploader = $("#plupload_files").pluploadQueue({ // General settings runtimes : 'html5,html4', url : '/Plupload/upload/format/json', + chunk_size: '5mb', multiple_queues : 'true', filters : [ {title: "Audio Files", extensions: "ogg,mp3"} @@ -24,6 +25,7 @@ $(document).ready(function() { $("#plupload_error").find("table").append(row); } + $.get('/Plupload/copyfile/format/json/name/'+file.name); }); var uploadProgress = false;