Improve handling of null values in profile parameters.

This commit fixes two issues:
- Allowing remote users to clear profile parameters via OMB.
- Improved handling of profile parameters which evaluate to
  false ('0' for example)
This commit is contained in:
Adrian Lang 2009-03-03 16:12:05 +01:00
parent 6ab9d6b140
commit fbe794e44d
5 changed files with 34 additions and 32 deletions

View File

@ -136,16 +136,16 @@ class FinishremotesubscribeAction extends Action
$profile->nickname = $nickname; $profile->nickname = $nickname;
$profile->profileurl = $profile_url; $profile->profileurl = $profile_url;
if ($fullname) { if (!is_null($fullname)) {
$profile->fullname = $fullname; $profile->fullname = $fullname;
} }
if ($homepage) { if (!is_null($homepage)) {
$profile->homepage = $homepage; $profile->homepage = $homepage;
} }
if ($bio) { if (!is_null($bio)) {
$profile->bio = $bio; $profile->bio = $bio;
} }
if ($location) { if (!is_null($location)) {
$profile->location = $location; $profile->location = $location;
} }

View File

@ -367,16 +367,16 @@ class RemotesubscribeAction extends Action
return; return;
} }
if ($profile->fullname) { if (!is_null($profile->fullname)) {
$req->set_parameter('omb_listenee_fullname', $profile->fullname); $req->set_parameter('omb_listenee_fullname', $profile->fullname);
} }
if ($profile->homepage) { if (!is_null($profile->homepage)) {
$req->set_parameter('omb_listenee_homepage', $profile->homepage); $req->set_parameter('omb_listenee_homepage', $profile->homepage);
} }
if ($profile->bio) { if (!is_null($profile->bio)) {
$req->set_parameter('omb_listenee_bio', $profile->bio); $req->set_parameter('omb_listenee_bio', $profile->bio);
} }
if ($profile->location) { if (!is_null($profile->location)) {
$req->set_parameter('omb_listenee_location', $profile->location); $req->set_parameter('omb_listenee_location', $profile->location);
} }
$avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);

View File

@ -138,22 +138,24 @@ class UpdateprofileAction extends Action
$orig_profile = clone($profile); $orig_profile = clone($profile);
if ($nickname) { /* Use values even if they are an empty string. Parsing an empty string in
updateProfile is the specified way of clearing a parameter in OMB. */
if (!is_null($nickname)) {
$profile->nickname = $nickname; $profile->nickname = $nickname;
} }
if ($profile_url) { if (!is_null($profile_url)) {
$profile->profileurl = $profile_url; $profile->profileurl = $profile_url;
} }
if ($fullname) { if (!is_null($fullname)) {
$profile->fullname = $fullname; $profile->fullname = $fullname;
} }
if ($homepage) { if (!is_null($homepage)) {
$profile->homepage = $homepage; $profile->homepage = $homepage;
} }
if ($bio) { if (!is_null($bio)) {
$profile->bio = $bio; $profile->bio = $bio;
} }
if ($location) { if (!is_null($location)) {
$profile->location = $location; $profile->location = $location;
} }

View File

