# Sistem Olayı Kancaları

https://dev.wisecp.com/tr/sistem-olay-kancalari

Kurulumun kendisine ait on kanca: eklentiler, duyurular, içe aktarma, görevler, sürümler, site haritası ve sertifikalar.

## Genel Bakış

Bu kancalar müşteriyle değil **kurulumun kendisiyle** ilgilenir: hangi eklenti kuruldu, hangi duyuru yayımlandı, hangi aktarım bitti, yeni sürüm çıktı mı.

Üçü dışarıya bakar: site haritası arama motorlarına, sertifika taraması uyarı sistemine, lisans devri sayfası tarafların ekranına.

## Referans

### Eklenti kurulumunu izleme

actionaddon.installed

`AdminModules` kurulum sonrası

Bir eklenti paketi kurulduktan sonra çalışır. Kurulmuş olması etkin olduğu anlamına gelmez.

Parametreler 2

$modulestringKurulan eklentinin anahtarı.

$activatedboolKurulum sırasında **etkinleştirildi mi**. Yanlışsa eklenti diskte durur ama çalışmaz.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:addon.installed', 10, function ($module, $activated) {
    // Kurulmus olmasi etkin oldugu anlamina gelmez.
    if ($activated) Acme::onEnabled($module);
});
```

### Eklenti durumunun değişmesini izleme

actionaddon.status_changed

`AdminModules` iki değerden biri

Bir eklenti açıldığında ya da kapatıldığında çalışır.

Parametreler 2

$keystringEklentinin anahtarı.

$statusstringYeni durum: `enable` ya da `disable`.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:addon.status_changed', 10, function ($key, $status) {
    if ($status === 'disable') Acme::pauseIntegration($key);
});
```

### Eklenti silinmesini izleme

actionaddon.deleted

`AdminModules` silme sonrası

Bir eklenti kaldırıldıktan sonra çalışır.

Parametreler 1

$modulestringSilinen eklentinin anahtarı.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

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

### Duyuru kaydını izleme

actionannouncement.saved

`AdminAnnouncements` ekleme ve düzenleme

Bir duyuru kaydedildikten sonra çalışır.

Parametreler 3

$savedIdintDuyurunun kimliği.

$dataarrayKaydedilen veri: başlığı, iletisi, tipi, hedef ülke ve dili, ürün grubu, sunucusu, tarih aralığı ve durumu.

$isNewboolDoğruysa yeni eklendi, yanlışsa güncellendi.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:announcement.saved', 10, function ($savedId, $data, $isNew) {
    // Yalniz yeni duyuruyu dis kanala tasiyin.
    if ($isNew) Acme::broadcast($data['title'] ?? '', $data['message'] ?? '');
});
```

### İçe aktarmanın bitmesini izleme

actionimport.completed

`Imports` tip başına

Başka bir sistemden veri aktarımı bittiğinde çalışır. **Veri tipi başına** çalışır: müşteriler, ürünler ve faturalar ayrı ayrı biter.

Parametreler 3

$platformstringAktarımın yapıldığı platform.

$typestringAktarılan veri tipi.

$resultarrayAktarımın sonucu: ilerleme, sayaçlar ve durum.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:import.completed', 10, function ($platform, $type, $result) {
    // Tip basina calisir: 'her sey bitti' anlamina gelmez.
    Acme::noteImport($platform, $type, $result);
});
```

### Görev kaydını izleme

actiontask.saved

`AdminTasks` ekleme ve düzenleme

Panel içindeki bir görev kaydedildiğinde çalışır.

Parametreler 2

$idintGörevin kimliği.

