render($template, $data); } // Adds slash if no path is in the URL, and convert hostname to lowercase function normalize_url($url) { $parts = parse_url($url); if(empty($parts['path'])) $parts['path'] = '/'; $parts['host'] = strtolower($parts['host']); return build_url($parts); } function build_url($parsed_url) { $scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : ''; $host = isset($parsed_url['host']) ? $parsed_url['host'] : ''; $port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : ''; $user = isset($parsed_url['user']) ? $parsed_url['user'] : ''; $pass = isset($parsed_url['pass']) ? ':' . $parsed_url['pass'] : ''; $pass = ($user || $pass) ? "$pass@" : ''; $path = isset($parsed_url['path']) ? $parsed_url['path'] : ''; $query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : ''; $fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : ''; return "$scheme$user$pass$host$port$path$query$fragment"; } function should_follow_redirects($url) { $host = parse_url($url, PHP_URL_HOST); if(preg_match('/brid\.gy|appspot\.com|blogspot\.com|youtube\.com/', $host)) { return false; } else { return true; } } function phpmf2_version() { $composer = json_decode(file_get_contents(dirname(__FILE__).'/../composer.lock')); $version = 'unknown'; foreach($composer->packages as $pkg) { if($pkg->name == 'mf2/mf2') { $version = $pkg->version; } } return $version; }