some cleanup/refactoring
This commit is contained in:
parent
76eeaaea01
commit
c2bdd6134b
|
@ -22,13 +22,28 @@
|
|||
*/
|
||||
require_once('../inc/lib_base.php');
|
||||
|
||||
$dir=$_GET['dir'];
|
||||
$file=$_GET['file'];
|
||||
$newname=$_GET['newname'];
|
||||
if($file!=$newname and $newname!='' and isset($_SESSION['username']) and $_SESSION['username'] and strpos($dir,'..')===false){
|
||||
$source=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$file;
|
||||
$target=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$newname;
|
||||
rename($source,$target);
|
||||
$arguments=$_POST;
|
||||
|
||||
foreach($arguments as &$argument){
|
||||
$argument=stripslashes($argument);
|
||||
}
|
||||
ob_clean();
|
||||
switch($arguments['action']){
|
||||
case 'delete':
|
||||
OC_FILES::delete($arguments['dir'],$arguments['file']);
|
||||
break;
|
||||
case 'rename':
|
||||
OC_FILES::move($arguments['dir'],$arguments['file'],$arguments['dir'],$arguments['newname']);
|
||||
break;
|
||||
case 'new':
|
||||
OC_FILES::newfile($arguments['dir'],$arguments['name'],$arguments['type']);
|
||||
break;
|
||||
case 'move':
|
||||
OC_FILES::move($arguments['sourcedir'],$arguments['source'],$arguments['targetdir'],$arguments['target']);
|
||||
break;
|
||||
case 'get':
|
||||
OC_FILES::get($arguments['dir'],$arguments['file']);
|
||||
break;
|
||||
}
|
||||
|
||||
?>
|
|
@ -1,108 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* ownCloud - ajax frontend
|
||||
*
|
||||
* @author Robin Appelman
|
||||
* @copyright 2010 Robin Appelman icewind1991@gmail.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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 Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
//note this file is for getting files themselves, get_files.php is for getting a list of files.
|
||||
|
||||
require_once('../inc/lib_base.php');
|
||||
|
||||
if(!function_exists('sys_get_temp_dir')) {
|
||||
function sys_get_temp_dir() {
|
||||
if( $temp=getenv('TMP') ) return $temp;
|
||||
if( $temp=getenv('TEMP') ) return $temp;
|
||||
if( $temp=getenv('TMPDIR') ) return $temp;
|
||||
$temp=tempnam(__FILE__,'');
|
||||
if (file_exists($temp)) {
|
||||
unlink($temp);
|
||||
return dirname($temp);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function addDir($dir,$zip,$internalDir=''){
|
||||
$dirname=basename($dir);
|
||||
$zip->addEmptyDir($internalDir.$dirname);
|
||||
$internalDir.=$dirname.='/';
|
||||
$files=OC_FILES::getdirectorycontent($dir);
|
||||
foreach($files as $file){
|
||||
$filename=$file['name'];
|
||||
$file=$dir.'/'.$filename;
|
||||
if(is_file($file)){
|
||||
$zip->addFile($file,$internalDir.$filename);
|
||||
}elseif(is_dir($file)){
|
||||
addDir($file,$zip,$internalDir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$files=$_GET['files'];
|
||||
$dir=(isset($_GET['dir']))?$_GET['dir']:'';
|
||||
if(strstr($files,'..') or strstr($dir,'..')){
|
||||
die();
|
||||
}
|
||||
if(strpos($files,',')){
|
||||
$files=explode(',',$files);
|
||||
}
|
||||
|
||||
|
||||
if(is_array($files)){
|
||||
$zip = new ZipArchive();
|
||||
$filename = sys_get_temp_dir()."/ownCloud.zip";
|
||||
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
|
||||
exit("cannot open <$filename>\n");
|
||||
}
|
||||
foreach($files as $file){
|
||||
$file=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$file;
|
||||
if(is_file($file)){
|
||||
$zip->addFile($file,basename($file));
|
||||
}elseif(is_dir($file)){
|
||||
addDir($file,$zip);
|
||||
}
|
||||
}
|
||||
$zip->close();
|
||||
}elseif(is_dir($CONFIG_DATADIRECTORY.'/'.$dir.'/'.$files)){
|
||||
$zip = new ZipArchive();
|
||||
$filename = sys_get_temp_dir()."/ownCloud.zip";
|
||||
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
|
||||
exit("cannot open <$filename>\n");
|
||||
}
|
||||
$file=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$files;
|
||||
addDir($file,$zip);
|
||||
$zip->close();
|
||||
}else{
|
||||
$zip=false;
|
||||
$filename=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$files;
|
||||
}
|
||||
header('Content-Description: File Transfer');
|
||||
header('Content-Type: application/octet-stream');
|
||||
header('Content-Disposition: attachment; filename='.basename($filename));
|
||||
header('Content-Transfer-Encoding: binary');
|
||||
header('Expires: 0');
|
||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||
header('Pragma: public');
|
||||
header('Content-Length: ' . filesize($filename));
|
||||
ob_end_clean();
|
||||
readfile($filename);
|
||||
if($zip){
|
||||
unlink($filename);
|
||||
}
|
||||
?>
|
|
@ -47,12 +47,14 @@ $dirname=(isset($files[0]))?$files[0]['directory']:'';
|
|||
$dirname=substr($dirname,strrpos($dirname,'/'));
|
||||
$max_upload=min(return_bytes(ini_get('post_max_size')),return_bytes(ini_get('upload_max_filesize')));
|
||||
ob_clean();
|
||||
echo "<?xml version='1.0' standalone='yes'?>\n";
|
||||
echo "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>\n";
|
||||
echo "<dir name='$dirname' max_upload='$max_upload'>\n";
|
||||
if(is_array($files)){
|
||||
foreach($files as $file){
|
||||
$attributes='';
|
||||
foreach($file as $name=>$data){
|
||||
$data=utf8_encode($data);
|
||||
$data=utf8tohtml($data);
|
||||
$data=str_replace("'",''',$data);
|
||||
if (is_string($name)) $attributes.=" $name='$data'";
|
||||
}
|
||||
|
@ -60,5 +62,48 @@ if(is_array($files)){
|
|||
echo "<file$attributes/>\n";
|
||||
}
|
||||
}
|
||||
echo "\n</dir>";
|
||||
echo "</dir>";
|
||||
|
||||
// converts a UTF8-string into HTML entities
|
||||
// - $utf8: the UTF8-string to convert
|
||||
// - $encodeTags: booloean. TRUE will convert "<" to "<"
|
||||
// - return: returns the converted HTML-string
|
||||
function utf8tohtml($utf8, $encodeTags=true) {
|
||||
$result = '';
|
||||
for ($i = 0; $i < strlen($utf8); $i++) {
|
||||
$char = $utf8[$i];
|
||||
$ascii = ord($char);
|
||||
if ($ascii < 128) {
|
||||
// one-byte character
|
||||
$result .= ($encodeTags) ? htmlentities($char) : $char;
|
||||
} else if ($ascii < 192) {
|
||||
// non-utf8 character or not a start byte
|
||||
} else if ($ascii < 224) {
|
||||
// two-byte character
|
||||
$result .= htmlentities(substr($utf8, $i, 2), ENT_QUOTES, 'UTF-8');
|
||||
$i++;
|
||||
} else if ($ascii < 240) {
|
||||
// three-byte character
|
||||
$ascii1 = ord($utf8[$i+1]);
|
||||
$ascii2 = ord($utf8[$i+2]);
|
||||
$unicode = (15 & $ascii) * 4096 +
|
||||
(63 & $ascii1) * 64 +
|
||||
(63 & $ascii2);
|
||||
$result .= "&#$unicode;";
|
||||
$i += 2;
|
||||
} else if ($ascii < 248) {
|
||||
// four-byte character
|
||||
$ascii1 = ord($utf8[$i+1]);
|
||||
$ascii2 = ord($utf8[$i+2]);
|
||||
$ascii3 = ord($utf8[$i+3]);
|
||||
$unicode = (15 & $ascii) * 262144 +
|
||||
(63 & $ascii1) * 4096 +
|
||||
(63 & $ascii2) * 64 +
|
||||
(63 & $ascii3);
|
||||
$result .= "&#$unicode;";
|
||||
$i += 3;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
?>
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - ajax frontend
|
||||
*
|
||||
* @author Robin Appelman
|
||||
* @copyright 2010 Robin Appelman icewind1991@gmail.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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 Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
require_once('../inc/lib_base.php');
|
||||
|
||||
$sourceDir=$_GET['sourcedir'];
|
||||
$targetDir=$_GET['targetdir'];
|
||||
$source=$_GET['source'];
|
||||
$target=$_GET['target'];
|
||||
if(isset($_SESSION['username']) and $_SESSION['username'] and strpos($sourceDir,'..')===false and strpos($source,'..')===false and strpos($targetDir,'..')===false and strpos($target,'..')===false){
|
||||
$target=$CONFIG_DATADIRECTORY.'/'.$targetDir.'/'.$target.'/'.$source;
|
||||
$source=$CONFIG_DATADIRECTORY.'/'.$sourceDir.'/'.$source;
|
||||
rename($source,$target);
|
||||
}
|
||||
|
||||
?>
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - ajax frontend
|
||||
*
|
||||
* @author Robin Appelman
|
||||
* @copyright 2010 Robin Appelman icewind1991@gmail.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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 Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
require_once('../inc/lib_base.php');
|
||||
|
||||
$dir=$_GET['dir'];
|
||||
$name=$_GET['name'];
|
||||
$type=$_GET['type'];
|
||||
if(isset($_SESSION['username']) and $_SESSION['username'] and strpos($dir,'..')===false and strpos($name,'..')===false){
|
||||
$file=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$name;
|
||||
if($type=='dir'){
|
||||
mkdir($file);
|
||||
}elseif($type=='file'){
|
||||
$fileHandle=fopen($file, 'w') or die("can't open file");
|
||||
fclose($fileHandle);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -29,132 +29,197 @@
|
|||
*/
|
||||
class OC_FILES {
|
||||
|
||||
/**
|
||||
* show a web GUI filebrowser
|
||||
*
|
||||
* @param basedir $basedir
|
||||
* @param dir $dir
|
||||
*/
|
||||
public static function showbrowser($basedir,$dir){/*
|
||||
global $CONFIG_DATEFORMAT;
|
||||
global $WEBROOT;
|
||||
/**
|
||||
* show a web GUI filebrowser
|
||||
*
|
||||
* @param basedir $basedir
|
||||
* @param dir $dir
|
||||
*/
|
||||
public static function showbrowser($basedir,$dir){
|
||||
echo '<div id="content"></div>';
|
||||
}
|
||||
|
||||
$directory=$basedir.'/'.$dir;
|
||||
|
||||
// exit if try to access files outside our directory
|
||||
if(strstr($dir,'..')<>false) exit();
|
||||
$directory=realpath($directory);
|
||||
|
||||
$dirs=explode('/',$dir);
|
||||
|
||||
// breadcrumb
|
||||
if(count($dirs)>1) {
|
||||
echo('<div class="center"><table cellpadding="2" cellspacing="0" border="0"><tr>');
|
||||
echo('<td class="nametext"><a href="'.$WEBROOT.'/">home</a></td>');
|
||||
$currentdir='';
|
||||
foreach($dirs as $d) {
|
||||
$currentdir.='/'.$d.'';
|
||||
if($d<>'') echo('<td class="nametext"><a href="'.$WEBROOT.'/?dir='.$currentdir.'"><img src="'.$WEBROOT.'/img/arrow.png" /> '.$d.'</a></td>');
|
||||
}
|
||||
echo('</tr></table></div>');
|
||||
}
|
||||
|
||||
// files and directories
|
||||
echo('<div class="center"><table cellpadding="6" cellspacing="0" border="0" class="browser">');
|
||||
$filesfound=false;
|
||||
$content=self::getdirectorycontent($directory);
|
||||
if($content){
|
||||
foreach($content as $file){
|
||||
echo('<tr class="browserline">');
|
||||
OC_UTIL::showicon($file['type']);
|
||||
if($file['type']=='dir') echo('<td class="nametext"><a href="'.$WEBROOT.'/?dir='.$dir.'/'.$file['name'].'">'.$file['name'].'</a></td>');
|
||||
if($file['type']<>'dir') echo('<td class="nametext"><a href="'.$WEBROOT.'/?dir='.$dir.'&file='.$file['name'].'">'.$file['name'].'</a></td>');
|
||||
if($file['type']<>'dir') echo('<td class="sizetext">'.$file['size'].' byte</td>'); else echo('<td></td>');
|
||||
echo('<td class="sizetext">'.date($CONFIG_DATEFORMAT,$file['mtime']).'</td>');
|
||||
echo('</tr>');
|
||||
}
|
||||
}
|
||||
echo('</table>');
|
||||
if(!$content) echo('<p>no files here</p>');
|
||||
echo('</div>');*/
|
||||
echo '<div id="content"></div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* get the content of a directory
|
||||
* @param dir $directory
|
||||
*/
|
||||
public static function getdirectorycontent($directory){
|
||||
$filesfound=true;
|
||||
$content=array();
|
||||
$dirs=array();
|
||||
$file=array();
|
||||
$files=array();
|
||||
if (is_dir($directory)) {
|
||||
if ($dh = opendir($directory)) {
|
||||
while (($filename = readdir($dh)) !== false) {
|
||||
if($filename<>'.' and $filename<>'..'){
|
||||
$file=array();
|
||||
$filesfound=true;
|
||||
$file['name']=$filename;
|
||||
$file['directory']=$directory;
|
||||
$stat=stat($directory.'/'.$filename);
|
||||
$file=array_merge($file,$stat);
|
||||
$file['type']=filetype($directory .'/'. $filename);
|
||||
if($file['type']=='dir'){
|
||||
$dirs[$file['name']]=$file;
|
||||
}else{
|
||||
$files[$file['name']]=$file;
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
}
|
||||
ksort($dirs);
|
||||
ksort($files);
|
||||
$content=array_merge($dirs,$files);
|
||||
if($filesfound){
|
||||
return $content;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* get the content of a directory
|
||||
* @param dir $directory
|
||||
*/
|
||||
public static function getdirectorycontent($directory){
|
||||
$filesfound=true;
|
||||
$content=array();
|
||||
$dirs=array();
|
||||
$file=array();
|
||||
$files=array();
|
||||
if (is_dir($directory)) {
|
||||
if ($dh = opendir($directory)) {
|
||||
while (($filename = readdir($dh)) !== false) {
|
||||
if($filename<>'.' and $filename<>'..'){
|
||||
$file=array();
|
||||
$filesfound=true;
|
||||
$file['name']=$filename;
|
||||
$file['directory']=$directory;
|
||||
$stat=stat($directory.'/'.$filename);
|
||||
$file=array_merge($file,$stat);
|
||||
$file['type']=filetype($directory .'/'. $filename);
|
||||
if($file['type']=='dir'){
|
||||
$dirs[$file['name']]=$file;
|
||||
}else{
|
||||
$files[$file['name']]=$file;
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
}
|
||||
ksort($dirs);
|
||||
ksort($files);
|
||||
$content=array_merge($dirs,$files);
|
||||
if($filesfound){
|
||||
return $content;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* return the cntent of a file
|
||||
*
|
||||
* @param dir $dir
|
||||
* @param file $file
|
||||
*/
|
||||
public static function get($dir,$file){
|
||||
if(isset($_SESSION['username']) and $_SESSION['username']<>'') {
|
||||
global $CONFIG_DATADIRECTORY;
|
||||
$filename=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$file;
|
||||
|
||||
// exit if try to access files outside our directory
|
||||
if(strstr($filename,'..')<>false) exit();
|
||||
|
||||
OC_LOG::event($_SESSION['username'],3,$dir.'/'.$file);
|
||||
|
||||
header('Content-Description: File Transfer');
|
||||
header('Content-Type: application/octet-stream');
|
||||
header('Content-Disposition: attachment; filename='.basename($file));
|
||||
header('Content-Transfer-Encoding: binary');
|
||||
header('Expires: 0');
|
||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||
header('Pragma: public');
|
||||
header('Content-Length: ' . filesize($filename));
|
||||
readfile($filename);
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* return the content of a file or return a zip file containning multiply files
|
||||
*
|
||||
* @param dir $dir
|
||||
* @param file $file
|
||||
*/
|
||||
public static function get($dir,$files){
|
||||
global $CONFIG_DATADIRECTORY;
|
||||
if(strstr($files,'..') or strstr($dir,'..')){
|
||||
die();
|
||||
}
|
||||
if(is_array($files)){
|
||||
$zip = new ZipArchive();
|
||||
$filename = sys_get_temp_dir()."/ownCloud.zip";
|
||||
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
|
||||
exit("cannot open <$filename>\n");
|
||||
}
|
||||
foreach($files as $file){
|
||||
$file=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$file;
|
||||
if(is_file($file)){
|
||||
$zip->addFile($file,basename($file));
|
||||
}elseif(is_dir($file)){
|
||||
zipAddDir($file,$zip);
|
||||
}
|
||||
}
|
||||
$zip->close();
|
||||
}elseif(is_dir($CONFIG_DATADIRECTORY.'/'.$dir.'/'.$files)){
|
||||
$zip = new ZipArchive();
|
||||
$filename = sys_get_temp_dir()."/ownCloud.zip";
|
||||
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
|
||||
exit("cannot open <$filename>\n");
|
||||
}
|
||||
$file=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$files;
|
||||
zipAddDir($file,$zip);
|
||||
$zip->close();
|
||||
}else{
|
||||
$zip=false;
|
||||
$filename=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$files;
|
||||
}
|
||||
header('Content-Description: File Transfer');
|
||||
header('Content-Type: application/octet-stream');
|
||||
header('Content-Disposition: attachment; filename='.basename($filename));
|
||||
header('Content-Transfer-Encoding: binary');
|
||||
header('Expires: 0');
|
||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||
header('Pragma: public');
|
||||
header('Content-Length: ' . filesize($filename));
|
||||
ob_end_clean();
|
||||
readfile($filename);
|
||||
if($zip){
|
||||
unlink($filename);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* move a file or folder
|
||||
*
|
||||
* @param dir $sourceDir
|
||||
* @param file $source
|
||||
* @param dir $targetDir
|
||||
* @param file $target
|
||||
*/
|
||||
public static function move($sourceDir,$source,$targetDir,$target){
|
||||
global $CONFIG_DATADIRECTORY;
|
||||
if(OC_USER::isLoggedIn() and strpos($sourceDir,'..')===false and strpos($source,'..')===false and strpos($targetDir,'..')===false and strpos($target,'..')===false){
|
||||
$targetFile=$CONFIG_DATADIRECTORY.'/'.$targetDir.'/'.$target;
|
||||
$sourceFile=$CONFIG_DATADIRECTORY.'/'.$sourceDir.'/'.$source;
|
||||
rename($sourceFile,$targetFile);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* create a new file or folder
|
||||
*
|
||||
* @param dir $dir
|
||||
* @param file $name
|
||||
* @param type $type
|
||||
*/
|
||||
public static function newfile($dir,$name,$type){
|
||||
global $CONFIG_DATADIRECTORY;
|
||||
if(OC_USER::isLoggedIn() and strpos($dir,'..')===false and strpos($name,'..')===false){
|
||||
$file=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$name;
|
||||
if($type=='dir'){
|
||||
mkdir($file);
|
||||
}elseif($type=='file'){
|
||||
$fileHandle=fopen($file, 'w') or die("can't open file");
|
||||
fclose($fileHandle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* deletes a file or folder
|
||||
*
|
||||
* @param dir $dir
|
||||
* @param file $name
|
||||
*/
|
||||
public static function delete($dir,$file){
|
||||
global $CONFIG_DATADIRECTORY;
|
||||
if(OC_USER::isLoggedIn() and strpos($dir,'..')===false){
|
||||
$file=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$file;
|
||||
if(is_file($file)){
|
||||
unlink($file);
|
||||
}elseif(is_dir($file)){
|
||||
rmdir($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function zipAddDir($dir,$zip,$internalDir=''){
|
||||
$dirname=basename($dir);
|
||||
$zip->addEmptyDir($internalDir.$dirname);
|
||||
$internalDir.=$dirname.='/';
|
||||
$files=OC_FILES::getdirectorycontent($dir);
|
||||
foreach($files as $file){
|
||||
$filename=$file['name'];
|
||||
$file=$dir.'/'.$filename;
|
||||
if(is_file($file)){
|
||||
$zip->addFile($file,$internalDir.$filename);
|
||||
}elseif(is_dir($file)){
|
||||
zipAddDir($file,$zip,$internalDir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!function_exists('sys_get_temp_dir')) {
|
||||
function sys_get_temp_dir() {
|
||||
if( $temp=getenv('TMP') ) return $temp;
|
||||
if( $temp=getenv('TEMP') ) return $temp;
|
||||
if( $temp=getenv('TMPDIR') ) return $temp;
|
||||
$temp=tempnam(__FILE__,'');
|
||||
if (file_exists($temp)) {
|
||||
unlink($temp);
|
||||
return dirname($temp);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
|
@ -1,5 +1,3 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - ajax frontend
|
||||
*
|
||||
|
@ -20,17 +18,17 @@
|
|||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
require_once('../inc/lib_base.php');
|
||||
|
||||
$dir=$_GET['dir'];
|
||||
$file=$_GET['file'];
|
||||
if(isset($_SESSION['username']) and $_SESSION['username'] and strpos($dir,'..')===false){
|
||||
$file=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$file;
|
||||
if(is_file($file)){
|
||||
unlink($file);
|
||||
}elseif(is_dir($file)){
|
||||
rmdir($file);
|
||||
OC_API=new Object();
|
||||
|
||||
OC_API.run=function(action,params,callback,callbackparams){
|
||||
var xmlloader=new OCXMLLoader();
|
||||
xmlloader.setCallBack(callback);
|
||||
xmlloader.method="POST";
|
||||
var paramString='action='+action;
|
||||
for(name in params){
|
||||
paramString+='&'+name+'='+encodeURIComponent(params[name]);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
xmlloader.arg=callbackparams;
|
||||
xmlloader.load('files/api.php',paramString);
|
||||
}
|
|
@ -87,6 +87,10 @@ OC_FILES.getdirectorycontent=function(dir,callback,refresh){
|
|||
|
||||
OC_FILES.dir='';
|
||||
|
||||
OC_FILES.get=function(dir,file){
|
||||
window.location='files/get_file.php?dir='+encodeURIComponent(dir)+'&files='+encodeURIComponent(file);
|
||||
}
|
||||
|
||||
OC_FILES.upload=function(dir,iframeId){
|
||||
var file=new Object;
|
||||
var fileSelector=document.getElementById('fileSelector');
|
||||
|
@ -133,7 +137,7 @@ OC_FILES.upload_callback=function(iframeId){
|
|||
if(OC_FILES.cache.incomplete[file.dir][file.name]){
|
||||
OC_FILES.browser.files.remove(file.name);
|
||||
OC_FILES.cache.files[file.name]=OC_FILES.cache.incomplete[file.dir][file.name]
|
||||
delete OC_FILES.cache.incomplete[file.dir][file.name];
|
||||
OC_FILES.cache.incomplete[file.dir][file.name]=null;
|
||||
OC_FILES.cache.files[file.name]['type']=file.type;
|
||||
this.uploadForm.parentNode.removeChild(this.uploadForm);
|
||||
this.parentNode.removeChild(this);
|
||||
|
@ -154,14 +158,12 @@ OC_FILES.rename=function(dir,file,event){
|
|||
OC_FILES.browser.show(OC_FILES.dir);
|
||||
return false;
|
||||
}
|
||||
xmlloader=new OCXMLLoader();
|
||||
xmlloader.setCallBack(OC_FILES.rename_callback);
|
||||
xmlloader.arg=new Object;
|
||||
xmlloader.arg.oldname=file;
|
||||
xmlloader.arg.newname=newname;
|
||||
xmlloader.arg.dir=dir;
|
||||
xmlloader.arg.type=OC_FILES.cache.files[file]['type'];
|
||||
xmlloader.load('files/rename.php?dir='+dir+'&file='+file+'&newname='+newname);
|
||||
arg=new Object;
|
||||
arg.oldname=file;
|
||||
arg.newname=newname;
|
||||
arg.dir=dir;
|
||||
arg.type=OC_FILES.cache.files[file]['type'];
|
||||
OC_API.run('rename',{dir:dir,file:file,newname:newname},OC_FILES.rename_callback,arg)
|
||||
if(!OC_FILES.cache.incomplete[dir]){
|
||||
OC_FILES.cache.incomplete[dir]=Array();
|
||||
}
|
||||
|
@ -184,12 +186,9 @@ OC_FILES.rename_callback=function(req,file){
|
|||
}
|
||||
|
||||
OC_FILES.remove=function(dir,file){
|
||||
remove=confirm('remove file \''+file+'\'?');
|
||||
remove=confirm('delete file \''+file+'\'?');
|
||||
if(remove){
|
||||
xmlloader=new OCXMLLoader();
|
||||
xmlloader.setCallBack(OC_FILES.remove_callback);
|
||||
xmlloader.arg=file;
|
||||
xmlloader.load('files/delete.php?dir='+dir+'&file='+file);
|
||||
OC_API.run('delete',{dir:dir,file:file},OC_FILES.remove_callback,file)
|
||||
OC_FILES.browser.files.remove(file);
|
||||
delete OC_FILES.cache.files[file];
|
||||
}
|
||||
|
@ -212,13 +211,11 @@ OC_FILES.getSelected=function(){
|
|||
}
|
||||
|
||||
OC_FILES.newFile=function(type,name,dir){
|
||||
xmlloader=new OCXMLLoader();
|
||||
xmlloader.arg=new Object;
|
||||
xmlloader.arg.name=name;
|
||||
xmlloader.arg.dir=dir;
|
||||
xmlloader.arg.type=type;
|
||||
xmlloader.setCallBack(OC_FILES.new_callback);
|
||||
xmlloader.load('files/new.php?type='+type+'&dir='+dir+'&name='+name);
|
||||
arg=new Object;
|
||||
arg.name=name;
|
||||
arg.dir=dir;
|
||||
arg.type=type;
|
||||
OC_API.run('new',{dir:dir,name:name,type:type},OC_FILES.new_callback,arg)
|
||||
if(!OC_FILES.cache.incomplete[dir]){
|
||||
OC_FILES.cache.incomplete[dir]=Array();
|
||||
}
|
||||
|
@ -248,17 +245,15 @@ OC_FILES.move=function(source,target,sourceDir,targetDir){
|
|||
if(!OC_FILES.cache.incomplete[targetDir+'/'+target]){
|
||||
OC_FILES.cache.incomplete[targetDir+'/'+target]=Array();
|
||||
}
|
||||
xmlloader=new OCXMLLoader();
|
||||
xmlloader.arg=new Object;
|
||||
xmlloader.arg.source=source;
|
||||
xmlloader.arg.target=target;
|
||||
xmlloader.arg.sourceDir=sourceDir;
|
||||
xmlloader.arg.targetDir=targetDir;
|
||||
xmlloader.arg.type=OC_FILES.cache.files[source]['type'];
|
||||
arg=new Object;
|
||||
arg.source=source;
|
||||
arg.target=target;
|
||||
arg.sourceDir=sourceDir;
|
||||
arg.targetDir=targetDir;
|
||||
arg.type=OC_FILES.cache.files[source]['type'];
|
||||
OC_FILES.cache.files[source]['type']='incomplete';
|
||||
OC_FILES.cache.incomplete[targetDir+'/'+target][source]=OC_FILES.cache.files[source]
|
||||
xmlloader.setCallBack(OC_FILES.move_callback);
|
||||
xmlloader.load('files/move.php?sourcedir='+sourceDir+'&targetdir='+targetDir+'&source='+source+'&target='+target);
|
||||
OC_FILES.cache.incomplete[targetDir+'/'+target][source]=OC_FILES.cache.files[source];
|
||||
OC_API.run('move',{sourcedir:sourceDir,source:source,targetdir:targetDir,target:target},OC_FILES.move_callback,arg);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -293,11 +288,12 @@ OC_FILES.actions_selected.download=function(){
|
|||
if(files.length==0){
|
||||
return false;
|
||||
}else if(files.length>1){
|
||||
files.join(';');
|
||||
files=files.join(';');
|
||||
}else{
|
||||
files=files[0];
|
||||
}
|
||||
window.location=WEBROOT+'/files/get_file.php?dir='+OC_FILES.dir+'&files='+files;
|
||||
OC_FILES.get(dir,files);
|
||||
// window.location=WEBROOT+'/files/get_file.php?dir='+OC_FILES.dir+'&files='+files;
|
||||
}
|
||||
|
||||
OC_FILES.actions_selected['delete']=function(){
|
||||
|
@ -361,7 +357,7 @@ OC_FILES.fileActions.all.rename=function(){
|
|||
OC_FILES.browser.show_rename(this.dir,this.file);
|
||||
}
|
||||
OC_FILES.fileActions.all.download=function(){
|
||||
window.location=WEBROOT+'/files/get_file.php?dir='+this.dir+'&files='+this.file;
|
||||
OC_FILES.get(this.dir,this.file);
|
||||
}
|
||||
OC_FILES.fileActions.all['default']=OC_FILES.fileActions.all.download;
|
||||
|
||||
|
@ -373,13 +369,12 @@ OC_FILES.fileActions.dir.open=function(){
|
|||
OC_FILES.fileActions.dir['default']=OC_FILES.fileActions.dir.open;
|
||||
|
||||
OC_FILES.fileActions.dir.dropOn=function(file){
|
||||
OC_FILES.move(file.file,this.file,file.dir,this.dir);
|
||||
OC_FILES.move(file.file,file.file,file.dir,this.dir+'/'+this.file);
|
||||
}
|
||||
|
||||
OC_FILES.fileActions.jpg=new Object()
|
||||
|
||||
OC_FILES.fileActions.jpg.show=function(){
|
||||
// window.open(WEBROOT+'/files/open_file.php?dir='+this.dir+'&file='+this.file);
|
||||
OC_FILES.browser.showImage(this.dir,this.file);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue