????JFIF??x?x????'
Server IP : 104.21.80.1 / Your IP : 216.73.216.145 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/tempvsty/pontiacques.org/wp-content/plugins/give/includes/admin/reports/ |
Upload File : |
<?php /** * Graphing Functions * * @package Give * @subpackage Admin/Reports * @copyright Copyright (c) 2016, GiveWP * @license https://opensource.org/licenses/gpl-license GNU Public License * @since 1.0 */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Show report graphs * * @since 1.0 * @return void */ function give_reports_graph() { // Retrieve the queried dates. $donation_stats = new Give_Payment_Stats(); $dates = give_get_report_dates(); // Determine graph options. switch ( $dates['range'] ) : case 'today': case 'yesterday': $day_by_day = true; break; case 'last_year': case 'this_year': case 'last_quarter': case 'this_quarter': $day_by_day = false; break; case 'other': if ( $dates['m_end'] - $dates['m_start'] >= 2 || $dates['year_end'] > $dates['year'] && ( $dates['m_start'] != '12' && $dates['m_end'] != '1' ) ) { $day_by_day = false; } else { $day_by_day = true; } break; default: $day_by_day = true; break; endswitch; $earnings_totals = 0.00; // Total earnings for time period shown. $sales_totals = 0; // Total sales for time period shown. $earnings_data = []; $sales_data = []; if ( 'today' === $dates['range'] || 'yesterday' === $dates['range'] ) { // Hour by hour. $hour = 0; $month = date( 'n', current_time( 'timestamp' ) ); while ( $hour <= 23 ) : $start_date = mktime( $hour, 0, 0, $month, $dates['day'], $dates['year'] ); $end_date = mktime( $hour, 59, 59, $month, $dates['day'], $dates['year'] ); $sales = $donation_stats->get_sales( 0, $start_date, $end_date ); $earnings = $donation_stats->get_earnings( 0, $start_date, $end_date ); $sales_totals += $sales; $earnings_totals += $earnings; $sales_data[] = [ $start_date * 1000, $sales ]; $earnings_data[] = [ $start_date * 1000, $earnings ]; $hour ++; endwhile; } elseif ( 'this_week' === $dates['range'] || 'last_week' === $dates['range'] ) { // Day by day. $day = $dates['day']; $day_end = $dates['day_end']; $month = $dates['m_start']; while ( $day <= $day_end ) : $start_date = mktime( 0, 0, 0, $month, $day, $dates['year'] ); $end_date = mktime( 23, 59, 59, $month, $day, $dates['year'] ); $sales = $donation_stats->get_sales( 0, $start_date, $end_date ); $earnings = $donation_stats->get_earnings( 0, $start_date, $end_date ); $sales_totals += $sales; $earnings_totals += $earnings; $sales_data[] = [ $start_date * 1000, $sales ]; $earnings_data[] = [ $start_date * 1000, $earnings ]; $day ++; endwhile; } else { $y = $dates['year']; while ( $y <= $dates['year_end'] ) : if ( $dates['year'] === $dates['year_end'] ) { $month_start = $dates['m_start']; $month_end = $dates['m_end']; } elseif ( $y === $dates['year'] ) { $month_start = $dates['m_start']; $month_end = 12; } elseif ( $y === $dates['year_end'] ) { $month_start = 1; $month_end = $dates['m_end']; } else { $month_start = 1; $month_end = 12; } $i = $month_start; while ( $i <= $month_end ) : if ( $day_by_day ) { if ( $i === $month_end ) { $num_of_days = $dates['day_end']; } else { $num_of_days = cal_days_in_month( CAL_GREGORIAN, $i, $y ); } $d = $dates['day']; while ( $d <= $num_of_days ) : $start_date = mktime( 0, 0, 0, $i, $d, $y ); $end_date = mktime( 23, 59, 59, $i, $d, $y ); $sales = $donation_stats->get_sales( 0, $start_date, $end_date ); $earnings = $donation_stats->get_earnings( 0, $start_date, $end_date ); $sales_totals += $sales; $earnings_totals += $earnings; $sales_data[] = [ $start_date * 1000, $sales ]; $earnings_data[] = [ $start_date * 1000, $earnings ]; $d ++; endwhile; } else { // This Quarter, Last Quarter, This Year, Last Year. $start_date = mktime( 0, 0, 0, $i, 1, $y ); $end_date = mktime( 23, 59, 59, $i + 1, 0, $y ); $sales = $donation_stats->get_sales( 0, $start_date, $end_date ); $earnings = $donation_stats->get_earnings( 0, $start_date, $end_date ); $sales_totals += $sales; $earnings_totals += $earnings; $sales_data[] = [ $start_date * 1000, $sales ]; $earnings_data[] = [ $start_date * 1000, $earnings ]; } $i ++; endwhile; $y ++; endwhile; } $data = [ __( 'Revenue', 'give' ) => $earnings_data, __( 'Donations', 'give' ) => $sales_data, ]; // start our own output buffer. ob_start(); ?> <div id="give-dashboard-widgets-wrap"> <div class="metabox-holder" style="padding-top: 0;"> <div class="postbox"> <div class="inside"> <?php give_reports_graph_controls(); ?> <?php $graph = new Give_Graph( $data, [ 'dataType' => [ 'amount', 'count' ] ] ); $graph->set( 'x_mode', 'time' ); $graph->set( 'multiple_y_axes', true ); $graph->display(); if ( 'this_month' === $dates['range'] ) { $estimated = give_estimated_monthly_stats(); } ?> </div> </div> <table class="widefat reports-table alignleft" style="max-width:450px"> <tbody> <tr> <th scope="row"><strong><?php _e( 'Total revenue for period:', 'give' ); ?></strong></th> <td><?php echo give_currency_filter( give_format_amount( $earnings_totals, [ 'sanitize' => false ] ) ); ?></td> </tr> <tr class="alternate"> <th scope="row"><strong><?php _e( 'Total donations for period:', 'give' ); ?><strong></th> <td><?php echo $sales_totals; ?></td> </tr> <?php if ( 'this_month' === $dates['range'] ) : ?> <tr> <th scope="row"><strong><?php _e( 'Estimated monthly revenue:', 'give' ); ?></strong></th> <td><?php echo give_currency_filter( give_format_amount( $estimated['earnings'], [ 'sanitize' => false ] ) ); ?></td> </tr> <tr class="alternate"> <th scope="row"><strong><?php _e( 'Estimated monthly donations:', 'give' ); ?></strong></th> <td><?php echo floor( $estimated['sales'] ); ?></td> </tr> <?php endif; ?> </table> <?php /** * Fires on report graphs widget. * * Allows you to add additional stats to the widget. * * @since 1.0 */ do_action( 'give_reports_graph_additional_stats' ); ?> </div> </div> <?php // get output buffer contents and end our own buffer. $output = ob_get_contents(); ob_end_clean(); echo $output; } /** * Show report graphs of a specific donation form. * * @since 1.0 * * @param int $form_id * * @return void */ function give_reports_graph_of_form( $form_id = 0 ) { // Retrieve the queried dates. $dates = give_get_report_dates(); // Determine graph options. switch ( $dates['range'] ) : case 'today': case 'yesterday': $day_by_day = true; break; case 'last_year': $day_by_day = false; break; case 'this_year': $day_by_day = false; break; case 'last_quarter': $day_by_day = false; break; case 'this_quarter': $day_by_day = false; break; case 'other': if ( $dates['m_end'] - $dates['m_start'] >= 2 || $dates['year_end'] > $dates['year'] ) { $day_by_day = false; } else { $day_by_day = true; } break; default: $day_by_day = true; break; endswitch; $earnings_totals = (float) 0.00; // Total earnings for time period shown. $sales_totals = 0; // Total sales for time period shown. $earnings_data = []; $sales_data = []; $stats = new Give_Payment_Stats(); if ( $dates['range'] == 'today' || $dates['range'] == 'yesterday' ) { // Hour by hour $month = $dates['m_start']; $hour = 0; $minute = 0; $second = 0; while ( $hour <= 23 ) : if ( $hour == 23 ) { $minute = $second = 59; } $date = mktime( $hour, $minute, $second, $month, $dates['day'], $dates['year'] ); $date_end = mktime( $hour + 1, $minute, $second, $month, $dates['day'], $dates['year'] ); $sales = $stats->get_sales( $form_id, $date, $date_end ); $sales_totals += $sales; $earnings = $stats->get_earnings( $form_id, $date, $date_end ); $earnings_totals += $earnings; $sales_data[] = [ $date * 1000, $sales ]; $earnings_data[] = [ $date * 1000, $earnings ]; $hour ++; endwhile; } elseif ( $dates['range'] == 'this_week' || $dates['range'] == 'last_week' ) { // Day by day. $day = $dates['day']; $day_end = $dates['day_end']; $month = $dates['m_start']; while ( $day <= $day_end ) : $date = mktime( 0, 0, 0, $month, $day, $dates['year'] ); $date_end = mktime( 0, 0, 0, $month, $day + 1, $dates['year'] ); $sales = $stats->get_sales( $form_id, $date, $date_end ); $sales_totals += $sales; $earnings = $stats->get_earnings( $form_id, $date, $date_end ); $earnings_totals += $earnings; $sales_data[] = [ $date * 1000, $sales ]; $earnings_data[] = [ $date * 1000, $earnings ]; $day ++; endwhile; } else { $y = $dates['year']; while ( $y <= $dates['year_end'] ) : $last_year = false; if ( $dates['year'] == $dates['year_end'] ) { $month_start = $dates['m_start']; $month_end = $dates['m_end']; $last_year = true; } elseif ( $y == $dates['year'] ) { $month_start = $dates['m_start']; $month_end = 12; } else { $month_start = 1; $month_end = 12; } $i = $month_start; while ( $i <= $month_end ) : if ( $day_by_day ) { if ( $i == $month_end && $last_year ) { $num_of_days = $dates['day_end']; } else { $num_of_days = cal_days_in_month( CAL_GREGORIAN, $i, $y ); } $d = $dates['day']; while ( $d <= $num_of_days ) : $date = mktime( 0, 0, 0, $i, $d, $y ); $end_date = mktime( 23, 59, 59, $i, $d, $y ); $sales = $stats->get_sales( $form_id, $date, $end_date ); $sales_totals += $sales; $earnings = $stats->get_earnings( $form_id, $date, $end_date ); $earnings_totals += $earnings; $sales_data[] = [ $date * 1000, $sales ]; $earnings_data[] = [ $date * 1000, $earnings ]; $d ++; endwhile; } else { $num_of_days = cal_days_in_month( CAL_GREGORIAN, $i, $y ); $date = mktime( 0, 0, 0, $i, 1, $y ); $end_date = mktime( 23, 59, 59, $i, $num_of_days, $y ); $sales = $stats->get_sales( $form_id, $date, $end_date ); $sales_totals += $sales; $earnings = $stats->get_earnings( $form_id, $date, $end_date ); $earnings_totals += $earnings; $sales_data[] = [ $date * 1000, $sales ]; $earnings_data[] = [ $date * 1000, $earnings ]; } $i ++; endwhile; $y ++; endwhile; } $data = [ __( 'Revenue', 'give' ) => $earnings_data, __( 'Donations', 'give' ) => $sales_data, ]; ?> <h3><span> <?php printf( /* translators: %s: form title */ esc_html__( 'Revenue Report for %s', 'give' ), get_the_title( $form_id ) ); ?> </span></h3> <div id="give-dashboard-widgets-wrap"> <div class="metabox-holder" style="padding-top: 0;"> <div class="postbox"> <div class="inside"> <?php give_reports_graph_controls(); ?> <?php $graph = new Give_Graph( $data, [ 'dataType' => [ 'amount', 'count' ] ] ); $graph->set( 'x_mode', 'time' ); $graph->set( 'multiple_y_axes', true ); $graph->display(); ?> </div> </div> <!--/.postbox --> <table class="widefat reports-table alignleft" style="max-width:450px"> <tbody> <tr> <th scope="row"><strong><?php _e( 'Total revenue for period:', 'give' ); ?></strong></th> <td><?php echo give_currency_filter( give_format_amount( $earnings_totals, [ 'sanitize' => false ] ) ); ?></td> </tr> <tr class="alternate"> <th scope="row"><strong><?php _e( 'Total donations for period:', 'give' ); ?></strong></th> <td><?php echo $sales_totals; ?></td> </tr> <tr> <th scope="row"><strong><?php _e( 'Average monthly revenue:', 'give' ); ?></strong></th> <td><?php echo give_currency_filter( give_format_amount( give_get_average_monthly_form_earnings( $form_id ), [ 'sanitize' => false ] ) ); ?></td> </tr> <tr class="alternate"> <th scope="row"><strong><?php _e( 'Average monthly donations:', 'give' ); ?></strong></th> <td><?php echo number_format( give_get_average_monthly_form_sales( $form_id ), 0 ); ?></td> </tr> </tbody> </table> <?php /** * Fires on report graphs widget. * * Allows you to add additional stats to the widget. * * @since 1.0 */ do_action( 'give_reports_graph_additional_stats' ); ?> </div> </div> <?php echo ob_get_clean(); } /** * Show report graph date filters * * @since 1.0.0 * @since 1.8.0 The hidden `view` field is replaced with `tab` field. * * @return void */ function give_reports_graph_controls() { $date_options = apply_filters( 'give_report_date_options', [ 'today' => __( 'Today', 'give' ), 'yesterday' => __( 'Yesterday', 'give' ), 'this_week' => __( 'This Week', 'give' ), 'last_week' => __( 'Last Week', 'give' ), 'this_month' => __( 'This Month', 'give' ), 'last_month' => __( 'Last Month', 'give' ), 'this_quarter' => __( 'This Quarter', 'give' ), 'last_quarter' => __( 'Last Quarter', 'give' ), 'this_year' => __( 'This Year', 'give' ), 'last_year' => __( 'Last Year', 'give' ), 'other' => __( 'Custom', 'give' ), ] ); $dates = give_get_report_dates(); $display = $dates['range'] == 'other' ? '' : 'display: none;'; $tab = isset( $_GET['tab'] ) ? sanitize_text_field( $_GET['tab'] ) : 'earnings'; if ( empty( $dates['day_end'] ) ) { $dates['day_end'] = cal_days_in_month( CAL_GREGORIAN, date( 'n' ), date( 'Y' ) ); } /** * Fires before displaying report graph date filters. * * @since 1.0 */ do_action( 'give_report_graph_controls_before' ); ?> <form id="give-graphs-filter" method="get"> <div class="tablenav top"> <div class="actions"> <input type="hidden" name="post_type" value="give_forms" /> <input type="hidden" name="page" value="give-reports" /> <input type="hidden" name="tab" value="<?php echo esc_attr( $tab ); ?>" /> <?php if ( isset( $_GET['form-id'] ) ) : ?> <input type="hidden" name="form-id" value="<?php echo absint( $_GET['form-id'] ); ?>" /> <?php endif; ?> <div id="give-graphs-date-options-wrap"> <select id="give-graphs-date-options" name="range"> <?php foreach ( $date_options as $key => $option ) : ?> <option value="<?php echo esc_attr( $key ); ?>"<?php selected( $key, $dates['range'] ); ?>><?php echo esc_html( $option ); ?></option> <?php endforeach; ?> </select> <div id="give-date-range-options" style="<?php echo esc_attr( $display ); ?>"> <span class="screen-reader-text"><?php _e( 'From', 'give' ); ?> </span> <select id="give-graphs-month-start" name="m_start" aria-label="Start Month"> <?php for ( $i = 1; $i <= 12; $i ++ ) : ?> <option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['m_start'] ) ); ?>><?php echo esc_html( give_month_num_to_name( $i ) ); ?></option> <?php endfor; ?> </select> <select id="give-graphs-day-start" name="day" aria-label="Start Day"> <?php for ( $i = 1; $i <= 31; $i ++ ) : ?> <option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['day'] ) ); ?>><?php echo esc_html( $i ); ?></option> <?php endfor; ?> </select> <select id="give-graphs-year-start" name="year" aria-label="Start Year"> <?php for ( $i = 2007; $i <= date( 'Y' ); $i ++ ) : ?> <option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['year'] ) ); ?>><?php echo esc_html( $i ); ?></option> <?php endfor; ?> </select> <span class="screen-reader-text"><?php esc_html_e( 'To', 'give' ); ?> </span> <span>–</span> <select id="give-graphs-month-end" name="m_end" aria-label="End Month"> <?php for ( $i = 1; $i <= 12; $i ++ ) : ?> <option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['m_end'] ) ); ?>><?php echo esc_html( give_month_num_to_name( $i ) ); ?></option> <?php endfor; ?> </select> <select id="give-graphs-day-end" name="day_end" aria-label="End Day"> <?php for ( $i = 1; $i <= 31; $i ++ ) : ?> <option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['day_end'] ) ); ?>><?php echo esc_html( $i ); ?></option> <?php endfor; ?> </select> <select id="give-graphs-year-end" name="year_end" aria-label="End Year"> <?php for ( $i = 2007; $i <= date( 'Y' ); $i ++ ) : ?> <option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['year_end'] ) ); ?>><?php echo esc_html( $i ); ?></option> <?php endfor; ?> </select> </div> <input type="submit" class="button-secondary" value="<?php _e( 'Filter', 'give' ); ?>" /> </div> <input type="hidden" name="give_action" value="filter_reports" /> </div> </div> </form> <?php /** * Fires after displaying report graph date filters. * * @since 1.0 */ do_action( 'give_report_graph_controls_after' ); } /** * Sets up the dates used to filter graph data * * Date sent via $_GET is read first and then modified (if needed) to match the * selected date-range (if any) * * @since 1.0 * * @return array */ function give_get_report_dates() { $dates = []; $current_time = current_time( 'timestamp' ); $dates['range'] = isset( $_GET['range'] ) ? $_GET['range'] : 'this_month'; $dates['year'] = isset( $_GET['year'] ) ? $_GET['year'] : date( 'Y' ); $dates['year_end'] = isset( $_GET['year_end'] ) ? $_GET['year_end'] : date( 'Y' ); $dates['m_start'] = isset( $_GET['m_start'] ) ? $_GET['m_start'] : 1; $dates['m_end'] = isset( $_GET['m_end'] ) ? $_GET['m_end'] : 12; $dates['day'] = isset( $_GET['day'] ) ? $_GET['day'] : 1; $dates['day_end'] = isset( $_GET['day_end'] ) ? $_GET['day_end'] : cal_days_in_month( CAL_GREGORIAN, $dates['m_end'], $dates['year'] ); // Modify dates based on predefined ranges. switch ( $dates['range'] ) : case 'this_month': $dates['m_start'] = date( 'n', $current_time ); $dates['m_end'] = date( 'n', $current_time ); $dates['day'] = 1; $dates['day_end'] = cal_days_in_month( CAL_GREGORIAN, $dates['m_end'], $dates['year'] ); $dates['year'] = date( 'Y' ); $dates['year_end'] = date( 'Y' ); break; case 'last_month': if ( date( 'n' ) == 1 ) { $dates['m_start'] = 12; $dates['m_end'] = 12; $dates['year'] = date( 'Y', $current_time ) - 1; $dates['year_end'] = date( 'Y', $current_time ) - 1; } else { $dates['m_start'] = date( 'n' ) - 1; $dates['m_end'] = date( 'n' ) - 1; $dates['year_end'] = $dates['year']; } $dates['day_end'] = cal_days_in_month( CAL_GREGORIAN, $dates['m_end'], $dates['year'] ); break; case 'today': $dates['day'] = date( 'd', $current_time ); $dates['day_end'] = date( 'd', $current_time ); $dates['m_start'] = date( 'n', $current_time ); $dates['m_end'] = date( 'n', $current_time ); $dates['year'] = date( 'Y', $current_time ); $dates['year_end'] = date( 'Y', $current_time ); break; case 'yesterday': $year = date( 'Y', $current_time ); $month = date( 'n', $current_time ); $day = date( 'd', $current_time ); if ( $month == 1 && $day == 1 ) { $year -= 1; $month = 12; $day = cal_days_in_month( CAL_GREGORIAN, $month, $year ); } elseif ( $month > 1 && $day == 1 ) { $month -= 1; $day = cal_days_in_month( CAL_GREGORIAN, $month, $year ); } else { $day -= 1; } $dates['day'] = $day; $dates['m_start'] = $month; $dates['m_end'] = $month; $dates['year'] = $year; $dates['year_end'] = $year; break; case 'this_week': $dates['day'] = date( 'd', $current_time - ( date( 'w', $current_time ) - 1 ) * 60 * 60 * 24 ) - 1; $dates['day'] += get_option( 'start_of_week' ); $dates['day_end'] = $dates['day'] + 6; $dates['m_start'] = date( 'n', $current_time ); $dates['m_end'] = date( 'n', $current_time ); $dates['year'] = date( 'Y', $current_time ); break; case 'last_week': $dates['day'] = date( 'd', $current_time - ( date( 'w' ) - 1 ) * 60 * 60 * 24 ) - 8; $dates['day'] += get_option( 'start_of_week' ); $dates['day_end'] = $dates['day'] + 6; $dates['year'] = date( 'Y' ); if ( date( 'j', $current_time ) <= 7 ) { $dates['m_start'] = date( 'n', $current_time ) - 1; $dates['m_end'] = date( 'n', $current_time ) - 1; if ( $dates['m_start'] <= 1 ) { $dates['year'] = date( 'Y', $current_time ) - 1; $dates['year_end'] = date( 'Y', $current_time ) - 1; } } else { $dates['m_start'] = date( 'n', $current_time ); $dates['m_end'] = date( 'n', $current_time ); } break; case 'this_quarter': $month_now = date( 'n', $current_time ); $dates['year'] = date( 'Y', $current_time ); if ( $month_now <= 3 ) { $dates['m_start'] = 1; $dates['m_end'] = 4; } elseif ( $month_now <= 6 ) { $dates['m_start'] = 4; $dates['m_end'] = 7; } elseif ( $month_now <= 9 ) { $dates['m_start'] = 7; $dates['m_end'] = 10; } else { $dates['m_start'] = 10; $dates['m_end'] = 1; $dates['year_end'] = date( 'Y', $current_time ) + 1; } break; case 'last_quarter': $month_now = date( 'n', $current_time ); $dates['year'] = date( 'Y', $current_time ); $dates['year_end'] = date( 'Y', $current_time ); if ( $month_now <= 3 ) { $dates['m_start'] = 10; $dates['m_end'] = 1; $dates['year'] = date( 'Y', $current_time ) - 1; // Previous year. } elseif ( $month_now <= 6 ) { $dates['m_start'] = 1; $dates['m_end'] = 4; } elseif ( $month_now <= 9 ) { $dates['m_start'] = 4; $dates['m_end'] = 7; } else { $dates['m_start'] = 7; $dates['m_end'] = 10; } break; case 'this_year': $dates['m_start'] = 1; $dates['m_end'] = 12; $dates['year'] = date( 'Y', $current_time ); $dates['year_end'] = date( 'Y', $current_time ); break; case 'last_year': $dates['m_start'] = 1; $dates['m_end'] = 12; $dates['year'] = date( 'Y', $current_time ) - 1; $dates['year_end'] = date( 'Y', $current_time ) - 1; break; endswitch; return apply_filters( 'give_report_dates', $dates ); } /** * Grabs all of the selected date info and then redirects appropriately * * @since 1.0.0 * @since 1.8.0 The `tab` query arg is added to the redirect. * * @param $data */ function give_parse_report_dates( $data ) { $dates = give_get_report_dates(); $view = give_get_reporting_view(); $tab = isset( $_GET['tab'] ) ? sanitize_text_field( $_GET['tab'] ) : 'earnings'; $id = isset( $_GET['form-id'] ) ? $_GET['form-id'] : null; wp_redirect( esc_url_raw(add_query_arg( $dates, admin_url( 'edit.php?post_type=give_forms&page=give-reports&legacy=true&tab=' . esc_attr( $tab ) . '&view=' . esc_attr( $view ) . '&form-id=' . absint( $id ) ) ) ) ); give_die(); } add_action( 'give_filter_reports', 'give_parse_report_dates' ); /** * Give Reports Refresh Button * * Outputs a "Refresh Reports" button for graphs * * @since 1.3 */ function give_reports_refresh_button() { $url = wp_nonce_url( add_query_arg( [ 'give_action' => 'refresh_reports_transients', 'give-messages[]' => 'refreshed-reports', ] ), 'give-refresh-reports' ); echo Give()->tooltips->render_link( [ 'label' => esc_attr__( 'Clicking this will clear the reports cache.', 'give' ), 'tag_content' => '<span class="give-admin-button-icon give-admin-button-icon-update"></span>' . esc_html__( 'Refresh Report Data', 'give' ), 'link' => esc_url( $url ), 'position' => 'left', 'attributes' => [ 'class' => 'button alignright give-admin-button', ], ] ); } add_action( 'give_reports_graph_additional_stats', 'give_reports_refresh_button' ); /** * Trigger the refresh of reports transients * * @param array $data Parameters sent from Settings page. * * @since 1.3 * * @return void */ function give_run_refresh_reports_transients( $data ) { if ( ! wp_verify_nonce( $data['_wpnonce'], 'give-refresh-reports' ) ) { return; } // Monthly stats. Give_Cache::delete( Give_Cache::get_key( 'give_estimated_monthly_stats' ) ); // Total earning. delete_option( 'give_earnings_total' ); // @todo: Refresh only range related stat cache give_delete_donation_stats(); } add_action( 'give_refresh_reports_transients', 'give_run_refresh_reports_transients' );