|
|
|
|
@ -42,16 +42,20 @@ class OC_Files {
|
|
|
|
|
* - versioned
|
|
|
|
|
*/
|
|
|
|
|
public static function getFileInfo($path) {
|
|
|
|
|
$path = OC_Filesystem::normalizePath($path);
|
|
|
|
|
if (($path == '/Shared' || substr($path, 0, 8) == '/Shared/') && OC_App::isEnabled('files_sharing')) {
|
|
|
|
|
if ($path == '/Shared') {
|
|
|
|
|
list($info) = OCP\Share::getItemsSharedWith('file', OC_Share_Backend_File::FORMAT_FILE_APP_ROOT);
|
|
|
|
|
}else{
|
|
|
|
|
$info['size'] = OC_Filesystem::filesize($path);
|
|
|
|
|
$info['mtime'] = OC_Filesystem::filemtime($path);
|
|
|
|
|
$info['ctime'] = OC_Filesystem::filectime($path);
|
|
|
|
|
$info['mimetype'] = OC_Filesystem::getMimeType($path);
|
|
|
|
|
$info['encrypted'] = false;
|
|
|
|
|
$info['versioned'] = false;
|
|
|
|
|
} else {
|
|
|
|
|
$info = array();
|
|
|
|
|
if (OC_Filesystem::file_exists($path)) {
|
|
|
|
|
$info['size'] = OC_Filesystem::filesize($path);
|
|
|
|
|
$info['mtime'] = OC_Filesystem::filemtime($path);
|
|
|
|
|
$info['ctime'] = OC_Filesystem::filectime($path);
|
|
|
|
|
$info['mimetype'] = OC_Filesystem::getMimeType($path);
|
|
|
|
|
$info['encrypted'] = false;
|
|
|
|
|
$info['versioned'] = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$info = OC_FileCache::get($path);
|
|
|
|
|
@ -87,13 +91,13 @@ class OC_Files {
|
|
|
|
|
foreach ($files as &$file) {
|
|
|
|
|
$file['directory'] = $directory;
|
|
|
|
|
$file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file';
|
|
|
|
|
$permissions = OCP\Share::PERMISSION_READ;
|
|
|
|
|
$permissions = OCP\PERMISSION_READ;
|
|
|
|
|
// NOTE: Remove check when new encryption is merged
|
|
|
|
|
if (!$file['encrypted']) {
|
|
|
|
|
$permissions |= OCP\Share::PERMISSION_SHARE;
|
|
|
|
|
$permissions |= OCP\PERMISSION_SHARE;
|
|
|
|
|
}
|
|
|
|
|
if ($file['type'] == 'dir' && $file['writable']) {
|
|
|
|
|
$permissions |= OCP\Share::PERMISSION_CREATE;
|
|
|
|
|
$permissions |= OCP\PERMISSION_CREATE;
|
|
|
|
|
}
|
|
|
|
|
if ($file['writable']) {
|
|
|
|
|
$permissions |= OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE;
|
|
|
|
|
@ -138,8 +142,9 @@ class OC_Files {
|
|
|
|
|
public static function get($dir, $files, $only_header = false) {
|
|
|
|
|
$xsendfile = false;
|
|
|
|
|
if (isset($_SERVER['MOD_X_SENDFILE_ENABLED']) ||
|
|
|
|
|
isset($_SERVER['MOD_X_ACCEL_REDIRECT_ENABLED']))
|
|
|
|
|
isset($_SERVER['MOD_X_ACCEL_REDIRECT_ENABLED'])) {
|
|
|
|
|
$xsendfile = true;
|
|
|
|
|
}
|
|
|
|
|
if(strpos($files, ';')) {
|
|
|
|
|
$files=explode(';', $files);
|
|
|
|
|
}
|
|
|
|
|
@ -149,11 +154,12 @@ class OC_Files {
|
|
|
|
|
$executionTime = intval(ini_get('max_execution_time'));
|
|
|
|
|
set_time_limit(0);
|
|
|
|
|
$zip = new ZipArchive();
|
|
|
|
|
if ($xsendfile)
|
|
|
|
|
if ($xsendfile) {
|
|
|
|
|
$filename = OC_Helper::tmpFileNoClean('.zip');
|
|
|
|
|
else
|
|
|
|
|
}else{
|
|
|
|
|
$filename = OC_Helper::tmpFile('.zip');
|
|
|
|
|
if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==TRUE) {
|
|
|
|
|
}
|
|
|
|
|
if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==true) {
|
|
|
|
|
exit("cannot open <$filename>\n");
|
|
|
|
|
}
|
|
|
|
|
foreach($files as $file) {
|
|
|
|
|
@ -173,11 +179,12 @@ class OC_Files {
|
|
|
|
|
$executionTime = intval(ini_get('max_execution_time'));
|
|
|
|
|
set_time_limit(0);
|
|
|
|
|
$zip = new ZipArchive();
|
|
|
|
|
if ($xsendfile)
|
|
|
|
|
if ($xsendfile) {
|
|
|
|
|
$filename = OC_Helper::tmpFileNoClean('.zip');
|
|
|
|
|
else
|
|
|
|
|
}else{
|
|
|
|
|
$filename = OC_Helper::tmpFile('.zip');
|
|
|
|
|
if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==TRUE) {
|
|
|
|
|
}
|
|
|
|
|
if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==true) {
|
|
|
|
|
exit("cannot open <$filename>\n");
|
|
|
|
|
}
|
|
|
|
|
$file=$dir.'/'.$files;
|
|
|
|
|
@ -201,8 +208,9 @@ class OC_Files {
|
|
|
|
|
}else{
|
|
|
|
|
header('Content-Type: '.OC_Filesystem::getMimeType($filename));
|
|
|
|
|
$storage = OC_Filesystem::getStorage($filename);
|
|
|
|
|
if ($storage instanceof OC_Filestorage_Local)
|
|
|
|
|
if ($storage instanceof OC_Filestorage_Local) {
|
|
|
|
|
self::addSendfileHeader(OC_Filesystem::getLocalFile($filename));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}elseif($zip or !OC_Filesystem::file_exists($filename)) {
|
|
|
|
|
header("HTTP/1.0 404 Not Found");
|
|
|
|
|
@ -227,8 +235,9 @@ class OC_Files {
|
|
|
|
|
flush();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!$xsendfile)
|
|
|
|
|
if (!$xsendfile) {
|
|
|
|
|
unlink($filename);
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
OC_Filesystem::readfile($filename);
|
|
|
|
|
}
|
|
|
|
|
@ -243,8 +252,9 @@ class OC_Files {
|
|
|
|
|
if (isset($_SERVER['MOD_X_SENDFILE_ENABLED'])) {
|
|
|
|
|
header("X-Sendfile: " . $filename);
|
|
|
|
|
}
|
|
|
|
|
if (isset($_SERVER['MOD_X_ACCEL_REDIRECT_ENABLED']))
|
|
|
|
|
if (isset($_SERVER['MOD_X_ACCEL_REDIRECT_ENABLED'])) {
|
|
|
|
|
header("X-Accel-Redirect: " . $filename);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function zipAddDir($dir, $zip, $internalDir='') {
|
|
|
|
|
|