Move Login - Version 2.4.3

Version Description

  • 2017/03/26
  • Fixed an error preventing the plugin uninstallation. My diabolical plan to be on every website has been discovered
  • Updated some translations to exclude non-translatable strings and as many HTML tags as possible.
  • Use WP_Filesystem_Direct to write files.
Download this release

Release Info

Developer GregLone
Plugin Icon 128x128 Move Login
Version 2.4.3
Comparing to
See all releases

Code changes from version 2.4.2 to 2.4.3

inc/activate.php CHANGED
@@ -49,7 +49,8 @@ function sfml_activate() {
49
  sfml_lang_init();
50
 
51
  $dies = array_filter( array_map( 'sfml_notice_message', $dies ) );
52
- $dies = __( '<strong>Move Login</strong> has not been activated.', 'sf-move-login' ) . '<br/>' . implode( '<br/>', $dies );
 
53
 
54
  wp_die( $dies, __( 'Error', 'sf-move-login' ), array( 'back_link' => true ) );
55
  }
@@ -111,13 +112,16 @@ function sfml_notice_message( $message_id ) {
111
  $link = '<a href="' . esc_url( is_multisite() ? network_admin_url( 'settings.php?page=move-login' ) : admin_url( 'options-general.php?page=move-login' ) ) . '">Move Login</a>';
112
 
113
  $messages = array(
114
- 'error_no_request_uri' => __( 'It seems your server configuration prevent the plugin to work properly. <strong>Move Login</strong> won\'t work.', 'sf-move-login' ),
115
- 'error_no_mod_rewrite' => __( 'It seems the url rewrite module is not activated on your server. <strong>Move Login</strong> won\'t work.', 'sf-move-login' ),
116
- 'error_unknown_server_conf' => __( 'It seems your server does not use <i>Apache</i>, <i>Nginx</i>, nor <i>IIS7</i>. <strong>Move Login</strong> won\'t work.', 'sf-move-login' ),
117
- /** Translators: 1 is a file name, 2 is a "Move Login" link. */
118
- 'error_file_not_writable' => sprintf( __( '<strong>Move Login</strong> needs access to the %1$s file. Please visit the %2$s settings page and copy/paste the given code into the %1$s file.', 'sf-move-login' ), $file, $link ),
119
- /** Translators: %s is a "Move Login" link. */
120
- 'updated_is_nginx' => sprintf( __( 'It seems your server uses a <i>Nginx</i> system. You have to edit the rewrite rules by yourself in the configuration file. Please visit the %s settings page and take a look at the rewrite rules. <strong>Move Login</strong> is running but won\'t work correctly until you deal with those rewrite rules.', 'sf-move-login' ), $link ),
 
 
 
121
  );
122
  }
123
 
49
  sfml_lang_init();
50
 
51
  $dies = array_filter( array_map( 'sfml_notice_message', $dies ) );
52
+ /** Translators: 1 is the plugin name. */
53
+ $dies = sprintf( __( '%s has not been activated.', 'sf-move-login' ), '<strong>Move Login</strong>' ) . '<br/>' . implode( '<br/>', $dies );
54
 
55
  wp_die( $dies, __( 'Error', 'sf-move-login' ), array( 'back_link' => true ) );
56
  }
112
  $link = '<a href="' . esc_url( is_multisite() ? network_admin_url( 'settings.php?page=move-login' ) : admin_url( 'options-general.php?page=move-login' ) ) . '">Move Login</a>';
113
 
