CC-2558 : Only delete files from disk that are in stor directory and not scheduled etc.
This commit is contained in:
parent
91feeaf84d
commit
4588ebd105
3 changed files with 27 additions and 20 deletions
|
@ -133,10 +133,6 @@ class LibraryController extends Zend_Controller_Action
|
||||||
$this->view->message = "file doesn't exist";
|
$this->view->message = "file doesn't exist";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$data = array("filepath"=>$file->getFilePath());
|
|
||||||
RabbitMq::SendMessageToMediaMonitor("file_delete", $data);
|
|
||||||
|
|
||||||
$res = $file->delete();
|
$res = $file->delete();
|
||||||
|
|
||||||
|
@ -144,6 +140,10 @@ class LibraryController extends Zend_Controller_Action
|
||||||
$this->view->message = $res->getMessage();
|
$this->view->message = $res->getMessage();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
$data = array("filepath" => $file->getFilePath(), "delete" => $res);
|
||||||
|
RabbitMq::SendMessageToMediaMonitor("file_delete", $data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->id = $id;
|
$this->view->id = $id;
|
||||||
|
@ -153,7 +153,7 @@ class LibraryController extends Zend_Controller_Action
|
||||||
{
|
{
|
||||||
$post = $this->getRequest()->getPost();
|
$post = $this->getRequest()->getPost();
|
||||||
$datatables = StoredFile::searchFilesForPlaylistBuilder($post);
|
$datatables = StoredFile::searchFilesForPlaylistBuilder($post);
|
||||||
|
|
||||||
//format clip lengh to 1 decimal
|
//format clip lengh to 1 decimal
|
||||||
foreach($datatables["aaData"] as &$data){
|
foreach($datatables["aaData"] as &$data){
|
||||||
$sec = Playlist::playlistTimeToSeconds($data[5]);
|
$sec = Playlist::playlistTimeToSeconds($data[5]);
|
||||||
|
|
|
@ -326,7 +326,7 @@ class StoredFile {
|
||||||
* You cant delete a file if it is scheduled to be played in the future.
|
* You cant delete a file if it is scheduled to be played in the future.
|
||||||
* The file will be removed from all playlists it is a part of.
|
* The file will be removed from all playlists it is a part of.
|
||||||
*
|
*
|
||||||
* @return void|PEAR_Error
|
* @return boolean|PEAR_Error
|
||||||
*/
|
*/
|
||||||
public function deleteFile()
|
public function deleteFile()
|
||||||
{
|
{
|
||||||
|
@ -340,16 +340,18 @@ class StoredFile {
|
||||||
if (Schedule::IsFileScheduledInTheFuture($this->getId())) {
|
if (Schedule::IsFileScheduledInTheFuture($this->getId())) {
|
||||||
return PEAR::raiseError('Cannot delete a file that is scheduled in the future.');
|
return PEAR::raiseError('Cannot delete a file that is scheduled in the future.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$storageDir = MusicDir::getStorDir()->getDirectory();
|
$storageDir = MusicDir::getStorDir()->getDirectory();
|
||||||
|
$dirCompare = substr($this->getFilePath(), 0, strlen($storageDir));
|
||||||
|
|
||||||
|
//return PEAR::raiseError("({$storageDir} , {$dirCompare})");
|
||||||
|
|
||||||
// Only delete the file from filesystem if it has been copied to the storage directory
|
// Only delete the file from filesystem if it has been copied to the storage directory
|
||||||
if (substr($this->getFilePath(), 0, strlen($storageDir) == $storageDir)) {
|
if ($dirCompare === $storageDir) {
|
||||||
// Delete the file
|
return true;
|
||||||
$res = unlink($this->getFilePath());
|
}
|
||||||
if (!$res) {
|
else {
|
||||||
return PEAR::raiseError("StoredFile::deleteFile: unlink failed ({$this->getFilePath()})");
|
return false;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -373,7 +375,7 @@ class StoredFile {
|
||||||
*/
|
*/
|
||||||
public function existsFile() {
|
public function existsFile() {
|
||||||
|
|
||||||
$filepath = $this->_file->getDbFilepath();
|
$filepath = $this->getFilePath();
|
||||||
|
|
||||||
if (!isset($filepath) || !file_exists($filepath) || !is_readable($filepath)) {
|
if (!isset($filepath) || !file_exists($filepath) || !is_readable($filepath)) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -820,7 +822,7 @@ class StoredFile {
|
||||||
$stor = $storDir->getDirectory();
|
$stor = $storDir->getDirectory();
|
||||||
|
|
||||||
$stor .= "/organize";
|
$stor .= "/organize";
|
||||||
|
|
||||||
$audio_stor = $stor . DIRECTORY_SEPARATOR . $fileName;
|
$audio_stor = $stor . DIRECTORY_SEPARATOR . $fileName;
|
||||||
|
|
||||||
$r = @copy($audio_file, $audio_stor);
|
$r = @copy($audio_file, $audio_stor);
|
||||||
|
@ -838,8 +840,8 @@ class StoredFile {
|
||||||
// ." AND m.id = $dir_id";
|
// ." AND m.id = $dir_id";
|
||||||
$sql = "SELECT filepath as fp"
|
$sql = "SELECT filepath as fp"
|
||||||
." FROM CC_FILES"
|
." FROM CC_FILES"
|
||||||
." WHERE directory = $dir_id";
|
." WHERE directory = $dir_id";
|
||||||
|
|
||||||
$rows = $CC_DBC->getAll($sql);
|
$rows = $CC_DBC->getAll($sql);
|
||||||
|
|
||||||
$results = array();
|
$results = array();
|
||||||
|
|
|
@ -106,10 +106,15 @@ class AirtimeNotifier(Notifier):
|
||||||
|
|
||||||
self.watch_directory(new_storage_directory)
|
self.watch_directory(new_storage_directory)
|
||||||
elif m['event_type'] == "file_delete":
|
elif m['event_type'] == "file_delete":
|
||||||
self.logger.info("Deleting file: %s ", m['filepath'])
|
filepath = m['filepath'].encode('utf-8')
|
||||||
|
|
||||||
mm = self.proc_fun()
|
mm = self.proc_fun()
|
||||||
mm.add_filepath_to_ignore(m['filepath'])
|
self.logger.info("Adding file to ignore: %s ", filepath)
|
||||||
os.unlink(m['filepath'])
|
mm.add_filepath_to_ignore(filepath)
|
||||||
|
|
||||||
|
if m['delete'] == "true":
|
||||||
|
self.logger.info("Deleting file: %s ", filepath)
|
||||||
|
os.unlink(filepath)
|
||||||
|
|
||||||
|
|
||||||
#update airtime with information about files discovered in our
|
#update airtime with information about files discovered in our
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue