PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.3
Yatra – Travel Booking & Tour Operator Software v3.0.3
3.0.15 3.0.14 3.0.14.1 3.0.14.2 3.0.12 3.0.13 3.0.11 3.0.10 3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.5.1 3.0.4 3.0.3 3.0.2.9 3.0.2.7 3.0.2.8 3.0.2.6 trunk 1.0.0 2.0.0 2.0.1 2.0.10 All 83 releases
yatra / app / Upgrades / FreeUpgradeRunner.php

FreeUpgradeRunner.php in Yatra – Travel Booking & Tour Operator Software 3.0.3, at app/Upgrades/FreeUpgradeRunner.php

77 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Yatra\Upgrades;
6
7 use Yatra\Core\Database;
8 use Yatra\Services\InstallerService;
9
10 /**
11 * Orchestrates Yatra Free upgrades: {@see Database::createTables()} for schema sync, then version-gated
12 * {@see Versions\* } steps (ALTER / DROP / data) that do not run on a fresh install at the current version.
13 *
14 * Hooks:
15 * - admin_init (priority 5): delta upgrades + version option bump + idempotent maintenance.
16 *
17 * Extension points:
18 * - {@see 'yatra_free_upgraded'} — after yatra_version was bumped. Args: (string $from, string $to).
19 * - {@see 'yatra_free_upgrades_ran'} — every admin_init after work. Args: (string $from, string $to, bool $bumped).
20 */
21 final class FreeUpgradeRunner
22 {
23 public const VERSION_OPTION = 'yatra_version';
24
25 public static function register(): void
26 {
27 add_action('admin_init', [self::class, 'runAdminUpgrades'], 5);
28 }
29
30 public static function runAdminUpgrades(): void
31 {
32 if (!defined('YATRA_VERSION')) {
33 return;
34 }
35
36 $to = YATRA_VERSION;
37 $stored = get_option(self::VERSION_OPTION, false);
38
39 if ($stored === false) {
40 add_option(self::VERSION_OPTION, $to);
41 self::runIdempotentMaintenance();
42 do_action('yatra_free_upgrades_ran', '0.0.0', $to, false);
43
44 return;
45 }
46
47 $from = (string) $stored;
48
49 if (version_compare($from, $to, '>=')) {
50 self::runIdempotentMaintenance();
51 do_action('yatra_free_upgrades_ran', $from, $to, false);
52
53 return;
54 }
55
56 Database::createTables();
57
58 foreach (FreeUpgradeRegistry::stepsForHook('admin_init') as $class) {
59 if ($class::shouldApply($from, $to)) {
60 $class::run($from, $to);
61 }
62 }
63
64 update_option(self::VERSION_OPTION, $to);
65 do_action('yatra_free_upgraded', $from, $to);
66
67 self::runIdempotentMaintenance();
68 do_action('yatra_free_upgrades_ran', $from, $to, true);
69 }
70
71 private static function runIdempotentMaintenance(): void
72 {
73 InstallerService::maybeBackfillEmailTemplateDefaults();
74 InstallerService::maybeNormalizeMigratedCouponDiscountStatuses();
75 }
76 }
77