From dd24722b47e785784b9ac7b5332bf7685b81ae96 Mon Sep 17 00:00:00 2001 From: skodak Date: Wed, 15 Aug 2007 14:00:35 +0000 Subject: [PATCH] MDL-10862 add delete_profile_image() function + whitespace + removed redundant function calls + docs --- lib/gdlib.php | 171 +++++++++++++++++++++++++++----------------------- 1 file changed, 93 insertions(+), 78 deletions(-) diff --git a/lib/gdlib.php b/lib/gdlib.php index 85013dcb23..37e53591e5 100644 --- a/lib/gdlib.php +++ b/lib/gdlib.php @@ -1,7 +1,7 @@ gdversion >= 2) { + if (function_exists('ImageCopyResampled') and $CFG->gdversion >= 2) { return ImageCopyResampled($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); } $totalcolors = imagecolorstotal($src_img); - for ($i=0; $i<$totalcolors; $i++) { + for ($i=0; $i<$totalcolors; $i++) { if ($colors = ImageColorsForIndex($src_img, $i)) { ImageColorAllocate($dst_img, $colors['red'], $colors['green'], $colors['blue']); } } - $scaleX = ($src_w - 1) / $dst_w; - $scaleY = ($src_h - 1) / $dst_h; + $scaleX = ($src_w - 1) / $dst_w; + $scaleY = ($src_h - 1) / $dst_h; - $scaleX2 = $scaleX / 2.0; - $scaleY2 = $scaleY / 2.0; + $scaleX2 = $scaleX / 2.0; + $scaleY2 = $scaleY / 2.0; - for ($j = 0; $j < $dst_h; $j++) { - $sY = $j * $scaleY; + for ($j = 0; $j < $dst_h; $j++) { + $sY = $j * $scaleY; - for ($i = 0; $i < $dst_w; $i++) { - $sX = $i * $scaleX; + for ($i = 0; $i < $dst_w; $i++) { + $sX = $i * $scaleX; - $c1 = ImageColorsForIndex($src_img,ImageColorAt($src_img,(int)$sX,(int)$sY+$scaleY2)); - $c2 = ImageColorsForIndex($src_img,ImageColorAt($src_img,(int)$sX,(int)$sY)); - $c3 = ImageColorsForIndex($src_img,ImageColorAt($src_img,(int)$sX+$scaleX2,(int)$sY+$scaleY2)); - $c4 = ImageColorsForIndex($src_img,ImageColorAt($src_img,(int)$sX+$scaleX2,(int)$sY)); + $c1 = ImageColorsForIndex($src_img,ImageColorAt($src_img,(int)$sX,(int)$sY+$scaleY2)); + $c2 = ImageColorsForIndex($src_img,ImageColorAt($src_img,(int)$sX,(int)$sY)); + $c3 = ImageColorsForIndex($src_img,ImageColorAt($src_img,(int)$sX+$scaleX2,(int)$sY+$scaleY2)); + $c4 = ImageColorsForIndex($src_img,ImageColorAt($src_img,(int)$sX+$scaleX2,(int)$sY)); - $red = (int) (($c1['red'] + $c2['red'] + $c3['red'] + $c4['red']) / 4); - $green = (int) (($c1['green'] + $c2['green'] + $c3['green'] + $c4['green']) / 4); - $blue = (int) (($c1['blue'] + $c2['blue'] + $c3['blue'] + $c4['blue']) / 4); + $red = (int) (($c1['red'] + $c2['red'] + $c3['red'] + $c4['red']) / 4); + $green = (int) (($c1['green'] + $c2['green'] + $c3['green'] + $c4['green']) / 4); + $blue = (int) (($c1['blue'] + $c2['blue'] + $c3['blue'] + $c4['blue']) / 4); - $color = ImageColorClosest ($dst_img, $red, $green, $blue); - ImageSetPixel ($dst_img, $i + $dst_x, $j + $dst_y, $color); - } - } + $color = ImageColorClosest ($dst_img, $red, $green, $blue); + ImageSetPixel ($dst_img, $i + $dst_x, $j + $dst_y, $color); + } + } } -/** +/** + * Delete profile images associated with user or group + * @param int $id user or group id + * @param string $dir type of entity - 'groups' or 'users' + * @return boolean success + */ +function delete_profile_image($id, $dir='users') { + global $CFG; + + require_once $CFG->libdir.'/filelib.php'; + $location = $CFG->dataroot .'/'. $dir .'/'. $id; + + if (file_exists($location)) { + return fulldelete($location); + } + + return true; +} + +/** * Given an upload manager with the right settings, this function performs a virus scan, and then scales and crops * it and saves it in the right place to be a "user" or "group" image. * - * @uses $CFG - * @param int $id description? - * @param object $uploadmanager description? - * @param string $dir description? - * @return boolean - * @todo Finish documenting this function + * @param int $id user or group id + * @param object $uploadmanager object referencing the image + * @param string $dir type of entity - groups, users, ... + * @return boolean success */ function save_profile_image($id, $uploadmanager, $dir='users') { -// +// global $CFG; @@ -117,31 +134,31 @@ function save_profile_image($id, $uploadmanager, $dir='users') { $originalfile = $uploadmanager->get_new_filepath(); $imageinfo = GetImageSize($originalfile); - + if (empty($imageinfo)) { if (file_exists($originalfile)) { unlink($originalfile); } return false; } - + $image->width = $imageinfo[0]; $image->height = $imageinfo[1]; $image->type = $imageinfo[2]; switch ($image->type) { - case 1: + case 1: if (function_exists('ImageCreateFromGIF')) { - $im = ImageCreateFromGIF($originalfile); + $im = ImageCreateFromGIF($originalfile); } else { notice('GIF not supported on this server'); unlink($originalfile); return false; } break; - case 2: + case 2: if (function_exists('ImageCreateFromJPEG')) { - $im = ImageCreateFromJPEG($originalfile); + $im = ImageCreateFromJPEG($originalfile); } else { notice('JPEG not supported on this server'); unlink($originalfile); @@ -150,14 +167,14 @@ function save_profile_image($id, $uploadmanager, $dir='users') { break; case 3: if (function_exists('ImageCreateFromPNG')) { - $im = ImageCreateFromPNG($originalfile); + $im = ImageCreateFromPNG($originalfile); } else { notice('PNG not supported on this server'); unlink($originalfile); return false; } break; - default: + default: unlink($originalfile); return false; } @@ -171,7 +188,7 @@ function save_profile_image($id, $uploadmanager, $dir='users') { $im1 = ImageCreate(100,100); $im2 = ImageCreate(35,35); } - + $cx = $image->width / 2; $cy = $image->height / 2; @@ -187,7 +204,7 @@ function save_profile_image($id, $uploadmanager, $dir='users') { if (function_exists('ImageJpeg')) { @touch($CFG->dataroot .'/'. $dir .'/'. $id .'/f1.jpg'); // Helps in Safe mode @touch($CFG->dataroot .'/'. $dir .'/'. $id .'/f2.jpg'); // Helps in Safe mode - if (ImageJpeg($im1, $CFG->dataroot .'/'. $dir .'/'. $id .'/f1.jpg', 90) and + if (ImageJpeg($im1, $CFG->dataroot .'/'. $dir .'/'. $id .'/f1.jpg', 90) and ImageJpeg($im2, $CFG->dataroot .'/'. $dir .'/'. $id .'/f2.jpg', 95) ) { @chmod($CFG->dataroot .'/'. $dir .'/'. $id .'/f1.jpg', 0666); @chmod($CFG->dataroot .'/'. $dir .'/'. $id .'/f2.jpg', 0666); @@ -199,8 +216,8 @@ function save_profile_image($id, $uploadmanager, $dir='users') { return 0; } -/** - * Given a user id this function scales and crops the user images to remove +/** + * Given a user id this function scales and crops the user images to remove * the one pixel black border. * * @uses $CFG @@ -210,7 +227,7 @@ function save_profile_image($id, $uploadmanager, $dir='users') { function upgrade_profile_image($id, $dir='users') { global $CFG; - $im = ImageCreateFromJPEG($CFG->dataroot .'/'. $dir .'/'. $id .'/f1.jpg'); + $im = ImageCreateFromJPEG($CFG->dataroot .'/'. $dir .'/'. $id .'/f1.jpg'); if (function_exists('ImageCreateTrueColor') and $CFG->gdversion >= 2) { $im1 = ImageCreateTrueColor(100,100); @@ -219,46 +236,44 @@ function upgrade_profile_image($id, $dir='users') { $im1 = ImageCreate(100,100); $im2 = ImageCreate(35,35); } - - if (function_exists('ImageCopyResampled') and $CFG->gdversion >= 2) { + + if (function_exists('ImageCopyResampled') and $CFG->gdversion >= 2) { ImageCopyBicubic($im1, $im, 0, 0, 2, 2, 100, 100, 96, 96); } else { imagecopy($im1, $im, 0, 0, 0, 0, 100, 100); - $c = ImageColorsForIndex($im1,ImageColorAt($im1,2,2)); - $color = ImageColorClosest ($im1, $c['red'], $c['green'], $c['blue']); - ImageSetPixel ($im1, 0, 0, $color); - $c = ImageColorsForIndex($im1,ImageColorAt($im1,2,97)); - $color = ImageColorClosest ($im1, $c['red'], $c['green'], $c['blue']); - ImageSetPixel ($im1, 0, 99, $color); - $c = ImageColorsForIndex($im1,ImageColorAt($im1,97,2)); - $color = ImageColorClosest ($im1, $c['red'], $c['green'], $c['blue']); - ImageSetPixel ($im1, 99, 0, $color); - $c = ImageColorsForIndex($im1,ImageColorAt($im1,97,97)); - $color = ImageColorClosest ($im1, $c['red'], $c['green'], $c['blue']); - ImageSetPixel ($im1, 99, 99, $color); - for ($x = 1; $x < 99; $x++) { - $c1 = ImageColorsForIndex($im1,ImageColorAt($im,$x,1)); - $color = ImageColorClosest ($im, $c1['red'], $c1['green'], $c1['blue']); - ImageSetPixel ($im1, $x, 0, $color); - $c2 = ImageColorsForIndex($im1,ImageColorAt($im1,$x,98)); - $color = ImageColorClosest ($im1, $red, $green, $blue); - $color = ImageColorClosest ($im, $c2['red'], $c2['green'], $c2['blue']); - ImageSetPixel ($im1, $x, 99, $color); - } - for ($y = 1; $y < 99; $y++) { - $c3 = ImageColorsForIndex($im1,ImageColorAt($im, 1, $y)); - $color = ImageColorClosest ($im, $red, $green, $blue); - $color = ImageColorClosest ($im, $c3['red'], $c3['green'], $c3['blue']); - ImageSetPixel ($im1, 0, $y, $color); - $c4 = ImageColorsForIndex($im1,ImageColorAt($im1, 98, $y)); - $color = ImageColorClosest ($im, $c4['red'], $c4['green'], $c4['blue']); - ImageSetPixel ($im1, 99, $y, $color); - } - } + $c = ImageColorsForIndex($im1,ImageColorAt($im1,2,2)); + $color = ImageColorClosest ($im1, $c['red'], $c['green'], $c['blue']); + ImageSetPixel ($im1, 0, 0, $color); + $c = ImageColorsForIndex($im1,ImageColorAt($im1,2,97)); + $color = ImageColorClosest ($im1, $c['red'], $c['green'], $c['blue']); + ImageSetPixel ($im1, 0, 99, $color); + $c = ImageColorsForIndex($im1,ImageColorAt($im1,97,2)); + $color = ImageColorClosest ($im1, $c['red'], $c['green'], $c['blue']); + ImageSetPixel ($im1, 99, 0, $color); + $c = ImageColorsForIndex($im1,ImageColorAt($im1,97,97)); + $color = ImageColorClosest ($im1, $c['red'], $c['green'], $c['blue']); + ImageSetPixel ($im1, 99, 99, $color); + for ($x = 1; $x < 99; $x++) { + $c1 = ImageColorsForIndex($im1,ImageColorAt($im,$x,1)); + $color = ImageColorClosest ($im, $c1['red'], $c1['green'], $c1['blue']); + ImageSetPixel ($im1, $x, 0, $color); + $c2 = ImageColorsForIndex($im1,ImageColorAt($im1,$x,98)); + $color = ImageColorClosest ($im, $c2['red'], $c2['green'], $c2['blue']); + ImageSetPixel ($im1, $x, 99, $color); + } + for ($y = 1; $y < 99; $y++) { + $c3 = ImageColorsForIndex($im1,ImageColorAt($im, 1, $y)); + $color = ImageColorClosest ($im, $c3['red'], $c3['green'], $c3['blue']); + ImageSetPixel ($im1, 0, $y, $color); + $c4 = ImageColorsForIndex($im1,ImageColorAt($im1, 98, $y)); + $color = ImageColorClosest ($im, $c4['red'], $c4['green'], $c4['blue']); + ImageSetPixel ($im1, 99, $y, $color); + } + } ImageCopyBicubic($im2, $im, 0, 0, 2, 2, 35, 35, 96, 96); if (function_exists('ImageJpeg')) { - if (ImageJpeg($im1, $CFG->dataroot .'/'. $dir .'/'. $id .'/f1.jpg', 90) and + if (ImageJpeg($im1, $CFG->dataroot .'/'. $dir .'/'. $id .'/f1.jpg', 90) and ImageJpeg($im2, $CFG->dataroot .'/'. $dir .'/'. $id .'/f2.jpg', 95) ) { @chmod($CFG->dataroot .'/'. $dir .'/'. $id .'/f1.jpg', 0666); @chmod($CFG->dataroot .'/'. $dir .'/'. $id .'/f2.jpg', 0666); -- 2.39.5