MegaforBB v1.1.3 — Rebuild & Migrasyon Sistemi
Yayın Tarihi: 21 Nisan 2026Modül: Admin Panel → Araçlar → Yeniden Oluşturma (Rebuild)Konum:
Admin Panel → Rebuild
Genel Bakış
MegaforBB'nin Rebuild (Yeniden Oluşturma) sistemi, forum yazılımının tüm içsel sayaçlarını, önbelleklerini, arama indekslerini ve yapısal bütünlüğünü tek bir merkezi panel üzerinden yönetmenizi sağlar. XenForo ve WoltLab Suite'ten ilham alınarak tasarlanmıştır.
Bu sürümle birlikte sisteme Web Tabanlı Veritabanı Migrasyonu ve Composer Paket Yönetimi özellikleri eklenmiştir. Artık güncelleme sonrası SSH erişimine ihtiyaç duymadan, doğrudan admin panelden veritabanı yapı değişikliklerini uygulayabilir ve PHP bağımlılıklarını yönetebilirsiniz.
Rebuild Sistemi — 17 Adım
Rebuild sistemi, forumun tüm veri bütünlüğünü tek tıkla yeniden hesaplayabilen 17 aşamalı bir onarım motorudur. Her adım bağımsız çalışır ve AJAX ile sıralı olarak tetiklenir.
Adım Listesi
# | Adım | Açıklama |
|---|---|---|
1 | Sürüm & Dosya Doğrulama | GitHub üzerindeki |
2 | Forum Sayaçları | Her forumun |
3 | Konu Verileri | Konuların |
4 | Beğeni Sayıları |
|
5 | Oy Puanları |
|
6 | İtibar Puanları | Kullanıcıların |
7 | Anket Verileri |
|
8 | Sayfalar Önbelleği | Statik sayfaların ( |
9 | Gravatar Getirme | Avatarı olmayan tüm kullanıcılar için e-posta adreslerinden Gravatar URL'si oluşturur ve kaydeder. |
10 | İzin Temizliği | Silinen rol veya kullanıcılara ait artık (orphan) |
11 | İstatistikler |
|
12 | Kullanıcı İstatistikleri | Tüm kullanıcı istatistik önbelleklerini temizler, bir sonraki yüklemede taze veri gösterilir. |
13 | Arama İndeksi | Meilisearch motoru aktifse tüm konuları 100'lü batch'ler halinde yeniden indeksler. Meilisearch yoksa adım atlanır (hata vermez). |
14 | Site Haritası |
|
15 | Rota Önbelleği | Derlenmiş rota dosyalarını ( |
16 | Frontend Build | Tailwind CSS'i yeniden derler ( |
17 | Önbellek Temizleme | Uygulama önbelleği, dosya önbelleği, Twig view cache ve OPcache'i komple temizler. |
Çalışma Mekanizması
[Tümünü Çalıştır] → AJAX POST /rebuild/run (step=version_integrity)
→ AJAX POST /rebuild/run (step=forums)
→ AJAX POST /rebuild/run (step=topics)
→ ... (sıralı, bir önceki bitince sonraki başlar)
→ AJAX POST /rebuild/run (step=cache)
→ TamamlandıHer adım bağımsız bir
POSTisteğidirCSRF token koruması (
admin_rebuild) ile güvence altındadırSonuçlar JSON formatında döner:
{ success, step, message, count, level }Her adımın yanında ikon durumu güncellenir (⏳ → ✅ / ❌)
İşlem etkilenen kayıt sayısını (count) gösterir
Composer Paket Yönetimi
SSH erişimi olmadan doğrudan panel üzerinden PHP bağımlılıklarını yönetmenizi sağlar.
Özellikler
Özellik | Detay |
|---|---|
Desteklenen İşlemler |
|
Güvenlik | Kullanıcı girdisi shell'e asla aktarılmaz. Sadece sabit komut parametreleri ( |
Composer Keşfi | Sırasıyla kontrol eder: proje kökü |
PHP Binary |
|
Çalıştırma |
|
Zaman Aşımı | PHP: |
Çıktı | Terminal benzeri siyah ekranda gerçek zamanlı stdout+stderr gösterimi |
Güvenlik Kontrolleri
CSRF Token — Her istek
admin_rebuildtoken ile doğrulanırproc_openKontrolü —disable_functionslistesindeproc_openveyaexecvarsa işlem reddedilirSabit Komut — Shell injection riski sıfır (kullanıcı girdisi parametre olarak aktarılmaz)
Ortam İzolasyonu —
COMPOSER_HOMEproje içindekiContent/storage/cacheolarak ayarlanır
Veritabanı Migrasyonu (YENİ ✨)
Bu sürümle eklenen en önemli özellik: SSH erişimi olmadan admin panelden veritabanı migrasyonlarını çalıştırma.
Ne İşe Yarar?
Forum güncellemelerinde yeni tablolar, sütunlar veya yapısal değişiklikler geldiğinde, bunların veritabanına uygulanması gerekir. Daha önce bu işlem sadece CLI (php Forecor/bin/migrate.php) ile yapılabiliyordu. Artık:
✅ SSH erişimi gerekmez
✅ Paylaşımlı hosting kullanıcıları doğrudan panelden çalıştırabilir
✅ Hangi migrasyonların çalıştığını ve hangilerinin beklediğini görebilirsiniz
✅ İşlem sonucu terminal benzeri çıktıda detaylı gösterilir
Butonlar
Buton | Açıklama |
|---|---|
Durumu Kontrol Et |
|
Migrasyonları Çalıştır | Bekleyen tüm migrasyonları sırasıyla uygular. Onay dialogu gösterir |
Teknik Mimari
Admin Panel → [Migrasyonları Çalıştır]
↓
POST /admin/rebuild/run-migrations
↓
AdminRebuildController::runMigrations()
↓
1. CSRF token kontrolü
2. migrations tablosu yoksa oluştur (CREATE TABLE IF NOT EXISTS)
3. App/Database/migrations/ dizinini tara
4. migrations tablosundaki kayıtlarla karşılaştır
5. Bekleyen dosyaları sırayla çalıştır
6. Her başarılı migrasyon → migrations tablosuna kaydet (batch tracking)
7. JSON sonuç dön → UI'de gösterDesteklenen Migration Formatları
Sistem iki farklı migration formatını otomatik tanır:
Format 1 — Array Closure (PDO parametreli):
return [
'up' => function (\PDO $pdo) {
$pdo->exec("CREATE TABLE ...");
},
'down' => function (\PDO $pdo) {
$pdo->exec("DROP TABLE ...");
},
];Format 2 — Anonim Sınıf (Eloquent Schema Builder):
return new class () {
public function up(): void
{
Capsule:😖chema()->create('tablename', function (Blueprint $table) {
$table->increments('id');
// ...
});
}
public function down(): void
{
Capsule:😖chema()->dropIfExists('tablename');
}
};Runner her iki formatı ReflectionMethod / ReflectionFunction ile otomatik algılar ve uygun şekilde çalıştırır.
Migrations Tablosu Yapısı
CREATE TABLE migrations (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
migration VARCHAR(255) NOT NULL, -- Dosya adı (uzantısız)
batch INT UNSIGNED NOT NULL DEFAULT 1, -- Grup numarası
ran_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uq_migration (migration)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;batch: Her çalıştırma oturumu ayrı bir batch numarası alır (rollback için)
migration: Dosya adı ile eşleşme (duplicate kontrolü)
Tablo yoksa ilk çalıştırmada otomatik oluşturulur
Güvenlik
Katman | Detay |
|---|---|
CSRF |
|
SQL Injection | Kullanıcı girdisi SQL'e dahil edilmez. Sadece |
Hata İzolasyonu | Her migrasyon bağımsız try-catch içinde çalışır. Biri başarısız olursa diğerleri etkilenmez |
Zaman Aşımı | PHP: |
Yetki | Admin panele erişim gerektiren rota. Sadece admin kullanıcılar erişebilir |
Mevcut Migration Dosyaları (43 adet)
Sistem şu anda App/Database/migrations/ dizininde 43 migration dosyası barındırmaktadır:
Dönem | Örnek Migrasyonlar | Adet |
|---|---|---|
2025-01 | Arama tabloları, soft delete, etiketler, veri aktarım tabloları, duyurular | 8 |
2026-02 | Kullanıcı aktiviteleri, iletişim, soru-cevap, S3 depolama, dil sistemi, 2FA, davetiyeler, spam koruması, sansür, emojiler, özel mesajlar, SEF URL | 17 |
2026-03 | Profil yorumları, tercihleri, zamanlanmış yayın, makale kategorileri, dokümantasyon, PM iyileştirmeleri, bildirim şablonları, prefix sistemi, yanıt zinciri | 14 |
2026-04 | Son IP kaydı, RSS içe aktarım, bildirimler, Idelist sistemi | 4 |
Kullanıcı Arayüzü
Migrasyon kartı, Rebuild sayfasında Composer kartının hemen altında yer alır:
"Durumu Kontrol Et" — Mavi outline buton, sol tarafta
"Migrasyonları Çalıştır" — Primary outline buton, sağ tarafta
Terminal Çıktısı — Siyah arka planlı, monospace font, scrollable alan
Sonuç Mesajı — Başarı (yeşil) veya hata (kırmızı) alert kutusu
Loading Modal — İşlem sırasında tam ekran spinner (kapatılamaz)
Değişen Dosyalar
Dosya | Değişiklik |
|---|---|
|
|
| Migration HTML kartı, loading modal ve JavaScript handler eklendi |
|
|
|
|
| 13 yeni Türkçe dil anahtarı eklendi |
| 13 yeni İngilizce dil anahtarı eklendi |
Çoklu Dil Desteği
Tüm arayüz metinleri Türkçe ve İngilizce olarak mevcuttur:
Anahtar | Türkçe | English |
|---|---|---|
| Veritabanı Migrasyonu | Database Migration |
| Durumu kontrol et | Check status |
| Migrasyonları çalıştır | Run migrations |
| Bekleyen migrasyon yok. Veritabanı güncel. | No pending migrations. Database is up to date. |
| :count migrasyon başarıyla uygulandı. | :count migration(s) applied successfully. |
| Bekleyen veritabanı migrasyonları çalıştırılacak. Devam edilsin mi? | Pending database migrations will be executed. Continue? |
Genel Güvenlik Özeti
Rebuild sisteminin tüm bileşenleri aşağıdaki güvenlik katmanlarıyla korunmaktadır:
Kimlik Doğrulama — Tüm rotalar admin middleware arkasında
CSRF Koruması — Her AJAX isteğinde
admin_rebuildtoken doğrulanırShell Injection Koruması — Kullanıcı girdisi hiçbir zaman shell komutlarına aktarılmaz
SQL Injection Koruması — Migration dosyaları güvenilir kaynak olarak değerlendirilir; harici girdi SQL'e dahil edilmez
Hata İzolasyonu — Her adım ve her migrasyon bağımsız try-catch bloklarında çalışır
Zaman Aşımı — Hem sunucu (PHP) hem istemci (JS AbortController) tarafında 5 dakika limit
Exec Kontrolü —
disable_functionslistesi kontrol edilir, kapalıysa bilgilendirici hata mesajı döner
Notlar
Güncelleme sonrası ilk iş olarak Admin → Rebuild → Migrasyonları Çalıştır butonuna tıklamanız önerilir
"Bekleyen migrasyon yok" mesajı aldıysanız veritabanınız zaten günceldir
Hata durumunda terminal çıktısında hangi migration dosyasının sorun yaşadığını görebilirsiniz
Migration işlemi idempotent'tir: aynı migrasyon birden fazla kez çalışmaz
migrationstablosu ilk kullanımda otomatik oluşturulur, manuel tablo oluşturmanız gerekmez
