Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/simple-custom-login-page/admin/class-simple-custom-login-page-admin.php
+++ b/simple-custom-login-page/admin/class-simple-custom-login-page-admin.php
@@ -1,265 +1,265 @@
-<?php
-/**
- * The admin-specific functionality of the plugin.
- *
- * @link https://profiles.wordpress.org/pattihis/
- * @since 1.0.0
- *
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/admin
- */
-
-// If this file is called directly, abort.
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-/**
- * The admin-specific functionality of the plugin.
- *
- * Defines the plugin name, version, and hooks to
- * enqueue the admin-specific stylesheet and JavaScript.
- *
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/admin
- * @author George Pattichis <gpattihis@gmail.com>
- */
-class Simple_Custom_Login_Page_Admin {
-
- /**
- * The ID of this plugin.
- *
- * @since 1.0.0
- * @access private
- * @var string $plugin_name The ID of this plugin.
- */
- private $plugin_name;
-
- /**
- * The version of this plugin.
- *
- * @since 1.0.0
- * @access private
- * @var string $version The current version of this plugin.
- */
- private $version;
-
- /**
- * Initialize the class and set its properties.
- *
- * @since 1.0.0
- * @param string $plugin_name The name of this plugin.
- * @param string $version The version of this plugin.
- */
- public function __construct( $plugin_name, $version ) {
-
- $this->plugin_name = $plugin_name;
- $this->version = $version;
- }
-
- /**
- * Register the stylesheets for the admin area.
- *
- * @since 1.0.0
- */
- public function enqueue_styles() {
-
- wp_enqueue_style( 'wp-color-picker' );
- wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/simple-custom-login-page-admin.css', array(), $this->version, 'all' );
- }
-
- /**
- * Register the JavaScript for the admin area.
- *
- * @since 1.0.0
- */
- public function enqueue_scripts() {
-
- wp_enqueue_media();
- wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/simple-custom-login-page-admin.js', array( 'jquery', 'wp-color-picker' ), $this->version, false );
- }
-
- /**
- * Register the admin menu
- *
- * @since 1.0.0
- */
- public function simple_custom_login_page_admin_menu() {
-
- $page_title = __( 'Simple Custom Login Settings', 'simple-custom-login-page' );
- $menu_title = 'Simple Custom Login';
- $capability = 'manage_options';
- $menu_slug = 'simple-custom-login-page';
- $function = array( $this, 'simple_custom_login_page_admin_page' );
-
- add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function );
- }
-
- /**
- * Render the admin menu page content
- *
- * @since 1.0.0
- * @access public
- */
- public function simple_custom_login_page_admin_page() {
- include_once 'partials/simple-custom-login-page-admin-display.php';
- }
-
- /**
- * Show custom links in Plugins Page
- *
- * @since 1.0.0
- * @access public
- * @param array $links Default Links.
- * @param array $file Plugin's root filepath.
- * @return array Links list to display in plugins page.
- */
- public function simple_custom_login_page_plugin_links( $links, $file ) {
-
- if ( SCLP_BASENAME === $file ) {
- $scpt_links = '<a href="' . get_admin_url() . 'options-general.php?page=simple-custom-login-page" title="Plugin Options">' . __( 'Settings', 'simple-custom-login-page' ) . '</a>';
- $scpt_visit = '<a href="https://gp-web.dev/" title="Contact" target="_blank" >' . __( 'Contact', 'simple-custom-login-page' ) . '</a>';
- array_unshift( $links, $scpt_visit );
- array_unshift( $links, $scpt_links );
- }
-
- return $links;
- }
-
- /**
- * Register the settings
- *
- * @since 1.0.0
- * @access public
- */
- public function simple_custom_login_page_settings() {
-
- add_settings_section(
- 'simple_custom_login_page_main_section',
- 'Customize Your Admin Login Page',
- function () {
- esc_html_e( 'Use the options below to personalize the login page to your admin dashboard.', 'simple-custom-login-page' );
- },
- 'simple-custom-login-page'
- );
-
- add_settings_field(
- 'simple_custom_login_page_image',
- 'Logo Image',
- function () {
- $default = get_home_url() . '/wp-admin/images/wordpress-logo.svg';
- if ( get_option( 'simple_custom_login_page_image' ) ) {
- $img = get_option( 'simple_custom_login_page_image' );
- } else {
- $img = $default;
- }
- ?>
- <div class="sclp-image-selector">
- <img id="upload_image_preview" src='<?php echo esc_url( $img ); ?>' width='300' height='100' data-default="<?php echo esc_url( $default ); ?>">
- <button id="upload_image_button" class="button button-primary"><?php esc_html_e( 'Select Image', 'simple-custom-login-page' ); ?></button>
- <button id="reset_image_button" class="button button-secondary"><?php esc_html_e( 'Reset', 'simple-custom-login-page' ); ?></button>
- <input id="simple_custom_login_page_image" type="hidden" name="simple_custom_login_page_image" value=<?php echo esc_url( $img ); ?> />
- </div>
- <p class="sclp-info"><?php esc_html_e( 'Recommended dimensions width: 320px, height: 84px.', 'simple-custom-login-page' ); ?></p>
- <?php
- },
- 'simple-custom-login-page',
- 'simple_custom_login_page_main_section'
- );
- register_setting( 'simple-custom-login-page', 'simple_custom_login_page_image' );
-
- add_settings_field(
- 'simple_custom_login_page_url',
- 'Logo Link',
- function () {
- if ( get_option( 'simple_custom_login_page_url' ) ) {
- $url = get_option( 'simple_custom_login_page_url' );
- } else {
- $url = get_home_url();
- }
- ?>
- <input type="text" name="simple_custom_login_page_url" value="<?php echo esc_url( $url ); ?>">
- <?php
- },
- 'simple-custom-login-page',
- 'simple_custom_login_page_main_section'
- );
- register_setting( 'simple-custom-login-page', 'simple_custom_login_page_url' );
-
- add_settings_field(
- 'simple_custom_login_page_background',
- 'Page Background',
- function () {
- if ( get_option( 'simple_custom_login_page_background' ) ) {
- $color = get_option( 'simple_custom_login_page_background' );
- } else {
- $color = '#f0f0f1';
- }
-
- ?>
- <input type="text" name="simple_custom_login_page_background" id="simple_custom_login_page_background" value="<?php echo esc_html( $color ); ?>" data-default-color="#f0f0f1" />
- <?php
- },
- 'simple-custom-login-page',
- 'simple_custom_login_page_main_section'
- );
- register_setting( 'simple-custom-login-page', 'simple_custom_login_page_background' );
-
- add_settings_field(
- 'simple_custom_login_page_form_bg',
- 'Form Background',
- function () {
- if ( get_option( 'simple_custom_login_page_form_bg' ) ) {
- $color = get_option( 'simple_custom_login_page_form_bg' );
- } else {
- $color = '#ffffff';
- }
-
- ?>
- <input type="text" name="simple_custom_login_page_form_bg" id="simple_custom_login_page_form_bg" value="<?php echo esc_html( $color ); ?>" data-default-color="#ffffff" />
- <?php
- },
- 'simple-custom-login-page',
- 'simple_custom_login_page_main_section'
- );
- register_setting( 'simple-custom-login-page', 'simple_custom_login_page_form_bg' );
-
- add_settings_field(
- 'simple_custom_login_page_text_color',
- 'Text Color',
- function () {
- if ( get_option( 'simple_custom_login_page_text_color' ) ) {
- $color = get_option( 'simple_custom_login_page_text_color' );
- } else {
- $color = '#3c434a';
- }
-
- ?>
- <input type="text" name="simple_custom_login_page_text_color" id="simple_custom_login_page_text_color" value="<?php echo esc_html( $color ); ?>" data-default-color="#3c434a" />
- <?php
- },
- 'simple-custom-login-page',
- 'simple_custom_login_page_main_section'
- );
- register_setting( 'simple-custom-login-page', 'simple_custom_login_page_text_color' );
-
- add_settings_field(
- 'simple_custom_login_page_link_color',
- 'Link Color',
- function () {
- if ( get_option( 'simple_custom_login_page_link_color' ) ) {
- $color = get_option( 'simple_custom_login_page_link_color' );
- } else {
- $color = '#50575e';
- }
-
- ?>
- <input type="text" name="simple_custom_login_page_link_color" id="simple_custom_login_page_link_color" value="<?php echo esc_html( $color ); ?>" data-default-color="#50575e" />
- <?php
- },
- 'simple-custom-login-page',
- 'simple_custom_login_page_main_section'
- );
- register_setting( 'simple-custom-login-page', 'simple_custom_login_page_link_color' );
- }
-}
+<?php
+/**
+ * The admin-specific functionality of the plugin.
+ *
+ * @link https://profiles.wordpress.org/pattihis/
+ * @since 1.0.0
+ *
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/admin
+ */
+
+// If this file is called directly, abort.
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+/**
+ * The admin-specific functionality of the plugin.
+ *
+ * Defines the plugin name, version, and hooks to
+ * enqueue the admin-specific stylesheet and JavaScript.
+ *
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/admin
+ * @author George Pattichis <gpattihis@gmail.com>
+ */
+class Simple_Custom_Login_Page_Admin {
+
+ /**
+ * The ID of this plugin.
+ *
+ * @since 1.0.0
+ * @access private
+ * @var string $plugin_name The ID of this plugin.
+ */
+ private $plugin_name;
+
+ /**
+ * The version of this plugin.
+ *
+ * @since 1.0.0
+ * @access private
+ * @var string $version The current version of this plugin.
+ */
+ private $version;
+
+ /**
+ * Initialize the class and set its properties.
+ *
+ * @since 1.0.0
+ * @param string $plugin_name The name of this plugin.
+ * @param string $version The version of this plugin.
+ */
+ public function __construct( $plugin_name, $version ) {
+
+ $this->plugin_name = $plugin_name;
+ $this->version = $version;
+ }
+
+ /**
+ * Register the stylesheets for the admin area.
+ *
+ * @since 1.0.0
+ */
+ public function enqueue_styles() {
+
+ wp_enqueue_style( 'wp-color-picker' );
+ wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/simple-custom-login-page-admin.css', array(), $this->version, 'all' );
+ }
+
+ /**
+ * Register the JavaScript for the admin area.
+ *
+ * @since 1.0.0
+ */
+ public function enqueue_scripts() {
+
+ wp_enqueue_media();
+ wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/simple-custom-login-page-admin.js', array( 'jquery', 'wp-color-picker' ), $this->version, false );
+ }
+
+ /**
+ * Register the admin menu
+ *
+ * @since 1.0.0
+ */
+ public function simple_custom_login_page_admin_menu() {
+
+ $page_title = __( 'Simple Custom Login Settings', 'simple-custom-login-page' );
+ $menu_title = 'Simple Custom Login';
+ $capability = 'manage_options';
+ $menu_slug = 'simple-custom-login-page';
+ $function = array( $this, 'simple_custom_login_page_admin_page' );
+
+ add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function );
+ }
+
+ /**
+ * Render the admin menu page content
+ *
+ * @since 1.0.0
+ * @access public
+ */
+ public function simple_custom_login_page_admin_page() {
+ include_once 'partials/simple-custom-login-page-admin-display.php';
+ }
+
+ /**
+ * Show custom links in Plugins Page
+ *
+ * @since 1.0.0
+ * @access public
+ * @param array $links Default Links.
+ * @param array $file Plugin's root filepath.
+ * @return array Links list to display in plugins page.
+ */
+ public function simple_custom_login_page_plugin_links( $links, $file ) {
+
+ if ( SCLP_BASENAME === $file ) {
+ $scpt_links = '<a href="' . get_admin_url() . 'options-general.php?page=simple-custom-login-page" title="Plugin Options">' . __( 'Settings', 'simple-custom-login-page' ) . '</a>';
+ $scpt_visit = '<a href="https://gp-web.dev/" title="Contact" target="_blank" >' . __( 'Contact', 'simple-custom-login-page' ) . '</a>';
+ array_unshift( $links, $scpt_visit );
+ array_unshift( $links, $scpt_links );
+ }
+
+ return $links;
+ }
+
+ /**
+ * Register the settings
+ *
+ * @since 1.0.0
+ * @access public
+ */
+ public function simple_custom_login_page_settings() {
+
+ add_settings_section(
+ 'simple_custom_login_page_main_section',
+ 'Customize Your Admin Login Page',
+ function () {
+ esc_html_e( 'Use the options below to personalize the login page to your admin dashboard.', 'simple-custom-login-page' );
+ },
+ 'simple-custom-login-page'
+ );
+
+ add_settings_field(
+ 'simple_custom_login_page_image',
+ 'Logo Image',
+ function () {
+ $default = get_home_url() . '/wp-admin/images/wordpress-logo.svg';
+ if ( get_option( 'simple_custom_login_page_image' ) ) {
+ $img = get_option( 'simple_custom_login_page_image' );
+ } else {
+ $img = $default;
+ }
+ ?>
+ <div class="sclp-image-selector">
+ <img id="upload_image_preview" src='<?php echo esc_url( $img ); ?>' width='300' height='100' data-default="<?php echo esc_url( $default ); ?>">
+ <button id="upload_image_button" class="button button-primary"><?php esc_html_e( 'Select Image', 'simple-custom-login-page' ); ?></button>
+ <button id="reset_image_button" class="button button-secondary"><?php esc_html_e( 'Reset', 'simple-custom-login-page' ); ?></button>
+ <input id="simple_custom_login_page_image" type="hidden" name="simple_custom_login_page_image" value=<?php echo esc_url( $img ); ?> />
+ </div>
+ <p class="sclp-info"><?php esc_html_e( 'Recommended dimensions width: 320px, height: 84px.', 'simple-custom-login-page' ); ?></p>
+ <?php
+ },
+ 'simple-custom-login-page',
+ 'simple_custom_login_page_main_section'
+ );
+ register_setting( 'simple-custom-login-page', 'simple_custom_login_page_image' );
+
+ add_settings_field(
+ 'simple_custom_login_page_url',
+ 'Logo Link',
+ function () {
+ if ( get_option( 'simple_custom_login_page_url' ) ) {
+ $url = get_option( 'simple_custom_login_page_url' );
+ } else {
+ $url = get_home_url();
+ }
+ ?>
+ <input type="text" name="simple_custom_login_page_url" value="<?php echo esc_url( $url ); ?>">
+ <?php
+ },
+ 'simple-custom-login-page',
+ 'simple_custom_login_page_main_section'
+ );
+ register_setting( 'simple-custom-login-page', 'simple_custom_login_page_url' );
+
+ add_settings_field(
+ 'simple_custom_login_page_background',
+ 'Page Background',
+ function () {
+ if ( get_option( 'simple_custom_login_page_background' ) ) {
+ $color = get_option( 'simple_custom_login_page_background' );
+ } else {
+ $color = '#f0f0f1';
+ }
+
+ ?>
+ <input type="text" name="simple_custom_login_page_background" id="simple_custom_login_page_background" value="<?php echo esc_html( $color ); ?>" data-default-color="#f0f0f1" />
+ <?php
+ },
+ 'simple-custom-login-page',
+ 'simple_custom_login_page_main_section'
+ );
+ register_setting( 'simple-custom-login-page', 'simple_custom_login_page_background', array( 'sanitize_callback' => 'sanitize_hex_color' ) );
+
+ add_settings_field(
+ 'simple_custom_login_page_form_bg',
+ 'Form Background',
+ function () {
+ if ( get_option( 'simple_custom_login_page_form_bg' ) ) {
+ $color = get_option( 'simple_custom_login_page_form_bg' );
+ } else {
+ $color = '#ffffff';
+ }
+
+ ?>
+ <input type="text" name="simple_custom_login_page_form_bg" id="simple_custom_login_page_form_bg" value="<?php echo esc_html( $color ); ?>" data-default-color="#ffffff" />
+ <?php
+ },
+ 'simple-custom-login-page',
+ 'simple_custom_login_page_main_section'
+ );
+ register_setting( 'simple-custom-login-page', 'simple_custom_login_page_form_bg', array( 'sanitize_callback' => 'sanitize_hex_color' ) );
+
+ add_settings_field(
+ 'simple_custom_login_page_text_color',
+ 'Text Color',
+ function () {
+ if ( get_option( 'simple_custom_login_page_text_color' ) ) {
+ $color = get_option( 'simple_custom_login_page_text_color' );
+ } else {
+ $color = '#3c434a';
+ }
+
+ ?>
+ <input type="text" name="simple_custom_login_page_text_color" id="simple_custom_login_page_text_color" value="<?php echo esc_html( $color ); ?>" data-default-color="#3c434a" />
+ <?php
+ },
+ 'simple-custom-login-page',
+ 'simple_custom_login_page_main_section'
+ );
+ register_setting( 'simple-custom-login-page', 'simple_custom_login_page_text_color', array( 'sanitize_callback' => 'sanitize_hex_color' ) );
+
+ add_settings_field(
+ 'simple_custom_login_page_link_color',
+ 'Link Color',
+ function () {
+ if ( get_option( 'simple_custom_login_page_link_color' ) ) {
+ $color = get_option( 'simple_custom_login_page_link_color' );
+ } else {
+ $color = '#50575e';
+ }
+
+ ?>
+ <input type="text" name="simple_custom_login_page_link_color" id="simple_custom_login_page_link_color" value="<?php echo esc_html( $color ); ?>" data-default-color="#50575e" />
+ <?php
+ },
+ 'simple-custom-login-page',
+ 'simple_custom_login_page_main_section'
+ );
+ register_setting( 'simple-custom-login-page', 'simple_custom_login_page_link_color', array( 'sanitize_callback' => 'sanitize_hex_color' ) );
+ }
+}
--- a/simple-custom-login-page/includes/class-simple-custom-login-page-activator.php
+++ b/simple-custom-login-page/includes/class-simple-custom-login-page-activator.php
@@ -1,36 +1,36 @@
-<?php
-/**
- * Fired during plugin activation
- *
- * @link https://profiles.wordpress.org/pattihis/
- * @since 1.0.0
- *
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/includes
- */
-
-// If this file is called directly, abort.
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-/**
- * Fired during plugin activation.
- *
- * This class defines all code necessary to run during the plugin's activation.
- *
- * @since 1.0.0
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/includes
- * @author George Pattichis <gpattihis@gmail.com>
- */
-class Simple_Custom_Login_Page_Activator {
-
- /**
- * We will leave this here in case we need it in the future.
- *
- * @since 1.0.0
- */
- public static function activate() {
- }
-}
+<?php
+/**
+ * Fired during plugin activation
+ *
+ * @link https://profiles.wordpress.org/pattihis/
+ * @since 1.0.0
+ *
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/includes
+ */
+
+// If this file is called directly, abort.
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+/**
+ * Fired during plugin activation.
+ *
+ * This class defines all code necessary to run during the plugin's activation.
+ *
+ * @since 1.0.0
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/includes
+ * @author George Pattichis <gpattihis@gmail.com>
+ */
+class Simple_Custom_Login_Page_Activator {
+
+ /**
+ * We will leave this here in case we need it in the future.
+ *
+ * @since 1.0.0
+ */
+ public static function activate() {
+ }
+}
--- a/simple-custom-login-page/includes/class-simple-custom-login-page-deactivator.php
+++ b/simple-custom-login-page/includes/class-simple-custom-login-page-deactivator.php
@@ -1,39 +1,39 @@
-<?php
-/**
- * Fired during plugin deactivation
- *
- * @link https://profiles.wordpress.org/pattihis/
- * @since 1.0.0
- *
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/includes
- */
-
-// If this file is called directly, abort.
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-/**
- * Fired during plugin deactivation.
- *
- * This class defines all code necessary to run during the plugin's deactivation.
- *
- * @since 1.0.0
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/includes
- * @author George Pattichis <gpattihis@gmail.com>
- */
-class Simple_Custom_Login_Page_Deactivator {
-
- /**
- * We will leave this here in case we need it in the future.
- *
- * We could purge our options on deactivations but we will use the uninstall.php file
- * in the case the user is only temporarily deactivating.
- *
- * @since 1.0.0
- */
- public static function deactivate() {
- }
-}
+<?php
+/**
+ * Fired during plugin deactivation
+ *
+ * @link https://profiles.wordpress.org/pattihis/
+ * @since 1.0.0
+ *
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/includes
+ */
+
+// If this file is called directly, abort.
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+/**
+ * Fired during plugin deactivation.
+ *
+ * This class defines all code necessary to run during the plugin's deactivation.
+ *
+ * @since 1.0.0
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/includes
+ * @author George Pattichis <gpattihis@gmail.com>
+ */
+class Simple_Custom_Login_Page_Deactivator {
+
+ /**
+ * We will leave this here in case we need it in the future.
+ *
+ * We could purge our options on deactivations but we will use the uninstall.php file
+ * in the case the user is only temporarily deactivating.
+ *
+ * @since 1.0.0
+ */
+ public static function deactivate() {
+ }
+}
--- a/simple-custom-login-page/includes/class-simple-custom-login-page-i18n.php
+++ b/simple-custom-login-page/includes/class-simple-custom-login-page-i18n.php
@@ -1,46 +1,46 @@
-<?php
-/**
- * Define the internationalization functionality
- *
- * Loads and defines the internationalization files for this plugin
- * so that it is ready for translation.
- *
- * @link https://profiles.wordpress.org/pattihis/
- * @since 1.0.0
- *
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/includes
- */
-
-// If this file is called directly, abort.
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-/**
- * Define the internationalization functionality.
- *
- * Loads and defines the internationalization files for this plugin
- * so that it is ready for translation.
- *
- * @since 1.0.0
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/includes
- * @author George Pattichis <gpattihis@gmail.com>
- */
-class Simple_Custom_Login_Page_I18n {
-
- /**
- * Load the plugin text domain for translation.
- *
- * @since 1.0.0
- */
- public function load_plugin_textdomain() {
-
- load_plugin_textdomain(
- 'simple-custom-login-page',
- false,
- dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages/'
- );
- }
-}
+<?php
+/**
+ * Define the internationalization functionality
+ *
+ * Loads and defines the internationalization files for this plugin
+ * so that it is ready for translation.
+ *
+ * @link https://profiles.wordpress.org/pattihis/
+ * @since 1.0.0
+ *
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/includes
+ */
+
+// If this file is called directly, abort.
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+/**
+ * Define the internationalization functionality.
+ *
+ * Loads and defines the internationalization files for this plugin
+ * so that it is ready for translation.
+ *
+ * @since 1.0.0
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/includes
+ * @author George Pattichis <gpattihis@gmail.com>
+ */
+class Simple_Custom_Login_Page_I18n {
+
+ /**
+ * Load the plugin text domain for translation.
+ *
+ * @since 1.0.0
+ */
+ public function load_plugin_textdomain() {
+
+ load_plugin_textdomain(
+ 'simple-custom-login-page',
+ false,
+ dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages/'
+ );
+ }
+}
--- a/simple-custom-login-page/includes/class-simple-custom-login-page-loader.php
+++ b/simple-custom-login-page/includes/class-simple-custom-login-page-loader.php
@@ -1,129 +1,129 @@
-<?php
-/**
- * Register all actions and filters for the plugin
- *
- * @link https://profiles.wordpress.org/pattihis/
- * @since 1.0.0
- *
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/includes
- */
-
-// If this file is called directly, abort.
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-/**
- * Register all actions and filters for the plugin.
- *
- * Maintain a list of all hooks that are registered throughout
- * the plugin, and register them with the WordPress API. Call the
- * run function to execute the list of actions and filters.
- *
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/includes
- * @author George Pattichis <gpattihis@gmail.com>
- */
-class Simple_Custom_Login_Page_Loader {
-
- /**
- * The array of actions registered with WordPress.
- *
- * @since 1.0.0
- * @access protected
- * @var array $actions The actions registered with WordPress to fire when the plugin loads.
- */
- protected $actions;
-
- /**
- * The array of filters registered with WordPress.
- *
- * @since 1.0.0
- * @access protected
- * @var array $filters The filters registered with WordPress to fire when the plugin loads.
- */
- protected $filters;
-
- /**
- * Initialize the collections used to maintain the actions and filters.
- *
- * @since 1.0.0
- */
- public function __construct() {
-
- $this->actions = array();
- $this->filters = array();
- }
-
- /**
- * Add a new action to the collection to be registered with WordPress.
- *
- * @since 1.0.0
- * @param string $hook The name of the WordPress action that is being registered.
- * @param object $component A reference to the instance of the object on which the action is defined.
- * @param string $callback The name of the function definition on the $component.
- * @param int $priority Optional. The priority at which the function should be fired. Default is 10.
- * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
- */
- public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
- $this->actions = $this->add( $this->actions, $hook, $component, $callback, $priority, $accepted_args );
- }
-
- /**
- * Add a new filter to the collection to be registered with WordPress.
- *
- * @since 1.0.0
- * @param string $hook The name of the WordPress filter that is being registered.
- * @param object $component A reference to the instance of the object on which the filter is defined.
- * @param string $callback The name of the function definition on the $component.
- * @param int $priority Optional. The priority at which the function should be fired. Default is 10.
- * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
- */
- public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
- $this->filters = $this->add( $this->filters, $hook, $component, $callback, $priority, $accepted_args );
- }
-
- /**
- * A utility function that is used to register the actions and hooks into a single
- * collection.
- *
- * @since 1.0.0
- * @access private
- * @param array $hooks The collection of hooks that is being registered (that is, actions or filters).
- * @param string $hook The name of the WordPress filter that is being registered.
- * @param object $component A reference to the instance of the object on which the filter is defined.
- * @param string $callback The name of the function definition on the $component.
- * @param int $priority The priority at which the function should be fired.
- * @param int $accepted_args The number of arguments that should be passed to the $callback.
- * @return array The collection of actions and filters registered with WordPress.
- */
- private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) {
-
- $hooks[] = array(
- 'hook' => $hook,
- 'component' => $component,
- 'callback' => $callback,
- 'priority' => $priority,
- 'accepted_args' => $accepted_args,
- );
-
- return $hooks;
- }
-
- /**
- * Register the filters and actions with WordPress.
- *
- * @since 1.0.0
- */
- public function run() {
-
- foreach ( $this->filters as $hook ) {
- add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
- }
-
- foreach ( $this->actions as $hook ) {
- add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
- }
- }
-}
+<?php
+/**
+ * Register all actions and filters for the plugin
+ *
+ * @link https://profiles.wordpress.org/pattihis/
+ * @since 1.0.0
+ *
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/includes
+ */
+
+// If this file is called directly, abort.
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+/**
+ * Register all actions and filters for the plugin.
+ *
+ * Maintain a list of all hooks that are registered throughout
+ * the plugin, and register them with the WordPress API. Call the
+ * run function to execute the list of actions and filters.
+ *
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/includes
+ * @author George Pattichis <gpattihis@gmail.com>
+ */
+class Simple_Custom_Login_Page_Loader {
+
+ /**
+ * The array of actions registered with WordPress.
+ *
+ * @since 1.0.0
+ * @access protected
+ * @var array $actions The actions registered with WordPress to fire when the plugin loads.
+ */
+ protected $actions;
+
+ /**
+ * The array of filters registered with WordPress.
+ *
+ * @since 1.0.0
+ * @access protected
+ * @var array $filters The filters registered with WordPress to fire when the plugin loads.
+ */
+ protected $filters;
+
+ /**
+ * Initialize the collections used to maintain the actions and filters.
+ *
+ * @since 1.0.0
+ */
+ public function __construct() {
+
+ $this->actions = array();
+ $this->filters = array();
+ }
+
+ /**
+ * Add a new action to the collection to be registered with WordPress.
+ *
+ * @since 1.0.0
+ * @param string $hook The name of the WordPress action that is being registered.
+ * @param object $component A reference to the instance of the object on which the action is defined.
+ * @param string $callback The name of the function definition on the $component.
+ * @param int $priority Optional. The priority at which the function should be fired. Default is 10.
+ * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
+ */
+ public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
+ $this->actions = $this->add( $this->actions, $hook, $component, $callback, $priority, $accepted_args );
+ }
+
+ /**
+ * Add a new filter to the collection to be registered with WordPress.
+ *
+ * @since 1.0.0
+ * @param string $hook The name of the WordPress filter that is being registered.
+ * @param object $component A reference to the instance of the object on which the filter is defined.
+ * @param string $callback The name of the function definition on the $component.
+ * @param int $priority Optional. The priority at which the function should be fired. Default is 10.
+ * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
+ */
+ public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
+ $this->filters = $this->add( $this->filters, $hook, $component, $callback, $priority, $accepted_args );
+ }
+
+ /**
+ * A utility function that is used to register the actions and hooks into a single
+ * collection.
+ *
+ * @since 1.0.0
+ * @access private
+ * @param array $hooks The collection of hooks that is being registered (that is, actions or filters).
+ * @param string $hook The name of the WordPress filter that is being registered.
+ * @param object $component A reference to the instance of the object on which the filter is defined.
+ * @param string $callback The name of the function definition on the $component.
+ * @param int $priority The priority at which the function should be fired.
+ * @param int $accepted_args The number of arguments that should be passed to the $callback.
+ * @return array The collection of actions and filters registered with WordPress.
+ */
+ private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) {
+
+ $hooks[] = array(
+ 'hook' => $hook,
+ 'component' => $component,
+ 'callback' => $callback,
+ 'priority' => $priority,
+ 'accepted_args' => $accepted_args,
+ );
+
+ return $hooks;
+ }
+
+ /**
+ * Register the filters and actions with WordPress.
+ *
+ * @since 1.0.0
+ */
+ public function run() {
+
+ foreach ( $this->filters as $hook ) {
+ add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
+ }
+
+ foreach ( $this->actions as $hook ) {
+ add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
+ }
+ }
+}
--- a/simple-custom-login-page/includes/class-simple-custom-login-page.php
+++ b/simple-custom-login-page/includes/class-simple-custom-login-page.php
@@ -1,304 +1,304 @@
-<?php
-/**
- * The file that defines the core plugin class
- *
- * @link https://profiles.wordpress.org/pattihis/
- * @since 1.0.0
- *
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/includes
- */
-
-// If this file is called directly, abort.
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-/**
- * The core plugin class.
- *
- * This is used to define internationalization and hooks.
- *
- * Also maintains the unique identifier of this plugin as well as the current
- * version of the plugin.
- *
- * @since 1.0.0
- * @package Simple_Custom_Login_Page
- * @subpackage Simple_Custom_Login_Page/includes
- * @author George Pattichis <gpattihis@gmail.com>
- */
-class Simple_Custom_Login_Page {
-
- /**
- * The loader that's responsible for maintaining and registering all hooks that power
- * the plugin.
- *
- * @since 1.0.0
- * @access protected
- * @var Simple_Custom_Login_Page_Loader $loader Maintains and registers all hooks for the plugin.
- */
- protected $loader;
-
- /**
- * The unique identifier of this plugin.
- *
- * @since 1.0.0
- * @access protected
- * @var string $plugin_name The string used to uniquely identify this plugin.
- */
- protected $plugin_name;
-
- /**
- * The current version of the plugin.
- *
- * @since 1.0.0
- * @access protected
- * @var string $version The current version of the plugin.
- */
- protected $version;
-
- /**
- * Define the core functionality of the plugin.
- *
- * Set the plugin name and the plugin version that can be used throughout the plugin.
- * Load the dependencies, define the locale, and set the hooks for the plugin.
- *
- * @since 1.0.0
- */
- public function __construct() {
- if ( defined( 'SCLP_VERSION' ) ) {
- $this->version = SCLP_VERSION;
- } else {
- $this->version = '1.0.3';
- }
- $this->plugin_name = 'simple-custom-login-page';
-
- $this->load_dependencies();
- $this->set_locale();
- $this->define_admin_hooks();
- }
-
- /**
- * Load the required dependencies for this plugin.
- *
- * Include the following files that make up the plugin:
- *
- * - Simple_Custom_Login_Page_Loader. Orchestrates the hooks of the plugin.
- * - Simple_Custom_Login_Page_I18n. Defines internationalization functionality.
- * - Simple_Custom_Login_Page_Admin. Defines all hooks for the admin area.
- *
- * Create an instance of the loader which will be used to register the hooks
- * with WordPress.
- *
- * @since 1.0.0
- * @access private
- */
- private function load_dependencies() {
-
- /**
- * The class responsible for orchestrating the actions and filters of the
- * core plugin.
- */
- require_once plugin_dir_path( __DIR__ ) . 'includes/class-simple-custom-login-page-loader.php';
-
- /**
- * The class responsible for defining internationalization functionality
- * of the plugin.
- */
- require_once plugin_dir_path( __DIR__ ) . 'includes/class-simple-custom-login-page-i18n.php';
-
- /**
- * The class responsible for defining all actions that occur in the admin area.
- */
- require_once plugin_dir_path( __DIR__ ) . 'admin/class-simple-custom-login-page-admin.php';
-
- $this->loader = new Simple_Custom_Login_Page_Loader();
- }
-
- /**
- * Define the locale for this plugin for internationalization.
- *
- * Uses the Simple_Custom_Login_Page_I18n class in order to set the domain and to register the hook
- * with WordPress.
- *
- * @since 1.0.0
- * @access private
- */
- private function set_locale() {
-
- $plugin_i18n = new Simple_Custom_Login_Page_I18n();
-
- $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
- }
-
- /**
- * Register all of the hooks related to the admin area functionality
- * of the plugin.
- *
- * @since 1.0.0
- * @access private
- */
- private function define_admin_hooks() {
-
- $plugin_admin = new Simple_Custom_Login_Page_Admin( $this->get_plugin_name(), $this->get_version() );
-
- $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
- $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
-
- $this->loader->add_action( 'admin_init', $plugin_admin, 'simple_custom_login_page_settings' );
- $this->loader->add_action( 'admin_menu', $plugin_admin, 'simple_custom_login_page_admin_menu' );
- $this->loader->add_filter( 'plugin_action_links', $plugin_admin, 'simple_custom_login_page_plugin_links', 10, 2 );
-
- $this->loader->add_action( 'login_head', $this, 'simple_custom_login_page_customize' );
- $this->loader->add_action( 'login_headerurl', $this, 'sclp_link_customize' );
- $this->loader->add_action( 'login_headertext', $this, 'sclp_text_customize' );
- }
-
- /**
- * Run the loader to execute all of the hooks with WordPress.
- *
- * @since 1.0.0
- */
- public function run() {
- $this->loader->run();
- }
-
- /**
- * The name of the plugin used to uniquely identify it within the context of
- * WordPress and to define internationalization functionality.
- *
- * @since 1.0.0
- * @return string The name of the plugin.
- */
- public function get_plugin_name() {
- return $this->plugin_name;
- }
-
- /**
- * The reference to the class that orchestrates the hooks with the plugin.
- *
- * @since 1.0.0
- * @return Simple_Custom_Login_Page_Loader Orchestrates the hooks of the plugin.
- */
- public function get_loader() {
- return $this->loader;
- }
-
- /**
- * Retrieve the version number of the plugin.
- *
- * @since 1.0.0
- * @return string The version number of the plugin.
- */
- public function get_version() {
- return $this->version;
- }
-
- /**
- * Customize the login page styles.
- *
- * @since 1.0.0
- * @return void
- * @link https://codex.wordpress.org/Customizing_the_Login_Form
- */
- public function simple_custom_login_page_customize() {
-
- if ( get_option( 'simple_custom_login_page_background' ) ) {
- $background = get_option( 'simple_custom_login_page_background' );
- } else {
- $background = '#f0f0f1';
- }
-
- if ( get_option( 'simple_custom_login_page_text_color' ) ) {
- $text = get_option( 'simple_custom_login_page_text_color' );
- } else {
- $text = '#3c434a';
- }
-
- if ( get_option( 'simple_custom_login_page_image' ) ) {
- $img = get_option( 'simple_custom_login_page_image' );
- $upload_dir = wp_upload_dir();
- $image_path = str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $img );
- $getimagesize = wp_getimagesize( $image_path );
- if ( $getimagesize ) {
- $width = $getimagesize[0];
- $height = $getimagesize[1];
- } else {
- $width = '320px';
- $height = '84px';
- }
- } else {
- return;
- }
-
- if ( get_option( 'simple_custom_login_page_form_bg' ) ) {
- $form = get_option( 'simple_custom_login_page_form_bg' );
- } else {
- $form = '#ffffff';
- }
-
- if ( get_option( 'simple_custom_login_page_link_color' ) ) {
- $link = get_option( 'simple_custom_login_page_link_color' );
- } else {
- $link = '#50575e';
- }
-
- echo '<style type="text/css">
- body.login {
- background-color: ' . esc_attr( $background ) . ';
- color: ' . esc_attr( $text ) . ';
- }
-
- #login h1 a, .login h1 a {
- background-image:url(' . esc_url( $img ) . ');
- height: ' . esc_attr( $height ) . 'px;
- width: ' . esc_attr( $width ) . 'px;
- max-width: 100%;
- max-height: 84px;
- background-size: contain;
- background-repeat: no-repeat;
- }
-
- body.login div#login form#loginform,
- body.login div#login form#lostpasswordform,
- body.login div#login p.message {
- background-color: ' . esc_attr( $form ) . ';
- border-color: ' . esc_attr( $form ) . ';
- }
-
- body.login div#login p#backtoblog a,
- body.login div#login p#nav a {
- color: ' . esc_attr( $link ) . ';
- }
- </style>';
- }
-
-
- /**
- * Customize the login page link
- *
- * @since 1.0.0
- * @return string $url The url of the link
- * @link https://codex.wordpress.org/Customizing_the_Login_Form
- */
- public function sclp_link_customize() {
- if ( get_option( 'simple_custom_login_page_url' ) ) {
- $url = get_option( 'simple_custom_login_page_url' );
- } else {
- $url = get_home_url();
- }
- return $url;
- }
-
-
- /**
- * Customize the login page title
- *
- * @since 1.0.0
- * @return string $title The title of the link
- * @link https://codex.wordpress.org/Customizing_the_Login_Form
- */
- public function sclp_text_customize() {
- return get_bloginfo( 'name' ) . ' - ' . get_bloginfo( 'description' );
- }
-}
+<?php
+/**
+ * The file that defines the core plugin class
+ *
+ * @link https://profiles.wordpress.org/pattihis/
+ * @since 1.0.0
+ *
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/includes
+ */
+
+// If this file is called directly, abort.
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+/**
+ * The core plugin class.
+ *
+ * This is used to define internationalization and hooks.
+ *
+ * Also maintains the unique identifier of this plugin as well as the current
+ * version of the plugin.
+ *
+ * @since 1.0.0
+ * @package Simple_Custom_Login_Page
+ * @subpackage Simple_Custom_Login_Page/includes
+ * @author George Pattichis <gpattihis@gmail.com>
+ */
+class Simple_Custom_Login_Page {
+
+ /**
+ * The loader that's responsible for maintaining and registering all hooks that power
+ * the plugin.
+ *
+ * @since 1.0.0
+ * @access protected
+ * @var Simple_Custom_Login_Page_Loader $loader Maintains and registers all hooks for the plugin.
+ */
+ protected $loader;
+
+ /**
+ * The unique identifier of this plugin.
+ *
+ * @since 1.0.0
+ * @access protected
+ * @var string $plugin_name The string used to uniquely identify this plugin.
+ */
+ protected $plugin_name;
+
+ /**
+ * The current version of the plugin.
+ *
+ * @since 1.0.0
+ * @access protected
+ * @var string $version The current version of the plugin.
+ */
+ protected $version;
+
+ /**
+ * Define the core functionality of the plugin.
+ *
+ * Set the plugin name and the plugin version that can be used throughout the plugin.
+ * Load the dependencies, define the locale, and set the hooks for the plugin.
+ *
+ * @since 1.0.0
+ */
+ public function __construct() {
+ if ( defined( 'SCLP_VERSION' ) ) {
+ $this->version = SCLP_VERSION;
+ } else {
+ $this->version = '1.0.4';
+ }
+ $this->plugin_name = 'simple-custom-login-page';
+
+ $this->load_dependencies();
+ $this->set_locale();
+ $this->define_admin_hooks();
+ }
+
+ /**
+ * Load the required dependencies for this plugin.
+ *
+ * Include the following files that make up the plugin:
+ *
+ * - Simple_Custom_Login_Page_Loader. Orchestrates the hooks of the plugin.
+ * - Simple_Custom_Login_Page_I18n. Defines internationalization functionality.
+ * - Simple_Custom_Login_Page_Admin. Defines all hooks for the admin area.
+ *
+ * Create an instance of the loader which will be used to register the hooks
+ * with WordPress.
+ *
+ * @since 1.0.0
+ * @access private
+ */
+ private function load_dependencies() {
+
+ /**
+ * The class responsible for orchestrating the actions and filters of the
+ * core plugin.
+ */
+ require_once plugin_dir_path( __DIR__ ) . 'includes/class-simple-custom-login-page-loader.php';
+
+ /**
+ * The class responsible for defining internationalization functionality
+ * of the plugin.
+ */
+ require_once plugin_dir_path( __DIR__ ) . 'includes/class-simple-custom-login-page-i18n.php';
+
+ /**
+ * The class responsible for defining all actions that occur in the admin area.
+ */
+ require_once plugin_dir_path( __DIR__ ) . 'admin/class-simple-custom-login-page-admin.php';
+
+ $this->loader = new Simple_Custom_Login_Page_Loader();
+ }
+
+ /**
+ * Define the locale for this plugin for internationalization.
+ *
+ * Uses the Simple_Custom_Login_Page_I18n class in order to set the domain and to register the hook
+ * with WordPress.
+ *
+ * @since 1.0.0
+ * @access private
+ */
+ private function set_locale() {
+
+ $plugin_i18n = new Simple_Custom_Login_Page_I18n();
+
+ $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
+ }
+
+ /**
+ * Register all of the hooks related to the admin area functionality
+ * of the plugin.
+ *
+ * @since 1.0.0
+ * @access private
+ */
+ private function define_admin_hooks() {
+
+ $plugin_admin = new Simple_Custom_Login_Page_Admin( $this->get_plugin_name(), $this->get_version() );
+
+ $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
+ $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
+
+ $this->loader->add_action( 'admin_init', $plugin_admin, 'simple_custom_login_page_settings' );
+ $this->loader->add_action( 'admin_menu', $plugin_admin, 'simple_custom_login_page_admin_menu' );
+ $this->loader->add_filter( 'plugin_action_links', $plugin_admin, 'simple_custom_login_page_plugin_links', 10, 2 );
+
+ $this->loader->add_action( 'login_head', $this, 'simple_custom_login_page_customize' );
+ $this->loader->add_action( 'login_headerurl', $this, 'sclp_link_customize' );
+ $this->loader->add_action( 'login_headertext', $this, 'sclp_text_customize' );
+ }
+
+ /**
+ * Run the loader to execute all of the hooks with WordPress.
+ *
+ * @since 1.0.0
+ */
+ public function run() {
+ $this->loader->run();
+ }
+
+ /**
+ * The name of the plugin used to uniquely identify it within the context of
+ * WordPress and to define internationalization functionality.
+ *
+ * @since 1.0.0
+ * @return string The name of the plugin.
+ */
+ public function get_plugin_name() {
+ return $this->plugin_name;
+ }
+
+ /**
+ * The reference to the class that orchestrates the hooks with the plugin.
+ *
+ * @since 1.0.0
+ * @return Simple_Custom_Login_Page_Loader Orchestrates the hooks of the plugin.
+ */
+ public function get_loader() {
+ return $this->loader;
+ }
+
+ /**
+ * Retrieve the version number of the plugin.
+ *
+ * @since 1.0.0
+ * @return string The version number of the plugin.
+ */
+ public function get_version() {
+ return $this->version;
+ }
+
+ /**
+ * Customize the login page styles.
+ *
+ * @since 1.0.0
+ * @return void
+ * @link https://codex.wordpress.org/Customizing_the_Login_Form
+ */
+ public function simple_custom_login_page_customize() {
+
+ if ( get_option( 'simple_custom_login_page_background' ) ) {
+ $background = get_option( 'simple_custom_login_page_background' );
+ } else {
+ $background = '#f0f0f1';
+ }
+
+ if ( get_option( 'simple_custom_login_page_text_color' ) ) {
+ $text = get_option( 'simple_custom_login_page_text_color' );
+ } else {
+ $text = '#3c434a';
+ }
+
+ if ( get_option( 'simple_custom_login_page_image' ) ) {
+ $img = get_option( 'simple_custom_login_page_image' );
+ $upload_dir = wp_upload_dir();
+ $image_path = str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $img );
+ $getimagesize = wp_getimagesize( $image_path );
+ if ( $getimagesize ) {
+ $width = $getimagesize[0];
+ $height = $getimagesize[1];
+ } else {
+ $width = '320px';
+ $height = '84px';
+ }
+ } else {
+ return;
+ }
+
+ if ( get_option( 'simple_custom_login_page_form_bg' ) ) {
+ $form = get_option( 'simple_custom_login_page_form_bg' );
+ } else {
+ $form = '#ffffff';
+ }
+
+ if ( get_option( 'simple_custom_login_page_link_color' ) ) {
+ $link = get_option( 'simple_custom_login_page_link_color' );
+ } else {
+ $link = '#50575e';
+ }
+
+ echo '<style type="text/css">
+ body.login {
+ background-color: ' . esc_attr( $background ) . ';
+ color: ' . esc_attr( $text ) . ';
+ }
+
+ #login h1 a, .login h1 a {
+ background-image:url(' . esc_url( $img ) . ');
+ height: ' . esc_attr( $height ) . 'px;
+ width: ' . esc_attr( $width ) . 'px;
+ max-width: 100%;
+ max-height: 84px;
+ background-size: contain;
+ background-repeat: no-repeat;
+ }
+
+ body.login div#login form#loginform,
+ body.login div#login form#lostpasswordform,
+ body.login div#login p.message {
+ background-color: ' . esc_attr( $form ) . ';
+ border-color: ' . esc_attr( $form ) . ';
+ }
+
+ body.login div#login p#backtoblog a,
+ body.login div#login p#nav a {
+ color: ' . esc_attr( $link ) . ';
+ }
+ </style>';
+ }
+
+
+ /**
+ * Customize the login page link
+ *
+ * @since 1.0.0
+ * @return string $url The url of the link
+ * @link https://codex.wordpress.org/Customizing_the_Login_Form
+ */
+ public function sclp_link_customize() {
+ if ( get_option( 'simple_custom_login_page_url' ) ) {
+ $url = get_option( 'simple_custom_login_page_url' );
+ } else {
+ $url = get_home_url();
+ }
+ return $url;
+ }
+
+
+ /**
+ * Customize the login page title
+ *
+ * @since 1.0.0
+ * @return string $title The title of the link
+ * @link https://codex.wordpress.org/Customizing_the_Login_Form
+ */
+ public function sclp_text_customize() {
+ return get_bloginfo( 'name' ) . ' - ' . get_bloginfo( 'description' );
+ }
+}
--- a/simple-custom-login-page/simple-custom-login-page.php
+++ b/simple-custom-login-page/simple-custom-login-page.php
@@ -1,100 +1,100 @@
-<?php
-/**
- * Simple Custom Login Page
- *
- * @author George Pattichis
- * @copyright 2024 George Pattichis
- * @license GPL-2.0-or-later
- * @link https://profiles.wordpress.org/pattihis/
- * @since 1.0.0
- * @package Simple_Custom_Login_Page
- *
- * @wordpress-plugin
- * Plugin Name: Simple Custom Login Page
- * Plugin URI: https://wordpress.org/plugins/simple-custom-login-page/
- * Description: This plugin allows you to customize the image and the appearance of the WordPress Login Screen.
- * Version: 1.0.3
- * Requires at least: 5.3.0
- * Tested up to: 6.8
- * Requires PHP: 7.0
- * Author: George Pattichis
- * Author URI: https://profiles.wordpress.org/pattihis/
- * License: GPL-2.0+
- * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
- * Text Domain: simple-custom-login-page
- * Domain Path: /languages
- */
-
-/*
- Copyright 2024 George Pattihis (gpattihis@gmail.com)
-
- "Simple Custom Login Page" is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- any later version.
-
- "Simple Custom Login Page" is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- "along with Simple Custom Login Page". If not, see http://www.gnu.org/licenses/gpl-2.0.txt.
- */
-
-// If this file is called directly, abort.
-if ( ! defined( 'WPINC' ) ) {
- die;
-}
-
-/**
- * Current plugin version.
- *
- * @var string The current plugin version.
- */
-define( 'SCLP_VERSION', '1.0.3' );
-
-/**
- * Plugin's basename
- */
-define( 'SCLP_BASENAME', plugin_basename( __FILE__ ) );
-
-/**
- * The code that runs during plugin activation.
- * This action is documented in includes/class-simple-custom-login-page-activator.php
- */
-function activate_simple_custom_login_page() {
- require_once plugin_dir_path( __FILE__ ) . 'includes/class-simple-custom-login-page-activator.php';
- Simple_Custom_Login_Page_Activator::activate();
-}
-
-/**
- * The code that runs during plugin deactivation.
- * This action is documented in includes/class-simple-custom-login-page-deactivator.php
- */
-function deactivate_simple_custom_login_page() {
- require_once plugin_dir_path( __FILE__ ) . 'includes/class-simple-custom-login-page-deactivator.php';
- Simple_Custom_Login_Page_Deactivator::deactivate();
-}
-
-register_activation_hook( __FILE__, 'activate_simple_custom_login_page' );
-register_deactivation_hook( __FILE__, 'deactivate_simple_custom_login_page' );
-
-/**
- * The core plugin class that is used to define internationalization,
- * admin-specific hooks, and public-facing site hooks.
- */
-require plugin_dir_path( __FILE__ ) . 'includes/class-simple-custom-login-page.php';
-
-/**
- * Begins execution of the plugin.
- *
- * @since 1.0.0
- */
-function run_simple_custom_login_page() {
-
- $plugin = new Simple_Custom_Login_Page();
- $plugin->run();
-}
-
-run_simple_custom_login_page();
+<?php
+/**
+ * Simple Custom Login Page
+ *
+ * @author George Pattichis
+ * @copyright 2024 George Pattichis
+ * @license GPL-2.0-or-later
+ * @link https://profiles.wordpress.org/pattihis/
+ * @since 1.0.0
+ * @package Simple_Custom_Login_Page
+ *
+ * @wordpress-plugin
+ * Plugin Name: Simple Custom Login Page
+ * Plugin URI: https://wordpress.org/plugins/simple-custom-login-page/
+ * Description: This plugin allows you to customize the image and the appearance of the WordPress Login Screen.
+ * Version: 1.0.4
+ * Requires at least: 5.3.0
+ * Tested up to: 6.9
+ * Requires PHP: 7.0
+ * Author: George Pattichis
+ * Author URI: https://profiles.wordpress.org/pattihis/
+ * License: GPL-2.0+
+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
+ * Text Domain: simple-custom-login-page
+ * Domain Path: /languages
+ */
+
+/*
+ Copyright 2024 George Pattihis (gpattihis@gmail.com)
+
+ "Simple Custom Login Page" is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ any later version.
+
+ "Simple Custom Login Page" is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ "along with Simple Custom Login Page". If not, see http://www.gnu.org/licenses/gpl-2.0.txt.
+ */
+
+// If this file is called directly, abort.
+if ( ! defined( 'WPINC' ) ) {
+ die;
+}
+
+/**
+ * Current plugin version.
+ *
+ * @var string The current plugin version.
+ */
+define( 'SCLP_VERSION', '1.0.4' );
+
+/**
+ * Plugin's basename
+ */
+define( 'SCLP_BASENAME', plugin_basename( __FILE__ ) );
+
+/**
+ * The code that runs during plugin activation.
+ * This action is documented in includes/class-simple-custom-login-page-activator.php
+ */
+function activate_simple_custom_login_page() {
+ require_once plugin_dir_path( __FILE__ ) . 'includes/class-simple-custom-login-page-activator.php';
+ Simple_Custom_Login_Page_Activator::activate();
+}
+
+/**
+ * The code that runs during plugin deactivation.
+ * This action is documented in includes/class-simple-custom-login-page-deactivator.php
+ */
+function deactivate_simple_custom_login_page() {
+ require_once plugin_dir_path( __FILE__ ) . 'includes/class-simple-custom-login-page-deactivator.php';
+ Simple_Custom_Login_Page_Deactivator::deactivate();
+}
+
+register_activation_hook( __FILE__, 'activate_simple_custom_login_page' );
+register_deactivation_hook( __FILE__, 'deactivate_simple_custom_login_page' );
+
+/**
+ * The core plugin class that is used to define internationalization,
+ * admin-specific hooks, and public-facing site hooks.
+ */
+require plugin_dir_path( __FILE__ ) . 'includes/class-simple-custom-login-page.php';
+
+/**
+ * Begins execution of the plugin.
+ *
+ * @since 1.0.0
+ */
+function run_simple_custom_login_page() {
+
+ $plugin = new Simple_Custom_Login_Page();
+ $plugin->run();
+}
+
+run_simple_custom_login_page();