Ejemplo n.º 1
0
 /**
  * Builds pages.
  *
  * @internal
  */
 protected function buildPages()
 {
     $this->sort = [];
     /** @var Config $config */
     $config = $this->grav['config'];
     /** @var Language $language */
     $language = $this->grav['language'];
     /** @var UniformResourceLocator $locator */
     $locator = $this->grav['locator'];
     $pages_dir = $locator->findResource('page://');
     if ($config->get('system.cache.enabled')) {
         /** @var Cache $cache */
         $cache = $this->grav['cache'];
         /** @var Taxonomy $taxonomy */
         $taxonomy = $this->grav['taxonomy'];
         // how should we check for last modified? Default is by file
         switch (strtolower($config->get('system.cache.check.method', 'file'))) {
             case 'none':
             case 'off':
                 $hash = 0;
                 break;
             case 'folder':
                 $hash = Folder::lastModifiedFolder($pages_dir);
                 break;
             case 'hash':
                 $hash = Folder::hashAllFiles($pages_dir);
             default:
                 $hash = Folder::lastModifiedFile($pages_dir);
         }
         $page_cache_id = md5($pages_dir . $hash . $language->getActive() . $config->checksum());
         list($this->instances, $this->routes, $this->children, $taxonomy_map, $this->sort) = $cache->fetch($page_cache_id);
         if (!$this->instances) {
             $this->grav['debugger']->addMessage('Page cache missed, rebuilding pages..');
             // recurse pages and cache result
             $this->resetPages($pages_dir, $page_cache_id);
         } else {
             // If pages was found in cache, set the taxonomy
             $this->grav['debugger']->addMessage('Page cache hit.');
             $taxonomy->taxonomy($taxonomy_map);
         }
     } else {
         $this->recurse($pages_dir);
         $this->buildRoutes();
     }
 }