PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.10.0
GiveWP – Donation Plugin and Fundraising Platform v2.10.0
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 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 5 years ago Environment.php 5 years ago MigrationHelper.php 5 years ago
MigrationHelper.php
101 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 * @var MigrationsRegister
22 */
23 private $migrationRegister;
24
25 /**
26 * @var MigrationLogRepository
27 */
28 private $migrationRepository;
29
30 /**
31 * @var MigrationLogModel[]
32 */
33 private $migrationsInDatabase;
34
35 /**
36 * MigrationOrder constructor.
37 *
38 * @param MigrationsRegister $migrationRegister
39 * @param MigrationLogRepository $migrationRepository
40 */
41 public function __construct(
42 MigrationsRegister $migrationRegister,
43 MigrationLogRepository $migrationRepository
44 ) {
45 $this->migrationRegister = $migrationRegister;
46 $this->migrationRepository = $migrationRepository;
47 $this->migrationsInDatabase = $this->migrationRepository->getMigrations();
48 }
49
50 /**
51 * Get migrations sorted by run order
52 *
53 * @return array
54 */
55 private function getMigrationsSorted() {
56 static $migrations = [];
57
58 if ( empty( $migrations ) ) {
59 /* @var Migration $migrationClass */
60 foreach ( $this->migrationRegister->getMigrations() as $migrationClass ) {
61 $migrations[ $migrationClass::timestamp() . '_' . $migrationClass::id() ] = $migrationClass::id();
62 }
63
64 ksort( $migrations );
65 }
66
67 return $migrations;
68 }
69
70 /**
71 * Get pending migrations
72 *
73 * @return string[]
74 */
75 public function getPendingMigrations() {
76 return array_filter(
77 $this->migrationRegister->getMigrations(),
78 function( $migrationClass ) {
79 /* @var Migration $migrationClass */
80 foreach ( $this->migrationsInDatabase as $migration ) {
81 if ( $migration->getId() === $migrationClass::id() ) {
82 return false;
83 }
84 }
85 return true;
86 }
87 );
88 }
89
90 /**
91 * Get migration run order
92 *
93 * @param string $migrationId
94 *
95 * @return int
96 */
97 public function getRunOrderForMigration( $migrationId ) {
98 return array_search( $migrationId, array_values( $this->getMigrationsSorted() ) ) + 1;
99 }
100 }
101