This commit is contained in:
Jacek
2026-04-16 23:12:41 +02:00
parent 3fa3d72758
commit c611b012c6
10 changed files with 130 additions and 1 deletions

3
.paul/docs/API.md Normal file
View File

@@ -0,0 +1,3 @@
# API
> Endpointy, kontrakty request/response, autentykacja.

View File

@@ -0,0 +1,3 @@
# ARCHITECTURE
> Struktura klas, modulow, przeplywow i zaleznosci w projekcie.

3
.paul/docs/DB_SCHEMA.md Normal file
View File

@@ -0,0 +1,3 @@
# DB_SCHEMA
> Schemat bazy danych — tabele, kolumny, FK, indeksy.

3
.paul/docs/DECISIONS.md Normal file
View File

@@ -0,0 +1,3 @@
# DECISIONS
> Kluczowe decyzje techniczne i ich uzasadnienia.

3
.paul/docs/STACK.md Normal file
View File

@@ -0,0 +1,3 @@
# STACK
> Stack technologiczny, wersje, zaleznosci, srodowisko.

View File

@@ -0,0 +1,3 @@
# TECH_CHANGELOG
> Chronologiczny log zmian technicznych — co i dlaczego.

3
.paul/docs/TODO.md Normal file
View File

@@ -0,0 +1,3 @@
# TODO
> Luzny parking pomyslow, rzeczy do sprawdzenia.

View File

