/** * restore file by moving it from staging area to its old location * * @param FRSFile $file * * @return Boolean */ function restoreFile($file, $backend) { $release = $this->_getFRSReleaseFactory()->getFRSReleaseFromDb($file->getReleaseId(), null, null, true); $dao = $this->_getFRSFileDao(); if (!$release->isDeleted()) { $stagingPath = $this->getStagingPath($file); if (file_exists($stagingPath)) { if (!is_dir(dirname($file->getFileLocation()))) { mkdir(dirname($file->getFileLocation()), 0755, true); $backend->chgrp(dirname($file->getFileLocation()), $GLOBALS['sys_http_user']); } if (rename($stagingPath, $file->getFileLocation())) { if ($dao->restoreFile($file->getFileID())) { $this->_getEventManager()->processEvent('frs_restore_file', array('group_id' => $file->getGroup()->getGroupId(), 'item_id' => $file->getFileID())); return true; } $backend->log("File " . $file->getFileLocation() . "(" . $file->getFileID() . ") not restored, database error", Backend::LOG_ERROR); return false; } } $backend->log("File " . $file->getFileLocation() . "(" . $file->getFileID() . ") could not be restored, not found in staging path " . $stagingPath, Backend::LOG_ERROR); return false; } $dao->cancelRestore($file->getFileID()); $backend->log("File " . $file->getFileLocation() . "(" . $file->getFileID() . ") could not be restored in deleted release " . $release->getName() . "(" . $release->getReleaseID() . ")", Backend::LOG_ERROR); return false; }