%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
| Server IP : 14.207.165.8 / Your IP : 216.73.216.26 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/thread-self/root/var/www/html/water/vendor/amnah/yii2-user/models/search/ |
Upload File : |
<?php
namespace amnah\yii2\user\models\search;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use amnah\yii2\user\models\User;
/**
* UserSearch represents the model behind the search form about `amnah\yii2\user\models\User`.
*/
class UserSearch extends User
{
/**
* @inheritdoc
*/
public static function tableName()
{
return "{{%user}}";
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['id', 'role_id', 'status'], 'integer'],
[['email', 'username', 'password', 'auth_key', 'access_token', 'logged_in_ip', 'logged_in_at', 'created_ip', 'created_at', 'updated_at', 'banned_at', 'banned_reason', 'profile.full_name'], 'safe'],
];
}
/**
* @inheritdoc
*/
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* @inheritdoc
*/
public function attributes()
{
// add related fields to searchable attributes
return array_merge(parent::attributes(), ['profile.full_name']);
}
/**
* Search
* @param array $params
* @return ActiveDataProvider
*/
public function search($params)
{
/** @var \amnah\yii2\user\models\User $user */
/** @var \amnah\yii2\user\models\Profile $profile */
// get models
$user = $this->module->model("User");
$profile = $this->module->model("Profile");
$userTable = $user::tableName();
$profileTable = $profile::tableName();
// set up query relation for `user`.`profile`
// http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#working-with-model-relations
$query = $user::find();
$query->joinWith(['profile' => function ($query) use ($profileTable) {
$query->from(['profile' => $profileTable]);
}]);
// create data provider
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
// enable sorting for the related columns
$addSortAttributes = ["profile.full_name"];
foreach ($addSortAttributes as $addSortAttribute) {
$dataProvider->sort->attributes[$addSortAttribute] = [
'asc' => [$addSortAttribute => SORT_ASC],
'desc' => [$addSortAttribute => SORT_DESC],
];
}
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$query->andFilterWhere([
"{$userTable}.id" => $this->id,
'role_id' => $this->role_id,
'status' => $this->status,
]);
$query->andFilterWhere(['like', 'email', $this->email])
->andFilterWhere(['like', 'username', $this->username])
->andFilterWhere(['like', 'password', $this->password])
->andFilterWhere(['like', 'auth_key', $this->auth_key])
->andFilterWhere(['like', 'access_token', $this->access_token])
->andFilterWhere(['like', 'logged_in_ip', $this->logged_in_ip])
->andFilterWhere(['like', 'created_ip', $this->created_ip])
->andFilterWhere(['like', 'banned_reason', $this->banned_reason])
->andFilterWhere(['like', 'logged_in_at', $this->logged_in_at])
->andFilterWhere(['like', "{$userTable}.created_at", $this->created_at])
->andFilterWhere(['like', "{$userTable}.updated_at", $this->updated_at])
->andFilterWhere(['like', 'banned_at', $this->banned_at])
->andFilterWhere(['like', "profile.full_name", $this->getAttribute('profile.full_name')]);
return $dataProvider;
}
}