Current File : /home/resuelf/www/wp-content/plugins/starbox/models/UserSettings.php |
<?php defined('ABSPATH') || die('Cheatin\' uh?'); ?>
<?php
class ABH_Models_UserSettings {
/**
* Add the image for gravatar
*
* @param string $file
* @return array [name (the name of the file), image (the path of the image), message (the returned message)]
*
*/
public function addImage($file) {
$out = array();
add_filter('upload_dir', function ($upload_dir) {
$upload_dir['path'] = rtrim(_ABH_GRAVATAR_DIR_, '/');
$upload_dir['url'] = rtrim(_ABH_GRAVATAR_URL_, '/');
$upload_dir['subdir'] = '';
$upload_dir['basedir'] = $upload_dir['path'];
$upload_dir['baseurl'] = $upload_dir['url'];
return $upload_dir;
});
$movefile = wp_handle_upload($file, array('action' => 'update'));
if ($movefile && !isset($movefile['error'])) {
//print_R($movefile);
$out['name'] = strtolower(basename($movefile['file']));
$out['gravatar'] = $movefile['file'];
$img = new Model_ABH_Image();
/* Transform the image into icon */
$img->openImage($out['gravatar']);
$img->resizeImage(ABH_IMAGESIZE, ABH_IMAGESIZE);
$img->saveImage();
if(!$img->isError()) {
copy($img->image, strtolower($out['gravatar']));
}
$out['message'] = __("The gravatar has been updated.", _ABH_PLUGIN_NAME_);
} else {
ABH_Classes_Error::setError($movefile['error']);
$out['message'] = $movefile['error'];
}
return $out;
}
}
/**
* Upload the image to the server
*/
class Model_ABH_Image {
var $imageType;
var $imgH;
var $image;
var $quality = 100;
var $error = false;
public function isError(){
return $this->error;
}
public function openImage($image) {
$this->image = $image;
if (!file_exists($image)) {
$this->error = true;
return;
}
$imageData = @getimagesize($image);
if (!$imageData) {
$this->error = true;
} else {
$this->imageType = @image_type_to_mime_type($imageData[2]);
switch ($this->imageType) {
case 'image/gif':
if (function_exists('imagecreatefromgif')) {
$this->imgH = imagecreatefromgif($image);
imagealphablending($this->imgH, true);
}
break;
case 'image/png':
if (function_exists('imagecreatefrompng')) {
$this->imgH = imagecreatefrompng($image);
imagealphablending($this->imgH, true);
}
break;
case 'image/jpg':
case 'image/jpeg':
if (function_exists('imagecreatefromjpeg')) {
$this->imgH = imagecreatefromjpeg($image);
}
break;
// CHANGED EXCEPTION TO RETURN FALSE
default:
$this->error = true;
}
}
}
public function saveImage() {
switch ($this->imageType) {
case 'image/jpg':
case 'image/jpeg':
if (function_exists('imagejpeg')) {
return @imagejpeg($this->imgH, $this->image, $this->quality);
}
break;
case 'image/gif':
if (function_exists('imagegif')) {
return @imagegif($this->imgH, $this->image);
}
break;
case 'image/png':
if (function_exists('imagepng')) {
return @imagepng($this->imgH, $this->image);
}
break;
default:
if (function_exists('imagejpeg')) {
return @imagejpeg($this->imgH, $this->image);
}
}
if (function_exists('imagedestroy')) {
@imagedestroy($this->imgH);
}
}
public function resizeImage($maxwidth, $maxheight, $preserveAspect = true) {
if (!function_exists('imagesx')) {
$this->error = true;
return;
}
$width = @imagesx($this->imgH);
$height = @imagesy($this->imgH);
if ($width > $maxwidth && $height > $maxheight) {
$oldprop = round($width / $height, 2);
$newprop = round($maxwidth / $maxheight, 2);
$preserveAspectx = round($width / $maxwidth, 2);
$preserveAspecty = round($height / $maxheight, 2);
if ($preserveAspect) {
if ($preserveAspectx < $preserveAspecty) {
$newwidth = $width / ($height / $maxheight);
$newheight = $maxheight;
} else {
$newwidth = $maxwidth;
$newheight = $height / ($width / $maxwidth);
}
$dest = @imagecreatetruecolor($newwidth, $newheight);
$this->applyTransparency($dest);
// CHANGED EXCEPTION TO RETURN FALSE
if (@imagecopyresampled($dest, $this->imgH, 0, 0, 0, 0, $newwidth, $newheight, $width, $height) == false)
$this->error = true;
} else {
$dest = @imagecreatetruecolor($maxwidth, $maxheight);
$this->applyTransparency($dest);
// CHANGED EXCEPTION TO RETURN FALSE
if (@imagecopyresampled($dest, $this->imgH, 0, 0, 0, 0, $maxwidth, $maxheight, $width, $height) == false)
$this->error = true;
}
$this->imgH = $dest;
}
}
public function applyTransparency($imgH) {
if ($this->imageType == 'image/png' || $this->imageType == 'image/gif') {
imagealphablending($imgH, false);
$col = imagecolorallocatealpha($imgH, 255, 255, 255, 127);
imagefilledrectangle($imgH, 0, 0, 485, 500, $col);
imagealphablending($imgH, true);
}
}
public function checkFunctions() {
return function_exists('gd_info');
}
}