PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.8.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.8.1
4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 All 255 releases
give / src / Framework / Migrations / MigrationsRegister.php

MigrationsRegister.php in GiveWP – Donation Plugin and Fundraising Platform 4.16.8.1, at src/Framework/Migrations/MigrationsRegister.php

120 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\Framework\Migrations;
4
5 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
6 use Give\Framework\Migrations\Contracts\BaseMigration;
7
8 class MigrationsRegister
9 {
10 /**
11 * FQCN of Migration classes
12 *
13 * @since 2.9.0
14 *
15 * @var string[]
16 */
17 private $migrations = [];
18
19 /**
20 * Returns all of the registered migrations
21 *
22 * @since 4.0.0 sort migrations
23 * @since 2.9.0
24 *
25 * @return string[]
26 */
27 public function getMigrations()
28 {
29 $sortedMigrations = $this->migrations;
30
31 uasort($sortedMigrations, function($a, $b) {
32 return $a::timestamp() <=> $b::timestamp();
33 });
34
35 return $sortedMigrations;
36 }
37
38 /**
39 * Checks to see if a migration is registered with the given ID
40 *
41 * @since 2.9.2
42 *
43 * @param string $id
44 *
45 * @return bool
46 */
47 public function hasMigration($id)
48 {
49 return isset($this->migrations[$id]);
50 }
51
52 /**
53 * Returns a migration with the given ID
54 *
55 * @since 2.9.2
56 *
57 * @param string $id
58 *
59 * @return string
60 */
61 public function getMigration($id)
62 {
63 if ( ! isset($this->migrations[$id])) {
64 throw new InvalidArgumentException("No migration exists with the ID {$id}");
65 }
66
67 return $this->migrations[$id];
68 }
69
70 /**
71 * Returns all of the registered migration ids
72 *
73 * @since 2.9.0
74 *
75 * @return string[]
76 */
77 public function getRegisteredIds()
78 {
79 return array_keys($this->migrations);
80 }
81
82 /**
83 * Add a migration to the list of migrations
84 *
85 * @since 2.9.0
86 *
87 * @param string $migrationClass FQCN of the Migration Class
88 */
89 public function addMigration($migrationClass)
90 {
91 if ( ! is_subclass_of($migrationClass, BaseMigration::class)) {
92 throw new InvalidArgumentException('Class must extend the ' . BaseMigration::class . ' class');
93 }
94
95 $migrationId = $migrationClass::id();
96
97 if (isset($this->migrations[$migrationId])) {
98 throw new InvalidArgumentException(
99 'A migration can only be added once. Make sure there are not id conflicts.'
100 );
101 }
102
103 $this->migrations[$migrationId] = $migrationClass;
104 }
105
106 /**
107 * Helper for adding a bunch of migrations at once
108 *
109 * @since 2.9.0
110 *
111 * @param string[] $migrationClasses
112 */
113 public function addMigrations(array $migrationClasses)
114 {
115 foreach ($migrationClasses as $migrationClass) {
116 $this->addMigration($migrationClass);
117 }
118 }
119 }
120