114
  $messages = array(
115
+ /** Translators: 1 is the plugin name. */
116
+ 'error_no_request_uri' => sprintf( __( 'It seems your server configuration prevents the plugin to work properly. %s won\'t work.', 'sf-move-login' ), '<strong>Move Login</strong>' ),
117
+ /** Translators: 1 is the plugin name. */
118
+ 'error_no_mod_rewrite' => sprintf( __( 'It seems the url rewrite module is not activated on your server. %s won\'t work.', 'sf-move-login' ), '<strong>Move Login</strong>' ),
119
+ /** Translators: 1, 2, and 3 are server technologies (Apache, Nginx, IIS7), 4 is the plugin name. */
120
+ 'error_unknown_server_conf' => sprintf( __( 'It seems your server does not use %1$s, %2$s, nor %3$s. %4$s won\'t work.', 'sf-move-login' ), '<i>Apache</i>', '<i>Nginx</i>', '<i>IIS7</i>', '<strong>Move Login</strong>' ),
121
+ /** Translators: 1 is the plugin name, 2 is a file name, 3 is a "Move Login" link. */
122
+ 'error_file_not_writable' => sprintf( __( '%1$s needs access to the %2$s file. Please visit the %3$s settings page and copy/paste the given code into the %2$s file.', 'sf-move-login' ), '<strong>Move Login</strong>', $file, $link ),
123
+ /** Translators: 1 is a server technology (Nginx), 2 is a "Move Login" link, 3 is the plugin name. */
124
+ 'updated_is_nginx' => sprintf( __( 'It seems your server uses a %1$ system. You have to edit the rewrite rules by yourself in the configuration file. Please visit the %2$s settings page and take a look at the rewrite rules. %3$s is running but won\'t work correctly until you deal with those rewrite rules.', 'sf-move-login' ), '<i>Nginx</i>', $link, '<strong>Move Login</strong>' ),
125
  );
126
  }
127
 
inc/functions/rewrite.php CHANGED
@@ -221,6 +221,37 @@ function sfml_get_rewrite_bases() {
221
  }
222
 
223
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  /*------------------------------------------------------------------------------------------------*/
225
  /* !NGINX ======================================================================================= */
226
  /*------------------------------------------------------------------------------------------------*/
@@ -331,7 +362,8 @@ function sfml_insert_apache_rewrite_rules( $rules = array() ) {
331
  }
332
 
333
  // Update the `.htaccess` file.
334
- return (bool) file_put_contents( $htaccess_file , $content );
 
335
  }
336
 
337
 
@@ -389,7 +421,8 @@ function sfml_insert_iis7_rewrite_rules( $rules = array() ) {
389
  }
390
 
391
  $web_config_file = sfml_get_home_path() . 'web.config';
392
- $has_web_config = file_exists( $web_config_file );
 
393
 
394
  if ( ! $rules ) {
395
  // We want to remove the rules.
@@ -398,9 +431,7 @@ function sfml_insert_iis7_rewrite_rules( $rules = array() ) {
398
  return true;
399
  }
400
 
401
- $web_config_is_writable = $has_web_config && wp_is_writable( $web_config_file );
402
-
403
- if ( ! $web_config_is_writable ) {
404
  // The file is not writable.
405
  return false;
406
  }
@@ -412,9 +443,7 @@ function sfml_insert_iis7_rewrite_rules( $rules = array() ) {
412
 
413
  // If configuration file does not exist then we create one.
414
  if ( ! $has_web_config ) {
415
- $fp = fopen( $web_config_file, 'w' );
416
- fwrite( $fp, '<configuration/>' );
417
- fclose( $fp );
418
  }
419
 
420
  $doc = new DOMDocument();
@@ -437,7 +466,7 @@ function sfml_insert_iis7_rewrite_rules( $rules = array() ) {
437
  }
438
  }
439
 
440
- // No new rules?
441
  if ( ! $rules ) {
442
  $doc->formatOutput = true;
443
  saveDomDocument( $doc, $web_config_file );
221
  }
222
 
223
 
224
+ /**
225
+ * Get WP Direct filesystem object. Also define chmod constants if not done yet.
226
+ *
227
+ * @since 2.4.3
228
+ *
229
+ * @return (object) A WP_Filesystem_Direct object.
230
+ */
231
+ function sfml_get_filesystem() {
232
+ static $filesystem;
233
+
234
+ if ( $filesystem ) {
235
+ return $filesystem;
236
+ }
237
+
238
+ require_once( ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php' );
239
+ require_once( ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php' );
240
+
241
+ $filesystem = new WP_Filesystem_Direct( new StdClass() ); // WPCS: override ok.
242
+
243
+ // Set the permission constants if not already set.
244
+ if ( ! defined( 'FS_CHMOD_DIR' ) ) {
245
+ define( 'FS_CHMOD_DIR', ( fileperms( ABSPATH ) & 0777 | 0755 ) );
246
+ }
247
+ if ( ! defined( 'FS_CHMOD_FILE' ) ) {
248
+ define( 'FS_CHMOD_FILE', ( fileperms( ABSPATH . 'index.php' ) & 0777 | 0644 ) );
249
+ }
250
+
251
+ return $filesystem;
252
+ }
253
+
254
+
255
  /*------------------------------------------------------------------------------------------------*/
256
  /* !NGINX ======================================================================================= */
257
  /*------------------------------------------------------------------------------------------------*/
362
  }
363
 
364
  // Update the `.htaccess` file.
365
+ $filesystem = sfml_get_filesystem();
366
+ return (bool) $filesystem->put_contents( $htaccess_file , $content );
367
  }
368
 
369
 
421
  }
