Files
roi-theme/Shared/Infrastructure/Services/MigratePageVisibilityService.php
FrankZamora c23dc22d76 feat(templates): add archive-header and post-grid components
- Add ArchiveHeader component (schema, renderer, formbuilder)
- Add PostGrid component (schema, renderer, formbuilder)
- Unify archive templates (home, archive, category, tag,
  author, date, search)
- Add page visibility system with VisibilityDefaults
- Register components in AdminDashboardRenderer
- Fix boolean conversion in functions-addon.php
- All 172 unit tests passed

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-06 20:36:27 -06:00

54 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace ROITheme\Shared\Infrastructure\Services;
use ROITheme\Shared\Domain\Contracts\PageVisibilityRepositoryInterface;
use ROITheme\Shared\Domain\Constants\VisibilityDefaults;
/**
* Servicio para migrar configuración de visibilidad inicial
*
* @package ROITheme\Shared\Infrastructure\Services
*/
final class MigratePageVisibilityService
{
// NOTA: Usa VisibilityDefaults::DEFAULT_VISIBILITY para cumplir DRY
public function __construct(
private readonly PageVisibilityRepositoryInterface $visibilityRepository
) {}
/**
* Ejecuta la migracion para todos los componentes
*
* @return array{created: int, skipped: int}
*/
public function migrate(): array
{
$created = 0;
$skipped = 0;
$components = $this->visibilityRepository->getAllComponentNames();
foreach ($components as $componentName) {
if ($this->visibilityRepository->hasVisibilityConfig($componentName)) {
$skipped++;
continue;
}
// Usar defaults especificos por componente si existen
$this->visibilityRepository->createDefaultVisibility(
$componentName,
VisibilityDefaults::getForComponent($componentName)
);
$created++;
}
return [
'created' => $created,
'skipped' => $skipped,
];
}
}