
# Hooks

Rudel activeert WordPress-acties en -filters rond gebeurtenissen in de levenscyclus van sandboxes. De catalogus hieronder bevat wat `Rudel::hooks()` retourneert: 28 acties en 5 filters.

## Voorbeeld

```php
add_action(
    'rudel_after_environment_create',
    function ( \Rudel\Environment $environment, array $context ): void {
        error_log( 'Created Rudel environment ' . $environment->id );
    },
    10,
    2
);
```

De meeste `before`- en `failed`-acties ontvangen een `$context`-array. Bij hooks voor de levenscyclus van een sandbox bevat die de `environment` (of de `name`, `options` en `environments_dir` bij het aanmaken); ook ontvangen `failed`-acties de opgevangen `Throwable` als `$error`.

## Acties voor de levenscyclus van sandboxes

| Actie | Argumenten |
|--------|-----------|
| `rudel_before_environment_create` | `$context` |
| `rudel_after_environment_create` | `$environment`, `$context` |
| `rudel_environment_create_failed` | `$context`, `$error` |
| `rudel_before_environment_update` | `$context` |
| `rudel_after_environment_update` | `$environment`, `$context` |
| `rudel_environment_update_failed` | `$context`, `$error` |
| `rudel_before_environment_destroy` | `$context` |
| `rudel_after_environment_destroy` | `$context` |
| `rudel_environment_destroy_failed` | `$context`, `$error` |
| `rudel_before_environment_replace_state` | `$context` |
| `rudel_after_environment_replace_state` | `$result`, `$context` |
| `rudel_environment_replace_state_failed` | `$context`, `$error` |

De drie `replace_state`-acties horen bij `EnvironmentManager::replace_environment_state()`, die door geen enkele Rudel-opdracht wordt aangeroepen.

## Snapshotacties

| Actie | Argumenten |
|--------|-----------|
| `rudel_before_recovery_point_create` | `$context` |
| `rudel_after_recovery_point_create` | `$context`, `$meta` |
| `rudel_before_recovery_point_restore` | `$context` |
| `rudel_after_recovery_point_restore` | `$context` |
| `rudel_before_recovery_point_delete` | `$context` |
| `rudel_after_recovery_point_delete` | `$context` |

`$context` bevat `environment`, `kind` (`snapshot`), `name` en `path`. Elk hiervan wordt ook geactiveerd onder een `snapshot`-alias, bijvoorbeeld `rudel_after_snapshot_create`. Bij fouten worden `rudel_failed_recovery_point_{create|restore|delete}` en `rudel_failed_snapshot_{create|restore|delete}` geactiveerd met `$context` en de fout. Deze aliassen staan niet in de catalogus.

## Opschoningsacties

| Actie | Argumenten |
|--------|-----------|
| `rudel_before_environment_cleanup` | `$options` |
| `rudel_after_environment_cleanup` | `$result`, `$options` |
| `rudel_before_environment_cleanup_merged` | `$options` |
| `rudel_after_environment_cleanup_merged` | `$result`, `$options` |

`$result` bevat `removed`, `skipped`, `errors` en `reasons`.

## Git-pushacties

| Actie | Argumenten |
|--------|-----------|
| `rudel_before_environment_push` | `$context` |
| `rudel_after_environment_push` | `$sha`, `$context` |
| `rudel_environment_push_failed` | `$context`, `$error` |

Deze worden geactiveerd voor `Rudel::push()`. `$context` bevat `environment`, `remote`, `message` en `subdir`. De opdracht `wp rudel push` pusht rechtstreeks en activeert ze niet.

## Automatiseringsacties

| Actie | Argumenten |
|--------|-----------|
| `rudel_before_automation_cleanup` | `$config` |
| `rudel_after_automation_cleanup` | `$result`, `$config` |
| `rudel_after_automation_expiring_environments` | `$result`, `$config` |

`$config` is de volledige `rudel_config`-array. Zie [Automatisering](https://rudel.inline0.dev/nl/docs/features/automation).

## Filters

| Filter | Argumenten |
|--------|-----------|
| `rudel_environment_create_options` | `$options`, `$name`, `$manager` |
| `rudel_environment_clone_source` | `$clone_source`, `$host_url`, `$db_cloned`, `$themes_cloned`, `$plugins_cloned`, `$uploads_cloned`, `$extra` |
| `rudel_environment_cleanup_options` | `$options`, `$repository` |
| `rudel_environment_cleanup_merged_options` | `$options`, `$repository` |
| `rudel_environment_db_dropin_contents` | `$contents`, `$context` |

`rudel_environment_create_options` kan de opties van elke aanroep tot aanmaken wijzigen voordat Rudel deze verwerkt. `rudel_environment_clone_source` filtert de kloonmetadata die wordt opgeslagen op een sandbox die vanaf de host is aangemaakt. `rudel_environment_db_dropin_contents` is alleen van toepassing op de `db.php`-drop-in die multisite-subsiteomgevingen gebruiken; overlay-sandboxes, de enige soort die huidige versies aanmaken, genereren er nooit een.

Filters zijn bedoeld om beleid aan te passen, niet om het opslagmodel van Rudel te vervangen. Runtime-identiteit, tabelprefixen en worktreemetadata blijven DB-gestuurde Rudel-status.
