getControlState('user'); } public function setUserToChange(DbUser $user) { if ($user->IsGuest && !$this->Page->IsCallBack) { 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->getFacade()->getTimezonePreference($this->UserToChange)->Name ); } public function saveTimezone($sender, $param) { $this->getFacade()->setTimezonePreference( $this->UserToChange, $this->Timezones->SelectedValue ); } private function _getTimezones() { $timezones = array_map( function($tz) { return new TimezoneDTO($tz); }, DateTimeZone::listIdentifiers() ); usort($timezones, ['TimezoneDTO', '__compare']); return $timezones; } } ?>