PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.12.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.12.0
4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 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.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Database / VersionMigration.php
surecart / app / src / Database Last commit date
Tables 1 year ago GeneralMigration.php 1 year ago MigrationsServiceProvider.php 1 year ago ProductPageMigrationService.php 1 year ago RewriteRulesMigrationService.php 1 year ago Table.php 3 years ago UpdateMigrationServiceProvider.php 2 years ago UserMetaMigrationsService.php 3 years ago VersionMigration.php 1 year ago WebhookMigrationsService.php 1 year ago
VersionMigration.php
87 lines
1 <?php
2
3 namespace SureCart\Database;
4
5 /**
6 * A migration that will run each time the version of the plugin changes.
7 */
8 abstract class VersionMigration {
9 /**
10 * The key for the migration.
11 *
12 * @var string
13 */
14 protected $migration_key = 'surecart_migration_version';
15
16 /**
17 * Run on init.
18 *
19 * @return void
20 */
21 public function bootstrap() {
22 add_action( 'admin_init', [ $this, 'maybeRun' ] );
23 }
24
25 /**
26 * Get the current version of the plugin.
27 *
28 * @return string
29 */
30 public function currentVersion() {
31 return \SureCart::plugin()->version();
32 }
33
34 /**
35 * Maybe let's run the migration.
36 *
37 * @return void
38 */
39 public function maybeRun() {
40 if ( ! $this->shouldMigrate() ) {
41 return;
42 }
43
44 // run the migration.
45 $this->run();
46
47 // update the migration complete on admin_init complete, after all migrations have run.
48 add_action( 'admin_init', [ $this, 'complete' ], 999999 );
49 }
50
51 /**
52 * Should we run this migration?
53 *
54 * @return boolean
55 */
56 public function shouldMigrate(): bool {
57 // check if we already have done this migration.
58 return version_compare( $this->currentVersion(), $this->getLastMigrationVersion(), '!=' );
59 }
60
61 /**
62 * Run the migration
63 *
64 * @return void
65 */
66 protected function run() {
67 }
68
69 /**
70 * Store the current plugin version when complete.
71 *
72 * @return void
73 */
74 public function complete() {
75 update_option( $this->migration_key, $this->currentVersion(), false ); // don't autoload since we are only doing this on the admin.
76 }
77
78 /**
79 * Get the last version there was a migration.
80 *
81 * @return string
82 */
83 public function getLastMigrationVersion() {
84 return get_option( $this->migration_key, '0.0.0' );
85 }
86 }
87