/** * 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); }