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();
}
}
}
}