wp_localize_script( 'wp-api', 'apiSettings', array(
    'root' => esc_url_raw( rest_url() ),
    'nonce' => wp_create_nonce( 'wp_rest' )
) );



$.ajax( {
    url: apiSettings.root + 'wp/v2/posts/1',
    method: 'POST',
    beforeSend: function ( xhr ) {
        xhr.setRequestHeader( 'X-WP-Nonce', apiSettings.nonce );
    },
    data:{
        'title' : 'Witaj, świecie!'
    }
    } ).done( function ( response ) {
        console.log( response );
    } );



$.ajax( {
    url: 'localhost/wp-json/wp/v2/posts/1',
    method: 'POST',
    beforeSend: function ( xhr ) {
        xhr.setRequestHeader( 'Authorization',
            'Basic ' + btoa( username + ':' + password ) );
    },
    data:{
        'title' : 'Witaj, świecie!'
    }
    } ).done( function ( response ) {
        console.log( response );
    } );



function wpsso_register_routes() {
    $options = wpsso_get_options();

    // Upewnienie się o włączeniu opcji host
    if ( ! $options['host'] ) {
        return;
    }

    register_rest_route(
        'wp-sso/v1',
        '/check',
        array(
            'methods'  => WP_REST_Server::READABLE,
            'callback' => 'wpsso_check_authentication_endpoint',
        )
    );
}
add_action( 'rest_api_init', 'wpsso_register_routes' );



function wpsso_check_authentication_endpoint() {
    global $current_user;

    if ( ! empty( $current_user->user_login ) ) {
        $r = array(
            'success' => true,
            'message' => sprintf( 'Zalogowany jako %s', $current_user->user_login ),
            'user_login' => $current_user->user_login,
            'user_email' => $current_user->user_email,
            'first_name' => $current_user->first_name,
            'last_name' => $current_user->last_name,
        );
    } else {
        $r = array(
            'success' => false,
            'message' => 'Niezalogowany.',
            'user_email' => null,
            'user_login' => $current_user->user_login,
            'first_name' => null,
            'last_name' => null,
        );
    }

    $r = rest_ensure_response( $r );

    return $r;
}



// Kod nie będzie wykonany, jeśli nie jest stosowane szyfrowanie SSL
if ( ! is_ssl() ) {
    return $user;
}

// Kod nie będzie wykonany, jeśli nie jest użyta nasza trasa
if ( ! empty( $_REQUEST['rest_route'] ) ) {
    $rest_route = '/' . rest_get_url_prefix() . $_REQUEST['rest_route'];
} else {
    $rest_route = $_SERVER['REQUEST_URI'];
}
if ( $rest_route != '/' . rest_get_url_prefix() . '/wp-sso/v1/check' ) {
    return $user;
}



$url = $options['host_url'];
$args = array(
    'headers' => array(
        'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password ),
    ),
);
$response = wp_remote_get( $url, $args );



array(6) {
    ["headers"]=>
        ...
    }
    ["body"]=>
    string(162) "{"success":true,...}"
    ["response"]=>
    array(2) {
        ["code"]=>
        int(200)
        ["message"]=>
        string(2) "OK"
    }
    ["cookies"]=>
    array(0) {
    }
    ["filename"]=>
    NULL
    ["http_response"]=>
    ...
}



function my_hide_sale_banner_script() {
    global $current_user;

    wp_register_script(
        'hide-sale-banner',
        plugins_url( 'js/hide-sale-banner.js', __FILE__ ),
        array( 'jquery' )
    );

    wp_localize_script( 'hide-sale-banner', 'HSBSettings', array(
        'root' => esc_url_raw( rest_url() ),
        'nonce' => wp_create_nonce( 'wp_rest' ),
        'current_user_id' => $current_user->ID,
    ) );
    wp_enqueue_script( 'hide-sale-banner' );
}
add_action( 'wp_enqueue_scripts', 'my_hide_sale_banner_script' );



