PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 / MigrationLog / Helpers / MigrationHelper.php
give / src / MigrationLog / Helpers Last commit date
Assets.php 1 year ago Environment.php 4 years ago MigrationHelper.php 1 year ago
MigrationHelper.php
127 lines
1 <?php
2
3 namespace Give\MigrationLog\Helpers;
4
5 use Give\Framework\Migrations\Contracts\Migration;
6 use Give\Framework\Migrations\MigrationsRegister;
7 use Give\MigrationLog\MigrationLogModel;
8 use Give\MigrationLog\MigrationLogRepository;
9
10 /**
11 * Class MigrationOrder
12 * @package Give\MigrationLog\Helpers
13 *
14 * Helper class used to get migration data
15 *
16 * @since 2.10.0
17 */
18 class MigrationHelper
19 {
20
21 /**
22 * @var MigrationsRegister
23 */
24 private $migrationRegister;
25
26 /**
27 * @var MigrationLogRepository
28 */
29 private $migrationRepository;
30
31 /**
32 * @var MigrationLogModel[]
33 */
34 private $migrationsInDatabase;
35
36 /**
37 * MigrationOrder constructor.
38 *
39 * @param MigrationsRegister $migrationRegister
40 * @param MigrationLogRepository $migrationRepository
41 */
42 public function __construct(
43 MigrationsRegister $migrationRegister,
44 MigrationLogRepository $migrationRepository
45 ) {
46 $this->migrationRegister = $migrationRegister;
47 $this->migrationRepository = $migrationRepository;
48 }
49
50 /**
51 * Get migrations sorted by run order
52 *
53 * @since 2.10.0
54 *
55 * @return array
56 */
57 private function getMigrationsSorted()
58 {
59 static $migrations = [];
60
61 if (empty($migrations)) {
62 /* @var Migration $migrationClass */
63 foreach ($this->migrationRegister->getMigrations() as $migrationClass) {
64 $migrations[$migrationClass::id()] = $migrationClass::timestamp();
65 }
66
67 asort($migrations);
68 }
69
70 return $migrations;
71 }
72
73 /**
74 * Get pending migrations
75 *
76 * @since 2.10.0
77 *
78 * @return string[]
79 */
80 public function getPendingMigrations()
81 {
82 return array_filter(
83 $this->migrationRegister->getMigrations(),
84 function ($migrationClass) {
85 /* @var Migration $migrationClass */
86 foreach ($this->getMigrationsInDatabase() as $migration) {
87 if ($migration->getId() === $migrationClass::id()) {
88 return false;
89 }
90 }
91
92 return true;
93 }
94 );
95 }
96
97 /**
98 * Get migration run order
99 *
100 * @since 2.10.0
101 *
102 * @param string $migrationId
103 *
104 * @return int
105 */
106 public function getRunOrderForMigration($migrationId)
107 {
108 return array_search($migrationId, array_keys($this->getMigrationsSorted())) + 1;
109 }
110
111 /**
112 * Retrieves the migrations from the database, caching the results for future retrieval
113 *
114 * @since 2.10.1
115 *
116 * @return MigrationLogModel[]
117 */
118 private function getMigrationsInDatabase()
119 {
120 if ($this->migrationsInDatabase === null) {
121 $this->migrationsInDatabase = $this->migrationRepository->getMigrations();
122 }
123
124 return $this->migrationsInDatabase;
125 }
126 }
127