diff --git a/Module.php b/Module.php index c458976..ccf63e2 100644 --- a/Module.php +++ b/Module.php @@ -279,4 +279,4 @@ public function getActions() "/{$this->id}/confirm?key=zzzzz" => "Confirm email address. Automatically generated upon registration/email change", ]; } -} \ No newline at end of file +} diff --git a/helpers/Timezone.php b/helpers/Timezone.php new file mode 100644 index 0000000..b6d7276 --- /dev/null +++ b/helpers/Timezone.php @@ -0,0 +1,29 @@ +getOffset() / 60 / 60; + $timezones[] = ['timezone' => $time_zone, 'name' => "{$time_zone} (UTC " . ($offset_in_hours > 0 ? '+' : '') . "{$offset_in_hours})", 'offset' => $offset_in_hours]; + } + + ArrayHelper::multisort($timezones, 'offset', SORT_DESC, SORT_NUMERIC); + + return $timezones; + } +} diff --git a/migrations/m150214_044831_init_user.php b/migrations/m150214_044831_init_user.php index cebba38..c388ef8 100644 --- a/migrations/m150214_044831_init_user.php +++ b/migrations/m150214_044831_init_user.php @@ -55,6 +55,7 @@ public function safeUp() 'create_time' => Schema::TYPE_TIMESTAMP . ' null default null', 'update_time' => Schema::TYPE_TIMESTAMP . ' null default null', 'full_name' => Schema::TYPE_STRING . ' null default null', + 'timezone' => Schema::TYPE_STRING . ' null default null', ], $tableOptions); $this->createTable('{{%user_auth}}', [ 'id' => Schema::TYPE_PK, diff --git a/models/Profile.php b/models/Profile.php index 8a97c79..b4611db 100644 --- a/models/Profile.php +++ b/models/Profile.php @@ -13,6 +13,7 @@ * @property string $create_time * @property string $update_time * @property string $full_name + * @property string $timezone * * @property User $user */ @@ -26,6 +27,19 @@ public static function tableName() return static::getDb()->tablePrefix . "profile"; } + /** @var \app\modules\user\Module $module */ + public $module; + + /** + * @inheritdoc + */ + public function init() + { + if (!$this->module) { + $this->module = Yii::$app->getModule("user"); + } + } + /** * @inheritdoc */ @@ -35,7 +49,8 @@ public function rules() // [['user_id'], 'required'], // [['user_id'], 'integer'], // [['create_time', 'update_time'], 'safe'], - [['full_name'], 'string', 'max' => 255] + [['full_name'], 'string', 'max' => 255], + [['timezone'], 'string', 'max' => 125], ]; } @@ -50,6 +65,7 @@ public function attributeLabels() 'create_time' => Yii::t('user', 'Create Time'), 'update_time' => Yii::t('user', 'Update Time'), 'full_name' => Yii::t('user', 'Full Name'), + 'timezone' => Yii::t('user', 'Time zone'), ]; } @@ -75,7 +91,7 @@ public function behaviors() */ public function getUser() { - $user = Yii::$app->getModule("user")->model("User"); + $user = $this->module->model("User"); return $this->hasOne($user::className(), ['id' => 'user_id']); } @@ -90,4 +106,4 @@ public function setUser($userId) $this->user_id = $userId; return $this; } -} \ No newline at end of file +} diff --git a/models/User.php b/models/User.php index 0afcc9b..b884a15 100644 --- a/models/User.php +++ b/models/User.php @@ -198,7 +198,9 @@ public function getProfiles() */ public function getProfile() { - $profile = Yii::$app->getModule("user")->model("Profile"); + /** @var Module $userModule */ + $userModule = Yii::$app->getModule("user"); + $profile = $userModule->model("Profile"); return $this->hasOne($profile::className(), ['user_id' => 'id']); } @@ -207,7 +209,9 @@ public function getProfile() */ public function getRole() { - $role = Yii::$app->getModule("user")->model("Role"); + /** @var Module $userModule */ + $userModule = Yii::$app->getModule("user"); + $role = $userModule->model("Role"); return $this->hasOne($role::className(), ['id' => 'role_id']); } @@ -216,7 +220,9 @@ public function getRole() */ public function getUserKeys() { - $userKey = Yii::$app->getModule("user")->model("UserKey"); + /** @var Module $userModule */ + $userModule = Yii::$app->getModule("user"); + $userKey = $userModule->model("UserKey"); return $this->hasMany($userKey::className(), ['user_id' => 'id']); } @@ -529,4 +535,4 @@ public static function statusDropdown() return $dropdown; } -} \ No newline at end of file +} diff --git a/views/admin/index.php b/views/admin/index.php index ac53c73..3382f58 100644 --- a/views/admin/index.php +++ b/views/admin/index.php @@ -55,6 +55,7 @@ ], 'email:email', 'profile.full_name', + 'profile.timezone', 'create_time', // 'new_email:email', // 'username', diff --git a/views/default/login.php b/views/default/login.php index ee697bc..d4d3ef3 100644 --- a/views/default/login.php +++ b/views/default/login.php @@ -12,7 +12,7 @@ $this->title = Yii::t('user', 'Login'); $this->params['breadcrumbs'][] = $this->title; ?> -