feat(visibility): añadir opción "Ocultar para usuarios logueados" (Plan 99.16)

- Crear UserVisibilityHelper centralizado en Shared/Infrastructure/Services
- Añadir campo hide_for_logged_in en schemas de 4 componentes
- Integrar validación en Renderers: TopBar, LetsTalk, CTASidebar, CTAPost
- Añadir checkbox UI en FormBuilders de los 4 componentes
- Refactorizar adsense-placement.php para usar el helper centralizado
- Deprecar función roi_should_hide_for_logged_in() (backwards compatible)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
FrankZamora
2025-12-04 18:28:53 -06:00
parent 36d5cf56de
commit ffe6ea8e65
14 changed files with 181 additions and 23 deletions

View File

@@ -0,0 +1,35 @@
<?php
declare(strict_types=1);
namespace ROITheme\Shared\Infrastructure\Services;
/**
* Helper para verificar visibilidad basada en estado de autenticación del usuario.
*
* Similar a PageVisibilityHelper, proporciona método estático para evaluar
* si un componente debe ocultarse para usuarios logueados.
*
* @package ROITheme\Shared\Infrastructure\Services
* @since 1.0.0
*/
final class UserVisibilityHelper
{
/**
* Verifica si el componente debe mostrarse según estado de login.
*
* @param array $visibilityData Datos del grupo 'visibility' del componente
* @return bool true si debe mostrarse, false si debe ocultarse
*/
public static function shouldShowForUser(array $visibilityData): bool
{
$hideForLoggedIn = $visibilityData['hide_for_logged_in'] ?? false;
// Si la opción está activada Y el usuario está logueado, ocultar
if ($hideForLoggedIn && is_user_logged_in()) {
return false;
}
return true;
}
}