%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/space/jobs/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/space/jobs/AddUsersToSpaceJob.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\jobs;
use humhub\modules\queue\ActiveJob;
use humhub\modules\space\models\Space;
use humhub\modules\space\notifications\UserAddedNotification;
use humhub\modules\user\models\User;
use Yii;
use yii\base\Exception;
class AddUsersToSpaceJob extends ActiveJob
{
/**
* @var Space target space
*/
private $space;
/**
* @var int
*/
public $spaceId;
/**
* @var int[]
*/
public $userIds;
/**
* @var User originator user
*/
private $originator;
/**
* @var User originator user id
*/
public $originatorId;
/**
* @var bool
*/
public $allUsers = false;
/**
* @var bool
*/
public $forceMembership = false;
/**
* @inheritdoc
*/
public function init()
{
parent::init();
$this->space = Space::findOne(['id' => $this->spaceId]);
$this->originator = User::findOne(['id' => $this->originatorId]);
}
/**
* @inheritdoc
*/
public function run()
{
if ($this->allUsers) {
foreach (User::find()->active()->batch() as $users) {
$this->addUsers($users);
}
} else {
$this->addUsers($this->userIds);
}
}
/**
* @param User[]|int[] $users
*/
private function addUsers($users)
{
foreach ($users as $user) {
try {
$user = ($user instanceof User) ? $user : User::findOne(['id' => $user]);
if (!$user || $user->id === $this->originator->id) {
continue;
}
$this->space->inviteMember($user->id, $this->originator->id, !$this->forceMembership);
if ($this->forceMembership) {
$this->space->addMember($user->id, 2, true);
UserAddedNotification::instance()->from($this->originator)->about($this->space)->send($user);
}
} catch (Exception $e) {
Yii::error($e);
}
}
}
}