# Plugin WordPress OneSignal

Un plugin WordPress per integrare le notifiche push OneSignal nel tuo sito web.

## Caratteristiche

- Integrazione facile con OneSignal
- Pannello di impostazioni amministrative
- Supporto notifiche frontend
- Autoloading PSR-4 con Composer
- Conformità agli standard di codifica WordPress
- SDK OneSignal v16 (versione più recente)
- Prompt personalizzabile per le notifiche
- Ottimizzazioni performance con DNS prefetch
- Gestione automatica dei Service Worker

## Requisiti

- PHP 7.4 o superiore
- WordPress 5.0 o superiore
- Account OneSignal e App ID

## Installazione

1. Clona questo repository nella directory dei plugin WordPress:
   ```bash
   cd wp-content/plugins/
   git clone https://github.com/blazemedia/onesignal.git
   ```

2. Installa le dipendenze:
   ```bash
   cd onesignal
   composer install
   ```

3. Attiva il plugin nel pannello amministrativo di WordPress

4. Configura il tuo OneSignal App ID nelle impostazioni del plugin

## Configurazione

1. Vai su **Impostazioni > OneSignal** nel pannello amministrativo di WordPress
2. Inserisci il tuo **OneSignal App ID**
3. Inserisci la tua **OneSignal REST API Key** (opzionale, per notifiche lato server)
4. Inserisci il tuo **Safari Web ID** (opzionale, per supporto Safari)
5. Personalizza i messaggi del prompt di notifica:
   - **Messaggio del prompt**: Testo che appare quando si richiede il permesso
   - **Testo pulsante Accetta**: "CONTINUA" (personalizzabile)
   - **Testo pulsante Rifiuta**: "NO GRAZIE" (personalizzabile)
   - **Ritardo in secondi**: Tempo di attesa prima di mostrare il prompt (default: 10)

## Funzionalità Avanzate

### SDK OneSignal v16
- Utilizza la versione più recente dell'SDK OneSignal
- Caricamento differito per migliori performance
- Gestione automatica dei Service Worker

### Prompt Personalizzabile
- Messaggio completamente personalizzabile
- Pulsanti con testo configurabile
- Ritardo temporale configurabile
- Auto-resubscribe per gestire le disiscrizioni

### Sistema Push Notifications
- Invio automatico di notifiche quando vengono pubblicati nuovi post
- API completa per invio manuale di notifiche
- Supporto per notifiche personalizzate con immagini
- Gestione errori e logging
- Integrazione con WordPress hooks

### Ottimizzazioni Performance
- DNS prefetch per OneSignal CDN
- Preconnect per connessioni più veloci
- Cleanup automatico dei Service Worker conflittuali

## Sviluppo

### Struttura del Progetto

```
onesignal/
├── src/                    # Codice sorgente (autoload PSR-4)
│   ├── Plugin.php         # Classe principale del plugin
│   ├── Admin/             # Funzionalità amministrative
│   └── Frontend/          # Funzionalità frontend
├── assets/                # Asset frontend
│   └── js/
│       └── onesignal-init.js
├── tests/                 # Test PHPUnit
├── composer.json          # Configurazione Composer
├── onesignal.php         # File principale del plugin
└── README.md
```

### Namespace

Il plugin utilizza il namespace `Blazemedia\OneSignal`, mappato alla directory `src/` tramite l'autoloader PSR-4 di Composer.

### Comandi di Sviluppo

```bash
# Installa le dipendenze
composer install

# Esegui i test
composer test

# Controlla gli standard di codifica
composer phpcs

# Correggi gli standard di codifica
composer phpcbf
```

## Configurazione Avanzata

### Personalizzazione del Prompt

Il plugin permette di personalizzare completamente l'esperienza di richiesta permessi:

- **Messaggio principale**: Spiega agli utenti perché vuoi inviare notifiche
- **Pulsanti**: Personalizza i testi dei pulsanti "Accetta" e "Rifiuta"
- **Timing**: Imposta il ritardo prima di mostrare il prompt

### Sistema Push Notifications

Il plugin include un sistema completo per l'invio di push notifications:

#### Invio Automatico
- Abilita l'opzione "Auto Push Notifications" nelle impostazioni
- Le notifiche vengono inviate automaticamente quando pubblichi un nuovo post
- Supporto per post e pagine

#### Invio Manuale
```php
// Esempio di invio da dati CMS
$pushData = [
    'title' => 'Titolo notifica',
    'content' => 'Contenuto notifica',
    'url' => 'https://example.com/url',
    'image' => 'https://example.com/image.jpg'
];

\Blazemedia\OneSignal\OneSignal\PushManager::sendNotificationToOneSignal($pushData);
```

#### Invio da Post WordPress
```php
$pushManager = new \Blazemedia\OneSignal\OneSignal\PushManager();
$pushManager->sendPostNotification($post);
```

### Gestione Service Worker

Il plugin include una gestione intelligente dei Service Worker:
- Rimuove automaticamente i Service Worker non-OneSignal
- Evita conflitti con altri plugin
- Ottimizza le performance del sito

## Licenza

GPL v2 o successiva

## Supporto

Per supporto, contatta info@blazemedia.com