
# Cârlige

Rudel declanșează acțiuni și filtre WordPress pentru evenimentele din ciclul de viață al sandboxului. Catalogul de mai jos este cel returnat de `Rudel::hooks()`: 28 de acțiuni și 5 filtre.

## Exemplu

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

Majoritatea acțiunilor `before` și `failed` primesc un tablou `$context`. Pentru hook-urile din ciclul de viață al sandboxului, acesta conține `environment` (sau `name`, `options` și `environments_dir` la creare); acțiunile `failed` primesc și `Throwable` capturată ca `$error`.

## Acțiuni din ciclul de viață al sandboxului

| Acțiune | Argumente |
|--------|-----------|
| `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` |

Cele trei acțiuni `replace_state` aparțin lui `EnvironmentManager::replace_environment_state()`, pe care nicio comandă Rudel nu o apelează.

## Acțiuni pentru instantanee

| Acțiune | Argumente |
|--------|-----------|
| `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` conține `environment`, `kind` (`snapshot`), `name` și `path`. Fiecare dintre acestea se declanșează și sub aliasul `snapshot`, de exemplu `rudel_after_snapshot_create`, iar erorile declanșează `rudel_failed_recovery_point_{create|restore|delete}` și `rudel_failed_snapshot_{create|restore|delete}` cu `$context` și eroarea. Aliasurile respective nu apar în catalog.

## Acțiuni de cleanup

| Acțiune | Argumente |
|--------|-----------|
| `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` conține `removed`, `skipped`, `errors` și `reasons`.

## Acțiuni de push Git

| Acțiune | Argumente |
|--------|-----------|
| `rudel_before_environment_push` | `$context` |
| `rudel_after_environment_push` | `$sha`, `$context` |
| `rudel_environment_push_failed` | `$context`, `$error` |

Acestea se declanșează pentru `Rudel::push()`. `$context` conține `environment`, `remote`, `message` și `subdir`. Comanda `wp rudel push` face push direct și nu le declanșează.

## Acțiuni de automatizare

| Acțiune | Argumente |
|--------|-----------|
| `rudel_before_automation_cleanup` | `$config` |
| `rudel_after_automation_cleanup` | `$result`, `$config` |
| `rudel_after_automation_expiring_environments` | `$result`, `$config` |

`$config` este tabloul complet `rudel_config`. Consultați [Automatizare](https://rudel.inline0.dev/ro/docs/features/automation).

## Filtre

| Filtru | Argumente |
|--------|-----------|
| `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` poate modifica opțiunile oricărui apel de creare înainte ca Rudel să le proceseze. `rudel_environment_clone_source` filtrează metadatele clonării salvate într-un sandbox creat de pe gazdă. `rudel_environment_db_dropin_contents` se aplică numai drop-in-ului `db.php` folosit de mediile multisite-subsite; sandboxurile overlay, singurul tip creat de versiunile actuale, nu generează niciodată unul.

Filtrele sunt destinate ajustării politicilor, nu înlocuirii modelului de stocare al Rudel. Identitatea la execuție, prefixele tabelelor și metadatele arborilor de lucru rămân stări Rudel bazate pe DB.
