OEModule\PatientTicketing\services\PatientTicketing_QueueSetService::setPermisssionedUsers PHP Метод

setPermisssionedUsers() публичный Метод

public setPermisssionedUsers ( integer $queueset_id, $user_ids, $role = null )
$queueset_id integer
    public function setPermisssionedUsers($queueset_id, $user_ids, $role = null)
    {
        $qs = $this->readModel($queueset_id);
        $users = array();
        foreach ($user_ids as $id) {
            if (!($user = \User::model()->findByPk($id))) {
                throw new \Exception("User not found for id {$id}");
            }
            $users[] = $user;
        }
        $role_item = null;
        if ($role) {
            $role_item = Yii::app()->authManager->getAuthItem($role);
            if (!$role_item) {
                throw new \Exception("Unrecognised role {$role} for permissioning");
            }
        }
        $transaction = Yii::app()->db->getCurrentTransaction() === null ? Yii::app()->db->beginTransaction() : false;
        try {
            $qs->permissioned_users = $users;
            $qs->save();
            \Audit::add('admin', 'set-permissions', $qs->id, null, array('module' => 'PatientTicketing', 'model' => $qs->getShortModelName()));
            if ($role_item) {
                foreach ($users as $user) {
                    if (!$role_item->getAssignment($user->id)) {
                        $role_item->assign($user->id);
                        \Audit::add('admin-User', 'assign-role', "{$user->id}:{$role_item->name}");
                    }
                }
            }
            if ($transaction) {
                $transaction->commit();
            }
        } catch (\Exception $e) {
            if ($transaction) {
                $transaction->rollback();
            }
            throw $e;
        }
    }