]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
make profile flag actions work like other profile actions
authorEvan Prodromou <evan@status.net>
Mon, 16 Nov 2009 17:24:59 +0000 (18:24 +0100)
committerEvan Prodromou <evan@status.net>
Mon, 16 Nov 2009 17:24:59 +0000 (18:24 +0100)
plugins/UserFlag/flagprofile.php
plugins/UserFlag/flagprofileform.php

index 77c86b233bd50e800a5e44baa69ab12e9d2795fb..8ff2f1f7271edf338bfac92ae3f2e10be1724ec4 100644 (file)
@@ -41,11 +41,8 @@ if (!defined('STATUSNET')) {
  * @link     http://status.net/
  */
 
-class FlagprofileAction extends Action
+class FlagprofileAction extends ProfileFormAction
 {
-    var $profile = null;
-    var $flag    = null;
-
     /**
      * Take arguments for running
      *
@@ -56,34 +53,14 @@ class FlagprofileAction extends Action
 
     function prepare($args)
     {
-        parent::prepare($args);
-
-        if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-            throw new ClientException(_('Action only accepts POST'));
-        }
-
-        if (!common_logged_in()) {
-            $this->clientError(_('Not logged in.'));
-            return false;
-        }
-
-        $id = $this->trimmed('flagprofileto');
-
-        if (!$id) {
-            $this->clientError(_('No profile specified.'));
-            return false;
-        }
-
-        $this->profile = Profile::staticGet('id', $id);
-
-        if (empty($this->profile)) {
-            $this->clientError(_('No profile with that ID.'));
+        if (!parent::prepare($args)) {
             return false;
         }
 
         $user = common_current_user();
 
         assert(!empty($user)); // checked above
+        assert(!empty($this->profile)); // checked above
 
         if (User_flag_profile::exists($this->profile->id,
                                       $user->id))
@@ -96,46 +73,12 @@ class FlagprofileAction extends Action
     }
 
     /**
-     * Handle request
-     *
-     * @param array $args $_REQUEST args; handled in prepare()
+     * Handle POST
      *
      * @return void
      */
 
-    function handle($args)
-    {
-        parent::handle($args);
-
-        $this->flagProfile();
-        
-        if ($this->boolean('ajax')) {
-            header('Content-Type: text/xml;charset=utf-8');
-            $this->xw->startDocument('1.0', 'UTF-8');
-            $this->elementStart('html');
-            $this->elementStart('head');
-            $this->element('title', null, _('Flagged for review'));
-            $this->elementEnd('head');
-            $this->elementStart('body');
-            $this->element('p', 'flagged', _('Flagged'));
-            $this->elementEnd('body');
-            $this->elementEnd('html');
-        } else {
-            $this->returnTo();
-        }
-    }
-
-    function title() {
-        return _('Flag profile');
-    }
-
-    /**
-     * save the profile flag
-     *
-     * @return void
-     */
-
-    function flagProfile()
+    function handlePost()
     {
         $user = common_current_user();
 
@@ -149,25 +92,24 @@ class FlagprofileAction extends Action
         $ufp->created    = common_sql_now();
 
         if (!$ufp->insert()) {
-            throw new ServerException(sprintf(_("Couldn't flag profile '%s' with flag '%s'."),
-                                              $this->profile->nickname, $this->flag));
+            throw new ServerException(sprintf(_("Couldn't flag profile '%s' for review."),
+                                              $this->profile->nickname));
         }
 
         $ufp->free();
     }
 
-    function returnTo()
-    {
-        // Now, gotta figure where we go back to
-        foreach ($this->args as $k => $v) {
-            if ($k == 'returnto-action') {
-                $action = $v;
-            } elseif (substr($k, 0, 9) == 'returnto-') {
-                $args[substr($k, 9)] = $v;
-            }
-        }
-
-        common_redirect(common_local_url($action, $args), 303);
+    function ajaxResults() {
+        header('Content-Type: text/xml;charset=utf-8');
+        $this->xw->startDocument('1.0', 'UTF-8');
+        $this->elementStart('html');
+        $this->elementStart('head');
+        $this->element('title', null, _('Flagged for review'));
+        $this->elementEnd('head');
+        $this->elementStart('body');
+        $this->element('p', 'flagged', _('Flagged'));
+        $this->elementEnd('body');
+        $this->elementEnd('html');
     }
 }
 
index a8396e2d573dc6414fd3a581e2288b16e6dd4e39..262dad4a777aa0690a87bf88c3e29fc5fdc55730 100644 (file)
@@ -45,108 +45,38 @@ require_once INSTALLDIR.'/lib/form.php';
  * @link     http://status.net/
  */
 
-class FlagProfileForm extends Form
+class FlagProfileForm extends ProfileActionForm
 {
     /**
-     * Profile of profile to flag
-     */
-
-    var $profile = null;
-
-    /**
-     * Return-to args
-     */
-
-    var $args = null;
-
-    /**
-     * Constructor
-     *
-     * @param HTMLOutputter $out     output channel
-     * @param Profile       $profile profile of user to flag
-     * @param array         $args    return-to args
-     */
-
-    function __construct($out=null, $profile=null, $args=null)
-    {
-        parent::__construct($out);
-
-        $this->profile = $profile;
-        $this->args    = $args;
-    }
-
-    /**
-     * ID of the form
-     *
-     * @return int ID of the form
-     */
-
-    function id()
-    {
-        return 'flagprofile-' . $this->profile->id;
-    }
-
-    /**
-     * class of the form
+     * Action this form provides
      *
-     * @return string class of the form
+     * @return string Name of the action, lowercased.
      */
 
-    function formClass()
+    function target()
     {
-        return 'form_entity_flag';
+        return 'flagprofile';
     }
 
     /**
-     * Action of the form
+     * Title of the form
      *
-     * @return string URL of the action
+     * @return string Title of the form, internationalized
      */
 
-    function action()
-    {
-        return common_local_url('flagprofile');
-    }
-
-    /**
-     * Legend of the Form
-     *
-     * @return void
-     */
-    function formLegend()
+    function title()
     {
-        $this->out->element('legend', null, _('Flag profile for review'));
-    }
-
-    /**
-     * Data elements of the form
-     *
-     * @return void
-     */
-
-    function formData()
-    {
-        // TODO: let the user choose a flag
-
-        $this->out->hidden('flagprofileto-' . $this->profile->id,
-                           $this->profile->id,
-                           'flagprofileto');
-
-        if ($this->args) {
-            foreach ($this->args as $k => $v) {
-                $this->out->hidden('returnto-' . $k, $v);
-            }
-        }
+        return _('Flag');
     }
 
     /**
-     * Action elements
+     * Description of the form
      *
-     * @return void
+     * @return string description of the form, internationalized
      */
 
-    function formActions()
+    function description()
     {
-        $this->out->submit('submit', _('Flag'), 'submit', null, _('Flag profile for review'));
+        return _('Flag profile for review');
     }
 }