setName('zone:push') ->setDescription('Push activated zones to PowerDNS tables') ->setHelp("%command.name% After editing zone versions, you have to push all modifications by using %command.name%. The PDNS records will be replaced with your activated zones versions."); } protected function execute(InputInterface $input, OutputInterface $output) { parent::execute($input, $output); $domains = DomainQuery::create()->filterByZoneId(null, Criteria::NOT_EQUAL)->find(); foreach ($domains as $domain) { RecordQuery::create()->filterByDomain($domain)->find()->delete(); $zoneVersion = $domain->getZone()->getActiveZoneVersion(); if ($zoneVersion === null) { continue; } foreach ($zoneVersion->getZoneRecords() as $zoneRecord) { $record = new Record(); $record->hydrateFromZoneRecord($zoneRecord, $domain); $record->save(); } } } }