diff options
Diffstat (limited to 'forum')
-rw-r--r-- | forum/htdocs/config.php.defaults | 2 | ||||
-rw-r--r-- | forum/htdocs/index.php | 3 | ||||
-rw-r--r-- | forum/utils/file.php | 26 | ||||
-rw-r--r-- | forum/utils/imagecache.php | 25 | ||||
-rw-r--r-- | forum/utils/parser.php | 2 |
5 files changed, 42 insertions, 16 deletions
diff --git a/forum/htdocs/config.php.defaults b/forum/htdocs/config.php.defaults index 51f7f4e..7f0d643 100644 --- a/forum/htdocs/config.php.defaults +++ b/forum/htdocs/config.php.defaults @@ -6,5 +6,5 @@ $ADMIN_TIMEOUT = 100000; $PERMSTORE = $DATA_DIR . "/files"; $IMAGECACHE = $DATA_DIR . "/imagecache"; $LOG_FILE = $DATA_DIR . "/forum.log"; -$FILE_MAX_SIZE = 5*1024*1024; // 5kb +$FILE_MAX_SIZE = 5*1024; // 5kb ?> diff --git a/forum/htdocs/index.php b/forum/htdocs/index.php index 99169ab..ab63d9b 100644 --- a/forum/htdocs/index.php +++ b/forum/htdocs/index.php @@ -17,7 +17,8 @@ if($current_user) { case "file": include_once($UTIL_DIR. "/file.php"); - getFile($fid); + if($preview) getFilePreview($fid); + else getFile($fid); return; } } diff --git a/forum/utils/file.php b/forum/utils/file.php index 50993b5..25cb4c2 100644 --- a/forum/utils/file.php +++ b/forum/utils/file.php @@ -28,4 +28,30 @@ function getFile($fid) readfile($filename); } +function getFilePreview($fid) +{ + global $DATA_DIR, $PERMSTORE, $MIME_TYPES; + $files = new Files($DATA_DIR . "/files.xml"); + $file = $files->getFile($fid); + + $filename = $PERMSTORE . "/" . $file->fid; + + if(strstr($file->mimetype, "image")) { + header('Content-Description: File Transfer'); + header('Content-Type: ' . $file->mimetype); + header('Content-Length: ' . filesize($filename)); + header('Content-Disposition: inline; filename=' . basename($file->name)); + readfile($filename); + } else { + header("Content-type: image/png"); + $im = @imagecreate(8 + strlen($file->name) * 5, 20) + or die("Cannot Initialize new GD image stream"); + $background_color = imagecolorallocate($im, 0, 0, 0); + $text_color = imagecolorallocate($im, 233, 14, 91); + imagestring($im, 1, 5, 5, $file->name, $text_color); + imagepng($im); + imagedestroy($im); + } +} + ?>
\ No newline at end of file diff --git a/forum/utils/imagecache.php b/forum/utils/imagecache.php index ac3ebc3..0c18e1a 100644 --- a/forum/utils/imagecache.php +++ b/forum/utils/imagecache.php @@ -22,17 +22,16 @@ function rescale($image) { return $image_p; } -function errorImage($filename) +function errorImage($message) { - /* - header('Content-Description: File Transfer'); - header('Content-Type: image/jpeg'); - header('Content-Length: ' . filesize($fullfilename)); - header('Content-Disposition: inline; filename=' . basename($filename)); - readfile($fullfilename); - */ - echo "Error fetching image: " . $filename; - die(404); + header("Content-type: image/png"); + $im = @imagecreate(8 + strlen($message) * 5, 20) + or die("Cannot Initialize new GD image stream"); + $background_color = imagecolorallocate($im, 0, 0, 0); + $text_color = imagecolorallocate($im, 233, 14, 91); + imagestring($im, 1, 5, 5, $message, $text_color); + imagepng($im); + imagedestroy($im); } function getCachedImage($filename) @@ -63,21 +62,21 @@ function getCachedImage($filename) case ".jpeg": case ".jpg": $image = imagecreatefromjpeg(urldecode($filename)); - if(!$image) errorImage($filename); + if(!$image) errorImage("Could not read: ". $filename); $image = rescale($image); imagejpeg($image, $fullfilename, 90); break; case ".gif": $image = imagecreatefromgif(urldecode($filename)); - if(!$image) errorImage($filename); + if(!$image) errorImage("Could not read: ". $filename); $image = rescale($image); imagegif($image, $fullfilename); break; case ".png": $image = imagecreatefrompng(urldecode($filename)); - if(!$image) errorImage($filename); + if(!$image) errorImage("Could not read: ". $filename); $image = rescale($image); imagepng($image, $fullfilename); break; diff --git a/forum/utils/parser.php b/forum/utils/parser.php index 6d47162..5864753 100644 --- a/forum/utils/parser.php +++ b/forum/utils/parser.php @@ -48,7 +48,7 @@ function parse($input, $indent = "") $output = preg_replace("/".$imgstartmarker."(.*?)".$imgendmarker."/s", "<a href=\"http://$1\"><img alt=\"$1\" src=\"?mode=imagecache&uri=http://$1\"/></a>", $output); // Replace URLs with <a></a> tags - $output = preg_replace("/\{\{([0-9]*?)\}\}/s", "<a href=\"?mode=file&fid=$1\">File: $1</a>", $output); + $output = preg_replace("/\{\{([0-9]*?)\}\}/s", "<a href=\"?mode=file&fid=$1\"><img src=\"?mode=file&preview=1&fid=$1\"/></a>", $output); // Replace [quote title=...]...[/quote] $urls = ""; |