openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
actionClasses/FileAction.class.php | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
actionClasses/FileAction.ini.php | 8+++-----
objectClasses/File.class.php | 2++
themes/default/templates/file/compress.tpl.src.php | 9+++++----
themes/default/templates/file/extract.tpl.src.php | 10++--------
themes/default/templates/file/uncompress.tpl.src.php | 19++++++++++++-------
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