# Sonics NBA Manager - Wtyczka WordPress

Zaawansowana wtyczka WordPress do zarządzania zespołem NBA **Seattle SuperSonics** z funkcjami zarządzania meczami, zawodnikami, box score, automatycznym importem z Basketball Reference i widgetem urodzin.

## 🆕 Najnowsze Aktualizacje

### v1.4.0 (2025-01-15) - System Meczów ✨
- ✅ **Kompletna historia meczów (1967-2008)** - Wszystkie 41 sezonów, 3300+ meczów
- ✅ **Import jednym kliknięciem** - Pełna automatyzacja z Basketball-Reference.com
- ✅ **Rozbudowana baza danych** - 18 pól na mecz (dogrywki, frekwencja, bilanse)
- ✅ **Panel administracyjny** - Filtry, statystyki, kolorystyka W/L
- ✅ **8 shortcode'ów** - Tabele, karty, harmonogramy sezonów
- ✅ **Responsive design** - Mobile, tablet, desktop
- ✅ **Dokumentacja** - 3 pliki z przykładami użycia

## Funkcjonalności

### ⚡ System Meczów (v1.4.0)
- **Import historyczny** - Wszystkie sezony 1967-2008 jednym przyciskiem
- **Dane meczów:**
  - Data, przeciwnik, wynik, W/L
  - Dom/Wyjazd, frekwencja, arena
  - Dogrywki (OT, 2OT, 3OT)
  - Bilans po meczu (np. "45-20")
  - Typ meczu (Regular Season / Playoffs)
  - Link do box score
- **Panel admin:**
  - Filtry (sezon, typ meczu)
  - Statystyki sezonu (bilans, procent wygranych)
  - Tabela z kolorystyką (zielone = wygrana, czerwone = przegrana)
- **Shortcodes:**
  - `[sonics_games]` - Lista meczów (tabela lub karty)
  - `[sonics_season_schedule]` - Pełny harmonogram sezonu
  - `[sonics_last_game]` / `[sonics_next_game]` - Karty meczów

### ✅ Zarządzanie danymi z panelu admin
- **Sezony** - Dodawanie i zarządzanie sezonami (1967-2008) z logo zespołu, trenerem, areną
- **Mecze** - Import automatyczny lub ręczne dodawanie/edycja
- **Zawodnicy** - Baza zawodników z danymi biometrycznymi, foto, historią sezonów
- **Kadra szkoleniowa** - Zarządzanie trenerami, asystentami i personelem
- **Box Score** - Statystyki zawodników dla każdego meczu

### 🚀 Automatyczne generowanie stron (v1.2.0)
- **Custom Post Types** - `sonics_player`, `sonics_season`
- **Auto-tworzenie** - Strony generują się automatycznie po dodaniu zawodnika/sezonu
- **SEO URLs** - `/zawodnicy/gary-payton/`, `/sezony/2005-06/`
- **Masowa synchronizacja** - Jeden przycisk generuje strony dla całej bazy
- **Linki automatyczne** - Tabele zawodników linkują do wygenerowanych stron

### 📥 Automatyczny import z Basketball Reference (v1.3.0)
- **Web scraping** - Automatyczne pobieranie danych z basketball-reference.com
- **Import sezonu** - Roster, statystyki, **mecze** jednym kliknięciem
- **Parsowanie HTML** - DOMDocument + XPath dla pełnej ekstrakcji danych
- **Auto-strony** - Importowane zawodnicy dostają automatycznie wygenerowane strony
- **Dane biograficzne** - Data urodzenia, college, wzrost, waga, Basketball Reference ID

### 🎂 Widget urodziny (v1.3.0)
- **Nadchodzące urodziny** - Widget wyświetla kto ma urodziny dzisiaj lub w najbliższych dniach
- **Animacja** - Pulsująca karta dla urodzin dzisiejszych z emoji 🎉
- **Countdown** - Odliczanie dni do urodzin
- **Wiek** - Automatyczne obliczanie ile lat ukończy zawodnik
- **Konfigurowalny** - Zakres dni (7/14/30), wyświetlanie wieku, countdown
- **Integracja CPT** - Linki do stron zawodników

### 📊 Dashboard admin
- Przegląd ostatniego meczu
- Informacje o następnym meczu
- Statystyki zespołu
- Dostęp do wszystkich zasobów
- Przycisk synchronizacji stron
- **Import meczów** - Szybki dostęp do importu

