You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ImagesBusiness.php 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace App\Http\Business;
  3. use App\Http\DBO\ImageUploadDbo;
  4. use Exception;
  5. use Luticate\Auth\DBO\LuticateUsersDbo;
  6. use Luticate\Utils\LuBusiness;
  7. use App\Http\DataAccess\ImagesDataAccess;
  8. use App\Http\DBO\ImagesDbo;
  9. class ImagesBusiness extends LuBusiness {
  10. const IMAGES_PATH = "../storage/images/";
  11. const IMAGES_FORMAT = "jpeg";
  12. protected static function getDataAccess()
  13. {
  14. return new ImagesDataAccess();
  15. }
  16. public static function generateImagePath(ImageUploadDbo $image, LuticateUsersDbo $_user)
  17. {
  18. return self::IMAGES_PATH . $_user->getId() . "-" . hash("sha256", $image->getName()) .
  19. "-" . time() . "." . self::IMAGES_FORMAT;
  20. }
  21. public static function upload(ImageUploadDbo $image, LuticateUsersDbo $_user)
  22. {
  23. $path = self::generateImagePath($image, $_user);
  24. $dbo = new ImagesDbo();
  25. $dbo->setUserId($_user->getId());
  26. $dbo->setPath($path);
  27. $image->getImage()->scaleImage(420, 420, true);
  28. $image->getImage()->setImageFormat(self::IMAGES_FORMAT);
  29. try
  30. {
  31. $image->getImage()->writeImage($path);
  32. return ImagesDataAccess::addId($dbo);
  33. }
  34. catch (Exception $e)
  35. {
  36. try
  37. {
  38. unlink($path);
  39. }
  40. catch (Exception $e)
  41. {
  42. }
  43. abort(500, "Failed to save image");
  44. }
  45. return null;
  46. }
  47. public static function del($image_id, LuticateUsersDbo $_user)
  48. {
  49. $imageDbo = self::getById($image_id);
  50. if ($imageDbo->getUserId() != $_user->getId()) {
  51. self::unauthorized("You do not own this image");
  52. }
  53. return true;
  54. }
  55. }