CoreFixtures.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. declare(strict_types = 1);
  3. namespace App\DataFixtures;
  4. use App\Core\ActorLocalRoles;
  5. use App\Core\VisibilityScope;
  6. use App\Entity\Actor;
  7. use App\Entity\LocalUser;
  8. use App\Entity\Note;
  9. use Component\Group\Entity\GroupInbox;
  10. use Component\Group\Entity\GroupMember;
  11. use Component\Group\Entity\LocalGroup;
  12. use Component\Subscription\Entity\ActorSubscription;
  13. use Doctrine\Bundle\FixturesBundle\Fixture;
  14. use Doctrine\Persistence\ObjectManager;
  15. class CoreFixtures extends Fixture
  16. {
  17. public function load(ObjectManager $manager)
  18. {
  19. $actors = [];
  20. $local_entities = [];
  21. foreach ([
  22. 'taken_user' => [LocalUser::class, 'setId', ['password' => LocalUser::hashPassword('foobar'), 'outgoing_email' => 'email@provider'], []],
  23. 'some_user' => [LocalUser::class, 'setId', [], []],
  24. 'admin' => [LocalUser::class, 'setId', [], ['roles' => ActorLocalRoles::OPERATOR | ActorLocalRoles::MODERATOR | ActorLocalRoles::PARTICIPANT | ActorLocalRoles::VISITOR]],
  25. 'local_user_test_user' => [LocalUser::class, 'setId', ['password' => LocalUser::hashPassword('foobar')], []],
  26. 'form_personal_info_test_user' => [LocalUser::class, 'setId', [], []],
  27. 'form_account_test_user' => [LocalUser::class, 'setId', ['password' => LocalUser::hashPassword('some password')], []],
  28. 'taken_group' => [LocalGroup::class, 'setGroupId', [], []],
  29. ] as $nick => [$entity, $method, $extra_create, $extra_create_actor]) {
  30. $actor = Actor::create(array_merge(['nickname' => $nick, 'is_local' => true], $extra_create_actor));
  31. $manager->persist($actor);
  32. $ent = $entity::create(array_merge(['nickname' => $nick], $extra_create)); // cannot use array spread for arrays with string keys
  33. $ent->{$method}($actor->getId());
  34. $local_entities[$nick] = $ent;
  35. $manager->persist($ent);
  36. // Add self subscriptions
  37. $manager->persist(ActorSubscription::create(['subscriber' => $actor->getId(), 'subscribed' => $actor->getId()]));
  38. $actors[$nick] = $actor;
  39. }
  40. $n = Note::create(['actor_id' => $actors['taken_user']->getId(), 'content' => 'some content', 'content_type' => 'text/plain', 'is_local' => true]);
  41. $manager->persist($n);
  42. $notes = [];
  43. $notes[] = Note::create(['actor_id' => $actors['taken_user']->getId(), 'content' => 'some other content', 'content_type' => 'text/plain', 'is_local' => true]);
  44. $notes[] = Note::create(['actor_id' => $actors['taken_user']->getId(), 'content' => 'private note', 'scope' => VisibilityScope::COLLECTION, 'content_type' => 'text/plain', 'is_local' => false]);
  45. $notes[] = $group_note = Note::create(['actor_id' => $actors['taken_user']->getId(), 'content' => 'group note', 'scope' => VisibilityScope::GROUP, 'content_type' => 'text/plain', 'is_local' => true]);
  46. foreach ($notes as $note) {
  47. $manager->persist($note);
  48. }
  49. $manager->persist(GroupMember::create(['group_id' => $local_entities['taken_group']->getGroupId(), 'actor_id' => $actors['some_user']->getId()]));
  50. $manager->persist(GroupInbox::create(['group_id' => $local_entities['taken_group']->getGroupId(), 'activity_id' => $group_note->getId()]));
  51. $manager->flush();
  52. }
  53. }