Scalr\System\Zmq\Cron\Task\DnsManager::onCompleted PHP Метод

onCompleted() публичный Метод

См. также: Scalr\System\Zmq\Cron\AbstractTask::onCompleted()
public onCompleted ( )
    public function onCompleted()
    {
        if (!\Scalr::config('scalr.dns.global.enabled')) {
            return true;
        }
        $db = \Scalr::getDb();
        $remoteBind = new Scalr_Net_Dns_Bind_RemoteBind();
        $transport = new Scalr_Net_Dns_Bind_Transports_LocalFs('/usr/sbin/rndc', '/var/named/etc/namedb/client_zones');
        $remoteBind->setTransport($transport);
        $zones = $db->GetAll("SELECT id FROM dns_zones WHERE iszoneconfigmodified = '1'");
        $s_zones = [];
        if (count($zones) != 0) {
            foreach ($zones as $zone) {
                $DBDNSZone = DBDNSZone::loadById($zone['id']);
                switch ($DBDNSZone->status) {
                    case DNS_ZONE_STATUS::PENDING_DELETE:
                    case DNS_ZONE_STATUS::INACTIVE:
                        $remoteBind->removeZoneFromNamedConf($DBDNSZone->zoneName);
                        break;
                    default:
                        $remoteBind->addZoneToNamedConf($DBDNSZone->zoneName, $DBDNSZone->getContents(true));
                        $DBDNSZone->status = DNS_ZONE_STATUS::ACTIVE;
                        break;
                }
                $s_zones[] = $DBDNSZone;
            }
            $remoteBind->saveNamedConf();
            foreach ($s_zones as $DBDNSZone) {
                if ($DBDNSZone->status == DNS_ZONE_STATUS::PENDING_DELETE) {
                    $DBDNSZone->remove();
                } else {
                    if ($DBDNSZone->status == DNS_ZONE_STATUS::INACTIVE) {
                        $DBDNSZone->isOnNsServer = 0;
                    } else {
                        $DBDNSZone->isOnNsServer = 1;
                    }
                    $DBDNSZone->isZoneConfigModified = 0;
                    $DBDNSZone->save();
                }
            }
        }
        $remoteBind->reloadBind();
    }