enemis / media-bundle
Media management system for symfony application, inspired and based on Sonata Media Project
Installs: 11
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/enemis/media-bundle
Requires
- php: ^7.1
- doctrine/doctrine-bundle: ^2.2
- doctrine/orm: ^2.8
- guzzlehttp/psr7: ^1.0
- imagine/imagine: ^0.6 || ^0.7 || ^1.0
- jms/serializer-bundle: ^2.3.1 || ^3.0
- knplabs/gaufrette: ^0.8 || ^0.9
- knplabs/knp-gaufrette-bundle: v0.7.1
- kriswallsmith/buzz: ^0.15 || ^0.16
- psr/log: ^1.0
- symfony/config: ^4.3
- symfony/console: ^4.3
- symfony/dependency-injection: ^4.3
- symfony/event-dispatcher: ^4.3
- symfony/form: ^4.3
- symfony/framework-bundle: ^4.3
- symfony/mime: ^4.3 || ^5.0
- symfony/options-resolver: ^4.3
- symfony/routing: ^4.3
- symfony/security-bundle: ^4.3
- symfony/security-core: ^4.3
- symfony/templating: ^4.3
- symfony/translation: ^4.3
- symfony/twig-bundle: ^4.3
- symfony/validator: ^4.3
- twig/twig: ^2.10|^3.0
Conflicts
- doctrine/dbal: <2.6.0
- friendsofsymfony/rest-bundle: <2.1 || >=3.0
- jms/serializer: <0.13
- liip/imagine-bundle: <1.9
- symfony/monolog-bundle: <2.4
README
#Media bundle - the easiest way to manipulate your media.
Какую проблему решаем и что послужило побудило разработать данный проект для управления медия?
Главная проблема sonata media-bundle в том что он является частью экосистемы соната, а значит для управления медиа файлами вам нужно установить:   
    sonata core, sonata block bundle, sonata admin. Но данные бандлы не всегда нужны, например у вас свой админ интерфейс или ваш проект будет конфликтовать с зависимости сонаты. 
Цели проекта:
- Избавиться от ненужныж зависимостей для проектов
- Избежать Dependency hell для существующих проектов при интеграции с media-bundle
- Уменьшить кодовую базу, а значит упростить развитие
- Увеличить кол-во провайдеров и позволить использовать только нужные провайдеры
- Реализовать возможность использовать несколько разных наборов entity с разным набором настроек для каждой группы
- Реализовать легкую интеграцию с Liip imagine
- Использовать knp_gaufrette для хранения media убрав адаптеры из кода media bundle
- Оптимизировать хранилища убрав редко используемые поля, оставив при необходимости возможность добавить их. Убраны author_name, copyright
Установка
Добавить в bundles.php:
`    Enemis\MediaBundle\EnemisMediaBundle::class => ['all' => true],
     Knp\Bundle\GaufretteBundle\KnpGaufretteBundle::class => ['all' => true],
     Sonata\Doctrine\Bridge\Symfony\SonataDoctrineSymfonyBundle::class => ['all' => true],`
Настройка
Создание Entities
Создайте сущности для каждого контекста можно использовать одни и теже сущности и таблицы для разных контекстов либо создать разные
### \App\Entity\Media.php
`<?php
 
 declare(strict_types=1);
 
 namespace App\Entity;
 
 use Enemis\MediaBundle\Entity\BaseMedia;
 use Doctrine\ORM\Mapping as ORM;
 use App\Repository\MediaRepository;
 
 /**
  * @ORM\Entity(repositoryClass=MediaRepository::class)
  */
 class Media extends BaseMedia
 {
     /**
      * @ORM\Id()
      * @ORM\GeneratedValue()
      * @ORM\Column(type="integer")
      */
     private $id;
 
     public function getId(): ?int
     {
        return $this->id;
     }
 }`
 
     ### \App\Entity\Gallery.php
     `<?php
      
      declare(strict_types=1);
      
      namespace App\Entity;
      
      use Enemis\MediaBundle\Entity\BaseMedia;
      use Doctrine\ORM\Mapping as ORM;
      use App\Repository\GalleryRepository;
      
      /**
       * @ORM\Entity(repositoryClass=GalleryRepository::class)
       */
      class Gallery extends BaseMedia
      {
          /**
           * @ORM\Id()
           * @ORM\GeneratedValue()
           * @ORM\Column(type="integer")
           */
          private $id;
      
          public function getId(): ?int
          {
             return $this->id;
          }
      }
### \App\Entity\GalleryHasMedia.php<?php
      declare(strict_types=1);
      
      namespace App\Entity;
      
      use Enemis\MediaBundle\Entity\BaseGalleryHasMedia;
      use Doctrine\ORM\Mapping as ORM;
      
      /**
       * @ORM\Entity()
       */
      class GalleryHasMedia extends BaseGalleryHasMedia
      {
          /**
           * @ORM\Id()
           * @ORM\GeneratedValue()
           * @ORM\Column(type="integer")
           */
          private $id;
      
          public function getId(): ?int
          {
              return $this->id;
          }
      }
     `
     
     #Репозитории?
     
     
     Затем нужно выполнить обновить схему базы данных. 
     Для получения звпросов которые должны выполнится выполните
     `$ bin/console doctrine:schema:update --dump-sql`
     
     Для внесение изменений рекомендуется использовать миграции либо если вы только начинаете проект:
     `$ bin/console doctrine:schema:update --force`
     
     Данная команда создаст необходимые таблицы.
Написать про возможность хранение оригиналов на амазон а кеш отдельно