public function searchByDomains($params, $allowed_domains, $root) { $this->load($params); Yii::trace($this->domain); $domains_name = []; foreach ($allowed_domains as $domain) { $domains_name[] = $domain->name; } if (!$root) { if ($this->domain) { $users = UserDomainRole::find()->where(['in', 'domain', $this->domain])->all(); } else { $users = UserDomainRole::find()->where(['in', 'domain', $domains_name])->all(); } $users_id = []; foreach ($users as $user) { $users_id[] = $user->user_id; } } else { if ($this->domain) { $users = UserDomainRole::find()->where(['in', 'domain', $this->domain])->all(); $users_id = []; foreach ($users as $user) { $users_id[] = $user->user_id; } } else { $users = User::find()->all(); $users_id = []; foreach ($users as $user) { $users_id[] = $user->id; } } } $users = User::find()->where(['in', 'id', $users_id])->all(); $userForm = []; foreach ($users as $user) { $aux = new UserSearchForm(); if ($this->domain) { $count = UserDomainRole::find()->where(['user_id' => $user->id, 'domain' => $this->domain])->count(); } else { if (!$root) { $count = UserDomainRole::find()->where(['user_id' => $user->id])->andWhere(['in', 'domain', $domains_name])->select('DISTINCT `domain`')->count(); } else { $count = UserDomainRole::find()->where(['user_id' => $user->id])->select('DISTINCT `domain`')->count(); } } $aux->setData($user, $count); $userForm[$aux->id] = $aux; } $data = new ArrayDataProvider(['allModels' => $userForm, 'sort' => false, 'pagination' => ['pageSize' => 15]]); return $data; }
public function actionEditorUpdate($id = null) { $this->layout = 'wireit'; if ($id) { $workflow = BpmWorkflow::findOne(['id' => $id]); if ($workflow) { $domain = Domain::findOne(['name' => $workflow->domain]); if ($domain) { if (!self::can('workflow/update', $domain->name)) { if (!self::can("workflow/read")) { return $this->goHome(); } else { Yii::$app->getSession()->setFlash('warning', Yii::t("bpm", 'You are not allowed to edit in domain {domain}', ['domain' => $domain->name])); return $this->redirect(array('/bpm/workflow/index')); } } $ownerDomain = []; $ownerDomain[$domain->name] = $domain->name; $domains = Domain::find()->orderBy(['name' => SORT_ASC])->all(); $allDomains = []; foreach ($domains as $dom) { $allDomains[$dom->name] = $dom->name; } $roles = $domain->getUserDomainsRoles()->all(); $adminsNames = []; foreach ($roles as $role) { $adminsNames[$role->getUser()->id] = $role->getUser()->name; } foreach (User::find()->all() as $user) { $usersNames[$user->id] = $user->name; } $groupsNames = []; foreach (Group::find()->where(['type' => Group::TYPE_DOMAIN, 'domain' => $domain->name])->orWhere(['type' => Group::TYPE_DOMAIN, 'domain' => null])->all() as $group) { $groupsNames[$group->id] = $group->name; } $devicesNames = []; foreach (Device::find()->where(['domain_id' => $domain->id])->all() as $device) { $devicesNames[$device->id] = $device->name; } Yii::trace($roles); Yii::trace($usersNames); Yii::trace($groupsNames); Yii::trace($devicesNames); return $this->render('editor', array('owner_domain' => $ownerDomain, 'domains' => $allDomains, 'groups' => $groupsNames, 'users' => $usersNames, 'admins' => $adminsNames, 'devices' => $devicesNames, 'id' => $_GET['id'])); } } } if (!self::can("workflow/read")) { return $this->goHome(); } else { return $this->redirect(array('/bpm/workflow/index')); } }
/** * CREATE TOPOLOGY NOTIFICAION * @param string $msg (A tag no caso) * @param string $date * Cria notificação de mudança na topologia. VERSÃO BETA */ public static function createTopologyNotification($msg, $date = null) { $users = User::find()->all(); foreach ($users as $user) { $not = Notification::findOne(['user_id' => $user->id, 'type' => self::TYPE_TOPOLOGY, 'info' => $msg]); if ($not) { //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação if ($date) { $not->date = $date; } else { $not->date = DateUtils::now(); } $not->viewed = 0; $not->save(); } else { $not = new Notification(); $not->user_id = $user->id; //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação if ($date) { $not->date = $date; } else { $not->date = DateUtils::now(); } $not->type = self::TYPE_TOPOLOGY; $not->viewed = 0; $not->info = $msg; $not->save(); } } }