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