### 🔄 Import danych
- **Import meczów** - Wszystkie 41 sezonów (1967-2008) automatycznie
- Import sezonów z Basketball Reference (automatyczny scraping)
- Wgrywanie plików CSV (zawodnicy, mecze, statystyki)
- Wsparcie dla pełnej historii Seattle SuperSonics

### 📱 Frontend z Shortcodes
**Mecze:**
- `[sonics_games season="2007-08" limit="10"]` - Lista meczów (tabela)
- `[sonics_games season="1978-79" style="cards"]` - Mecze jako karty
- `[sonics_season_schedule season="1978-79"]` - Pełny harmonogram sezonu
- `[sonics_last_game]` - Ostatni mecz (karta)
- `[sonics_next_game]` - Następny mecz (karta)

**Zawodnicy:**
- `[sonics_players season_id="1"]` - Roster zespołu z linkami do profili
- `[sonics_player_profile player_id="1"]` - Profil zawodnika z historią sezonów

**Kadra:**
- `[sonics_coaching season_id="1"]` - Kadra szkoleniowa sezonu
- `[sonics_box_score game_id="1"]` - Box score meczu

### 🏀 Profile zawodników (jak Basketball Reference)
- Historia sezonów z PPG, RPG, APG
- Procenty rzutów (FG%, 3P%, FT%)
- Dane biograficzne (college, data urodzenia, zdjęcie)
- Powiązanie z zespołem przez wiele sezonów

### 👔 Kadra szkoleniowa
- Trenerzy główni, asystenci, personel medyczny
- Zdjęcia, biografie, role
- Zarządzanie per sezon

### 🎨 Responsywny UX
- Nowoczesny interfejs admin
- Karty meczów z animacjami
- Tabela zawodników z zdjęciami
- Profile zawodników z tabelami statystyk
- Karty kadry szkoleniowej z foto
- Widget urodziny z pulsującą animacją
- Pełna responsywność mobilna

## Struktura katalogów

```
wtyczka/
├── sonics-nba-manager.php          # Główny plik wtyczki
├── admin/
│   ├── class-sonics-admin.php      # Logika admin
│   └── partials/
│       ├── dashboard.php            # Dashboard
│       ├── seasons.php              # Zarządzanie sezonami
│       ├── games.php                # Zarządzanie meczami
│       ├── players.php              # Zarządzanie zawodnikami
│       └── import.php               # Importer
├── public/
│   └── class-sonics-public.php     # Logika frontend
├── includes/
│   ├── class-sonics-plugin.php     # Główna klasa
│   ├── class-sonics-loader.php     # Hook loader
│   ├── class-sonics-database.php   # Operacje BD
│   ├── class-sonics-activator.php  # Aktywacja wtyczki
│   ├── class-sonics-deactivator.php # Deaktywacja
│   ├── class-sonics-api-importer.php # Importer danych
│   └── class-sonics-shortcodes.php # Shortcodes
├── assets/
│   ├── css/
│   │   ├── admin-style.css         # Style admin
│   │   └── public-style.css        # Style frontend (z widget urodziny)
│   └── js/
│       ├── admin-script.js         # Skrypty admin (import BR)
│       └── public-script.js        # Skrypty frontend
└── db/                             # Eksporty baz (opcjonalnie)
```

## Instalacja

1. Skopiuj folder `wtyczka` do `wp-content/plugins/` w instalacji WordPress
2. Przejdź do panelu admin WordPress
3. Aktywuj wtyczkę z listy wtyczek
4. Przejdź do menu **Sonics** w panelu admin
5. (Opcjonalnie) Dodaj widget "Sonics - Urodziny zawodników" w **Wygląd → Widgety**

## Baza danych

Wtyczka automatycznie tworzy **6 tabel** przy aktywacji:

- `wp_sonics_seasons` - Sezony (z logo, trenerem, areną, bilansem W-L)
- `wp_sonics_players` - Zawodnicy (globalna baza z Basketball Reference ID)
- `wp_sonics_season_players` - Relacja zawodnik-sezon (numery)
- `wp_sonics_games` - Mecze
- `wp_sonics_box_scores` - Box score zawodników w meczach
- `wp_sonics_player_stats` - Statystyki zawodników per sezon (PPG, RPG, APG, %)
- `wp_sonics_coaching_staff` - Kadra szkoleniowa per sezon

## API i AJAX Callbacks

### Dostępne akcje AJAX

