]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/profileformaction.php
Misses this file to merge. I like the comments.
[quix0rs-gnu-social.git] / lib / profileformaction.php
index 92e8611b9c16ddb18b57ffbccebd74e1a59ad980..75f4359c9d8dd6c8b7c8780d4eff21cdde867c4e 100644 (file)
@@ -40,8 +40,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
  * @link     http://status.net/
  */
-
-class ProfileFormAction extends Action
+class ProfileFormAction extends RedirectingAction
 {
     var $profile = null;
 
@@ -52,30 +51,39 @@ class ProfileFormAction extends Action
      *
      * @return boolean success flag
      */
-
-    function prepare($args)
+    function prepare(array $args=array())
     {
         parent::prepare($args);
 
         $this->checkSessionToken();
 
         if (!common_logged_in()) {
-            $this->clientError(_('Not logged in.'));
+            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+            // TRANS: Error message displayed when trying to perform an action that requires a logged in user.
+                $this->clientError(_('Not logged in.'));
+            } else {
+                // Redirect to login.
+                common_set_returnto($this->selfUrl());
+                $user = common_current_user();
+                if (Event::handle('RedirectToLogin', array($this, $user))) {
+                    common_redirect(common_local_url('login'), 303);
+                }
+            }
             return false;
         }
 
         $id = $this->trimmed('profileid');
 
         if (!$id) {
+            // TRANS: Client error displayed when trying to change user options without specifying a user to work on.
             $this->clientError(_('No profile specified.'));
-            return false;
         }
 
-        $this->profile = Profile::staticGet('id', $id);
+        $this->profile = Profile::getKV('id', $id);
 
         if (!$this->profile) {
+            // TRANS: Client error displayed when trying to change user options without specifying an existing user to work on.
             $this->clientError(_('No profile with that ID.'));
-            return false;
         }
 
         return true;
@@ -84,43 +92,17 @@ class ProfileFormAction extends Action
     /**
      * Handle request
      *
-     * Shows a page with list of favorite notices
-     *
      * @param array $args $_REQUEST args; handled in prepare()
      *
      * @return void
      */
-
-    function handle($args)
+    function handle(array $args=array())
     {
         parent::handle($args);
 
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
             $this->handlePost();
-            $this->returnToArgs();
-        }
-    }
-
-    /**
-     * Return to the calling page based on hidden arguments
-     *
-     * @return void
-     */
-
-    function returnToArgs()
-    {
-        foreach ($this->args as $k => $v) {
-            if ($k == 'returnto-action') {
-                $action = $v;
-            } else if (substr($k, 0, 9) == 'returnto-') {
-                $args[substr($k, 9)] = $v;
-            }
-        }
-
-        if ($action) {
-            common_redirect(common_local_url($action, $args), 303);
-        } else {
-            $this->clientError(_("No return-to arguments"));
+            $this->returnToPrevious();
         }
     }
 
@@ -131,9 +113,9 @@ class ProfileFormAction extends Action
      *
      * @return void
      */
-
     function handlePost()
     {
-        return;
+        // TRANS: Server error displayed when using an unimplemented method.
+        $this->serverError(_("Unimplemented method."));
     }
 }