]> BookStack Code Mirror - bookstack/blob - app/References/ReferenceChangeContext.php
Merge pull request #5917 from BookStackApp/copy_references
[bookstack] / app / References / ReferenceChangeContext.php
1 <?php
2
3 namespace BookStack\References;
4
5 use BookStack\Entities\Models\Entity;
6
7 class ReferenceChangeContext
8 {
9     /**
10      * Entity pairs where the first is the old entity and the second is the new entity.
11      * @var array<array{0: Entity, 1: Entity}>
12      */
13     protected array $changes = [];
14
15     public function add(Entity $oldEntity, Entity $newEntity): void
16     {
17         $this->changes[] = [$oldEntity, $newEntity];
18     }
19
20     /**
21      * Get all the new entities from the changes.
22      */
23     public function getNewEntities(): array
24     {
25         return array_column($this->changes, 1);
26     }
27
28     /**
29      * Get all the old entities from the changes.
30      */
31     public function getOldEntities(): array
32     {
33         return array_column($this->changes, 0);
34     }
35
36     public function getNewForOld(Entity $oldEntity): ?Entity
37     {
38         foreach ($this->changes as [$old, $new]) {
39             if ($old->id === $oldEntity->id && $old->type === $oldEntity->type) {
40                 return $new;
41             }
42         }
43         return null;
44     }
45 }