# Modül Kurulum Kancaları

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

Modül kurma, etkinleştirme, silme ve kuyruk müdahalesinin dokuz kancası.

## Genel Bakış

Bir modülün yolu dört adımdır: yüklenir, etkinleştirilir, kapatılır, silinir. Her adımın önünde durdurabileceğiniz bir kapı, arkasında haber veren bir olay bulunur.

İki şekil farkı vardır. Etkinleştirme kancaları **liste** alır, çünkü panelde çoklu seçim yapılabilir; silme kancaları tek modülle çalışır.

## Referans

### Modül etkinleştirmeyi durdurma

gatemodule.activate

`AdminModules` liste gelir

Bir ya da birkaç modül etkinleştirilmeden önce çalışır. Panelde çoklu seçim yapılabildiği için elinize **liste** gelir.

Parametreler 2

$groupstringModül tipi: posta, kısa mesaj, ödeme ya da ürün.

$modulesarrayBu istekte etkinleştirilen modüllerin anahtarları. Tek modül seçilse de dizidir; hepsini gezin.

Dönüş 1

mixed**Dolu bir dönüş engeller**: metin ya da ileti taşıyan bir dizi olabilir, ikisi de kabul edilir ve mesaj kullanıcıya gösterilir. Boş dönüş devam ettirir.

Dinleyici PHP

```php
Hook::add('gate:module.activate', 10, function ($group, $modules) {
    // Tek modul secilse bile dizidir.
    foreach ($modules as $key)
        if (!Acme::licensed($group, $key)) return 'Bu modul icin lisansiniz yok: ' . $key;

    return null;
});
```

### Modül etkinleşmesini izleme

actionmodule.activated

`AdminModules` liste gelir

Modüller etkinleştirildikten sonra çalışır.

Parametreler 2

$groupstringModül tipi.

$modulesarrayEtkinleşen modüllerin anahtarları.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:module.activated', 10, function ($group, $modules) {
    foreach ($modules as $key) Acme::onModuleOn($group, $key);
});
```

### Modül devre dışı kalmasını izleme

actionmodule.deactivated

`AdminModules` liste gelir

Modüller devre dışı bırakıldıktan sonra çalışır. Kapatılan bir ödeme ya da sunucu modülü arkasında **çalışan hizmetler** bırakabilir.

Parametreler 2

$groupstringModül tipi.

$modulesarrayDevre dışı bırakılan modüllerin anahtarları.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:module.deactivated', 10, function ($group, $modules) {
    // Kapali modulun arkasinda calisan hizmet kalmis olabilir.
    foreach ($modules as $key) Acme::warnOrphans($group, $key);
});
```

### Modül silmeyi durdurma

gatemodule.delete

`AdminModules` tek modül

Bir modül dosyalarıyla birlikte silinmeden önce çalışır. Etkinleştirmenin aksine burada **tek** modül vardır.

Parametreler 2

$typestringModülün tipi.

$keystringModülün anahtarı.

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.delete', 10, function ($type, $key) {
    // Uzerinde hizmet duran modul silinmesin.
    if (Acme::hasLiveServices($type, $key)) return 'Bu modulde calisan hizmetler var.';

    return null;
});
```

### Modül silinmesini izleme

actionmodule.deleted

`AdminModules` silme sonrası

Bir modül silindikten sonra çalışır. Dosyaları artık diskte değildir.

Parametreler 2

$typestringSilinen modülün tipi.

$keystringSilinen modülün anahtarı.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

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

### Eklenti yüklemesini durdurma

gatemodule.addon_install

`AdminModules` yüklenen dosya

Yüklenen eklenti paketi açılmadan önce çalışır. Elinizdeki, henüz geçici dizinde duran **ham dosyadır**.

Parametreler 2

$filearrayYüklenen dosyanın bilgisi: adı, geçici yolu ve boyutu. Dosya adı **kullanıcıdan gelir**: doğrudan güvenmeyin.

$activatedboolKurulumdan sonra otomatik etkinleştirilecek mi.

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.addon_install', 10, function ($file, $activated) {
    // Dosya adi kullanicidan gelir: icerige bakin, ada degil.
    if (!Acme::signatureValid($file['tmp_name'] ?? '')) return 'Paket imzasi dogrulanamadi.';

    return null;
});
```

### Eklenti silmeyi durdurma

gatemodule.addon_delete

`AdminModules` yazımdan önce

Bir eklenti kaldırılmadan önce çalışır.

Parametreler 1

$keystringSilinecek eklentinin anahtarı.

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.addon_delete', 10, function ($key) {
    if (Acme::isRequired($key)) return 'Bu eklenti kurulumun calismasi icin gerekli.';

    return null;
});
```

### Eklenti listesini değiştirme

filtermodule.addons_list

`AdminModules` bağla geçer

Eklenti sayfasının listesi hazırlandıktan sonra çalışır.

Parametreler 1

$moduleListarraybağlaÜç grup hâlinde liste: etkin, kapalı ve satın alınabilir olanlar. Yapıyı bozmadan değiştirin: şablon üç grubu da bekler.

Dönüş 1

voidDönüş yoksayılır; listenin üzerine yazarsınız.

Dinleyici PHP

```php
Hook::add('filter:module.addons_list', 10, function (&$moduleList) {
    // Uc grubun yapisini bozmayin.
    $moduleList['premium'] = Acme::filterOffers($moduleList['premium'] ?? []);
});
```

### Kuyruk müdahalesini durdurma

gatemodule.queue_intervene

`AdminModules` toplu işlemde sıfır

Yönetici modül kuyruğuna elle müdahale etmeden önce çalışır: yeniden deneme, silme, temizleme ve hemen çalıştırma.

Parametreler 2

$actionstringMüdahalenin türü.

$idintHedef kaydın kimliği. **Toplu işlemde sıfır gelir**: tek bir kaydı denetlemeye çalışan bir kural o durumda hiçbir şeye bakmaz.

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.queue_intervene', 10, function ($action, $id) {
    // Toplu islemde id SIFIR gelir: tek kayit varsayimi kurmayin.
    if ($id === 0 && $action === 'delete') return 'Toplu silme kapali.';

    return null;
});
```

## Tuzaklar

> **Etkinleştirme kancalarına liste gelir**
> 
> Tek bir modül seçilse bile parametre **dizidir**. Doğrudan karşılaştıran bir denetim hiçbir şey yakalamaz; listeyi gezin.

> **Kuyruk müdahalesinde toplu işlem sıfır taşır**
> 
> Birden çok kayda birden müdahale edildiğinde kayıt kimliği **sıfır** gelir. Tek kayda bakmak üzere yazılmış bir kural o durumda sessizce hiçbir şeyi denetlemez.

## İ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)
