Proje: Okul Platform · Hub: Okul Platform — Domain

Media Nedir?

Okul profil fotoğrafları, makale resimleri, sözleşme belgeleri, logolar gibi tüm dosya/görsel varlıkları.

Storage: AWS S3 (league/flysystem-aws-s3-v3) Image işleme: intervention/image-laravel

MediaRoleIdType Enum (Medya Türleri)

IDTürAçıklama
1ARTICLE_COVERMakale kapak
2ARTICLE_CONTENTMakale içerik görseli
3SCHOOL_PROFILEOkul profil fotoğrafı
4SCHOOL_GALLERYOkul galeri (varsayılan)
5USER_PROFILEKullanıcı profil fotoğrafı
6-8COLLEGE_THUMB/COVER/CONTENTKolej görselleri
9-10GALLERY_LISTING/CONTENTGaleri listesi/içerik
11ANNOUNCEMENT_CONTENTDuyuru içerik görseli
12-13SCHOLARSHIP_COVER/CONTENTBurs görselleri
14VIDEOVideo
15CUSTOMER_AGREEMENTMüşteri sözleşmesi
16SCHOOL_LOGOOkul logosu
17ACHIEVEMENTS_ANNOUNCEMENTBaşarı duyurusu
18EVENTS_ANNOUNCEMENTEtkinlik duyurusu
19DOCUMENTS_AGREEMENTSözleşme belgesi
20CHECKOUT_CONTRACTCheckout sözleşmesi
21CHECKOUT_RECEIPTCheckout makbuzu

Erişim Kuralları

  • forCustomer() — B2B portale izin verilenler: SCHOOL_PROFILE, SCHOOL_GALLERY, SCHOOL_LOGO, VIDEO, ANNOUNCEMENT_CONTENT, ACHIEVEMENTS_ANNOUNCEMENT, EVENTS_ANNOUNCEMENT
  • forAdmin() — Tüm türlere admin erişebilir

Upload Akışı (B2B)

  1. POST /customer/media/temp — Geçici dosya yükle
  2. (form doldurulur)
  3. POST /customer/media/move — Geçici → kalıcı konuma taşı

Media Scope’ları

Her MediaRoleIdType’ın kendi scope’u var:

  • SchoolMediaScope — Okul medyası
  • SchoolLogoScope — Logo
  • SchoolAnnouncementMediaScope — Duyuru medyası
  • CustomerAgreementScope — Sözleşme
  • VideoScope — Video
  • CommonMediaScope — Ortak

School::gallery()Media ile row_id üzerinden ilişki, status=1, role_id=SCHOOL_GALLERY, sıra: created_at DESC

Media Model

  • row_id — Hangi içeriğe (okul ID, article ID, vs.) ait
  • role_id → MediaRoleIdType
  • sort — Sıralama (varsayılan 1)
  • path — S3 yolu
  • video_path — Video için ayrı yol
  • full_url → computed property