Element_OphTrOperationbooking_Operation::fixCalendarDateOrdering PHP Méthode

fixCalendarDateOrdering() public méthode

public fixCalendarDateOrdering ( $sessions )
    public function fixCalendarDateOrdering($sessions)
    {
        $return = array();
        foreach (array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun') as $day) {
            if (isset($sessions[$day])) {
                $return[$day] = $sessions[$day];
            }
        }
        $max = 0;
        $datelist = array();
        $dayn = 0;
        $day_lookup = array();
        $session_lookup = array();
        foreach ($return as $day => $dates) {
            foreach ($dates as $date => $session) {
                $datelist[$dayn][] = $date;
                $session_lookup[$date] = $session;
                if ($date > $max) {
                    $max = $date;
                }
            }
            $day_lookup[$dayn] = $day;
            ++$dayn;
        }
        while (1) {
            $changed = false;
            $datelist2 = array();
            foreach ($datelist as $day => $dates) {
                foreach ($dates as $i => $date) {
                    if ($date < $max && isset($datelist[$day + 1][$i]) && $date > $datelist[$day + 1][$i]) {
                        // fill in missing day
                        if (!isset($datelist2[$day]) || !in_array(date('Y-m-d', strtotime($date) - 86400 * 7), $datelist2[$day])) {
                            $datelist2[$day][] = date('Y-m-d', strtotime($date) - 86400 * 7);
                            $session_lookup[date('Y-m-d', strtotime($date) - 86400 * 7)] = array('status' => 'blank');
                            $changed = true;
                        }
                    }
                    if (!isset($datelist2[$day]) || !in_array($date, $datelist2[$day])) {
                        $datelist2[$day][] = $date;
                    }
                }
            }
            if (!$changed) {
                break;
            }
            $datelist = $datelist2;
        }
        $sessions = array();
        foreach ($datelist2 as $dayn => $dates) {
            foreach ($dates as $date) {
                $sessions[$day_lookup[$dayn]][$date] = $session_lookup[$date];
            }
        }
        return $sessions;
    }