%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/admin/models/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/admin/models/UserSearch.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2017 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\admin\models; use yii\base\InvalidArgumentException; use Yii; use yii\base\Model; use yii\data\ActiveDataProvider; use humhub\modules\user\models\User; /** * Description of UserSearch * * @author luke */ class UserSearch extends User { /** * @var \humhub\modules\user\components\ActiveQueryUser */ public $query; /** * @var string a free text search */ public $freeText; /** * @inheritdoc */ public function attributes() { // add related fields to searchable attributes return array_merge(parent::attributes(), ['profile.firstname', 'profile.lastname']); } /** * @inheritdoc */ public function rules() { return [ [['id', 'status'], 'integer'], [['username', 'email', 'created_at', 'profile.firstname', 'profile.lastname', 'last_login', 'freeText'], '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 = ($this->query == null) ? User::find() : $this->query; /* @var $query \humhub\modules\user\components\ActiveQueryUser */ $query->joinWith('profile'); $dataProvider = new ActiveDataProvider([ 'query' => $query, 'pagination' => ['pageSize' => 50], ]); $dataProvider->setSort([ 'attributes' => [ 'id', 'username', 'email', 'last_login', 'profile.firstname', 'profile.lastname', 'created_at', ] ]); $dataProvider->sort->defaultOrder = ['id' => SORT_DESC]; $this->load($params); if (!$this->validate()) { $query->emulateExecution(); return $dataProvider; } $query->joinWith(['profile']); // Freetext filters if (!empty($this->freeText)) { $query->andWhere([ 'OR', ['like', 'user.id', $this->freeText], ['like', 'user.username', $this->freeText], ['like', 'user.email', $this->freeText], ['like', 'profile.firstname', $this->freeText], ['like', 'profile.lastname', $this->freeText], ['like', 'concat(profile.firstname, " ", profile.lastname)', $this->freeText], ['like', 'concat(profile.lastname, " ", profile.firstname)', $this->freeText], ]); if (!empty($this->status)) { $query->andFilterWhere(['user.status' => $this->status]); } return $dataProvider; } $query->andFilterWhere(['id' => $this->id]); $query->andFilterWhere(['user.status' => $this->status]); $query->andFilterWhere(['like', 'user.id', $this->id]); $query->andFilterWhere(['like', 'user.username', $this->username]); $query->andFilterWhere(['like', 'user.email', $this->email]); $query->andFilterWhere(['like', 'profile.firstname', $this->getAttribute('profile.firstname')]); $query->andFilterWhere(['like', 'profile.lastname', $this->getAttribute('profile.lastname')]); if ($this->getAttribute('last_login') != "") { try { $last_login = \humhub\libs\DateHelper::parseDateTime($this->getAttribute('last_login')); $query->andWhere([ '=', new \yii\db\Expression("DATE(last_login)"), new \yii\db\Expression("DATE(:last_login)", [':last_login' => $last_login]) ]); } catch (InvalidArgumentException $e) { // do not change the query if the date is wrong formatted } } return $dataProvider; } public static function getStatusAttributes() { $countActive = User::find()->where(['user.status' => User::STATUS_ENABLED])->count(); $countDisabled = User::find()->where(['user.status' => User::STATUS_DISABLED])->count(); $countSoftDeleted = User::find()->where(['user.status' => User::STATUS_SOFT_DELETED])->count(); return [ User::STATUS_ENABLED => Yii::t('AdminModule.user', 'Active users') . ' (' . $countActive . ')', User::STATUS_DISABLED => Yii::t('AdminModule.user', 'Disabled users') . ' (' . $countDisabled . ')', User::STATUS_SOFT_DELETED => Yii::t('AdminModule.user', 'Deleted users') . ' (' . $countSoftDeleted . ')', ]; } }