PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 4.9.2
WP STAGING – WordPress Backup, Restore, Migration & Clone v4.9.2
4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Framework / Upgrade / UpgradeFlags.php
wp-staging / Framework / Upgrade Last commit date
UpgradeFlags.php 1 month ago
UpgradeFlags.php
53 lines
1 <?php
2
3 namespace WPStaging\Framework\Upgrade;
4
5 /**
6 * Persistent flags that mark completion of one-shot upgrade routines.
7 *
8 * Flags are stored together in a single autoloaded wp_options row as a
9 * keyed map — ['flag_id' => true] — so has() is a single isset() with
10 * no scan, regardless of how many flags exist. Shared between Free and
11 * Pro (they run on the same WordPress install).
12 *
13 * Replaces version_compare gating for upgrade routines, which can
14 * silently skip migrations when the stored version is missing, corrupt,
15 * or a legacy dev-version string.
16 */
17 class UpgradeFlags
18 {
19 /**
20 * @var string
21 */
22 const OPTION_KEY = 'wpstg_completed_upgrades';
23
24 /**
25 * @param string $flag
26 * @return bool
27 */
28 public function has($flag)
29 {
30 $flags = get_option(self::OPTION_KEY, []);
31 return is_array($flags) && isset($flags[$flag]);
32 }
33
34 /**
35 * @param string $flag
36 * @return void
37 */
38 public function mark($flag)
39 {
40 $flags = get_option(self::OPTION_KEY, []);
41 if (!is_array($flags)) {
42 $flags = [];
43 }
44
45 if (isset($flags[$flag])) {
46 return;
47 }
48
49 $flags[$flag] = true;
50 update_option(self::OPTION_KEY, $flags);
51 }
52 }
53