HEX
Server: Apache/2.4.25 (Debian)
System: Linux server17 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64
User: web37 (1062)
PHP: 7.4.30
Disabled: show_source, highlight_file, apache_child_terminate, apache_get_modules, apache_note, apache_setenv, virtual, dl, disk_total_space, posix_getpwnam, posix_getpwuid, posix_mkfifo, posix_mknod, posix_setpgid, posix_setsid, posix_setuid, posix_uname, proc_nice, openlog, syslog, pfsockopen
Upload Files
File: /var/www/web37/htdocs/fickanzeiger/core/Router.php
<?php
/**
 * Arfooo
 * 
 * @package    Arfooo
 * @copyright  Copyright (c) Arfooo Annuaire (fr) and Arfooo Directory (en)
 *             by Guillaume Hocine (c) 2007 - 2010
 *             http://www.arfooo.com/ (fr) and http://www.arfooo.net/ (en)
 * @author     Guillaume Hocine & Adrian Galewski
 * @license    http://creativecommons.org/licenses/by/2.0/fr/ Creative Commons
 */


/**
 * Class which map urls to actions and actions to urls
 */
class Router
{
    protected static $routes = array();
    private static $rewrites = array();
    private static $reverseRewrites = array();
    private static $websiteDir;

    public function __construct()
    {
        $this->loadDefaultRoutes();
    }

    public function setWebsiteDir($dir)
    {
        self::$websiteDir = $dir;
    }

    public function loadDefaultRoutes()
    {
        require (CODE_ROOT_DIR . "config/routes.php");
        self::$routes = $routes;
    }

    public function addRewrites($file)
    {
        require ($file);
        self::$rewrites += $rewrites;
        self::$reverseRewrites += $reverseRewrites;
    }

    public function getControllerActionUrl($url)
    {
        if (!empty(self::$rewrites) && $url != "/") {
            foreach (self::$rewrites as $pattern => $replacements) {
                $replaced = 0;
                $url = preg_replace($pattern, $replacements, $url, -1, $replaced);
                if ($replaced) {
                    break;
                }
            }
        }

        return $url;
    }

    public static function getRewrittedUrl($urlParts, $absolute = true)
    {
        if (is_array($urlParts)) {
            for ($i = 1, $cnt = count($urlParts); $i < $cnt; $i++) {
                $urlParts[$i] = str_replace("/", " ", $urlParts[$i]);
            }

            $url = call_user_func_array('sprintf', $urlParts);
        } else {
            $url = $urlParts;
        }

        if (!empty(self::$reverseRewrites)) {
            foreach (self::$reverseRewrites as $pattern => $replacements) {
                $replaced = 0;
                $url = preg_replace($pattern, $replacements, $url, -1, $replaced);
                if ($replaced) {
                    break;
                }
            }

            $url = str_replace("\\", "/", $url);
        }

        if (!Config::get("urlRewriting")) {
            $url = "/index.php" . $url;
        }

        $url = ($absolute) ? self::$websiteDir . $url : ltrim($url, '/');
        return $url;
    }

    public static function getResourceUrl($url, $absolute = true)
    {
        $url = ($absolute) ? self::$websiteDir . $url : ltrim($url, '/');
        return $url;
    }

    public function addRoute($routePattern, $routeOptions)
    {
        self::$routes[$routePattern] = $routeOptions;
    }

    /**
     * Return controller dir and routing path for specified url
     *
     * @param string $url
     * @return array
     */
    public function getRoute($url)
    {
        foreach (self::$routes as $routePattern => $routeOptions) {
            if (preg_match('#' . $routePattern . '#', $url . '/')) {
                return $routeOptions;
            }
        }
    }

    public function defaultHandler($url)
    {
        return false;
    }
}