Adding basic Akismet stuff. Seems to work. Still working on it, make
sure it's okay.
This commit is contained in:
parent
607e0fa6d4
commit
6a6b1973a1
8 changed files with 216 additions and 175 deletions
54
comments.php
54
comments.php
|
|
@ -17,6 +17,8 @@ use RocketTheme\Toolbox\File\File;
|
|||
use RocketTheme\Toolbox\Event\Event;
|
||||
use Symfony\Component\Yaml\Yaml;
|
||||
|
||||
require_once 'extern/akismet/Akismet.class.php';
|
||||
|
||||
class CommentsPlugin extends Plugin
|
||||
{
|
||||
protected $route = 'comments';
|
||||
|
|
@ -27,6 +29,8 @@ class CommentsPlugin extends Plugin
|
|||
protected $comments_cache_id;
|
||||
protected $pingbacks_cache_id;
|
||||
|
||||
protected $akismet_enabled;
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
|
|
@ -85,6 +89,7 @@ class CommentsPlugin extends Plugin
|
|||
$this->grav['twig']->pingbacks_enabled = $this->pingbacks_enabled;
|
||||
$this->grav['twig']->comments = $this->fetchComments();
|
||||
$this->grav['twig']->pingbacks = $this->fetchPingbacks();
|
||||
$this->grav['twig']->akismet_enabled = $this->grav['config']->get('plugins.comments.akismet');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -117,6 +122,8 @@ class CommentsPlugin extends Plugin
|
|||
|
||||
$this->commenting_enabled = $this->grav['config']->get('plugins.comments.commenting');
|
||||
$this->pingbacks_enabled = $this->grav['config']->get('plugins.comments.pingbacks');
|
||||
|
||||
$this->akismet_enabled = $this->grav['config']->get('plugins.comments.akismet');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -124,8 +131,6 @@ class CommentsPlugin extends Plugin
|
|||
*/
|
||||
public function initializeFrontend()
|
||||
{
|
||||
$this->calculateEnable();
|
||||
|
||||
$this->enable([
|
||||
'onTwigTemplatePaths' => ['onTwigTemplatePaths', 0],
|
||||
]);
|
||||
|
|
@ -182,6 +187,8 @@ class CommentsPlugin extends Plugin
|
|||
*/
|
||||
public function onPluginsInitialized()
|
||||
{
|
||||
$this->calculateEnable();
|
||||
|
||||
if ($this->isAdmin()) {
|
||||
$this->initializeAdmin();
|
||||
} else {
|
||||
|
|
@ -218,7 +225,7 @@ class CommentsPlugin extends Plugin
|
|||
$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);
|
||||
$site = isset($post['site']) ? filter_var(urldecode($post['site']), FILTER_SANITIZE_STRING) : "";
|
||||
|
||||
if (isset($this->grav['user'])) {
|
||||
$user = $this->grav['user'];
|
||||
|
|
@ -232,6 +239,25 @@ class CommentsPlugin extends Plugin
|
|||
$language = $this->grav['language'];
|
||||
$lang = $language->getLanguage();
|
||||
|
||||
if ($this->akismet_enabled) {
|
||||
$key = $this->grav['config']->get('plugins.comments.akismet_apikey');
|
||||
$url_override = $this->grav['config']->get('plugins.comments.akismet_site');
|
||||
$url = !empty($url_override) ? $url_override : $_SERVER['HTTP_HOST'];
|
||||
|
||||
$akismet = new \Akismet($url, $key);
|
||||
$akismet->setCommentAuthor($name);
|
||||
$akismet->setCommentAuthorEmail($email);
|
||||
$akismet->setCommentAuthorURL($site);
|
||||
$akismet->setCommentContent($text);
|
||||
//$akismet->setPermalink($comment->post->permalink);
|
||||
//try {
|
||||
$spam = ($akismet->isCommentSpam()) ? 'spam' : 'ham';
|
||||
//return;
|
||||
//} catch (Exception $e) {
|
||||
// EventLog::log($e->getMessage(), 'notice', 'comment', 'HabariAkismet');
|
||||
//}
|
||||
}
|
||||
|
||||
$filename = DATA_DIR . 'comments';
|
||||
$filename .= ($lang ? '/' . $lang : '');
|
||||
$filename .= $path . '.yaml';
|
||||
|
|
@ -245,7 +271,8 @@ class CommentsPlugin extends Plugin
|
|||
'date' => date('D, d M Y H:i:s', time()),
|
||||
'author' => $name,
|
||||
'email' => $email,
|
||||
'site' => $site
|
||||
'site' => $site,
|
||||
'approved' => ( !isset($spam) || $spam == 'ham' ? 'true' : 'false' )
|
||||
];
|
||||
} else {
|
||||
$data = array(
|
||||
|
|
@ -256,7 +283,8 @@ class CommentsPlugin extends Plugin
|
|||
'date' => date('D, d M Y H:i:s', time()),
|
||||
'author' => $name,
|
||||
'email' => $email,
|
||||
'site' => $site
|
||||
'site' => $site,
|
||||
'approved' => ( !isset($spam) || $spam == 'ham' ? 'true' : 'false' )
|
||||
])
|
||||
);
|
||||
}
|
||||
|
|
@ -451,6 +479,20 @@ class CommentsPlugin extends Plugin
|
|||
public function onTwigAdminTemplatePaths()
|
||||
{
|
||||
$this->grav['twig']->twig_paths[] = __DIR__ . '/admin/templates';
|
||||
$this->grav['twig']->akismet_enabled = $this->akismet_enabled;
|
||||
|
||||
if ($this->akismet_enabled) {
|
||||
$key = $this->grav['config']->get('plugins.comments.akismet_apikey');
|
||||
$url_override = $this->grav['config']->get('plugins.comments.akismet_site');
|
||||
$url = !empty($url_override) ? $url_override : $_SERVER['HTTP_HOST'];
|
||||
|
||||
$akismet = new \Akismet($url, $key);
|
||||
if ($akismet->isKeyValid()) {
|
||||
$this->grav['twig']->warning_message = "";
|
||||
} else {
|
||||
$this->grav['twig']->warning_message = sprintf("Akismet API key \"%s\" is invalid for the url \"%s\". Provide a correct url override or make sure you're registered. Please check to make sure the key is entered correctly.", $key, $url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -459,6 +501,8 @@ class CommentsPlugin extends Plugin
|
|||
public function onAdminMenu()
|
||||
{
|
||||
$this->grav['twig']->plugins_hooked_nav['PLUGIN_COMMENTS.COMMENTS'] = ['route' => $this->route, 'icon' => 'fa-file-text'];
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue