/** * Called before Zend_Controller_Front calls on the router to evaluate the * request against the registered routes * * @param Zend_Controller_Request_Abstract $request */ public function routeStartup(Zend_Controller_Request_Abstract $request) { if ($request instanceof Zend_Controller_Request_Http) { if ($request->isPost() || $request->isPut()) { $post = $request->getPost(); if (empty($post) && empty($_FILES)) { // Get maximum size and meassurement unit $max = ini_get('post_max_size'); $unit = substr($max, -1); if (!is_numeric($unit)) { $max = substr($max, 0, -1); } // Convert to bytes switch (strtoupper($unit)) { case 'G': $max *= 1024; case 'M': $max *= 1024; case 'K': $max *= 1024; } $length = $request->getServer('CONTENT_LENGTH'); if ($max < $length) { if (!empty($this->_callback)) { call_user_func($this->_callback, $request); } else { $e = new Zend_Controller_Exception('Maximum content length size (' . $max . ') exceeded', 1000); $this->getResponse()->setException($e); } } } } } }
public function routeShutdown(Zend_Controller_Request_Abstract $request) { // Avoid error override! :S if (count($this->getResponse()->getException())) { return; } if ($request instanceof Zend_Controller_Request_Http) { if ($request->isPost() || $request->isPut()) { $post = $request->getPost(); if (empty($post) && empty($_FILES)) { // Get maximum size and meassurement unit $max = ini_get('post_max_size'); $unit = substr($max, -1); if (!is_numeric($unit)) { $max = substr($max, 0, -1); } // Convert to bytes switch (strtoupper($unit)) { case 'G': $max *= 1024; case 'M': $max *= 1024; case 'K': $max *= 1024; } $length = $request->getServer('CONTENT_LENGTH'); if ($max < $length) { if (!empty($this->_callback)) { call_user_func($this->_callback, $request); } else { $e = new \Application\Exceptions\InvalidArgumentException('Maximum content length size (' . $max . ') exceeded', ValidationCodes::SYSTEM_POST_SIZE_LIMIT_EXCEESED); $this->getResponse()->setException($e); } } } } } }