diff --git a/PROJECT_STRUCTURE.md b/PROJECT_STRUCTURE.md
index aa1961c..75d5034 100644
--- a/PROJECT_STRUCTURE.md
+++ b/PROJECT_STRUCTURE.md
@@ -402,3 +402,10 @@ Aktualnie w suite są też testy modułów `Dictionaries`, `Articles` i `Users`
- Modul `/admin/languages/` (jezyki + tlumaczenia) dziala na nowym routingu DI.
- Widoki jezykow przepiete na `components/table-list` i `components/form-edit`.
- Usunieto legacy: `autoload/admin/controls/class.Languages.php`, `autoload/admin/view/class.Languages.php`.
+
+## Aktualizacja 2026-02-12 (ver. 0.255)
+- UPDATE: admin/Controllers/SettingsController, BannerController, DictionariesController, ArticlesController pobieraja listy jezykow przez Domain/Languages/LanguagesRepository (DI), bez zaleznosci od admin/factory/Languages.
+- UPDATE: w admin/Site fabryki DI dla Articles, Banners, Settings, Dictionaries przekazuja rowniez LanguagesRepository.
+- UPDATE: legacy admin/controls/* oraz admin/factory/Shop* przepiete z admin/factory/Languages::languages_list() na bezposrednie wywolania LanguagesRepository.
+- FIX: autoload/admin/factory/class.Languages.php uzywa pelnego znacznika repository = $repository;
+ $this->languagesRepository = $languagesRepository;
}
/**
@@ -185,7 +188,7 @@ class ArticlesController
return \Tpl::view('articles/article-edit', [
'article' => $this->repository->find((int)\S::get('id')),
'menus' => \admin\factory\Pages::menus_list(),
- 'languages' => \admin\factory\Languages::languages_list(),
+ 'languages' => $this->languagesRepository->languagesList(),
'layouts' => \admin\factory\Layouts::layouts_list(),
'user' => $user
]);
diff --git a/autoload/admin/Controllers/BannerController.php b/autoload/admin/Controllers/BannerController.php
index 666a64c..846a068 100644
--- a/autoload/admin/Controllers/BannerController.php
+++ b/autoload/admin/Controllers/BannerController.php
@@ -2,6 +2,7 @@
namespace admin\Controllers;
use Domain\Banner\BannerRepository;
+use Domain\Languages\LanguagesRepository;
use admin\ViewModels\Forms\FormEditViewModel;
use admin\ViewModels\Forms\FormField;
use admin\ViewModels\Forms\FormTab;
@@ -11,11 +12,13 @@ use admin\Support\Forms\FormRequestHandler;
class BannerController
{
private BannerRepository $repository;
+ private LanguagesRepository $languagesRepository;
private FormRequestHandler $formHandler;
- public function __construct(BannerRepository $repository)
+ public function __construct(BannerRepository $repository, LanguagesRepository $languagesRepository)
{
$this->repository = $repository;
+ $this->languagesRepository = $languagesRepository;
$this->formHandler = new FormRequestHandler();
}
@@ -163,7 +166,7 @@ class BannerController
{
$bannerId = (int)\S::get('id');
$banner = $this->repository->find($bannerId);
- $languages = \admin\factory\Languages::languages_list();
+ $languages = $this->languagesRepository->languagesList();
// Sprawdź czy są błędy walidacji z poprzedniego requestu
$validationErrors = $_SESSION['form_errors'][$this->getFormId()] ?? null;
@@ -185,7 +188,7 @@ class BannerController
$bannerId = (int)\S::get('id');
$banner = $this->repository->find($bannerId);
- $languages = \admin\factory\Languages::languages_list();
+ $languages = $this->languagesRepository->languagesList();
$viewModel = $this->buildFormViewModel($banner, $languages);
diff --git a/autoload/admin/Controllers/DictionariesController.php b/autoload/admin/Controllers/DictionariesController.php
index e11e8a8..259d61c 100644
--- a/autoload/admin/Controllers/DictionariesController.php
+++ b/autoload/admin/Controllers/DictionariesController.php
@@ -2,6 +2,7 @@
namespace admin\Controllers;
use Domain\Dictionaries\DictionariesRepository;
+use Domain\Languages\LanguagesRepository;
use admin\ViewModels\Forms\FormAction;
use admin\ViewModels\Forms\FormEditViewModel;
use admin\ViewModels\Forms\FormField;
@@ -11,11 +12,13 @@ use admin\Support\Forms\FormRequestHandler;
class DictionariesController
{
private DictionariesRepository $repository;
+ private LanguagesRepository $languagesRepository;
private FormRequestHandler $formHandler;
- public function __construct(DictionariesRepository $repository)
+ public function __construct(DictionariesRepository $repository, LanguagesRepository $languagesRepository)
{
$this->repository = $repository;
+ $this->languagesRepository = $languagesRepository;
$this->formHandler = new FormRequestHandler();
}
@@ -117,7 +120,7 @@ class DictionariesController
{
$unitId = (int)\S::get('id');
$unit = $this->repository->find($unitId) ?? ['id' => 0, 'languages' => []];
- $languages = \admin\factory\Languages::languages_list();
+ $languages = $this->languagesRepository->languagesList();
$validationErrors = $_SESSION['form_errors'][$this->getFormId()] ?? null;
if ($validationErrors) {
@@ -152,7 +155,7 @@ class DictionariesController
$unitId = (int)\S::get('id');
$unit = $this->repository->find($unitId) ?? ['id' => 0, 'languages' => []];
- $languages = \admin\factory\Languages::languages_list();
+ $languages = $this->languagesRepository->languagesList();
$viewModel = $this->buildFormViewModel($unit, $languages);
$result = $this->formHandler->handleSubmit($viewModel, $_POST);
diff --git a/autoload/admin/Controllers/SettingsController.php b/autoload/admin/Controllers/SettingsController.php
index 68dfaf1..b0318fa 100644
--- a/autoload/admin/Controllers/SettingsController.php
+++ b/autoload/admin/Controllers/SettingsController.php
@@ -1,6 +1,7 @@
settingsRepository = $settingsRepository;
+ $this->languagesRepository = $languagesRepository;
$this->formHandler = new FormRequestHandler();
}
@@ -83,7 +86,7 @@ class SettingsController
exit;
}
- $languages = \admin\factory\Languages::languages_list();
+ $languages = $this->languagesRepository->languagesList();
$settings = $this->settingsRepository->getSettings();
$viewModel = $this->buildFormViewModel($settings, $languages);
@@ -113,7 +116,7 @@ class SettingsController
*/
public function view(): string
{
- $languages = \admin\factory\Languages::languages_list();
+ $languages = $this->languagesRepository->languagesList();
$settings = $this->settingsRepository->getSettings();
$validationErrors = $_SESSION['form_errors'][$this->getFormId()] ?? null;
diff --git a/autoload/admin/class.Site.php b/autoload/admin/class.Site.php
index 015134a..5e14bd6 100644
--- a/autoload/admin/class.Site.php
+++ b/autoload/admin/class.Site.php
@@ -206,21 +206,24 @@ class Site
global $mdb;
return new \admin\Controllers\ArticlesController(
- new \Domain\Article\ArticleRepository( $mdb )
+ new \Domain\Article\ArticleRepository( $mdb ),
+ new \Domain\Languages\LanguagesRepository( $mdb )
);
},
'Banners' => function() {
global $mdb;
return new \admin\Controllers\BannerController(
- new \Domain\Banner\BannerRepository( $mdb )
+ new \Domain\Banner\BannerRepository( $mdb ),
+ new \Domain\Languages\LanguagesRepository( $mdb )
);
},
'Settings' => function() {
global $mdb;
return new \admin\Controllers\SettingsController(
- new \Domain\Settings\SettingsRepository( $mdb )
+ new \Domain\Settings\SettingsRepository( $mdb ),
+ new \Domain\Languages\LanguagesRepository( $mdb )
);
},
'ProductArchive' => function() {
@@ -242,7 +245,8 @@ class Site
global $mdb;
return new \admin\Controllers\DictionariesController(
- new \Domain\Dictionaries\DictionariesRepository( $mdb )
+ new \Domain\Dictionaries\DictionariesRepository( $mdb ),
+ new \Domain\Languages\LanguagesRepository( $mdb )
);
},
'Filemanager' => function() {
diff --git a/autoload/admin/controls/class.Pages.php b/autoload/admin/controls/class.Pages.php
index 4ec7b89..afd9d64 100644
--- a/autoload/admin/controls/class.Pages.php
+++ b/autoload/admin/controls/class.Pages.php
@@ -67,7 +67,7 @@ class Pages
'menu_id' => \S::get( 'menu_id' ),
'menus' => \admin\factory\Pages::menu_lists(),
'layouts' => \admin\factory\Layouts::layouts_list(),
- 'languages' => \admin\factory\Languages::languages_list()
+ 'languages' => ( new \Domain\Languages\LanguagesRepository( $GLOBALS['mdb'] ) )->languagesList()
] );
}
diff --git a/autoload/admin/controls/class.Scontainers.php b/autoload/admin/controls/class.Scontainers.php
index 3fa2279..d06e63e 100644
--- a/autoload/admin/controls/class.Scontainers.php
+++ b/autoload/admin/controls/class.Scontainers.php
@@ -29,7 +29,7 @@ class Scontainers
\admin\factory\Scontainers::container_details(
\S::get( 'id' )
),
- \admin\factory\Languages::languages_list()
+ ( new \Domain\Languages\LanguagesRepository( $GLOBALS['mdb'] ) )->languagesList()
);
}
diff --git a/autoload/admin/controls/class.ShopAttribute.php b/autoload/admin/controls/class.ShopAttribute.php
index ec7e043..6148546 100644
--- a/autoload/admin/controls/class.ShopAttribute.php
+++ b/autoload/admin/controls/class.ShopAttribute.php
@@ -31,7 +31,7 @@ class ShopAttribute
return \Tpl::view( 'shop-attribute/values-edit', [
'attribute' => \admin\factory\ShopAttribute::attribute_details( (int) \S::get( 'attribute-id' ) ),
'values' => \admin\factory\ShopAttribute::get_attribute_values( (int) \S::get( 'attribute-id' ) ),
- 'languages' => \admin\factory\Languages::languages_list()
+ 'languages' => ( new \Domain\Languages\LanguagesRepository( $GLOBALS['mdb'] ) )->languagesList()
] );
}
@@ -60,7 +60,7 @@ class ShopAttribute
{
return \Tpl::view( 'shop-attribute/attribute-edit', [
'attribute' => \admin\factory\ShopAttribute::attribute_details( (int) \S::get( 'id' ) ),
- 'languages' => \admin\factory\Languages::languages_list()
+ 'languages' => ( new \Domain\Languages\LanguagesRepository( $GLOBALS['mdb'] ) )->languagesList()
] );
}
diff --git a/autoload/admin/controls/class.ShopCategory.php b/autoload/admin/controls/class.ShopCategory.php
index f3dd42f..9966704 100644
--- a/autoload/admin/controls/class.ShopCategory.php
+++ b/autoload/admin/controls/class.ShopCategory.php
@@ -51,7 +51,7 @@ class ShopCategory
\S::get( 'id' )
),
\S::get( 'pid' ),
- \admin\factory\Languages::languages_list()
+ ( new \Domain\Languages\LanguagesRepository( $GLOBALS['mdb'] ) )->languagesList()
);
}
@@ -63,4 +63,4 @@ class ShopCategory
'dlang' => \front\factory\Languages::default_language()
] );
}
-}
\ No newline at end of file
+}
diff --git a/autoload/admin/controls/class.ShopProducer.php b/autoload/admin/controls/class.ShopProducer.php
index 03fe750..815e695 100644
--- a/autoload/admin/controls/class.ShopProducer.php
+++ b/autoload/admin/controls/class.ShopProducer.php
@@ -26,7 +26,7 @@ class ShopProducer
{
return \Tpl::view( 'shop-producer/edit', [
'producer' => \S::get( 'id' ) ? new \shop\Producer( \S::get( 'id' ) ) : null,
- 'languages' => \admin\factory\Languages::languages_list()
+ 'languages' => ( new \Domain\Languages\LanguagesRepository( $GLOBALS['mdb'] ) )->languagesList()
] );
}
@@ -34,4 +34,4 @@ class ShopProducer
{
return \Tpl::view( 'shop-producer/list' );
}
-}
\ No newline at end of file
+}
diff --git a/autoload/admin/controls/class.ShopProduct.php b/autoload/admin/controls/class.ShopProduct.php
index e076736..d0181bc 100644
--- a/autoload/admin/controls/class.ShopProduct.php
+++ b/autoload/admin/controls/class.ShopProduct.php
@@ -242,7 +242,7 @@ class ShopProduct
return \Tpl::view( 'shop-product/product-edit', [
'product' => \admin\factory\ShopProduct::product_details( (int) \S::get( 'id' ) ),
- 'languages' => \admin\factory\Languages::languages_list(),
+ 'languages' => ( new \Domain\Languages\LanguagesRepository( $GLOBALS['mdb'] ) )->languagesList(),
'categories' => \admin\factory\ShopCategory::subcategories( null ),
'layouts' => \admin\factory\Layouts::layouts_list(),
'products' => \admin\factory\ShopProduct::products_list(),
diff --git a/autoload/admin/factory/class.Languages.php b/autoload/admin/factory/class.Languages.php
index f77d6bf..3e46b4f 100644
--- a/autoload/admin/factory/class.Languages.php
+++ b/autoload/admin/factory/class.Languages.php
@@ -1,4 +1,4 @@
-
+languagesList((bool)$only_active);
}
}
-?>
-
diff --git a/autoload/admin/factory/class.ShopAttribute.php b/autoload/admin/factory/class.ShopAttribute.php
index 338f447..0eddec2 100644
--- a/autoload/admin/factory/class.ShopAttribute.php
+++ b/autoload/admin/factory/class.ShopAttribute.php
@@ -62,7 +62,7 @@ class ShopAttribute
\admin\factory\ShopProduct::update_product_price_by_attribute_value_impact( $ids[$main_language][$i], $impact_on_the_price[$i] );
- $langs = \admin\factory\Languages::languages_list();
+ $langs = ( new \Domain\Languages\LanguagesRepository( $mdb ) )->languagesList();
foreach ( $langs as $lang )
{
@@ -108,7 +108,7 @@ class ShopAttribute
if ( $impact_on_the_price[$i] )
\admin\factory\ShopProduct::update_product_price_by_attribute_value_impact( $value_id, \S::normalize_decimal( $impact_on_the_price[$i] ) );
- $langs = \admin\factory\Languages::languages_list();
+ $langs = ( new \Domain\Languages\LanguagesRepository( $mdb ) )->languagesList();
if ( \S::is_array_fix( $langs ) ) foreach ( $langs as $lang )
{
if ( $names[$lang['id']][$i] )
diff --git a/autoload/admin/factory/class.ShopProducer.php b/autoload/admin/factory/class.ShopProducer.php
index 969d104..6c3aae5 100644
--- a/autoload/admin/factory/class.ShopProducer.php
+++ b/autoload/admin/factory/class.ShopProducer.php
@@ -28,7 +28,7 @@ class ShopProducer
$id = $mdb -> id();
- $langs = \admin\factory\Languages::languages_list( true );
+ $langs = ( new \Domain\Languages\LanguagesRepository( $mdb ) )->languagesList( true );
foreach ( $langs as $lg )
{
$mdb -> insert( 'pp_shop_producer_lang', [
@@ -55,7 +55,7 @@ class ShopProducer
'id' => (int) $producer_id
] );
- $langs = \admin\factory\Languages::languages_list( true );
+ $langs = ( new \Domain\Languages\LanguagesRepository( $mdb ) )->languagesList( true );
foreach ( $langs as $lg )
{
if ( $translation_id = $mdb -> get( 'pp_shop_producer_lang', 'id', [ 'AND' => [ 'producer_id' => $producer_id, 'lang_id' => $lg['id'] ] ] ) )
@@ -86,4 +86,4 @@ class ShopProducer
}
return false;
}
-}
\ No newline at end of file
+}
diff --git a/autoload/admin/factory/class.ShopProduct.php b/autoload/admin/factory/class.ShopProduct.php
index 0cdbb96..abd34b8 100644
--- a/autoload/admin/factory/class.ShopProduct.php
+++ b/autoload/admin/factory/class.ShopProduct.php
@@ -802,7 +802,7 @@ class ShopProduct
if ( $id )
{
- $langs = \admin\factory\Languages::languages_list( true );
+ $langs = ( new \Domain\Languages\LanguagesRepository( $mdb ) )->languagesList( true );
foreach ( $langs as $lg )
{
$mdb -> insert( 'pp_shop_products_langs', [
@@ -1009,7 +1009,7 @@ class ShopProduct
\admin\factory\ShopProduct::update_product_combinations_prices( $product_id, $price_brutto, $vat, $price_brutto_promo );
- $langs = \admin\factory\Languages::languages_list( true );
+ $langs = ( new \Domain\Languages\LanguagesRepository( $mdb ) )->languagesList( true );
foreach ( $langs as $lg )
{
if ( $translation_id = $mdb -> get( 'pp_shop_products_langs', 'id', [ 'AND' => [ 'product_id' => $product_id, 'lang_id' => $lg['id'] ] ] ) )
diff --git a/tests/Unit/admin/Controllers/ArticlesControllerTest.php b/tests/Unit/admin/Controllers/ArticlesControllerTest.php
index a5da2d3..6b1ad26 100644
--- a/tests/Unit/admin/Controllers/ArticlesControllerTest.php
+++ b/tests/Unit/admin/Controllers/ArticlesControllerTest.php
@@ -4,16 +4,19 @@ namespace Tests\Unit\admin\Controllers;
use PHPUnit\Framework\TestCase;
use admin\Controllers\ArticlesController;
use Domain\Article\ArticleRepository;
+use Domain\Languages\LanguagesRepository;
class ArticlesControllerTest extends TestCase
{
private $mockRepository;
+ private $mockLanguagesRepository;
private $controller;
protected function setUp(): void
{
$this->mockRepository = $this->createMock(ArticleRepository::class);
- $this->controller = new ArticlesController($this->mockRepository);
+ $this->mockLanguagesRepository = $this->createMock(LanguagesRepository::class);
+ $this->controller = new ArticlesController($this->mockRepository, $this->mockLanguagesRepository);
}
public function testCanCreateController(): void
@@ -23,7 +26,7 @@ class ArticlesControllerTest extends TestCase
public function testConstructorAcceptsRepository(): void
{
- $controller = new ArticlesController($this->mockRepository);
+ $controller = new ArticlesController($this->mockRepository, $this->mockLanguagesRepository);
$this->assertInstanceOf(ArticlesController::class, $controller);
}
@@ -66,7 +69,8 @@ class ArticlesControllerTest extends TestCase
$constructor = $reflection->getConstructor();
$params = $constructor->getParameters();
- $this->assertCount(1, $params);
+ $this->assertCount(2, $params);
$this->assertEquals('Domain\Article\ArticleRepository', $params[0]->getType()->getName());
+ $this->assertEquals('Domain\Languages\LanguagesRepository', $params[1]->getType()->getName());
}
}
diff --git a/tests/Unit/admin/Controllers/DictionariesControllerTest.php b/tests/Unit/admin/Controllers/DictionariesControllerTest.php
index 5a357e0..8d936bb 100644
--- a/tests/Unit/admin/Controllers/DictionariesControllerTest.php
+++ b/tests/Unit/admin/Controllers/DictionariesControllerTest.php
@@ -4,21 +4,24 @@ namespace Tests\Unit\admin\Controllers;
use PHPUnit\Framework\TestCase;
use admin\Controllers\DictionariesController;
use Domain\Dictionaries\DictionariesRepository;
+use Domain\Languages\LanguagesRepository;
class DictionariesControllerTest extends TestCase
{
private $mockRepository;
+ private $mockLanguagesRepository;
private $controller;
protected function setUp(): void
{
$this->mockRepository = $this->createMock(DictionariesRepository::class);
- $this->controller = new DictionariesController($this->mockRepository);
+ $this->mockLanguagesRepository = $this->createMock(LanguagesRepository::class);
+ $this->controller = new DictionariesController($this->mockRepository, $this->mockLanguagesRepository);
}
public function testConstructorAcceptsRepository(): void
{
- $controller = new DictionariesController($this->mockRepository);
+ $controller = new DictionariesController($this->mockRepository, $this->mockLanguagesRepository);
$this->assertInstanceOf(DictionariesController::class, $controller);
}
@@ -58,7 +61,8 @@ class DictionariesControllerTest extends TestCase
$constructor = $reflection->getConstructor();
$params = $constructor->getParameters();
- $this->assertCount(1, $params);
+ $this->assertCount(2, $params);
$this->assertEquals('Domain\Dictionaries\DictionariesRepository', $params[0]->getType()->getName());
+ $this->assertEquals('Domain\Languages\LanguagesRepository', $params[1]->getType()->getName());
}
}
diff --git a/tests/Unit/admin/Controllers/SettingsControllerTest.php b/tests/Unit/admin/Controllers/SettingsControllerTest.php
index 5b0d8f0..b93e4cc 100644
--- a/tests/Unit/admin/Controllers/SettingsControllerTest.php
+++ b/tests/Unit/admin/Controllers/SettingsControllerTest.php
@@ -3,6 +3,7 @@ namespace Tests\Unit\admin\Controllers;
use PHPUnit\Framework\TestCase;
use admin\Controllers\SettingsController;
+use Domain\Languages\LanguagesRepository;
use Domain\Settings\SettingsRepository;
/**
@@ -14,17 +15,19 @@ use Domain\Settings\SettingsRepository;
class SettingsControllerTest extends TestCase
{
private $mockSettingsRepository;
+ private $mockLanguagesRepository;
private $controller;
protected function setUp(): void
{
$this->mockSettingsRepository = $this->createMock(SettingsRepository::class);
- $this->controller = new SettingsController($this->mockSettingsRepository);
+ $this->mockLanguagesRepository = $this->createMock(LanguagesRepository::class);
+ $this->controller = new SettingsController($this->mockSettingsRepository, $this->mockLanguagesRepository);
}
public function testConstructorAcceptsRepository(): void
{
- $controller = new SettingsController($this->mockSettingsRepository);
+ $controller = new SettingsController($this->mockSettingsRepository, $this->mockLanguagesRepository);
$this->assertInstanceOf(SettingsController::class, $controller);
}
diff --git a/updates/0.20/ver_0.255.zip b/updates/0.20/ver_0.255.zip
new file mode 100644
index 0000000..e24ea94
Binary files /dev/null and b/updates/0.20/ver_0.255.zip differ
diff --git a/updates/0.20/ver_0.255_files.txt b/updates/0.20/ver_0.255_files.txt
new file mode 100644
index 0000000..e69de29
diff --git a/updates/changelog.php b/updates/changelog.php
index 3f34830..c038a18 100644
--- a/updates/changelog.php
+++ b/updates/changelog.php
@@ -1,4 +1,9 @@
-ver. 0.254 - 12.02.2026
+ver. 0.255 - 12.02.2026
+- UPDATE - kontrolery admin `Settings`, `Banners`, `Dictionaries`, `Articles` pobieraja liste jezykow przez `Domain\\Languages\\LanguagesRepository` (DI)
+- UPDATE - routing DI (`admin\\Site`) przekazuje `LanguagesRepository` do kontrolerow `Articles`, `Banners`, `Settings`, `Dictionaries`
+- UPDATE - aktywne legacy odwolania (`admin\\controls`, `admin\\factory\\Shop*`) przepiete z `admin\\factory\\Languages` na `LanguagesRepository`
+- FIX - `autoload/admin/factory/class.Languages.php` uzywa `ver. 0.254 - 12.02.2026
- UPDATE - modul `Languages` w panelu admin przepiety na `Domain\\Languages\\LanguagesRepository` + `admin\\Controllers\\LanguagesController`
- UPDATE - migracja widokow languages (`languages-list`, `language-edit`, `translations-list`, `translation-edit`) na `components/table-list` i `components/form-edit`
- UPDATE - routing DI dla `Languages` w `admin\\Site` oraz kompatybilna fasada `admin\\factory\\Languages` delegujaca do repozytorium
diff --git a/updates/versions.php b/updates/versions.php
index 8f173d6..f6ef0de 100644
--- a/updates/versions.php
+++ b/updates/versions.php
@@ -1,5 +1,5 @@
-$current_ver = 254;
+$current_ver = 255;
for ($i = 1; $i <= $current_ver; $i++)
{