Esempio n. 1
0
 /**
  * Database checking
  * @return void
  */
 protected function checkDatabase()
 {
     //schema
     $db = Yii::$app->db;
     $filename = dirname(__DIR__) . '/schema/' . $db->driverName . '.sql';
     $sql = explode(';', file_get_contents($filename));
     foreach ($sql as $s) {
         if (trim($s) !== '') {
             $db->createCommand($s)->execute();
         }
     }
     //rbac
     $auth = Yii::$app->getAuthManager();
     if ($auth->getRole('author') === null) {
         //author role
         $author = $auth->createRole('author');
         $auth->add($author);
         //author rule
         $rule = new AuthorRule();
         $auth->add($rule);
         //author permission
         $own = $auth->createPermission('own');
         $own->ruleName = $rule->name;
         $auth->add($own);
         //add permission with rule to role
         $auth->addChild($author, $own);
     }
     //data
     if (User::find()->andWhere(['admin' => true, 'active' => true])->count() == 0) {
         $model = new User(['admin' => true, 'active' => true, 'email' => 'admin']);
         $model->setPassword('admin');
         $model->save();
     }
 }
Esempio n. 2
0
 /**
  * Search function
  * @param array $params Attributes array
  * @return yii\data\ActiveDataProvider
  */
 public function search($params)
 {
     //ActiveQuery
     $query = User::find()->andWhere(['not', ['id' => Yii::$app->getUser()->id]]);
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     //return data provider if no search
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     //search
     $query->andFilterWhere(['like', 'email', $this->email]);
     return $dataProvider;
 }
Esempio n. 3
0
 public function run($term)
 {
     //query conditions
     $query = User::find()->andFilterWhere(['like', 'email', $term]);
     if (!$this->admin) {
         $query->andWhere(['not', ['admin' => true]]);
     }
     //get items
     $rows = $query->limit($this->limit)->all();
     //make autocomplete array
     $items = array_map(function ($v) {
         $html = Html::encode($v->email);
         $username = $v->username;
         if ($username !== $v->email) {
             $html .= ' ' . Html::tag('span', Html::encode($username), ['class' => 'text-muted']);
         }
         return ['label' => $v->email, 'value' => $v->email, 'id' => (string) $v->id, 'html' => $html];
     }, $rows);
     return Json::encode($items);
 }