|
|
|
@ -3114,9 +3114,10 @@ class CourseManager |
|
|
|
|
* @param string Course code |
|
|
|
|
* @param string File name |
|
|
|
|
* @param string The full system name of the image from which course picture will be created. |
|
|
|
|
* @param string $cropParameters Optional string that contents "x,y,width,height" of a cropped image format |
|
|
|
|
* @return bool Returns the resulting. In case of internal error or negative validation returns FALSE. |
|
|
|
|
*/ |
|
|
|
|
public static function update_course_picture($course_code, $filename, $source_file = null) |
|
|
|
|
public static function update_course_picture($course_code, $filename, $source_file = null, $cropParameters = null) |
|
|
|
|
{ |
|
|
|
|
$course_info = api_get_course_info($course_code); |
|
|
|
|
// course path |
|
|
|
@ -3132,18 +3133,20 @@ class CourseManager |
|
|
|
|
unlink($course_medium_image); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$my_course_image = new Image($source_file); |
|
|
|
|
$result = $my_course_image->send_image($course_image, -1, 'png'); |
|
|
|
|
// Resize image to 100x85 (should be 85x85 but 100x85 visually gives |
|
|
|
|
// better results for most images people put as course icon) |
|
|
|
|
if ($result) { |
|
|
|
|
$medium = new Image($course_image); |
|
|
|
|
//$picture_infos = $medium->get_image_size(); |
|
|
|
|
$medium->resize(100, 85, 0, false); |
|
|
|
|
$medium->send_image($store_path . '/course-pic85x85.png', -1, 'png'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $result; |
|
|
|
|
//Crop the image to adjust 4:3 ratio |
|
|
|
|
$croppedImage = self::crop_image($source_file, $cropParameters); |
|
|
|
|
$croppedPath = $croppedImage->image_wrapper->path; |
|
|
|
|
|
|
|
|
|
//Resize the images in two formats |
|
|
|
|
$medium = self::resize_picture($croppedPath, 85); |
|
|
|
|
$normal = self::resize_picture($croppedPath, 300); |
|
|
|
|
|
|
|
|
|
$medium->send_image($course_medium_image, -1, 'png'); |
|
|
|
|
$result = $normal->send_image($course_image, -1, 'png'); |
|
|
|
|
$result = $medium && $medium->send_image($course_medium_image, -1, 'png') && |
|
|
|
|
$normal && $normal->send_image($course_image, -1, 'png'); |
|
|
|
|
|
|
|
|
|
return $result ? $result : false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -5375,6 +5378,67 @@ class CourseManager |
|
|
|
|
|
|
|
|
|
return $send_to; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Resize a picture |
|
|
|
|
* |
|
|
|
|
* @param string file picture |
|
|
|
|
* @param int size in pixels |
|
|
|
|
* @todo move this function somewhere else image.lib? |
|
|
|
|
* @return obj image object |
|
|
|
|
*/ |
|
|
|
|
public static function resize_picture($file, $max_size_for_picture) |
|
|
|
|
{ |
|
|
|
|
$temp = false; |
|
|
|
|
if (file_exists($file)) { |
|
|
|
|
$temp = new Image($file); |
|
|
|
|
$image_size = $temp->get_image_size($file); |
|
|
|
|
$width = $image_size['width']; |
|
|
|
|
$height = $image_size['height']; |
|
|
|
|
if ($width >= $height) { |
|
|
|
|
if ($width >= $max_size_for_picture) { |
|
|
|
|
// scale height |
|
|
|
|
$new_height = round($height * ($max_size_for_picture / $width)); |
|
|
|
|
$temp->resize($max_size_for_picture, $new_height, 0); |
|
|
|
|
} |
|
|
|
|
} else { // height > $width |
|
|
|
|
if ($height >= $max_size_for_picture) { |
|
|
|
|
// scale width |
|
|
|
|
$new_width = round($width * ($max_size_for_picture / $height)); |
|
|
|
|
$temp->resize($new_width, $max_size_for_picture, 0); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return $temp; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Crop a Image |
|
|
|
|
* |
|
|
|
|
* @author José Loguercio <jose.loguercio@beeznest.com> |
|
|
|
|
* @param string file picture |
|
|
|
|
* @param string crop Parameters (x, y, width, height) |
|
|
|
|
* @return obj image object |
|
|
|
|
*/ |
|
|
|
|
public static function crop_image($file, $cropParameters) |
|
|
|
|
{ |
|
|
|
|
$image = false; |
|
|
|
|
if (file_exists($file)) { |
|
|
|
|
$image = new Image($file); |
|
|
|
|
$image_size = $image->get_image_size($file); |
|
|
|
|
$src_width = $image_size['width']; |
|
|
|
|
$src_height = $image_size['height']; |
|
|
|
|
$cropParameters = explode(",", $cropParameters); |
|
|
|
|
$x = intval($cropParameters[0]); |
|
|
|
|
$y = intval($cropParameters[1]); |
|
|
|
|
$width = intval($cropParameters[2]); |
|
|
|
|
$height = intval($cropParameters[3]); |
|
|
|
|
|
|
|
|
|
$image->crop($x, $y, $width, $height, $src_width, $src_height); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $image; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* this function shows the form for sending a message to a specific group or user. |
|
|
|
|