Estrutura de extensão

Introdução
A estrutura de extensão fornece um meio de modificar vários dados do aplicativo dentro do SuiteCRM. Por exemplo, ele fornece uma maneira de adicionar ou modificar vardefs, tarefas agendadas, strings de linguagem e muito mais. O mecanismo é um pouco mais complicado do que simplesmente copiar um arquivo para um diretório personalizado para substituir todo o seu conteúdo, mas tem vantagens:
– você pode substituir apenas uma parte do que está modificando.
– pessoas diferentes podem substituir partes diferentes, sem conflitos. Por exemplo, você pode adicionar um campo a um layout e, em seguida, um add-on adiciona outro, e um segundo add-on altera algo mais no mesmo layout. SuiteCRM irá garantir que todas as alterações serão consolidadas.

Em geral, uma pasta é fornecida em custom / Extension (o caminho exato depende da extensão). Esta pasta é então verificada em busca de arquivos que serão consolidados em um único arquivo ext que o SuiteCRM irá ler e usar. Desta forma, é possível para os desenvolvedores adicionar um novo arquivo para afetar o comportamento do SuiteCRM em vez de alterar os arquivos existentes. Isso torna as alterações mais modulares e permite a fácil adição ou remoção de alterações.

Além disso, como esses arquivos são todos consolidados, isso significa que não há efeito no desempenho da verificação de um número (possivelmente grande) de arquivos. Isso é feito apenas ao executar um reparo e reconstrução no menu de administração.

 

Extensões Padrão
Lista de extensões padrão do SuiteCRM:

Diretório de extensão Arquivo compilado Módulo Descrição
ActionViewMap action_view_map.ext.php Usado para mapear ações de um módulo para uma visualização especificada.
ActionFileMap action_file_map.ext.php Usado para mapear ações de um módulo para um arquivo especificado.
ActionReMap action_remap.ext.php Usado para mapear ações de um módulo para ações existentes.
Administração administração.ext.php Administração Usado para adicionar novas seções ao painel de administração.
EntryPointRegistry entry_point_registry.ext.php Aplicação Usado para adicionar novos pontos de entrada ao SuiteCRM. Consulte o capítulo sobre Pontos de entrada.
Extensões extensions.ext.php Aplicação Usado para adicionar novos tipos de extensão.
FileAccessControlMap file_access_control_map.ext.php Usado para adicionar, atualizar ou excluir entradas nas listas de controle de acesso para arquivos.
Línguas N / A (as extensões de idioma são tratadas de maneira especial e, como tal, não são compiladas em um único arquivo) Usado para adicionar, atualizar ou excluir strings de idioma para módulos e strings de aplicativo. Consulte o capítulo sobre strings de idioma.
Layoutdefs layoutdefs.ext.php Usado para adicionar, atualizar ou excluir definições de subpainel para um módulo.
GlobalLinks links.ext.php Aplicação Usado para adicionar, atualizar ou excluir links globais (a lista de links que aparece no canto superior direito da interface do SuiteCRM).
LogicHooks Logichooks.ext.php Usado para adicionar, atualizar ou excluir ganchos lógicos. Veja o capítulo sobre Ganchos Lógicos.
Incluir modules.ext.php Aplicação Usado para registrar novos beans e módulos.
Menus menu.ext.php Usado para adicionar, atualizar ou excluir os links do menu para cada módulo.
Tarefas agendadas scheduletasks.ext.php Schedulers Usado para adicionar novas tarefas agendadas. Consulte o capítulo sobre Tarefas agendadas.
UserPage userpage.ext.php Usários Não utilizado
Útil custom_utils.ext.php Apliação Usado para adicionar novos métodos utilitários.
Vardefs vardefs.ext.php Usado para adicionar, atualizar ou excluir vardefs de um módulo. Veja a seção sobre Vardefs.
JSGroupings jsgroups.ext.php Usado para adicionar, atualizar ou excluir agrupamentos JavaScript.
Ações actions.ext.php AOW_Actions Usado para adicionar novas ações do WorkFlow.

 

Forçando substituições
Para garantir que certas personalizações tenham precedência, há um mecanismo adicional usando arquivos que começam com _override, por exemplo:

custom \ Extension \ modules \ Accounts \ Ext \ Vardefs \ _override_my_field_change.php

Quando o Quick Repair & Rebuild é executado, todos os arquivos de extensão são consolidados em dois grupos:
– a primeira execução reúne arquivos que não começam com _override.
– a segunda execução reúne arquivos que começam com _override Uma vez que esses arquivos são carregados com um requerimento do PHP, o PHP neles é executado e as substituições serão as últimas a serem executadas, portanto, terão efeito independentemente do que for feito nos arquivos lidos antes.

 

Extensões Personalizadas
Curiosamente, a estrutura de extensão pode ser usada para adicionar novas extensões.
Isso permite que você crie personalizações que são facilmente personalizadas por outros (de maneira semelhante, por exemplo, como os vardefs podem ser adicionados – consulte o capítulo sobre Vardefs). Para criar uma extensão personalizada, basta adicionar um novo arquivo em personalizado / Extensão / aplicativo / Ext / Extensões. Isso pode receber um nome de sua escolha.

Nosso exemplo usará custom / Extension / application / Ext / Extensions / SportsList.php e será semelhante a:

Exemplo 14.1: Adicionando uma entrada de ponto de entrada

 "sports_list",
     "extdir" => "SportsList",
     "file" => 'sportslist.ext.php',
     "module" => "");

Agora, quando um Quick Repair and Rebuild é executado, todos os arquivos em custom / Extension / application / Ext / SportsList / serão consolidados em custom / application / Ext / SportsList / sportslist.ext.php.
Por si só, esse arquivo não fará nada, mas agora você pode escrever um código personalizado que verifica o arquivo consolidado, em vez de se preocupar em pesquisar personalizações.

 

Extensões do Composer
Para adicionar seus próprios pacotes ao Composer, você pode defini-los em arquivos com o seguinte nome: custom / Extension / application / Ext / Composer / * / *. json Um exemplo poderia ser custom / Extension / application / Ext / Composer / MyProject / AddToComposer.json Execute uma instalação do composer –no-dev após adicioná-la, e novamente após cada atualização do SuiteCRM.

Essas extensões do Composer não são tratadas diretamente pelo SuiteCRM, mas pelo plug-in de mesclagem do Composer.