]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/block.php
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
[quix0rs-gnu-social.git] / actions / block.php
index 441016d4e999490760936e5286e90d09196252bc..5fae45dffcd46b0140d00e1cb79488abc707a9c1 100644 (file)
@@ -5,14 +5,14 @@
  * PHP version 5
  *
  * @category Action
- * @package  Laconica
- * @author   Evan Prodromou <evan@controlyourself.ca>
- * @author   Robin Millette <millette@controlyourself.ca>
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   Robin Millette <millette@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
- * @link     http://laconi.ca/
+ * @link     http://status.net/
  *
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
@@ -28,7 +28,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-if (!defined('LACONICA')) {
+if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
@@ -36,15 +36,17 @@ if (!defined('LACONICA')) {
  * Block a user action class.
  *
  * @category Action
- * @package  Laconica
- * @author   Evan Prodromou <evan@controlyourself.ca>
- * @author   Robin Millette <millette@controlyourself.ca>
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   Robin Millette <millette@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
- * @link     http://laconi.ca/
+ * @link     http://status.net/
  */
-class BlockAction extends Action
+
+class BlockAction extends ProfileFormAction
 {
     var $profile = null;
+
     /**
      * Take arguments for running
      *
@@ -52,28 +54,22 @@ class BlockAction extends Action
      *
      * @return boolean success flag
      */
+
     function prepare($args)
     {
-        parent::prepare($args);
-        if (!common_logged_in()) {
-            $this->clientError(_('Not logged in.'));
-            return false;
-        }
-        $token = $this->trimmed('token');
-        if (!$token || $token != common_session_token()) {
-            $this->clientError(_('There was a problem with your session token. Try again, please.'));
-            return;
-        }
-        $id = $this->trimmed('blockto');
-        if (!$id) {
-            $this->clientError(_('No profile specified.'));
+        if (!parent::prepare($args)) {
             return false;
         }
-        $this->profile = Profile::staticGet('id', $id);
-        if (!$this->profile) {
-            $this->clientError(_('No profile with that ID.'));
+
+        $cur = common_current_user();
+
+        assert(!empty($cur)); // checked by parent
+
+        if ($cur->hasBlocked($this->profile)) {
+            $this->clientError(_("You already blocked that user."));
             return false;
         }
+
         return true;
     }
 
@@ -86,18 +82,16 @@ class BlockAction extends Action
      *
      * @return void
      */
+
     function handle($args)
     {
-        parent::handle($args);
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
             if ($this->arg('no')) {
-                $cur = common_current_user();
-                $other = Profile::staticGet('id', $this->arg('blockto'));
-                common_redirect(common_local_url('showstream', array('nickname' => $other->nickname)),
-                                303);
+                $this->returnToArgs();
             } elseif ($this->arg('yes')) {
-                $this->blockProfile();
-            } elseif ($this->arg('blockto')) {
+                $this->handlePost();
+                $this->returnToArgs();
+            } else {
                 $this->showPage();
             }
         }
@@ -138,7 +132,7 @@ class BlockAction extends Action
                          'unable to subscribe to you in the future, and '.
                          'you will not be notified of any @-replies from them.'));
         $this->element('input', array('id' => 'blockto-' . $id,
-                                      'name' => 'blockto',
+                                      'name' => 'profileid',
                                       'type' => 'hidden',
                                       'value' => $id));
         foreach ($this->args as $k => $v) {
@@ -146,8 +140,8 @@ class BlockAction extends Action
                 $this->hidden($k, $v);
             }
         }
-        $this->submit('form_action-no', _('No'), 'submit form_action-primary', 'no', _("Do not block this user from this group"));
-        $this->submit('form_action-yes', _('Yes'), 'submit form_action-secondary', 'yes', _('Block this user from this group'));
+        $this->submit('form_action-no', _('No'), 'submit form_action-primary', 'no', _("Do not block this user"));
+        $this->submit('form_action-yes', _('Yes'), 'submit form_action-secondary', 'yes', _('Block this user'));
         $this->elementEnd('fieldset');
         $this->elementEnd('form');
     }
@@ -157,36 +151,21 @@ class BlockAction extends Action
      *
      * @return void
      */
-    function blockProfile()
+
+    function handlePost()
     {
         $cur = common_current_user();
 
-        if ($cur->hasBlocked($this->profile)) {
-            $this->clientError(_('You have already blocked this user.'));
-            return;
+        if (Event::handle('StartBlockProfile', array($cur, $this->profile))) {
+            $result = $cur->block($this->profile);
+            if ($result) {
+                Event::handle('EndBlockProfile', array($cur, $this->profile));
+            }
         }
-        $result = $cur->block($this->profile);
+
         if (!$result) {
             $this->serverError(_('Failed to save block information.'));
             return;
         }
-
-        // 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;
-            }
-        }
-
-        if ($action) {
-            common_redirect(common_local_url($action, $args), 303);
-        } else {
-            common_redirect(common_local_url('subscribers',
-                                             array('nickname' => $cur->nickname)),
-                            303);
-        }
     }
 }
-