nextcloud/apps/files_trashbin/index.php

115 lines
3.5 KiB
PHP
Raw Normal View History

2013-01-18 16:11:29 +04:00
<?php
// Check if we are a user
2013-01-18 16:11:29 +04:00
OCP\User::checkLoggedIn();
OCP\App::setActiveNavigationEntry('files_index');
2013-01-18 16:11:29 +04:00
OCP\Util::addScript('files_trashbin', 'trash');
2013-01-23 14:30:42 +04:00
OCP\Util::addScript('files_trashbin', 'disableDefaultActions');
2013-01-18 16:11:29 +04:00
OCP\Util::addScript('files', 'fileactions');
$tmpl = new OCP\Template('files_trashbin', 'index', 'user');
$user = \OCP\User::getUser();
$view = new OC_Filesystemview('/'.$user.'/files_trashbin');
OCP\Util::addStyle('files', 'files');
OCP\Util::addScript('files', 'filelist');
2013-01-21 16:07:43 +04:00
$dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : '';
if ($dir) {
$dirlisting = true;
$view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin');
2013-01-21 16:07:43 +04:00
$fullpath = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($dir);
$dirContent = opendir($fullpath);
$i = 0;
while($entryName = readdir($dirContent)) {
if ( $entryName != '.' && $entryName != '..' ) {
$pos = strpos($dir.'/', '/', 1);
$tmp = substr($dir, 0, $pos);
$pos = strrpos($tmp, '.d');
$timestamp = substr($tmp,$pos+2);
$result[] = array(
'id' => $entryName,
'timestamp' => $timestamp,
'mime' => $view->getMimeType($dir.'/'.$entryName),
'type' => $view->is_dir($dir.'/'.$entryName) ? 'dir' : 'file',
'location' => $dir,
);
}
2013-01-21 16:07:43 +04:00
}
closedir($fullpath);
} else {
$dirlisting = false;
$query = \OC_DB::prepare('SELECT id,location,timestamp,type,mime FROM *PREFIX*files_trash WHERE user=?');
$result = $query->execute(array($user))->fetchAll();
}
2013-01-18 16:11:29 +04:00
$files = array();
foreach ($result as $r) {
$i = array();
$i['name'] = $r['id'];
$i['date'] = OCP\Util::formatDate($r['timestamp']);
$i['timestamp'] = $r['timestamp'];
$i['mimetype'] = $r['mime'];
$i['type'] = $r['type'];
if ($i['type'] == 'file') {
$fileinfo = pathinfo($r['id']);
$i['basename'] = $fileinfo['filename'];
$i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : '';
}
$i['directory'] = $r['location'];
if ($i['directory'] == '/') {
$i['directory'] = '';
}
$i['permissions'] = OCP\PERMISSION_READ;
$files[] = $i;
}
function fileCmp($a, $b) {
if ($a['type'] == 'dir' and $b['type'] != 'dir') {
return -1;
} elseif ($a['type'] != 'dir' and $b['type'] == 'dir') {
return 1;
} else {
return strnatcasecmp($a['name'], $b['name']);
}
}
usort($files, "fileCmp");
// Make breadcrumb
$breadcrumb = array(array('dir' => '', 'name' => 'Trash'));
$pathtohere = '';
foreach (explode('/', $dir) as $i) {
if ($i != '') {
if ( preg_match('/^(.+)\.d[0-9]+$/', $i, $match) ) {
$name = $match[1];
} else {
$name = $i;
}
$pathtohere .= '/' . $i;
$breadcrumb[] = array('dir' => $pathtohere, 'name' => $name);
}
2013-01-21 16:07:43 +04:00
}
$breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '');
$breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
2013-01-18 16:11:29 +04:00
$breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php') . '?dir=', false);
$list = new OCP\Template('files_trashbin', 'part.list', '');
$list->assign('files', $files, false);
$list->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php'). '?dir='.$dir, false);
2013-01-21 16:07:43 +04:00
$list->assign('downloadURL', OCP\Util::linkTo('files_trashbin', 'download.php') . '?file='.$dir, false);
2013-01-18 16:11:29 +04:00
$list->assign('disableSharing', true);
2013-01-21 16:07:43 +04:00
$list->assign('dirlisting', $dirlisting);
2013-01-18 16:11:29 +04:00
$list->assign('disableDownloadActions', true);
$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
$tmpl->assign('fileList', $list->fetchPage(), false);
$tmpl->assign('files', $files);
$tmpl->assign('dir', \OC\Files\Filesystem::normalizePath($view->getAbsolutePath()));
2013-01-18 16:11:29 +04:00
$tmpl->printPage();