public function onAfterWrite() { parent::onAfterWrite(); $changedFields = $this->getChangedFields(); // Reset $this->subpagesToPublishIfPublishingThisRecord = array(); // For detecting a change to $SubmissionPageTitleField sp that all child pages can have their title // fields updated to match the $SubmittedFormField.Value $hasChangedSubmissionPageTitleField = false; if (isset($changedFields['SubmissionPageTitleField']) && $changedFields['SubmissionPageTitleField'] && $changedFields['SubmissionPageTitleField']['before'] !== $changedFields['SubmissionPageTitleField']['after'] && $changedFields['SubmissionPageTitleField']['after'] != '') { $hasChangedSubmissionPageTitleField = true; } // For detecting a change to $TemplatePageMarkup so that all child pages have their $Content field // updated to the HTML provided. $hasChangedTemplatePageMarkup = false; if (isset($changedFields['TemplatePageMarkup']) && $changedFields['TemplatePageMarkup'] && $changedFields['TemplatePageMarkup']['before'] !== $changedFields['TemplatePageMarkup']['after']) { $hasChangedTemplatePageMarkup = true; } if ($hasChangedSubmissionPageTitleField || $hasChangedTemplatePageMarkup) { $classes = UserSubmissionExtension::get_classes_extending(); $list = SiteTree::get()->filter(array('ClassName' => $classes, 'ParentID' => $this->ID)); foreach ($list as $record) { $record->updateDBFromSubmission(); if ($record->getChangedFields(true)) { $isVersionedAndLatestPublished = $record->has_extension('Versioned') && !$record->stagesDiffer('Stage', 'Live'); $record->write(); if ($isVersionedAndLatestPublished) { // Only publish subpages that aren't already in a 'Modified' state. $this->subpagesToPublishIfPublishingThisRecord[] = $record; } } } } }