%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/libs/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/libs/LogoImage.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2017 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\libs; use Yii; use yii\base\ErrorException; use yii\base\Exception; use yii\imagine\Image; use yii\web\UploadedFile; use yii\helpers\Url; use yii\helpers\FileHelper; /** * LogoImage */ class LogoImage { /** * Sets a new icon for the installation. * @param UploadedFile|null $file */ public static function set(UploadedFile $file = null) { static::deleteFiles(); if ($file !== null) { try { FileHelper::createDirectory(Yii::getAlias('@webroot/uploads/logo_image/')); } catch (Exception $e) { } Image::getImagine()->open($file->tempName)->save(Yii::getAlias('@webroot/uploads/logo_image/logo.png')); } } /** * Returns the URL of the logo image in desired maximum sizes (width and/or height) * * @param int|null $maxWidth the maximum width in pixel * @param int|null $maxHeight the maximum width in pixel * @param bool $autoResize automatically resize to given size if not available yet * @return string|null */ public static function getUrl($maxWidth = null, $maxHeight = null, $autoResize = true) { if ($maxWidth === null) { // Will change in future! $maxWidth = 600; } if ($maxHeight === null) { // Will change in future! $maxHeight = 80; } $file = self::getFile($maxWidth, $maxHeight); if (file_exists($file)) { // Workaround for absolute urls in console applications (Cron) $base = ''; if (Yii::$app->request->isConsoleRequest) { $base = Url::base(true); } return $base . Yii::getAlias(Yii::$app->assetManager->baseUrl) . '/logo/' . static::buildFileName($maxWidth, $maxHeight) . '?v=' . filemtime($file); } elseif (static::hasImage() && $autoResize) { try { FileHelper::createDirectory(Yii::getAlias(Yii::$app->assetManager->basePath . DIRECTORY_SEPARATOR . 'logo')); } catch (Exception $e) { } $image = Image::getImagine()->open(static::getOriginalFile()); if ($image->getSize()->getHeight() > $maxHeight) { $image->resize($image->getSize()->heighten($maxHeight)); } if ($image->getSize()->getWidth() > $maxWidth) { $image->resize($image->getSize()->widen($maxWidth)); } $image->save($file); return static::getUrl($maxWidth, $maxHeight, false); } return null; } /** * Indicates there is a logo image * * @return Boolean is there a logo image */ public static function hasImage() { return file_exists(static::getOriginalFile()); } private static function getFile($maxWidth, $maxHeight) { return Yii::getAlias(Yii::$app->assetManager->basePath . DIRECTORY_SEPARATOR . 'logo' . DIRECTORY_SEPARATOR . static::buildFileName($maxWidth, $maxHeight)); } private static function buildFileName($maxWidth, $maxHeight) { $fileName = $maxWidth . 'x' . $maxHeight . '.png'; return $fileName; } private static function getOriginalFile() { return Yii::getAlias('@webroot/uploads/logo_image/logo.png'); } private static function deleteFiles() { // Delete assets folder if exists try { \humhub\modules\file\libs\FileHelper::removeDirectory(Yii::getAlias(Yii::$app->assetManager->basePath . DIRECTORY_SEPARATOR . 'logo')); } catch (ErrorException $e) { Yii::error($e, 'admin'); } // Delete uploads folder if exists try { FileHelper::removeDirectory(Yii::getAlias('@webroot/uploads/logo_image/')); } catch (ErrorException $e) { Yii::error($e, 'admin'); } } }