# Alan Adı Profil Kancaları

https://dev.wisecp.com/tr/alan-adi-profil-kancalari

Kayıtlı kişi profilleri, varsayılan ad sunucuları ve yenileme faturası — alan adı alanının son dokuz kancası.

## Genel Bakış

Buradaki kancaların çoğu **hesaba** aittir, tek bir alan adına değil. Kişi profilleri ve varsayılan ad sunucuları müşterinin bir kez girip her adda kullandığı şablonlardır.

Son iki kanca ise para tarafındadır: müşteri alan adını elle yenilediğinde kesilen faturanın önünde bir kapı, ardında bir olay durur.

## Referans

### Profil silmeyi izleme

actiondomain.whois_profile_deleted

`ClientDomains` son anlık görüntü

Kayıtlı kişi profili silindikten sonra çalışır.

Parametreler 3

$uidintHesap kimliği. Alt kullanıcı işlemi de **sahibin** kimliğine yazılır.

$profileIdintSilinen profilin kimliği.

$profilearrayProfilin **silinmeden önceki** hâli: `id`, `name`, `information`, `detouse`. Veriye ihtiyacınız varsa buradan alın; kayıt artık yok.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:domain.whois_profile_deleted', 10,
    function ($uid, $profileId, $profile) {
        // Kayit artik yok: gereken her sey ucuncu parametrede.
        Acme::dropProfileIndex($uid, $profileId);
    });
```

### Varsayılan profili izleme

actiondomain.whois_profile_default_set

`ClientDomains` kayıt ESKİ değeri taşır

Bir profil varsayılan yapıldıktan sonra çalışır.

Parametreler 3

$uidintHesap kimliği. Alt kullanıcı işlemi de **sahibin** kimliğine yazılır.

$profileIdintVarsayılan yapılan profilin kimliği.

$profilearrayProfilin **değişiklikten önceki** kaydı. Varsayılan alanı hâlâ **eski** değerdedir; yeni durumu buradan okumaya çalışmayın.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:domain.whois_profile_default_set', 10,
    function ($uid, $profileId, $profile) {
        // Yeni varsayilan IKINCI parametredir; ucuncudeki kayit eski halidir.
        Acme::defaultProfile($uid, $profileId);
    });
```

### Profil formunu değiştirme

filterdomain.whois_profile_data

`Hook::runRefs` anahtar adları sabit

Kayıtlı profil forma yüklenmeden önce çalışır.

Parametreler 3

$dataarrayrefForma dönen alanlar: `id`, `name`, `first`, `last`, `org`, `email`, `phone`, `address`, `postal`, `city`, `country`. Anahtar adlarını koruyun; form alanları bu adlarla dolar.

$profilearrayHam veritabanı kaydı. Forma taşınmayan alanlar (eyalet, ikinci adres satırı) **burada** bulunur.

$uidintHesap kimliği. Alt kullanıcı işlemi de **sahibin** kimliğine yazılır.

Dönüş 1

voidDeğer **referansla** değişir; dönüş kullanılmaz.

Dinleyici PHP

```php
Hook::add('filter:domain.whois_profile_data', 10,
    function (&$data, $profile, $uid) {
        // Forma tasinmayan alan ham kayitta: ikinci parametreden alin.
        $data['state'] = $profile['information']['State'] ?? '';
    });
```

### Varsayılan ad sunucularını izleme

actiondomain.default_ns_saved

`ClientDomains` hesap geneli

Müşterinin varsayılan ad sunucusu seti kaydedildikten sonra çalışır. Bu set **tek bir ada değil**, hesabın tamamına aittir.

Parametreler 2

$uidintHesap kimliği. Alt kullanıcı işlemi de **sahibin** kimliğine yazılır.

$nsarrayKaydedilen set: `ns1` … `ns4` anahtarları, yalnız dolu olanlar. En az iki ad sunucusu bulunur.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:domain.default_ns_saved', 10, function ($uid, $ns) {
    // Bu set hesabin TUM yeni alan adlarina uygulanir; tek ada degil.
    Acme::rememberDefaults($uid, $ns);
});
```

### Sağlayıcı ayarlarını izleme

actiondomain.registrar_settings_saved

`AdminProducts` operatör ayarı

Alan adı sağlayıcısının ayarları kaydedildikten sonra çalışır.

Parametreler 2

$modulestringAyarları kaydedilen sağlayıcı modülü.

$settingsarrayKaydedilen ayarlar. Kimlik bilgisi içerebilir; loglamayın.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:domain.registrar_settings_saved', 10, function ($module, $settings) {
    // Ayarlarin ICINI degil, degistigi bilgisini kaydedin.
    Audit::note('registrar-settings', $module, 'guncellendi');
});
```

### Yenileme faturasını durdurma

gatedomain.renewal_invoice_create

`ClientDomains` fatura kesilmeden

Müşteri elle yenileme başlattığında, fatura kesilmeden önce çalışır. Durdurursanız **ne fatura ne kalem** oluşur.

Parametreler 5

