PluginProbe ʕ •ᴥ•ʔ
WP 2FA – Two-factor authentication for WordPress / 1.7.0
WP 2FA – Two-factor authentication for WordPress v1.7.0
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 SettingsUtils.php 5 years ago UserUtils.php 5 years ago index.php 5 years ago
Migration.php
189 lines
1 <?php
2 namespace WP2FA\Utils;
3
4 use \WP2FA\Utils\UserUtils as UserUtils;
5 use WP2FA\Utils\SettingsUtils as SettingsUtils;
6
7 defined( 'ABSPATH' ) || exit; // Exit if accessed directly
8
9 /**
10 * Migration class
11 */
12 if ( ! class_exists( '\WP2FA\Utils\Migration' ) ) {
13
14 /**
15 * Put all you migration methods here
16 *
17 * @package WP2FA\Utils
18 * @since 1.6
19 */
20 class Migration extends AbstractMigration {
21
22 /**
23 * The name of the option from which we should extact version
24 * Note: version is expected in version format - 1.0.0; 1; 1.0; 1.0.0.0
25 * Note: only numbers will be processed
26 */
27 protected static $versionOptionName = WP_2FA_PREFIX . 'plugin_version';
28
29 /**
30 * The constant name where the plugin version is stored
31 * Note: version is expected in version format - 1.0.0; 1; 1.0; 1.0.0.0
32 * Note: only numbers will be processed
33 */
34 protected static $constNameOfPluginVersion = 'WP_2FA_VERSION';
35
36 /**
37 * The name of the plugin settings
38 *
39 * @var string
40 */
41 private static $pluginSettingsName = WP_2FA_SETTINGS_NAME;
42
43 /**
44 * The name of the plugin email settings
45 *
46 * @var string
47 */
48 private static $pluginEmailSettingsName = WP_2FA_EMAIL_SETTINGS_NAME;
49
50 /**
51 * Migration for version upto 1.6.0
52 *
53 * @return void
54 * @since 1.6.0
55 */
56 protected static function migrateUpTo_160() {
57 $settings = self::getSettings( self::$pluginSettingsName );
58 if ( ! is_array( $settings ) ) {
59 return;
60 }
61
62 $needsUpdate = false;
63
64 $settings_to_convert = [ 'enforced_roles', 'enforced_users', 'excluded_users', 'excluded_roles' ];
65 foreach ( $settings_to_convert as $setting_name ) {
66 if ( array_key_exists( $setting_name, $settings ) && ! is_array( $settings[ $setting_name ] ) ) {
67 $settings[ $setting_name ] = array_filter(
68 explode( ',', $settings[ $setting_name ] )
69 );
70 $needsUpdate = true;
71 }
72 }
73
74 if ( ! isset( $settings['backup_codes_enabled'] ) ) {
75 $settings['backup_codes_enabled'] = 'yes';
76 $needsUpdate = true;
77 }
78
79 if ( $needsUpdate ) {
80 // Update settings.
81 self::setSettings( self::$pluginSettingsName, $settings );
82 }
83 }
84
85 /**
86 * Migration for version upto 1.6.2
87 *
88 * @return void
89 * @since 1.6.2
90 */
91 protected static function migrateUpTo_162() {
92 $settings = self::getSettings( self::$pluginSettingsName );
93 if ( ! is_array( $settings ) ) {
94 return;
95 }
96
97 $needsUpdate = false;
98
99 $settings_to_convert = [ 'excluded_sites' ];
100 foreach ( $settings_to_convert as $setting_name ) {
101 if ( array_key_exists( $setting_name, $settings ) && ! is_array( $settings[ $setting_name ] ) ) {
102 $originalSettingsSplit = array_filter(
103 explode( ',', $settings[ $setting_name ] )
104 );
105 $settings[ $setting_name ] = [];
106 foreach ( $originalSettingsSplit as $value ) {
107 $settings[ $setting_name ][] = mb_substr( $value, mb_strrpos( $value, ':' ) + 1 );
108 }
109 $needsUpdate = true;
110 }
111 }
112
113 self::migrateUpTo_160();
114
115 if ( $needsUpdate ) {
116 // Update settings.
117 self::setSettings( self::$pluginSettingsName, $settings );
118 }
119 }
120
121 /**
122 * Migration for version upto 1.5.0
123 *
124 * @return void
125 */
126 protected static function migrateUpTo_150() {
127 $settings = self::getSettings( self::$pluginSettingsName );
128
129 if ( is_array( $settings ) && array_key_exists( 'enforcment-policy', $settings ) ) {
130 // Correct setting name.
131 $settings['enforcement-policy'] = $settings['enforcment-policy'];
132 // Remove old setting.
133 unset( $settings['enforcment-policy'] );
134 // Update settings.
135 self::setSettings( self::$pluginSettingsName, $settings );
136 }
137 }
138
139 /**
140 * Migration for version upto 1.7.0
141 *
142 * @return void
143 */
144 protected static function migrateUpTo_170() {
145 $settings = self::getSettings( self::$pluginSettingsName );
146
147 if ( is_array( $settings ) && array_key_exists( 'notify_users', $settings ) ) {
148 // Remove old setting.
149 unset( $settings['notify_users'] );
150 // Update settings.
151 self::setSettings( self::$pluginSettingsName, $settings );
152 }
153
154 $email_settings = self::getSettings( self::$pluginEmailSettingsName );
155 $items_to_remove = [ 'send_enforced_email', 'enforced_email_subject', 'enforced_email_body' ];
156
157 if ( is_array( $email_settings ) && UserUtils::in_array_all( $items_to_remove, $user_type ) ) {
158 foreach ( $items_to_remove as $item ) {
159 if ( isset( $email_settings[ $item ] ) ) {
160 unset( $email_settings[ $item ] );
161 }
162 }
163 // Update settings.
164 self::setSettings( self::$pluginEmailSettingsName, $email_settings );
165 }
166 }
167
168 /**
169 * Returns the current plugin settings
170 *
171 * @return void
172 */
173 private static function getSettings( $setting_name ) {
174 return SettingsUtils::get_option( $setting_name );
175 }
176
177 /**
178 * Updates the plugin settings
179 *
180 * @param mixed $settings
181 *
182 * @return void
183 */
184 private static function setSettings( $setting_name, $settings ) {
185 SettingsUtils::update_option( $setting_name, $settings );
186 }
187 }
188 }
189