migrations/Version20251112222049.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20251112222049 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Atualiza zonas publicitárias oficiais (Billboard Home, Billboard, Half Page, Standard, Layer, XTrad, Splash) e remove mobile_banner.';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         // Remover zonas obsoletas
  18.         $this->addSql("DELETE FROM std_ads_zones WHERE machine_name IN ('leaderboard', 'sidebar_rectangle', 'mobile_banner');");
  19.         // Billboard Home
  20.         $this->addSql("
  21.             UPDATE std_ads_zones
  22.             SET name = 'Billboard Home',
  23.                 description = 'Banner principal que aparece antes do menu, apenas na homepage.',
  24.                 position = 'top_home',
  25.                 width = 1450,
  26.                 height = 250
  27.             WHERE machine_name = 'home_billboard';
  28.         ");
  29.         // Billboard (páginas internas)
  30.         // Atualiza se existir, ou cria caso não exista
  31.         $this->addSql("
  32.             UPDATE std_ads_zones
  33.             SET machine_name = 'billboard',
  34.                 name = 'Billboard',
  35.                 description = 'Banner exibido em páginas internas (programas, pesquisa, etc.), geralmente no topo.',
  36.                 width = 1450,
  37.                 height = 250,
  38.                 position = 'top'
  39.             WHERE machine_name IN ('billboard', 'sidebar_rectangle', 'leaderboard');
  40.         ");
  41.         $this->addSql("
  42.             INSERT INTO std_ads_zones (machine_name, name, description, width, height, position, is_active, created_at, updated_at)
  43.             SELECT 'billboard', 'Billboard',
  44.                    'Banner exibido em páginas internas (programas, pesquisa, etc.), geralmente no topo.',
  45.                    1450, 250, 'top', 1, NOW(), NOW()
  46.             WHERE NOT EXISTS (SELECT 1 FROM std_ads_zones WHERE machine_name = 'billboard');
  47.         ");
  48.         // Half Page
  49.         $this->addSql("
  50.             UPDATE std_ads_zones
  51.             SET name = 'Half Page',
  52.                 description = 'Banner vertical de meia página, exibido na lateral direita em desktop ou inline em mobile.',
  53.                 position = 'sidebar',
  54.                 width = 300,
  55.                 height = 600
  56.             WHERE machine_name = 'halfpage';
  57.         ");
  58.         // Standard
  59.         $this->addSql("
  60.             UPDATE std_ads_zones
  61.             SET name = 'Standard',
  62.                 description = 'Formato publicitário exibido no final de cada página, antes do footer. Não deve ser exibido nas páginas de Políticas e Privacidade, Contactos e Sobre Nós.',
  63.                 position = 'footer',
  64.                 width = 1450,
  65.                 height = 250
  66.             WHERE machine_name = 'standard';
  67.         ");
  68.         // Layer, XTrad, Splash
  69.         $this->addSql("
  70.             INSERT INTO std_ads_zones (machine_name, name, description, width, height, position, is_active, created_at, updated_at)
  71.             SELECT 'layer', 'Layer',
  72.                    'Formato sobreposto ao conteúdo, exibido no centro da página. Fecha automaticamente após 5 segundos ou manualmente pelo utilizador.',
  73.                    800, 600, 'center_overlay', 1, NOW(), NOW()
  74.             WHERE NOT EXISTS (SELECT 1 FROM std_ads_zones WHERE machine_name = 'layer');
  75.         ");
  76.         $this->addSql("
  77.             INSERT INTO std_ads_zones (machine_name, name, description, width, height, position, is_active, created_at, updated_at)
  78.             SELECT 'xtrad', 'XTrad',
  79.                    'Formato fixo no canto inferior direito, acompanha o scroll e possui botão de fechar.',
  80.                    300, 250, 'bottom_right_fixed', 1, NOW(), NOW()
  81.             WHERE NOT EXISTS (SELECT 1 FROM std_ads_zones WHERE machine_name = 'xtrad');
  82.         ");
  83.         $this->addSql("
  84.             INSERT INTO std_ads_zones (machine_name, name, description, width, height, position, is_active, created_at, updated_at)
  85.             SELECT 'splash', 'Splash',
  86.                    'Formato de ecrã completo exibido apenas no primeiro acesso do utilizador (640x960).',
  87.                    640, 960, 'fullscreen', 1, NOW(), NOW()
  88.             WHERE NOT EXISTS (SELECT 1 FROM std_ads_zones WHERE machine_name = 'splash');
  89.         ");
  90.     }
  91.     public function down(Schema $schema): void
  92.     {
  93.         // rollback simplificado
  94.         $this->addSql("DELETE FROM std_ads_zones WHERE machine_name IN ('layer', 'xtrad', 'splash', 'billboard');");
  95.         $this->addSql("
  96.             INSERT INTO std_ads_zones (machine_name, name, description, width, height, position, is_active, created_at, updated_at)
  97.             VALUES ('mobile_banner', 'Mobile Banner', 'Banner otimizado para dispositivos móveis (320x50).', 320, 50, 'mobile', 1, NOW(), NOW());
  98.         ");
  99.     }
  100. }