Files
hub-insurance/wp-content/plugins/gravitysmtp/includes/apps/endpoints/class-get-dashboard-data-endpoint.php
T
2026-07-02 15:54:39 -06:00

74 lines
2.1 KiB
PHP

<?php
namespace Gravity_Forms\Gravity_SMTP\Apps\Endpoints;
use Gravity_Forms\Gravity_SMTP\Apps\Config\Dashboard_Config;
use Gravity_Forms\Gravity_Tools\Endpoints\Endpoint;
use Gravity_Forms\Gravity_SMTP\Data_Store\Plugin_Opts_Data_Store;
use Gravity_Forms\Gravity_SMTP\Users\Roles;
class Get_Dashboard_Data_Endpoint extends Endpoint {
const ACTION_NAME = 'get_dashboard_data';
const PARAM_START_DATE = 'start_date';
const PARAM_END_DATE = 'end_date';
const PARAM_DATE_RANGE = 'date_range';
/**
* @var Dashboard_Config;
*/
protected $dasbhoard_config;
protected $minimum_cap = Roles::VIEW_DASHBOARD;
public function __construct( $dashboard_config ) {
$this->dasbhoard_config = $dashboard_config;
}
protected function get_nonce_name() {
return self::ACTION_NAME;
}
public function handle() {
if ( ! $this->validate() ) {
wp_send_json_error( __( 'Missing required parameters.', 'gravitysmtp' ), 400 );
}
$date_range = FILTER_INPUT( INPUT_POST, self::PARAM_DATE_RANGE );
$start = FILTER_INPUT( INPUT_POST, self::PARAM_START_DATE );
$end = FILTER_INPUT( INPUT_POST, self::PARAM_END_DATE );
if ( ! empty( $date_range ) && ! empty( $start ) ) {
wp_send_json_error( __( 'Send either a date range value or start/end dates; do not send both.', 'gravitysmtp' ), 400 );
}
if ( ! empty( $date_range ) ) {
$data = $this->get_data_for_range( $date_range );
wp_send_json_success( $data );
}
if ( empty( $start ) || empty( $end ) ) {
wp_send_json_error( __( 'Must provide both start and end dates.', 'gravitysmtp' ), 400 );
}
$period = 0;
$start = get_gmt_from_date( $start );
$end = get_gmt_from_date( $end );
$data = $this->dasbhoard_config->ajax_data( $start, $end, $period );
wp_send_json_success( $data );
}
private function get_data_for_range( $date_range ) {
$mod_string = sprintf( "-%d days", ( $date_range - 1 ) );
$start = get_gmt_from_date( gmdate( 'Y-m-d 00:00:00', strtotime( $mod_string ) ) );
$end = get_gmt_from_date( gmdate( 'Y-m-d 23:59:59' ) );
$period = $date_range;
return $this->dasbhoard_config->ajax_data( $start, $end, $period );
}
}