marketo_suite-1.0.x-dev/src/Plugin/SubmissionBehavior/ReplaceWithConfirmation.php
src/Plugin/SubmissionBehavior/ReplaceWithConfirmation.php
<?php
namespace Drupal\e3_marketo\Plugin\SubmissionBehavior;
use Drupal\e3_marketo\Entity\MarketoFormEntityInterface;
use Drupal\e3_marketo\Plugin\SubmissionBehaviorBase;
/**
* Replace with confirmation submission behavior.
*
* @SubmissionBehavior(
* id = "msb_replace",
* label = @Translation("Replace with a confirmation message"),
* description = @Translation("Replaces the form with a confirmation message."),
* weight = 2,
* )
*/
class ReplaceWithConfirmation extends SubmissionBehaviorBase {
/**
* {@inheritdoc}
*/
public function getSubmissionCallbacks(MarketoFormEntityInterface $marketo_form = NULL, array $extra_data = []) : array {
// Check if replacement value has already been directly provided.
if (!empty($extra_data['replacement'])) {
$submission_confirmation = $extra_data['replacement'];
}
// Check for confirmation on the parent entity.
if (empty($submission_confirmation) && !empty($marketo_form->_referringItem)) {
$parent_entity = $marketo_form->_referringItem->getEntity();
if ($parent_entity && $parent_entity->hasField('field_submission_confirmation')) {
$submission_confirmation = $parent_entity->get('field_submission_confirmation')->getValue();
$submission_confirmation = $submission_confirmation[0]['value'] ?? '';
}
}
// If confirmation wasn't provided on placement, look for the one on form.
if (empty($submission_confirmation) && $marketo_form->hasField('field_submission_confirmation')) {
$submission_confirmation = $marketo_form->get('field_submission_confirmation')->getValue();
$submission_confirmation = $submission_confirmation[0]['value'] ?? '';
}
return [
'replaceWithConfirmation' => $submission_confirmation ?? '',
];
}
}
