<?php namespace common\helpers; class Image { const DIR_UPLOADS = 'uploads'; const THUMBNAIL_SMALL = 'small'; const THUMBNAIL_MEDIUM = 'medium'; const THUMBNAIL_BIG = 'big'; public static function getThumbnailSmall(string $filenameOriginal, bool $absoluteUrl = false) { return self::getThumbnail($filenameOriginal, self::THUMBNAIL_SMALL, $absoluteUrl); } public static function getThumbnailMedium(string $filenameOriginal, bool $absoluteUrl = false) { return self::getThumbnail($filenameOriginal, self::THUMBNAIL_MEDIUM, $absoluteUrl); } public static function getThumbnailBig(string $filenameOriginal, bool $absoluteUrl = false) { return self::getThumbnail($filenameOriginal, self::THUMBNAIL_BIG, $absoluteUrl); } public static function getThumbnail(string $filenameOriginal, string $thumbnail = self::THUMBNAIL_MEDIUM, bool $absoluteUrl = false) { $basePath = self::getBasePath($absoluteUrl); $thumbnailFilename = self::getThumbnailFilename($filenameOriginal, $thumbnail); $thumbnailPath = $basePath . $thumbnailFilename; $originalPath = $basePath . $filenameOriginal; $defaultImagePath = $basePath . 'default.jpg'; if(self::isPhotoExist($thumbnailFilename)) { return $thumbnailPath; } if(self::isPhotoExist($filenameOriginal)) { return $originalPath; } return $defaultImagePath; } public static function getBasePath(bool $absoluteUrl = false): string { $absoluteUrlPrepend = ''; if($absoluteUrl) { $absoluteUrlPrepend = \Yii::$app->urlManagerProducer->getHostInfo(); } return $absoluteUrlPrepend . \Yii::$app->urlManagerProducer->baseUrl.'/'.self::DIR_UPLOADS.'/'; } public static function getThumbnailFilename(string $filename, string $thumbnail = self::THUMBNAIL_MEDIUM) { $filenameArray = explode('.', $filename); return $filenameArray[0].'-'.$thumbnail.'.'.$filenameArray[1]; } public static function isPhotoExist(string $filename): bool { return file_exists(\Yii::getAlias('@producer').'/web/'.self::DIR_UPLOADS.'/'.$filename); } }