/**
  * 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;
 }