236 lines
11 KiB
PHP
236 lines
11 KiB
PHP
<?php
|
||
|
||
namespace App\Services;
|
||
|
||
class PremiumFeatures
|
||
{
|
||
// Tüm mevcut premium özellikler — key → metadata
|
||
public const ALL = [
|
||
// ── İzleme ────────────────────────────────────────────────────────────
|
||
'watchlist_export' => [
|
||
'name' => 'İzleme Listesi Dışa Aktarımı',
|
||
'description' => 'Tüm izleme listeni CSV veya JSON olarak indir',
|
||
'category' => 'İzleme',
|
||
'icon' => 'bi-download',
|
||
],
|
||
'anime_notes' => [
|
||
'name' => 'Kişisel Anime Notları',
|
||
'description' => 'Her bölüm için sadece sana görünen gizli notlar bırak',
|
||
'category' => 'İzleme',
|
||
'icon' => 'bi-journal-text',
|
||
],
|
||
'stream_history' => [
|
||
'name' => 'Sınırsız İzleme Geçmişi',
|
||
'description' => 'Tüm geçmiş saklanır; standart üyede 30 kayıt limiti',
|
||
'category' => 'İzleme',
|
||
'icon' => 'bi-clock-history',
|
||
],
|
||
|
||
// ── Sosyal / Yorum ────────────────────────────────────────────────────
|
||
'comment_bg' => [
|
||
'name' => 'Yorum Arkaplanı Efekti',
|
||
'description' => 'Yorumlarına özel animasyonlu arkaplan ekle',
|
||
'category' => 'Sosyal',
|
||
'icon' => 'bi-fire',
|
||
],
|
||
'extended_comments' => [
|
||
'name' => 'Uzun Yorum (1000 karakter)',
|
||
'description' => 'Ücretsiz kullanıcıların 2 katı yorum uzunluğu',
|
||
'category' => 'Sosyal',
|
||
'icon' => 'bi-chat-text-fill',
|
||
],
|
||
'comment_gif' => [
|
||
'name' => 'Yoruma GIF Ekle',
|
||
'description' => 'Yorumlarına Tenor/GIPHY GIFleri ekleyebilirsin',
|
||
'category' => 'Sosyal',
|
||
'icon' => 'bi-filetype-gif',
|
||
],
|
||
'comment_glow' => [
|
||
'name' => 'Yorum Aura / Parıltı',
|
||
'description' => 'Yorumlarının çevresinde renkli parlayan enerji halkası',
|
||
'category' => 'Sosyal',
|
||
'icon' => 'bi-brightness-high-fill',
|
||
],
|
||
'comment_signature' => [
|
||
'name' => 'Yorum İmzası',
|
||
'description' => 'Her yorumun altında görünen kişisel imza satırı',
|
||
'category' => 'Sosyal',
|
||
'icon' => 'bi-pen-fill',
|
||
],
|
||
|
||
// ── Profil / Kozmetik ─────────────────────────────────────────────────
|
||
'gif_avatar' => [
|
||
'name' => 'GIF Profil Fotoğrafı',
|
||
'description' => 'Hareketli GIF\'i profil resmi olarak ayarla',
|
||
'category' => 'Profil',
|
||
'icon' => 'bi-image-fill',
|
||
],
|
||
'username_color' => [
|
||
'name' => 'Renkli Kullanıcı Adı',
|
||
'description' => 'Yorumlarda kullanıcı adın özel renkte görünsün',
|
||
'category' => 'Profil',
|
||
'icon' => 'bi-palette-fill',
|
||
],
|
||
'username_effect' => [
|
||
'name' => 'Kullanıcı Adı Animasyonu',
|
||
'description' => 'Shimmer, dalga, glitch gibi özel animasyon efektleri',
|
||
'category' => 'Profil',
|
||
'icon' => 'bi-lightning-charge-fill',
|
||
],
|
||
'profile_frame' => [
|
||
'name' => 'Profil Çerçevesi',
|
||
'description' => 'Avatarının çevresinde animasyonlu çerçeve',
|
||
'category' => 'Profil',
|
||
'icon' => 'bi-circle-fill',
|
||
],
|
||
'profile_badge' => [
|
||
'name' => 'Özel Rozet/Unvan',
|
||
'description' => 'Kullanıcı adının yanında özel rozet veya unvan',
|
||
'category' => 'Profil',
|
||
'icon' => 'bi-award-fill',
|
||
],
|
||
'profile_bg' => [
|
||
'name' => 'Animasyonlu Profil Arka Planı',
|
||
'description' => 'Profil sayfanda canlı animasyonlu arka plan',
|
||
'category' => 'Profil',
|
||
'icon' => 'bi-stars',
|
||
],
|
||
'animated_banner' => [
|
||
'name' => 'Animasyonlu Profil Bannerı',
|
||
'description' => 'Profil bannerın parçacık ve dalga efektiyle canlanır',
|
||
'category' => 'Profil',
|
||
'icon' => 'bi-image-alt',
|
||
],
|
||
'entry_effect' => [
|
||
'name' => 'Sayfa Giriş Efekti',
|
||
'description' => 'Sayfalara girerken özel giriş animasyonu',
|
||
'category' => 'Profil',
|
||
'icon' => 'bi-play-circle-fill',
|
||
],
|
||
'watch_rank' => [
|
||
'name' => 'İzleme Rank Rozeti',
|
||
'description' => 'İzleme saatine göre Acemi→Efsane arası özel rank',
|
||
'category' => 'Profil',
|
||
'icon' => 'bi-trophy-fill',
|
||
],
|
||
|
||
// ── Hesap ─────────────────────────────────────────────────────────────
|
||
'custom_profile_url' => [
|
||
'name' => 'Özel Profil URL\'i',
|
||
'description' => 'animexe.com/u/senin-adin gibi kişisel URL',
|
||
'category' => 'Hesap',
|
||
'icon' => 'bi-link-45deg',
|
||
],
|
||
'profile_music' => [
|
||
'name' => 'Profil Müziği',
|
||
'description' => 'Profil sayfanda bir anime OST çal',
|
||
'category' => 'Hesap',
|
||
'icon' => 'bi-music-note-beamed',
|
||
],
|
||
];
|
||
|
||
// Kategori sıralaması
|
||
public const CATEGORIES = ['İzleme', 'Sosyal', 'Profil', 'Hesap'];
|
||
|
||
// Yorum aura/parıltı efektleri
|
||
public const COMMENT_GLOWS = [
|
||
'cyan' => ['label' => 'Siyan', 'color' => '#00f5ff'],
|
||
'pink' => ['label' => 'Pembe', 'color' => '#ff2d7d'],
|
||
'gold' => ['label' => 'Altın', 'color' => '#ffd700'],
|
||
'green' => ['label' => 'Yeşil', 'color' => '#00f564'],
|
||
'purple' => ['label' => 'Mor', 'color' => '#b84dff'],
|
||
'fire' => ['label' => 'Alev', 'color' => '#ff6b35'],
|
||
];
|
||
|
||
// Kullanıcı adı animasyon efektleri
|
||
public const USERNAME_EFFECTS = [
|
||
'shimmer' => ['label' => 'Işıltı'],
|
||
'wave' => ['label' => 'Dalga'],
|
||
'pulse' => ['label' => 'Nabız'],
|
||
'glitch' => ['label' => 'Glitch'],
|
||
'bounce' => ['label' => 'Zıplama'],
|
||
];
|
||
|
||
// Sayfa giriş efektleri
|
||
public const ENTRY_EFFECTS = [
|
||
'fade' => ['label' => 'Solma'],
|
||
'slide' => ['label' => 'Kayma'],
|
||
'zoom' => ['label' => 'Yakınlaştırma'],
|
||
'glitch' => ['label' => 'Glitch'],
|
||
'wave' => ['label' => 'Dalga'],
|
||
];
|
||
|
||
// Profil arka plan stilleri
|
||
public const PROFILE_BACKGROUNDS = [
|
||
'fire' => ['label' => 'Alev', 'preview' => '#ff6b35,#ff2d7d'],
|
||
'galaxy' => ['label' => 'Galaksi', 'preview' => '#0d0520,#050510'],
|
||
'aurora' => ['label' => 'Aurora', 'preview' => '#040e0e,#071a1a'],
|
||
'ice' => ['label' => 'Buz', 'preview' => '#040d11,#071420'],
|
||
'sakura' => ['label' => 'Sakura', 'preview' => '#ff9ec4,#ffd6e7'],
|
||
'neon' => ['label' => 'Neon', 'preview' => '#00f5ff,#b84dff'],
|
||
'stars' => ['label' => 'Yıldızlar', 'preview' => '#0a0a2e,#7c3aed'],
|
||
];
|
||
|
||
// Yorum arkaplan stilleri
|
||
public const COMMENT_BACKGROUNDS = [
|
||
'fire' => ['label' => 'Alev', 'preview' => '#ff6b35,#ff2d7d'],
|
||
'aurora' => ['label' => 'Aurora', 'preview' => '#00f5b4,#00f5ff'],
|
||
'stars' => ['label' => 'Yıldızlar', 'preview' => '#0a0a2e,#7c3aed'],
|
||
'sakura' => ['label' => 'Sakura', 'preview' => '#ff9ec4,#ffd6e7'],
|
||
'neon' => ['label' => 'Neon', 'preview' => '#00f5ff,#b84dff'],
|
||
'galaxy' => ['label' => 'Galaksi', 'preview' => '#0d0d2e,#4a1d96'],
|
||
'ice' => ['label' => 'Buz', 'preview' => '#a8edff,#e0f7ff'],
|
||
];
|
||
|
||
// Profil çerçeve stilleri
|
||
public const PROFILE_FRAMES = [
|
||
'neon' => ['label' => 'Neon', 'color' => '#00f5ff'],
|
||
'fire' => ['label' => 'Alev', 'color' => '#ff6b35'],
|
||
'sakura' => ['label' => 'Sakura', 'color' => '#ff9ec4'],
|
||
'galaxy' => ['label' => 'Galaksi', 'color' => '#b84dff'],
|
||
'gold' => ['label' => 'Altın', 'color' => '#ffd700'],
|
||
'ice' => ['label' => 'Buz', 'color' => '#a8edff'],
|
||
'blood' => ['label' => 'Kan', 'color' => '#dc143c'],
|
||
'mint' => ['label' => 'Mint', 'color' => '#00ff7f'],
|
||
'rainbow' => ['label' => 'Gökkuşağı', 'color' => '#ff0000'],
|
||
'ocean' => ['label' => 'Okyanus', 'color' => '#006fbf'],
|
||
'poison' => ['label' => 'Zehir', 'color' => '#9400d3'],
|
||
];
|
||
|
||
// Kullanıcı adı renk presetleri
|
||
public const USERNAME_COLORS = [
|
||
'fire' => ['label' => 'Alev', 'css' => 'linear-gradient(90deg,#ff6b35,#ff2d7d)'],
|
||
'aurora' => ['label' => 'Aurora', 'css' => 'linear-gradient(90deg,#00f5b4,#00f5ff)'],
|
||
'sakura' => ['label' => 'Sakura', 'css' => 'linear-gradient(90deg,#ff9ec4,#ff2d7d)'],
|
||
'neon' => ['label' => 'Neon', 'css' => 'linear-gradient(90deg,#00f5ff,#b84dff)'],
|
||
'galaxy' => ['label' => 'Galaksi', 'css' => 'linear-gradient(90deg,#7c3aed,#b84dff)'],
|
||
'gold' => ['label' => 'Altın', 'css' => 'linear-gradient(90deg,#ffd700,#ff8c00)'],
|
||
'ice' => ['label' => 'Buz', 'css' => 'linear-gradient(90deg,#a8edff,#60cfff)'],
|
||
'blood' => ['label' => 'Kan', 'css' => 'linear-gradient(90deg,#8b0000,#dc143c)'],
|
||
'sunset' => ['label' => 'Gün Batımı', 'css' => 'linear-gradient(90deg,#ff6b00,#ff0080)'],
|
||
'ocean' => ['label' => 'Okyanus', 'css' => 'linear-gradient(90deg,#006fbf,#00d2ff)'],
|
||
'poison' => ['label' => 'Zehir', 'css' => 'linear-gradient(90deg,#6b0ac9,#c300ff)'],
|
||
'silver' => ['label' => 'Gümüş', 'css' => 'linear-gradient(90deg,#9ca3af,#e5e7eb)'],
|
||
'rainbow' => ['label' => 'Gökkuşağı', 'css' => 'linear-gradient(90deg,#ff0000,#ff8c00,#ffd700,#00c800,#0088ff,#8b00ff)'],
|
||
];
|
||
|
||
/** Feature key'e göre metadata döner, yoksa null */
|
||
public static function get(string $key): ?array
|
||
{
|
||
return self::ALL[$key] ?? null;
|
||
}
|
||
|
||
/** Kategoriye göre gruplanmış feature listesi */
|
||
public static function grouped(): array
|
||
{
|
||
$groups = [];
|
||
foreach (self::CATEGORIES as $cat) {
|
||
$groups[$cat] = [];
|
||
}
|
||
foreach (self::ALL as $key => $meta) {
|
||
$groups[$meta['category']][$key] = $meta;
|
||
}
|
||
return array_filter($groups);
|
||
}
|
||
}
|