ver. 0.294: Remove all 12 legacy autoload/shop/ classes (~2363 lines)

Complete Domain-Driven Architecture migration:
- Phase 1-4: Transport, ProductSet, Coupon, Shop, Search, Basket,
  ProductCustomField, Category, ProductAttribute, Promotion
- Phase 5: Order (~562 lines) + Product (~952 lines)
- ~20 Product methods migrated to ProductRepository
- Apilo sync migrated to OrderAdminService
- Production hotfixes: stale Redis cache (prices 0.00), unqualified
  Product:: refs in LayoutEngine, object->array template conversion
- AttributeRepository::getAttributeValueById() Redis cache added

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-18 02:05:39 +01:00
parent 22530df501
commit 69e78ca248
74 changed files with 2176 additions and 2669 deletions

View File

@@ -763,4 +763,43 @@ class CategoryRepository
return $fallback ? (string)$fallback : '';
}
public function getCategoryProductIds(int $categoryId): array
{
if ($categoryId <= 0) {
return [];
}
$result = $this->db->select('pp_shop_products_categories', 'product_id', ['category_id' => $categoryId]);
return is_array($result) ? $result : [];
}
public function subcategoriesLangCached(int $categoryId): array
{
$cacheHandler = new \Shared\Cache\CacheHandler();
$cacheKey = "subcategories_lang:{$categoryId}";
$cached = $cacheHandler->get($cacheKey);
if ($cached) {
return unserialize($cached);
}
$categories = $this->db->select('pp_shop_categories', '*', ['parent_id' => $categoryId]);
if (!is_array($categories)) {
return [];
}
$result = [];
foreach ($categories as $cat) {
$lang = $this->db->get('pp_shop_categories_langs', '*', ['category_id' => $cat['id']]);
if (is_array($lang)) {
$result[] = $lang;
}
}
$cacheHandler->set($cacheKey, $result);
return $result;
}
}