From fac522f4d7cce9a35e605fac2bba0b2d23616ad0 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 15 May 2008 12:28:44 -0400 Subject: settings and avatars Did considerable work on the settings section. Redesigned the DB to allow avatars. Each avatar image has a size and an URL. There can be multiple avatars per profile, just different sizes. Added accessors in Profile for avatar. Show the avatar in lots of places, where it makes sense. Constants for avatar sizes in common.php. darcs-hash:20080515162844-84dde-fe0630366e247c02ca8ca9d1cc6b963cfce57a26.gz --- actions/profilesettings.php | 102 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 actions/profilesettings.php (limited to 'actions/profilesettings.php') diff --git a/actions/profilesettings.php b/actions/profilesettings.php new file mode 100644 index 000000000..b87cea7de --- /dev/null +++ b/actions/profilesettings.php @@ -0,0 +1,102 @@ +. + */ + +if (!defined('LACONICA')) { exit(1) } + +class ProfilesettingsAction extends SettingsAction { + + function handle($args) { + parent::handle($args); + if (!common_logged_in()) { + common_user_error(_t('Not logged in.')); + return; + } + if ($this->arg('METHOD') == 'POST') { + $this->handle_post(); + } else { + $this->show_form(); + } + } + + function show_form($msg=NULL, $success=false) { + common_show_header(_t('Profile settings')); + $this->settings_menu(); + if ($msg) { + common_element('div', ($success) ? 'success' : 'error', + $msg); + } + common_start_element('form', array('method' => 'POST', + 'id' => 'profilesettings', + 'action' => + common_local_url('profilesettings'))); + common_input('nickname', _t('Nickname')); + common_input('fullname', _t('Full name')); + common_input('email', _t('Email address')); + common_input('homepage', _t('Homepage')); + common_input('bio', _t('Bio')); + common_input('location', _t('Location')); + common_element('input', array('name' => 'submit', + 'type' => 'submit', + 'id' => 'submit'), + _t('Login')); + common_element('input', array('name' => 'cancel', + 'type' => 'button', + 'id' => 'cancel'), + _t('Cancel')); + common_show_footer(); + } + + function handle_post() { + $nickname = $this->arg('nickname'); + $fullname = $this->arg('fullname'); + $email = $this->arg('email'); + $homepage = $this->arg('homepage'); + $bio = $this->arg('bio'); + $location = $this->arg('location'); + + $user = common_current_user(); + assert(!is_null($user)); # should already be checked + + # FIXME: scrub input + # FIXME: transaction! + + $user->nickname = $this->arg('nickname'); + $user->email = $this->arg('email'); + + if (!$user->update()) { + common_server_error(_t('Couldnt update user.')); + return; + } + + $profile = $user->getProfile(); + + $profile->nickname = $user->nickname; + $profile->fullname = $this->arg('fullname'); + $profile->homepage = $this->arg('homepage'); + $profile->bio = $this->arg('bio'); + $profile->location = $this->arg('location'); + + if (!$profile->update()) { + common_server_error(_t('Couldnt save profile.')); + return; + } + + $this->show_form(_t('Settings saved.'), TRUE); + } +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf