123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <?php
- ApplicationSettings::RegisterDefaultSetting("images", "upload_location", "images/uploads");
- ApplicationSettings::RegisterDefaultSetting("images", "thumbnail_width", "480");
- ApplicationSettings::RegisterDefaultSetting("images", "thumbnail_height", "360");
- if (!file_exists(ApplicationSettings::GetSetting("images", "upload_location")))
- mkdir(ApplicationSettings::GetSetting("images", "upload_location"));
- class Image extends DBObjectAutoCreate {
- public $Path,$ThumbnailPath;
- private $Filename,$TempFile;
-
- public static function IsValidType($ext){
- // use a switch because it's quicker than a loop
- switch (strtolower($ext)){
- case "bmp":
- case "dib":
- case "jpeg":
- case "jpg":
- case "jpe":
- case "jfif":
- case "gif":
- case "tif":
- case "tiff":
- case "png":
- case "ico":
- return true;
- default:
- return false;
- }
- }
-
- public static function GetImagesByAlbum($albumId) {
- self::CreateTable("images");
- $images=array();
- $prep=self::$PDO->prepare("SELECT image_id FROM images WHERE album_id=? AND image_deleted=0");
- $prep->execute(array($albumId));
- while ($imageId=$prep->fetchColumn())
- $images[]=new Image($imageId);
- return $images;
- }
-
- public function __construct($id=0,$tempFile="") {
- if (!is_numeric($id)){
- $this->Filename=$id;
- $this->TempFile=$tempFile;
- $id=0;
- }
- parent::__construct("images", "image_id", $id);
-
- if ($this->ImageId)
- $this->CalculatePaths();
- }
-
- private function CalculatePaths(){
- $dir=ApplicationSettings::GetSetting("images", "upload_location");
- $info=pathinfo($this->ImageFilename);
- $this->Path=$dir.'/'.$this->ImageFilename;
- $this->ThumbnailPath=$dir.'/'.$info['filename'].'.thumbnail.'.$info['extension'];
- }
- private function MakeFileName() {
- return $this->ImageId."_".Utils::MakeStringUrlSafe($this->Filename);
- }
-
- public function Save() {
- $newSave=!$this->ImageId;
- parent::Save();
- if ($newSave && $this->ImageId){
- $this->ImageFilename=$this->MakeFileName();
- $this->CalculatePaths();
- if(!move_uploaded_file($this->TempFile, $this->Path))
- throw new Exception("Unable to move uploaded file: ".$this->Path.', '.$this->TempFile);
-
- if (class_exists("Imagick")){
- $thumb=new Imagick($this->Path);
- $height=ApplicationSettings::GetSetting("images", "thumbnail_height");
- $width=ApplicationSettings::GetSetting("images", "thumbnail_width");
- $thumb->scaleImage(0,$height);
- $thumb->scaleImage($width,0);
- $thumb->writeImage($this->ThumbnailPath);
- $thumb->clear();
- $thumb->destroy();
- } else
- copy($this->Path, $this->ThumbnailPath);
-
- parent::Save();
- }
- }
- }
|