Example #1
0
 /**
  * @param string $alias
  * @param bool $addDefFields
  * @return array
  * @throws \Exception
  */
 public function load($alias, $addDefFields = true)
 {
     $content = $this->readFile($alias);
     list($yaml, $segments) = $this->parseContent($content);
     $data = (array) Yaml::parse($yaml);
     if ($addDefFields) {
         $data['format'] = isset($data['format']) ? $data['format'] : pathinfo($alias, PATHINFO_EXTENSION);
         $data['date'] = isset($data['date']) ? $data['date'] : PathHelper::extractDateFromPath($alias);
         $data['path'] = isset($data['path']) ? $data['path'] : $alias;
     }
     return ['data' => $data, 'segments' => $segments];
 }
Example #2
0
 /**
  * @param string $path
  * @return Collection
  */
 public function build($path = null)
 {
     if (is_null($path)) {
         $path = $this->path;
     }
     $collection = $this->cache->get(__CLASS__);
     if ($collection === false) {
         $realpath = realpath($path);
         $collection = new Collection($this->blogRoute);
         if (is_readable($realpath)) {
             $loader = new FrontMatterLoader();
             foreach (scandir($realpath, 1) as $filename) {
                 if (in_array(substr($filename, 0, 1), ['.', '_'])) {
                     continue;
                 }
                 $pathinfo = pathinfo($filename);
                 if (!in_array($pathinfo['extension'], $this->extensions)) {
                     continue;
                 }
                 $data = $loader->load($realpath . '/' . $filename);
                 if (empty($data['modified'])) {
                     $data['modified'] = date('c', filemtime($realpath . '/' . $filename));
                 }
                 if (empty($data['date'])) {
                     $data['date'] = PathHelper::extractDateFromPath($filename);
                 }
                 $data['path'] = '@post/' . $filename;
                 $data['blogRoute'] = $this->blogRoute;
                 $item = new Item($data);
                 $collection->addItem($item);
             }
         }
         $this->cache->set(__CLASS__, $collection);
     }
     return $collection;
 }