/**
  * Get errors, sorted into two buckets - 'general' errors to display at
  * the top of the form, and 'field' errors to display inline.
  * Also get some error-related flags.
  * @return array
  */
 protected function getErrors()
 {
     $errors = $this->gateway->getAllErrors();
     $return = array('errors' => array('general' => array(), 'field' => array()));
     $fieldNames = DonationData::getFieldNames();
     foreach ($errors as $key => $error) {
         if (is_array($error)) {
             // TODO: set errors consistently
             $message = implode('<br/>', $error);
         } else {
             $message = $error;
         }
         $errorContext = array('key' => $key, 'message' => $message);
         if (in_array($key, $fieldNames)) {
             $return['errors']['field'][$key] = $errorContext;
         } else {
             $return['errors']['general'][] = $errorContext;
         }
         $return["{$key}_error"] = true;
         if ($key === 'currency_code' || $key === 'amount') {
             $return['show_amount_input'] = true;
         }
     }
     return $return;
 }