/** * Set the date range. * * @param $Sender * @throws Exception */ private function configureRange($Sender) { // Grab the range resolution from the url or form. Default to "day" range. $Sender->Range = getIncomingValue('Range'); if (!in_array($Sender->Range, array(VanillaStatsPlugin::RESOLUTION_DAY, VanillaStatsPlugin::RESOLUTION_MONTH))) { $Sender->Range = VanillaStatsPlugin::RESOLUTION_DAY; } // Define default values for start & end dates $Sender->DayStampStart = strtotime('1 month ago'); // Default to 1 month ago $Sender->MonthStampStart = strtotime('12 months ago'); // Default to 24 months ago $Sender->DayDateStart = Gdn_Format::toDate($Sender->DayStampStart); $Sender->MonthDateStart = Gdn_Format::toDate($Sender->MonthStampStart); // Validate that any values coming from the url or form are valid $Sender->DateRange = getIncomingValue('DateRange'); $DateRangeParts = explode('-', $Sender->DateRange); $Sender->StampStart = strtotime(val(0, $DateRangeParts)); $Sender->StampEnd = strtotime(val(1, $DateRangeParts)); if (!$Sender->StampEnd) { $Sender->StampEnd = strtotime('yesterday'); } // If no date was provided, or the provided values were invalid, use defaults if (!$Sender->StampStart) { $Sender->StampEnd = time(); if ($Sender->Range == 'day') { $Sender->StampStart = $Sender->DayStampStart; } if ($Sender->Range == 'month') { $Sender->StampStart = $Sender->MonthStampStart; } } // Assign the variables used in the page with the validated values. $Sender->DateStart = Gdn_Format::toDate($Sender->StampStart); $Sender->DateEnd = Gdn_Format::toDate($Sender->StampEnd); $Sender->DateRange = $Sender->DateStart . ' - ' . $Sender->DateEnd; // Define the range boundaries. $Database = Gdn::database(); // We use the User table as the boundary start b/c users are always inserted before discussions or comments. // We have to put a little kludge in here b/c an older version of Vanilla hard-inserted the admin user with an insert date of Sept 16, 1975. $Data = $Database->sql()->select('DateInserted')->from('User')->where('DateInserted >', '1975-09-17')->orderBy('DateInserted', 'asc')->limit(1)->get()->firstRow(); $Sender->BoundaryStart = Gdn_Format::date($Data ? $Data->DateInserted : $Sender->DateStart, '%Y-%m-%d'); $Sender->BoundaryEnd = Gdn_Format::date($Sender->DateEnd, '%Y-%m-%d'); }