PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.13.3
GiveWP – Donation Plugin and Fundraising Platform v2.13.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
121 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 }
48
49 /**
50 * Get migrations sorted by run order
51 *
52 * @since 2.10.0
53 *
54 * @return array
55 */
56 private function getMigrationsSorted() {
57 static $migrations = [];
58
59 if ( empty( $migrations ) ) {
60 /* @var Migration $migrationClass */
61 foreach ( $this->migrationRegister->getMigrations() as $migrationClass ) {
62 $migrations[ $migrationClass::timestamp() . '_' . $migrationClass::id() ] = $migrationClass::id();
63 }
64
65 ksort( $migrations );
66 }
67
68 return $migrations;
69 }
70
71 /**
72 * Get pending migrations
73 *
74 * @since 2.10.0
75 *
76 * @return string[]
77 */
78 public function getPendingMigrations() {
79 return array_filter(
80 $this->migrationRegister->getMigrations(),
81 function( $migrationClass ) {
82 /* @var Migration $migrationClass */
83 foreach ( $this->getMigrationsInDatabase() as $migration ) {
84 if ( $migration->getId() === $migrationClass::id() ) {
85 return false;
86 }
87 }
88 return true;
89 }
90 );
91 }
92
93 /**
94 * Get migration run order
95 *
96 * @since 2.10.0
97 *
98 * @param string $migrationId
99 *
100 * @return int
101 */
102 public function getRunOrderForMigration( $migrationId ) {
103 return array_search( $migrationId, array_values( $this->getMigrationsSorted() ) ) + 1;
104 }
105
106 /**
107 * Retrieves the migrations from the database, caching the results for future retrieval
108 *
109 * @since 2.10.1
110 *
111 * @return MigrationLogModel[]
112 */
113 private function getMigrationsInDatabase() {
114 if ( $this->migrationsInDatabase === null ) {
115 $this->migrationsInDatabase = $this->migrationRepository->getMigrations();
116 }
117
118 return $this->migrationsInDatabase;
119 }
120 }
121