# Upgrade & Migration (v11 → v13)

TYPO3 v11'den v13'e sürüm yükseltme rehberi ve göç adımlarını kapsar.

---

## Yükseltme Stratejisi

### Önerilen Yol

```
v11 LTS → v12 LTS → v13 LTS
```

> **Not:** Doğrudan v11'den v13'e geçiş mümkündür ancak önce v12 üzerinden geçiş yapılması deprecation'ları aşamalı olarak çözmenizi sağlar.

---

## Ön Hazırlık

### 1. Yedek Alma

```bash
# Veritabanı yedeği
ddev export-db --file=backup-v11-$(date +%Y%m%d).sql.gz

# Dosya yedeği
tar -czf files-backup-$(date +%Y%m%d).tar.gz public/fileadmin packages/

# DDEV snapshot
ddev snapshot --name=before-upgrade-v13
```

### 2. PHP Gereksinimlerini Kontrol Et

| TYPO3 | PHP Minimum | PHP Önerilen |
|-------|-----------|-------------|
| v11 | 7.4 | 8.1 |
| v12 | 8.1 | 8.2 |
| v13 | 8.2 | 8.3 |

```bash
# PHP sürümünü güncelle (.ddev/config.yaml)
php_version: "8.2"
```

### 3. Extension Uyumluluğunu Kontrol Et

```bash
# Güncel olmayan paketleri listele
ddev composer outdated

# Extension'ların v13 desteğini kontrol et
# https://extensions.typo3.org adresinden kontrol edin
```

---

## Adım 1: Deprecation'ları Çöz (v11'de)

### Deprecation Loglarını Aktif Et

```php
// config/system/additional.php
$GLOBALS['TYPO3_CONF_VARS']['LOG']['TYPO3']['CMS']['deprecations']['writerConfiguration'] = [
    \Psr\Log\LogLevel::NOTICE => [
        \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
            'logFileInfix' => 'deprecations',
        ],
    ],
];
```

### Logları İncele

```bash
ddev exec tail -f var/log/typo3_deprecations_*.log
```

---

## Adım 2: Composer Güncelleme

### v12'ye Yükseltme

```bash
# Core paketlerini güncelle
ddev composer require \
    "typo3/cms-core:^12.4" \
    "typo3/cms-backend:^12.4" \
    "typo3/cms-frontend:^12.4" \
    "typo3/cms-fluid-styled-content:^12.4" \
    --with-all-dependencies

# Veritabanı güncelle
ddev exec vendor/bin/typo3 extension:setup
ddev exec vendor/bin/typo3 cache:flush
```

### v13'e Yükseltme

```bash
# Core paketlerini güncelle
ddev composer require \
    "typo3/cms-core:^13.4" \
    "typo3/cms-backend:^13.4" \
    "typo3/cms-frontend:^13.4" \
    "typo3/cms-fluid-styled-content:^13.4" \
    --with-all-dependencies

# Veritabanı güncelle
ddev exec vendor/bin/typo3 extension:setup
ddev exec vendor/bin/typo3 cache:flush
```

---

## Adım 3: Upgrade Wizard

Backend'de **Admin Tools > Upgrade** modülü ile:

1. **Upgrade Wizard** çalıştırın
2. Tüm sihirbaz adımlarını tamamlayın
3. **Analyze Database Structure** ile veritabanını kontrol edin

```bash
# CLI ile upgrade wizard
ddev exec vendor/bin/typo3 upgrade:run

# Belirli bir wizard
ddev exec vendor/bin/typo3 upgrade:run <wizard-identifier>

# Tüm wizard'ları listele
ddev exec vendor/bin/typo3 upgrade:list
```

---

## Göç Edilmesi Gereken Alanlar

### 1. TypoScript → Site Sets

**Eski (v11/v12):**

```php
// Configuration/TCA/Overrides/sys_template.php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
    'my_site_package',
    'Configuration/TypoScript',
    'My Site Package'
);
```

**Yeni (v13):**

```yaml
# Configuration/Sets/MySitePackage/config.yaml
name: my-site/site-package
label: My Site Package
dependencies:
  - typo3/fluid-styled-content
```

### 2. Hooks → PSR-14 Events

**Eski:**

```php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['...']['...'][] = MyHook::class;
```

**Yeni:**

```php
#[AsEventListener]
final class MyListener {
    public function __invoke(SomeEvent $event): void { }
}
```

### 3. TCA Güncellemeleri

**Eski alan türleri:**

```php
// v11
'config' => [
    'type' => 'input',
    'renderType' => 'inputDateTime',
    'eval' => 'datetime',
]
```

**Yeni:**

```php
// v13
'config' => [
    'type' => 'datetime',
]
```

### 4. GeneralUtility → DI

**Eski:**

```php
$service = GeneralUtility::makeInstance(MyService::class);
```

**Yeni:**

```php
public function __construct(
    private readonly MyService $service,
) {}
```

### 5. $GLOBALS['TSFE'] → Request

**Eski:**

```php
$language = $GLOBALS['TSFE']->getLanguage();
```

**Yeni:**

```php
$language = $request->getAttribute('language');
```

---

## Kontrol Listesi

### Yükseltme Öncesi

- [ ] Tam yedek alındı (veritabanı + dosyalar)
- [ ] PHP sürümü uyumlu (8.2+)
- [ ] Extension'lar v13 uyumlu
- [ ] Deprecation logları incelendi
- [ ] Test ortamında yükseltme test edildi

### Yükseltme Sonrası

- [ ] Upgrade Wizard tamamlandı
- [ ] Veritabanı yapısı güncellendi
- [ ] Cache temizlendi
- [ ] Frontend doğru görüntüleniyor
- [ ] Backend çalışıyor
- [ ] Formlar çalışıyor
- [ ] E-posta gönderimi çalışıyor
- [ ] Tüm extension'lar çalışıyor
- [ ] Deprecation logları temiz

---

## Sorun Giderme

### "Class not found" Hataları

```bash
ddev composer dump-autoload -o
ddev exec vendor/bin/typo3 cache:flush
```

### Extension Uyumsuzluğu

```bash
# Sorunlu extension'ı geçici olarak kaldır
ddev composer remove vendor/problematic-extension

# Alternatif arayın veya uyumlu sürümü bekleyin
```

### Veritabanı Hataları

```bash
# Veritabanı şemasını güncelle
ddev exec vendor/bin/typo3 extension:setup

# Backend > Admin Tools > Maintenance > Analyze Database Structure
```

---

## Kaynaklar

- [TYPO3 Upgrade Guide](https://docs.typo3.org/m/typo3/guide-installation/main/en-us/Upgrade/)
- [TYPO3 v13 Changelog](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/13.0/)
- [Deprecation Notices](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/13.0/Deprecation/)
