self::processSave($_POST, $saveUseCase), 'delete' => self::processDelete($_POST, $deleteUseCase), default => null, }; // Redirect con mensaje de éxito $redirect_url = admin_url('admin.php?page=roi-theme-admin&component=custom-css-manager&roi_message=success'); wp_redirect($redirect_url); exit; } catch (ValidationException $e) { $redirect_url = admin_url('admin.php?page=roi-theme-admin&component=custom-css-manager&roi_message=error&roi_error=' . urlencode($e->getMessage())); wp_redirect($redirect_url); exit; } } private static function processSave(array $data, SaveSnippetUseCase $useCase): void { $id = sanitize_text_field($data['snippet_id'] ?? ''); if (empty($id)) { $id = SnippetId::generate()->value(); } $request = SaveSnippetRequest::fromArray([ 'id' => $id, 'name' => sanitize_text_field($data['snippet_name'] ?? ''), 'description' => sanitize_textarea_field($data['snippet_description'] ?? ''), 'css' => wp_strip_all_tags($data['snippet_css'] ?? ''), 'type' => sanitize_text_field($data['snippet_type'] ?? 'deferred'), 'pages' => array_map('sanitize_text_field', $data['snippet_pages'] ?? ['all']), 'enabled' => isset($data['snippet_enabled']), 'order' => absint($data['snippet_order'] ?? 100), ]); $useCase->execute($request); } private static function processDelete(array $data, DeleteSnippetUseCase $useCase): void { $id = sanitize_text_field($data['snippet_id'] ?? ''); if (empty($id)) { throw new ValidationException('ID de snippet requerido para eliminar'); } $useCase->execute($id); } }