Пример #1
0
 function testDeleteAndPutFile()
 {
     $STORAGE_SERVER_PATH = dirname(__FILE__) . "/../../";
     $filePath = dirname(__FILE__) . "/ex1.mp3";
     // Delete any old data from previous tests
     $md5 = md5_file($filePath);
     $duplicate = StoredFile::RecallByMd5($md5);
     if ($duplicate) {
         $duplicate->delete();
     }
     // Test inserting a file by linking
     $values = array("filepath" => $filePath, "dc:description" => "Unit test " . time());
     $storedFile = StoredFile::Insert($values, false);
     if (PEAR::isError($storedFile)) {
         $this->fail("Failed to create StoredFile: " . $storedFile->getMessage());
         return;
     }
     //var_dump($storedFile);
     $id = $storedFile->getId();
     if (!is_numeric($id)) {
         $this->fail("StoredFile not created correctly. id = " . $id);
         return;
     }
     // Test loading metadata
     $f = new StoredFile();
     $f->__setGunid($storedFile->getGunid());
     $f->loadMetadata();
     if (!is_array($md = $f->getMetadata())) {
         $this->fail("Unable to load metadata.");
         return;
     }
     //var_dump($md);
     // Check if the length field has been set.
     $f2 = StoredFile::RecallByGunid($storedFile->getGunid());
     $m2 = $f2->getMetadata();
     if (!isset($m2["length"]) || $m2["length"] == "00:00:00.000000") {
         $this->fail("Length not reporting correctly in metadata.");
         return;
     }
 }
Пример #2
0
 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);
 }
Пример #3
0
 public function reloadMetadataAction()
 {
     global $CC_CONFIG;
     $request = $this->getRequest();
     $api_key = $request->getParam('api_key');
     if (!in_array($api_key, $CC_CONFIG["apiKey"])) {
         header('HTTP/1.0 401 Unauthorized');
         print 'You are not allowed to access this resource.';
         exit;
     }
     $mode = $request->getParam('mode');
     $params = $request->getParams();
     $md = array();
     //extract all file metadata params from the request.
     foreach ($params as $key => $value) {
         if (preg_match('/^MDATA_KEY/', $key)) {
             $md[$key] = $value;
         }
     }
     // update import timestamp
     Application_Model_Preference::SetImportTimestamp();
     if ($mode == "create") {
         $filepath = $md['MDATA_KEY_FILEPATH'];
         $filepath = str_replace("\\", "", $filepath);
         $file = StoredFile::RecallByFilepath($filepath);
         if (is_null($file)) {
             $file = StoredFile::Insert($md);
         } else {
             $this->view->error = "File already exists in Airtime.";
             return;
         }
     } else {
         if ($mode == "modify") {
             $filepath = $md['MDATA_KEY_FILEPATH'];
             $filepath = str_replace("\\", "", $filepath);
             $file = StoredFile::RecallByFilepath($filepath);
             //File is not in database anymore.
             if (is_null($file)) {
                 $this->view->error = "File does not exist in Airtime.";
                 return;
             } else {
                 $file->setMetadata($md);
             }
         } else {
             if ($mode == "moved") {
                 $md5 = $md['MDATA_KEY_MD5'];
                 $file = StoredFile::RecallByMd5($md5);
                 if (is_null($file)) {
                     $this->view->error = "File doesn't exist in Airtime.";
                     return;
                 } else {
                     $filepath = $md['MDATA_KEY_FILEPATH'];
                     $filepath = str_replace("\\", "", $filepath);
                     $file->setFilePath($filepath);
                     //$file->setMetadata($md);
                 }
             } else {
                 if ($mode == "delete") {
                     $filepath = $md['MDATA_KEY_FILEPATH'];
                     $filepath = str_replace("\\", "", $filepath);
                     $file = StoredFile::RecallByFilepath($filepath);
                     if (is_null($file)) {
                         $this->view->error = "File doesn't exist in Airtime.";
                         return;
                     } else {
                         $file->delete();
                     }
                 }
             }
         }
     }
     $this->view->id = $file->getId();
 }