gnu-social/src/DataFixtures/CoreFixtures.php

101 lines
5.1 KiB
PHP
Raw Normal View History

<?php
declare(strict_types = 1);
namespace App\DataFixtures;
2022-01-23 00:02:21 +09:00
use App\Core\ActorLocalRoles;
use App\Core\VisibilityScope;
2022-03-07 05:16:09 +09:00
use App\Entity\Activity;
2021-09-18 11:22:27 +09:00
use App\Entity\Actor;
use App\Entity\LocalUser;
use App\Entity\Note;
2022-03-07 05:16:09 +09:00
use Component\Conversation\Conversation;
2021-12-28 05:33:56 +09:00
use Component\Group\Entity\GroupMember;
use Component\Group\Entity\LocalGroup;
2022-03-07 05:16:09 +09:00
use Component\Notification\Entity\Attention;
use Component\Notification\Entity\Notification;
use Component\Subscription\Entity\ActorSubscription;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
class CoreFixtures extends Fixture
{
public function load(ObjectManager $manager)
{
$actors = [];
$local_entities = [];
foreach ([
2022-03-07 05:16:09 +09:00
'taken_user' => [
LocalUser::class,
'setId',
['password' => LocalUser::hashPassword('foobar'), 'outgoing_email' => 'taken_user@provider.any'],
['roles' => ActorLocalRoles::PARTICIPANT | ActorLocalRoles::VISITOR, 'type' => Actor::PERSON],
],
'some_user' => [
LocalUser::class,
'setId',
['password' => LocalUser::hashPassword('foobar'), 'outgoing_email' => 'some_user@provider.any'],
['roles' => ActorLocalRoles::PARTICIPANT | ActorLocalRoles::VISITOR, 'type' => Actor::PERSON],
],
'admin' => [
LocalUser::class,
'setId',
['password' => LocalUser::hashPassword('foobar'), 'outgoing_email' => 'admin@provider.any'],
['roles' => ActorLocalRoles::OPERATOR | ActorLocalRoles::MODERATOR | ActorLocalRoles::PARTICIPANT | ActorLocalRoles::VISITOR, 'type' => Actor::PERSON],
],
'local_user_test_user' => [
LocalUser::class,
'setId',
['password' => LocalUser::hashPassword('foobar'), 'outgoing_email' => 'local_user_test_user@provider.any'],
['roles' => ActorLocalRoles::PARTICIPANT | ActorLocalRoles::VISITOR, 'type' => Actor::PERSON],
],
'form_personal_info_test_user' => [
LocalUser::class,
'setId',
['password' => LocalUser::hashPassword('foobar'), 'outgoing_email' => 'form_personal_info_test_user@provider.any'],
['roles' => ActorLocalRoles::PARTICIPANT | ActorLocalRoles::VISITOR, 'type' => Actor::PERSON],
],
'form_account_test_user' => [
LocalUser::class,
'setId',
['password' => LocalUser::hashPassword('foobar'), 'outgoing_email' => 'form_account_test_user@provider.any'],
['roles' => ActorLocalRoles::PARTICIPANT | ActorLocalRoles::VISITOR, 'type' => Actor::PERSON],
],
'taken_group' => [
LocalGroup::class,
'setActorId',
[],
['roles' => ActorLocalRoles::VISITOR, 'type' => Actor::GROUP],
],
] as $nick => [$entity, $method, $extra_create, $extra_create_actor]) {
$actor = Actor::create(array_merge(['nickname' => $nick, 'is_local' => true], $extra_create_actor));
$manager->persist($actor);
2022-03-07 05:16:09 +09:00
// cannot use array spread for arrays with string keys
$ent = $entity::create(array_merge(['nickname' => $nick], $extra_create));
$ent->{$method}($actor->getId());
$local_entities[$nick] = $ent;
$manager->persist($ent);
// Add self subscriptions
2022-03-07 05:16:09 +09:00
$manager->persist(ActorSubscription::create(['subscriber_id' => $actor->getId(), 'subscribed_id' => $actor->getId()]));
$actors[$nick] = $actor;
}
$notes = [];
$notes[] = Note::create(['actor_id' => $actors['taken_user']->getId(), 'content' => 'some other content', 'content_type' => 'text/plain', 'is_local' => true]);
$notes[] = Note::create(['actor_id' => $actors['taken_user']->getId(), 'content' => 'private note', 'scope' => VisibilityScope::COLLECTION, 'content_type' => 'text/plain', 'is_local' => false]);
$notes[] = $group_note = Note::create(['actor_id' => $actors['taken_user']->getId(), 'content' => 'group note', 'scope' => VisibilityScope::GROUP, 'content_type' => 'text/plain', 'is_local' => true]);
foreach ($notes as $note) {
$manager->persist($note);
2022-03-07 05:16:09 +09:00
$activity = Activity::create(['actor_id' => $actors['taken_user']->getId(), 'verb' => 'create', 'object_type' => 'note', 'object_id' => $note->getId(), 'source' => 'auto-test']);
Conversation::assignLocalConversation($note, null);
$manager->persist($activity);
}
2022-03-07 05:16:09 +09:00
$manager->persist(GroupMember::create(['group_id' => $local_entities['taken_group']->getActorId(), 'actor_id' => $actors['some_user']->getId()]));
$manager->persist(Attention::create(['note_id' => $group_note->getId(), 'target_id' => $local_entities['taken_group']->getActorId()]));
$manager->persist(Notification::create(['activity_id' => $activity->getId(), 'target_id' => $local_entities['taken_group']->getActorId(), 'reason' => 'testing']));
$manager->flush();
}
}