/** * @param Page $page */ protected function ensureOrderByDate($page) { $items = $page->getParentDocument()->getChildren(); $itemsByDate = array(); /** @var $item Page */ foreach ($items as $item) { $itemsByDate[$item->getDate()->format('U')][$item->getPublishStartDate()->format('U')][] = $item; } if ('asc' == $this->sortOrder) { ksort($itemsByDate); } else { krsort($itemsByDate); } $sortedItems = array(); foreach ($itemsByDate as $itemsForDate) { if ('asc' == $this->sortOrder) { ksort($itemsForDate); } else { krsort($itemsForDate); } foreach ($itemsForDate as $itemsForPublishDate) { foreach ($itemsForPublishDate as $item) { $sortedItems[$item->getName()] = $item; } } } if ($sortedItems !== $items->getKeys()) { $items->clear(); foreach ($sortedItems as $key => $item) { $items[$key] = $item; } } }