Merge branch 'master' of https://git.mcnd.ca/mcndave/picea
This commit is contained in:
commit
14cfb46c98
10 files changed
+159
-23
No files matched your search
@@ -14,8 +14,8 @@ class UrlExtension implements Extension {
|
||||
|
||||
protected array $routesTarget;
|
||||
|
||||
public array $tokens = [ "url" , "route", "route.cacheless", "asset", "url.current", "url.parameters" ];
|
||||
|
||||
public array $tokens = [ "url" , "route", "route.cacheless", "asset", "url.current", "url.parameters", "slug" ];
|
||||
|
||||
public function __construct(Context $context, string $urlBase = "", string $assetToken = "") {
|
||||
$this->urlBase = trim($urlBase, "/");
|
||||
$this->assetToken = $assetToken;
|
||||
@@ -39,6 +39,9 @@ class UrlExtension implements Extension {
|
||||
|
||||
case "url.parameters":
|
||||
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->setUrlParameters($arguments) ?>";
|
||||
|
||||
case "slug":
|
||||
return \Transliterator::createFromRules(':: Any-Latin;:: NFD;:: [:Nonspacing Mark:] Remove;:: NFC;:: [:Punctuation:] Remove;:: Lower();[:Separator:] > \'-\'')->transliterate( $arguments );
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -50,6 +53,7 @@ class UrlExtension implements Extension {
|
||||
$context->pushFunction("current_url", [ $this, 'currentUrl' ]);
|
||||
$context->pushFunction("asset", [ $this, 'buildAssetUrl' ]);
|
||||
$context->pushFunction("route", [ $this, 'buildRouteUrl' ]);
|
||||
$context->pushFunction("slug", [ $this, 'slug' ]);
|
||||
}
|
||||
|
||||
public function getRouteList(bool $full = false) : array
|
||||
@@ -96,6 +100,11 @@ class UrlExtension implements Extension {
|
||||
return $this->scheme() . $this->domain() . $this->base();
|
||||
}
|
||||
|
||||
public static function slug(string $text, string $separator = '-') : string
|
||||
{
|
||||
return str_replace('-', $separator, \Transliterator::createFromRules(':: Any-Latin;:: NFD;:: [:Nonspacing Mark:] Remove;:: NFC;:: [:Punctuation:] Remove;:: Lower();[:Separator:] > \'-\'')->transliterate(str_replace('-', ' ', $text)));
|
||||
}
|
||||
|
||||
public function registerRoute(string $name, string $route, string $class, string $method, array $routeMethods) : void
|
||||
{
|
||||
$this->routes[$name] = [
|
||||
@@ -159,18 +168,19 @@ class UrlExtension implements Extension {
|
||||
|
||||
protected function isHttps() : bool
|
||||
{
|
||||
$header = in_array('https', array_map("strtolower", [
|
||||
$https = in_array('https', array_map("strtolower", [
|
||||
$_SERVER['REQUEST_SCHEME'] ?? "",
|
||||
$_SERVER['X-Url-Scheme'] ?? "",
|
||||
$_SERVER['Front-End-Https'] ?? "",
|
||||
$_SERVER['X-Forwarded-Ssl'] ?? "",
|
||||
$_SERVER['X-Forwarded-Proto'] ?? "",
|
||||
$_SERVER['X-Forwarded-Protocol'] ?? "",
|
||||
]));
|
||||
$_SERVER['HTTP_X_FORWARDED_PROTO'] ?? "",
|
||||
$_SERVER['HTTP_X_FORWARDED_PROTOCOL'] ?? "",
|
||||
])) || isset($_SERVER['HTTP_X_ARR_SSL']);
|
||||
|
||||
return $header
|
||||
return $https
|
||||
|| ( "443" === ( $_SERVER['SERVER_PORT'] ?? "" ) )
|
||||
|| ( "https" === ( $_SERVER['REQUEST_SCHEME'] ?? "http") )
|
||||
|| ( "off" !== ( strtolower($_SERVER['HTTPS'] ?? "off")) );
|
||||
|| ( "off" !== ( strtolower($_SERVER['HTTPS'] ?? $_SERVER['HTTP_X_FORWARDED_SSL'] ?? $_SERVER['X-Forwarded-Ssl'] ?? "off")) );
|
||||
}
|
||||
|
||||
protected function prepareRoute(string $route, array &$arguments)
|
||||
@@ -205,6 +215,5 @@ class UrlExtension implements Extension {
|
||||
}
|
||||
|
||||
return $route;
|
||||
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user