$servicearrayYenilenen alan adı hizmeti.

$yearsintSeçilen yıl sayısı.

$subtotalfloatVergi hariç ara toplam. Hizmetin kendi para biriminde.

$tldstringUzantı, **noktasız ve küçük harf**.

$uidintHesap kimliği.

Dönüş 1

stringBoş olmayan bir string fatura kesimini **durdurur**; metin müşteriye hata olarak döner.

Dinleyici PHP

```php
Hook::add('gate:domain.renewal_invoice_create', 10,
    function ($service, $years, $subtotal, $tld, $uid) {
        // Bazi uzantilar 10 yildan uzun yenilemeyi kabul etmez.
        if ($years > 10) return 'En fazla 10 yil yenileme yapilir.';

        return null;
    });
```

### Yenileme faturasını izleme

actiondomain.renewal_invoice_created

`ClientDomains` fatura ödenmemiş

Yenileme faturası kesildikten sonra çalışır. Fatura bu noktada **ödenmemiştir** ve alan adı henüz yenilenmemiştir.

Parametreler 5

$servicearrayYenilenen alan adı hizmeti.

$yearsintSeçilen yıl sayısı.

$invoiceIdintKesilen **ödenmemiş** faturanın kimliği.

$subtotalfloatVergi hariç ara toplam.

$duedateFullstringAlan adının **mevcut** vade tarihi. Yeni vade değildir: yenileme ödeme sonrası işlenir.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:domain.renewal_invoice_created', 10,
    function ($service, $years, $invoiceId, $subtotal, $duedateFull) {
        // Alan adi HENUZ yenilenmedi; fatura odenince yenilenir.
        Crm::pendingRenewal($invoiceId, $service['name'] ?? '', $years);
    });
```

### Okunan DNS kayıtlarını izleme

actiondomain.dns_records_fetched

`AdminServices` sağlayıcıdan geldi

DNS kayıtları sağlayıcıdan okunduktan sonra çalışır.

Parametreler 2

$servicearrayAlan adı hizmet kaydı.

$recordsarrayOkunan kayıtlar, normalleştirilmiş.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:domain.dns_records_fetched', 10, function ($service, $records) {
    Acme::snapshotZone((int) ($service['id'] ?? 0), $records);
});
```

### Detay sayfasının açılışını izleme

actiondomain.detail.viewed

`website/domains` her açılışta

Müşteri kendi alan adının yönetim sayfasını açtığında çalışır. Erişim denetimleri çoktan geçilmiştir: sayfayı açanın o alan adının sahibi olduğu doğrulanmıştır.

Parametreler 2

$servicearrayAlan adı kaydı: `id`, `name`, `owner_id`, `status`, `duedate` ve diğerleri.

$serviceIdintAlan adının kimliği.

Dönüş 1

voidDönüş yoksayılır. Sayfa açılışında çalışır: burada yaptığınız iş müşterinin bekleme süresine eklenir. Yavaş bir çağrı yapacaksanız kuyruğa bırakın.

Dinleyici PHP

```php
Hook::add('action:domain.detail.viewed', 10, function ($service, $serviceId) {
    // Hafif tutun: musteri sayfanin acilmasini bekliyor.
    Acme::touchLastSeen($serviceId);
});
```

## Tuzaklar

> **Varsayılan profil kaydı ESKİ durumu taşır**
> 
> Varsayılan yapma kancasında üçüncü parametre, profilin **değişiklikten önceki** kaydıdır: varsayılan alanı hâlâ eski değerdedir. Yeni varsayılanın hangisi olduğu **ikinci parametrededir**. Kaydı okuyup "bu profil varsayılan değil" sonucuna varmak buradan çıkar.

> **Bu kancalar hesaba aittir, alan adına değil**
> 
> Profiller ve varsayılan ad sunucuları **hesap geneli** şablonlardır. Kancalar hizmet kaydı değil hesap kimliği verir; alan adı bilgisi arayan bir dinleyici boş bulur. Alt kullanıcının yaptığı işlem de **sahibin** kimliğine yazılır.

> **Faturadaki tarih eski vadedir**
> 
> Yenileme faturası kancasındaki tarih alanı, alan adının **mevcut** vade tarihidir; yenilemeden sonraki değil. Yeni vade ancak **ödeme** işlendikten sonra oluşur. Buradaki tarihi "yeni bitiş" diye kullanmak müşteriye yanlış gün gösterir.

> **Sağlayıcı ayarları kimlik bilgisi taşır**
> 
> Ayar kaydı kancası size sağlayıcıya bağlanmak için kullanılan **anahtarları ve parolaları** verebilir. Değişikliği kaydetmek meşrudur, **içeriği** kaydetmek değil. Loglara yalnız hangi modülün güncellendiğini yazın.

## İlgili Makaleler

- [Alan Adı Kişi Kancaları](https://dev.wisecp.com/tr/alan-adi-kisi-kancalari)
- Fatura ve Ödeme Kancaları
- Alan Adı Kancaları
