/**
  * 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);
                     }
                 }
             }
         }
     }
 }