Files
animexe/app/Services/PremiumFeatures.php
2026-07-14 00:01:48 +03:00

236 lines
11 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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);
}
}