示例#1
0
 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;
 }
示例#2
0
 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'));
     }
 }
示例#3
0
 /**
  * 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();
         }
     }
 }