PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.2
GiveWP – Donation Plugin and Fundraising Platform v4.14.2
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 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / Migrations / MigrationsRegister.php
give / src / Framework / Migrations Last commit date
Actions 1 year ago Contracts 1 year ago Controllers 5 months ago Exceptions 4 years ago MigrationsRegister.php 1 year ago MigrationsRunner.php 1 year ago MigrationsServiceProvider.php 1 year ago
MigrationsRegister.php
120 lines
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