flush_rules(); } } // Prepare settings variables function init_settings() { register_setting('aelurl_settings', 'aelurl_login_input', array('AELURL', 'parse_url')); register_setting('aelurl_settings', 'aelurl_login'); register_setting('aelurl_settings', 'aelurl_register_input', array('AELURL', 'parse_url')); register_setting('aelurl_settings', 'aelurl_register'); register_setting('aelurl_settings', 'aelurl_forgot_input', array('AELURL', 'parse_url')); register_setting('aelurl_settings', 'aelurl_forgot'); register_setting('aelurl_settings', 'aelurl_htaccess_original'); } // Execute function run() { if ('true' == @$_REQUEST['settings-updated']) { self::htaccess_reload(); } self::fix_urls(); } // Register admin menu function wp_menu() { if (current_user_can("administrator")) { add_submenu_page('options-general.php', 'Aspexi Easy Login URL', 'Easy Login URL', 'administrator', /* __FILE__ */ 'aelurl', array('AELURL', 'backend')); } } // Update rewrite rules function htaccess($rules) { // Backup original .htaccess if (!strlen(get_option('aelurl_htaccess_original'))) { update_option('aelurl_htaccess_original', $rules); } // TODO: change to query vars else if ('true' == @$_GET['reset'] && 'true' != @$_REQUEST['settings-updated']) { $rules = get_option('aelurl_htaccess_original'); return $rules; } $new_rules = ''; // Update rules $login = get_option('aelurl_login_input'); if (get_option('aelurl_login') == 'on' && strlen($login)) { $new_rules .= "\n# ASPEXI Easy Login URL - LOGIN\n"; $new_rules .= "RewriteEngine on\n"; $new_rules .= "RewriteRule ^$login$ wp-login.php [NC,L]\n"; } $register = get_option('aelurl_register_input'); if (get_option('aelurl_register') == 'on' && strlen($register)) { $new_rules .= "\n# ASPEXI Easy Login URL - REGISTER\n"; $new_rules .= "RewriteEngine on\n"; $new_rules .= "RewriteRule ^$register$ wp-login.php?action=register [NC,L]\n"; } $forgot = get_option('aelurl_forgot_input'); if (get_option('aelurl_forgot') == 'on' && strlen($forgot)) { $new_rules .= "\n# ASPEXI Easy Login URL - FORGOT PASSWORD\n"; $new_rules .= "RewriteEngine on\n"; $new_rules .= "RewriteRule ^$forgot$ wp-login.php?action=lostpassword [NC,L]\n"; } return $new_rules . $rules; } // Flush rules function htaccess_reload() { global $wp_rewrite; $wp_rewrite->flush_rules(); } /*function rewrite_reload($wp_rewrite) { global $wp_rewrite; $wp_rewrite->mod_rewrite_rules(); return $wp_rewrite; }*/ /*function rewrite_reload_array($in) { return $in; }*/ // Parse strings from inputs function parse_url($in) { $in = trim(self::urify($in)); return $in; } // Parse strings from inputs - helper function urify($str) { return str_replace(" ", "-", trim(ereg_replace("[^A-Za-z0-9[:space:]-]", "", $str))); } // Fix urls function fix_urls() { // Login url $login = get_option('aelurl_login_input'); if (get_option('aelurl_login') == 'on' && strlen($login)) { add_filter('login_url', 'fix_login'); global $aelurl_login; $aelurl_login = $login; if (!function_exists('fix_login')) { function fix_login($url) { global $aelurl_login; return str_replace(site_url('wp-login.php', 'login'), site_url($aelurl_login, 'login'), $url); } } } // Register url $register = get_option('aelurl_register_input'); if (get_option('aelurl_register') == 'on' && strlen($register)) { add_filter('register', 'fix_register'); global $aelurl_register; $aelurl_register = $register; if (!function_exists('fix_register')) { function fix_register($url) { global $aelurl_register; return str_replace(site_url('wp-login.php?action=register', 'login'), site_url($aelurl_register, 'login'), $url); } } add_filter('site_url', 'fix_register2', 10, 3); if (!function_exists('fix_register2')) { function fix_register2($url, $path, $orig_scheme) { global $aelurl_register; if ($orig_scheme !== 'login') return $url; if ($path == 'wp-login.php?action=register') return site_url($aelurl_register, 'login'); return $url; } } } // Forgot url $forgot = get_option('aelurl_forgot_input'); if (get_option('aelurl_forgot') == 'on' && strlen($forgot)) { add_filter('lostpassword_url', 'fix_forgot'); global $aelurl_forgot; $aelurl_forgot = $forgot; if (!function_exists('fix_forgot')) { function fix_forgot($url) { global $aelurl_forgot; return str_replace('?action=lostpassword', '', str_replace(network_site_url('wp-login.php', 'login'), site_url($aelurl_forgot, 'login'), $url)); } } } } // Include common script function scripts() { wp_enqueue_script('common'); } // Get current .htaccess file preview function htaccess_preview() { $hf = get_home_path() . '.htaccess'; if (file_exists($hf)) { $handle = fopen($hf, "r"); if ($handle) { $contents = nl2br(fread($handle, filesize($hf))); return $contents; } else return 'Fatal error: cannot access .htaccess file!'; fclose($handle); } else return 'Fatal error: cannot access .htaccess file!'; } // Prepare reset url function reset_url() { $q = explode('&', $_SERVER['QUERY_STRING']); $purl = 'http' . ((!empty($_SERVER['HTTPS'])) ? 's' : '') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?' . $q[0] . '&reset=true'; return $purl; } // Check if user reset function reset_maybe() { // TODO: change to query vars if ('true' == @$_GET['reset'] && 'true' != @$_REQUEST['settings-updated']) { delete_option('aelurl_login_input'); delete_option('aelurl_login'); delete_option('aelurl_register_input'); delete_option('aelurl_register'); delete_option('aelurl_forgot_input'); delete_option('aelurl_forgot'); self::htaccess_reload(); self::fix_urls(); echo '
Aspexi Easy Login URL has been reset. Original .htaccess file has been restored.
Aspexi Easy Login URL has not been tested on multisite. Plugin might not work. Use at your own risk!
Aspexi Easy Login URL is not active. You must enable Permalink before it can work.