# Modül Ayar ve Veri Kancaları

https://dev.wisecp.com/tr/modul-ayar-kancalari

Modül ayarları, API kaydı, araç verisi ve içe aktarmanın dokuz kancası.

## Genel Bakış

Modülün ayarları dört ayrı yerden kaydedilir: modülün kendi ayarları, eklenti ayarları, modülün açtığı sayfadaki ayarlar ve sahtekârlık denetimi ayarları. Dördü de ayrı bir olay üretir.

Yanlarında verinin geçtiği üç filtre durur: araç verisi, aktarma arşivi ve aktarılabilir tipler. Bir de her dış çağrıdan sonra çalışan API kaydı bulunur.

## Referans

### Modül ayarlarının kaydını izleme

actionmodule.config_saved

`AdminModules` yazımdan sonra

Bir modülün ayarları kaydedildikten sonra çalışır.

Parametreler 2

$typestringModülün tipi.

$keystringModülün anahtarı.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:module.config_saved', 10, function ($type, $key) {
    Acme::invalidateModuleCache($type, $key);
});
```

### Eklenti ayarlarının kaydını izleme

actionmodule.addon_settings_saved

`AddonModule` gizli değer taşır

Bir eklentinin ayarları kaydedildikten sonra çalışır.

Parametreler 2

$namestringEklentinin anahtarı.

$configarrayDiske yazılan yapılandırmanın tamamı. İçinde API anahtarı ve erişim ayarları bulunur: kendi kaydınıza ya da günlüğünüze yazmayın.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:module.addon_settings_saved', 10, function ($name, $config) {
    // Yapilandirmanin kendisini tasimayin.
    Acme::notifyOps('eklenti ayari degisti: ' . $name);
});
```

### Modül alanı ayarlarının kaydını izleme

actionmodule.area_settings_saved

`AdminArea` yalnız gönderilenler

Modülün kendi yönetim sayfasındaki ayarlar kaydedildikten sonra çalışır.

Parametreler 3

$module_typestringModülün tipi.

$module_namestringModülün adı.

$valuesarrayKaydedilen değerler. **Yalnız bu çağrıda gönderilenler** bulunur: ayarların tamamı değildir. Eksik bir anahtarı “silinmiş” diye okumayın.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:module.area_settings_saved', 10,
    function ($module_type, $module_name, $values) {
        // Dizi yalniz GONDERILENLERI tasir, ayarlarin tamamini degil.
        Acme::auditChange($module_name, array_keys($values));
    });
```

### Sahtekârlık modülü ayarlarını izleme

actionmodule.fraud_settings_saved

`FraudModule` gizli değer taşır

Bir sahtekârlık denetimi modülünün ayarları kaydedildikten sonra çalışır.

Parametreler 2

$namestringModülün anahtarı.

$configarrayDiske yazılan yapılandırma: durumu ve ayarları. Servis anahtarı içerir; taşımayın.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:module.fraud_settings_saved', 10, function ($name, $config) {
    Acme::notifyOps('sahtekarlik denetimi ayari degisti: ' . $name);
});
```

### Modül API kaydını izleme

actionmodule.api_logged

`ModuleBase` ham istek ve yanıt

Bir modül dış servisle konuştuktan sonra çalışır. **Her** çağrı için çalışır: yoğun bir yoldur.

Parametreler 4

$typestringModülün tipi.

$modulestringModülün adı.

$actionstringKaydedilen işlem.

$log_dataarrayKaydın tamamı: gönderilen istek, alınan yanıt ve istek bilgileri. ? İçinde **sunucu parolası, API anahtarı ve müşteri verisi** ham hâlde bulunur. Kendi kaydınıza kopyalamadan önce gerçekten neye ihtiyacınız olduğunu seçin.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:module.api_logged', 10, function ($type, $module, $action, $log_data) {
    // Kaydin tamamini KOPYALAMAYIN: gizli deger tasir.
    Acme::metric($type . '.' . $module . '.' . $action);
});
```

### Araç verisini değiştirme

filtermodule.tool_data

`ServerModule` bağla geçer

Bir sunucu aracının verisi modülden döndükten sonra, ekrana gitmeden önce çalışır: posta kutuları, veritabanları ve kardeşleri.

Parametreler 3

$toolstringAracın anahtarı.

$actionstringAracın işlemi; varsayılan liste görünümüdür.

$dataarraybağlaModülden dönen veri, normalize edilmiş hâliyle.

Dönüş 1

voidDönüş yoksayılır; verinin üzerine yazarsınız. Kanca bütün araçlar için çalışır: önce hangi araçta olduğunuza bakın.

Dinleyici PHP

```php
Hook::add('filter:module.tool_data', 10, function ($tool, $action, &$data) {
    // Kanca butun araclar icin calisir.
    if ($tool !== 'databases') return;

    $data = Acme::hideSystemDatabases($data);
});
```

### İçe aktarmayı durdurma

gatemodule.import_run

`Imports` sıfırlama modu

Başka bir sistemden veri aktarımı başlamadan önce çalışır. Modlardan biri **mevcut veriyi sıfırlar**: en değerli denetim burada yapılır.

Parametreler 3

$platformstringKaynak platform.

$typestringAktarılacak veri tipi.

$import_typestringAktarım modu: `clean` mevcut veriyi **sıfırlar**, `enrich` üzerine ekler.

Dönüş 1

string|null**Boş olmayan bir metin işlemi engeller** ve hata olarak gösterilir. Boş dönüş devam ettirir.

Dinleyici PHP

```php
Hook::add('gate:module.import_run', 10, function ($platform, $type, $import_type) {
    // 'clean' mevcut veriyi SIFIRLAR: canlida kapatin.
    if ($import_type === 'clean' && Acme::hasLiveData($type))
        return 'Sifirlayan aktarim canli veri uzerinde calistirilamaz.';

    return null;
});
```

### Açılacak arşivi değiştirme

filtermodule.import_archive

`AdminModules` bağla geçer

Yüklenen modül arşivi açılmadan önce çalışır. Yolu değiştirirseniz **başka bir dosya** açılır.

Parametreler 2

$theFilestringbağlaGeçici dizindeki arşivin tam yolu. Üzerine yazdığınız yol açılacak olandır.

$groupstringHedef modül tipi.

Dönüş 1

voidDönüş yoksayılır; yolun üzerine yazarsınız. Kendi ürettiğiniz bir dosyayı buraya koyacaksanız yolun sizin denetiminizde olduğundan emin olun.

Dinleyici PHP

```php
Hook::add('filter:module.import_archive', 10, function (&$theFile, $group) {
    // Yolu degistirmek BASKA bir dosyayi actirir: kendi urettiginizi verin.
    $theFile = Acme::repackage($theFile, $group);
});
```

### Aktarılabilir veri tiplerini değiştirme

filtermodule.import_data_types

`Imports` bağla geçer

İçe aktarma sihirbazı hangi veri tiplerini sunacağını sorarken çalışır.

Parametreler 2

$data_typesarraybağlaTip listesi; her tip adı, açıklaması ve zorunlu olup olmadığını taşır.

$platformstringAktif platform.

Dönüş 1

voidDönüş yoksayılır; listenin üzerine yazarsınız. Zorunlu işaretli bir tipi listeden çıkarmak, aktarımı eksik veriyle başlatabilir.

Dinleyici PHP

```php
Hook::add('filter:module.import_data_types', 10, function (&$data_types, $platform) {
    // Zorunlu tipi cikarmak aktarimi eksik baslatir.
    $data_types['acme-notes'] = [
        'name'        => 'Acme notlari',
        'description' => 'Musteri kayitlarina bagli notlar',
        'required'    => false,
    ];
});
```

## Tuzaklar

> **API kaydı ham gizli değer taşır**
> 
> Kayıt, dış servise gönderilen isteği ve gelen yanıtı olduğu gibi içerir: **sunucu parolası, API anahtarı, müşteri verisi**. Bu diziyi kendi kaydınıza kopyalamak, gizli değerleri ikinci bir yere yaymaktır. İhtiyacınız olan alanı seçin, tamamını taşımayın.

> **Sıfırlayan aktarım geri alınamaz**
> 
> İçe aktarmanın bir modu mevcut veriyi **siler**. Aktarım kapısı, bu modun canlı veri üzerinde çalışmasını engelleyebileceğiniz tek noktadır.

## İlgili Makaleler

- Modül Kancaları
- [Sistem Olayı Kancaları](https://dev.wisecp.com/tr/sistem-olay-kancalari)
- [Kancalar Nasıl Çalışır](https://dev.wisecp.com/tr/kancalar-nasil-calisir)
