<?php

// Prevent loading this file *again* manually by plugins like AIO Security and Firewalls.
if (defined('WP_WPAAS_PREPENDED')) {
	return;
}

define('WP_WPAAS_PREPENDED', true);

// Cleans up the environment accounting for the chroot, also defines Pagely constants

// detect chroot and if so fix DOCUMENT_ROOT
if (__DIR__ == '/pagely' || __DIR__ == '/godaddy' || __DIR__ == '/platform/misc') {
    if (is_link('/httpdocs')) {
        // In this scenario we are always double symlinked and the final symlink is absolute, so realpath is better than readlink
        $httpdocsReal = realpath('/httpdocs');
        if ($httpdocsReal !== false) {
            $_SERVER['DOCUMENT_ROOT'] = $httpdocsReal . '/';
        }
    } else {
        $_SERVER['DOCUMENT_ROOT'] = '/httpdocs/';
    }
}

if (is_dir('/configs')) {
    define('PAGELYBIN', '/configs');
} else {
    define('PAGELYBIN', '/pagely');
}

// fix is_ssl detection
if (isset($_SERVER['HTTP_HTTPS'])) {
    $_SERVER['HTTPS'] = $_SERVER['HTTP_HTTPS'];
}

// wordpress config
define('DISABLE_WP_CRON', true);
define('AUTOSAVE_INTERVAL', 300);

if (!defined('WP_CRON_LOCK_TIMEOUT')) {
    define('WP_CRON_LOCK_TIMEOUT', 120);
}

// force disable timthumb webshot
define('WEBSHOT_ENABLED', false);

// PHP basic auth compat
if (!empty($_SERVER['REMOTE_AUTHORIZATION'])) {
    $d = base64_decode($_SERVER['REMOTE_AUTHORIZATION']);
    if ($d !== false) {
        [$_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']] = explode(':', $d);
    }
}

// Authorization header compat
if (empty($_SERVER['HTTP_AUTHORIZATION']) && !empty($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
    $_SERVER['HTTP_AUTHORIZATION'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
}

// Set file permissions using umask
define('FS_CHMOD_DIR', (0777 & ~umask()));
define('FS_CHMOD_FILE', (0666 & ~umask()));

// Remove cruft headers that confuse some plugins like ithemes better security
// REMOTE_ADDR has the correct ip
unset($_SERVER['HTTP_X_CLUSTER_CLIENT']);
unset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']);
unset($_SERVER['HTTP_X_FORWARDED_FOR']);

// fix the problem with returning the free disk space for the whole ceph storage
// it breaks some of the major WP migration plugins because the value is too large
if (version_compare(phpversion(), '8.0.0', '>=')) {
    // php version is high enough
    if (!function_exists('disk_free_space')) {
        function disk_free_space($directory)
        {
            // always return 30GB
            return 32212254720;
        }
    }
    // do the same thing for the alias function
    if (!function_exists('diskfreespace')) {
        function diskfreespace($directory)
        {
            return disk_free_space($directory);
        }
    }
}

// Before we include anything from the user, include our creds
if (file_exists(PAGELYBIN . '/config.php')) {
    include_once PAGELYBIN . '/config.php';
}

$user_setup = '/user/setup.php';
if (file_exists($user_setup)) {
    include_once $user_setup;
}

// Prepend logic related to htaccess file support in nginx-unit
if (getenv('HTACCESS_MERGE_CONFIG_DIR') !== false) {
    // The htaccess golang program in mgmt/golang/pkg/htaccess writes out a prepend file by name prepend-rewrites.php
    define('HTACCESS_PREPEND_FILE', getenv('HTACCESS_MERGE_CONFIG_DIR') . '/prepend-rewrites.php');
    if (file_exists(HTACCESS_PREPEND_FILE)) {
        include_once HTACCESS_PREPEND_FILE;
    }
}
