ver. 0.286: Layouts, Menu, Pages frontend migration to Domain

- Add 6 frontend methods to LayoutsRepository (Redis cache, 3-level fallback)
- Add 6 frontend methods to PagesRepository (Redis cache, recursive pages)
- Create front\Views\Menu (clean VIEW replacing front\view\Menu)
- Delete front\factory\Layouts, Menu, Pages + front\view\Menu + dead submenu.php
- Fix null $lang_id TypeError in check_url_params() (remove string type hint + ?? '')
- Optimize Helpers::htacces() from 3 layout calls to 1
- Tests: 470 OK, 1484 assertions (+16 new)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-17 08:21:53 +01:00
parent 92397fce05
commit e2a821a10c
27 changed files with 697 additions and 413 deletions

View File

@@ -24,24 +24,26 @@ class Site
$articleRepo = new \Domain\Article\ArticleRepository( $GLOBALS['mdb'] );
$bannerRepo = new \Domain\Banner\BannerRepository( $GLOBALS['mdb'] );
$layoutsRepo = new \Domain\Layouts\LayoutsRepository( $GLOBALS['mdb'] );
$pagesRepo = new \Domain\Pages\PagesRepository( $GLOBALS['mdb'] );
if ( (int) \Shared\Helpers\Helpers::get( 'layout_id' ) )
$layout = new \cms\Layout( (int) \Shared\Helpers\Helpers::get( 'layout_id' ) );
if ( \Shared\Helpers\Helpers::get( 'article' ) )
$layout = \front\factory\Layouts::article_layout( \Shared\Helpers\Helpers::get( 'article' ) );
$layout = $layoutsRepo->getArticleLayout( (int) \Shared\Helpers\Helpers::get( 'article' ) );
if ( \Shared\Helpers\Helpers::get( 'product' ) )
$layout = \front\factory\Layouts::product_layout( \Shared\Helpers\Helpers::get( 'product' ) );
$layout = $layoutsRepo->getProductLayout( (int) \Shared\Helpers\Helpers::get( 'product' ) );
if ( \Shared\Helpers\Helpers::get( 'category' ) )
$layout = \front\factory\Layouts::category_layout( \Shared\Helpers\Helpers::get( 'category' ) );
$layout = $layoutsRepo->getCategoryLayout( (int) \Shared\Helpers\Helpers::get( 'category' ) );
if ( !$layout and \Shared\Helpers\Helpers::get( 'module' ) )
$layout = \front\factory\Layouts::default_layout();
$layout = $layoutsRepo->getDefaultLayout();
if ( !$layout )
$layout = \front\factory\Layouts::active_layout( $page['id'] );
$layout = $layoutsRepo->getActiveLayout( $page['id'] );
if ( $settings['devel'] == true and file_exists( 'devel.html' ) )
$html = file_get_contents( 'devel.html' );
@@ -120,7 +122,7 @@ class Site
if ( is_array( $menu[0] ) ) foreach( $menu[0] as $menu_tmp )
{
$menu_tmp = explode( ':', $menu_tmp );
$html = str_replace( '[MENU:' . $menu_tmp[1] . ']', \front\view\Menu::menu( \front\factory\Menu::menu_details( $menu_tmp[1] ), $page['id'] ), $html );
$html = str_replace( '[MENU:' . $menu_tmp[1] . ']', \front\Views\Menu::menu( $pagesRepo->frontMenuDetails( (int) $menu_tmp[1], $lang_id ), $page['id'] ), $html );
}
preg_match_all( self::menu_main_pattern, $html, $menu );
@@ -130,7 +132,7 @@ class Site
$html = str_replace(
'[MENU_GLOWNE:' . $menu_tmp[1] . ']',
\Shared\Tpl\Tpl::view( 'menu/main-menu', [
'menu' => \front\factory\Menu::menu_details( $menu_tmp[1] )
'menu' => $pagesRepo->frontMenuDetails( (int) $menu_tmp[1], $lang_id )
] ),
$html );
}