diff --git a/moje-statystyki.php b/moje-statystyki.php index df4301d..e9e00fd 100644 --- a/moje-statystyki.php +++ b/moje-statystyki.php @@ -822,3 +822,203 @@ function mystat_render_history_table() { + + current_time( 'Y' ), + 'month' => current_time( 'n' ), + ), $atts, 'moje_statystyki' ); + + $year = intval( $atts['year'] ); + $month = intval( $atts['month'] ); + + // Pobieranie danych z bazy + $table_activities = $wpdb->prefix . 'mystat_activities'; + $sql = $wpdb->prepare(" + SELECT a.*, c.name as category_name, eq.name as equipment_name + FROM $table_activities a + LEFT JOIN {$wpdb->prefix}mystat_categories c ON a.category_id = c.id + LEFT JOIN {$wpdb->prefix}mystat_equipment eq ON a.equipment_id = eq.id + WHERE YEAR(a.date) = %d AND MONTH(a.date) = %d + ORDER BY a.date ASC + ", $year, $month); + + $activities = $wpdb->get_results( $sql ); + + // Obliczanie podsumowań + $total_distance = 0; + $total_seconds = 0; + foreach ($activities as $activity) { + $total_distance += $activity->distance; + if ( ! empty( $activity->duration ) ) { + list($h, $m, $s) = explode(':', $activity->duration); + $total_seconds += $h * 3600 + $m * 60 + $s; + } + } + $hours = floor($total_seconds / 3600); + $minutes = floor(($total_seconds % 3600) / 60); + $total_duration_formatted = sprintf('%d godz. %d min.', $hours, $minutes); + + // Rozpoczęcie buforowania wyjścia + ob_start(); + ?> +
| Całkowity dystans | +Całkowity czas | +
|---|---|
| km | ++ |
| Data | +Tytuł | +Kategoria | +Dystans | +Czas | +Sprzęt | +
|---|---|---|---|---|---|
| date ) ) ); ?> | +title ); ?> | +category_name ); ?> | +distance, 2, ',', ' ' ); ?> km | +duration ); ?> | +equipment_name ); ?> | +
| Brak aktywności w tym miesiącu. | +|||||
Błąd: Nie podano ID wpisu w shortcode.
'; + } + + // Pobieranie danych z bazy + $table_activities = $wpdb->prefix . 'mystat_activities'; + $sql = $wpdb->prepare(" + SELECT a.*, c.name as category_name, et.name as event_type_name, eq.name as equipment_name + FROM $table_activities a + LEFT JOIN {$wpdb->prefix}mystat_categories c ON a.category_id = c.id + LEFT JOIN {$wpdb->prefix}mystat_event_types et ON a.event_type_id = et.id + LEFT JOIN {$wpdb->prefix}mystat_equipment eq ON a.equipment_id = eq.id + WHERE a.id = %d + ", $activity_id); + + $activity = $wpdb->get_row( $sql ); + + if ( ! $activity ) { + return 'Błąd: Nie znaleziono wpisu o ID ' . esc_html($activity_id) . '.
'; + } + + // Funkcja pomocnicza do wyświetlania wiersza + $render_row = function($label, $value, $unit = '') { + if ( ! is_null($value) && $value !== '' && $value != 0) { + echo 'date ) ) ); ?>
+ +| Strava | Zobacz aktywność |
|---|