<?php

/*
Plugin Name: User Registration Chart
Plugin URI: https://codewp.ai
Description: Adds a widget to the WordPress dashboard showing user registration data as a bar chart for the past 7 days.
Version: 1.0
Author: CodeWP Assistant
Author URI: mailto:info@codewp.ai
*/

function codewp_dashboard_widget() {
    wp_add_dashboard_widget(
        'codewp_user_registration_chart',
        'User Registration Chart',
        'codewp_user_registration_chart_function'
    );
}
add_action('wp_dashboard_setup', 'codewp_dashboard_widget');

function codewp_user_registration_chart_function() {
    global $wpdb;

    $dates = [];
    for ($i = 0; $i < 7; $i++) {
        $dates[] = date('Y-m-d', strtotime("-{$i} days"));
    }

    $user_counts = [];
    foreach ($dates as $date) {
        $user_counts[] = (int) $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(ID) FROM $wpdb->users WHERE DATE(user_registered) = %s",
            $date
        ));
    }

    echo '<div id="user_registration_chart"></div>';
    wp_enqueue_script('google-charts', 'https://www.gstatic.com/charts/loader.js');
    wp_add_inline_script('google-charts', sprintf("
        google.charts.load('current', {'packages':['corechart']});
        google.charts.setOnLoadCallback(drawChart);
        function drawChart() {
            var data = google.visualization.arrayToDataTable(%s);
            var options = {
                title: 'User Registration',
                legend: { position: 'none' },
                hAxis: {
                    title: 'Date',
                    format: 'M/d/yy',
                },
                vAxis: {
                    title: 'Number of registrations',
                },
                bars: 'vertical'
            };
            var chart = new google.visualization.ColumnChart(document.getElementById('user_registration_chart'));
            chart.draw(data, options);
        }
    ", json_encode(array_merge([['Date', 'Registrations']], array_reverse(array_map(null, $dates, $user_counts))))));
}