<html lang="it-it" dir="ltr"><head></head><body># Licenze Software - Personalizzazioni per Sviluppatori

##### Indice dei contenuti

- [Istanziazione di oggetti](#create)
- [Proprietà disponibili](#properties)
- [Metodi disponibili](#methods)
 


 Proprio come il core di Easy Digital Downloads, l'estensione Software Licensing include una varietà di ganci di azione e filtro che puoi utilizzare per modificare il comportamento dell'estensione per soddisfare al meglio le tue esigenze. Questa documentazione è scritta per utenti avanzati che hanno già familiarità con l'[API dei plugin di WordPress](https://codex.wordpress.org/Plugin_API/Action_Reference).

### Creazione Licenza

 **Durata Licenza**

 Per impostazione predefinita, a ogni chiave di licenza viene assegnata una data di scadenza di un anno. Questa durata di scadenza può essere facilmente modificata utilizzando il filtro *edd\_sl\_license\_exp\_length*. Ci sono quattro parametri passati al filtro:

- *$length* (string) - La durata di scadenza per questa licenza. "+1 anno" è l'impostazione predefinita
- *$payment\_id* (int) - L'ID del pagamento dell'acquisto con cui è stata generata questa licenza
- *$download\_id* (int) - L'ID del download/prodotto a cui è collegata questa licenza
- *$license\_id* (int) L'ID della licenza appena creata

 Ecco un rapido esempio di come potresti cambiare la durata di scadenza:

```
function pw_edd_sl_license_length( $length, $payment_id, $download_id, $license_id ) {
	return '+2 years'; // imposta la durata a due anni dalla data di creazione
}
add_filter( 'edd_sl_license_exp_length', 'pw_edd_sl_license_length', 10, 4 );
```

 **Esecuzione di funzioni dopo la creazione della licenza**

 L'azione *edd\_sl\_store\_license* viene attivata subito dopo la creazione della chiave di licenza e l'associazione di tutti i metadati ad essa. L'azione accetta tre parametri:

- *$license\_id* (int) - L'ID della licenza appena creata
- *$download\_id* (int) - L'ID del download/prodotto a cui è collegata questa licenza
- *$payment\_id* (int) - L'ID del pagamento con cui è stata creata questa licenza

 Una funzione di esempio che potresti collegare a questa azione potrebbe assomigliare a questa:

```
function pw_edd_sl_custom_admin_alert( $license_id, $download_id, $payment_id ) {
	
	// invia un avviso all'amministratore

	wp_mail( get_bloginfo( 'admin_email' ), 'Licenza Creata', 'È stata creata una nuova chiave di licenza con ID ' . $license_id . '.' );

}
add_action( 'edd_sl_store_license', 'pw_edd_sl_custom_function', 10, 3 );
```

 **Esecuzione di funzioni durante l'attivazione della licenza**

 L'azione *edd\_sl\_activate\_license* viene eseguita subito dopo che una licenza è stata attivata tramite API.

```
do_action( 'edd_sl_activate_license', $license_id, $download_id );
```

 **Esecuzione di funzioni durante il controllo della licenza**

 L'azione *edd\_sl\_check\_license* viene eseguita subito dopo che una licenza è stata controllata tramite API.

```
do_action( 'edd_sl_activate_license', $license_id, $download_id );
```

 **Altri filtri**

 *edd\_sl\_license\_response* - applicato alla risposta inviata durante il controllo remoto della versione di un download/prodotto.

 *edd\_sl\_get\_license\_logs* - applicato quando vengono recuperate le voci di log per una licenza.

 *edd\_sl\_encoded\_package\_url* - applicato quando viene recuperato l'URL del pacchetto codificato per i pacchetti di download.

 *edd\_sl\_download\_package\_url* - applicato quando viene recuperato il file del pacchetto di download per gli aggiornamenti automatici.

 *edd\_license\_labels* - applicato alle etichette del tipo di post durante la registrazione del tipo di post edd\_license.

 **Altre azioni**

 *edd\_sl\_before\_package\_download* - eseguita subito prima che il file di download per gli aggiornamenti automatici venga servito al browser.

 [Software Licensing](https://easydigitaldownloads.com/downloads/software-licensing) versione 3.5 e successive include una classe EDD\_SL\_License per interagire con i record delle chiavi di licenza. La classe EDD\_SL\_License ti consente di interagire con i dati delle chiavi di licenza, aggiornare le chiavi di licenza esistenti e creare nuovi record di chiavi di licenza.

### Istanziazione di oggetti

 Per migliorare le prestazioni durante l'accesso a un oggetto licenza, dovresti utilizzare il metodo wrapper, che utilizza il livello di caching degli oggetti core di WordPress. Puoi utilizzare l'ID licenza o la Chiave licenza per istanziare un oggetto. Se non esiste alcuna licenza per le informazioni fornite, il metodo wrapper restituirà `false`:

```
// Istanzia una licenza tramite ID
$license = edd_software_licensing()-&gt;get_license( 2326422 );

// Istanzia una licenza tramite la chiave di licenza
$license_by_key = edd_software_licensing-&gt;get_license( '9e21e9a885212f96cccb4d6186541332', true );

// Se passi un ID o una chiave di licenza non validi, otterrai 'false' come risposta.
$invalid_license = edd_software_licensing()-&gt;get_license( -1 );
```

 EDD\_SL\_License può essere istanziata con un ID licenza o nessun valore durante la creazione di una nuova licenza. Ecco alcuni esempi:

```
$license = new EDD_SL_License( 2326422 );
```

 Se desideri creare una nuova licenza:

```
$license = new EDD_SL_License();
$license-&gt;create( $download_id = 0, $payment_id = 0, $price_id = false, $cart_index = 0, $options = array() );
```

 Sebbene tu possa istanziare direttamente una licenza con EDD\_SL\_License, è preferibile utilizzare la funzione wrapper per motivi di prestazioni.

 Gli argomenti necessari per creare una nuova licenza saranno trattati di seguito.

### Proprietà disponibili

 La classe EDD\_SL\_License include numerose proprietà accessibili che contengono informazioni relative al record della chiave di licenza.

- **ID** - Il numero ID del record della licenza. Corrisponde all'ID dell'oggetto WP\_Post.
- **parent** - L'ID del post della licenza padre, se presente.
- **name** - Il nome della licenza. È una concatenazione dell'indirizzo email del cliente e del nome del prodotto a cui è associata la chiave di licenza.
- **key** - La chiave di licenza stessa. Di solito è una stringa di 32 caratteri ma può essere qualsiasi cosa.
- **user\_id** - L'ID dell'utente WP\_User a cui appartiene la chiave di licenza, se presente.
- **customer\_id** - L'ID del [EDD\_Customer](https://easydigitaldownloads.com/docs/edd_customer/) a cui appartiene la licenza.
- **payment\_id** - L'ID del [EDD\_Payment](https://easydigitaldownloads.com/docs/edd_payment/) per cui è stata creata la licenza.
- **payment\_ids** - Un array di ID di pagamento relativi alla licenza. Include rinnovi e aggiornamenti.
- **cart\_index** - L'indice numerico nell'array degli articoli del carrello del prodotto a cui è associata la chiave di licenza.
- **download** - Un'istanza EDD\_SL\_Download del prodotto di download a cui è associata la chiave di licenza.
- **download\_id** - L'ID del post del prodotto di download a cui è associata la chiave di licenza.
- **price\_id** - L'ID dell'opzione di prezzo del prodotto di download assegnata alla chiave di licenza.
- **activation\_limit** - Il numero di URL/macchine univoche su cui la chiave di licenza può essere attivata.
- **sites** - Un array di URL del sito (o ID macchina) su cui la chiave di licenza è attivata.
- **activation\_count** - Il numero di URL/macchine univoche su cui la chiave di licenza è attualmente attivata.
- **expiration** - La data di scadenza della chiave di licenza.
- **is\_lifetime** - Flag booleano che indica se la licenza è una licenza a vita (non scade mai).
- **status** - Lo stato corrente della licenza (attiva, inattiva, scaduta).
- **post\_status** - Lo stato del post WP\_Post per la licenza.
- **child\_licenses** - Un array di chiavi di licenza figlio, se presenti.

 Ogni proprietà può essere acceduta direttamente, così:

```
// Accedi all'ID del prezzo della licenza
$price_id = $license-&gt;price_id;
```

 Ogni proprietà può anche essere aggiornata impostando il valore della proprietà, così:

```
// Imposta il limite di attivazione della licenza
$license-&gt;activation_limit = 100;
```

 Le modifiche alle proprietà dell'oggetto verranno salvate immediatamente senza bisogno di chiamare un metodo di salvataggio o aggiornamento.


### Metodi disponibili

 La classe EDD\_SL\_License include metodi pubblici per accedere alle proprietà dell'oggetto e diversi altri metodi di aiuto che possono essere utilizzati per accedere e interagire con i dati della licenza.

##### $license-&gt;create( $download\_id = 0, $payment\_id = 0, $price\_id = false, $cart\_index = 0, $options = array() )

 Questo metodo consente di creare un nuovo record di licenza per un prodotto di download e un record di pagamento esistenti.

- $download\_id - Deve essere l'ID di un prodotto di download esistente
- $payment\_id - Deve essere l'ID di un record di pagamento esistente che includeva un acquisto di $download\_id
- $price\_id - Questo è un ID di prezzo opzionale per $download\_id se i prezzi variabili sono abilitati
- $cart\_index - Questo è un indice opzionale dell'articolo del carrello che identifica esattamente a quale articolo del carrello corrisponde questa licenza
- $options - Un array di opzioni per la licenza. Può includere le seguenti chiavi 
    - parent\_license\_id
    - activation\_limit
    - license\_length
    - expiration\_date
    - is\_lifetime

 Il metodo create() può essere utilizzato per creare una nuova chiave di licenza ma in genere non verrà utilizzato manualmente se non in implementazioni molto personalizzate.

 **$license-&gt;update( $data = array() )**

 Questo metodo consente di aggiornare i metadati di una licenza in blocco. L'array $data dovrebbe essere una coppia chiave/valore di meta\_key/meta\_value.

 **$license-&gt;renew()**

 Questo metodo attiverà il rinnovo di una chiave di licenza, estendendo la data di scadenza di un periodo e reimpostando lo stato della licenza su *inattiva* o *attiva*.

 **$license-&gt;enable()**

 Questo metodo riabiliterà una chiave di licenza disabilitata.

 **$license-&gt;disable()**

 Questo metodo disabiliterà una chiave di licenza.

 **$license-&gt;get\_meta( $meta\_key = '', $single = true )**

 Questo metodo recupererà i metadati per una licenza.

 **$license-&gt;update\_meta( $meta\_key = '', $value = '', $old\_value = '' )**

 Questo metodo aggiornerà i metadati per una licenza.

 **$license-&gt;get\_renewal\_url()**

 Questo metodo recupererà l'URL di rinnovo per una licenza.

 **$license-&gt;is\_site\_active( $url )**

 Questo metodo determinerà se l'URL fornito è registrato sulla licenza.

 **$license-&gt;is\_at\_limit()**

 Questo metodo verificherà se la licenza ha raggiunto il suo limite di attivazione.

 **$license-&gt;license\_length()**

 Questo metodo restituirà la durata di un singolo periodo per la licenza, come *a vita* o *+1 anno*.

 **$license-&gt;add\_site( $url )**

 Questo metodo può essere utilizzato per registrare un nuovo URL del sito su una licenza.

 **$license-&gt;remove\_site( $url )**

 Questo metodo può essere utilizzato per rimuovere un URL del sito da una licenza.

 **$license-&gt;reset\_activation\_limit()**

 Questo metodo può essere utilizzato per reimpostare il limite di attivazione su una licenza in base alle impostazioni del prodotto di download.</body></html>