@@ -0,0 +1,29 @@
{"ts":"2026-04-16T09:36:18Z","tool":"Bash","cmd":"mkdir -p \"C:/visual studio code/projekty/shopPRO/.paul/phases/14-custom-fields-delete-bug\"\",\"description\":\"Create phase 14 directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"inter","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:36:54Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\.paul\\\\phases\\\\14-custom-fields-delete-bug\\\\14-01-PLAN.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:37:27Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:37:31Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:37:38Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:55:40Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\autoload\\\\admin\\\\Controllers\\\\ShopProductController.php","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:55:47Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\autoload\\\\Domain\\\\Product\\\\ProductRepository.php","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:56:01Z","tool":"Bash","cmd":"wc -l \"C:/visual studio code/projekty/shopPRO/tests/Unit/Domain/Product/ProductRepositoryTest.php\"\",\"description\":\"Count lines in test file\"},\"tool_response\":{\"stdout\":\"1295 C:/visual stud","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:56:13Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\tests\\\\Unit\\\\Domain\\\\Product\\\\ProductRepositoryTest.php","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:56:20Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && php phpunit.phar --filter testSaveCustomFieldsDeletesAllWhenEmpty 2>&1\",\"description\":\"Run specific unit test\"},\"tool_response\":{\"stdout\":\"PH","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:56:27Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && php phpunit.phar 2>&1 | tail -5\",\"description\":\"Run full test suite, show summary\"},\"tool_response\":{\"stdout\":\".. ","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T09:57:00Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:45:27Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\.paul\\\\phases\\\\14-custom-fields-delete-bug\\\\14-01-SUMMARY.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:45:38Z","tool":"Bash","cmd":"mkdir -p \"C:/visual studio code/projekty/shopPRO/.paul/changelog\"\",\"description\":\"Create changelog directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"interrupted\":false,\"isImage","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:45:45Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\.paul\\\\changelog\\\\2026-04-16.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:46:16Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:46:21Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:50:25Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && php phpunit.phar 2>&1 | tail -5\",\"description\":\"Run full PHPUnit test suite\"},\"tool_response\":{\"stdout\":\".. ","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:50:35Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && git tag --sort=-v:refname | head -3\",\"description\":\"Get latest version tags\"},\"tool_response\":{\"stdout\":\"v0.345\\nv0.344\\nv0.343\",\"stderr\","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:51:07Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\CLAUDE.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:51:31Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\docs\\\\TESTING.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:51:37Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\shopPRO\\\\.paul\\\\PROJECT.md","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:51:43Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && git status -s\",\"description\":\"Show working tree status\"},\"tool_response\":{\"stdout\":\" M .paul/PROJECT.md\\n M .paul/ROADMAP.md\\n M .paul/STAT","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:51:50Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && git add autoload/Domain/Product/ProductRepository.php autoload/admin/Controllers/ShopProductController.php tests/Unit/Domain/Product/ProductRepositoryT","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:51:58Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && git commit -m \"$(cat <<'EOF'\\nfix: Custom fields delete bug — usunięcie wszystkich pól produktu nie działało\\n\\nDodano hidden marker custom_f","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:52:14Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && git push 2>&1\",\"description\":\"Retry git push\"},\"tool_response\":{\"stdout\":\"remote: . Processing 1 references \\nremote: Processed 1 ref","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:52:25Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && git tag v0.346 && powershell.exe -ExecutionPolicy Bypass -File build-update.ps1 -FromTag v0.345 -ToTag v0.346 -ChangelogEntry \"Fix usuwania wszystkich","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:52:32Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && git add updates/0.30/ver_0.346.zip updates/0.30/ver_0.346_manifest.json updates/versions.php updates/changelog-data.html && git commit -m \"$(cat <<'EO","cwd":"/c/visual studio code/projekty/shopPRO"}
{"ts":"2026-04-16T20:52:43Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/shopPRO\" && git push 2>&1 && git push origin v0.346 2>&1\",\"description\":\"Push commit and tag\"},\"tool_response\":{\"stdout\":\"remote: . Processing 1 referenc","cwd":"/c/visual studio code/projekty/shopPRO"}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,79 @@
# Refaktoryzacja autoloadera — centralizacja
## Problem
Funkcja `__autoload_my_classes()` jest zduplikowana w każdym entry poincie:
- `index.php`
- `admin/index.php`
- `admin/ajax.php`
- `ajax.php`
- `api.php`
- `cron.php`
- `download.php`
- `cron-turstmate.php`
- `cron/cron-xml.php`
Każdy plik zawiera identyczną (lub prawie identyczną) kopię autoloadera. Warianty różnią się ścieżką bazową (`autoload/` vs `../autoload/`) i drobnymi detalami (np. Savant3 special case tylko w `admin/ajax.php`).
## Rozwiązanie
Utworzyć centralny plik `autoload/autoloader.php` z jedną definicją autoloadera, używając `__DIR__` zamiast ścieżek relatywnych.
### Plik: `autoload/autoloader.php`
```php
<?php
function __autoload_my_classes( $classname )
{
$base = __DIR__ . '/';
$q = explode( '\\', $classname );
$c = array_pop( $q );
// Savant3 — special case
if ( $c == 'Savant3' )
{
$f = $base . 'Savant3.php';
if ( file_exists( $f ) ) { require_once( $f ); return; }
}
$path = implode( '/', $q );
// 1. Legacy: class.ClassName.php
$f = $base . $path . '/class.' . $c . '.php';
if ( file_exists( $f ) ) { require_once( $f ); return; }
// 2. PSR-4: ClassName.php
$f = $base . $path . '/' . $c . '.php';
if ( file_exists( $f ) ) require_once( $f );
}
spl_autoload_register( '__autoload_my_classes' );
```
### Zmiana w entry pointach
Zamienić definicję funkcji + `spl_autoload_register` na jedną linię:
```php
// Root entry points (index.php, ajax.php, api.php, cron.php, download.php):
require_once __DIR__ . '/autoload/autoloader.php';
// Admin entry points (admin/index.php, admin/ajax.php):
require_once __DIR__ . '/../autoload/autoloader.php';
// Cron subdirectory (cron/cron-xml.php):
require_once __DIR__ . '/../autoload/autoloader.php';
```
## Korzyści
- **DRY** — jedna definicja zamiast 9+ kopii
- **Bezpieczeństwo** — poprawka w jednym miejscu działa wszędzie
- **`__DIR__`** — ścieżki absolutne, niezależne od cwd
- **Savant3** — obsłużony centralnie, nie tylko w admin/ajax.php
## Uwagi
- Reszta kodu w entry pointach (config.php, medoo, session) pozostaje bez zmian
- Rozwiązanie wdrożone i przetestowane w cmsPRO