From 9b41846002669dae83069b4485ccc3618495dd98 Mon Sep 17 00:00:00 2001 From: Trevor Slocum Date: Thu, 25 Jun 2015 00:10:12 -0700 Subject: [PATCH] Typos and minor cleanup --- README.md | 2 +- css/burichan.css | 4 +- css/futaba.css | 4 +- css/global.css | 16 +- imgboard.php | 6 +- inc/captcha.php | 772 +++++++++++++++++++++---------------------- inc/html.php | 1 - settings.default.php | 3 +- 8 files changed, 402 insertions(+), 406 deletions(-) diff --git a/README.md b/README.md index cdbc57a..96c1756 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ TinyIB - A Lightweight and Efficient [Image Board](http://en.wikipedia.org/wiki/ **No database? No problem.** Store posts as text files for a portable set-up capable of running on virtually any PHP host. -To allow new threads without requiring an image, see the [Text Board Mode](https://github.com/tslocum/TinyIB/wiki/Text-Board-Mode) page. +**Not looking for an image board script?** TinyIB is able to allow new threads without requiring an image, or even disallow images entirely. See the [Text Board Mode](https://github.com/tslocum/TinyIB/wiki/Text-Board-Mode) wiki page for instructions. For demos see the [TinyIB Installations](https://github.com/tslocum/TinyIB/wiki) page. diff --git a/css/burichan.css b/css/burichan.css index 515f675..5ae193a 100644 --- a/css/burichan.css +++ b/css/burichan.css @@ -113,13 +113,13 @@ a:hover { color: #000000; font-family: sans-serif; font-size: 14px; - padding: 0px; + padding: 0; } .postlists { background: #FFFFFF; width: 100%; - padding: 0px; + padding: 0; color: #000000; } diff --git a/css/futaba.css b/css/futaba.css index fbd4008..7366a7a 100644 --- a/css/futaba.css +++ b/css/futaba.css @@ -91,13 +91,13 @@ a:hover { .managehead { background: #AAAA66; color: #400000; - padding: 0px; + padding: 0; } .postlists { background: #FFFFFF; width: 100%; - padding: 0px; + padding: 0; color: #800000; } diff --git a/css/global.css b/css/global.css index 6f018e4..04b5014 100644 --- a/css/global.css +++ b/css/global.css @@ -1,15 +1,14 @@ body { - margin: 0; padding: 8px; - margin-bottom: auto; + margin: 0 0 auto; } blockquote blockquote { - margin-left: 0em; + margin-left: 0; } form { - margin-bottom: 0px; + margin-bottom: 0; } .postarea { @@ -17,7 +16,7 @@ form { } .postarea table { - margin: 0px auto; + margin: 0 auto; text-align: left; } @@ -43,10 +42,7 @@ form { } .message { - margin-top: 1em; - margin-bottom: 1em; - margin-left: 25px; - margin-right: 25px; + margin: 1em 25px; } .reply .message { @@ -100,7 +96,7 @@ form { .rules ul { margin: 0; - padding-left: 0px; + padding-left: 0; } .floatpost { diff --git a/imgboard.php b/imgboard.php index 1521b55..db0e309 100644 --- a/imgboard.php +++ b/imgboard.php @@ -49,7 +49,7 @@ $includes = array("inc/defines.php", "inc/functions.php", "inc/html.php"); if (in_array(TINYIB_DBMODE, array('flatfile', 'mysql', 'mysqli', 'sqlite', 'pdo'))) { $includes[] = 'inc/database_' . TINYIB_DBMODE . '.php'; } else { - fancyDie("Unknown database mode specificed"); + fancyDie("Unknown database mode specified"); } foreach ($includes as $include) { @@ -183,7 +183,7 @@ if (isset($_POST['message']) || isset($_POST['file'])) { if ($file_mime == "video/webm") { list($thumb_maxwidth, $thumb_maxheight) = thumbnailDimensions($post); - shell_exec("ffmpegthumbnailer -s " . max($thumb_maxwidth, $thumb_maxheight) . " -i $file_location -o $thumb_location") . '!'; + shell_exec("ffmpegthumbnailer -s " . max($thumb_maxwidth, $thumb_maxheight) . " -i $file_location -o $thumb_location"); $thumb_info = getimagesize($thumb_location); $post['thumb_width'] = $thumb_info[0]; @@ -361,7 +361,7 @@ if (isset($_POST['message']) || isset($_POST['file'])) { if (is_dir('.git')) { $git_output = shell_exec('git pull 2>&1'); $text .= '
-
Attempting update...' . "\n\n" . $git_output . '
+
Attempting update...' . "\n\n" . $git_output . '

Note: If TinyIB updates and you have made custom modifications, review the changes which have been merged into your installation. Ensure that your modifications do not interfere with any new/modified files. diff --git a/inc/captcha.php b/inc/captcha.php index 9dcaaf1..7c9dd47 100644 --- a/inc/captcha.php +++ b/inc/captcha.php @@ -1,386 +1,386 @@ - - * @license GPLv3 - * @link http://code.google.com/p/cool-php-captcha - * @version 0.3 - * - */ - -session_start(); -putenv('GDFONTPATH=' . realpath('./fonts/')); -$captcha = new SimpleCaptcha(); -$captcha->CreateImage(); - -/** - * SimpleCaptcha class - * - */ -class SimpleCaptcha { - /** Width of the image */ - public $width = 175; - - /** Height of the image */ - public $height = 55; - - /** Dictionary word file (empty for random text) */ - public $wordsFile = ''; - - /** - * Path for resource files (fonts, words, etc.) - * - * "resources" by default. For security reasons, is better move this - * directory to another location outise the web server - * - */ - public $resourcesPath = './fonts'; - - /** Min word length (for non-dictionary random text generation) */ - public $minWordLength = 4; - - /** - * Max word length (for non-dictionary random text generation) - * - * Used for dictionary words indicating the word-length - * for font-size modification purposes - */ - public $maxWordLength = 6; - - /** Sessionname to store the original text */ - public $session_var = 'tinyibcaptcha'; - - /** Background color in RGB-array */ - public $backgroundColor = array(254, 254, 254); - - /** Foreground colors in RGB-array */ - public $colors = array( - array(27, 78, 181), // blue - array(22, 163, 35), // green - array(214, 36, 7), // red - ); - - /** Shadow color in RGB-array or null */ - public $shadowColor = array(0, 0, 0); - - /** Horizontal line through the text */ - public $lineWidth = 3; - - /** - * Font configuration - * - * - font: TTF file - * - spacing: relative pixel space between character - * - minSize: min font size - * - maxSize: max font size - */ - public $fonts = array( - 'Roboto-Regular' => array('spacing' => 0, 'minSize' => 27, 'maxSize' => 27, 'font' => 'roboto_regular.ttf'), - 'Roboto-Bold' => array('spacing' => 0, 'minSize' => 27, 'maxSize' => 27, 'font' => 'roboto_bold.ttf') - ); - - /** Wave configuracion in X and Y axes */ - public $Yperiod = 12; - public $Yamplitude = 14; - public $Xperiod = 11; - public $Xamplitude = 5; - - /** letter rotation clockwise */ - public $maxRotation = 8; - - /** - * Internal image size factor (for better image quality) - * 1: low, 2: medium, 3: high - */ - public $scale = 3; - - /** - * Blur effect for better image quality (but slower image processing). - * Better image results with scale=3 - */ - public $blur = true; - - /** Debug? */ - public $debug = false; - - /** Image format: jpeg or png */ - public $imageFormat = 'png'; - - /** GD image */ - public $im; - - public function __construct($config = array()) { - } - - public function CreateImage() { - $ini = microtime(true); - - /** Initialization */ - $this->ImageAllocate(); - - /** Text insertion */ - $text = $this->GetCaptchaText(); - $fontcfg = $this->fonts[array_rand($this->fonts)]; - $this->WriteText($text, $fontcfg); - - $_SESSION[$this->session_var] = $text; - - /** Transformations */ - if (!empty($this->lineWidth)) { - $this->WriteLine(); - } - $this->WaveImage(); - if ($this->blur && function_exists('imagefilter')) { - imagefilter($this->im, IMG_FILTER_GAUSSIAN_BLUR); - } - $this->ReduceImage(); - - if ($this->debug) { - imagestring($this->im, 1, 1, $this->height - 8, - "$text {$fontcfg['font']} " . round((microtime(true) - $ini) * 1000) . "ms", - $this->GdFgColor - ); - } - - /** Output */ - $this->WriteImage(); - $this->Cleanup(); - } - - /** - * Creates the image resources - */ - protected function ImageAllocate() { - // Cleanup - if (!empty($this->im)) { - imagedestroy($this->im); - } - - $this->im = imagecreatetruecolor($this->width * $this->scale, $this->height * $this->scale); - - // Background color - $this->GdBgColor = imagecolorallocate($this->im, - $this->backgroundColor[0], - $this->backgroundColor[1], - $this->backgroundColor[2] - ); - imagefilledrectangle($this->im, 0, 0, $this->width * $this->scale, $this->height * $this->scale, $this->GdBgColor); - - // Foreground color - $color = $this->colors[mt_rand(0, sizeof($this->colors) - 1)]; - $this->GdFgColor = imagecolorallocate($this->im, $color[0], $color[1], $color[2]); - - // Shadow color - if (!empty($this->shadowColor) && is_array($this->shadowColor) && sizeof($this->shadowColor) >= 3) { - $this->GdShadowColor = imagecolorallocate($this->im, - $this->shadowColor[0], - $this->shadowColor[1], - $this->shadowColor[2] - ); - } - } - - /** - * Text generation - * - * @return string Text - */ - protected function GetCaptchaText() { - $text = $this->GetDictionaryCaptchaText(); - if (!$text) { - $text = $this->GetRandomCaptchaText(); - } - return $text; - } - - /** - * Random text generation - * - * @return string Text - */ - protected function GetRandomCaptchaText($length = null) { - if (empty($length)) { - $length = rand($this->minWordLength, $this->maxWordLength); - } - - $words = "abcdefghijlmnopqrstvwyz"; - $vocals = "aeiou"; - - $text = ""; - $vocal = rand(0, 1); - for ($i = 0; $i < $length; $i++) { - if ($vocal) { - $text .= substr($vocals, mt_rand(0, 4), 1); - } else { - $text .= substr($words, mt_rand(0, 22), 1); - } - $vocal = !$vocal; - } - return $text; - } - - /** - * Random dictionary word generation - * - * @param boolean $extended Add extended "fake" words - * @return string Word - */ - function GetDictionaryCaptchaText($extended = false) { - if (empty($this->wordsFile)) { - return false; - } - - // Full path of words file - if (substr($this->wordsFile, 0, 1) == '/') { - $wordsfile = $this->wordsFile; - } else { - $wordsfile = $this->resourcesPath . '/' . $this->wordsFile; - } - - if (!file_exists($wordsfile)) { - return false; - } - - $fp = fopen($wordsfile, "r"); - $length = strlen(fgets($fp)); - if (!$length) { - return false; - } - $line = rand(1, (filesize($wordsfile) / $length) - 2); - if (fseek($fp, $length * $line) == -1) { - return false; - } - $text = trim(fgets($fp)); - fclose($fp); - - /** Change ramdom volcals */ - if ($extended) { - $text = preg_split('//', $text, -1, PREG_SPLIT_NO_EMPTY); - $vocals = array('a', 'e', 'i', 'o', 'u'); - foreach ($text as $i => $char) { - if (mt_rand(0, 1) && in_array($char, $vocals)) { - $text[$i] = $vocals[mt_rand(0, 4)]; - } - } - $text = implode('', $text); - } - - return $text; - } - - /** - * Horizontal line insertion - */ - protected function WriteLine() { - $x1 = $this->width * $this->scale * .15; - $x2 = $this->textFinalX; - $y1 = rand($this->height * $this->scale * .40, $this->height * $this->scale * .65); - $y2 = rand($this->height * $this->scale * .40, $this->height * $this->scale * .65); - $width = $this->lineWidth / 2 * $this->scale; - - for ($i = $width * -1; $i <= $width; $i++) { - imageline($this->im, $x1, $y1 + $i, $x2, $y2 + $i, $this->GdFgColor); - } - } - - /** - * Text insertion - */ - protected function WriteText($text, $fontcfg = array()) { - if (empty($fontcfg)) { - // Select the font configuration - $fontcfg = $this->fonts[array_rand($this->fonts)]; - } - - $fontfile = $fontcfg['font']; - - /** Increase font-size for shortest words: 9% for each glyph missing */ - $lettersMissing = $this->maxWordLength - strlen($text); - $fontSizefactor = 1 + ($lettersMissing * 0.09); - - // Text generation (char by char) - $x = 20 * $this->scale; - $y = round(($this->height * 27 / 40) * $this->scale); - $length = strlen($text); - for ($i = 0; $i < $length; $i++) { - $degree = rand($this->maxRotation * -1, $this->maxRotation); - $fontsize = rand($fontcfg['minSize'], $fontcfg['maxSize']) * $this->scale * $fontSizefactor; - $letter = substr($text, $i, 1); - - if ($this->shadowColor) { - $coords = imagettftext($this->im, $fontsize, $degree, - $x + $this->scale, $y + $this->scale, - $this->GdShadowColor, $fontfile, $letter); - } - $coords = imagettftext($this->im, $fontsize, $degree, - $x, $y, - $this->GdFgColor, $fontfile, $letter); - $x += ($coords[2] - $x) + ($fontcfg['spacing'] * $this->scale); - } - - $this->textFinalX = $x; - } - - /** - * Wave filter - */ - protected function WaveImage() { - // X-axis wave generation - $xp = $this->scale * $this->Xperiod * rand(1, 3); - $k = rand(0, 100); - for ($i = 0; $i < ($this->width * $this->scale); $i++) { - imagecopy($this->im, $this->im, - $i - 1, sin($k + $i / $xp) * ($this->scale * $this->Xamplitude), - $i, 0, 1, $this->height * $this->scale); - } - - // Y-axis wave generation - $k = rand(0, 100); - $yp = $this->scale * $this->Yperiod * rand(1, 2); - for ($i = 0; $i < ($this->height * $this->scale); $i++) { - imagecopy($this->im, $this->im, - sin($k + $i / $yp) * ($this->scale * $this->Yamplitude), $i - 1, - 0, $i, $this->width * $this->scale, 1); - } - } - - /** - * Reduce the image to the final size - */ - protected function ReduceImage() { - // Reduzco el tama�o de la imagen - $imResampled = imagecreatetruecolor($this->width, $this->height); - imagecopyresampled($imResampled, $this->im, - 0, 0, 0, 0, - $this->width, $this->height, - $this->width * $this->scale, $this->height * $this->scale - ); - imagedestroy($this->im); - $this->im = $imResampled; - } - - /** - * File generation - */ - protected function WriteImage() { - if ($this->imageFormat == 'png' && function_exists('imagepng')) { - imagealphablending($this->im, true); - imagesavealpha($this->im, false); - imagecolortransparent($this->im, $this->GdBgColor); - - header("Content-type: image/png"); - imagepng($this->im); - } else { - header("Content-type: image/jpeg"); - imagejpeg($this->im, null, 80); - } - } - - /** - * Cleanup - */ - protected function Cleanup() { - imagedestroy($this->im); - } -} + + * @license GPLv3 + * @link http://code.google.com/p/cool-php-captcha + * @version 0.3 + * + */ + +session_start(); +putenv('GDFONTPATH=' . realpath('./fonts/')); +$captcha = new SimpleCaptcha(); +$captcha->CreateImage(); + +/** + * SimpleCaptcha class + * + */ +class SimpleCaptcha { + /** Width of the image */ + public $width = 175; + + /** Height of the image */ + public $height = 55; + + /** Dictionary word file (empty for random text) */ + public $wordsFile = ''; + + /** + * Path for resource files (fonts, words, etc.) + * + * "resources" by default. For security reasons, is better move this + * directory to another location outside the web server + * + */ + public $resourcesPath = './fonts'; + + /** Min word length (for non-dictionary random text generation) */ + public $minWordLength = 4; + + /** + * Max word length (for non-dictionary random text generation) + * + * Used for dictionary words indicating the word-length + * for font-size modification purposes + */ + public $maxWordLength = 6; + + /** Sessionname to store the original text */ + public $session_var = 'tinyibcaptcha'; + + /** Background color in RGB-array */ + public $backgroundColor = array(254, 254, 254); + + /** Foreground colors in RGB-array */ + public $colors = array( + array(27, 78, 181), // blue + array(22, 163, 35), // green + array(214, 36, 7), // red + ); + + /** Shadow color in RGB-array or null */ + public $shadowColor = array(0, 0, 0); + + /** Horizontal line through the text */ + public $lineWidth = 3; + + /** + * Font configuration + * + * - font: TTF file + * - spacing: relative pixel space between character + * - minSize: min font size + * - maxSize: max font size + */ + public $fonts = array( + 'Roboto-Regular' => array('spacing' => 0, 'minSize' => 27, 'maxSize' => 27, 'font' => 'roboto_regular.ttf'), + 'Roboto-Bold' => array('spacing' => 0, 'minSize' => 27, 'maxSize' => 27, 'font' => 'roboto_bold.ttf') + ); + + /** Wave configuration in X and Y axes */ + public $Yperiod = 12; + public $Yamplitude = 14; + public $Xperiod = 11; + public $Xamplitude = 5; + + /** letter rotation clockwise */ + public $maxRotation = 8; + + /** + * Internal image size factor (for better image quality) + * 1: low, 2: medium, 3: high + */ + public $scale = 3; + + /** + * Blur effect for better image quality (but slower image processing). + * Better image results with scale=3 + */ + public $blur = true; + + /** Debug? */ + public $debug = false; + + /** Image format: jpeg or png */ + public $imageFormat = 'png'; + + /** GD image */ + public $im; + + public function __construct($config = array()) { + } + + public function CreateImage() { + $ini = microtime(true); + + /** Initialization */ + $this->ImageAllocate(); + + /** Text insertion */ + $text = $this->GetCaptchaText(); + $fontcfg = $this->fonts[array_rand($this->fonts)]; + $this->WriteText($text, $fontcfg); + + $_SESSION[$this->session_var] = $text; + + /** Transformations */ + if (!empty($this->lineWidth)) { + $this->WriteLine(); + } + $this->WaveImage(); + if ($this->blur && function_exists('imagefilter')) { + imagefilter($this->im, IMG_FILTER_GAUSSIAN_BLUR); + } + $this->ReduceImage(); + + if ($this->debug) { + imagestring($this->im, 1, 1, $this->height - 8, + "$text {$fontcfg['font']} " . round((microtime(true) - $ini) * 1000) . "ms", + $this->GdFgColor + ); + } + + /** Output */ + $this->WriteImage(); + $this->Cleanup(); + } + + /** + * Creates the image resources + */ + protected function ImageAllocate() { + // Cleanup + if (!empty($this->im)) { + imagedestroy($this->im); + } + + $this->im = imagecreatetruecolor($this->width * $this->scale, $this->height * $this->scale); + + // Background color + $this->GdBgColor = imagecolorallocate($this->im, + $this->backgroundColor[0], + $this->backgroundColor[1], + $this->backgroundColor[2] + ); + imagefilledrectangle($this->im, 0, 0, $this->width * $this->scale, $this->height * $this->scale, $this->GdBgColor); + + // Foreground color + $color = $this->colors[mt_rand(0, sizeof($this->colors) - 1)]; + $this->GdFgColor = imagecolorallocate($this->im, $color[0], $color[1], $color[2]); + + // Shadow color + if (!empty($this->shadowColor) && is_array($this->shadowColor) && sizeof($this->shadowColor) >= 3) { + $this->GdShadowColor = imagecolorallocate($this->im, + $this->shadowColor[0], + $this->shadowColor[1], + $this->shadowColor[2] + ); + } + } + + /** + * Text generation + * + * @return string Text + */ + protected function GetCaptchaText() { + $text = $this->GetDictionaryCaptchaText(); + if (!$text) { + $text = $this->GetRandomCaptchaText(); + } + return $text; + } + + /** + * Random text generation + * + * @return string Text + */ + protected function GetRandomCaptchaText($length = null) { + if (empty($length)) { + $length = rand($this->minWordLength, $this->maxWordLength); + } + + $words = "abcdefghijlmnopqrstvwyz"; + $vocals = "aeiou"; + + $text = ""; + $vocal = rand(0, 1); + for ($i = 0; $i < $length; $i++) { + if ($vocal) { + $text .= substr($vocals, mt_rand(0, 4), 1); + } else { + $text .= substr($words, mt_rand(0, 22), 1); + } + $vocal = !$vocal; + } + return $text; + } + + /** + * Random dictionary word generation + * + * @param boolean $extended Add extended "fake" words + * @return string Word + */ + function GetDictionaryCaptchaText($extended = false) { + if (empty($this->wordsFile)) { + return false; + } + + // Full path of words file + if (substr($this->wordsFile, 0, 1) == '/') { + $wordsfile = $this->wordsFile; + } else { + $wordsfile = $this->resourcesPath . '/' . $this->wordsFile; + } + + if (!file_exists($wordsfile)) { + return false; + } + + $fp = fopen($wordsfile, "r"); + $length = strlen(fgets($fp)); + if (!$length) { + return false; + } + $line = rand(1, (filesize($wordsfile) / $length) - 2); + if (fseek($fp, $length * $line) == -1) { + return false; + } + $text = trim(fgets($fp)); + fclose($fp); + + /** Change random volcals */ + if ($extended) { + $text = preg_split('//', $text, -1, PREG_SPLIT_NO_EMPTY); + $vocals = array('a', 'e', 'i', 'o', 'u'); + foreach ($text as $i => $char) { + if (mt_rand(0, 1) && in_array($char, $vocals)) { + $text[$i] = $vocals[mt_rand(0, 4)]; + } + } + $text = implode('', $text); + } + + return $text; + } + + /** + * Horizontal line insertion + */ + protected function WriteLine() { + $x1 = $this->width * $this->scale * .15; + $x2 = $this->textFinalX; + $y1 = rand($this->height * $this->scale * .40, $this->height * $this->scale * .65); + $y2 = rand($this->height * $this->scale * .40, $this->height * $this->scale * .65); + $width = $this->lineWidth / 2 * $this->scale; + + for ($i = $width * -1; $i <= $width; $i++) { + imageline($this->im, $x1, $y1 + $i, $x2, $y2 + $i, $this->GdFgColor); + } + } + + /** + * Text insertion + */ + protected function WriteText($text, $fontcfg = array()) { + if (empty($fontcfg)) { + // Select the font configuration + $fontcfg = $this->fonts[array_rand($this->fonts)]; + } + + $fontfile = $fontcfg['font']; + + /** Increase font-size for shortest words: 9% for each glyph missing */ + $lettersMissing = $this->maxWordLength - strlen($text); + $fontSizefactor = 1 + ($lettersMissing * 0.09); + + // Text generation (char by char) + $x = 20 * $this->scale; + $y = round(($this->height * 27 / 40) * $this->scale); + $length = strlen($text); + for ($i = 0; $i < $length; $i++) { + $degree = rand($this->maxRotation * -1, $this->maxRotation); + $fontsize = rand($fontcfg['minSize'], $fontcfg['maxSize']) * $this->scale * $fontSizefactor; + $letter = substr($text, $i, 1); + + if ($this->shadowColor) { + $coords = imagettftext($this->im, $fontsize, $degree, + $x + $this->scale, $y + $this->scale, + $this->GdShadowColor, $fontfile, $letter); + } + $coords = imagettftext($this->im, $fontsize, $degree, + $x, $y, + $this->GdFgColor, $fontfile, $letter); + $x += ($coords[2] - $x) + ($fontcfg['spacing'] * $this->scale); + } + + $this->textFinalX = $x; + } + + /** + * Wave filter + */ + protected function WaveImage() { + // X-axis wave generation + $xp = $this->scale * $this->Xperiod * rand(1, 3); + $k = rand(0, 100); + for ($i = 0; $i < ($this->width * $this->scale); $i++) { + imagecopy($this->im, $this->im, + $i - 1, sin($k + $i / $xp) * ($this->scale * $this->Xamplitude), + $i, 0, 1, $this->height * $this->scale); + } + + // Y-axis wave generation + $k = rand(0, 100); + $yp = $this->scale * $this->Yperiod * rand(1, 2); + for ($i = 0; $i < ($this->height * $this->scale); $i++) { + imagecopy($this->im, $this->im, + sin($k + $i / $yp) * ($this->scale * $this->Yamplitude), $i - 1, + 0, $i, $this->width * $this->scale, 1); + } + } + + /** + * Reduce the image to the final size + */ + protected function ReduceImage() { + // Reduzco el tama�o de la imagen + $imResampled = imagecreatetruecolor($this->width, $this->height); + imagecopyresampled($imResampled, $this->im, + 0, 0, 0, 0, + $this->width, $this->height, + $this->width * $this->scale, $this->height * $this->scale + ); + imagedestroy($this->im); + $this->im = $imResampled; + } + + /** + * File generation + */ + protected function WriteImage() { + if ($this->imageFormat == 'png' && function_exists('imagepng')) { + imagealphablending($this->im, true); + imagesavealpha($this->im, false); + imagecolortransparent($this->im, $this->GdBgColor); + + header("Content-type: image/png"); + imagepng($this->im); + } else { + header("Content-type: image/jpeg"); + imagejpeg($this->im, null, 80); + } + } + + /** + * Cleanup + */ + protected function Cleanup() { + imagedestroy($this->im); + } +} diff --git a/inc/html.php b/inc/html.php index c82d0c9..2f09ada 100644 --- a/inc/html.php +++ b/inc/html.php @@ -701,7 +701,6 @@ EOF; $post_html = ''; $posts = latestPosts(true); - $i = 0; foreach ($posts as $post) { if ($post_html != '') { $post_html .= '


'; diff --git a/settings.default.php b/settings.default.php index fbefe1e..12bc1f4 100644 --- a/settings.default.php +++ b/settings.default.php @@ -5,6 +5,7 @@ # # Contact the author via tslocum@gmail.com if you need support. # See README for instructions on configuring, moderating and upgrading your board. +# # Set TINYIB_DBMODE to a MySQL-related mode if it's available. By default it's set to flatfile, which can be very slow. // Administrator/moderator credentials @@ -70,4 +71,4 @@ define('TINYIB_DBNAME', ""); // Database define('TINYIB_DBDRIVER', "mysql"); // PDO driver to use (mysql / sqlite / pgsql / etc.) define('TINYIB_DBDSN', ""); // Enter a custom DSN to override all of the connection/driver settings above (see README for instructions) // When changing this, you should still set TINYIB_DBDRIVER appropriately. -// If you're using PDO with MySQL, you should leave this blank so TinyIB can build the DSN. +// If you're using PDO with a MySQL database, you should leave this blank.