422
 
423
  $web_config_file = sfml_get_home_path() . 'web.config';
424
+ $filesystem = sfml_get_filesystem();
425
+ $has_web_config = $filesystem->exists( $web_config_file );
426
 
427
  if ( ! $rules ) {
428
  // We want to remove the rules.
431
  return true;
432
  }
433
 
434
+ if ( ! wp_is_writable( $web_config_file ) ) {
 
 
435
  // The file is not writable.
436
  return false;
437
  }
443
 
444
  // If configuration file does not exist then we create one.
445
  if ( ! $has_web_config ) {
446
+ $filesystem->put_contents( $web_config_file, '<configuration/>' );
 
 
447
  }
448
 
449
  $doc = new DOMDocument();
466
  }
467
  }
468
 
469
+ // No new rules? Stop here.
470
  if ( ! $rules ) {
471
  $doc->formatOutput = true;
472
  saveDomDocument( $doc, $web_config_file );
languages/sf-move-login-fr_FR.mo CHANGED
Binary file
languages/sf-move-login-fr_FR.po CHANGED
@@ -2,10 +2,10 @@
2
  #
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Move Login 2.4\n"
6
  "Report-Msgid-Bugs-To: Grégory Viguier <i18n@screenfeed.fr>\n"
7
- "POT-Creation-Date: 2017-01-02 23:19+0100\n"
8
- "PO-Revision-Date: 2017-01-02 23:50+0100\n"
9
  "Last-Translator: WP Media <contact@secupress.me>\n"
10
  "Language-Team: French (France)\n"
11
  "Language: fr_FR\n"
@@ -13,7 +13,7 @@ msgstr ""
13
  "Content-Type: text/plain; charset=utf-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "Plural-Forms: nplurals=2; plural=(n > 1);\n"
16
- "X-Generator: Poedit 1.8.11\n"
17
  "X-Poedit-Basepath: ..\n"
18
  "X-Poedit-KeywordsList: _x:1,2c;__;_e;_ex:1,2c;_n:1,2;_nx:1,2;esc_html__;"
19
  "esc_html_e;_n_noop:1,2\n"
@@ -21,66 +21,70 @@ msgstr ""
21
  "X-Textdomain-Support: yes\n"
22
  "X-Poedit-SearchPath-0: .\n"
23
 
24
- #: inc/activate.php:52
25
- msgid "<strong>Move Login</strong> has not been activated."
26
- msgstr "<strong>Move Login</strong> n&rsquo;a pas été activé."
 
 
27
 
28
- #: inc/activate.php:54
29
  msgid "Error"
30
  msgstr "Erreur"
31
 
32
- #: inc/activate.php:114
 
 
33
  msgid ""
34
- "It seems your server configuration prevent the plugin to work properly. "
35
- "<strong>Move Login</strong> won't work."
36
  msgstr ""
37
  "Il semble que votre configuration serveur empêche l&rsquo;extension de "
38
- "fonctionner correctement. <strong>Move Login</strong> ne pourra pas "
39
- "fonctionner."
40
 
41
- #: inc/activate.php:115
 
 
42
  msgid ""
43
- "It seems the url rewrite module is not activated on your server. "
44
- "<strong>Move Login</strong> won't work."
45
  msgstr ""
46
  "Il semble que le module de réécriture d&rsquo;url n&rsquo;est pas activé sur "
47
- "votre serveur. <strong>Move Login</strong> ne pourra pas fonctionner."
48
 
49
- #: inc/activate.php:116
 
 
50
  msgid ""
51
- "It seems your server does not use <i>Apache</i>, <i>Nginx</i>, nor <i>IIS7</"
52
- "i>. <strong>Move Login</strong> won't work."
53
  msgstr ""
54
- "Il semble que votre serveur n&rsquo;utilise ni <i>Apache</i>, <i>Nginx</i>, "
55
- "ou <i>IIS7</i>. <strong>Move Login</strong> ne pourra pas fonctionner."
56
 
57
- #. Translators: 1 is a file name, 2 is a "Move Login" link.
58
- #: inc/activate.php:118
59
  #, php-format
60
  msgid ""
61
- "<strong>Move Login</strong> needs access to the %1$s file. Please visit the "
62
- "%2$s settings page and copy/paste the given code into the %1$s file."
63
  msgstr ""
64
- "<strong>Move Login</strong> a besoin d&rsquo;accéder au fichier %1$s. "
65
- "Veuillez vous rendre sur la page de réglages de %2$s et veuillez copier/"
66
- "coller le code fourni dans le fichier %1$s."
67
 
68
- #. Translators: %s is a "Move Login" link.
69
- #: inc/activate.php:120
70
  #, php-format
71
  msgid ""
72
- "It seems your server uses a <i>Nginx</i> system. You have to edit the "
73
- "rewrite rules by yourself in the configuration file. Please visit the %s "
74
- "settings page and take a look at the rewrite rules. <strong>Move Login</"
75
- "strong> is running but won't work correctly until you deal with those "
76
- "rewrite rules."
77
  msgstr ""
78
- "Il semble que votre serveur utilise un système <i>Nginx</i>. Vous devez "
79
- "éditer les règles de réécriture par vous-même dans le fichier de "
80
- "configuration. Veuillez vous rendre sur la page de réglages de %s et jetez "
81
- "un œil aux règles de réécriture. <strong>Move Login</strong> fonctionne mais "
82
- "ne pourra pas le faire correctement tant que vous ne vous serez pas occupé "
83
- "de ces règles."
84
 
85
  #. Translators: %s is an URL slug name.
86
  #: inc/classes/class-sfml-options.php:389
@@ -200,6 +204,13 @@ msgstr "Raté :)"
200
  msgid "Change your login URL."
201
  msgstr "Changez l&rsquo;url de votre page de connexion."
202
 
 
 
 
 
 
 
 
203
  #~ msgid ""
204
  #~ "Change your login URL for something like <code>http://example.com/login</"
205
  #~ "code> and stop login brute force attempts."
2
  #
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Move Login 2.4.3\n"
6
  "Report-Msgid-Bugs-To: Grégory Viguier <i18n@screenfeed.fr>\n"
7
+ "POT-Creation-Date: 2017-03-26 16:55+0200\n"
8
+ "PO-Revision-Date: 2017-03-26 17:02+0200\n"
9
  "Last-Translator: WP Media <contact@secupress.me>\n"
10
  "Language-Team: French (France)\n"
11
  "Language: fr_FR\n"
13
  "Content-Type: text/plain; charset=utf-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "Plural-Forms: nplurals=2; plural=(n > 1);\n"
16
+ "X-Generator: Poedit 1.8.12\n"
17
  "X-Poedit-Basepath: ..\n"
18
  "X-Poedit-KeywordsList: _x:1,2c;__;_e;_ex:1,2c;_n:1,2;_nx:1,2;esc_html__;"
19
  "esc_html_e;_n_noop:1,2\n"
21
  "X-Textdomain-Support: yes\n"
22
  "X-Poedit-SearchPath-0: .\n"
23
 
24
+ #. Translators: 1 is the plugin name.
25
+ #: inc/activate.php:53
26
+ #, php-format
27
+ msgid "%s has not been activated."
28
+ msgstr "%s n&rsquo;a pas été activé."
29
 
30
+ #: inc/activate.php:55
31
  msgid "Error"
32
  msgstr "Erreur"
33
 
34
+ #. Translators: 1 is the plugin name.
35
+ #: inc/activate.php:116
36
+ #, php-format
37
  msgid ""
38
+ "It seems your server configuration prevents the plugin to work properly. %s "
39
+ "won't work."
40
  msgstr ""
41
  "Il semble que votre configuration serveur empêche l&rsquo;extension de "
42
+ "fonctionner correctement. %s ne pourra pas fonctionner."
 
43
 
44
+ #. Translators: 1 is the plugin name.
45
+ #: inc/activate.php:118
46
+ #, php-format
47
  msgid ""
48
+ "It seems the url rewrite module is not activated on your server. %s won't "
49
+ "work."
50
  msgstr ""
51
  "Il semble que le module de réécriture d&rsquo;url n&rsquo;est pas activé sur "
52
+ "votre serveur. %s ne pourra pas fonctionner."
53
 
54
+ #. Translators: 1, 2, and 3 are server technologies (Apache, Nginx, IIS7), 4 is the plugin name.
55
+ #: inc/activate.php:120
56
+ #, php-format
57
  msgid ""
58
+ "It seems your server does not use %1$s, %2$s, nor %3$s. %4$s won't work."
 
59
  msgstr ""
60
+ "Il semble que votre serveur n&rsquo;utilise ni %1$s, %2$s, ou %3$s. %4$s ne "
61
+ "pourra pas fonctionner."
62
 
63
+ #. Translators: 1 is the plugin name, 2 is a file name, 3 is a "Move Login" link.
64
+ #: inc/activate.php:122
65
  #, php-format
66
  msgid ""
67
+ "%1$s needs access to the %2$s file. Please visit the %3$s settings page and "
68
+ "copy/paste the given code into the %2$s file."
69
  msgstr ""
70
+ "%1$s a besoin d&rsquo;accéder au fichier %2$s. Veuillez vous rendre sur la "
71
+ "page de réglages de %3$s et veuillez copier/coller le code fourni dans le "
72
+ "fichier %2$s."
73
 
74
+ #. Translators: 1 is a server technology (Nginx), 2 is a "Move Login" link, 3 is the plugin name.
75
+ #: inc/activate.php:124
76
  #, php-format
77
  msgid ""
78
+ "It seems your server uses a %1$ system. You have to edit the rewrite rules "
79
+ "by yourself in the configuration file. Please visit the %2$s settings page "
80
+ "and take a look at the rewrite rules. %3$s is running but won't work "
81
+ "correctly until you deal with those rewrite rules."
 
82
  msgstr ""
83
+ "Il semble que votre serveur utilise un système %1$s. Vous devez éditer les "
84
+ "règles de réécriture par vous-même dans le fichier de configuration. "
85
+ "Veuillez vous rendre sur la page de réglages de %2$s et jetez un œil aux "
86
+ "règles de réécriture. %3$s fonctionne mais ne pourra pas le faire "
87
+ "correctement tant que vous ne vous serez pas occupé de ces règles."
 
88
 
89
  #. Translators: %s is an URL slug name.
90
  #: inc/classes/class-sfml-options.php:389
204
  msgid "Change your login URL."
205
  msgstr "Changez l&rsquo;url de votre page de connexion."
206
 
207
+ #~ msgid ""
208
+ #~ "It seems your server does not use <i>Apache</i>, <i>Nginx</i>, nor "
209
+ #~ "<i>IIS7</i>. <strong>Move Login</strong> won't work."
210
+ #~ msgstr ""
211
+ #~ "Il semble que votre serveur n&rsquo;utilise ni <i>Apache</i>, <i>Nginx</"
212
+ #~ "i>, ou <i>IIS7</i>. <strong>Move Login</strong> ne pourra pas fonctionner."
213
+
214
  #~ msgid ""
215
  #~ "Change your login URL for something like <code>http://example.com/login</"
216
  #~ "code> and stop login brute force attempts."
phpcs.xml ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <ruleset name="Move Login">
3
+ <description>WordPress plugin that allows to change the login URL.</description>
4
+
5
+ <arg name="extensions" value="php"/>
6
+
7
+ <file>.</file>
8
+
9
+ <rule ref="WordPress">
10
+ <!-- https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards -->
11
+ <exclude name="Squiz.PHP.CommentedOutCode.Found"/>
12
+ <exclude name="Generic.PHP.NoSilencedErrors.Discouraged"/>
13
+ <exclude name="Squiz.Commenting.BlockComment.NoNewLine"/>
14
+ <exclude name="Squiz.Commenting.FileComment.Missing"/>
15
+ <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseBrace"/>
16
+ <exclude name="WordPress.VIP.AdminBarRemoval"/>
17
+ <exclude name="WordPress.VIP.CronInterval.ChangeDetected"/>
18
+ <exclude name="WordPress.VIP.DirectDatabaseQuery.DirectQuery"/>
19
+ <exclude name="WordPress.VIP.DirectDatabaseQuery.NoCaching"/>
20
+ <exclude name="WordPress.VIP.OrderByRand"/>
21
+ <exclude name="WordPress.VIP.PostsPerPage.posts_per_page"/>
22
+ <exclude name="WordPress.VIP.RestrictedFunctions"/>
23
+ <exclude name="WordPress.VIP.RestrictedFunctions.urlencode"/>
24
+ <exclude name="WordPress.VIP.RestrictedFunctions.wp_redirect"/>
25
+ <exclude name="WordPress.VIP.RestrictedVariables.cache_constraints"/>
26
+ <exclude name="WordPress.VIP.RestrictedVariables.user_meta"/>
27
+ <exclude name="WordPress.VIP.SlowDBQuery.slow_db_query"/>
28
+ <exclude name="WordPress.VIP.SuperGlobalInputUsage.AccessDetected"/>
29
+ <exclude name="WordPress.VIP.TimezoneChange"/>
30
+ <exclude name="WordPress.VIP.ValidatedSanitizedInput"/>
31
+ <exclude name="WordPress.XSS.EscapeOutput.OutputNotEscaped"/>
32
+ </rule>
33
+
34
+ <rule ref="Squiz.Commenting.FileComment.MissingPackageTag">
35
+ <exclude-pattern>sf-move-login.php</exclude-pattern>
36
+ </rule>
37
+
38
+ <rule ref="WordPress.NamingConventions.ValidVariableName.NotSnakeCaseMemberVar">
39
+ <exclude-pattern>inc/functions/rewrite.php</exclude-pattern>
40
+ </rule>
41
+ </ruleset>
readme.txt CHANGED
@@ -3,7 +3,7 @@
3
  Contributors: GregLone, SecuPress, juliobox
4
  Tags: login, logout, url, security
5
  Requires at least: 3.1
6
- Tested up to: 4.7.2
7
  Stable tag: trunk
8
  License: GPLv3
9
  License URI: https://www.screenfeed.fr/gpl-v3.txt
@@ -20,13 +20,6 @@ Also remember: the use of this plugin does NOT exempt you to use a strong passwo
20
 
21
  By the way, if you are looking for a complete security solution, take a look at [SecuPress](https://wordpress.org/plugins/secupress/): Move Login is included inside.
22
 
23
- = Translations =
24
-
25
- * US English
26
- * French
27
- * Serbo-Croatian (partial, thank you Borisa)
28
- * Hebrew (partial, thank you Ahrale)
29
-
30
  = Multisite =
31
 
32
  Yes! The plugin must be activated from your network.
@@ -35,7 +28,7 @@ Yes! The plugin must be activated from your network.
35
 
36
  = Requirements =
37
 
38
- * **PHP 5.3 at least**.
39
  * You will need a FTP access: if the `.htaccess`/`web.config` file is not writable (you will need to add the given rules manually), or if something is wrong and you can't log in anymore (see the FAQ in that case).
40
  * Should work on IIS7+ servers but not tested (I guess you should probably save a copy of your `web.config` file before the plugin activation).
41
  * For Nginx servers, the rewrite rules are not written automatically of course, but they are provided as information in the plugin settings page.
@@ -74,6 +67,13 @@ Eventually, try the [WordPress support forum](https://wordpress.org/support/plug
74
 
75
  == Changelog ==
76
 
 
 
 
 
 
 
 
77
  = 2.4.2 =
78
 
79
  * 2017/02/04
3
  Contributors: GregLone, SecuPress, juliobox
4
  Tags: login, logout, url, security
5
  Requires at least: 3.1
6
+ Tested up to: 4.7.3
7
  Stable tag: trunk
8
  License: GPLv3
9
  License URI: https://www.screenfeed.fr/gpl-v3.txt
20
 
21
  By the way, if you are looking for a complete security solution, take a look at [SecuPress](https://wordpress.org/plugins/secupress/): Move Login is included inside.
22
 
 
 
 
 
 
 
 
23
  = Multisite =
24
 
25
  Yes! The plugin must be activated from your network.
28
 
29
  = Requirements =
30
 
31
+ * **As of version 2.4, at least PHP 5.3 is required**.
32
  * You will need a FTP access: if the `.htaccess`/`web.config` file is not writable (you will need to add the given rules manually), or if something is wrong and you can't log in anymore (see the FAQ in that case).
33
  * Should work on IIS7+ servers but not tested (I guess you should probably save a copy of your `web.config` file before the plugin activation).
34
  * For Nginx servers, the rewrite rules are not written automatically of course, but they are provided as information in the plugin settings page.
67
 
68
  == Changelog ==
69
 
70
+ = 2.4.3 =
71
+
72
+ * 2017/03/26
73
+ * Fixed an error preventing the plugin uninstallation. My diabolical plan to be on every website has been discovered 👿
74
+ * Updated some translations to exclude non-translatable strings and as many HTML tags as possible.
75
+ * Use `WP_Filesystem_Direct` to write files.
76
+
77
  = 2.4.2 =
78
 
79
  * 2017/02/04
sf-move-login.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: SF Move Login
4
  * Plugin URI: https://www.screenfeed.fr/plugin-wp/move-login/
5
  * Description: Change your login URL.
6
- * Version: 2.4.2
7
  * Author: Grégory Viguier
8
  * Author URI: https://www.screenfeed.fr/
9
  * License: GPLv3
@@ -25,7 +25,7 @@ if ( empty( $GLOBALS['wp_version'] ) || version_compare( $GLOBALS['wp_version'],
25
  /* !CONSTANTS =================================================================================== */
26
  /*------------------------------------------------------------------------------------------------*/
27
 
28
- define( 'SFML_VERSION', '2.4.2' );
29
  define( 'SFML_FILE', __FILE__ );
30
  define( 'SFML_PLUGIN_BASENAME', plugin_basename( SFML_FILE ) );
31
  define( 'SFML_PLUGIN_DIR', plugin_dir_path( SFML_FILE ) );
3
  * Plugin Name: SF Move Login
4
  * Plugin URI: https://www.screenfeed.fr/plugin-wp/move-login/
5
  * Description: Change your login URL.
6
+ * Version: 2.4.3
7
  * Author: Grégory Viguier
8
  * Author URI: https://www.screenfeed.fr/
9
  * License: GPLv3
25
  /* !CONSTANTS =================================================================================== */
26
  /*------------------------------------------------------------------------------------------------*/
27
 
28
+ define( 'SFML_VERSION', '2.4.3' );
29
  define( 'SFML_FILE', __FILE__ );
30
  define( 'SFML_PLUGIN_BASENAME', plugin_basename( SFML_FILE ) );
31
  define( 'SFML_PLUGIN_DIR', plugin_dir_path( SFML_FILE ) );
uninstall.php CHANGED
@@ -4,7 +4,8 @@ if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
4
  }
5
 
6
 
7
- include_once( plugin_dir_path( __FILE__ ) . 'inc/class-sfml-options.php' );
 
8
 
9
  delete_site_option( 'sfml_version' );
10
  delete_site_option( SFML_Options::OPTION_NAME );
4
  }
5
 
6
 
7
+ include_once( plugin_dir_path( __FILE__ ) . 'inc/classes/class-sfml-singleton.php' );
8
+ include_once( plugin_dir_path( __FILE__ ) . 'inc/classes/class-sfml-options.php' );
9
 
10
  delete_site_option( 'sfml_version' );
11
  delete_site_option( SFML_Options::OPTION_NAME );