]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/managedaction.php
Added new 'Scroller' plugin from @buttle which aims to replace the out-dated
[quix0rs-gnu-social.git] / lib / managedaction.php
index 318df320e1cf6c19cf4e12ece68782aaea80682a..4caf977210f3d6b9897b5114ca4806c6ce6ea281 100644 (file)
@@ -32,6 +32,20 @@ if (!defined('GNUSOCIAL')) { exit(1); }
 
 class ManagedAction extends Action
 {
+    protected function prepare(array $args=array())
+    {
+        if (!parent::prepare($args)) {
+            return false;
+        }
+        $this->doPreparation();
+        return true;
+    }
+
+    protected function doPreparation()
+    {
+        // pass by default
+    }
+
     /**
      * Handler method
      */
@@ -47,28 +61,41 @@ class ManagedAction extends Action
             }
         }
 
-        if (StatusNet::isAjax()) {
-            $this->showAjax();
-        } else {
-            $this->showPage();
-        }
+        $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();
     }
 
-    public function showAjax()
-    {
-        $this->startHTML('text/xml;charset=utf-8');
-        $this->elementStart('head');
-        // TRANS: Title for conversation page.
-        $this->element('title', null, _m('TITLE','Notice'));
-        $this->elementEnd('head');
-        $this->elementStart('body');
-        $this->showContent();
-        $this->elementEnd('body');
-        $this->endHTML();
+    /**
+     * 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;
     }
 }