class AvatarAction extends SettingsAction {
- function show_top($arr) {
- $msg = $arr[0];
- $success = $arr[1];
- if ($msg) {
- $this->message($msg, $success);
- } else {
- common_element('div', 'instructions',
- _t('Upload a new "avatar" (user image) here. ' .
- 'You can\'t edit the picture after you upload it, so ' .
- 'make sure it\'s more or less square. ' .
- 'It must be under the site license, also. ' .
- 'Use a picture that belongs to you and that you ' .
- 'want to share.'));
- }
- $this->settings_menu();
+ function get_instructions() {
+ return _t('Upload a new "avatar" (user image) here. ' .
+ 'You can\'t edit the picture after you upload it, so ' .
+ 'make sure it\'s more or less square. ' .
+ 'It must be under the site license, also. ' .
+ 'Use a picture that belongs to you and that you ' .
+ 'want to share.');
}
-
+
function show_form($msg=NULL, $success=false) {
- common_show_header(_t('Avatar'), NULL, array($msg, $success), array($this, 'show_top'));
+
+ $this->form_header(_t('Avatar'), $msg, $success);
$user = common_current_user();
$profile = $user->getProfile();
$user = common_current_user();
$profile = $user->getProfile();
-
+
if ($profile->setOriginal($_FILES['avatarfile']['tmp_name'])) {
$this->show_form(_t('Avatar updated.'), true);
} else {
return;
}
$c = file_get_contents($filename);
- $c = preg_replace('/%%action.(\w+)%%/e', "common_local_url('\\1')", $c);
- $c = preg_replace('/%%doc.(\w+)%%/e', "common_local_url('doc', array('title'=>'\\1'))", $c);
- $c = preg_replace('/%%(\w+).(\w+)%%/e', 'common_config(\'\\1\', \'\\2\')', $c);
- $output = Markdown($c);
+ $output = common_markup_to_html($c);
common_show_header(_t(ucfirst($title)));
common_raw($output);
common_show_footer();
}
-}
\ No newline at end of file
+}
class ImsettingsAction extends SettingsAction {
- function show_top($arr) {
- $msg = $arr[0];
- $success = $arr[1];
- if ($msg) {
- $this->message($msg, $success);
- } else {
- common_element('div', 'instructions',
- _t('You can send and receive notices through '.
- 'Jabber/GTalk instant messages. Configure '.
- 'your address and settings below.'));
- }
- $this->settings_menu();
+ function get_instructions() {
+ _t('You can send and receive notices through '.
+ 'Jabber/GTalk [instant messages](%%doc.im%%). Configure '.
+ 'your address and settings below.');
}
function show_form($msg=NULL, $success=false) {
$user = common_current_user();
- common_show_header(_t('IM settings'), NULL, array($msg, $success),
- array($this, 'show_top'));
-
+ $this->form_header(_t('IM Settings'), $msg, $success);
common_element_start('form', array('method' => 'POST',
'id' => 'imsettings',
'action' =>
require_once(INSTALLDIR.'/lib/openid.php');
class OpenidsettingsAction extends SettingsAction {
-
- function show_top($arr) {
- $msg = $arr[0];
- $success = $arr[1];
-
- if ($msg) {
- $this->message($msg, $success);
- } else {
- common_element('div', 'instructions',
- _t('Manage your associated OpenIDs from here.'));
- }
-
- $this->settings_menu();
+
+ function get_instructions() {
+ return _t('[OpenID](%%doc.openid%%) lets you log into many sites ' .
+ ' with the same user account. '.
+ ' Manage your associated OpenIDs from here.');
}
-
+
function show_form($msg=NULL, $success=false) {
-
+
$user = common_current_user();
-
- common_show_header(_t('OpenID settings'), NULL, array($msg, $success),
- array($this, 'show_top'));
-
+
+ $this->form_header(_t('OpenID settings'), $msg, $success);
+
common_element_start('form', array('method' => 'POST',
'id' => 'openidadd',
'action' =>
'value' => _t('Add')));
common_element_end('p');
common_element_end('form');
-
+
$oid = new User_openid();
$oid->user_id = $user->id;
-
+
$cnt = $oid->find();
-
+
if ($cnt > 0) {
-
+
common_element('h2', NULL, _t('Remove OpenID'));
-
+
if ($cnt == 1 && !$user->password) {
-
+
common_element('p', NULL,
_t('Removing your only OpenID would make it impossible to log in! ' .
'If you need to remove it, add another OpenID first.'));
-
+
if ($oid->fetch()) {
common_element_start('p');
common_element('a', array('href' => $oid->canonical),
$oid->display);
common_element_end('p');
}
-
+
} else {
-
+
common_element('p', NULL,
_t('You can remove an OpenID from your account '.
'by clicking the button marked "Remove".'));
$idx = 0;
-
+
while ($oid->fetch()) {
common_element_start('form', array('method' => 'POST',
'id' => 'openiddelete' . $idx,
}
}
}
-
+
common_show_footer();
}
-
+
function handle_post() {
if ($this->arg('add')) {
$result = oid_authenticate($this->trimmed('openid_url'), 'finishaddopenid');
$this->show_form(_t('Something weird happened.'));
}
}
-
+
function remove_openid() {
-
+
$openid_url = $this->trimmed('openid_url');
$oid = User_openid::staticGet('canonical', $openid_url);
if (!$oid) {
$this->show_form(_t('OpenID removed.'), true);
return;
}
-}
\ No newline at end of file
+}
class PasswordAction extends SettingsAction {
- function show_top($arr) {
- $msg = $arr[0];
- $success = $arr[1];
- if ($msg) {
- $this->message($msg, $success);
- } else {
- common_element('div', 'instructions',
- _t('You can change your password here. Choose a good one!'));
- }
- $this->settings_menu();
+ function get_instructions() {
+ return _t('You can change your password here. Choose a good one!');
}
-
+
function show_form($msg=NULL, $success=false) {
- common_show_header(_t('Change password'), NULL,
- array($msg, $success), array($this, 'show_top'));
+ $this->form_header(_t('Change password'), $msg, $success);
common_element_start('form', array('method' => 'POST',
'id' => 'password',
'action' =>
$this->show_form(_t('Password saved'), true);
}
-}
\ No newline at end of file
+}
class ProfilesettingsAction extends SettingsAction {
- function show_top($arr) {
- $msg = $arr[0];
- $success = $arr[1];
- if ($msg) {
- $this->message($msg, $success);
- } else {
- common_element('div', 'instructions',
- _t('You can update your personal profile info here '.
- 'so people know more about you.'));
- }
- $this->settings_menu();
+ function get_instructions() {
+ return _t('You can update your personal profile info here '.
+ 'so people know more about you.');
}
-
+
function show_form($msg=NULL, $success=false) {
$user = common_current_user();
$profile = $user->getProfile();
- common_show_header(_t('Profile settings'), NULL, array($msg, $success),
- array($this, 'show_top'));
+ $this->form_header(_t('Profile settings'), $msg, $success);
common_element_start('form', array('method' => 'POST',
'id' => 'profilesettings',
}
function handle_post() {
-
+
$nickname = $this->trimmed('nickname');
$fullname = $this->trimmed('fullname');
$email = $this->trimmed('email');
$location = $this->trimmed('location');
# Some validation
-
+
if ($email && !Validate::email($email, true)) {
$this->show_form(_t('Not a valid email address.'));
return;
$this->show_form(_t('Email address already exists.'));
return;
}
-
+
$user = common_current_user();
$user->query('BEGIN');
if ($user->nickname != $nickname) {
-
+
common_debug('Updating user nickname from ' . $user->nickname . ' to ' . $nickname,
__FILE__);
-
+
$original = clone($user);
-
+
$user->nickname = $nickname;
$result = $user->updateKeys($original);
-
+
if ($result === FALSE) {
common_log_db_error($user, 'UPDATE', __FILE__);
common_server_error(_t('Couldnt update user.'));
}
if ($user->email != $email) {
-
+
common_debug('Updating user email from ' . $user->email . ' to ' . $email,
__FILE__);
-
+
# We don't update email directly; it gets done by confirmemail
$confirm = new Confirm_address();
-
+
$confirm->code = common_confirmation_code(128);
$confirm->user_id = $user->id;
$confirm->address = $email;
$confirm->address_type = 'email';
-
+
$result = $confirm->insert();
-
+
if (!$result) {
common_log_db_error($confirm, 'INSERT', __FILE__);
common_server_error(_t('Couldnt confirm email.'));
return FALSE;
}
-
+
# XXX: try not to do this in the middle of a transaction
-
+
mail_confirm_address($confirm->code,
$profile->nickname,
$email);
}
-
+
$profile = $user->getProfile();
$orig_profile = clone($profile);
common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__);
common_debug('New profile: ' . common_log_objstring($profile), __FILE__);
-
+
$result = $profile->update($orig_profile);
-
+
if (!$result) {
common_log_db_error($profile, 'UPDATE', __FILE__);
common_server_error(_t('Couldnt save profile.'));
$this->show_form(_t('Settings saved.'), TRUE);
}
-
+
function nickname_exists($nickname) {
$user = common_current_user();
$other = User::staticGet('nickname', $nickname);
return $other->id != $user->id;
}
}
-
+
function email_exists($email) {
$user = common_current_user();
$other = User::staticGet('email', $email);
}
}
+ function form_header($title, $msg=NULL, $success=false) {
+ common_show_header($title,
+ NULL,
+ array($msg, $success),
+ array($this, 'show_top'));
+ }
+
+ function show_top($arr) {
+ $msg = $arr[0];
+ $success = $arr[1];
+ if ($msg) {
+ $this->message($msg, $success);
+ } else {
+ $inst = $this->get_instructions();
+ $output = common_markup_to_html($inst);
+ common_element_start('div', 'instructions');
+ common_raw($output);
+ common_element_end('div');
+ }
+ $this->settings_menu();
+ }
+
function settings_menu() {
# action => array('prompt', 'title')
static $menu =
}
return $code;
}
+
+# convert markup to HTML
+
+function common_markup_to_html($c) {
+ $c = preg_replace('/%%action.(\w+)%%/e', "common_local_url('\\1')", $c);
+ $c = preg_replace('/%%doc.(\w+)%%/e', "common_local_url('doc', array('title'=>'\\1'))", $c);
+ $c = preg_replace('/%%(\w+).(\w+)%%/e', 'common_config(\'\\1\', \'\\2\')', $c);
+ return Markdown($c);
+}