%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/admin/widgets/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/admin/widgets/Modules.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2021 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\admin\widgets; use humhub\components\Widget; use humhub\modules\marketplace\Module; use Yii; use yii\helpers\ArrayHelper; /** * Modules displays the modules list * * @since 1.11 * @author Luke */ class Modules extends Widget { /** * @var array */ public $groups; /** * @inheritdoc */ public function init() { $this->initDefaultGroups(); parent::init(); ArrayHelper::multisort($this->groups, 'sortOrder'); } private function initDefaultGroups() { /* @var Module $marketplaceModule */ $marketplaceModule = Yii::$app->getModule('marketplace'); if ($marketplaceModule->isFilteredBySingleTag('not_installed')) { return; } $installedModules = Yii::$app->moduleManager->getModules(); ArrayHelper::multisort($installedModules, 'isActivated', SORT_DESC); $this->addGroup('installed', [ 'title' => Yii::t('AdminModule.modules', 'Installed'), 'modules' => Yii::$app->moduleManager->filterModules($installedModules), 'count' => count($installedModules), 'noModulesMessage' => Yii::t('AdminModule.base', 'No modules installed yet. Install some to enhance the functionality!'), 'sortOrder' => 100, ]); } public function addGroup(string $groupType, array $group) { $this->groups[$groupType] = $group; } /** * @inheritdoc */ public function run() { $modules = ''; $alwaysVisibleGroup = 'availableUpdates'; $displaySingleGroup = false; $emptyGroupCount = 0; foreach ($this->groups as $groupType => $group) { if ($groupType !== $alwaysVisibleGroup && empty($group['modules'])) { $displaySingleGroup = true; $emptyGroupCount++; } } $singleGroupPrinted = false; foreach ($this->groups as $groupType => $group) { if ($singleGroupPrinted) { continue; } if (empty($group['count']) || ($emptyGroupCount === 1 && empty($group['modules']))) { continue; } if ($displaySingleGroup && $groupType !== $alwaysVisibleGroup) { $singleGroupPrinted = true; if (empty($group['modules'])) { $group['title'] = false; } } $group['type'] = $groupType; $renderedGroup = $this->render('moduleGroup', $group); if (isset($group['groupTemplate'])) { $renderedGroup = str_replace('{group}', $renderedGroup, $group['groupTemplate']); } $modules .= $renderedGroup; } return $modules; } }