$is_newboolDoğruysa yeni oluşturuldu.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:task.saved', 10, function ($id, $is_new) {
    if ($is_new) Acme::mirrorTask($id);
});
```

### Yeni sürüm bildirimini izleme

actionupdates.new_version_detected

`Updates` yalnız bildirim

Yeni bir çekirdek sürümü görüldüğünde çalışır. **Yükseltme yapılmaz**: bu yalnız bir haberdir.

Parametreler 2

$responsearrayYeni sürümün bilgisi: numarası, tipi ve değişiklik listesi.

$current_versionstringKurulu olan sürüm.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:updates.new_version_detected', 10, function ($response, $current_version) {
    // Yukseltme yapilmaz, yalnizca haber verilir.
    Acme::notifyOps('yeni surum: ' . ($response['version'] ?? '?'));
});
```

### Site haritasına adres ekleme

filtersitemap.links

`Sitemap` dil başına

Site haritası üretilirken çalışır. Kendi sayfalarınızı arama motorlarına buradan bildirirsiniz.

Parametreler 2

$linksarraybağlaTam adres listesi. Ekleme ve çıkarma serbesttir. Boş elemanlar ve tekrarlar çıktı üretilirken temizlenir; sıra korunur.

$ctxarraybağlaBağlam: bu haritanın dili ve **aktif temanın karşılamadığı** adres anahtarları. Kanca her dil için ayrı çalışır: adresinizi o dile göre üretin.

Dönüş 1

voidDönüş yoksayılır; listeye ekleme yaparsınız.

Dinleyici PHP

```php
Hook::add('filter:sitemap.links', 10, function (&$links, &$ctx) {
    // Kanca her dil icin ayri calisir.
    foreach (Acme::publicPages($ctx['lang'] ?? '') as $url) $links[] = $url;
});
```

### Süresi dolan sertifikaları bildirme

filterssl.expiring_services

`cronjobs` katkı döndürür

Süresi yaklaşan sertifikalar taranırken çalışır. Çekirdeğin bilmediği sertifikaları buradan listeye katarsınız.

Parametreler 1

$maxDaysintUyarı penceresi: kaç gün kala haber verileceği.

Dönüş 1

array|nullKendi **katkınızı** döndürürsünüz: süresi yaklaşan hizmetlerin listesi, her biri kalan gün bilgisiyle. Çekirdek bütün dönüşleri birleştirir; listenin tamamını değil yalnız kendi payınızı döndürün.

Dinleyici PHP

```php
Hook::add('filter:ssl.expiring_services', 10, function ($maxDays) {
    // Yalniz KENDI payinizi dondurun: cekirdek hepsini birlestirir.
    return Acme::expiringCerts($maxDays);
});
```

### Devir doğrulama sayfasını zenginleştirme

filterlicense.transfer.verify_context

`LicenseTransfer` bağla geçer

Lisans devri doğrulama sayfası görünürken çalışır. Sayfaya kendi bilginizi buradan eklersiniz.

Parametreler 1

$ctxarraybağlaSayfanın bağlamı: devrin durumu, kaydı, hizmet, devreden ve devralan taraflar.

Dönüş 1

voidDönüş yoksayılır; bağlamın üzerine yazarsınız.

Dinleyici PHP

```php
Hook::add('filter:license.transfer.verify_context', 10, function (&$ctx) {
    $ctx['acme_note'] = Acme::transferNote((int) ($ctx['transfer']['id'] ?? 0));
});
```

## Tuzaklar

> **İçe aktarma tip başına biter**
> 
> Aktarım olayı **her veri tipi için ayrı** çalışır: müşteriler biter, sonra ürünler, sonra faturalar. Bir çağrıyı “aktarımın tamamı bitti” diye okumak, yarım veriyle işlem başlatmaya yol açar.

> **Sertifika kancası katkı ister, liste değil**
> 
> Süre taramasında kendi **payınızı** döndürürsünüz. Çekirdek bütün dönüşleri birleştirir; listenin tamamını döndürmek kayıtları çoğaltır.

## İlgili Makaleler

- [Kancalar Nasıl Çalışır](https://dev.wisecp.com/tr/kancalar-nasil-calisir)
- [Kanca Alanları](https://dev.wisecp.com/tr/kanca-alanlari)
- [Kanca Dinleyicisi Yazma](https://dev.wisecp.com/tr/kanca-dinleyicisi-yazma)
