Merge branch 'master' into calendar_sharing

This commit is contained in:
Georg Ehrke 2012-03-17 00:00:04 +01:00
commit de49652536
5 changed files with 85 additions and 35 deletions

View File

@ -25,23 +25,29 @@
// Init owncloud
require_once('../lib/base.php');
OC_User::checkAdminUser();
OC_Util::checkAdminUser();
$htaccessWorking=(getenv('htaccessWorking')=='true');
if(isset($_POST['maxUploadSize'])){
$maxUploadFilesize=$_POST['maxUploadSize'];
OC_Files::setUploadLimit(OC_Helper::computerFileSize($maxUploadFilesize));
if($_POST) {
if(isset($_POST['maxUploadSize'])){
$maxUploadFilesize=$_POST['maxUploadSize'];
OC_Files::setUploadLimit(OC_Helper::computerFileSize($maxUploadFilesize));
}
if(isset($_POST['maxZipInputSize'])) {
$maxZipInputSize=$_POST['maxZipInputSize'];
OC_Preferences::setValue('', 'files', 'maxZipInputSize', OC_Helper::computerFileSize($maxZipInputSize));
}
}else{
$upload_max_filesize = OC_Helper::computerFileSize(ini_get('upload_max_filesize'));
$post_max_size = OC_Helper::computerFileSize(ini_get('post_max_size'));
$maxUploadFilesize = min($upload_max_filesize, $post_max_size);
$maxZipInputSize = OC_Helper::humanfilesize(OC_Preferences::getValue('', 'files', 'maxZipInputSize', OC_Helper::computerFileSize('800 MB')));
}
OC_App::setActiveNavigationEntry( "files_administration" );
// return template
$tmpl = new OC_Template( "files", "admin", "user" );
$tmpl = new OC_Template( 'files', 'admin' );
$tmpl->assign( 'htaccessWorking', $htaccessWorking );
$tmpl->assign( 'uploadMaxFilesize', $maxUploadFilesize);
$tmpl->printPage();
?>
$tmpl->assign( 'maxZipInputSize', $maxZipInputSize);
return $tmpl->fetchPage();

View File

@ -135,10 +135,9 @@ $(document).ready(function() {
$('.download').click('click',function(event) {
var files=getSelectedFiles('name').join(';');
//send the browser to the download location
var dir=$('#dir').val()||'/';
// alert(files);
$('#notification').text(t('files','generating ZIP-file, it may take some time.'));
$('#notification').fadeIn();
window.location='ajax/download.php?files='+encodeURIComponent(files)+'&dir='+encodeURIComponent(dir);
return false;
});

View File

@ -1,10 +1,12 @@
<?php OC_Util::addScript('files','admin'); ?>
<form name="filesForm" action='#' method='post'>
<?php if($_['htaccessWorking']):?>
<label for="maxUploadSize"><?php echo $l->t( 'Maximum upload size' ); ?> </label><input name='maxUploadSize' id="maxUploadSize" value='<?php echo $_['uploadMaxFilesize'] ?>'/><br/>
<input type='submit' value='Save'/>
<?php else:?>
No settings currently available.
<?php endif;?>
<fieldset class="personalblock">
<legend><strong><?php echo $l->t('File handling');?></strong></legend>
<?php if($_['htaccessWorking']):?>
<label for="maxUploadSize"><?php echo $l->t( 'Maximum upload size' ); ?> </label><input name='maxUploadSize' id="maxUploadSize" value='<?php echo $_['uploadMaxFilesize'] ?>'/><br/>
<?php endif;?>
<label for="maxZipInputSize"><?php echo $l->t( 'Maximum input size for zip files (affects folder- and multi-file download)' ); ?> </label><input name="maxZipInputSize" id="maxZipInputSize" value='<?php echo $_['maxZipInputSize'] ?>'/><br/>
<input type="submit" value="Save"/>
</fieldset>
</form>

View File

@ -325,6 +325,7 @@ class OC_App{
$source=self::$settingsForms;
break;
case 'admin':
$forms[] = include 'files/admin.php'; //hardcode own apps
$source=self::$adminForms;
break;
case 'personal':

View File

@ -59,6 +59,9 @@ class OC_Files {
}
if(is_array($files)){
self::checkZipInputSize($dir,$files);
$executionTime = intval(ini_get('max_execution_time'));
set_time_limit(0);
$zip = new ZipArchive();
$filename = get_temp_dir()."/ownCloud.zip";
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
@ -75,7 +78,11 @@ class OC_Files {
}
}
$zip->close();
set_time_limit($executionTime);
}elseif(OC_Filesystem::is_dir($dir.'/'.$files)){
self::checkZipInputSize($dir,$files);
$executionTime = intval(ini_get('max_execution_time'));
set_time_limit(0);
$zip = new ZipArchive();
$filename = get_temp_dir()."/ownCloud.zip";
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
@ -84,6 +91,7 @@ class OC_Files {
$file=$dir.'/'.$files;
self::zipAddDir($file,$zip);
$zip->close();
set_time_limit($executionTime);
}else{
$zip=false;
$filename=$dir.'/'.$files;
@ -209,6 +217,40 @@ class OC_Files {
}
}
/**
* checks if the selected files are within the size constraint. If not, outputs an error page.
*
* @param dir $dir
* @param files $files
*/
static function checkZipInputSize($dir, $files) {
$zipLimit = OC_Preferences::getValue('', 'files', 'maxZipInputSize', OC_Helper::computerFileSize('800 MB'));
if($zipLimit > 0) {
$totalsize = 0;
if(is_array($files)){
foreach($files as $file){
$totalsize += OC_Filesystem::filesize($dir.'/'.$file);
}
}else{
$totalsize += OC_Filesystem::filesize($dir.'/'.$files);
}
if($totalsize > $zipLimit) {
$l = new OC_L10N('files');
header("HTTP/1.0 409 Conflict");
$tmpl = new OC_Template( '', 'error', 'user' );
$errors = array(
array(
'error' => $l->t('Selected files too large to generate zip file.'),
'hint' => 'Download the files in smaller chunks, seperately or kindly ask your administrator.<br/><a href="javascript:history.back()">' . $l->t('Back to Files') . '</a>',
)
);
$tmpl->assign('errors', $errors);
$tmpl->printPage();
exit;
}
}
}
/**
* try to detect the mime type of a file
*