<?php
/**
* Nazwa wtyczki: The Teacher Life Saver
* Adres URI wtyczki:  https://schoolpress.me/
* Opis: Informuje nauczyciela o przybyciu rodzica ucznia
* Wersja:     0.0.1
*/

// Zaczep akcji przeznaczony do utworzenia widżetu panelu głównego
function ttls_dashboard_widget() {
    global $wp_meta_boxes;

    // Identyfikator widżetu, nazwa widżetu i funkcji wywołania zwrotnego
    wp_add_dashboard_widget('ttls_widget', 'Student Pick Ups', 'ttls_dashboard');
}
add_action('wp_dashboard_setup', 'ttls_dashboard_widget');

// Kod znaczników dla widżetu panelu głównego
function ttls_dashboard() {
    echo "<div id='ttls_message'></div>";
}

// Zmiana domyślnej częstotliwości na 15 sekund, aby nie czekać zbyt długo
function ttls_heartbeat_settings( $settings ) {
    $settings['interval'] = 15; // Dowolna wartość z przedziału 15 – 60 sekund
    return $settings;
}
add_filter( 'heartbeat_settings', 'ttls_heartbeat_settings', 1 );

// Kolejkowanie heartbeat.js i funkcji JavaScriptu
function ttls_heartbeat_init()
{
    // Widżet można uruchomić tylko na stronie panelu głównego (index.php)
    global $pagenow;
    if( $pagenow != 'index.php' )
        return;

    // Kolejkowanie API Heartbeat
    wp_enqueue_script('heartbeat');

    // Wczytanie w stopce funkcji JavaScriptu
    add_action("admin_footer", "ttls_js_wp_footer");
}
add_action("admin_init", "ttls_heartbeat_init");

// Funkcje JavaScriptu wykonane w stopce
function ttls_js_wp_footer()
{
    ?>
    <script>
    jQuery(document).ready(function() {

    // Użycie zdarzenia heartbeat-send do wysłania dowolnych kluczy i wartości w tablicy danych
    jQuery(document).on('heartbeat-send', function(e, data) {
        data['client'] = 'check-for-parents';
    });

    // Użycie funkcji heartbeat-tick do sprawdzenia danych i podjęcia akcji
    jQuery(document).on('heartbeat-tick', function(e, data) {
    if(data['server'])
        document.getElementById("ttls_message").innerHTML = data['server']
        + document.getElementById("ttls_message").innerHTML;
        });
    });
    </script>
    <?php
}

// Działająca po stronie serwera funkcja, która otrzymuje i przetwarza żądanie, a następnie zwraca odpowiedź
function ttls_heartbeat_received($response, $data)
{
    // Wyszukanie danych przekazanych przez funkcję JS heartbeat-send
    if($data['client'] == 'check-for-parents')
    {
        // Przygotowanie dowolnej odpowiedzi
        $r = '<p>';
        $r .= date( 'm/j/y g:i a', current_time( 'timestamp', 0 ) );
        $r .= " - Brian Messenlehner, tata Niny Messenlehner ";
        $r .= "przyjechał białym samochodem Hummer H2 z 2007 roku.";
        $r .= '</p>';

        return $r;
    }
}
add_filter('heartbeat_received', 'ttls_heartbeat_received', 10, 2);
?>