- `sonics_import_season` - Import sezonu z Basketball Reference (v1.3.0)
- `sonics_sync_pages` - Synchronizacja stron CPT (v1.2.0)
- `sonics_add_game` - Dodawanie meczu
- `sonics_update_game` - Aktualizacja meczu
- `sonics_delete_game` - Usuwanie meczu
- `sonics_add_player` - Dodawanie zawodnika (auto-tworzy stronę CPT)
- `sonics_add_coaching_staff` - Dodawanie członka kadry
- `sonics_delete_coaching_staff` - Usuwanie członka kadry
- `sonics_import_csv` - Import pliku CSV

## Widgets

### Sonics - Urodziny zawodników (v1.3.0)

Widget wyświetla zawodników z urodzinami dzisiaj lub w najbliższych dniach.

**Konfiguracja:**
- Tytuł widgetu
- Liczba dni do przodu (1-365)
- Wyświetlanie wieku
- Wyświetlanie countdownu

**Użycie:**
1. Przejdź do **Wygląd → Widgety**
2. Przeciągnij widget "Sonics - Urodziny zawodników" do sidebaru
3. Skonfiguruj opcje
4. Zapisz

Więcej: [WIDGET_URODZINY.md](WIDGET_URODZINY.md)

## Format CSV

### Zawodnicy
```csv
name,number,position,height,weight,college
Gary Payton,20,PG,6'3",190,Oregon State
Shawn Kemp,40,PF,6'10",231,Concord Academy
```

### Mecze
```csv
date,opponent,sonics_score,opponent_score,location
2005-10-31 19:30,Denver Nuggets,98,96,KeyArena
2005-11-02 19:30,Utah Jazz,102,98,Delta Center
```

## Basketball Reference Import

Import automatyczny z basketball-reference.com:

### Import Meczów (v1.4.0)

**Pełna historia (1967-2008):**
1. Przejdź do **Sonics → Mecze**
2. Kliknij **"Importuj WSZYSTKIE sezony (1967-2008)"**
3. Czekaj ~5-10 minut (importuje 41 sezonów, ~3300 meczów)
4. Gotowe!

**Pojedynczy sezon:**
1. Przejdź do **Sonics → Mecze**
2. Wybierz sezon z dropdown
3. Kliknij **"Importuj mecze sezonu"**

**Dokumentacja:** [GAMES_DOCUMENTATION.md](GAMES_DOCUMENTATION.md)

### Import Sezonów (Roster + Statystyki)

1. Przejdź do **Sonics → Import**
2. Wybierz rok sezonu (1967-2008)
3. Zaznacz "Importuj również mecze" (opcjonalnie)
4. Kliknij "Rozpocznij automatyczny import"

**Co jest importowane:**
- Roster zespołu (zawodnicy + numery)
- Statystyki per game (PPG, RPG, APG, FG%, 3P%, FT%)
- Dane biograficzne (data urodzenia, college, wzrost, waga)
- Mecze sezonu (data, przeciwnik, wynik, home/away, frekwencja, dogrywki)
- Automatyczne strony CPT dla zawodników i sezonu

**Dokumentacja szczegółowa:**
- Import API: [IMPORT_API.md](IMPORT_API.md)
- System meczów: [GAMES_DOCUMENTATION.md](GAMES_DOCUMENTATION.md)
- Przykłady użycia: [GAMES_EXAMPLES.md](GAMES_EXAMPLES.md)

## Bezpieczeństwo

- Wszystkie dane wejściowe są czyszczone (sanitize)
- Wszystkie dane wyjściowe są escapowane (esc_html, esc_attr, esc_url)
- AJAX endpoints chronione nonce
- Tylko administratorzy mają dostęp do panelu
- Web scraping z timeout i error handling

## Technologia

- **PHP** 7.2+ (WordPress Standard)
- **MySQL** / **MariaDB**
- **jQuery** (dla AJAX i interaktywności)
- **CSS3** z Flexbox, Grid i animacjami
- **DOMDocument + XPath** (web scraping)
- **Custom Post Types** (automatyczne strony)
- **WordPress Widget API** (widget urodziny)

## Roadmap

- [x] Automatyczne generowanie stron WordPress (v1.2.0)
- [x] Import z Basketball Reference (v1.3.0)
- [x] Widget urodziny (v1.3.0)
- [ ] Import box scores (statystyki meczowe)
- [ ] Wykresy i statystyki zaawansowane
- [ ] Eksport danych do PDF
- [ ] Powiadomienia o meczach
- [ ] Galeria zdjęć z meczy
- [ ] Komentarze fanów
- [ ] REST API

## Autor

NBA Team Manager

## Licencja

GPL-2.0+

## Support

Aby zgłosić bug lub zaproponować nową funkcję, utwórz issue w repozytorium.
