]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/managedaction.php
Merge branch 'social-master' into rewrites-master/type-hints-asserts
[quix0rs-gnu-social.git] / lib / managedaction.php
index 278131b7a6461db41501a8ad417ccfa09fc52874..4caf977210f3d6b9897b5114ca4806c6ce6ea281 100644 (file)
@@ -64,9 +64,38 @@ class ManagedAction extends Action
         $this->showPage();
     }
 
+    /**
+     * If this is extended in child classes, they should
+     * end with 'return parent::handlePost();' - and they
+     * should only extend this function if what they do
+     * cannot be handled in ->doPost()
+     */
     protected function handlePost()
     {
         // This will only be run if the Action has the property canPost==true
         assert($this->canPost);
+
+        // check for this before token since all POST and FILES data
+        // is losts when size is exceeded
+        if (empty($_POST) && $_SERVER['CONTENT_LENGTH']>0) {
+            // TRANS: Client error displayed when the number of bytes in a POST request exceeds a limit.
+            // TRANS: %s is the number of bytes of the CONTENT_LENGTH.
+            $msg = _m('The server was unable to handle that much POST data (%s MiB) due to its current configuration.',
+                      'The server was unable to handle that much POST data (%s MiB) due to its current configuration.',
+                      round($_SERVER['CONTENT_LENGTH']/1024/1024,2));
+            throw new ClientException($msg);
+        }
+
+        $this->checkSessionToken();
+        return $this->doPost();
+    }
+
+    /**
+     * Do Post stuff. Return a string if successful,
+     * describing what has been done. Always throw an
+     * exception on failure, with a descriptive message.
+     */
+    protected function doPost() {
+        return false;
     }
 }