$weight) { $current += (float)$weight; if ($rand <= $current) { return (string)$key; } } $keys = array_keys($weights); return (string)end($keys); } $get_params = $_GET; if (isset($config['utm']) && is_array($config['utm'])) { foreach ($get_params as $key => $value) { if (!isset($config['utm'][$key])) { continue; } if (isset($config['utm'][$key]['weights'][$value])) { continue; } if ($value !== 'rnd') { unset($get_params[$key]); continue; } $weights = $config['utm'][$key]['weights'] ?? []; $get_params[$key] = getWeightedRandom($weights); } foreach ($config['utm'] as $key => $value) { if (isset($get_params[$key])) { continue; } $get_params[$key] = $config['utm'][$key]['default']; } } $UTM = $get_params; $host = $config['host'] ?? ($_SERVER['HTTP_HOST'] ?? ''); $apiHost = $host ? (preg_match('#^https?://#', $host) ? rtrim($host, '/') : 'https://' . rtrim($host, '/')) : ''; // После загрузки — на сайт по ключу загрузки (client_key): /api/images/public/claim кладёт её в сессию посетителя и ведёт // на /public/upscale. Сразу на /public/upscale нельзя: сессия кросс-доменной загрузки посетителю на сайте недоступна — 404. $redirect_url_base = ($apiHost ? $apiHost : '') . '/api/images/public/claim?key='; // свою метку key — нет: её значение перебило бы ключ загрузки в адресе claim $redirect_url_utm = http_build_query(array_diff_key($get_params, ['key' => true])); $assetsUriPrefix = $config['assetsUriPrefix'] ?? ''; if ($assetsUriPrefix === '' && !is_dir(__DIR__ . '/images') && !empty($apiHost)) { $assetsUriPrefix = $apiHost; } $fontsUrl = $config['fontsUrl'] ?? ($assetsUriPrefix ? $assetsUriPrefix . '/fonts' : 'fonts'); $favicon = (object)[ 'baseUrl' => $config['faviconUrl'] ?? ($assetsUriPrefix ? $assetsUriPrefix . '/favicon' : 'favicon') ]; $logoAltExt = $config['logoAltExt'] ?? 'svg'; $spritePath = $config['spritePath'] ?? ($assetsUriPrefix ? $assetsUriPrefix . '/images/sprite.svg' : 'images/sprite.svg'); $default_title = $config['title'] ?? 'Улучшение изображения'; $indpic = isset($UTM['indpic']) && preg_match('/^[a-zA-Z0-9_-]+$/', (string)$UTM['indpic']) ? (string)$UTM['indpic'] : ($config['utm']['indpic']['default'] ?? '2'); function renderComponent(string $name, array $params = []): void { global $assetsUriPrefix, $fontsUrl, $favicon, $logoAltExt, $spritePath, $UTM, $config, $indpic, $apiHost, $redirect_url_base, $redirect_url_utm; extract($params, EXTR_SKIP); $componentFile = __DIR__ . '/components/' . $name . '.php'; if (file_exists($componentFile)) { require $componentFile; } } require_once __DIR__ . '/template.php'; ?>