Ejemplo n.º 1
0
 /**
  * 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;
 }