jQuery(document).ready(function() {
    jQuery.ajax( {
        url: HSBSettings.root + 'wc/v3/customers/'
            + HSBSettings.current_user_id,
        method: 'GET',
        beforeSend: function ( xhr ) {
            xhr.setRequestHeader( 'X-WP-Nonce', HSBSettings.nonce );
        },
    } ).done( function ( customer ) {
        if ( customer['is_paying_customer'] ) {
            jQuery('#sale-banner').remove();
        }
    } );
} );



function my_highlight_admin_activity_script() {
?>
<style>
        li.activity.highlighted {
                background-color: #FFFFCC;
        }
</style>
<script>
        fetch( '/wp-json/buddypress/v1/activity?user_id=1&per_page=1' )
        .then( function( response ) {
                return response.json();
        })
        .then( function( activity ) {
                const elements = document.querySelectorAll(
      "a[href='" + activity[0].link + "']"
    );
                elements.forEach( function( element ) {
                        const wrapping_div = element.closest( 'li.activity' );
                        wrapping_div.classList.add( 'highlighted' );
                } );
        } );
</script>
<?php
}
add_action( 'wp_footer', 'my_highlight_admin_activity_script' );



function my_check_host_site_membership() {
    global $current_user;

    // Zmień te wartości
    $host_site_url = 'https://hostsite.com/';
    $restricted_post_id = 2;
    $apiuser = 'apiuser';
    $apipassword = 'apipassword';

    // Blokowany jest jedynie identyfikator określonego posta
    $queried_object = get_queried_object();
    if ( empty( $queried_object )
            || $queried_object->ID != $restricted_post_id ) {
        return;
    }

    // Jeżeli użytkownik nie jest zalogowany, trzeba go przekierować na odpowiednią stronę
    if ( ! is_user_logged_in() ) {
        wp_redirect( $host_site_url );
        exit;
    }

    // Sprawdzenie poziomu członkostwa
    $url = esc_url(
        $host_site_url
        . '/wp-json/wp/v2/users/?search='
        . urlencode( $current_user->user_email )
    );
    $args = array(
        'headers' => array(
            'Authorization' => 'Basic '
            . base64_encode( $apiuser . ':' . $apipassword ),
        ),
    );

    // Upewnienie się, że pierwsze żądanie zakończyło się sukcesem
    $response = wp_remote_get( $url, $args );
    if ( empty( $response ) || $response['response']['code'] != '200' ) {
        wp_redirect( $host_site_url );
        exit;
    }

    // Upewnienie się o znalezieniu użytkownika
    $response_body = json_decode( $response['body'] );
    if ( empty( $response_body ) ) {
        wp_redirect( $host_site_url );
        exit;
    }

    // Wynikiem wyszukiwania użytkownika jest tablica. Pobieramy z niej pierwszy element
    $host_user = $response_body[0];

    // Sprawdzenie poziomu członkostwa użytkownika
    $url = esc_url(
        $host_site_url
        . '/wp-json/wp/v2/users/'
        . $host_user->id
        . '/pmpro_membership_level'
    );
    $response = wp_remote_get( $url, $args );

    // Upewnienie się, że drugie żądanie zakończyło się sukcesem
    if ( empty( $response ) || $response['response']['code'] != '200' ) {
        wp_redirect( $host_site_url );
        exit;
    }

    // Sprawdzenie poziomu członkostwa użytkownika
    $membership_level = json_decode( $response['body'] );
    if ( empty( $membership_level ) ) {
        wp_redirect( $host_site_url );
        exit;
    }
    /*
        Jeżeli tutaj dotrzemy, zmienna $membership_level będzie zawierała informacje
        o poziomie członkostwa użytkownika. Można to sprawdzić pod kątem określonego
        poziomu lub zakończyć operację i pozwolić użytkownikom na wyświetlenie
        na stronie danych dotyczących wszystkich poziomów członkostwa
    */
}
add_action( 'template_redirect', 'my_check_host_site_membership' );



