Skip to content

Instantly share code, notes, and snippets.

@iboved
Last active May 1, 2020 09:41
Show Gist options
  • Save iboved/1dd46fce7ed815cd7d76cdab5b2d0138 to your computer and use it in GitHub Desktop.
Save iboved/1dd46fce7ed815cd7d76cdab5b2d0138 to your computer and use it in GitHub Desktop.
<?php
private function redirectToCmsPage(RedirectRule $rule): string
{
$parameters = [];
// Strip curly braces from keys
foreach ($rule->getPlaceholderMatches() as $placeholder => $value) {
$parameters[str_replace(['{', '}'], '', (string) $placeholder)] = $value;
}
return (string) $this->getCmsPageRelativeUrl($rule->getCmsPage(), $parameters);
}
private function redirectToStaticPage(RedirectRule $rule)
{
if (class_exists('\RainLab\Pages\Classes\Page')) {
/** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */
/** @noinspection PhpUndefinedClassInspection */
return $this->getStaticPageRelativeUrl($rule->getStaticPage());
}
return false;
}
private function getCmsPageRelativeUrl($name, $parameters = [])
{
$router = new \Cms\Classes\Router(\Cms\Classes\Theme::getActiveTheme());
$parameters = array_merge($router->getParameters(), $parameters);
$url = $router->findByFile($name, $parameters);
if ($url) {
return $url;
}
return null;
}
private function getStaticPageRelativeUrl($name)
{
if (empty($name) || !$page = Page::find($name)) {
return null;
}
return array_get($page->attributes, 'viewBag.url');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment