/** @inheritdoc */ public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); if ($insert) { if ($this->_profile == null) { $this->_profile = Yii::createObject(Profile::className()); } $this->_profile->link('user', $this); } }
/** @inheritdoc */ public function bootstrap($app) { /** @var Module $module */ /** @var \yii\db\ActiveRecord $modelName */ if ($app->hasModule('user') && ($module = $app->getModule('user')) instanceof Module) { Yii::$container->setSingleton(UserFinder::className(), ['userQuery' => \jarrus90\User\models\User::find(), 'profileQuery' => \jarrus90\User\models\Profile::find(), 'tokenQuery' => \jarrus90\User\models\Token::find(), 'accountQuery' => \jarrus90\User\models\Account::find()]); if (!isset($app->get('i18n')->translations['rbac'])) { $app->get('i18n')->translations['rbac'] = ['class' => 'yii\\i18n\\PhpMessageSource', 'basePath' => __DIR__ . '/messages', 'sourceLanguage' => 'en-US']; } if (!isset($app->get('i18n')->translations['user'])) { $app->get('i18n')->translations['user'] = ['class' => PhpMessageSource::className(), 'basePath' => __DIR__ . '/messages', 'sourceLanguage' => 'en-US']; } if (!$app instanceof ConsoleApplication) { $module->controllerNamespace = 'jarrus90\\User\\Controllers'; if (!Yii::$container->has('yii\\web\\User')) { Yii::$container->set('yii\\web\\User', ['enableAutoLogin' => true, 'loginUrl' => ['/user/security/login'], 'identityClass' => \jarrus90\User\models\User::className()]); } $configUrlRule = ['prefix' => $module->urlPrefix, 'rules' => $module->urlRules]; if ($module->urlPrefix != 'user') { $configUrlRule['routePrefix'] = 'user'; } $configUrlRule['class'] = 'yii\\web\\GroupUrlRule'; $rule = Yii::createObject($configUrlRule); $app->urlManager->addRules([$rule], false); if (!$app->has('authClientCollection')) { $app->set('authClientCollection', ['class' => Collection::className()]); } $app->params['admin']['menu']['user'] = function () use($module) { return $module->getAdminMenu(); }; $app->params['admin']['menu']['logout'] = ['label' => Yii::t('user', 'Logout'), 'icon' => '<i class="fa fa-sign-out"></i>', 'url' => '/user/security/logout']; } else { if (empty($app->controllerMap['migrate'])) { $app->controllerMap['migrate']['class'] = 'yii\\console\\controllers\\MigrateController'; } $app->controllerMap['migrate']['migrationNamespaces'][] = 'jarrus90\\User\\migrations'; } if (!$app->authManager instanceof DbManager) { $app->set('authManager', ['class' => DbManager::className(), 'cache' => $app->cache]); } Yii::$container->set('jarrus90\\User\\Mailer', $module->mailer); } }
public function search($params) { $query = self::find(); $dataProvider = new \yii\data\ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 20], 'sort' => ['defaultOrder' => ['id' => SORT_DESC]]]); $dataProvider->sort->attributes['userName'] = ['asc' => ['user_id' => SORT_ASC], 'desc' => ['user_id' => SORT_DESC]]; $dataProvider->sort->attributes['postTitle'] = ['asc' => ['post_id' => SORT_ASC], 'desc' => ['post_id' => SORT_DESC]]; $query->joinWith(['post', 'user']); if ($this->load($params) && $this->validate()) { $query->andFilterWhere(['post_id' => $this->post_id]); $query->andFilterWhere(['like', Post::tableName() . '.title', $this->postTitle]); if (!is_null($this->userName) && $this->userName != '') { $userName[] = explode(' ', $this->userName); foreach ($userName as $item) { $query->andFilterWhere(['or', ['like', Profile::tableName() . '.name', $item]]); } } if (($time = strtotime($this->created_at)) > 0) { $query->andFilterWhere(['>', 'created_at', $time]); $query->andFilterWhere(['<', 'created_at', $time + 24 * 60 * 60]); } } return $dataProvider; }
/** * @param $params * * @return ActiveDataProvider */ public function search($params) { $query = self::find()->addSelect([User::tableName() . '.*', Profile::tableName() . '.name'])->joinWith('profile'); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => []]); $dataProvider->sort->attributes['name'] = ['asc' => [self::tableName() . '.id' => SORT_ASC], 'desc' => [self::tableName() . '.id' => SORT_DESC]]; if ($this->load($params) && $this->validate()) { if ($this->created_at !== null) { $date = strtotime($this->created_at); $query->andFilterWhere(['between', 'created_at', $date, $date + 3600 * 24]); } if (!is_null($this->name) && $this->name != '') { $clientName[] = explode(' ', $this->name); foreach ($clientName as $item) { $query->andFilterWhere(['like', Profile::tableName() . '.name', $item]); /*$query->andFilterWhere(['or', ['like', Profile::tableName() . '.name', $item], ['like', Profile::tableName() . '.surname', $item] ]);*/ } } $query->andFilterWhere(['like', 'email', $this->email]); } return $dataProvider; }
public function getSearchUserData() { if (!empty($this->from_id) && is_int($this->from_id)) { $profile = Profile::findOne(['user_id' => $this->from_id]); return ['id' => $this->from_id, 'name' => "{$profile->name} {$profile->surname}"]; } return; }
/** * Shows profile settings form. * * @return string|\yii\web\Response */ public function actionProfile() { $model = $this->finder->findProfileById(Yii::$app->user->identity->getId()); if ($model == null) { $model = Yii::createObject(Profile::className()); $model->link('user', Yii::$app->user->identity); } $event = $this->getProfileEvent($model); $this->performAjaxValidation($model); $this->trigger(self::EVENT_BEFORE_PROFILE_UPDATE, $event); if ($model->load(Yii::$app->request->post()) && $model->save()) { Yii::$app->getSession()->setFlash('success', Yii::t('user', 'Your profile has been updated')); $this->trigger(self::EVENT_AFTER_PROFILE_UPDATE, $event); return $this->refresh(); } return $this->render('profile', ['model' => $model]); }
public function actionList() { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $list = $this->finder->profileQuery->andFilterWhere(['or', ['like', Profile::tableName() . '.name', Yii::$app->request->get('name', NULL)], ['like', Profile::tableName() . '.surname', Yii::$app->request->get('name', NULL)]])->asArray()->limit(100)->all(); $result = []; foreach ($list as $item) { $result[] = ['id' => $item['user_id'], 'name' => "{$item['name']} {$item['surname']}"]; } return ['results' => $result]; }
public function getBlocker() { return $this->hasOne(Profile::className(), ['user_id' => 'blocked_by']); }