diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index 0d089fe58fa3fb1e0faf8406aa30a0493b85bbb1..7ab537c8fc62d44b60fba9c4bd682fc4d78eb245 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -189,9 +189,11 @@ class DynamicForm extends VerySimpleModel { } function delete() { + if (!$this->isDeletable()) return false; + // Soft Delete: Mark the form as deleted. $this->setFlag(self::FLAG_DELETED); return $this->save(); } diff --git a/include/class.list.php b/include/class.list.php index a182ef3ce7ed46ef1dc2d6f4087016ef62cfc222..82142b90ea86c50b822c926512284fed8a43b739 100644 --- a/include/class.list.php +++ b/include/class.list.php @@ -355,11 +355,20 @@ class DynamicList extends VerySimpleModel implements CustomList { function delete() { $fields = DynamicFormField::objects()->filter(array( 'type'=>'list-'.$this->id))->count(); - if ($fields == 0) - return parent::delete(); - else - // Refuse to delete lists that are in use by fields + + // Refuse to delete lists that are in use by fields + if ($fields != 0) + return false; + + if (!parent::delete()) return false; + + if (($form = $this->getForm(false))) { + $form->delete(false); + $form->fields->delete(); + } + + return true; } private function createForm() {