Published June 11, 2026 | Version v1.1.1

chain simple forms / surveys into longer runs using the power of R to generate pretty feedback and complex designs https://formr.org

  • 1. Wilhelm Wundt Institute of Psychology, University of Leipzig
  • 2. Georg Elias Müller Institute of Psychology, University of Goettingen

Description

Fixes

  • ParsedownExtra fatal error when a survey item label or run text field contains malformed HTML (e.g. a bare <head> tag). ParsedownExtra's DOMDocument block processor (processTagRoutine) dereferences DOM nodes without null checks, crashing with a PHP Error (TypeError: DOMNode::replaceChild(): Argument #1 ($node) must be of type DOMNode, null given, surfacing on some setups as Call to a member function getAttribute() on null) — not an Exception — so the existing catch (Exception) guard in SurveyStudy::addItems did not intercept it. All Parsedown text() call sites now go through a new parsedown_text_safe() helper (Functions.php) that catches \Throwable, stores the raw (unparsed) text, logs via formr_log_exception, and shows the study author a warning naming the affected field. Covered sites: survey item labels, choice labels, run description/public_blurb/footer_text/privacy/tos, email body, pause text, and page body (the chained call in Page::create() was previously unguarded). Regression-tested in tests/ParsedownTextSafeTest.php.

Changes

  • Updated erusev/parsedown 1.7.4 → 1.8.0 and erusev/parsedown-extra 0.8.1 → 0.9.0 (the February 2026 maintenance releases). Verified that the upgrade alone does not fix the DOMDocument crash above — 0.9.0 ships the same unguarded processTagRoutine — hence the call-site guard.

Files

rubenarslan/formr.org-v1.1.1.zip

Files (4.4 MB)

Name Size Download all
md5:2ff27c432a84a26df688a9163401b4d3
4.4 MB Preview Download

Additional details

Related works