getUser(); $errors = array(); if ($request->isFormPost()) { $new_timezone = $request->getStr('timezone'); if (in_array($new_timezone, DateTimeZone::listIdentifiers(), true)) { $user->setTimezoneIdentifier($new_timezone); } else { $errors[] = pht('The selected timezone is not a valid timezone.'); } if (!$errors) { $user->save(); return id(new AphrontRedirectResponse()) ->setURI($this->getPanelURI('?saved=true')); } } $notice = null; if (!$errors) { if ($request->getStr('saved')) { $notice = new AphrontErrorView(); $notice->setSeverity(AphrontErrorView::SEVERITY_NOTICE); $notice->setTitle(pht('Changes Saved')); $notice->appendChild( phutil_tag('p', array(), pht('Your changes have been saved.'))); $notice = $notice->render(); } } else { $notice = new AphrontErrorView(); $notice->setTitle(pht('Form Errors')); $notice->setErrors($errors); $notice = $notice->render(); } $timezone_ids = DateTimeZone::listIdentifiers(); $timezone_id_map = array_fuse($timezone_ids); $form = new AphrontFormView(); $form ->setUser($user) ->appendChild( id(new AphrontFormStaticControl()) ->setLabel(pht('Username')) ->setValue($user->getUsername())) ->appendChild( id(new AphrontFormSelectControl()) ->setLabel(pht('Timezone')) ->setName('timezone') ->setOptions($timezone_id_map) ->setValue($user->getTimezoneIdentifier())) ->appendChild( id(new AphrontFormSubmitControl()) ->setValue(pht('Save'))); $header = new PhabricatorHeaderView(); $header->setHeader(pht('Account Settings')); return array( $notice, $header, $form, ); } }