X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fmanagedaction.php;h=e630925e8ffaa865c302465fa9a17a97d0c7f83d;hb=d1fc7c0774b4b8883f90c0202c67285ef34be322;hp=278131b7a6461db41501a8ad417ccfa09fc52874;hpb=7617fb65d701e3c8fbdb5e2798c2956531facf67;p=quix0rs-gnu-social.git diff --git a/lib/managedaction.php b/lib/managedaction.php index 278131b7a6..e630925e8f 100644 --- a/lib/managedaction.php +++ b/lib/managedaction.php @@ -32,7 +32,7 @@ if (!defined('GNUSOCIAL')) { exit(1); } class ManagedAction extends Action { - protected function prepare(array $args=array()) + protected function prepare(array $args = []) { if (!parent::prepare($args)) { return false; @@ -64,9 +64,37 @@ 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 = sprintf(_m('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; } }