Imported Pingbacks can display or be toggled off. You can also display
comments but have adding new ones disabled. TODO: allow disabling comments on a per page basis.
This commit is contained in:
parent
563d7af096
commit
a52c1b2f6d
9 changed files with 735 additions and 46 deletions
59
comments.php
59
comments.php
|
|
@ -1,6 +1,9 @@
|
|||
<?php
|
||||
namespace Grav\Plugin;
|
||||
|
||||
use Grav\Common\Blueprint;
|
||||
use Grav\Common\Blueprints;
|
||||
use Grav\Common\BlueprintSchema;
|
||||
use Grav\Common\Filesystem\Folder;
|
||||
use Grav\Common\GPM\GPM;
|
||||
use Grav\Common\Grav;
|
||||
|
|
@ -18,7 +21,11 @@ class CommentsPlugin extends Plugin
|
|||
{
|
||||
protected $route = 'comments';
|
||||
protected $enable = false;
|
||||
protected $commenting_enabled = false;
|
||||
protected $pingbacks_enabled = false;
|
||||
|
||||
protected $comments_cache_id;
|
||||
protected $pingbacks_cache_id;
|
||||
|
||||
/**
|
||||
* @return array
|
||||
|
|
@ -74,7 +81,10 @@ class CommentsPlugin extends Plugin
|
|||
|
||||
public function onTwigSiteVariables() {
|
||||
$this->grav['twig']->enable_comments_plugin = $this->enable;
|
||||
$this->grav['twig']->commenting_enabled = $this->commenting_enabled;
|
||||
$this->grav['twig']->pingbacks_enabled = $this->pingbacks_enabled;
|
||||
$this->grav['twig']->comments = $this->fetchComments();
|
||||
$this->grav['twig']->pingbacks = $this->fetchPingbacks();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -100,6 +110,13 @@ class CommentsPlugin extends Plugin
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#$blueprint = $this->getBlueprint();
|
||||
#$this->commenting_enabled = $blueprint->get('form/fields/commenting', false, '/');
|
||||
#$this->pingbacks_enabled = $blueprint->get('form/fields/pingbacks' , false, '/');
|
||||
|
||||
$this->commenting_enabled = $this->grav['config']->get('plugins.comments.commenting');
|
||||
$this->pingbacks_enabled = $this->grav['config']->get('plugins.comments.pingbacks');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -127,6 +144,8 @@ class CommentsPlugin extends Plugin
|
|||
|
||||
//init cache id
|
||||
$this->comments_cache_id = md5('comments-data' . $cache->getKey() . '-' . $uri->url());
|
||||
|
||||
$this->pingbacks_cache_id = md5('pingbacks-data' . $cache->getKey() . '-' . $uri->url());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -185,16 +204,21 @@ class CommentsPlugin extends Plugin
|
|||
return;
|
||||
}
|
||||
|
||||
if (!$this->commenting_enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch ($action) {
|
||||
case 'addComment':
|
||||
$post = isset($_POST['data']) ? $_POST['data'] : [];
|
||||
|
||||
$lang = filter_var(urldecode($post['lang']), FILTER_SANITIZE_STRING);
|
||||
$path = filter_var(urldecode($post['path']), FILTER_SANITIZE_STRING);
|
||||
$text = filter_var(urldecode($post['text']), FILTER_SANITIZE_STRING);
|
||||
$name = filter_var(urldecode($post['name']), FILTER_SANITIZE_STRING);
|
||||
$lang = filter_var(urldecode($post['lang']), FILTER_SANITIZE_STRING);
|
||||
$path = filter_var(urldecode($post['path']), FILTER_SANITIZE_STRING);
|
||||
$text = filter_var(urldecode($post['text']), FILTER_SANITIZE_STRING);
|
||||
$name = filter_var(urldecode($post['name']), FILTER_SANITIZE_STRING);
|
||||
$email = filter_var(urldecode($post['email']), FILTER_SANITIZE_STRING);
|
||||
$title = filter_var(urldecode($post['title']), FILTER_SANITIZE_STRING);
|
||||
$site = filter_var(urldecode($post['site']), FILTER_SANITIZE_STRING);
|
||||
|
||||
if (isset($this->grav['user'])) {
|
||||
$user = $this->grav['user'];
|
||||
|
|
@ -220,7 +244,8 @@ class CommentsPlugin extends Plugin
|
|||
'text' => $text,
|
||||
'date' => date('D, d M Y H:i:s', time()),
|
||||
'author' => $name,
|
||||
'email' => $email
|
||||
'email' => $email,
|
||||
'site' => $site
|
||||
];
|
||||
} else {
|
||||
$data = array(
|
||||
|
|
@ -230,7 +255,8 @@ class CommentsPlugin extends Plugin
|
|||
'text' => $text,
|
||||
'date' => date('D, d M Y H:i:s', time()),
|
||||
'author' => $name,
|
||||
'email' => $email
|
||||
'email' => $email,
|
||||
'site' => $site
|
||||
])
|
||||
);
|
||||
}
|
||||
|
|
@ -239,6 +265,7 @@ class CommentsPlugin extends Plugin
|
|||
|
||||
//clear cache
|
||||
$this->grav['cache']->delete($this->comments_cache_id);
|
||||
$this->grav['cache']->delete($this->pingbacks_cache_id);
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -353,6 +380,26 @@ class CommentsPlugin extends Plugin
|
|||
return $comments;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the pingbacks associated to the current route
|
||||
*/
|
||||
private function fetchPingbacks() {
|
||||
$cache = $this->grav['cache'];
|
||||
//search in cache
|
||||
if ($pingbacks = $cache->fetch($this->pingbacks_cache_id)) {
|
||||
return $pingbacks;
|
||||
}
|
||||
|
||||
$lang = $this->grav['language']->getLanguage();
|
||||
$filename = $lang ? '/' . $lang : '';
|
||||
$filename .= $this->grav['uri']->path() . '.yaml';
|
||||
|
||||
$pingbacks = $this->getDataFromFilename($filename)['pingbacks'];
|
||||
//save to cache if enabled
|
||||
$cache->save($this->pingbacks_cache_id, $pingbacks);
|
||||
return $pingbacks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the latest commented pages
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue