diff --git a/lib/AdminPages/Pages/FormEditor.php b/lib/AdminPages/Pages/FormEditor.php index a0e7e869d8..2340c88d1c 100644 --- a/lib/AdminPages/Pages/FormEditor.php +++ b/lib/AdminPages/Pages/FormEditor.php @@ -211,11 +211,7 @@ class FormEditor { if (isset($_GET['action']) && $_GET['action'] === 'create') { $this->createForm(); } - $form = Form::findOne((int)$_GET['id']); - if ($form instanceof Form) { - $form = $form->asArray(); - } - $form['styles'] = $this->formRenderer->getCustomStyles($form); + $form = $this->getFormData((int)$_GET['id']); $customFields = $this->customFieldsRepository->findAll(); $dateTypes = $this->dateBlock->getDateTypes(); $data = [ @@ -337,6 +333,21 @@ class FormEditor { return $translations; } + private function getFormData(int $id) { + $form = Form::findOne($id); + if (!$form instanceof Form) { + return null; + } + $form = $form->asArray(); + $form['styles'] = $this->formRenderer->getCustomStyles($form); + // Use empty settings in case they are corrupted or missing + if (!is_array($form['settings'])) { + $initialFormTemplate = $this->templatesRepository->getFormTemplate(TemplateRepository::INITIAL_FORM_TEMPLATE); + $form['settings'] = $initialFormTemplate->getSettings(); + } + return $form; + } + private function getAllPosts() { global $wpdb; $optionList = $wpdb->get_results('SELECT ID, post_title FROM ' . $wpdb->posts . " WHERE post_type='post'");