getZonesData(); foreach ($zones as $domain => $ip) { $domainInLowerCases = IdnaHelper::idnaDecode(strtolower($domain)); if ($activeServices && $this->isToRemoveByServiceStatus($data, $domainInLowerCases)) { unset($zones[$domain]); continue; } if ($activeUsers && $this->isToRemoveByClientStatus($data, $domainInLowerCases)) { unset($zones[$domain]); continue; } } return $zones; } public function isToRemoveByClientStatus($data, $zone) { $domains = $data[SELF::DOMAINS][$zone]; if (isset($domains)) { $clientId = $domains['userid']; return $data[SELF::CLIENTS][$clientId]['status'] != Client::STATUS_ACTIVE ? true : false; } $services = $data[SELF::SERVICES][$zone]; if (isset($services)) { $clientId = $services['userid']; return $data[SELF::CLIENTS][$clientId]['status'] != Client::STATUS_ACTIVE ? true : false; } return true; } public function isToRemoveByServiceStatus($data, $zone) { if (!isset($data[SELF::SERVICES][$zone]) && !isset($data[SELF::DOMAINS][$zone])) { return true; } if ($data[SELF::SERVICES][$zone]['domainstatus'] != Service::ACTIVE && $data[SELF::DOMAINS][$zone]['status'] != Service::ACTIVE) { return true; } return false; } public function getZonesData() { return [ SELF::DOMAINS => array_change_key_case(Domain::getDomainsAsDomainKey(), CASE_LOWER), SELF::SERVICES => array_change_key_case(Service::getServicesAsDomainKey(), CASE_LOWER), SELF::CLIENTS => Client::getClientsAsIdKey() ]; } }