PluginProbe ʕ •ᴥ•ʔ
WP 2FA – Two-factor authentication for WordPress / 1.6.2
WP 2FA – Two-factor authentication for WordPress v1.6.2
4.1.0 4.0.0 1.7.1 2.0.0 2.0.1 2.1.0 2.2.0 2.2.1 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.8.0 2.9.0 2.9.1 2.9.2 2.9.3 3.0.0 3.0.1 3.1.0 3.1.1 3.1.1.2 trunk 1.2.0 1.3.0 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.6.0 1.6.1 1.6.2 1.7.0
wp-2fa / includes / classes / Utils / Migration.php
wp-2fa / includes / classes / Utils Last commit date
AbstractMigration.php 5 years ago DateTimeUtils.php 5 years ago Debugging.php 5 years ago GenerateModal.php 5 years ago Migration.php 5 years ago UserUtils.php 5 years ago index.php 5 years ago
Migration.php
150 lines
1 <?php
2 namespace WP2FA\Utils;
3
4 defined( 'ABSPATH' ) || exit; // Exit if accessed directly
5
6 /**
7 * Migration class
8 */
9 if ( ! class_exists( '\WP2FA\Utils\Migration' ) ) {
10
11 /**
12 * Put all you migration methods here
13 *
14 * @package WP2FA\Utils
15 * @since 1.6
16 */
17 class Migration extends AbstractMigration {
18
19 /**
20 * The name of the option from which we should extact version
21 * Note: version is expected in version format - 1.0.0; 1; 1.0; 1.0.0.0
22 * Note: only numbers will be processed
23 */
24 protected static $versionOptionName = 'wp_2fa_plugin_version';
25
26 /**
27 * The constant name where the plugin version is stored
28 * Note: version is expected in version format - 1.0.0; 1; 1.0; 1.0.0.0
29 * Note: only numbers will be processed
30 */
31 protected static $constNameOfPluginVersion = 'WP_2FA_VERSION';
32
33 /**
34 * The name of the plugin settings
35 *
36 * @var string
37 */
38 private static $pluginSettingsName = 'wp_2fa_settings';
39
40 /**
41 * Migration for version upto 1.6.0
42 *
43 * @return void
44 * @since 1.6.0
45 */
46 protected static function migrateUpTo_160() {
47 $settings = self::getSettings();
48 if ( ! is_array( $settings ) ) {
49 return;
50 }
51
52 $needsUpdate = false;
53
54 $settings_to_convert = [ 'enforced_roles', 'enforced_users', 'excluded_users', 'excluded_roles' ];
55 foreach ( $settings_to_convert as $setting_name ) {
56 if ( array_key_exists( $setting_name, $settings ) && ! is_array( $settings[ $setting_name ] ) ) {
57 $settings[ $setting_name ] = array_filter(
58 explode( ',', $settings[ $setting_name ] )
59 );
60 $needsUpdate = true;
61 }
62 }
63
64 if ( ! isset( $settings['backup_codes_enabled'] ) ) {
65 $settings['backup_codes_enabled'] = 'yes';
66 $needsUpdate = true;
67 }
68
69 if ( $needsUpdate ) {
70 // Update settings.
71 self::setSettings( $settings );
72 }
73 }
74
75 /**
76 * Migration for version upto 1.6.2
77 *
78 * @return void
79 * @since 1.6.2
80 */
81 protected static function migrateUpTo_162() {
82 $settings = self::getSettings();
83 if ( ! is_array( $settings ) ) {
84 return;
85 }
86
87 $needsUpdate = false;
88
89 $settings_to_convert = [ 'excluded_sites' ];
90 foreach ( $settings_to_convert as $setting_name ) {
91 if ( array_key_exists( $setting_name, $settings ) && ! is_array( $settings[ $setting_name ] ) ) {
92 $originalSettingsSplit = array_filter(
93 explode( ',', $settings[ $setting_name ] )
94 );
95 $settings[ $setting_name ] = [];
96 foreach ( $originalSettingsSplit as $value ) {
97 $settings[ $setting_name ][] = mb_substr( $value, mb_strrpos( $value, ':' ) + 1 );
98 }
99 $needsUpdate = true;
100 }
101 }
102
103 self::migrateUpTo_160();
104
105 if ( $needsUpdate ) {
106 // Update settings.
107 self::setSettings( $settings );
108 }
109 }
110
111 /**
112 * Migration for version upto 1.5.0
113 *
114 * @return void
115 */
116 protected static function migrateUpTo_150() {
117 $settings = self::getSettings();
118
119 if ( is_array( $settings ) && array_key_exists( 'enforcment-policy', $settings ) ) {
120 // Correct setting name.
121 $settings['enforcement-policy'] = $settings['enforcment-policy'];
122 // Remove old setting.
123 unset( $settings['enforcment-policy'] );
124 // Update settings.
125 self::setSettings( $settings );
126 }
127 }
128
129 /**
130 * Returns the current plugin settings
131 *
132 * @return void
133 */
134 private static function getSettings() {
135 return get_site_option( self::$pluginSettingsName );
136 }
137
138 /**
139 * Updates the plugin settings
140 *
141 * @param mixed $settings
142 *
143 * @return void
144 */
145 private static function setSettings( $settings ) {
146 update_site_option( self::$pluginSettingsName, $settings );
147 }
148 }
149 }
150