/**
 * 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.8
 * @return void
*/
function rcp_get_report_dates()
{
    $dates = array();
    // Make sure the reports are based off of the correct timezone
    date_default_timezone_set(rcp_get_timezone_id());
    $dates['range'] = isset($_GET['range']) ? $_GET['range'] : 'this_month';
    $dates['day'] = isset($_GET['day']) ? $_GET['day'] : null;
    $dates['m_start'] = isset($_GET['m_start']) ? $_GET['m_start'] : 1;
    $dates['m_end'] = isset($_GET['m_end']) ? $_GET['m_end'] : 12;
    $dates['year'] = isset($_GET['year']) ? $_GET['year'] : date('Y');
    $dates['year_end'] = isset($_GET['y_end']) ? $_GET['y_end'] : date('Y');
    // Modify dates based on predefined ranges
    switch ($dates['range']) {
        case 'this_month':
            $dates['m_start'] = date('n');
            $dates['m_end'] = date('n');
            $dates['year'] = date('Y');
            break;
        case 'last_month':
            if ($dates['m_start'] == 1) {
                $dates['m_start'] = 12;
                $dates['m_end'] = 12;
                $dates['year'] = date('Y') - 1;
                $dates['year_end'] = date('Y') - 1;
            } else {
                $dates['m_start'] = date('n') - 1;
                $dates['m_end'] = date('n') - 1;
                $dates['year'] = date('Y');
            }
            break;
        case 'this_week':
            $dates['day'] = date('d', current_time('timestamp') - (date('w') - 1) * 60 * 60 * 24) - 1;
            $dates['day'] += get_option('start_of_week');
            $dates['day_end'] = $dates['day'] + 6;
            $dates['m_start'] = date('n');
            $dates['m_end'] = date('n');
            $dates['year'] = date('Y');
            break;
        case 'last_week':
            $dates['day'] = date('d', current_time('timestamp') - (date('w') - 1) * 60 * 60 * 24) - 8;
            $dates['day'] += get_option('start_of_week');
            $dates['day_end'] = $dates['day'] + 6;
            $dates['m_start'] = date('n');
            $dates['m_end'] = date('n');
            $dates['year'] = date('Y');
            break;
        case 'this_quarter':
            $month_now = date('n');
            if ($month_now <= 3) {
                $dates['m_start'] = 1;
                $dates['m_end'] = 3;
                $dates['year'] = date('Y');
            } else {
                if ($month_now <= 6) {
                    $dates['m_start'] = 4;
                    $dates['m_end'] = 6;
                    $dates['year'] = date('Y');
                } else {
                    if ($month_now <= 9) {
                        $dates['m_start'] = 7;
                        $dates['m_end'] = 9;
                        $dates['year'] = date('Y');
                    } else {
                        $dates['m_start'] = 10;
                        $dates['m_end'] = 12;
                        $dates['year'] = date('Y');
                    }
                }
            }
            break;
        case 'last_quarter':
            $month_now = date('n');
            if ($month_now <= 3) {
                $dates['m_start'] = 10;
                $dates['m_end'] = 12;
                $dates['year'] = date('Y') - 1;
                // Previous year
            } else {
                if ($month_now <= 6) {
                    $dates['m_start'] = 1;
                    $dates['m_end'] = 3;
                    $dates['year'] = date('Y');
                } else {
                    if ($month_now <= 9) {
                        $dates['m_start'] = 4;
                        $dates['m_end'] = 6;
                        $dates['year'] = date('Y');
                    } else {
                        $dates['m_start'] = 7;
                        $dates['m_end'] = 9;
                        $dates['year'] = date('Y');
                    }
                }
            }
            break;
        case 'this_year':
            $dates['m_start'] = 1;
            $dates['m_end'] = 12;
            $dates['year'] = date('Y');
            break;
        case 'last_year':
            $dates['m_start'] = 1;
            $dates['m_end'] = 12;
            $dates['year'] = date('Y') - 1;
            $dates['year_end'] = date('Y') - 1;
            break;
    }
    return apply_filters('rcp_report_dates', $dates);
}
/**
 * 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.8
 * @return void
*/
function rcp_get_report_dates()
{
    $dates = array();
    // Make sure the reports are based off of the correct timezone
    date_default_timezone_set(rcp_get_timezone_id());
    $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['m_start'] = date('n', $current_time);
            $dates['m_end'] = date('n', $current_time);
            $dates['year'] = 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':
        case 'last_week':
            $base_time = $dates['range'] === 'this_week' ? current_time('mysql') : date('Y-m-d h:i:s', current_time('timestamp') - WEEK_IN_SECONDS);
            $start_end = get_weekstartend($base_time, get_option('start_of_week'));
            $dates['day'] = date('d', $start_end['start']);
            $dates['m_start'] = date('n', $start_end['start']);
            $dates['year'] = date('Y', $start_end['start']);
            $dates['day_end'] = date('d', $start_end['end']);
            $dates['m_end'] = date('n', $start_end['end']);
            $dates['year_end'] = date('Y', $start_end['end']);
            break;
        case 'this_quarter':
            $month_now = date('n', $current_time);
            if ($month_now <= 3) {
                $dates['m_start'] = 1;
                $dates['m_end'] = 4;
                $dates['year'] = date('Y', $current_time);
            } else {
                if ($month_now <= 6) {
                    $dates['m_start'] = 4;
                    $dates['m_end'] = 7;
                    $dates['year'] = date('Y', $current_time);
                } else {
                    if ($month_now <= 9) {
                        $dates['m_start'] = 7;
                        $dates['m_end'] = 10;
                        $dates['year'] = date('Y', $current_time);
                    } else {
                        $dates['m_start'] = 10;
                        $dates['m_end'] = 1;
                        $dates['year'] = date('Y', $current_time);
                        $dates['year_end'] = date('Y', $current_time) + 1;
                    }
                }
            }
            break;
        case 'last_quarter':
            $month_now = date('n');
            if ($month_now <= 3) {
                $dates['m_start'] = 10;
                $dates['m_end'] = 12;
                $dates['year'] = date('Y', $current_time) - 1;
                // Previous year
                $dates['year_end'] = date('Y', $current_time) - 1;
                // Previous year
            } else {
                if ($month_now <= 6) {
                    $dates['m_start'] = 1;
                    $dates['m_end'] = 3;
                    $dates['year'] = date('Y', $current_time);
                } else {
                    if ($month_now <= 9) {
                        $dates['m_start'] = 4;
                        $dates['m_end'] = 6;
                        $dates['year'] = date('Y', $current_time);
                    } else {
                        $dates['m_start'] = 7;
                        $dates['m_end'] = 9;
                        $dates['year'] = date('Y', $current_time);
                    }
                }
            }
            break;
        case 'this_year':
            $dates['m_start'] = 1;
            $dates['m_end'] = 12;
            $dates['year'] = 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;
    }
    return apply_filters('rcp_report_dates', $dates);
}