feat: eliminate htaccess.conf, move all URL routes to pp_routes (v0.329-0.330)
- Add category_id, page_id, article_id, type columns to pp_routes (migration 0.329) - Move routing block in index.php before checkUrlParams() with Redis cache - Routes for categories, pages, articles now stored in pp_routes instead of .htaccess - Delete category/page/article routes on entity delete in respective repositories - Eliminate libraries/htaccess.conf: generate .htaccess content entirely from PHP - Move 32 static system routes (koszyk, logowanie, newsletter, AJAX modules, etc.) plus dynamic language/producer routes to pp_routes with type='system' - Invalidate pp_routes Redis cache on every htacces() regeneration Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
76
index.php
76
index.php
@@ -59,6 +59,49 @@ $mdb = new medoo( [
|
||||
'time_debug' => $database['time_debug']
|
||||
] );
|
||||
|
||||
// check routes
|
||||
$parsed_url = parse_url($_SERVER['REQUEST_URI']);
|
||||
$request_uri = ltrim($parsed_url['path'], '/');
|
||||
$query_string = isset($parsed_url['query']) ? $parsed_url['query'] : '';
|
||||
parse_str($query_string, $query_params);
|
||||
|
||||
if ($request_uri != '')
|
||||
{
|
||||
$cache = new \Shared\Cache\CacheHandler();
|
||||
$cacheKey = 'pp_routes:all';
|
||||
$routesCached = $cache->get($cacheKey);
|
||||
|
||||
if ($routesCached === false || $routesCached === null)
|
||||
{
|
||||
$routes = $mdb->select('pp_routes', '*');
|
||||
$cache->set($cacheKey, $routes, 86400);
|
||||
}
|
||||
else
|
||||
{
|
||||
$routes = unserialize($routesCached);
|
||||
}
|
||||
|
||||
foreach ($routes as $route)
|
||||
{
|
||||
$pattern = $route['pattern'];
|
||||
$destination = $route['destination'];
|
||||
|
||||
if (preg_match("#^" . $pattern . "#", $request_uri, $matches))
|
||||
{
|
||||
// Replace placeholders in the destination with matches from the request URI
|
||||
$destination = preg_replace("#^" . $pattern . "#", $destination, $request_uri);
|
||||
|
||||
// Parse the destination string to extract GET parameters
|
||||
parse_str(parse_url($destination, PHP_URL_QUERY), $destination_params);
|
||||
|
||||
// Merge the destination params with query params from the URL
|
||||
$_GET = array_merge($destination_params, $query_params);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\front\App::checkUrlParams();
|
||||
|
||||
$langRepo = new \Domain\Languages\LanguagesRepository( $mdb );
|
||||
@@ -99,39 +142,6 @@ if ( $request_uri != '' )
|
||||
}
|
||||
}
|
||||
|
||||
// check routes
|
||||
$parsed_url = parse_url($_SERVER['REQUEST_URI']);
|
||||
$request_uri = ltrim($parsed_url['path'], '/');
|
||||
$query_string = isset($parsed_url['query']) ? $parsed_url['query'] : '';
|
||||
parse_str($query_string, $query_params);
|
||||
|
||||
if ($request_uri != '')
|
||||
{
|
||||
$matched = false;
|
||||
|
||||
$routes = $mdb->select('pp_routes', '*');
|
||||
foreach ($routes as $route)
|
||||
{
|
||||
$pattern = $route['pattern'];
|
||||
$destination = $route['destination'];
|
||||
|
||||
if (preg_match("#^" . $pattern . "#", $request_uri, $matches))
|
||||
{
|
||||
// Replace placeholders in the destination with matches from the request URI
|
||||
$destination = preg_replace("#^" . $pattern . "#", $destination, $request_uri);
|
||||
|
||||
// Parse the destination string to extract GET parameters
|
||||
parse_str(parse_url($destination, PHP_URL_QUERY), $destination_params);
|
||||
|
||||
// Merge the destination params with query params from the URL
|
||||
$_GET = array_merge($destination_params, $query_params);
|
||||
|
||||
$matched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$pagesRepo = new \Domain\Pages\PagesRepository( $mdb );
|
||||
|
||||
if ( \Shared\Helpers\Helpers::get( 'a' ) == 'page' and \Shared\Helpers\Helpers::get( 'id' ) )
|
||||
|
||||
Reference in New Issue
Block a user