Пример #1
0
$error = array();
$success = array();
$i = 0;
foreach ($list as $file) {
    $path = $dir . '/' . $file;
    if ($dir === '/') {
        $file = ltrim($file, '/');
        $delimiter = strrpos($file, '.d');
        $filename = substr($file, 0, $delimiter);
        $timestamp = substr($file, $delimiter + 2);
    } else {
        $path_parts = pathinfo($file);
        $filename = $path_parts['basename'];
        $timestamp = null;
    }
    if (!OCA\Files_Trashbin\Trashbin::restore($path, $filename, $timestamp)) {
        $error[] = $filename;
        \OCP\Util::writeLog('trashbin', 'can\'t restore ' . $filename, \OCP\Util::ERROR);
    } else {
        $success[$i]['filename'] = $file;
        $success[$i]['timestamp'] = $timestamp;
        $i++;
    }
}
if ($error) {
    $filelist = '';
    foreach ($error as $e) {
        $filelist .= $e . ', ';
    }
    $l = OC::$server->getL10N('files_trashbin');
    $message = $l->t("Couldn't restore %s", array(rtrim($filelist, ', ')));
Пример #2
0
 /**
  * Test restoring a file into a read-only folder, will restore
  * the file to root instead
  */
 public function testRestoreFileIntoReadOnlySourceFolder()
 {
     $userFolder = \OC::$server->getUserFolder();
     $folder = $userFolder->newFolder('folder');
     $file = $folder->newFile('file1.txt');
     $file->putContent('foo');
     $this->assertTrue($userFolder->nodeExists('folder/file1.txt'));
     $file->delete();
     $this->assertFalse($userFolder->nodeExists('folder/file1.txt'));
     $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1, 'mtime');
     $this->assertCount(1, $filesInTrash);
     /** @var \OCP\Files\FileInfo */
     $trashedFile = $filesInTrash[0];
     // delete source folder
     list($storage, $internalPath) = $this->rootView->resolvePath('/' . self::TEST_TRASHBIN_USER1 . '/files/folder');
     if ($storage instanceof \OC\Files\Storage\Local) {
         $folderAbsPath = $storage->getSourcePath($internalPath);
         // make folder read-only
         chmod($folderAbsPath, 0555);
         $this->assertTrue(OCA\Files_Trashbin\Trashbin::restore('file1.txt.d' . $trashedFile->getMtime(), $trashedFile->getName(), $trashedFile->getMtime()));
         $file = $userFolder->get('file1.txt');
         $this->assertEquals('foo', $file->getContent());
         chmod($folderAbsPath, 0755);
     }
 }