diff --git a/File.class.php b/File.class.php new file mode 100644 index 0000000..e44028b --- /dev/null +++ b/File.class.php @@ -0,0 +1,53 @@ + $attribute_value) { + if (property_exists(__CLASS__, $attribute_name)) { + $instance->{$attribute_name} = $attribute_value; + } + } + return $instance; + } + + /** + * @return string + */ + public function getWebName() + { + return $this->path . '/' . $this->filename; + } + + public function __toString() + { + return self::toString($this); + } + + private static function toString($class) + { + $data = array(); + foreach ($class as $attribute_name => $attribute_value) { + $data[$attribute_name] = $attribute_value; + } + return json_encode($data); + } +} \ No newline at end of file diff --git a/Image.class.php b/Image.class.php index 6a75a1a..b4093d5 100644 --- a/Image.class.php +++ b/Image.class.php @@ -1,18 +1,15 @@ $attribute_value) { - if (property_exists(__CLASS__, $attribute_name)) { - $instance->{$attribute_name} = $attribute_value; - } - } - $instance->_is_empty = false; - return $instance; - } - - /** - * @return string - */ - public function getWebName() - { - return $this->path . '/' . $this->filename; - } - - /** * @param $size string * @return Image */ public function getVariant($size) { if (!array_key_exists($size, $this->variants)) { - $this->variants[$size] = new Image; + $this->variants[$size] = new ImageVariant; } else { if (!is_object($this->variants[$size])) { - $this->variants[$size] = self::getInstance($this->variants[$size]); + $this->variants[$size] = parent::getInstance($this->variants[$size]); } } return $this->variants[$size]; - - } - - public function getIsEmpty() - { - return (bool) $this->_is_empty; - } - - public function setIsNotEmpty() - { - $this->_is_empty = false; - } - - public function __toString() - { - $data = array(); - foreach ($this as $attribute_name => $attribute_value) { - $data[$attribute_name] = $attribute_value; - } - return json_encode($data); } } \ No newline at end of file diff --git a/ImageVariant.class.php b/ImageVariant.class.php new file mode 100644 index 0000000..d1f5023 --- /dev/null +++ b/ImageVariant.class.php @@ -0,0 +1,9 @@ +original_filename = $file['name']; - $image->type = $file['type']; $greagwar_image = self::getGreagwarImage($file['tmp_name']); self::saveImage($image, $greagwar_image); if ($force_create_variants) { @@ -40,16 +39,17 @@ abstract class Upload */ public static function saveImage($image, $greagwar_image, $width = null, $height = null, $crop = true) { + $greagwar_image = clone($greagwar_image); if ($width || $height) { $greagwar_image->resize($width, $height, 0xffffff, false, false, $crop); } - $file_path = $greagwar_image->cacheFile($greagwar_image->guessType(), 87, true); + $image->type = $greagwar_image->guessType(); + $file_path = $greagwar_image->cacheFile($image->type, 87, true); $image->size = filesize($file_path); $path_parts = pathinfo($file_path); $image->path = preg_replace('#^' . self::PATH_ROOT . '/#', '', $path_parts['dirname']); $image->filename = $path_parts['basename']; $image->width = $greagwar_image->width(); $image->height = $greagwar_image->height(); - $image->setIsNotEmpty(); } } \ No newline at end of file diff --git a/UploadHelper.class.php b/UploadHelper.class.php index 4b69a66..3251dd7 100644 --- a/UploadHelper.class.php +++ b/UploadHelper.class.php @@ -2,26 +2,41 @@ abstract class UploadHelper { + /** + * @param $proportion + * @param $file_path + * @return bool + * @throws ErrorException + */ public static function imageCompareAspectRatio($proportion, $file_path) { - if (file_exists($file_path) && is_readable($file_path) && is_file($file_path)) { - if ($imagesize = getimagesize($file_path)) { - $proprtion_parts = explode('x', $proportion); - if ($proprtion_parts[0] / $proprtion_parts[1] === $imagesize[0] / $imagesize[1]) { - return true; - } + if (!(file_exists($file_path) && is_readable($file_path) && is_file($file_path))) { + throw new ErrorException('Unable to read file "' . $file_path . '".'); + } + if ($imagesize = getimagesize($file_path)) { + $proprtion_parts = explode('x', $proportion); + if ($proprtion_parts[0] / $proprtion_parts[1] === $imagesize[0] / $imagesize[1]) { + return true; } } return false; } + + /** + * @param $size + * @param $file_path + * @return bool + * @throws ErrorException + */ public static function imageCompareSize($size, $file_path) { - if (file_exists($file_path) && is_readable($file_path) && is_file($file_path)) { - if ($imagesize = getimagesize($file_path)) { - $size_parts = explode('x', $size); - if ($imagesize[0] == $size_parts[0] && $imagesize[1] == $size_parts[1]) { - return true; - } + if (!(file_exists($file_path) && is_readable($file_path) && is_file($file_path))) { + throw new ErrorException('Unable to read file "' . $file_path . '".'); + } + if ($imagesize = getimagesize($file_path)) { + $size_parts = explode('x', $size); + if ($imagesize[0] == $size_parts[0] && $imagesize[1] == $size_parts[1]) { + return true; } } return false;