forked from OS2Forms/os2forms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNemidAddress.php
More file actions
87 lines (73 loc) · 3.09 KB
/
NemidAddress.php
File metadata and controls
87 lines (73 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
namespace Drupal\os2forms_nemid\Plugin\WebformElement;
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Form\FormStateInterface;
use Drupal\os2web_datalookup\LookupResult\CprLookupResult;
use Drupal\webform\WebformSubmissionInterface;
/**
* Provides a 'os2forms_nemid_address' element.
*
* @WebformElement(
* id = "os2forms_nemid_address",
* label = @Translation("NemID Address"),
* description = @Translation("Provides a NemID Address element."),
* category = @Translation("NemID"),
* )
*
* @see \Drupal\os2forms_nemid\Plugin\NemidElementBase
* @see \Drupal\os2forms_nemid\Element\NemidAddress
*/
class NemidAddress extends ServiceplatformenCprElementBase implements NemidElementPersonalInterface {
/**
* {@inheritdoc}
*/
public function getPrepopulateFieldFieldKey(array &$element) {
return CprLookupResult::ADDRESS;
}
/**
* {@inheritdoc}
*/
public function alterForm(array &$element, array &$form, FormStateInterface $form_state) {
parent::alterForm($element, $form, $form_state);
/** @var \Drupal\os2web_datalookup\LookupResult\CprLookupResult $cprLookupResult */
$cprLookupResult = $form_state->get('cprLookupResult');
/** @var \Drupal\webform\WebformSubmissionForm $webformSubmissionForm */
$webformSubmissionForm = $form_state->getFormObject();
/** @var \Drupal\webform\WebformSubmissionInterface $webformSubmission */
$webformSubmission = $webformSubmissionForm->getEntity();
// Only manipulate element on submission create form.
if (!$webformSubmission->isCompleted()) {
if ($cprLookupResult && $cprLookupResult->isNameAddressProtected()) {
NestedArray::setValue($form['elements'], $element['#webform_parents'], $element);
// It is important the 'os2forms_nemid_submission_set_address_protected'
// submit action is executed before the 'save' action. Otherwise,
// submissions are both created and completed, resulting in unexpected
// behavior, e.g. handlers being run twice.
if (isset($form['actions']['submit']['#submit']) && is_array($form['actions']['submit']['#submit'])) {
array_unshift($form['actions']['submit']['#submit'], 'os2forms_nemid_submission_set_address_protected');
}
else {
$form['actions']['submit']['#submit'][] = 'os2forms_nemid_submission_set_address_protected';
}
}
}
else {
$data = $webformSubmission->getData();
if (array_key_exists('os2forms_nemid_elements_nemid_address_protected', $data)) {
$element['#description'] = $this->t('(adresse beskyttelse)');
NestedArray::setValue($form['elements'], $element['#webform_parents'], $element);
}
}
}
/**
* {@inheritdoc}
*/
public function getValue(array $element, WebformSubmissionInterface $webform_submission, array $options = []) {
$value = parent::getValue($element, $webform_submission, $options = []);
$data = $webform_submission->getData();
if (array_key_exists('os2forms_nemid_elements_nemid_address_protected', $data)) {
$value .= ' (adresse beskyttelse)';
}
return $value;
}
}