%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/Members.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\space\models\Membership;
use humhub\modules\space\models\Space;
use yii\db\Expression;
use yii\base\Widget;
use yii\helpers\Url;
/**
* Space Members Snippet
*
* @author Luke
* @since 0.5
*/
class Members extends Widget
{
/**
* @var int maximum members to display
*/
public $maxMembers = 23;
/**
* @var Space the space
*/
public $space;
/**
* @var boolean order members by membership date
* @since 1.8
*/
public $orderByNewest;
/**
* @inheritdoc
*/
public function run()
{
$users = $this->getUserQuery()->all();
return $this->render('members', [
'users' => $users,
'showListButton' => count($users) == $this->maxMembers,
'urlMembersList' => $this->space->createUrl('/space/membership/members-list'),
'privilegedUserIds' => $this->getPrivilegedUserIds(),
'totalMemberCount' => Membership::getSpaceMembersQuery($this->space)->visible()->count(),
'showListOptions' => [
'data-action-click' => 'ui.modal.load',
'data-action-url' => Url::to(['/space/membership/members-list', 'container' => $this->space])
]
]);
}
/**
* Returns a query for members of this space
*
* @return \yii\db\ActiveQuery the query
*/
protected function getUserQuery()
{
$query = Membership::getSpaceMembersQuery($this->space)->active()->visible();
$query->limit($this->maxMembers);
if ($this->orderByNewest) {
$query->orderBy('space_membership.created_at Desc');
} else {
$query->orderBy(new Expression('FIELD(space_membership.group_id, "' . Space::USERGROUP_OWNER . '", "' . Space::USERGROUP_MODERATOR . '", "' . Space::USERGROUP_MEMBER . '")'));
}
return $query;
}
/**
* Returns an array with a list of privileged user ids.
*
* @return array the user ids separated by priviledged group id.
*/
protected function getPrivilegedUserIds()
{
$privilegedMembers = [Space::USERGROUP_OWNER => [], Space::USERGROUP_ADMIN => [], Space::USERGROUP_MODERATOR => []];
$query = Membership::find()->where(['space_id' => $this->space->id]);
$query->andWhere(['IN', 'group_id', [Space::USERGROUP_OWNER, Space::USERGROUP_ADMIN, Space::USERGROUP_MODERATOR]]);
foreach ($query->all() as $membership) {
if (isset($privilegedMembers[$membership->group_id])) {
$privilegedMembers[$membership->group_id][] = $membership->user_id;
}
}
// Add owner manually, since it's not handled as user group yet
$privilegedMembers[Space::USERGROUP_OWNER][] = $this->space->created_by;
return $privilegedMembers;
}
}