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