Skip to content
Snippets Groups Projects
Select Git revision
  • f02e14d8e070a709be952c427814b289d7ca760c
  • main default
  • 35-cgu
  • 34-peertube-support
  • 27-add-autoplay-to-iframe
  • 33-bug-on-youtube-embed-urls
  • RC-Rekall-v1.1-fix_lpo
  • tuleap-140-go-back-to-my-capsules-page-when-i-m-on-capsule-preview-page
  • RC-Rekall-v1.2-fix10
  • RC-Rekall-v1.2-fix9
  • RC-Rekall-v1.2-fix8
  • RC-Rekall-v1.2-fix7
  • RC-Rekall-v1.2-fix6
  • RC-Rekall-v1.2-fix5
  • RC-Rekall-v1.2-fix4
  • RC-Rekall-v1.2-fix3
  • RC-Rekall-v1.2-fix2
  • RC-Rekall-v1.2-fix1
  • RC-Rekall-v1.1-fix-3
  • RC-Rekall-v1.1-fix-2
  • RC-Rekall-v1.1-fix-1
  • RC-Rekall-v1.1-delivered
  • preprod20220209-1535
23 results

CapsuleFixtures.php

Blame
  • CapsuleFixtures.php 3.17 KiB
    <?php
    
    namespace App\DataFixtures;
    
    use App\Builder\CapsuleBuilder;
    use App\Entity\User;
    use DateTime;
    use Doctrine\Bundle\FixturesBundle\Fixture;
    use Doctrine\Common\DataFixtures\DependentFixtureInterface;
    use Doctrine\Persistence\ObjectManager;
    use Symfony\Component\Uid\Uuid;
    
    class CapsuleFixtures extends Fixture implements DependentFixtureInterface
    {
        public function load(ObjectManager $manager): void
        {
            $user_repository = $manager->getRepository(User::class);
            $verified_user1 = $user_repository->findOneBy(['email' => "defaultUser@localhost.com"]);
    
            if (! $verified_user1 instanceof User) {
                throw new \Exception("User does not exist.");
            }
    
            $verified_user2 = $user_repository->findOneBy(['email' => "defaultUser2@localhost.com"]);
    
            if (! $verified_user2 instanceof User) {
                throw new \Exception("User does not exist.");
            }
    
            $new_date_time = new DateTime();
    
            $persistent_capsule_factory = $this->createCapsulePersistentFactory($manager);
    
            $persistent_capsule_factory(
                function (CapsuleBuilder $builder) use (
                    $verified_user1,
                    $new_date_time
                ) {
                    $uuid = Uuid::v4();
                    $password = sha1(random_bytes(100));
                    $builder
                        ->withName("Pomme")
                        ->withCreationAuthor($verified_user1)
                        ->withCreationDate($new_date_time)
                        ->withUpdateDate($new_date_time)
                        ->withLinkPath($uuid)
                        ->withPassword($password);
                }
            );
    
            $persistent_capsule_factory(
                function (CapsuleBuilder $builder) use (
                    $verified_user2,
                    $new_date_time
                ) {
                    $uuid = Uuid::v4();
                    $password = sha1(random_bytes(100));
                    $builder
                        ->withName("Adele")
                        ->withCreationAuthor($verified_user2)
                        ->withCreationDate($new_date_time)
                        ->withUpdateDate($new_date_time)
                        ->withLinkPath($uuid)
                        ->withPassword($password);
                }
            );
    
            $manager->flush();
        }
    
        /**
         * Create a capsule using the callable parameter, save the result within the ObjectManage,
         * then return the created capsule.
         * @param ObjectManager $manager
         * @return callable function(callable $builderAction): void { ... }
         *                  <ul>
         *                      <li>The $builderAction should take one parameter of type CapsuleBuilder</li>
         *                  </ul>
         */
        private function createCapsulePersistentFactory(ObjectManager $manager): callable
        {
            return function (callable $builderAction) use ($manager) {
                $capsuleBuilder = new CapsuleBuilder();
                $builderAction($capsuleBuilder);
                $newCapsule = $capsuleBuilder->createCapsule();
    
                $manager->persist($newCapsule);
    
                return $newCapsule;
            };
        }
    
        public function getDependencies(): array
        {
            return [
                UserFixtures::class,
            ];
        }
    }