setName('zone:version:copy') ->setDescription('Copy a zone version') ->addArgument('zone_id', InputArgument::REQUIRED, 'Zone ID') ->addArgument('version', InputArgument::REQUIRED, 'Zone version'); } protected function execute(InputInterface $input, OutputInterface $output) { parent::execute($input, $output); $zoneId = (int) $this->getInput()->getArgument('zone_id'); $version = (int) $this->getInput()->getArgument('version'); $zoneVersion = ZoneVersionQuery::create() ->filterByZoneId($zoneId) ->filterByVersion($version) ->findOne(); if (null === $zoneVersion) { $this->getOutput()->writeln('Zone version not found.'); return; } $zoneVersionCopy = $zoneVersion->copy(); $zoneVersionCopy ->setVersion(ZoneVersionQuery::create()->orderByVersion(Criteria::DESC)->findOne()->getVersion() + 1) ->setIsActive(false); foreach ($zoneVersion->getZoneRecords() as $record) { $recordCopy = $record->copy(); $recordCopy->save(); $zoneVersionCopy->addZoneRecord($recordCopy); } $zoneVersionCopy->save(); $this->getOutput()->writeln('Zone version copied.'); } }