private function createDayGranural($itemized = array())
{
$interval = new \DateInterval('PT1M');
$sy = $this->event->getStartDate()->format('Y');
$sm = $this->event->getStartDate()->format('n');
$sd = $this->event->getStartDate()->format('j');
$ey = $this->event->getEndDate()->format('Y');
$em = $this->event->getEndDate()->format('n');
$ed = $this->event->getEndDate()->format('j');
// Clone the dates otherwise changes will change the event dates themselves
$start_date = clone $this->event->getStartDate();
$end_date = clone $this->event->getEndDate();
if ($this->event->isSameDay()) {
if (!($this->event->getStartDate()->format('H:i') == '00:00' && $this->event->getEndDate()->format('H:i') == '23:59')) {
$period = new \DatePeriod($start_date, $interval, $end_date->add(new \DateInterval('PT1M')));
$itemized_same_day = $this->createHourlyGranular($period, $start_date);
$itemized[EventItemizer::BAT_DAY][$sy][$sm]['d' . $sd] = -1;
$itemized[EventItemizer::BAT_HOUR][$sy][$sm]['d' . $sd] = $itemized_same_day[EventItemizer::BAT_HOUR][$sy][$sm]['d' . $sd];
$itemized[EventItemizer::BAT_MINUTE][$sy][$sm]['d' . $sd] = $itemized_same_day[EventItemizer::BAT_MINUTE][$sy][$sm]['d' . $sd];
}
} else {
// Deal with the start day unless it starts on midnight precisely at which point the whole day is booked
if (!($this->event->getStartDate()->format('H:i') == '00:00')) {
$start_period = new \DatePeriod($start_date, $interval, new \DateTime($start_date->format("Y-n-j 23:59:59")));
$itemized_start = $this->createHourlyGranular($start_period, $start_date);
$itemized[EventItemizer::BAT_DAY][$sy][$sm]['d' . $sd] = -1;
$itemized[EventItemizer::BAT_HOUR][$sy][$sm]['d' . $sd] = $itemized_start[EventItemizer::BAT_HOUR][$sy][$sm]['d' . $sd];
$itemized[EventItemizer::BAT_MINUTE][$sy][$sm]['d' . $sd] = $itemized_start[EventItemizer::BAT_MINUTE][$sy][$sm]['d' . $sd];
} else {
// Just set an empty hour and minute
$itemized[EventItemizer::BAT_HOUR][$sy][$sm]['d' . $sd] = array();
$itemized[EventItemizer::BAT_MINUTE][$sy][$sm]['d' . $sd] = array();
}
// Deal with the end date unless it ends just before midnight at which point we don't need to go further
if ($this->event->getEndDate()->format('H:i') == '23:59') {
$itemized[EventItemizer::BAT_HOUR][$ey][$em]['d' . $ed] = array();
$itemized[EventItemizer::BAT_MINUTE][$ey][$em]['d' . $ed] = array();
} else {
$end_period = new \DatePeriod(new \DateTime($end_date->format("Y-n-j 00:00:00")), $interval, $end_date->add(new \DateInterval('PT1M')));
$itemized_end = $this->createHourlyGranular($end_period, new \DateTime($end_date->format("Y-n-j 00:00:00")));
$itemized[EventItemizer::BAT_DAY][$ey][$em]['d' . $ed] = -1;
$itemized[EventItemizer::BAT_HOUR][$ey][$em]['d' . $ed] = $itemized_end[EventItemizer::BAT_HOUR][$ey][$em]['d' . $ed];
$itemized[EventItemizer::BAT_MINUTE][$ey][$em]['d' . $ed] = $itemized_end[EventItemizer::BAT_MINUTE][$ey][$em]['d' . $ed];
}
}
return $itemized;
}