Rentiva v4.33.0 — Pro Gate Birleştirme
v4.33.0, v4.31.0 RSA token migration'ından kalan üç boşluğu kapatıyor: token kontrolünü atlayan 22 callsite, yanıltıcı bir License Admin mesajı, ve lokalde lisans sunucusu çalıştırmadan Pro özelliklerini test edememe.
Bu sürüm neden var
v4.31.0, RSA-imzalı feature token'larını Mode::featureGranted() aracılığıyla tek Pro otorite olarak getirdi. Her Pro feature gate'inin bu metodu (veya delege eden canUse*() wrapper'larından birini) çağırması gerekiyordu. Ama codebase'de 22 yer hâlâ eski Mode::featureEnabled() API'sini çağırıyordu — bu yalnızca isPro() kontrol ediyordu, token doğrulaması yok. Cracked bir binary'nin LicenseManager::isActive() metodunu true döndürecek şekilde patch'lemesi, geçerli bir token olmadan o callsite'larda mesajları, gelişmiş raporları ve export'u açabiliyordu.
Bu sürüm her callsite'ı migrate ediyor, eski API'yi soft-deprecate ediyor, ve birikmiş iki UX düzeltmesi ekliyor.
Değişiklikler
🔒 Güvenlik: 22 callsite artık token doğruluyor
| Dosya | Callsite |
|---|---|
Frontend/Account/AccountRenderer.php | 1 |
Frontend/Account/WooCommerceIntegration.php | 2 |
Messages/Core/Messages.php | 1 |
Messages/Frontend/CustomerMessages.php | 1 |
Messages/REST/*.php (3 dosya) | 3 |
Reports/Reports.php | 2 |
Utilities/Export/Export.php | 3 |
Utilities/Export/ExportReports.php | 6 |
Utilities/Menu/Menu.php | 3 |
Tümü uygun Mode::canUse*() metoduna migrate edildi. Mode::featureEnabled() artık WP_DEBUG'da _deprecated_function() notice'ı yayan soft-deprecated bir wrapper. Body üçüncü taraf çağrıcılar için korundu; tam kaldırma v5.0 için planlandı.
🔧 License Admin: sabit metin yerine gerçek durum
Lisans sayfası bir lisans aktif olduğunda her seferinde "All Pro features active: Unlimited vehicles/bookings, export, advanced reports, Vendor & Payout." yazıyordu — sunucunun aslında hangi feature token'larını verdiğine bakmaksızın. Boş veya kısmi token'ı olan müşteriler bu satırı okuyup Vendor menüsünün neden eksik olduğunu merak ediyordu.
Yeni render gerçek gate kararlarından türeyen liste:
Aktif Pro özellikleri: Vendor & Payout, Gelişmiş Raporlar, Mesajlar, Genişletilmiş Export
Hiç gate aktif değilse (lisans aktif ama token boş — normal şartlarda olmaması gereken ama v4.30.x → v4.31.0 geçişinde olan durum), sayfa artık yanıltıcı metin yerine "Re-validate Now" CTA'lı bir uyarı bildirimi gösteriyor.
✨ Lokal Pro testi için Geliştirici Modu
v4.31.0'dan beri lokalde Pro feature eklemek zahmetliydi: RSA-imzalı feature token'ı lisans sunucusu tarafından veriliyor, geliştiriciler bunu makinelerinde çalıştırmıyor olabilir. Sonuç fail-closed gate'di — lokal Pro feature'lar production'dan token kopyalamadan test edilemezdi (kopyalanmamalı).
İki yeni constant bypass'ı etkinleştiriyor:
// wp-config.php (yalnızca geliştirme)
define( 'WP_DEBUG', true );
define( 'MHM_RENTIVA_DEV_PRO', true );
İkisi de true olduğunda Mode::featureGranted() token doğrulama adımını atlar ve true döner. isPro() kontrolü hâlâ önce çalışır, dolayısıyla bir Lite lisansı Pro'ya bypass edemez — yine aktif bir lisansa ihtiyacın var, sadece geçerli token'a değil.
Production güvenliği: Hostinger production ortamlarında WP_DEBUG=false default'tur, dolayısıyla MHM_RENTIVA_DEV_PRO bir production wp-config.php'sine sızmış olsa bile (sızmamalı), bypass devreye girmez.
Sarı "Geliştirici Modu" banner alt başlığı artık bypass'ın gerçekten aktif mi yoksa sadece pasif mi olduğunu yansıtıyor.
Yeni bir mhm_rentiva_dev_pro_bypass filter'ı bypass kararını test edilebilirlik için açığa çıkarıyor — PHPUnit tek bir process içinde PHP define'larını toggle edemez.
⚠️ KIRICI: Lite kullanıcılar xlsx/pdf export erişimini kaybediyor
Eski featureEnabled(FEATURE_EXPORT) Lite kullanıcılar için koşulsuz true dönüyordu. Bu bir bug'dı — çağıranlardaki format kontrolü (! in_array($format, ['csv', 'json'])) ikinci gate olması gerekiyordu, ama featureEnabled kısa devre yapıyordu. Yani Lite kullanıcılar xlsx ve pdf export isteyebiliyordu.
canUseExport() Lite için doğru şekilde false dönüyor. CSV ve JSON hâlâ ücretsiz; xlsx ve pdf artık niyetlendiği gibi yalnızca Pro.
Etkilenen Lite kullanıcılar için göç yolu: tam format erişimi için Pro'ya yükselt, ya da CSV/JSON ile devam et.
🌐 Çeviri kalitesi (collateral)
v4.33.0 i18n turu, tüm TR kataloğu üzerinde bir msgmerge tetikledi. Daha önceki sürümlerde otomatik fuzzy olarak işaretlenen ve hiç gözden geçirilmeyen mevcut çeviriler vardı. Bu turda 22 tanesini düzelttik:
- "Airport Transfer" yanlışlıkla "Aktarımı İzin Ver" (kelimesi kelimesine "Allow Transfer") olarak çevrilmişti. Şimdi doğru şekilde "Havalimanı Transferi".
- "Report Issue" "Raporlar" (Reports) idi. Şimdi "Sorun Bildir".
- Birden çok plural form
%d/%d'den positional%1$d/%2$d'ye geçti (kaynak argüman sırası ile eşleşir). - Daha önceki turlarda düşürülen birkaç email etiketi iki noktası restore edildi.
msgmerge fuzzy sayısı post-merge: 0 — otomasyon tarafından doğrulandı.
Uyumluluk
| Bileşen | Gerekli sürüm |
|---|---|
mhm-license-server | v1.11.2 (verilen feature-token allowlist'ine 'export' ekler) |
mhm-polar-bridge | v1.9.0+ |
| WordPress | 6.7+ |
| PHP | 8.1+ |
Eğer v4.33.0 mhm-license-server v1.11.2'den önce yayınlanırsa, Pro kullanıcılar 24 saate kadar xlsx/pdf export erişimini kaybeder — yeni canUseExport() gate'i sunucunun henüz vermediği bir 'export' token claim'i arıyor. Sunucunun günlük cron'u token'ları yeniden veriyor; License sayfasında "Re-validate Now"a manuel tıklamak hemen yeniliyor.
İşte bu yüzden release zinciri sırası önce server v1.11.2, sonra plugin v4.33.0.
Testler
- 807 → 822 PHPUnit (+15)
- 5
ModeDevBypassTest'te - 4
LicenseAdminActiveFeaturesTest'te - 6
ModeGateMigrationTest'te
- 5
- PHPCS: 0 hata, 0 uyarı (release scope)
- Plugin Check (WordPress.org uyumluluğu): 0 HATA, 27 UYARI (hepsi önceden var olan, hepsi Plugin Check'in
phpcs.xmlprefix konfigürasyonunu okumamasından gelen bilinen yanlış-pozitifler)
Yükseltme notları
- mhm-license-server v1.11.2'nin canlıya çıkmasını bekle (yoksa Pro export ~24h kırılır).
- Plugin'i WP Admin → Eklentiler → Yükle ile veya FTP üzerinden ZIP'i değiştirerek güncelle.
- Güncelleme sonrası License sayfasında bir kez "Re-validate Now"a tıkla. Bu, istemcinin sunucudan taze token almasını zorlar — onsuz bir sonraki yenileme penceresi günlük cron.
- (Bug-enabled) xlsx export'larına güvenen Lite kullanıcılar: Pro'ya yükselt ya da CSV/JSON'a geç.
Lokal geliştirme
Eğer bir fork sürdürüyor ya da plugin'i genişletiyorsan:
// wp-config.php
define( 'WP_DEBUG', true );
define( 'MHM_RENTIVA_DEV_PRO', true ); // token kontrolünü atla, Pro gate'leri çalıştır
Bu, gerçek bir RSA-imzalı token olmadan aktif lisansa karşı Vendor Marketplace, Gelişmiş Raporlar, Mesajlar ve Genişletilmiş Export'u açar. Production'a gönderme.
