# Instrukcja tworzenia aktualizacji shopPRO

## Struktura aktualizacji

Aktualizacje znajdują się w folderze `updates/0.XX/` gdzie XX oznacza dziesiątki wersji.

### Pliki aktualizacji:
- `ver_X.XXX.zip` - paczka ZIP ze zmienionymi plikami (BEZ folderu wersji, bezpośrednio struktura katalogów)
- `ver_X.XXX_sql.txt` - opcjonalny plik z zapytaniami SQL (jeśli wymagane zmiany w bazie)
- `ver_X.XXX_files.txt` - opcjonalny plik z listą plików do **USUNIĘCIA** przy aktualizacji (format: `F: ../sciezka/do/pliku.php`)
- `changelog.php` - historia zmian
- `versions.php` - konfiguracja wersji (zmienna `$current_ver`)

### Zasada pakowania plików
- Do paczek aktualizacji **nie dodajemy plików `*.md`** (dokumentacja jest tylko wewnętrzna/deweloperska).
- Do paczek aktualizacji **nie dodajemy `updates/changelog.php`** (to plik serwisowy po stronie repozytorium aktualizacji, nie runtime klienta).
- Do paczek aktualizacji **nie dodajemy głównego `.htaccess` z katalogu projektu** (ten plik wdrażamy osobno, poza ZIP aktualizacji).

## Procedura tworzenia nowej aktualizacji

## Status biezacej aktualizacji (ver. 0.285)

- Wersja udostepniona: `0.285` (data: 2026-02-17).
- Pliki publikacyjne:
    - `updates/0.20/ver_0.285.zip`, `ver_0.285_files.txt`
- Pliki metadanych aktualizacji:
    - `updates/changelog.php` (dodany wpis `ver. 0.285`)
    - `updates/versions.php` (`$current_ver = 285`)
- Weryfikacja testow przed publikacja:
    - `OK (454 tests, 1449 assertions)`

### 1. Określ numer wersji
Sprawdź ostatnią wersję w `updates/` i zwiększ o 1.

### 2. Utwórz folder tymczasowy ze strukturą w katalogu temp
```bash
mkdir -p temp/temp_XXX/sciezka/do/pliku
```

**WAŻNE:** W archiwum ZIP NIE powinno być folderu z nazwą wersji (np. ver_0.234/).
Struktura ZIP powinna zaczynać się bezpośrednio od katalogów projektu (admin/, autoload/, itp.).

### 3. Skopiuj zmienione pliki do folderu tymczasowego
```bash
cp sciezka/do/pliku.php temp/temp_XXX/sciezka/do/pliku.php
```

### 4. Utwórz plik ZIP z zawartości folderu (nie z samego folderu!)
```powershell
cd temp/temp_XXX
powershell -Command "Compress-Archive -Path '*' -DestinationPath '../ver_X.XXX.zip' -Force"
```

### 5. Usuń folder tymczasowy
```bash
rm -rf temp/temp_XXX
```

### 6. Zaktualizuj changelog.php
Dodaj wpis na początku pliku:
```html
<b>ver. X.XXX - DD.MM.YYYY</b><br />
- NEW/FIX/UPDATE - opis zmiany
<hr>
```

Prefiksy:
- `NEW` - nowa funkcjonalność
- `FIX` - naprawa błędu
- `UPDATE` - aktualizacja istniejącej funkcjonalności

### 7. Zaktualizuj versions.php
Zmień wartość `$current_ver` na nowy numer wersji (bez przedrostka 0.):
```php
$current_ver = 234; // dla wersji 0.234
```

### 8. (Opcjonalnie) Utwórz plik SQL
Jeśli aktualizacja wymaga zmian w bazie danych, utwórz plik `ver_X.XXX_sql.txt` z zapytaniami SQL.

### 9. (Opcjonalnie) Utwórz plik z listą plików do usunięcia
Jeśli aktualizacja wymaga usunięcia przestarzałych plików, utwórz plik `ver_X.XXX_files.txt`:
```
F: ../sciezka/do/pliku1.php
F: ../sciezka/do/pliku2.php
```
**UWAGA:** Pliki wymienione w tym pliku zostaną USUNIĘTE z systemu podczas aktualizacji.

## Przykład - aktualizacja 0.234

Zmienione pliki:
- `autoload/admin/controls/class.ShopOrder.php`
- `admin/templates/shop-order/order-details.php`

Opis: Dodanie przycisku do zaznaczania zamówienia jako wysłane do trustmate.io

### Komendy:

```bash
# Utwórz strukturę w folderze tymczasowym
mkdir -p temp/temp_234/autoload/admin/controls
mkdir -p temp/temp_234/admin/templates/shop-order

# Skopiuj pliki
cp autoload/admin/controls/class.ShopOrder.php temp/temp_234/autoload/admin/controls/
cp admin/templates/shop-order/order-details.php temp/temp_234/admin/templates/shop-order/

# Utwórz ZIP z ZAWARTOŚCI folderu (ważne: wejdź do folderu i spakuj '*')
cd temp/temp_234
powershell -Command "Compress-Archive -Path '*' -DestinationPath '../ver_0.234.zip' -Force"

# Wróć i usuń folder tymczasowy
cd ..
rm -rf temp_234
```

### Poprawna struktura ZIP:
```
ver_0.234.zip
├── admin/
│   └── templates/
│       └── shop-order/
│           └── order-details.php
└── autoload/
    └── admin/
        └── controls/
            └── class.ShopOrder.php
```

### NIEPOPRAWNA struktura (do uniknięcia):
```
ver_0.234.zip
└── ver_0.234/          <-- tego folderu NIE powinno być!
    ├── admin/
    └── autoload/
```
