You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.8 KiB

  1. <?php
  2. namespace p3k\XRay;
  3. function view($template, $data=[]) {
  4. global $templates;
  5. return $templates->render($template, $data);
  6. }
  7. // Adds slash if no path is in the URL, and convert hostname to lowercase
  8. function normalize_url($url) {
  9. $parts = parse_url($url);
  10. if(empty($parts['path']))
  11. $parts['path'] = '/';
  12. if(isset($parts['host']))
  13. $parts['host'] = strtolower($parts['host']);
  14. return build_url($parts);
  15. }
  16. function normalize_urls($urls) {
  17. return array_map('\p3k\XRay\normalize_url', $urls);
  18. }
  19. function urls_are_equal($url1, $url2) {
  20. $url1 = normalize_url($url1);
  21. $url2 = normalize_url($url2);
  22. return $url1 == $url2;
  23. }
  24. function build_url($parsed_url) {
  25. $scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : '';
  26. $host = isset($parsed_url['host']) ? $parsed_url['host'] : '';
  27. $port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : '';
  28. $user = isset($parsed_url['user']) ? $parsed_url['user'] : '';
  29. $pass = isset($parsed_url['pass']) ? ':' . $parsed_url['pass'] : '';
  30. $pass = ($user || $pass) ? "$pass@" : '';
  31. $path = isset($parsed_url['path']) ? $parsed_url['path'] : '';
  32. $query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : '';
  33. $fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : '';
  34. return "$scheme$user$pass$host$port$path$query$fragment";
  35. }
  36. function should_follow_redirects($url) {
  37. $host = parse_url($url, PHP_URL_HOST);
  38. if(preg_match('/brid\.gy|appspot\.com|blogspot\.com|youtube\.com/', $host)) {
  39. return false;
  40. } else {
  41. return true;
  42. }
  43. }
  44. function phpmf2_version() {
  45. $composer = json_decode(file_get_contents(dirname(__FILE__).'/../composer.lock'));
  46. $version = 'unknown';
  47. foreach($composer->packages as $pkg) {
  48. if($pkg->name == 'mf2/mf2') {
  49. $version = $pkg->version;
  50. }
  51. }
  52. return $version;
  53. }