public static function updateUser($user_id, $data = null) { $user = User::findOne($user_id); $user->scenario = 'settings'; $profile = $user->profile; $oldEmail = $user->email; if ($user->load(['User' => $data]) && $user->validate()) { if ($user->email != $oldEmail) { $user->unconfirmed_email = $user->email; $user->email = $oldEmail; $token = \Yii::createObject(['class' => Token::className(), 'user_id' => $user->id, 'type' => Token::TYPE_CONFIRM_NEW_EMAIL]); $token->save(false); $mailer = Yii::createObject(['class' => Mailer::className(), 'reconfirmationSubject' => 'Mail confirmation']); $mailer->sendReconfirmationMessage($user, $token); } if (!$profile) { $profile = Yii::createObject(['class' => Profile::className(), 'user_id' => $user->id]); $profile->save(); } $profile->load(['Profile' => $data]); $profile->save(); $user->save(); } else { self::error($user); } return self::clearUserData($user); }