# Hesap ve İletişim Kancaları

https://dev.wisecp.com/tr/hesap-ve-iletisim-kancalari

Profil görseli, adresler, bağlı sağlayıcılar ve tercihlerin sekiz kancası.

## Genel Bakış

Müşterinin kendisini tanımladığı her şey burada: profil görseli, fatura adresleri, bağlı sosyal hesaplar ve bildirim tercihleri.

Adres tarafında dört kanca vardır: kaydetmenin kapısı ve olayı, varsayılan değişimi ve silme. Varsayılan adres, faturaların üzerine yazılan adrestir.

## Referans

### Profil görselinin değişmesini izleme

actionuser.avatar_changed

`AccountUsers` iki dal

Müşteri profil görselini yüklediğinde ya da kaldırdığında çalışır.

Parametreler 3

$uidintHesabın sahibi.

$actionstringNe oldu: `set` yüklendi, `removed` kaldırıldı.

$picturestringYeni görselin yolu. Kaldırma dalında **her zaman boştur**: yolu kullanmadan önce eyleme bakın.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:user.avatar_changed', 10, function ($uid, $action, $picture) {
    // Kaldirma dalinda yol BOS gelir.
    if ($action === 'removed') { Acme::dropAvatar($uid); return; }

    Acme::mirrorAvatar($uid, $picture);
});
```

### Adres kaydını durdurma

gateuser.contact_save

`AccountUsers` sıfır = yeni

Müşteri bir adres kaydetmeden önce çalışır.

Parametreler 3

$uidintAdresin sahibi olacak hesap.

$dataarrayKaydedilecek adres verisi: adı, e-postası, telefonu, ülkesi ve vergi bilgileri.

$idintDüzenlenen adresin kimliği; **sıfır ise yeni** ekleniyordur.

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:user.contact_save', 10, function ($uid, $data, $id) {
    // Sifir kimlik yeni kayit demektir.
    if (!Acme::taxNumberValid($data)) return 'Vergi bilgisi dogrulanamadi.';

    return null;
});
```

### Adres kaydını izleme

actionuser.contact_saved

`AccountUsers` ekleme ve düzenleme

Bir adres kaydedildikten sonra çalışır.

Parametreler 4

$uidintAdresin sahibi.

$saved_idintKaydedilen adresin kimliği.

$dataarrayAdres verisi.

$is_newboolDoğruysa yeni eklendi.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:user.contact_saved', 10, function ($uid, $saved_id, $data, $is_new) {
    Acme::syncContact($uid, $saved_id, $data);
});
```

### Varsayılan adresin değişmesini izleme

actionuser.contact_default_changed

`AccountUsers` varsayılan değişimi

Bir adres varsayılan yapıldığında çalışır. Varsayılan adres, faturaların üzerine yazılan adrestir.

Parametreler 2

$uidintAdresin sahibi.

$idintYeni varsayılan yapılan adres.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:user.contact_default_changed', 10, function ($uid, $id) {
    // Varsayilan adres faturalara yazilan adrestir.
    Acme::syncBillingAddress($uid, $id);
});
```

### Adres silinmesini izleme

actionuser.contact_deleted

`AccountUsers` silme sonrası

Bir adres silindikten sonra çalışır.

Parametreler 3

$uidintAdresin sahibi.

$idintSilinen adresin kimliği; satır artık yoktur.

$existingarraySilinmeden hemen önce okunan tam adres.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:user.contact_deleted', 10, function ($uid, $id, $existing) {
    Acme::dropContact($uid, $id);
});
```

### Sosyal hesap bağlamayı izleme

actionuser.connected_provider

`SocialAuth` hesap bağlama

Bir hesap dış sağlayıcıya bağlandığında çalışır.

Parametreler 2

$userobjectEşleşen kullanıcı kaydı.

$mod_namestringBağlanılan sağlayıcının adı.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:user.connected_provider', 10, function ($user, $mod_name) {
    Acme::noteLink((int) ($user->id ?? 0), $mod_name);
});
```

### Bildirim tercihlerinin değişmesini izleme

actionuser.notification_preferences_changed

`AccountUsers` kanal bazlı

Müşteri hangi bildirimleri alacağını değiştirdiğinde çalışır.

Parametreler 2

$uidintTercihi değişen hesap.

$prefsarrayYazılan tercihler, **kanal bazında**. Anahtarlar bilerek veritabanı kolonlarının adıdır: hangi katmanın değiştiği tartışmaya yer bırakmasın diye.

Dönüş 1

voidDönüş yoksayılır. Tercihler çoktan yazılmıştır.

Dinleyici PHP

```php
Hook::add('action:user.notification_preferences_changed', 10, function ($uid, $prefs) {
    Acme::syncPreferences($uid, $prefs);
});
```

### Eylem kaydının metnini üretme

filteruser.action_text

`User::addAction` yalnız boşken

Bir hesap eyleminin görünen metni çözülürken çalışır. Kendi eylem anahtarlarınızın metnini burada üretirsiniz.

Parametreler 2

$textstringÇekirdeğin bulduğu metin. Kanca **yalnız metin bulunamadığında** çalışır, bu yüzden bu değer daima boştur. İmza tutarlılığı için geçer.

$ctxarrayBağlam: eylem anahtarı, istenen dil ve yer tutucu değerleri.

Dönüş 1

string|nullÜrettiğiniz metni döndürürsünüz. İlgilenmediğiniz anahtarda hiçbir şey döndürmeyin.

Dinleyici PHP

```php
Hook::add('filter:user.action_text', 10, function ($text, $ctx) {
    // Kanca yalniz metin bulunamadiginda calisir.
    if (!str_starts_with($ctx['key'] ?? '', 'acme.')) return null;

    return Acme::actionText($ctx['key'], $ctx['lang'] ?? '', $ctx['variables'] ?? []);
});
```

## Tuzaklar

> **Görsel yolu kaldırma dalında boştur**
> 
> Profil görseli kancası hem yükleme hem kaldırma için çalışır ve kaldırmada yol alanı **her zaman boş** gelir. Yolu doğrudan kullanan bir dinleyici o dalda boş bir değerle iş yapar.

> **Varsayılan adres faturaya yazılan adrestir**
> 
> Varsayılan değişimi yalnız bir tercih değildir: sonraki faturalar bu adresi taşır. Muhasebe tarafını eşitliyorsanız bu kancayı da dinleyin.

## İlgili Makaleler

- [Müşteri Hesabı Kancaları](https://dev.wisecp.com/tr/musteri-hesabi-kancalari)
- [Fatura Yaşam Döngüsü Kancaları](https://dev.wisecp.com/tr/fatura-yasam-dongusu-kancalari)
- [Kancalar Nasıl Çalışır](https://dev.wisecp.com/tr/kancalar-nasil-calisir)