@ -113,9 +113,9 @@ class UserauthorizationAction extends Action
$this->element('a', array('href' => $profile, $this->element('a', array('href' => $profile,
'class' => 'external profile nickname'), 'class' => 'external profile nickname'),
$nickname); $nickname);
if ($fullname) { if (!is_null($fullname)) {
$this->elementStart('div', 'fullname'); $this->elementStart('div', 'fullname');
if ($homepage) { if (!is_null($homepage)) {
$this->element('a', array('href' => $homepage), $this->element('a', array('href' => $homepage),
$fullname); $fullname);
} else { } else {
@ -123,10 +123,10 @@ class UserauthorizationAction extends Action
} }
$this->elementEnd('div'); $this->elementEnd('div');
} }
if ($location) { if (!is_null($location)) {
$this->element('div', 'location', $location); $this->element('div', 'location', $location);
} }
if ($bio) { if (!is_null($bio)) {
$this->element('div', 'bio', $bio); $this->element('div', 'bio', $bio);
} }
$this->elementStart('div', 'license'); $this->elementStart('div', 'license');
@ -179,16 +179,16 @@ class UserauthorizationAction extends Action
$params['omb_listener_nickname'] = $user->nickname; $params['omb_listener_nickname'] = $user->nickname;
$params['omb_listener_profile'] = common_local_url('showstream', $params['omb_listener_profile'] = common_local_url('showstream',
array('nickname' => $user->nickname)); array('nickname' => $user->nickname));
if ($profile->fullname) { if (!is_null($profile->fullname)) {
$params['omb_listener_fullname'] = $profile->fullname; $params['omb_listener_fullname'] = $profile->fullname;
} }
if ($profile->homepage) { if (!is_null($profile->homepage)) {
$params['omb_listener_homepage'] = $profile->homepage; $params['omb_listener_homepage'] = $profile->homepage;
} }
if ($profile->bio) { if (!is_null($profile->bio)) {
$params['omb_listener_bio'] = $profile->bio; $params['omb_listener_bio'] = $profile->bio;
} }
if ($profile->location) { if (!is_null($profile->location)) {
$params['omb_listener_location'] = $profile->location; $params['omb_listener_location'] = $profile->location;
} }
$avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
@ -267,16 +267,16 @@ class UserauthorizationAction extends Action
$profile->nickname = $nickname; $profile->nickname = $nickname;
$profile->profileurl = $profile_url; $profile->profileurl = $profile_url;
if ($fullname) { if (!is_null($fullname)) {
$profile->fullname = $fullname; $profile->fullname = $fullname;
} }
if ($homepage) { if (!is_null($homepage)) {
$profile->homepage = $homepage; $profile->homepage = $homepage;
} }
if ($bio) { if (!is_null($bio)) {
$profile->bio = $bio; $profile->bio = $bio;
} }
if ($location) { if (!is_null($location)) {
$profile->location = $location; $profile->location = $location;
} }
@ -409,7 +409,7 @@ class UserauthorizationAction extends Action
'omb_listenee_profile', 'omb_listenee_nickname', 'omb_listenee_profile', 'omb_listenee_nickname',
'omb_listenee_license') as $param) 'omb_listenee_license') as $param)
{ {
if (!$req->get_parameter($param)) { if (is_null($req->get_parameter($param))) {
throw new OAuthException("Required parameter '$param' not found"); throw new OAuthException("Required parameter '$param' not found");
} }
} }

View File

@ -102,13 +102,13 @@ class ProfileList extends Widget
'alt' => 'alt' =>
($this->profile->fullname) ? $this->profile->fullname : ($this->profile->fullname) ? $this->profile->fullname :
$this->profile->nickname)); $this->profile->nickname));
$hasFN = ($this->profile->fullname) ? 'nickname' : 'fn nickname'; $hasFN = ($this->profile->fullname !== '') ? 'nickname' : 'fn nickname';
$this->out->elementStart('span', $hasFN); $this->out->elementStart('span', $hasFN);
$this->out->raw($this->highlight($this->profile->nickname)); $this->out->raw($this->highlight($this->profile->nickname));
$this->out->elementEnd('span'); $this->out->elementEnd('span');
$this->out->elementEnd('a'); $this->out->elementEnd('a');
if ($this->profile->fullname) { if ($this->profile->fullname !== '') {
$this->out->elementStart('dl', 'entity_fn'); $this->out->elementStart('dl', 'entity_fn');
$this->out->element('dt', null, 'Full name'); $this->out->element('dt', null, 'Full name');
$this->out->elementStart('dd'); $this->out->elementStart('dd');
@ -118,7 +118,7 @@ class ProfileList extends Widget
$this->out->elementEnd('dd'); $this->out->elementEnd('dd');
$this->out->elementEnd('dl'); $this->out->elementEnd('dl');
} }
if ($this->profile->location) { if ($this->profile->location !== '') {
$this->out->elementStart('dl', 'entity_location'); $this->out->elementStart('dl', 'entity_location');
$this->out->element('dt', null, _('Location')); $this->out->element('dt', null, _('Location'));
$this->out->elementStart('dd', 'label'); $this->out->elementStart('dd', 'label');
@ -126,7 +126,7 @@ class ProfileList extends Widget
$this->out->elementEnd('dd'); $this->out->elementEnd('dd');
$this->out->elementEnd('dl'); $this->out->elementEnd('dl');
} }
if ($this->profile->homepage) { if ($this->profile->homepage !== '') {
$this->out->elementStart('dl', 'entity_url'); $this->out->elementStart('dl', 'entity_url');
$this->out->element('dt', null, _('URL')); $this->out->element('dt', null, _('URL'));
$this->out->elementStart('dd'); $this->out->elementStart('dd');
@ -137,7 +137,7 @@ class ProfileList extends Widget
$this->out->elementEnd('dd'); $this->out->elementEnd('dd');
$this->out->elementEnd('dl'); $this->out->elementEnd('dl');
} }
if ($this->profile->bio) { if ($this->profile->bio !== '') {
$this->out->elementStart('dl', 'entity_note'); $this->out->elementStart('dl', 'entity_note');
$this->out->element('dt', null, _('Note')); $this->out->element('dt', null, _('Note'));
$this->out->elementStart('dd', 'note'); $this->out->elementStart('dd', 'note');