<?php

function get_rocket_cdn_url($url, $zone = array('all'))
{
    $container = apply_filters('rocket_container', '');
    $cdn = $container->get('cdn');
    return $cdn->rewrite_url($url);
}
function rocket_cdn_url($url, $zone = array('all'))
{
    echo esc_url(get_rocket_cdn_url($url, $zone));
}
function get_rocket_cdn_cnames($zone = 'all')
{
    $hosts = [];
    $cnames = get_rocket_option('cdn_cnames', []);
    if ($cnames) {
        $cnames_zone = get_rocket_option('cdn_zone', []);
        $zone = (array) $zone;
        foreach ($cnames as $k => $_urls) {
            if (!in_array($cnames_zone[$k], $zone, true)) {
                continue;
            }
            $_urls = explode(',', $_urls);
            $_urls = array_map('trim', $_urls);
            foreach ($_urls as $url) {
                $hosts[] = $url;
            }
        }
    }
    $hosts = (array) apply_filters('rocket_cdn_cnames', $hosts, $zone);
    $hosts = array_filter($hosts);
    $hosts = array_flip(array_flip($hosts));
    $hosts = array_values($hosts);
    return $hosts;
}
function rocket_is_live_site()
{
    if (rocket_get_constant('WP_ROCKET_DEBUG')) {
        return true;
    }
    $host = wp_parse_url(home_url(), PHP_URL_HOST);
    if (!$host) {
        return false;
    }
    $local_tlds = ['127.0.0.1', 'localhost', '.local', '.test', '.docksal', '.docksal.site', '.dev.cc', '.lndo.site'];
    foreach ($local_tlds as $local_tld) {
        if ($host === $local_tld) {
            return false;
        }
        if (substr($host, -strlen($local_tld)) === $local_tld) {
            return false;
        }
    }
    $staging = ['.wpengine.com', '.pantheonsite.io', '.flywheelsites.com', '.flywheelstaging.com', '.kinsta.com', '.kinsta.cloud', '.cloudwaysapps.com', '.azurewebsites.net', '.wpserveur.net', '-liquidwebsites.com', '.myftpupload.com', '.dream.press', '.sg-host.com', '.platformsh.site', '.wpstage.net'];
    foreach ($staging as $partial_host) {
        if (strpos($host, $partial_host)) {
            return false;
        }
    }
    return true;
}