]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-10862 add delete_profile_image() function + whitespace + removed redundant functi...
authorskodak <skodak>
Wed, 15 Aug 2007 14:00:35 +0000 (14:00 +0000)
committerskodak <skodak>
Wed, 15 Aug 2007 14:00:35 +0000 (14:00 +0000)
lib/gdlib.php

index 85013dcb23209d09c8114591b2d29aaf5e628088..37e53591e5fa339cce6c3c3dbbec5b9777506690 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * gdlib.php - Collection of routines in Moodle related to 
+ * gdlib.php - Collection of routines in Moodle related to
  * processing images using GD
  *
  * @author ?
@@ -10,7 +10,7 @@
  * @package moodlecore
  */
 
-/** 
+/**
  * short description (optional)
  *
  * long description
@@ -32,58 +32,75 @@ function ImageCopyBicubic ($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $
 
     global $CFG;
 
-    if (function_exists('ImageCopyResampled') and $CFG->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);