# ivyforms/1.5/backend/src/Services/InstallActions/DeleteDatabaseHook.php

The Innovative Form Builder – IvyForms, version 1.5. 66 lines.

- Page: https://pluginprobe.com/plugins/ivyforms/1.5/code/backend/src/Services/InstallActions/DeleteDatabaseHook.php
- Raw: https://pluginprobe.com/plugins/ivyforms/1.5/raw/backend/src/Services/InstallActions/DeleteDatabaseHook.php
- Modified: 2026-10-05T14:37:20+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/ivyforms/1.5/code/backend/src/Services/InstallActions/DeleteDatabaseHook.php#L10-L20`.

```php
<?php

/**
 * Database hook for deletion
 */

namespace IvyForms\Services\InstallActions;

use IvyForms\Common\Exceptions\InvalidArgumentException;
use IvyForms\Services\InstallActions\DB\Confirmation\ConfirmationsTable;
use IvyForms\Services\InstallActions\DB\Entry\EntriesTable;
use IvyForms\Services\InstallActions\DB\EntryField\EntryFieldsTable;
use IvyForms\Services\InstallActions\DB\Field\FieldsTable;
use IvyForms\Services\InstallActions\DB\Form\FormsTable;
use IvyForms\Services\InstallActions\DB\Notification\NotificationsTable;
use IvyForms\Services\InstallActions\DB\FieldOptions\FieldOptionsTable;
use IvyForms\Services\InstallActions\DB\Payment\PaymentsTable;

/**
 * Class DeleteDatabaseHook
 *
 * @package IvyForms\Services\InstallActions
 */
class DeleteDatabaseHook
{
    /**
     * Delete the plugin tables
     *
     * @throws InvalidArgumentException
     */
    public static function delete(): void
    {
        // Delete in reverse order of creation (respecting foreign keys)
        PaymentsTable::delete();
        FieldOptionsTable::delete();
        EntryFieldsTable::delete();
        EntriesTable::delete();
        ConfirmationsTable::delete();
        NotificationsTable::delete();
        FieldsTable::delete();

        /**
         * Fired after lite tables are dropped, before the forms table.
         * Extensions (e.g. Pro) delete their database tables here.
         *
         * @since 0.1.0
         */
        do_action('ivyforms/delete_database/tables');

        FormsTable::delete();

        delete_option('ivyforms_settings');
        delete_option('ivyforms_version');
        delete_option('ivyforms_access_rules');
        delete_option('ivyforms_access_rules_caps_synced_v2');

        /**
         * Fired after lite options are removed.
         * Extensions delete their options, transients, and scheduled events here.
         *
         * @since 0.1.0
         */
        do_action('ivyforms/delete_database/options');
    }
}

```
