]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
start showing actions for flagged profiles
authorEvan Prodromou <evan@status.net>
Mon, 16 Nov 2009 16:43:15 +0000 (17:43 +0100)
committerEvan Prodromou <evan@status.net>
Mon, 16 Nov 2009 16:43:15 +0000 (17:43 +0100)
plugins/UserFlag/adminprofileflag.php

index b264beecb5270105300b507fd951aa6dd1c10cd1..62948099107e8387d7879027a04c2db51a3aa65a 100644 (file)
@@ -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()
+    {
+    }
+}