Gereksinimler ve doğrulanan ortam
| Asgari (modül denetler) | Bu pakette gerçekten sınanan | |
|---|---|---|
| WHMCS | 8.0 | 8.13.1 (netx.com.tr, CLI + Smarty entegrasyon testi) |
| PHP | 8.1, eklentiler pdo_mysql, mbstring, json (intl önerilir) |
8.2.34 |
| Veritabanı | MySQL 5.7+/MariaDB 10.3+, InnoDB | MariaDB 12.3.3 (yalıtılmış test örneği, canlıyla aynı sql_mode ve REPEATABLE-READ) |
| Smarty | WHMCS ile gelen | 3.1.48 + WHMCS güvenlik politikası |
| Illuminate Database | WHMCS ile gelen (vendor/illuminate) |
WHMCS 8.13.1'deki sürüm |
WHMCS 8.0–8.12 ve PHP 8.1 asgari koşul olarak kabul edilir ancak bu ortamlarda çalıştırılmadı. Desteklenmeyen ortamda etkinleştirme hata mesajıyla durur.
Modül WHMCS çekirdek dosyalarını, tema dosyalarını veya WHMCS çekirdek tablolarının yapısını değiştirmez. Çekirdek tablolara yapılan tek yazma, eksik e-posta şablonlarının tblemailtemplates'e eklenmesidir.
1. Yedek
mysqldump --single-transaction --routines <whmcs_veritabani> > whmcs-oncesi-$(date +%F).sql
tar czf modules-oncesi-$(date +%F).tgz -C <whmcs_kok> modules/addons
2. Dosyaları yükleme
ZIP içindeki modules/addons/musteriyorumlari/ klasörünü WHMCS kök dizinine aynı yolla kopyalayın. Plesk'te dosya sahibi web kullanıcısı olmalıdır:
unzip musteriyorumlari-1.0.0.zip -d /tmp/myr && \
install -d -o <web_kullanicisi> -g <grup> -m 755 <whmcs_kok>/modules/addons/musteriyorumlari && \
cp -r /tmp/myr/modules/addons/musteriyorumlari/. <whmcs_kok>/modules/addons/musteriyorumlari/ && \
chown -R <web_kullanicisi>:<grup> <whmcs_kok>/modules/addons/musteriyorumlari
Yalnızca dosyaları kopyalamak hiçbir şeyi çalıştırmaz: kancalar modül etkinleşene kadar yüklenmez; api.php modül etkin değilse 404 modul_kapali döner; lib/ altındaki dosyalar doğrudan çağrılınca çıktı vermez.
3. Etkinleştirme
WHMCS → Setup → Addon Modules → Müşteri Yorumları → Activate, ardından Configure → Access Control'de modülü kullanacak yönetici rollerini seçin.
Etkinleştirme:
- 19 mod_myr_* tablosunu Capsule şema oluşturucusuyla oluşturur (InnoDB, utf8mb4),
- eksik 10 e-posta şablonunu ekler (var olanlara dokunmaz),
- gizli anahtar üretir,
- etkinleştiren yöneticinin rolüne modülün bütün izinlerini verir (diğer rollere hiçbir izin verilmez; Yetkiler sekmesinden dağıtılır).
Etkinleştirme hiçbir e-posta göndermez, davetleri açmaz, tema dosyalarına dokunmaz.
4. İlk yapılandırma (modül sayfası: Addons → Müşteri Yorumları)
- Kategoriler → Yeni kategori: ad, (isteğe bağlı) entegrasyon anahtarı, hizmet sayfası adresi, WHMCS ürünleri. Anahtar sonradan değiştirilemez.
- Kanıtlar → Şimdi tara: WHMCS etkinlik günlüğü, sunucu kullanım verisi ve ödenmiş yenilemelerden kullanım kanıtları çıkarılır (yalnızca okuma; büyük günlükte birkaç tur sürebilir, cron da devam ettirir).
- Ayarlar: genel yorum sayfası adresi, görünüm, form sınırları, gizlilik, güvenlik (vekil/Cloudflare), SEO (canonical modu).
- Alan adları: JS widget'ın çalışacağı harici sitelerin kökenleri (
https://www.ornek.com). - Yetkiler: rollere işlem izinleri.
- Şablonlara entegrasyon kodlarını ekleyin (
ENTEGRASYON.md). Tema dosyaları otomatik düzenlenmez.
Cron: ayrı bir görev gerekmez. WHMCS cron'u her çalıştığında AfterCronJob kancası saatlik (kanıt taraması, davetler) ve günlük (saklama süreleri, yetim kayıt denetimi) işleri danışma kilidiyle çalıştırır.
5. Genel yorum sayfası adresi (/musteri-yorumlari)
Modül sayfası her zaman index.php?m=musteriyorumlari adresinde çalışır. Dostu adres için üç yol:
- SEO modülü varsa (ör. FullSeo): modülün sabit adres tablosuna
/index.php?m=musteriyorumlari→musteri-yorumlarieşlemesi ekleyin (aşağıda netx örneği). - Apache:
examples/routing/apache-musteri-yorumlari.conf— WHMCS'in### BEGIN - WHMCS managed rulesişaretçilerinin önüne eklenir. - nginx:
examples/routing/nginx-musteri-yorumlari.conf.
Sonra Ayarlar → Genel yorum sayfası adresi alanına tam https adresini yazın; "Daha Fazla Göster" bağlantıları ve canonical buraya göre üretilir.
6. Sürüm yükseltme
- Yedek alın (1. adım).
- Yeni dosyaları aynı klasöre kopyalayın (eski sürümün
lib/dosyaları üzerine yazılır). - WHMCS, modül sürümünün değiştiğini görünce
musteriyorumlari_upgrade()çağırır; ayrıca modül sayfası ilk açıldığında şema sürümü denetlenir. Geçişler sürümlü ve tekrar çalıştırılabilirdir; yarıda kalırsa yeniden çalıştırılabilir. - OPcache kullanan sunucularda PHP dosyaları
opcache.revalidate_freqsüresi kadar (netx'te 60 sn) eski sürümle çalışabilir; yükseltme sonrası bu süreyi bekleyip deneyin. - JS/CSS değiştiyse entegrasyon kodlarındaki
?v=değeri dosya özetinden kendiliğinden değişir; JS gömme kodunu sitelerinize yeniden kopyalayın (CDN, örn. Cloudflare,.js/.css'i uzun süre önbelleğe alabilir).
7. Devre dışı bırakma ve kalıcı silme
- Deactivate veri silmez; yeniden etkinleştirince kaldığı yerden devam eder. Devre dışıyken kancalar yüklenmez, API
404döner, Smarty değişkenleri atanmaz (şablonda{$musteri_yorumlari_…|default:''}kullanmanız önerilir). - Kalıcı silme: modül sayfası → Bakım → onay ifadesini (
BUTUN YORUM VERILERINI SIL) yazın; isteğe bağlı olarak modülün eklediği e-posta şablonlarını da siler. Yalnızcamaintenanceizni olan rol yapabilir, işlem WHMCS etkinlik günlüğüne yazılır. Ardından modülü devre dışı bırakıp klasörü silebilirsiniz.
8. Geri dönüş (rollback)
- Kod: önceki ZIP'in dosyalarını geri kopyalayın. Şema geçişleri yalnızca ekleme yaptığı için eski kod yeni şemayla çalışmaya devam eder (1.0.0 ilk sürümdür).
- Veri: 1. adımdaki SQL dökümünden yalnızca
mod_myr_*tablolarını geri yükleyin; WHMCS çekirdek tablolarını geri yüklemeyin (aradaki faturalar/siparişler kaybolur). - Tümden geri alma: Bakım → kalıcı silme → Deactivate → klasörü silin. Tema dosyalarına kendiniz eklediğiniz değişkenleri kaldırın.