Documentação

Como criar um complemento

Amplie o Linsei com o seu próprio código (sem tocar no núcleo) usando o sistema de hooks. Guia completo com um exemplo que funciona.

1. O que é um complemento

Um complemento é uma pasta dentro de plugins/ com um ficheiro plugin.php. O Linsei carrega-o sozinho ao arrancar. O seu código «liga-se» a pontos concretos do programa (os hooks) para acrescentar funções, sem modificar o núcleo. Assim o seu complemento sobrevive às atualizações do Linsei.

plugins/ └─ meu-complemento/ └─ plugin.php

2. Estrutura mínima

Cada plugin.php começa com esta linha de segurança (evita a execução direta):

<?php if(!defined("PL_APP")){http_response_code(403);exit;} /* Complemento: O meu primeiro complemento */ pl_add_action('dashboard_after', function ($isAdmin) { echo '<div class="card">Olá do meu complemento!</div>'; });

Copie essa pasta para plugins/ e, ao recarregar o painel, verá o seu cartão. É tudo: já tem um complemento.

3. Ações e filtros

Há duas formas de se ligar:

  • Ações (pl_add_action): executam o seu código num dado momento (ex. mostrar algo no painel).
  • Filtros (pl_add_filter): recebem um valor, transformam-no e devolvem-no (ex. mudar a URL de destino).
// Ação: fazer algo pl_add_action('link_created', function ($slug, $url) { // ex. avisar um webhook }); // Filtro: transformar um valor (devolva-o sempre) pl_add_filter('link_destination', function ($url) { return $url; // aqui poderia modificar a URL });

4. Hooks disponíveis

HookTipoQuandoArgumentos
initaçãoem cada pedido-
admin_menuaçãoao desenhar o menu lateral$user
dashboard_afteraçãono fim do painel inicial$isAdmin
links_toolbaraçãobarra de botões de Links-
link_form_fieldsaçãono formulário de link$link
link_row_actionsaçãoações de cada linha$link
help_afteraçãono fim da Ajuda-
link_createdaçãoao criar um link$slug, $url
link_savedaçãoao guardar (criar/editar)$id, $post
link_clickedaçãoem cada clique$link
link_destinationfiltrotransforma o destino ao encurtar$url
link_redirectfiltrodecide o redirecionamento$decision, $link, $ctx
redirect_interstitialfiltroHTML antes de redirecionar$html, $link, $target, $ctx
A sua própria página: com pl_add_plugin_menu(título, url, ícone, rota) acrescenta uma entrada ao menu, e em init responde a essa rota. Os ícones são do Bootstrap Icons.

5. Exemplo completo

Este complemento pinta cada link da lista pelos seus cliques: vermelho se tem poucas visitas, âmbar se médio e verde se muitas. Ajuste $poucos e $muitos:

<?php if(!defined("PL_APP")){http_response_code(403);exit;} /* Complemento: Semáforo de visitas */ pl_add_action('link_row_actions', function ($link) { $cliques = (int)($link['click_count'] ?? 0); $poucos = 10; // menos de 10 cliques: vermelho $muitos = 100; // mais de 100 cliques: verde if ($cliques < $poucos) { $color = '#dc2626'; } // vermelho elseif ($cliques > $muitos) { $color = '#16a34a'; } // verde else { $color = '#f59e0b'; } // âmbar echo '<span style="background:' . $color . ';color:#fff;' . 'border-radius:999px;padding:1px 8px;font-size:.75rem">' . $cliques . '</span>'; });

Deixar que o administrador defina os limites

Para não deixar os números fixos, leia-os do armazém de ajustes (o mesmo que o núcleo usa para o SMTP) com pl_app_setting() e dê ao complemento a sua própria página onde o administrador os altera:

<?php if(!defined("PL_APP")){http_response_code(403);exit;} /* Complemento: semáforo configurável */ // 1) No semáforo, leia os limites do armazém (com valores padrão) $poucos = (int) pl_app_setting('semaforo_poucos', 10); $muitos = (int) pl_app_setting('semaforo_muitos', 100); // 2) Na página do complemento, salve o que o administrador enviar if (($_POST['salvar'] ?? '') !== '') { pl_app_settings_save([ 'semaforo_poucos' => (int)($_POST['poucos'] ?? 10), 'semaforo_muitos' => (int)($_POST['muitos'] ?? 100), ]); } // 3) Adicione a sua entrada ao menu do painel (apenas administrador) pl_add_plugin_menu('Semáforo', '/admin/semaforo', 'bi-sliders', '/admin/semaforo');
Onde os valores vivem: em data/settings.json, via pl_app_setting() e pl_app_settings_save() (o mesmo armazém do SMTP do núcleo). O administrador muda os limites sem tocar no código.
Use o seu próprio prefixo nas funções (ex. pl_meu_) para não colidir com outros complementos.

6. Empacotar e partilhar

Quando funcionar, comprima a pasta do seu complemento num .zip e carregue-o pelo painel:

  1. Vá a Complementos.
  2. Clique em «Enviar complemento» (canto superior direito).
  3. Escolha o seu .zip e instala-se de imediato.
Um complemento executa código no seu servidor: envie apenas os de confiança. Só o administrador o pode fazer.