Пример #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);
     }
 }
Пример #3
0
<?php

/**
 * @author Björn Schießle <*****@*****.**>
 * @author Lukas Reschke <*****@*****.**>
 * @author Morris Jobke <*****@*****.**>
 *
 * @copyright Copyright (c) 2016, ownCloud, Inc.
 * @license AGPL-3.0
 *
 * This code is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License, version 3,
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 *
 */
OCP\JSON::checkLoggedIn();
OCP\JSON::callCheck();
\OC::$server->getSession()->close();
$trashStatus = OCA\Files_Trashbin\Trashbin::isEmpty(OCP\User::getUser());
OCP\JSON::success(array("data" => array("isEmpty" => $trashStatus)));
Пример #4
0
$folder = rtrim($folder, '/') . '/';
$error = array();
$success = array();
$i = 0;
foreach ($list as $file) {
    if ($folder === '/') {
        $file = ltrim($file, '/');
        $delimiter = strrpos($file, '.d');
        $filename = substr($file, 0, $delimiter);
        $timestamp = substr($file, $delimiter + 2);
    } else {
        $filename = $folder . '/' . $file;
        $timestamp = null;
    }
    OCA\Files_Trashbin\Trashbin::delete($filename, \OCP\User::getUser(), $timestamp);
    if (OCA\Files_Trashbin\Trashbin::file_exists($filename, $timestamp)) {
        $error[] = $filename;
        OC_Log::write('trashbin', 'can\'t delete ' . $filename . ' permanently.', OC_Log::ERROR);
    } else {
        if (!$deleteAll) {
            $success[$i]['filename'] = $file;
            $success[$i]['timestamp'] = $timestamp;
            $i++;
        }
    }
}
if ($error) {
    $filelist = '';
    foreach ($error as $e) {
        $filelist .= $e . ', ';
    }
Пример #5
0
    ?>
		<?php 
    if ($file['type'] === 'dir') {
        ?>
			style="background-image:url(<?php 
        print_unescaped(OCP\mimetype_icon('dir'));
        ?>
)"
		<?php 
    } else {
        ?>
				<?php 
        if ($file['isPreviewAvailable']) {
            ?>
				style="background-image:url(<?php 
            print_unescaped(OCA\Files_Trashbin\Trashbin::preview_icon(!$_['dirlisting'] ? $file['name'] . '.d' . $file['timestamp'] : $file['directory'] . '/' . $file['name']));
            ?>
)"
				<?php 
        } else {
            ?>
				style="background-image:url(<?php 
            print_unescaped(OCP\mimetype_icon($file['mimetype']));
            ?>
)"
				<?php 
        }
        ?>
		<?php 
    }
    ?>