From e8417c6a0ec0a6b6a95e6155d9b8f2ffcf99ee60 Mon Sep 17 00:00:00 2001 From: Thorsten Witteler Date: Thu, 19 Oct 2017 17:42:20 +0200 Subject: [PATCH] add index file to user data add data files to page folder --- comments.php | 120 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 88 insertions(+), 32 deletions(-) diff --git a/comments.php b/comments.php index 7a59543..df1f915 100644 --- a/comments.php +++ b/comments.php @@ -1,17 +1,19 @@ grav['page']; - if (!$page) { - return; - } - - if ($this->enable) { - $header = $page->header(); - if (!isset($header->form)) { - $header->form = $this->grav['config']->get('plugins.comments.form'); - $page->header($header); - } - } - } - /** * Add the comment form information to the page header dynamically * @@ -117,7 +95,6 @@ class CommentsPlugin extends Plugin $this->enable([ 'onFormProcessed' => ['onFormProcessed', 0], 'onFormPageHeaderProcessed' => ['onFormPageHeaderProcessed', 0], - 'onPageInitialized' => ['onPageInitialized', 10], 'onTwigSiteVariables' => ['onTwigSiteVariables', 0] ]); } @@ -208,13 +185,90 @@ class CommentsPlugin extends Plugin $language = $this->grav['language']; $lang = $language->getLanguage(); + /******************************/ + /** store comments with page **/ + /******************************/ + $page = $this->grav['page']; + $localfilename = $page->path() . '/comments.yaml'; + $localfile = CompiledYamlFile::instance($localfilename); + if (file_exists($localfilename)) { + $data = $localfile->content(); + $data['autoincrement']++; + $data['comments'][] = [ + 'id' => $data['autoincrement'], + 'parent' => 0, + 'lang' => $lang, + 'title' => $title, + 'text' => $text, + 'date' => date('D, d M Y H:i:s', time()), + 'author' => $name, + 'email' => $email + ]; + } else { + $data = array( + 'autoincrement' => 1, + 'comments' => array([ + 'id' => 1, + 'parent' => 0, + 'lang' => $lang, + 'title' => $title, + 'text' => $text, + 'date' => date('D, d M Y H:i:s', time()), + 'author' => $name, + 'email' => $email + ]) + ); + } + $localfile->save($data); + $localid = $data['autoincrement']; + $data = null; + /**********************************/ + /** store comments in index file **/ + /**********************************/ + $indexfilename = DATA_DIR . 'comments/index.yaml'; + $indexfile = CompiledYamlFile::instance($indexfilename); + if (file_exists($indexfilename)) { + $data = $indexfile->content(); + $data['comments'][] = [ + 'page' => $page->route(), + 'id' => $localid, + 'parent' => 0, + 'lang' => $lang, + 'title' => $title, + 'text' => $text, + 'date' => date('D, d M Y H:i:s', time()), + 'author' => $name, + 'email' => $email + ]; + } else { + $data = array( + 'comments' => array([ + 'page' => $page->route(), + 'id' => $localid, + 'parent' => 0, + 'lang' => $lang, + 'title' => $title, + 'text' => $text, + 'date' => date('D, d M Y H:i:s', time()), + 'author' => $name, + 'email' => $email + ]) + ); + } + $indexfile->save($data); + $data = null; + /**************************************/ + /** store comments in old data files **/ + /** TODO: remove as soon as admin **/ + /** panel uses new index file **/ + /**************************************/ $filename = DATA_DIR . 'comments'; $filename .= ($lang ? '/' . $lang : ''); $filename .= $path . '.yaml'; - $file = File::instance($filename); + $file = CompiledYamlFile::instance($filename); if (file_exists($filename)) { - $data = Yaml::parse($file->content()); + $data = $file->content(); $data['comments'][] = [ 'text' => $text, @@ -235,7 +289,7 @@ class CommentsPlugin extends Plugin ); } - $file->save(Yaml::dump($data)); + $file->save($data); //clear cache $this->grav['cache']->delete($this->comments_cache_id); @@ -380,14 +434,16 @@ class CommentsPlugin extends Plugin private function getDataFromFilename($fileRoute) { //Single item details - $fileInstance = File::instance(DATA_DIR . 'comments/' . $fileRoute); + //$fileInstance = CompiledYamlFile::instance(DATA_DIR . 'comments/' . $fileRoute); + //Use comment file in page folder + $fileInstance = CompiledYamlFile::instance($this->grav['page']->path() . '/comments.yaml'); if (!$fileInstance->content()) { //Item not found return; } - return Yaml::parse($fileInstance->content()); + return $fileInstance->content(); } /**