X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fuserprofile.php;h=ca060842b6e9b44d2acf742f88bdd4fb2815d45f;hb=b42e044f6e5111fe6cb7d4a7b7431cd9b9b67ccb;hp=80021864add7e7867251167bdf59f353d78d6817;hpb=742317c0da549b3c13be966091824f61b61e0260;p=quix0rs-gnu-social.git diff --git a/lib/userprofile.php b/lib/userprofile.php index 80021864ad..ca060842b6 100644 --- a/lib/userprofile.php +++ b/lib/userprofile.php @@ -69,12 +69,13 @@ class UserProfile extends Widget function showProfileData() { - if (Event::handle('StartProfilePageProfileSection', array(&$this->action, $this->profile))) { + if (Event::handle('StartProfilePageProfileSection', array(&$this->out, $this->profile))) { - $this->out->elementStart('div', 'entity_profile vcard author'); + $this->out->elementStart('div', array('id' => 'i', + 'class' => 'entity_profile vcard author')); $this->out->element('h2', null, _('User profile')); - if (Event::handle('StartProfilePageProfileElements', array(&$this->action, $this->profile))) { + if (Event::handle('StartProfilePageProfileElements', array(&$this->out, $this->profile))) { $this->showAvatar(); $this->showNickname(); @@ -84,17 +85,17 @@ class UserProfile extends Widget $this->showBio(); $this->showProfileTags(); - Event::handle('EndProfilePageProfileElements', array(&$this->action, $this->profile)); + Event::handle('EndProfilePageProfileElements', array(&$this->out, $this->profile)); } $this->out->elementEnd('div'); - Event::handle('EndProfilePageProfileSection', array(&$this->action, $this->profile)); + Event::handle('EndProfilePageProfileSection', array(&$this->out, $this->profile)); } } function showAvatar() { - if (Event::handle('StartProfilePageAvatar', array($this->action, $this->profile))) { + if (Event::handle('StartProfilePageAvatar', array($this->out, $this->profile))) { $avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE); @@ -119,13 +120,13 @@ class UserProfile extends Widget $this->out->elementEnd('dl'); - Event::handle('EndProfilePageAvatar', array($this->action, $this->profile)); + Event::handle('EndProfilePageAvatar', array($this->out, $this->profile)); } } function showNickname() { - if (Event::handle('StartProfilePageNickname', array($this->action, $this->profile))) { + if (Event::handle('StartProfilePageNickname', array($this->out, $this->profile))) { $this->out->elementStart('dl', 'entity_nickname'); $this->out->element('dt', null, _('Nickname')); @@ -137,13 +138,13 @@ class UserProfile extends Widget $this->out->elementEnd('dd'); $this->out->elementEnd('dl'); - Event::handle('EndProfilePageNickname', array($this->action, $this->profile)); + Event::handle('EndProfilePageNickname', array($this->out, $this->profile)); } } function showFullName() { - if (Event::handle('StartProfilePageFullName', array($this->action, $this->profile))) { + if (Event::handle('StartProfilePageFullName', array($this->out, $this->profile))) { if ($this->profile->fullname) { $this->out->elementStart('dl', 'entity_fn'); $this->out->element('dt', null, _('Full name')); @@ -152,26 +153,26 @@ class UserProfile extends Widget $this->out->elementEnd('dd'); $this->out->elementEnd('dl'); } - Event::handle('EndProfilePageFullName', array($this->action, $this->profile)); + Event::handle('EndProfilePageFullName', array($this->out, $this->profile)); } } function showLocation() { - if (Event::handle('StartProfilePageLocation', array($this->action, $this->profile))) { + if (Event::handle('StartProfilePageLocation', array($this->out, $this->profile))) { if ($this->profile->location) { $this->out->elementStart('dl', 'entity_location'); $this->out->element('dt', null, _('Location')); $this->out->element('dd', 'label', $this->profile->location); $this->out->elementEnd('dl'); } - Event::handle('EndProfilePageLocation', array($this->action, $this->profile)); + Event::handle('EndProfilePageLocation', array($this->out, $this->profile)); } } function showHomepage() { - if (Event::handle('StartProfilePageHomepage', array($this->action, $this->profile))) { + if (Event::handle('StartProfilePageHomepage', array($this->out, $this->profile))) { if ($this->profile->homepage) { $this->out->elementStart('dl', 'entity_url'); $this->out->element('dt', null, _('URL')); @@ -182,26 +183,26 @@ class UserProfile extends Widget $this->out->elementEnd('dd'); $this->out->elementEnd('dl'); } - Event::handle('EndProfilePageHomepage', array($this->action, $this->profile)); + Event::handle('EndProfilePageHomepage', array($this->out, $this->profile)); } } function showBio() { - if (Event::handle('StartProfilePageBio', array($this->action, $this->profile))) { + if (Event::handle('StartProfilePageBio', array($this->out, $this->profile))) { if ($this->profile->bio) { $this->out->elementStart('dl', 'entity_note'); $this->out->element('dt', null, _('Note')); $this->out->element('dd', 'note', $this->profile->bio); $this->out->elementEnd('dl'); } - Event::handle('EndProfilePageBio', array($this->action, $this->profile)); + Event::handle('EndProfilePageBio', array($this->out, $this->profile)); } } function showProfileTags() { - if (Event::handle('StartProfilePageProfileTags', array($this->action, $this->profile))) { + if (Event::handle('StartProfilePageProfileTags', array($this->out, $this->profile))) { $tags = Profile_tag::getTags($this->profile->id, $this->profile->id); if (count($tags) > 0) { @@ -222,13 +223,24 @@ class UserProfile extends Widget $this->out->elementEnd('dd'); $this->out->elementEnd('dl'); } - Event::handle('EndProfilePageProfileTags', array($this->action, $this->profile)); + Event::handle('EndProfilePageProfileTags', array($this->out, $this->profile)); } } function showEntityActions() { - if (Event::handle('StartProfilePageActionsSection', array(&$this->action, $this->profile))) { + if ($this->profile->hasRole(Profile_role::DELETED)) { + $this->out->elementStart('div', 'entity_actions'); + $this->out->element('h2', null, _('User actions')); + $this->out->elementStart('ul'); + $this->out->elementStart('p', array('class' => 'profile_deleted')); + $this->out->text(_('User deletion in progress...')); + $this->out->elementEnd('p'); + $this->out->elementEnd('ul'); + $this->out->elementEnd('div'); + return; + } + if (Event::handle('StartProfilePageActionsSection', array(&$this->out, $this->profile))) { $cur = common_current_user(); @@ -236,11 +248,14 @@ class UserProfile extends Widget $this->out->element('h2', null, _('User actions')); $this->out->elementStart('ul'); - if (Event::handle('StartProfilePageActionsElements', array(&$this->action, $this->profile))) { + if (Event::handle('StartProfilePageActionsElements', array(&$this->out, $this->profile))) { if (empty($cur)) { // not logged in - $this->out->elementStart('li', 'entity_subscribe'); - $this->showRemoteSubscribeLink(); - $this->out->elementEnd('li'); + if (Event::handle('StartProfileRemoteSubscribe', array(&$this->out, $this->profile))) { + $this->out->elementStart('li', 'entity_subscribe'); + $this->showRemoteSubscribeLink(); + $this->out->elementEnd('li'); + Event::handle('EndProfileRemoteSubscribe', array(&$this->out, $this->profile)); + } } else { if ($cur->id == $this->profile->id) { // your own page $this->out->elementStart('li', 'entity_edit'); @@ -283,33 +298,103 @@ class UserProfile extends Widget } } + // return-to args, so we don't have to keep re-writing them + + list($action, $r2args) = $this->out->returnToArgs(); + + // push the action into the list + + $r2args['action'] = $action; + // block/unblock $blocked = $cur->hasBlocked($this->profile); $this->out->elementStart('li', 'entity_block'); if ($blocked) { - $ubf = new UnblockForm($this->out, $this->profile, - array('action' => 'showstream', - 'nickname' => $this->profile->nickname)); + $ubf = new UnblockForm($this->out, $this->profile, $r2args); $ubf->show(); } else { - $bf = new BlockForm($this->out, $this->profile, - array('action' => 'showstream', - 'nickname' => $this->profile->nickname)); + $bf = new BlockForm($this->out, $this->profile, $r2args); $bf->show(); } $this->out->elementEnd('li'); + + if ($cur->hasRight(Right::SANDBOXUSER) || + $cur->hasRight(Right::SILENCEUSER) || + $cur->hasRight(Right::DELETEUSER)) { + $this->out->elementStart('li', 'entity_moderation'); + $this->out->element('p', null, _('Moderate')); + $this->out->elementStart('ul'); + if ($cur->hasRight(Right::SANDBOXUSER)) { + $this->out->elementStart('li', 'entity_sandbox'); + if ($this->user->isSandboxed()) { + $usf = new UnSandboxForm($this->out, $this->profile, $r2args); + $usf->show(); + } else { + $sf = new SandboxForm($this->out, $this->profile, $r2args); + $sf->show(); + } + $this->out->elementEnd('li'); + } + + if ($cur->hasRight(Right::SILENCEUSER)) { + $this->out->elementStart('li', 'entity_silence'); + if ($this->user->isSilenced()) { + $usf = new UnSilenceForm($this->out, $this->profile, $r2args); + $usf->show(); + } else { + $sf = new SilenceForm($this->out, $this->profile, $r2args); + $sf->show(); + } + $this->out->elementEnd('li'); + } + + if ($cur->hasRight(Right::DELETEUSER)) { + $this->out->elementStart('li', 'entity_delete'); + $df = new DeleteUserForm($this->out, $this->profile, $r2args); + $df->show(); + $this->out->elementEnd('li'); + } + $this->out->elementEnd('ul'); + $this->out->elementEnd('li'); + } + + if ($cur->hasRight(Right::GRANTROLE)) { + $this->out->elementStart('li', 'entity_role'); + $this->out->element('p', null, _('User role')); + $this->out->elementStart('ul'); + $this->roleButton('administrator', _m('role', 'Administrator')); + $this->roleButton('moderator', _m('role', 'Moderator')); + $this->out->elementEnd('ul'); + $this->out->elementEnd('li'); + } } } - Event::handle('EndProfilePageActionsElements', array(&$this->action, $this->profile)); + Event::handle('EndProfilePageActionsElements', array(&$this->out, $this->profile)); } $this->out->elementEnd('ul'); $this->out->elementEnd('div'); - Event::handle('EndProfilePageActionsSection', array(&$this->action, $this->profile)); + Event::handle('EndProfilePageActionsSection', array(&$this->out, $this->profile)); + } + } + + function roleButton($role, $label) + { + list($action, $r2args) = $this->out->returnToArgs(); + $r2args['action'] = $action; + + $this->out->elementStart('li', "entity_role_$role"); + if ($this->user->hasRole($role)) { + $rf = new RevokeRoleForm($role, $label, $this->out, $this->profile, $r2args); + $rf->show(); + } else { + $rf = new GrantRoleForm($role, $label, $this->out, $this->profile, $r2args); + $rf->show(); } + $this->out->elementEnd('li'); } function showRemoteSubscribeLink()