/** * 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(); } }
/** * 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; }
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); }