1. Admin panel — Varsayılan dil değişmiyordu

Dosya:App/Controllers/AdminLanguageController.php

Sorun:“Set as Default” (Varsayılan yap) butonuna basıldığında başarı bildirimi geliyordu ancak dil listesinde varsayılan dil rozeti ve buton durumu değişmiyordu.

Neden:

  • setDefault() yalnızca settings tablosundaki default_locale değerini güncelliyordu.

  • Admin dil listesi, veritabanındaki languages.is_default sütununu doğrudan okuyordu.

  • Bu iki kaynak senkronize değildi.

Çözüm:

  • Dil listesinde is_default, artık settings.default_locale değerine göre hesaplanıyor.

  • setDefault() çağrıldığında languages tablosundaki is_default bayrakları da güncelleniyor.

  • Varsayılan dil silme kontrolü, ayar tablosundaki default_locale değerine göre yapılıyor.

  • Çeviri düzenleme sayfasında varsayılan dil kaynağı Language::getDefault() yerine settings.default_locale olarak düzeltildi.


2. Admin panel — Cron sayfasındaki alakasız WoltLab metni

Dosyalar:

  • Inc/Template/admin/default/views/cronjobs/index.html.twig

  • Inc/Lang/tr.php

  • Inc/Lang/en.php

  • App/Controllers/AdminCronjobsController.php (yorum satırı)

Sorun:Cronjobs sayfasında “Zamanlanmış görevler (WoltLab karşılaştırması)” başlığı ve docs/CRON_JOBS_REPORT.md referansı vardı. Bu içerik MegaforBB projesiyle ilgili değildi.

Çözüm:

  • WoltLab karşılaştırma metni kaldırıldı.

  • Rapor dosyası referansı kaldırıldı (docs/CRON_JOBS_REPORT.md projede zaten yoktu).

  • Başlık için yeni dil anahtarı eklendi: admin.cronjobs.tasks_title

    • TR: Zamanlanmış görevler

    • EN: Scheduled tasks


3. Admin panel — Manuel cron çalıştırma hatası

Dosya:App/Controllers/AdminCronjobsController.php

Sorun:“Tüm cronu çalıştır” butonuna basıldığında şu hata görülüyordu:

Request failed (timeout or connection error). Run cron from command line: php public/cron.php

Hosting ortamında ise php-fpm8.4 kullanım yardım metni dönüyordu.

Neden:

  • Eski kod cron’u HTTP ile kendi kendine çağırıyordu (file_get_contents).

  • Yerel ortamda (Laragon) veya paylaşımlı hostingde bu yöntem sık sık başarısız oluyordu:

    • app.url yanlış domain’e işaret edebiliyordu

    • allow_url_fopen kapalı olabiliyordu

    • Sunucunun kendine HTTP isteği atması timeout’a yol açabiliyordu

  • Linux hostinglerde PHP_BINARY çoğu zaman php-fpm8.4 olur; bu binary cron script’ini çalıştırmaz, FPM yardım metnini basar.

Not: Bu sorun, hostingte cron job zamanlanmamış olmasından kaynaklanmaz. Panel butonu crontab’dan bağımsız çalışmalıdır.

Çözüm:

  • Cron önce CLI ile çalıştırılıyor: php public/cron.php token=...

  • CLI mümkün değilse HTTP fallback devreye giriyor.

  • HTTP fallback URL’si artık mevcut isteğin host’unu kullanıyor (app.url yerine).

  • php-fpm binary’si tespit edilip atlanıyor; yerine /usr/bin/php8.4, /usr/bin/php, cPanel yolları vb. aranıyor.

  • Yanlışlıkla FPM help çıktısı gelirse HTTP fallback’e geçiliyor.

Hosting cron önerisi (ayrı konu):Otomatik çalışması için hosting panelinden crontab eklenmelidir:

*/5 * * * * /usr/bin/php8.4 /path/to/public/cron.php token=CRON_TOKENINIZ

Değiştirilen dosyalar (özet)

Dosya

Değişiklik

App/Controllers/AdminLanguageController.php

Varsayılan dil senkronizasyonu

App/Controllers/AdminCronjobsController.php

CLI cron çalıştırma, php-fpm düzeltmesi

Inc/Template/admin/default/views/cronjobs/index.html.twig

WoltLab metni temizlendi

Inc/Lang/tr.php

admin.cronjobs.tasks_title eklendi

Inc/Lang/en.php

admin.cronjobs.tasks_title eklendi