donation = $donation; $this->fields = $fields; } /** * @since 3.0.0 * * @return string */ public function render(): string { return "

{$this->getTitle()}

{$this->getContents()}
"; } /** * @since 3.0.0 * * @return string */ protected function getTitle(): string { return __('Custom Fields', 'give'); } /** * @since 3.0.0 * * @return string */ protected function getContents(): string { return array_reduce($this->fields, function ($output, Field $field) { $value = $this->getFieldValue($field); $label = method_exists($field, 'getLabel') ? $field->getLabel() : $field->getName(); if (empty($value)) { return $output; } return $output . "
{$label}:  {$value}
"; }, ''); } /** * @since 3.0.0 * * @param Field $field * * @return mixed */ protected function getFieldValue(Field $field) { $metaValue = give()->payment_meta->get_meta($this->donation->id, $field->getName(), true); if (empty($metaValue)) { return ''; } if ($field->getType() === Types::FILE) { return wp_get_attachment_link($metaValue); } return $metaValue; } }