/** * Given a PageArray, convert it to a cachable array * * @param PageArray $items * @return array * @throws WireException * @since Version 2.5.28 * */ protected function pageArrayToArray(PageArray $items) { $templates = array(); $ids = array(); $pageClasses = array(); foreach ($items as $item) { $templates[$item->template->id] = $item->template->id; $ids[] = $item->id; $pageClass = $item->className(); $pageClasses[$pageClass] = $pageClass; } if (count($pageClasses) > 1) { throw new WireException("Can't cache multiple page types together: " . implode(', ', $pageClasses)); } $data = array('PageArray' => $ids, 'template' => count($templates) == 1 ? reset($templates) : 0); $pageClass = reset($pageClasses); if ($pageClass && $pageClass != 'Page') { $data['pageClass'] = $pageClass; } $pageArrayClass = $items->className(); if ($pageArrayClass != 'PageArray') { $data['pageArrayClass'] = $pageArrayClass; } return $data; }