getControlState('user'); } public function setUserToChange(DbUser $user) { if ($user->IsGuest) { throw new TInvalidDataValueException( 'Timezone preference change impossible for guest user' ); } $this->setControlState('user', $user); } public function onPreRender($param) { parent::onPreRender($param); $this->Timezones->DataSource = $this->_getTimezones(); $this->Timezones->DataValueField = 'Name'; $this->Timezones->DataTextField = 'Label'; $this->Timezones->dataBind(); $this->Timezones->setSelectedValue( $this->UserToChange->getTimezonePreference()->Name ); } public function saveTimezone($sender, $param) { $this->UserToChange->setTimezonePreference($this->Timezones->SelectedValue); } private function _getTimezones() { $timezones = array_map( function($tz) { return new TimezoneDTO($tz); }, DateTimeZone::listIdentifiers() ); usort($timezones, ['TimezoneDTO', '__compare']); return $timezones; } } ?>