/** * @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'] = $this->extractDateFromPath($filename); } $data['path'] = '@post/' . $filename; $data['blogRoute'] = $this->blogRoute; $item = new Item($data); $collection->addItem($item); } } $this->cache->set(__CLASS__, $collection); } #echo"<pre>";print_r($collection);echo"</pre>"; return $collection; }
public function dataAction($request) { $alias = $request->getQuery('path'); $path = $this->alias->get($alias); #$data = $this->getService('Loader\PageLoader')->load($alias); $loader = new FrontMatterLoader(); $data = $loader->load($path); // Readonly $data['Alias'] = $alias; $data['path'] = $path; $fields = $this->config->get('plugins.config.adminpanel.fields', []); $unconfig = []; foreach ($data as $key => $value) { if (empty($fields[$key]['type'])) { $fields[$key] = ['label' => ucfirst($key)]; $unconfig[$key] = $value; } } $saved = false; if (!empty($_POST)) { $update = array_merge($request->getPost('data', []), $unconfig); $update = ArrayHelper::filterEmptyElements($update); if (PageHelper::updateData($path, $update)) { $data = $loader->load($path); $saved = true; } } $groups = ['Allgemein', 'Media', 'Tags', 'Layout', 'Info']; $fieldsets = []; foreach ($fields as $key => $field) { $group = isset($field['group']) ? $field['group'] : ''; $fieldset = in_array($group, $groups) ? $group : ''; $fieldsets[$fieldset][$key] = $field; } $fieldsets = ArrayHelper::sortArrayByArray($fieldsets, $groups); return $this->render('data.twig', ['data' => $data, 'fields' => $fields, 'saved' => $saved, 'controller' => $this->controller, 'action' => $this->action, 'cancel' => $request->getQuery('cancel'), 'Alias' => $alias, 'fieldsets' => $fieldsets]); }
/** * @param string $absolutePath * @param string $relativePath * @param string $alias * @return Item */ protected function createItem($absolutePath, $relativePath, $alias) { $loader = new FrontMatterLoader(); $data = $loader->load($absolutePath); $trimExtension = empty($data['keep_extension']); $route = $this->createRoute($relativePath, $trimExtension); $data['path'] = $alias . '/' . $relativePath; $data['route'] = $route; $item = new Item($data); if (empty($item->modified)) { $item->modified = date('c', filemtime($absolutePath)); } if (empty($item->date)) { $item->date = date('c', filectime($absolutePath)); } if (!isset($item->hidden)) { $item->hidden = !preg_match('/^[0-9]+-/', basename($relativePath)); } return $item; }