(REF) Extract method CRM_Utils_Url::toRelative()
authorTim Otten <totten@civicrm.org>
Sat, 22 Jul 2023 00:17:01 +0000 (17:17 -0700)
committerTim Otten <totten@civicrm.org>
Sat, 22 Jul 2023 01:25:48 +0000 (18:25 -0700)
CRM/Utils/Url.php
Civi/Core/Paths.php

index 51340c3f723159843053f720f4ac01fd27236649..5a40beb5a0a6838f91f2f40c6bc8317482607d9b 100644 (file)
@@ -36,4 +36,18 @@ class CRM_Utils_Url {
     return $parsed->__toString();
   }
 
+  /**
+   * Convert to a relative URL (if host/port matches).
+   *
+   * @param string $value
+   * @return string
+   */
+  public static function toRelative(string $value): string {
+    $parsed = parse_url($value);
+    if (isset($_SERVER['HTTP_HOST']) && isset($parsed['host']) && $_SERVER['HTTP_HOST'] == $parsed['host']) {
+      $value = $parsed['path'];
+    }
+    return $value;
+  }
+
 }
index 478141eb12063358f25cbd5ca4fa2dc3cb907ba2..910353c1ac66a000049dc6b99aaa73225010b04d 100644 (file)
@@ -256,10 +256,7 @@ class Paths {
     $value = rtrim($this->getVariable($defaultContainer, 'url'), '/') . ($isDot ? '' : "/$value");
 
     if ($preferFormat === 'relative') {
-      $parsed = parse_url($value);
-      if (isset($_SERVER['HTTP_HOST']) && isset($parsed['host']) && $_SERVER['HTTP_HOST'] == $parsed['host']) {
-        $value = $parsed['path'];
-      }
+      $value = \CRM_Utils_Url::toRelative($value);
     }
 
     if ($ssl || ($ssl === NULL && \CRM_Utils_System::isSSL())) {