commit 04f784b279740846c9d665e67671a74d409ebf3d
parent 831dc7249a0326e7ee3aa9663fbbea65b87c093e
Author: dankert <devnull@localhost>
Date: Sat, 6 Feb 2010 02:39:40 +0100
Fix für Komprimieren/Dekomprimieren von Dateien.
Diffstat:
6 files changed, 87 insertions(+), 51 deletions(-)
diff --git a/actionClasses/FileAction.class.php b/actionClasses/FileAction.class.php
@@ -106,8 +106,35 @@ class FileAction extends ObjectAction
{
$this->lastModified( $this->file->lastchangeDate );
- // Angabe Content-Type
- header('Content-Type: '.$this->file->mimeType() );
+ if ( $this->file->extension == 'gz' )
+ {
+ global $conf;
+ $mime_types = $conf['mime-types'];
+
+ $pos = strrpos($this->file->filename,'.');
+ if ( $pos === false )
+ $ext = '';
+ else
+ $ext = substr($this->file->filename,$pos+1);
+
+ $ext = strtolower($ext);
+
+ if ( !empty($mime_types[$ext]) )
+ $mime_type = $mime_types[$ext];
+ else
+ // Wenn kein Mime-Type gefunden, dann Standartwert setzen
+ $mime_type = OR_FILE_DEFAULT_MIMETYPE;
+
+ header('Content-Type: '.$mime_type );
+ header('Content-Encoding: gzip' );
+ }
+ else
+ {
+ // Angabe Content-Type
+ header('Content-Type: '.$this->file->mimeType() );
+ }
+
+
header('X-File-Id: ' .$this->file->fileid );
header('X-Id: ' .$this->file->id );
@@ -355,7 +382,7 @@ class FileAction extends ObjectAction
/**
* Anzeigen des Inhaltes
*/
- function extract()
+ function extractView()
{
$this->setTemplateVars( $this->file->getProperties() );
@@ -366,34 +393,24 @@ class FileAction extends ObjectAction
/**
* Anzeigen des Inhaltes
*/
- function uncompress()
- {
- }
-
-
- /**
- * Anzeigen des Inhaltes
- */
- function compress()
+ function uncompressView()
{
- $formats = array();
- foreach( $this->getCompressionTypes() as $t )
- $formats[$t] = lang('compression_'.$t);
-
- $this->setTemplateVar('formats' ,$formats );
}
/**
* Anzeigen des Inhaltes
*/
- function douncompress()
+ function uncompressAction()
{
switch( $this->file->extension )
{
case 'gz':
if ( $this->getRequestVar('replace') )
{
+ echo "old:".strlen( $this->file->loadValue() );
+ echo "newsize:".strlen(gzinflate( substr($this->file->loadValue(),10)));
+ exit;
$this->file->value = gzinflate( substr($this->file->loadValue(),10));
$this->file->parse_filename( $this->file->filename );
$this->file->save();
@@ -432,8 +449,10 @@ class FileAction extends ObjectAction
break;
default:
- die( 'cannot extract file with extension: '.$this->file->extension );
+ die( 'cannot uncompress file with extension: '.$this->file->extension );
}
+
+ $this->addNotice('file',$this->file->name,'DONE',OR_NOTICE_OK);
$this->callSubAction('edit');
}
@@ -442,7 +461,7 @@ class FileAction extends ObjectAction
/**
* Anzeigen des Inhaltes
*/
- function doextract()
+ function extractAction()
{
switch( $this->file->extension )
{
@@ -519,7 +538,21 @@ class FileAction extends ObjectAction
/**
* Anzeigen des Inhaltes
*/
- function docompress()
+ function compressView()
+ {
+ $formats = array();
+ foreach( $this->getCompressionTypes() as $t )
+ $formats[$t] = lang('compression_'.$t);
+
+ $this->setTemplateVar('formats' ,$formats );
+ }
+
+
+
+ /**
+ * Anzeigen des Inhaltes
+ */
+ function compressAction()
{
$format = $this->getRequestVar('format','alphanum');
@@ -528,8 +561,10 @@ class FileAction extends ObjectAction
case 'gz':
if ( $this->getRequestVar('replace','num')=='1' )
{
- $this->file->value = gzencode( $this->file->loadValue() );
- $this->file->parse_filename( $this->file->filename.'.'.$this->file->extension.'.gz' );
+ //echo "old:".strlen( $this->file->loadValue() );
+ //echo "newsize:".strlen(gzencode( $this->file->loadValue(),1 ));
+ $this->file->value = gzencode( $this->file->loadValue(),1 );
+ $this->file->parse_filename( $this->file->filename.'.'.$this->file->extension.'.gz',FORCE_GZIP );
$this->file->save();
$this->file->saveValue();
@@ -539,8 +574,8 @@ class FileAction extends ObjectAction
$newFile = new File();
$newFile->name = $this->file->name;
$newFile->parentid = $this->file->parentid;
- $newFile->value = gzencode( $this->file->loadValue() );
- $newFile->parse_filename( $this->file->filename.'.'.$this->file->extension.'.gz' );
+ $newFile->value = gzencode( $this->file->loadValue(),1 );
+ $newFile->parse_filename( $this->file->filename.'.'.$this->file->extension.'.gz',FORCE_GZIP );
$newFile->add();
}
@@ -569,7 +604,8 @@ class FileAction extends ObjectAction
default:
die( 'unknown compress type: '.$format );
}
-
+
+ $this->addNotice('file',$this->file->name,'DONE',OR_NOTICE_OK);
$this->callSubAction('edit');
}
@@ -599,7 +635,7 @@ class FileAction extends ObjectAction
{
$compressionTypes = array();
if ( function_exists('gzencode' ) ) $compressionTypes[] = 'gz';
- if ( function_exists('gzencode' ) ) $compressionTypes[] = 'zip';
+ //if ( function_exists('gzencode' ) ) $compressionTypes[] = 'zip';
if ( function_exists('bzipcompress') ) $compressionTypes[] = 'bz2';
return $compressionTypes;
}
diff --git a/actionClasses/FileAction.ini.php b/actionClasses/FileAction.ini.php
@@ -67,17 +67,15 @@ goto=rights
[compress]
menu=edit
+write=true
[uncompress]
menu=edit
+write=true
[extract]
menu=edit
-target=doextract
-
-[doextract]
-menu=edit
-goto=edit
+write=true
[menu]
edit=edit,editvalue,compress,uncompress,extract
diff --git a/objectClasses/File.class.php b/objectClasses/File.class.php
@@ -585,6 +585,8 @@ EOF
*/
function saveValue( $value = '' )
{
+ @unlink( $this->tmpfile() );
+
$db = db_connection();
$sql = new Sql( 'UPDATE {t_file}'.
diff --git a/themes/default/templates/file/compress.tpl.src.php b/themes/default/templates/file/compress.tpl.src.php
@@ -1,5 +1,5 @@
page
- form action:file subaction:docompress
+ form
window name:asdf title:asdfdfs
row
cell
@@ -13,12 +13,13 @@ page
row
cell
cell
+ set var:replace value:1
radio name:replace value:1
- label for:replace value:1
+ label for:replace_1
text key:replace
newline
- radio name:replace value:nix
- label for:replace value:nix
+ radio name:replace value:0
+ label for:replace_0
text key:new
row
cell colspan:2 class:act
diff --git a/themes/default/templates/file/extract.tpl.src.php b/themes/default/templates/file/extract.tpl.src.php
@@ -1,12 +1,6 @@
page
- form action:file subaction:doextract
+ form
window name:asdf title:asdfdfs
- #row
- # cell
- # text text:type
- # cell
- # set var:gz value:gz
- # selectbox list:formats name:format default:gz
row
- cell colspan:2
+ cell colspan:2 class:act
button type:ok
\ No newline at end of file
diff --git a/themes/default/templates/file/uncompress.tpl.src.php b/themes/default/templates/file/uncompress.tpl.src.php
@@ -1,5 +1,5 @@
page
- form action:file subaction:douncompress
+ form
window name:asdf title:asdfdfs
#row
# cell
@@ -8,14 +8,19 @@ page
# set var:gz value:gz
# selectbox list:formats name:format default:gz
row
+ cell colspan:2
+ fieldset title:message:options
+ row
cell
cell
- set var:field value:replace
- radio name:field value:true
- text text:replace
+ set var:replace value:1
+ radio name:replace value:1
+ label for:replace_1
+ text key:replace
newline
- radio name:field value:false
- text text:createnew
+ radio name:replace value:0
+ label for:replace_0
+ text key:new
row
- cell colspan:2
+ cell class:act colspan:2
button type:ok
\ No newline at end of file