<html lang="pt-br" dir="ltr"><head></head><body># Licenciamento de Software - Customizações do Desenvolvedor

##### Sumário

- [Instanciando Objetos](#create)
- [Propriedades Disponíveis](#properties)
- [Métodos Disponíveis](#methods)
 


 Assim como o núcleo do Easy Digital Downloads, a extensão Software Licensing inclui uma variedade de ganchos de ação e filtro que você pode usar para ajustar o comportamento da extensão para melhor atender às suas necessidades. Esta documentação é escrita para usuários avançados que já estão familiarizados com a [API de Plugins do WordPress](https://codex.wordpress.org/Plugin_API/Action_Reference).

### Criação de Licença

 **Duração da Licença**

 Por padrão, cada chave de licença recebe uma data de expiração de um ano. Essa duração de expiração pode ser facilmente alterada usando o filtro *edd\_sl\_license\_exp\_length*. Existem quatro parâmetros passados para o filtro:

- *$length* (string) - A duração da expiração desta licença. "+1 year" é o padrão
- *$payment\_id* (int) - O ID do pagamento da compra com a qual esta licença foi gerada
- *$download\_id* (int) - O ID do download/produto ao qual esta licença está conectada
- *$license\_id* (int) O ID da licença recém-criada

 Aqui está um exemplo rápido de como você pode alterar a duração da expiração:

```
function pw_edd_sl_license_length( $length, $payment_id, $download_id, $license_id ) {
	return '+2 years'; // define a duração para dois anos a partir da data de criação
}
add_filter( 'edd_sl_license_exp_length', 'pw_edd_sl_license_length', 10, 4 );
```

 **Executar Funções Após a Criação da Licença**

 A ação *edd\_sl\_store\_license* é disparada logo após a criação da chave de licença e todos os metadados serem associados a ela. A ação recebe três parâmetros:

- *$license\_id* (int) - O ID da licença recém-criada
- *$download\_id* (int) - O ID do download/produto ao qual esta licença está conectada
- *$payment\_id* (int) - O ID da compra com a qual esta licença foi criada

 Uma função de exemplo que você pode anexar a esta ação pode parecer algo assim:

```
function pw_edd_sl_custom_admin_alert( $license_id, $download_id, $payment_id ) {
	
	// envia um alerta de administrador

	wp_mail( get_bloginfo( 'admin_email' ), 'Licença Criada', 'Uma nova chave de licença com o ID ' . $license_id . ' foi criada.' );

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

 **Executar Funções Durante a Ativação da Licença**

 A ação *edd\_sl\_activate\_license* é executada logo após uma licença ser ativada via API.

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

 **Executar Funções Durante a Verificação da Licença**

 A ação *edd\_sl\_check\_license* é executada logo após uma licença ser verificada via API.

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

 **Outros Filtros**

 *edd\_sl\_license\_response* - aplicado à resposta enviada ao verificar remotamente a versão de um download/produto.

 *edd\_sl\_get\_license\_logs* - aplicado quando as entradas de log de uma licença são recuperadas.

 *edd\_sl\_encoded\_package\_url* - aplicado quando a URL do pacote codificado para pacotes de download é recuperada.

 *edd\_sl\_download\_package\_url* - aplicado quando o arquivo do pacote de download para atualizações automáticas é recuperado.

 *edd\_license\_labels* - aplicado aos rótulos do tipo de postagem ao registrar o tipo de postagem edd\_license.

 **Outras Ações**

 *edd\_sl\_before\_package\_download* - executado pouco antes do arquivo de download para atualizações automáticas ser servido ao navegador.

 O [Software Licensing](https://easydigitaldownloads.com/downloads/software-licensing) versão 3.5 e posterior inclui uma classe EDD\_SL\_License para interagir com registros de chaves de licença. A classe EDD\_SL\_License permite que você interaja com dados de chaves de licença, atualize chaves de licença existentes e crie novos registros de chaves de licença.

### Instanciando Objetos

 Para melhorar o desempenho ao acessar um objeto de licença, você deve usar o método wrapper, que utiliza a camada de cache de objetos do núcleo do WordPress. Você pode usar o ID da Licença ou a Chave da Licença para instanciar um objeto. Se nenhuma licença existir para as informações fornecidas, o método wrapper retornará `false`:

```
// Instancia uma licença via ID
$license = edd_software_licensing()-&gt;get_license( 2326422 );

// Instancia uma licença via chave de licença
$license_by_key = edd_software_licensing-&gt;get_license( '9e21e9a885212f96cccb4d6186541332', true );

// Se você passar um ID ou chave de licença inválido, receberá 'false' como resposta.
$invalid_license = edd_software_licensing()-&gt;get_license( -1 );
```

 EDD\_SL\_License pode ser instanciado com um ID de licença ou nenhum valor ao criar uma nova licença. Aqui estão alguns exemplos:

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

 Se você deseja criar uma nova licença:

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

 Embora você possa instanciar diretamente uma licença com EDD\_SL\_License, é preferível usar a função wrapper por razões de desempenho.

 Os argumentos necessários para criar uma nova licença serão abordados abaixo.

### Propriedades Disponíveis

 A classe EDD\_SL\_License inclui inúmeras propriedades acessíveis que contêm informações relacionadas ao registro da chave de licença.

- **ID** - O número de ID do registro da licença. Isso corresponde ao ID do objeto WP\_Post.
- **parent** - O ID do post da licença pai, se houver.
- **name** - O nome da licença. Esta é uma concatenação do endereço de e-mail do cliente e o nome do produto ao qual a chave de licença está associada.
- **key** - A própria chave de licença. Geralmente é uma string de 32 caracteres, mas pode ser qualquer coisa.
- **user\_id** - O ID do WP\_User ao qual a chave de licença pertence, se houver.
- **customer\_id** - O ID do [EDD\_Customer](https://easydigitaldownloads.com/docs/edd_customer/) ao qual a licença pertence.
- **payment\_id** - O ID do [EDD\_Payment](https://easydigitaldownloads.com/docs/edd_payment/) para o qual a licença foi criada.
- **payment\_ids** - Um array de IDs de pagamento relacionados à licença. Inclui renovações e atualizações.
- **cart\_index** - O índice numérico no array de itens do carrinho do produto ao qual a chave de licença está associada.
- **download** - Uma instância EDD\_SL\_Download do produto de download ao qual a chave de licença está associada.
- **download\_id** - O ID do post do produto de download ao qual a chave de licença está associada.
- **price\_id** - O ID da opção de preço do produto de download atribuída à chave de licença.
- **activation\_limit** - O número de URLs/máquinas exclusivas nas quais a chave de licença pode ser ativada.
- **sites** - Um array de URLs de sites (ou IDs de máquina) nas quais a chave de licença está ativada.
- **activation\_count** - O número de URLs/máquinas exclusivas nas quais a chave de licença está atualmente ativada.
- **expiration** - A data de expiração da chave de licença.
- **is\_lifetime** - Sinalizador booleano indicando se a licença é uma licença vitalícia (nunca expira).
- **status** - O status atual da licença (ativa, inativa, expirada).
- **post\_status** - O post\_status do objeto WP\_Post para a licença.
- **child\_licenses** - Um array de chaves de licença filhas, se houver.

 Cada propriedade pode ser acessada diretamente, assim:

```
// Acessa o ID de preço da licença
$price_id = $license-&gt;price_id;
```

 Cada propriedade também pode ser atualizada definindo o valor da propriedade, assim:

```
// Define o limite de ativação da licença
$license-&gt;activation_limit = 100;
```

 Alterações nas propriedades do objeto serão salvas imediatamente, sem a necessidade de chamar um método de salvar ou atualizar.


### Métodos Disponíveis

 A classe EDD\_SL\_License inclui métodos públicos para acessar as propriedades do objeto e vários outros métodos de ajuda que podem ser usados para acessar e interagir com os dados da licença.

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

 Este método permite criar um novo registro de licença para um produto de download e registro de pagamento existentes.

- $download\_id - Este deve ser o ID de um produto de download existente
- $payment\_id - Este deve ser o ID de um registro de pagamento existente que incluiu uma compra de $download\_id
- $price\_id - Este é um ID de preço opcional para $download\_id se preços variáveis estiverem habilitados
- $cart\_index - Este é um índice de item de carrinho opcional que identifica exatamente a qual item do carrinho esta licença corresponde
- $options - Um array de opções para a licença. Pode incluir as seguintes chaves 
    - parent\_license\_id
    - activation\_limit
    - license\_length
    - expiration\_date
    - is\_lifetime

 O método create() pode ser usado para criar uma nova chave de licença, mas normalmente não será usado manualmente, exceto em implementações muito personalizadas.

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

 Este método permite atualizar metadados de uma licença em massa. O array $data deve ser um par chave/valor de meta\_key/meta\_value.

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

 Este método acionará a renovação de uma chave de licença, estendendo a data de expiração por um período e redefinindo o status da licença para *inativo* ou *ativo*.

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

 Este método reativará uma chave de licença desativada.

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

 Este método desativará uma chave de licença.

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

 Este método recuperará metadados de uma licença.

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

 Este método atualizará metadados de uma licença.

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

 Este método recuperará a URL de renovação de uma licença.

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

 Este método determinará se a URL fornecida está registrada na licença.

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

 Este método verificará se a licença atingiu seu limite de ativação.

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

 Este método retornará a duração de um único período para a licença, como *vitalícia* ou *+1 ano*.

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

 Este método pode ser usado para registrar uma nova URL de site em uma licença.

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

 Este método pode ser usado para remover uma URL de site de uma licença.

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

 Este método pode ser usado para redefinir o limite de ativação em uma licença de acordo com as configurações do produto de download.</body></html>