diff options
author | Evan Prodromou <evan@status.net> | 2009-11-16 17:43:15 +0100 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2009-11-16 17:43:15 +0100 |
commit | 84e427c6c147ec69f6d2f32ea64c1508e7c4dded (patch) | |
tree | 4616f9b0573f084d381262622b53d5171b2ec068 /plugins/UserFlag | |
parent | 4f9f3665f7958a6c56279e70de8f987728554d8d (diff) |
start showing actions for flagged profiles
Diffstat (limited to 'plugins/UserFlag')
-rw-r--r-- | plugins/UserFlag/adminprofileflag.php | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/plugins/UserFlag/adminprofileflag.php b/plugins/UserFlag/adminprofileflag.php index b264beecb..629480991 100644 --- a/plugins/UserFlag/adminprofileflag.php +++ b/plugins/UserFlag/adminprofileflag.php @@ -53,6 +53,8 @@ class AdminprofileflagAction extends Action function prepare($args) { + parent::prepare($args); + return true; } @@ -83,6 +85,112 @@ class AdminprofileflagAction extends Action function showContent() { + $profile = $this->getProfiles(); + + $pl = new FlaggedProfileList($profile, $this); + + $pl->show(); + } + + function getProfiles() + { + $ufp = new User_flag_profile(); + + $ufp->selectAdd(); + $ufp->selectAdd('profile_id'); + $ufp->selectAdd('count(*) as flag_count'); + + $ufp->whereAdd('cleared is NULL'); + + $ufp->groupBy('profile_id'); + $ufp->orderBy('flag_count DESC'); + + $profiles = array(); + + if ($ufp->find()) { + while ($ufp->fetch()) { + $profile = Profile::staticGet('id', $ufp->profile_id); + if (!empty($profile)) { + $profiles[] = $profile; + } + } + } + + $ufp->free(); + + return new ArrayWrapper($profiles); } } +class FlaggedProfileList extends ProfileList { + + function newListItem($profile) + { + return new FlaggedProfileListItem($this->profile, $this->action); + } +} + +class FlaggedProfileListItem extends ProfileListItem +{ + var $user = null; + + function showActions() + { + $this->user = common_current_user(); + + $this->startActions(); + if (Event::handle('StartProfileListItemActionElements', array($this))) { + $this->showSandboxButton(); + $this->showSilenceButton(); + $this->showDeleteButton(); + $this->showClearButton(); + Event::handle('EndProfileListItemActionElements', array($this)); + } + $this->endActions(); + } + + function showSandboxButton() + { + if ($this->user->hasRight(Right::SANDBOXUSER)) { + $this->out->elementStart('li', 'entity_sandbox'); + if ($this->user->isSandboxed()) { + $usf = new UnSandboxForm($this->out, $this->profile); + $usf->show(); + } else { + $sf = new SandboxForm($this->out, $this->profile); + $sf->show(); + } + $this->out->elementEnd('li'); + } + } + + function showSilenceButton() + { + if ($this->user->hasRight(Right::SILENCEUSER)) { + $this->out->elementStart('li', 'entity_silence'); + if ($this->user->isSilenced()) { + $usf = new UnSilenceForm($this->out, $this->profile); + $usf->show(); + } else { + $sf = new SilenceForm($this->out, $this->profile); + $sf->show(); + } + $this->out->elementEnd('li'); + } + } + + function showDeleteButton() + { + + if ($this->user->hasRight(Right::DELETEUSER)) { + $this->out->elementStart('li', 'entity_delete'); + $df = new DeleteUserForm($this->out, $this->profile); + $df->show(); + $this->out->elementEnd('li'); + } + } + + function showClearButton() + { + } +} |