/common/models/search/User.php
PHP | 102 lines | 66 code | 12 blank | 24 comment | 1 complexity | 7fe7d037196f56456b9d48df31ed0d19 MD5 | raw file
- <?php
- /**
- * @link http://www.writesdown.com/
- * @copyright Copyright (c) 2015 WritesDown
- * @license http://www.writesdown.com/license/
- */
- namespace common\models\search;
- use common\models\User as UserModel;
- use Yii;
- use yii\base\Model;
- use yii\data\ActiveDataProvider;
- /**
- * User represents the model behind the search form about `common\models\User`.
- *
- * @author Agiel K. Saputra <13nightevil@gmail.com>
- * @since 0.1.0
- */
- class User extends UserModel
- {
- /**
- * @inheritdoc
- */
- public function rules()
- {
- return [
- [['id', 'status'], 'integer'],
- [
- [
- 'username',
- 'email',
- 'full_name',
- 'display_name',
- 'password_hash',
- 'password_reset_token',
- 'auth_key',
- 'created_at',
- 'updated_at',
- 'login_at',
- ],
- 'safe',
- ],
- ];
- }
- /**
- * @inheritdoc
- */
- public function scenarios()
- {
- // bypass scenarios() implementation in the parent class
- return Model::scenarios();
- }
- /**
- * Creates data provider instance with search query applied
- *
- * @param array $params
- * @return ActiveDataProvider
- */
- public function search($params)
- {
- $query = UserModel::find();
- $query->andWhere(['<>', 'id', Yii::$app->user->id]);
- $dataProvider = new ActiveDataProvider([
- 'query' => $query,
- 'sort' => [
- 'defaultOrder' => [
- 'id' => SORT_DESC,
- ],
- ],
- ]);
- $this->load($params);
- if (!$this->validate()) {
- return $dataProvider;
- }
- $query->andFilterWhere([
- 'id' => $this->id,
- 'status' => $this->status,
- ]);
- $query->andFilterWhere(['like', 'username', $this->username])
- ->andFilterWhere(['like', 'email', $this->email])
- ->andFilterWhere(['like', 'full_name', $this->full_name])
- ->andFilterWhere(['like', 'display_name', $this->display_name])
- ->andFilterWhere(['like', 'password_hash', $this->password_hash])
- ->andFilterWhere(['like', 'password_reset_token', $this->password_reset_token])
- ->andFilterWhere(['like', 'auth_key', $this->auth_key])
- ->andFilterWhere(['like', 'created_at', $this->created_at])
- ->andFilterWhere(['like', 'updated_at', $this->updated_at])
- ->andFilterWhere(['like', 'login_at', $this->login_at]);
- return $dataProvider;
- }
- }