%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/space/widgets/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/space/widgets/Image.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2017 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\modules\space\widgets;
use humhub\modules\ui\widgets\BaseImage;
use yii\bootstrap\Html;
/**
* Return space image or acronym
*/
class Image extends BaseImage
{
/**
* @var \humhub\modules\space\models\Space
*/
public $space;
/**
* @var int number of characters used in the acronym
*/
public $acronymCount = 2;
/**
* @inheritdoc
*/
public function run()
{
if (!isset($this->linkOptions['href'])) {
$this->linkOptions['href'] = $this->space->getUrl();
}
if ($this->space->color != null) {
$color = Html::encode($this->space->color);
} else {
$color = '#d7d7d7';
}
if (!isset($this->htmlOptions['class'])) {
$this->htmlOptions['class'] = '';
}
if (!isset($this->htmlOptions['style'])) {
$this->htmlOptions['style'] = '';
}
$acronymHtmlOptions = $this->htmlOptions;
$imageHtmlOptions = $this->htmlOptions;
$acronymHtmlOptions['class'] .= " space-profile-acronym-" . $this->space->id . " space-acronym";
$acronymHtmlOptions['style'] .= " background-color: " . $color . "; width: " . $this->width . "px; height: " . $this->height . "px;";
$acronymHtmlOptions['style'] .= " " . $this->getDynamicStyles($this->width);
$acronymHtmlOptions['data-contentcontainer-id'] = $this->space->contentcontainer_id;
$imageHtmlOptions['class'] .= " space-profile-image-" . $this->space->id . " img-rounded profile-user-photo";
$imageHtmlOptions['style'] .= " width: " . $this->width . "px; height: " . $this->height . "px";
$imageHtmlOptions['alt'] = Html::encode($this->space->name);
$imageHtmlOptions['data-contentcontainer-id'] = $this->space->contentcontainer_id;
if ($this->showTooltip) {
$this->linkOptions['data-toggle'] = 'tooltip';
$this->linkOptions['data-placement'] = 'top';
$this->linkOptions['data-html'] = 'true';
$this->linkOptions['data-original-title'] = ($this->tooltipText) ? $this->tooltipText : Html::encode($this->space->name);
Html::addCssClass($this->linkOptions, 'tt');
}
$defaultImage = (basename($this->space->getProfileImage()->getUrl()) == 'default_space.jpg' || basename($this->space->getProfileImage()->getUrl()) == 'default_space.jpg?cacheId=0') ? true : false;
if (!$defaultImage) {
$acronymHtmlOptions['class'] .= " hidden";
} else {
$imageHtmlOptions['class'] .= " hidden";
}
return $this->render('@space/widgets/views/image', [
'space' => $this->space,
'acronym' => $this->getAcronym(),
'link' => $this->link,
'linkOptions' => $this->linkOptions,
'acronymHtmlOptions' => $acronymHtmlOptions,
'imageHtmlOptions' => $imageHtmlOptions
]);
}
protected function getAcronym()
{
$acronym = '';
$spaceName = preg_replace('/[^\p{L}\d\s]+/u', '', $this->space->name);
foreach (explode(' ', $spaceName) as $word) {
if (mb_strlen($word) >= 1) {
$acronym .= mb_substr($word, 0, 1);
}
}
return mb_substr(mb_strtoupper($acronym), 0, $this->acronymCount);
}
protected function getDynamicStyles($elementWidth)
{
$fontSize = 44 * $elementWidth / 100;
$padding = 18 * $elementWidth / 100;
$borderRadius = 4;
if ($elementWidth < 140 && $elementWidth > 40) {
$borderRadius = 3;
}
if ($elementWidth < 35) {
$borderRadius = 2;
}
return "font-size: " . $fontSize . "px; padding: " . $padding . "px 0; border-radius: " . $borderRadius . "px;";
}
}