I’m developing my first webform handler and I need to access the submitter of the webform submission in the postSave
method.
I know I can get the id
of the webform submission with $webform_submission->id()
. But I can’t figure out how to get the submitter. Is there a place in the docs where I can read all the methods available for WebformSubmissionInterface
? As far as I know, $webform_submission->getWebform()->getOwner()
is NOT what I’m looking for, because it tells me the owner of the form, not the "owner" of the submission. I have found this link, but it’s not as detailed as I need: How do I find out which what fields are available?
The reason why I need to know the submitter is the following:
- I want to develop some kind of "wallet" for my website. For that purpose, I have installed the "profiles" module and I have created a "wallet" profile type with a single field: "Balance". So every user will have a "balance".
- I have also created a webform called "New transaction" where users will submit deposits and/or withdrawals. This webform has, among other fields, a field "status" and a field "amount".
- When a user submits a "new transaction", the webform submission gets stored with a status "VERIFYING" and an email handler sends an email to the administrator of the website (no WebformHandler is involved here).
- The administrator receives the email and reviews the deposit/withdrawal. If it is OK, the administrator updates the status of the submission to "ACCEPTED". It is in that moment (when the administrator updates the submission) when the WebformHandler does its magic. It adds/substracts the amount to the balance of the wallet profile that belongs to the user that made the submission. This is why I need to know the user that created the webform submission. I need to do the following to retrieve the wallet profile of the user:
$wallet_profiles = Drupal::entityTypeManager()->getStorage("profile") ->loadByProperties(['uid' => $user->id(), 'type' => 'wallet_profile', 'is_default' => 1, ]);
If anyone knows of a more elegant way to achieve this "wallet" concept, please let me know.
Thanks in advance!