%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/user/widgets/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/user/widgets/AuthChoice.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2016 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\user\widgets; use Yii; use yii\authclient\ClientInterface; use yii\bootstrap\Html; class AuthChoice extends \yii\authclient\widgets\AuthChoice { /** * Used to retrieve the auth clients in a static way * @var type */ private static $authclientCollection = 'authClientCollection'; /** * @var int number of clients to show without folding */ public $maxShowClients = 2; /** * @var boolean show auth button colors */ public $showButtonColors = false; /** * @inheritdoc */ public $popupMode = false; /** * @var ClientInterface[] auth providers list. */ private $_clients; /** * @param ClientInterface[] $clients auth providers */ public function setClients(array $clients) { $this->_clients = $clients; } /** * @return ClientInterface[] auth providers */ public function getClients() { if ($this->_clients === null) { $this->_clients = self::filterClients($this->defaultClients()); } return $this->_clients; } /** * Returns default auth clients list. * @return ClientInterface[] auth clients list. */ public static function hasClients() { $authClients = self::filterClients(Yii::$app->get(self::$authclientCollection)->getClients()); return count($authClients) > 0; } /** * Filters out clients which need login form * @param type $clients * @return \humhub\modules\user\authclient\BaseFormAuth */ private static function filterClients($clients) { $result = []; foreach ($clients as $client) { // Don't show clients which need login form if (!$client instanceof \humhub\modules\user\authclient\BaseFormAuth) { $result[] = $client; } } return $result; } /** * @inheritdoc */ protected function defaultBaseAuthUrl() { $params = $_GET; unset($params[$this->clientIdGetParamName]); $baseAuthUrl = array_merge(['/user/auth/external'], $params); return $baseAuthUrl; } /** * @inheritdoc */ public function init() { if(count($this->getClients()) == 0) { return; } else { return parent::init(); } } /** * @inheritdoc */ public function run() { if(count($this->getClients()) == 0) { return; } else { return parent::run(); } } /** * Renders the main content, which includes all external services links. */ protected function renderMainContent() { $clients = $this->getClients(); $clientCount = count($clients); if ($clientCount == 0) { return; } $this->view->registerCssFile('@web-static/resources/user/authChoice.css'); $this->view->registerJsFile('@web-static/resources/user/authChoice.js'); echo Html::beginTag('div', ['class' => 'authChoice']); $i = 0; $extraCssClass = 'btn-sxm'; foreach ($clients as $client) { $i++; if ($i == $this->maxShowClients + 1) { // Add more button echo Html::a('<i class="fa fa-angle-double-down" aria-hidden="true"></i>', '#', ['class' => 'btn btn-default pull-right btn-sxm', 'id' => 'btnAuthChoiceMore']); // Div contains more auth clients echo Html::beginTag('div', ['class' => 'authChoiceMore']); $extraCssClass = 'btn-sm'; // further buttons small } $this->clientLink($client, null, ['class' => $extraCssClass]); echo " "; } if ($i > $this->maxShowClients) { echo Html::endTag('div'); } echo Html::endTag('div'); echo Html::tag('div', Html::tag('hr') . Html::tag('div', Yii::t('UserModule.base', 'or')), ['class' => 'or-container']); } /** * @inheritdoc */ public function clientLink($client, $text = null, array $htmlOptions = []) { $viewOptions = $client->getViewOptions(); if (isset($viewOptions['widget'])) { parent::clientLink($client, $text, $htmlOptions); return; } if (isset($viewOptions['buttonBackgroundColor'])) { $textColor = (isset($viewOptions['buttonColor'])) ? $viewOptions['buttonColor'] : '#FFF'; $btnStyle = Html::cssStyleFromArray(['color' => $textColor . '!important', 'background-color' => $viewOptions['buttonBackgroundColor'] . '!important']); $btnClasses = '.btn-ac-' . $client->getName() . ', .btn-ac-' . $client->getName() . ':hover, .btn-ac-' . $client->getName() . ':active, .btn-ac-' . $client->getName() . ':visited'; if ($this->showButtonColors) { echo Html::style($btnClasses . ' {' . $btnStyle . '}'); } } if (!isset($htmlOptions['class'])) { $htmlOption['class'] = ''; } $htmlOptions['class'] .= ' ' . 'btn btn-default btn-ac-' . $client->getName(); $htmlOptions['data-pjax-prevent'] = ''; $icon = (isset($viewOptions['cssIcon'])) ? '<i class="' . $viewOptions['cssIcon'] . '" aria-hidden="true"></i>' : ''; echo parent::clientLink($client, $icon . $client->getTitle(), $htmlOptions); return; parent::clientLink($client, $text, $htmlOptions); } }