Concerete 5 9.5 update

Heads up on a Concrete CMS issue we ran into after the recent server and core updates.

Form submissions were saving correctly in the dashboard, but email notifications were coming through blank. The issue is in FormBlockSubmissionEmailNotification.php where $attributes is being passed to the mail template:

$mh->addParameter('attributes', $this->getAttributeValues($entry));

In our case, $attributes is returning an empty array even though the entry has data. The actual submitted values are available via the $entry object.

Temporary fix applied in core:

$mh->addParameter('entry', $entry);

Then updated the mail template to loop through:

$entry->getAttributes()

instead of $attributes.

This appears to be a mismatch between how Express form data is stored and how the mail template expects it, possibly related to newer Concrete 9 behavior or legacy form structures.

Important: this is currently a core patch and will need to be reapplied after updates unless we implement a cleaner override or package-level fix.

If anyone has seen a proper override solution for this notifier without modifying core, would be worth standardizing.

Where are you finding this file in concrete 9.5.0?

There was an issue a long time ago where attributes in the email were not in the same order as in the form. A fix was introduced.

And then the issue reappeared.

After several users pointing out the issue again, it turned out the fix had been removed.

@andrew merged the previous fix once more in the core, but the mystery was why it was removed in the first place.

Now you’re experiencing this issue.

I wonder if it’s all linked.

concrete > src > Express > Entry > Notifier > Notification > FormBlockSubmissionEmailNotification.php

Changed this
$mh->replyto($this->getReplyToEmail($entry));
$mh->addParameter(‘entity’, $entry->getEntity());

to This

$mh->replyto($this->getReplyToEmail($entry));
$mh->addParameter(‘entry’, $entry);
$mh->addParameter(‘entity’, $entry->getEntity());

Then updated our application > mail > block_express_form_submission.php

if (isset($entry)) {
foreach ($entry->getAttributes() as $attribute) {
$submittedData .= $attribute->getAttributeKey()->getAttributeKeyDisplayName(‘text’) . “:\r\n”;
$submittedData .= $attribute->getPlainTextValue() . “\r\n\r\n”;
}
}