Example #1
0
/**
 * Output the login page header.
 *
 * @param string   $title    Optional. HiveQueen login Page title to display in the `<title>` element.
 *                           Default 'Log In'.
 * @param string   $message  Optional. Message to display in header. Default empty.
 * @param HQ_Error $hq_error Optional. The error to pass. Default empty.
 */
function login_header($title = 'Log In', $message = '', $hq_error = '')
{
    global $error, $interim_login, $action;
    // Don't index any of these forms
    add_action('login_head', 'hq_no_robots');
    if (hq_is_mobile()) {
        add_action('login_head', 'hq_login_viehqort_meta');
    }
    if (empty($hq_error)) {
        $hq_error = new HQ_Error();
    }
    // Shake it!
    $shake_error_codes = array('empty_password', 'empty_email', 'invalid_email', 'invalidcombo', 'empty_username', 'invalid_username', 'incorrect_password');
    /**
     * Filter the error codes array for shaking the login form.
     *
     * @since 0.0.1
     *
     * @param array $shake_error_codes Error codes that shake the login form.
     */
    $shake_error_codes = apply_filters('shake_error_codes', $shake_error_codes);
    if ($shake_error_codes && $hq_error->get_error_code() && in_array($hq_error->get_error_code(), $shake_error_codes)) {
        add_action('login_head', 'hq_shake_js', 12);
    }
    ?>
<!DOCTYPE html>
        <!--[if IE 6]>
        <html id="ie6" <?php 
    language_attributes();
    ?>
>
        <![endif]-->
        <!--[if IE 7]>
        <html id="ie7" <?php 
    language_attributes();
    ?>
>
        <![endif]-->
        <!--[if IE 8]>
        <html id="ie8" <?php 
    language_attributes();
    ?>
>
        <![endif]-->
        <!--[if !(IE 6) & !(IE 7) & !(IE 8)]><!-->
        <html <?php 
    language_attributes();
    ?>
>
        <!--<![endif]-->
        <head>
        <meta charset="<?php 
    bloginfo('charset');
    ?>
" />
        <meta name="viewport" content="width=device-width" />
        <title><?php 
    hq_admin_css('login', true);
    /*
     * Remove all stored post data on logging out.
     * This could be added by add_action('login_head'...) like hq_shake_js(),
     * but maybe better if it's not removable by plugins
     */
    if ('loggedout' == $hq_error->get_error_code()) {
        ?>
		<script>if("sessionStorage" in window){try{for(var key in sessionStorage){if(key.indexOf("hq-autosave-")!=-1){sessionStorage.removeItem(key)}}}catch(e){}};</script>
		<?php 
    }
    /**
     * Enqueue scripts and styles for the login page.
     *
     * @since 0.0.1
     */
    do_action('login_enqueue_scripts');
    /**
     * Fires in the login page header after scripts are enqueued.
     *
     * @since 0.0.1
     */
    do_action('login_head');
    //TODO: Goyo no multisite
    //if ( is_multisite() ) {
    if (false) {
        $login_header_url = network_home_url();
        $login_header_title = get_current_site()->site_name;
    } else {
        $login_header_url = __('https://hivequeen.org/');
        $login_header_title = __('Powered by HiveQueen');
    }
    /**
     * Filter link URL of the header logo above login form.
     *
     * @since 0.0.1
     *
     * @param string $login_header_url Login header logo URL.
     */
    $login_header_url = apply_filters('login_headerurl', $login_header_url);
    /**
     * Filter the title attribute of the header logo above login form.
     *
     * @since 0.0.1
     *
     * @param string $login_header_title Login header logo title attribute.
     */
    $login_header_title = apply_filters('login_headertitle', $login_header_title);
    $classes = array('login-action-' . $action, 'hq-core-ui');
    if (hq_is_mobile()) {
        $classes[] = 'mobile';
    }
    if (is_rtl()) {
        $classes[] = 'rtl';
    }
    if ($interim_login) {
        $classes[] = 'interim-login';
        ?>
		<style type="text/css">html{background-color: transparent;}</style>
		<?php 
        if ('success' === $interim_login) {
            $classes[] = 'interim-login-success';
        }
    }
    $classes[] = ' locale-' . sanitize_html_class(strtolower(str_replace('_', '-', get_locale())));
    /**
     * Filter the login page body classes.
     *
     * @since 0.0.1
     *
     * @param array  $classes An array of body classes.
     * @param string $action  The action that brought the visitor to the login page.
     */
    $classes = apply_filters('login_body_class', $classes, $action);
    ?>
	</head>
	<body class="login <?php 
    echo esc_attr(implode(' ', $classes));
    ?>
">
	<div id="login">
		<h1><a href="<?php 
    echo esc_url($login_header_url);
    ?>
" title="<?php 
    echo esc_attr($login_header_title);
    ?>
" tabindex="-1"><?php 
    bloginfo('name');
    ?>
</a></h1>
	<?php 
    unset($login_header_url, $login_header_title);
    /**
     * Filter the message to display above the login form.
     *
     * @since 0.0.1
     *
     * @param string $message Login message text.
     */
    $message = apply_filters('login_message', $message);
    if (!empty($message)) {
        echo $message . "\n";
    }
    // In case a plugin uses $error rather than the $hq_errors object
    if (!empty($error)) {
        $hq_error->add('error', $error);
        unset($error);
    }
    if ($hq_error->get_error_code()) {
        $errors = '';
        $messages = '';
        foreach ($hq_error->get_error_codes() as $code) {
            $severity = $hq_error->get_error_data($code);
            foreach ($hq_error->get_error_messages($code) as $error_message) {
                if ('message' == $severity) {
                    $messages .= '	' . $error_message . "<br />\n";
                } else {
                    $errors .= '	' . $error_message . "<br />\n";
                }
            }
        }
        if (!empty($errors)) {
            /**
             * Filter the error messages displayed above the login form.
             *
             * @since 0.0.1
             *
             * @param string $errors Login error message.
             */
            echo '<div id="login_error">' . apply_filters('login_errors', $errors) . "</div>\n";
        }
        if (!empty($messages)) {
            /**
             * Filter instructional messages displayed above the login form.
             *
             * @since 0.0.1
             *
             * @param string $messages Login messages.
             */
            echo '<p class="message">' . apply_filters('login_messages', $messages) . "</p>\n";
        }
    }
}