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
				
			
		| 
						 | 
					@ -75,6 +75,13 @@
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    </script>
 | 
					    </script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {% if grav.twig.warning_message|length %}
 | 
				
			||||||
 | 
					    <div class="admin-block">
 | 
				
			||||||
 | 
					    <h1>{{ "PLUGIN_COMMENTS.WARNINGS"|tu }}</h1>
 | 
				
			||||||
 | 
					    <p class="center">{{ grav.twig.warning_message }}</p>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <h1>Comments in the last 7 days</h1>
 | 
					    <h1>Comments in the last 7 days</h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="admin-block">
 | 
					    <div class="admin-block">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,19 +29,9 @@ form:
 | 
				
			||||||
        0: PLUGIN_ADMIN.DISABLED
 | 
					        0: PLUGIN_ADMIN.DISABLED
 | 
				
			||||||
      validate:
 | 
					      validate:
 | 
				
			||||||
        type: bool
 | 
					        type: bool
 | 
				
			||||||
    pingbacks:
 | 
					 | 
				
			||||||
      type: toggle
 | 
					 | 
				
			||||||
      label: Pingbacks
 | 
					 | 
				
			||||||
      highlight: 1
 | 
					 | 
				
			||||||
      default: 0
 | 
					 | 
				
			||||||
      options:
 | 
					 | 
				
			||||||
        1: PLUGIN_ADMIN.ENABLED
 | 
					 | 
				
			||||||
        0: PLUGIN_ADMIN.DISABLED
 | 
					 | 
				
			||||||
      validate:
 | 
					 | 
				
			||||||
        type: bool
 | 
					 | 
				
			||||||
    commenting:
 | 
					    commenting:
 | 
				
			||||||
      type: toggle
 | 
					      type: toggle
 | 
				
			||||||
      label: Commenting
 | 
					      label: PLUGIN_COMMENTS.COMMENTS
 | 
				
			||||||
      highlight: 1
 | 
					      highlight: 1
 | 
				
			||||||
      default: 0
 | 
					      default: 0
 | 
				
			||||||
      options:
 | 
					      options:
 | 
				
			||||||
| 
						 | 
					@ -49,3 +39,59 @@ form:
 | 
				
			||||||
        0: PLUGIN_ADMIN.DISABLED
 | 
					        0: PLUGIN_ADMIN.DISABLED
 | 
				
			||||||
      validate:
 | 
					      validate:
 | 
				
			||||||
        type: bool
 | 
					        type: bool
 | 
				
			||||||
 | 
					    nested:
 | 
				
			||||||
 | 
					      type: toggle
 | 
				
			||||||
 | 
					      label: PLUGIN_COMMENTS.COMMENTS_NESTED
 | 
				
			||||||
 | 
					      highlight: 1
 | 
				
			||||||
 | 
					      default: 0
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        1: PLUGIN_ADMIN.ENABLED
 | 
				
			||||||
 | 
					        0: PLUGIN_ADMIN.DISABLED
 | 
				
			||||||
 | 
					      validate:
 | 
				
			||||||
 | 
					        type: bool
 | 
				
			||||||
 | 
					    pingbacks:
 | 
				
			||||||
 | 
					      type: toggle
 | 
				
			||||||
 | 
					      label: PLUGIN_COMMENTS.COMMENTS_PINGBACKS
 | 
				
			||||||
 | 
					      highlight: 1
 | 
				
			||||||
 | 
					      default: 0
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        1: PLUGIN_ADMIN.ENABLED
 | 
				
			||||||
 | 
					        0: PLUGIN_ADMIN.DISABLED
 | 
				
			||||||
 | 
					      validate:
 | 
				
			||||||
 | 
					        type: bool
 | 
				
			||||||
 | 
					    recaptcha:
 | 
				
			||||||
 | 
					      type: toggle
 | 
				
			||||||
 | 
					      label: PLUGIN_COMMENTS.RECAPTCHA
 | 
				
			||||||
 | 
					      highlight: 1
 | 
				
			||||||
 | 
					      default: 0
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        1: PLUGIN_ADMIN.ENABLED
 | 
				
			||||||
 | 
					        0: PLUGIN_ADMIN.DISABLED
 | 
				
			||||||
 | 
					      validate:
 | 
				
			||||||
 | 
					        type: bool
 | 
				
			||||||
 | 
					    akismet:
 | 
				
			||||||
 | 
					      type: toggle
 | 
				
			||||||
 | 
					      label: PLUGIN_COMMENTS.AKISMET
 | 
				
			||||||
 | 
					      highlight: 1
 | 
				
			||||||
 | 
					      default: 0
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        1: PLUGIN_ADMIN.ENABLED
 | 
				
			||||||
 | 
					        0: PLUGIN_ADMIN.DISABLED
 | 
				
			||||||
 | 
					      validate:
 | 
				
			||||||
 | 
					        type: bool
 | 
				
			||||||
 | 
					    akismet_apikey:
 | 
				
			||||||
 | 
					      type: text
 | 
				
			||||||
 | 
					      label: PLUGIN_COMMENTS.AKISMET_APIKEY
 | 
				
			||||||
 | 
					      highlight: 1
 | 
				
			||||||
 | 
					      default: 
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        1: PLUGIN_ADMIN.ENABLED
 | 
				
			||||||
 | 
					        0: PLUGIN_ADMIN.DISABLED
 | 
				
			||||||
 | 
					    akismet_site:
 | 
				
			||||||
 | 
					      type: text
 | 
				
			||||||
 | 
					      label: PLUGIN_COMMENTS.AKISMET_SITE_OVERRIDE
 | 
				
			||||||
 | 
					      highlight: 1
 | 
				
			||||||
 | 
					      default: 
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        1: PLUGIN_ADMIN.ENABLED
 | 
				
			||||||
 | 
					        0: PLUGIN_ADMIN.DISABLED
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										54
									
								
								comments.php
									
										
									
									
									
								
							
							
						
						
									
										54
									
								
								comments.php
									
										
									
									
									
								
							| 
						 | 
					@ -17,6 +17,8 @@ use RocketTheme\Toolbox\File\File;
 | 
				
			||||||
use RocketTheme\Toolbox\Event\Event;
 | 
					use RocketTheme\Toolbox\Event\Event;
 | 
				
			||||||
use Symfony\Component\Yaml\Yaml;
 | 
					use Symfony\Component\Yaml\Yaml;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once 'extern/akismet/Akismet.class.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CommentsPlugin extends Plugin
 | 
					class CommentsPlugin extends Plugin
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    protected $route = 'comments';
 | 
					    protected $route = 'comments';
 | 
				
			||||||
| 
						 | 
					@ -27,6 +29,8 @@ class CommentsPlugin extends Plugin
 | 
				
			||||||
    protected $comments_cache_id;
 | 
					    protected $comments_cache_id;
 | 
				
			||||||
    protected $pingbacks_cache_id;
 | 
					    protected $pingbacks_cache_id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected $akismet_enabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return array
 | 
					     * @return array
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
| 
						 | 
					@ -85,6 +89,7 @@ class CommentsPlugin extends Plugin
 | 
				
			||||||
        $this->grav['twig']->pingbacks_enabled = $this->pingbacks_enabled;
 | 
					        $this->grav['twig']->pingbacks_enabled = $this->pingbacks_enabled;
 | 
				
			||||||
        $this->grav['twig']->comments = $this->fetchComments();
 | 
					        $this->grav['twig']->comments = $this->fetchComments();
 | 
				
			||||||
        $this->grav['twig']->pingbacks = $this->fetchPingbacks();
 | 
					        $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->commenting_enabled = $this->grav['config']->get('plugins.comments.commenting');
 | 
				
			||||||
        $this->pingbacks_enabled = $this->grav['config']->get('plugins.comments.pingbacks');
 | 
					        $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()
 | 
					    public function initializeFrontend()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->calculateEnable();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $this->enable([
 | 
					        $this->enable([
 | 
				
			||||||
            'onTwigTemplatePaths' => ['onTwigTemplatePaths', 0],
 | 
					            'onTwigTemplatePaths' => ['onTwigTemplatePaths', 0],
 | 
				
			||||||
        ]);
 | 
					        ]);
 | 
				
			||||||
| 
						 | 
					@ -182,6 +187,8 @@ class CommentsPlugin extends Plugin
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public function onPluginsInitialized()
 | 
					    public function onPluginsInitialized()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        $this->calculateEnable();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($this->isAdmin()) {
 | 
					        if ($this->isAdmin()) {
 | 
				
			||||||
            $this->initializeAdmin();
 | 
					            $this->initializeAdmin();
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
| 
						 | 
					@ -218,7 +225,7 @@ class CommentsPlugin extends Plugin
 | 
				
			||||||
                $name  = filter_var(urldecode($post['name']), FILTER_SANITIZE_STRING);
 | 
					                $name  = filter_var(urldecode($post['name']), FILTER_SANITIZE_STRING);
 | 
				
			||||||
                $email = filter_var(urldecode($post['email']), FILTER_SANITIZE_STRING);
 | 
					                $email = filter_var(urldecode($post['email']), FILTER_SANITIZE_STRING);
 | 
				
			||||||
                $title = filter_var(urldecode($post['title']), 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'])) {
 | 
					                if (isset($this->grav['user'])) {
 | 
				
			||||||
                    $user = $this->grav['user'];
 | 
					                    $user = $this->grav['user'];
 | 
				
			||||||
| 
						 | 
					@ -232,6 +239,25 @@ class CommentsPlugin extends Plugin
 | 
				
			||||||
                $language = $this->grav['language'];
 | 
					                $language = $this->grav['language'];
 | 
				
			||||||
                $lang = $language->getLanguage();
 | 
					                $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 = DATA_DIR . 'comments';
 | 
				
			||||||
                $filename .= ($lang ? '/' . $lang : '');
 | 
					                $filename .= ($lang ? '/' . $lang : '');
 | 
				
			||||||
                $filename .= $path . '.yaml';
 | 
					                $filename .= $path . '.yaml';
 | 
				
			||||||
| 
						 | 
					@ -245,7 +271,8 @@ class CommentsPlugin extends Plugin
 | 
				
			||||||
                        'date' => date('D, d M Y H:i:s', time()),
 | 
					                        'date' => date('D, d M Y H:i:s', time()),
 | 
				
			||||||
                        'author' => $name,
 | 
					                        'author' => $name,
 | 
				
			||||||
                        'email' => $email,
 | 
					                        'email' => $email,
 | 
				
			||||||
                        'site' => $site
 | 
					                        'site' => $site,
 | 
				
			||||||
 | 
					                        'approved' => ( !isset($spam) || $spam == 'ham' ? 'true' : 'false' )
 | 
				
			||||||
                    ];
 | 
					                    ];
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    $data = array(
 | 
					                    $data = array(
 | 
				
			||||||
| 
						 | 
					@ -256,7 +283,8 @@ class CommentsPlugin extends Plugin
 | 
				
			||||||
                            'date' => date('D, d M Y H:i:s', time()),
 | 
					                            'date' => date('D, d M Y H:i:s', time()),
 | 
				
			||||||
                            'author' => $name,
 | 
					                            'author' => $name,
 | 
				
			||||||
                            'email' => $email,
 | 
					                            'email' => $email,
 | 
				
			||||||
                            'site' => $site
 | 
					                            'site' => $site,
 | 
				
			||||||
 | 
					                            'approved' => ( !isset($spam) || $spam == 'ham' ? 'true' : 'false' )
 | 
				
			||||||
                        ])
 | 
					                        ])
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					@ -451,6 +479,20 @@ class CommentsPlugin extends Plugin
 | 
				
			||||||
    public function onTwigAdminTemplatePaths()
 | 
					    public function onTwigAdminTemplatePaths()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->grav['twig']->twig_paths[] = __DIR__ . '/admin/templates';
 | 
					        $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()
 | 
					    public function onAdminMenu()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->grav['twig']->plugins_hooked_nav['PLUGIN_COMMENTS.COMMENTS'] = ['route' => $this->route, 'icon' => 'fa-file-text'];
 | 
					        $this->grav['twig']->plugins_hooked_nav['PLUGIN_COMMENTS.COMMENTS'] = ['route' => $this->route, 'icon' => 'fa-file-text'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,8 @@
 | 
				
			||||||
enabled: true
 | 
					enabled: true
 | 
				
			||||||
pingbacks: true
 | 
					pingbacks: true
 | 
				
			||||||
commenting: true
 | 
					commenting: true
 | 
				
			||||||
 | 
					akismet_enabled: true
 | 
				
			||||||
 | 
					warning_message: ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enable_on_routes:
 | 
					enable_on_routes:
 | 
				
			||||||
  - '/blog'
 | 
					  - '/blog'
 | 
				
			||||||
| 
						 | 
					@ -28,7 +30,7 @@ form:
 | 
				
			||||||
            required: true
 | 
					            required: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        - name: blah
 | 
					        - name: blah
 | 
				
			||||||
          label: PLUGIN_COMMENTS.EMAIL_LABEL
 | 
					          label: PLUGIN_COMMENTS.SITE_LABEL
 | 
				
			||||||
          placeholder: "https://leetnightshade.com"
 | 
					          placeholder: "https://leetnightshade.com"
 | 
				
			||||||
          type: text
 | 
					          type: text
 | 
				
			||||||
          validate:
 | 
					          validate:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										148
									
								
								extern/habariakismet/habariakismet.plugin.php
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										148
									
								
								extern/habariakismet/habariakismet.plugin.php
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,148 +0,0 @@
 | 
				
			||||||
<?php
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
require_once 'vendor/Akismet.class.php';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class HabariAkismet extends Plugin
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    const SERVER_AKISMET = 'rest.akismet.com';
 | 
					 | 
				
			||||||
    const SERVER_TYPEPAD = 'api.antispam.typepad.com';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function action_plugin_activation($file)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (realpath($file) == __FILE__) {
 | 
					 | 
				
			||||||
            Session::notice(_t('Please set your Akismet or TypePad AntiSpam API Key in the configuration.'));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function filter_plugin_config($actions, $plugin_id)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if ($plugin_id == $this->plugin_id()) {
 | 
					 | 
				
			||||||
            $actions[] = _t('Configure');
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return $actions;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function action_plugin_ui($plugin_id, $action)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if ($plugin_id == $this->plugin_id()) {
 | 
					 | 
				
			||||||
            switch ($action) {
 | 
					 | 
				
			||||||
                case _t('Configure'):
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    $form = new FormUI(strtolower(get_class($this)));
 | 
					 | 
				
			||||||
                    $form->append('select', 'provider', 'habariakismet__provider', _t('Service'));
 | 
					 | 
				
			||||||
                    $form->provider->options = array(
 | 
					 | 
				
			||||||
                        'Akismet' => 'Akismet',
 | 
					 | 
				
			||||||
                        'TypePad AntiSpam' => 'TypePad AntiSpam'
 | 
					 | 
				
			||||||
                    );
 | 
					 | 
				
			||||||
                    $api_key = $form->append('text', 'api_key', 'habariakismet__api_key', _t('API Key'));
 | 
					 | 
				
			||||||
                    $api_key->add_validator('validate_required');
 | 
					 | 
				
			||||||
                    $api_key->add_validator(array($this, 'validate_api_key'));
 | 
					 | 
				
			||||||
                    $form->append('submit', 'save', 'Save');
 | 
					 | 
				
			||||||
                    $form->out();
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function validate_api_key($key, $control, $form)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $endpoint = ($form->provider->value == 'Akismet') ? self::SERVER_AKISMET : self::SERVER_TYPEPAD;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $a = new Akismet(Site::get_url('habari'), $key);
 | 
					 | 
				
			||||||
        $a->setAkismetServer($endpoint);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!$a->isKeyValid()) {
 | 
					 | 
				
			||||||
            return array(sprintf(_t('Sorry, the %s API key %s is <b>invalid</b>. Please check to make sure the key is entered correctly.'), $form->provider->value, $key));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return array();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function set_priorities()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return array(
 | 
					 | 
				
			||||||
            'action_comment_insert_before' => 1
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function action_comment_insert_before(Comment $comment)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $api_key  = Options::get('habariakismet__api_key');
 | 
					 | 
				
			||||||
        $provider = Options::get('habariakismet__provider');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ($api_key == null || $provider == null) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $endpoint = ($provider == 'Akismet') ? self::SERVER_AKISMET : self::SERVER_TYPEPAD;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $a = new Akismet(Site::get_url('habari'), $api_key);
 | 
					 | 
				
			||||||
        $a->setAkismetServer($endpoint);
 | 
					 | 
				
			||||||
        $a->setCommentAuthor($comment->name);
 | 
					 | 
				
			||||||
        $a->setCommentAuthorEmail($comment->email);
 | 
					 | 
				
			||||||
        $a->setCommentAuthorURL($comment->url);
 | 
					 | 
				
			||||||
        $a->setCommentContent($comment->content);
 | 
					 | 
				
			||||||
        $a->setPermalink($comment->post->permalink);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            $comment->status = ($a->isCommentSpam()) ? 'spam' : 'ham';
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        } catch (Exception $e) {
 | 
					 | 
				
			||||||
            EventLog::log($e->getMessage(), 'notice', 'comment', 'HabariAkismet');
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function action_admin_moderate_comments($action, $comments, $handler)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $false_negatives = 0;
 | 
					 | 
				
			||||||
        $false_positives = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $provider = Options::get('habariakismet__provider');
 | 
					 | 
				
			||||||
        $endpoint = ($provider == 'Akismet') ? self::SERVER_AKISMET : self::SERVER_TYPEPAD;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $a = new Akismet(Site::get_url('habari'), Options::get('habariakismet__api_key'));
 | 
					 | 
				
			||||||
        $a->setAkismetServer($endpoint);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        foreach ($comments as $comment) {
 | 
					 | 
				
			||||||
            switch ($action) {
 | 
					 | 
				
			||||||
                case 'spam':
 | 
					 | 
				
			||||||
                    if ($comment->status == Comment::STATUS_APPROVED || $comment->status == Comment::STATUS_UNAPPROVED) {
 | 
					 | 
				
			||||||
                        $a->setCommentAuthor($comment->name);
 | 
					 | 
				
			||||||
                        $a->setCommentAuthorEmail($comment->email);
 | 
					 | 
				
			||||||
                        $a->setCommentAuthorURL($comment->url);
 | 
					 | 
				
			||||||
                        $a->setCommentContent($comment->content);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        $a->submitSpam();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        $false_negatives++;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                case 'approved':
 | 
					 | 
				
			||||||
                    if ($comment->status == Comment::STATUS_SPAM) {
 | 
					 | 
				
			||||||
                        $a->setCommentAuthor($comment->name);
 | 
					 | 
				
			||||||
                        $a->setCommentAuthorEmail($comment->email);
 | 
					 | 
				
			||||||
                        $a->setCommentAuthorURL($comment->url);
 | 
					 | 
				
			||||||
                        $a->setCommentContent($comment->content);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        $a->submitHam();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        $false_positives++;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ($false_negatives) {
 | 
					 | 
				
			||||||
            Session::notice(_t('Reported %d false negatives to %s.', array($false_negatives, $provider)));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ($false_positives) {
 | 
					 | 
				
			||||||
            Session::notice(_t('Reported %d false positives to %s.', array($false_positives, $provider)));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
?>
 | 
					 | 
				
			||||||
							
								
								
									
										10
									
								
								extern/habariakismet/habariakismet.plugin.xml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								extern/habariakismet/habariakismet.plugin.xml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,10 +0,0 @@
 | 
				
			||||||
<?xml version="1.0" encoding="utf-8" ?>
 | 
					 | 
				
			||||||
<pluggable type="plugin" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schemas.habariproject.org/Pluggable-1.3.xsd">
 | 
					 | 
				
			||||||
	<name>Habari Akismet</name>
 | 
					 | 
				
			||||||
	<license url="http://www.apache.org/licenses/LICENSE-2.0.html">Apache Software License 2.0</license>
 | 
					 | 
				
			||||||
	<url>http://habariproject.org</url>
 | 
					 | 
				
			||||||
	<author url="http://habariproject.org/">The Habari Community</author>
 | 
					 | 
				
			||||||
	<version>0.2</version>
 | 
					 | 
				
			||||||
	<guid>98bdb03a-a7e5-4c2a-a875-dcfe1d89f130</guid>
 | 
					 | 
				
			||||||
	<description><![CDATA[Provides the Akismet and TypePad AntiSpam spam filter webservices to Habari comments.]]></description>
 | 
					 | 
				
			||||||
</pluggable>
 | 
					 | 
				
			||||||
							
								
								
									
										100
									
								
								languages.yaml
									
										
									
									
									
								
							
							
						
						
									
										100
									
								
								languages.yaml
									
										
									
									
									
								
							| 
						 | 
					@ -1,7 +1,13 @@
 | 
				
			||||||
de:
 | 
					de:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: Kommentar hinzufügen
 | 
					    ADD_COMMENT: Kommentar hinzufügen
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: Kommentare
 | 
					    COMMENTS: Kommentare
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: Email nicht konfiguriert
 | 
					    EMAIL_NOT_CONFIGURED: Email nicht konfiguriert
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: 'Neuer Kommentar für %1$s'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: 'Neuer Kommentar für %1$s'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>Ein neuer Kommentar am %1$s von %3$s (%4$s).</p><p>Seite: %2$s</p><p>Text: %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>Ein neuer Kommentar am %1$s von %3$s (%4$s).</p><p>Seite: %2$s</p><p>Text: %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -16,14 +22,21 @@ de:
 | 
				
			||||||
    EMAIL_PLACEHOLDER: "Email-Adresse eingeben"
 | 
					    EMAIL_PLACEHOLDER: "Email-Adresse eingeben"
 | 
				
			||||||
    MESSAGE_LABEL: "Kommentar"
 | 
					    MESSAGE_LABEL: "Kommentar"
 | 
				
			||||||
    MESSAGE_PLACEHOLDER: "Kommentar eingeben"
 | 
					    MESSAGE_PLACEHOLDER: "Kommentar eingeben"
 | 
				
			||||||
 | 
					    RECAPTCHA: reCAPTCHA
 | 
				
			||||||
 | 
					    SITE_LABEL: Site
 | 
				
			||||||
    SUBMIT_COMMENT_BUTTON_TEXT: "Absenden"
 | 
					    SUBMIT_COMMENT_BUTTON_TEXT: "Absenden"
 | 
				
			||||||
    EMAIL_NEW_COMMENT_SUBJECT: "[Neuer Kommentar] von {{ form.value.name|e }}"
 | 
					    EMAIL_NEW_COMMENT_SUBJECT: "[Neuer Kommentar] von {{ form.value.name|e }}"
 | 
				
			||||||
    THANK_YOU_MESSAGE: "Vielen Dank für den Kommentar!"
 | 
					    THANK_YOU_MESSAGE: "Vielen Dank für den Kommentar!"
 | 
				
			||||||
 | 
					    WARNINGS: Warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
en:
 | 
					en:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: Add a comment
 | 
					    ADD_COMMENT: Add a comment
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: Comments
 | 
					    COMMENTS: Comments
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
    COMMENTS_NONE: There are no comments yet.
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
    COMMENTS_PINGBACKS: Pingbacks
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: Email not configured
 | 
					    EMAIL_NOT_CONFIGURED: Email not configured
 | 
				
			||||||
| 
						 | 
					@ -40,14 +53,23 @@ en:
 | 
				
			||||||
    EMAIL_PLACEHOLDER: "Enter your email address"
 | 
					    EMAIL_PLACEHOLDER: "Enter your email address"
 | 
				
			||||||
    MESSAGE_LABEL: "Comment"
 | 
					    MESSAGE_LABEL: "Comment"
 | 
				
			||||||
    MESSAGE_PLACEHOLDER: "Enter your comment"
 | 
					    MESSAGE_PLACEHOLDER: "Enter your comment"
 | 
				
			||||||
 | 
					    RECAPTCHA: reCAPTCHA
 | 
				
			||||||
 | 
					    SITE_LABEL: Site
 | 
				
			||||||
    SUBMIT_COMMENT_BUTTON_TEXT: "Submit"
 | 
					    SUBMIT_COMMENT_BUTTON_TEXT: "Submit"
 | 
				
			||||||
    EMAIL_NEW_COMMENT_SUBJECT: "[New Comment] from {{ form.value.name|e }}"
 | 
					    EMAIL_NEW_COMMENT_SUBJECT: "[New Comment] from {{ form.value.name|e }}"
 | 
				
			||||||
    THANK_YOU_MESSAGE: "Thank you for writing your comment!"
 | 
					    THANK_YOU_MESSAGE: "Thank you for writing your comment!"
 | 
				
			||||||
 | 
					    WARNINGS: Warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
es:
 | 
					es:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: Agregar un comentario
 | 
					    ADD_COMMENT: Agregar un comentario
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: Comentarios
 | 
					    COMMENTS: Comentarios
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: El Email no está configurado
 | 
					    EMAIL_NOT_CONFIGURED: El Email no está configurado
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: 'Nuevo comentario en %1$s'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: 'Nuevo comentario en %1$s'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>Un nuevo comentario se hizo en %1$s por %3$s (%4$s).</p><p>Page: %2$s</p><p>Text: %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>Un nuevo comentario se hizo en %1$s por %3$s (%4$s).</p><p>Page: %2$s</p><p>Text: %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -62,14 +84,23 @@ es:
 | 
				
			||||||
    EMAIL_PLACEHOLDER: "Escriba su email"
 | 
					    EMAIL_PLACEHOLDER: "Escriba su email"
 | 
				
			||||||
    MESSAGE_LABEL: "Comentario"
 | 
					    MESSAGE_LABEL: "Comentario"
 | 
				
			||||||
    MESSAGE_PLACEHOLDER: "Escriba su comentario"
 | 
					    MESSAGE_PLACEHOLDER: "Escriba su comentario"
 | 
				
			||||||
 | 
					    RECAPTCHA: reCAPTCHA
 | 
				
			||||||
 | 
					    SITE_LABEL: Site
 | 
				
			||||||
    SUBMIT_COMMENT_BUTTON_TEXT: "Enviar"
 | 
					    SUBMIT_COMMENT_BUTTON_TEXT: "Enviar"
 | 
				
			||||||
    EMAIL_NEW_COMMENT_SUBJECT: "[Nuevo comentario] de {{ form.value.name|e }}"
 | 
					    EMAIL_NEW_COMMENT_SUBJECT: "[Nuevo comentario] de {{ form.value.name|e }}"
 | 
				
			||||||
    THANK_YOU_MESSAGE: "Gracias por escribir su comentario!"
 | 
					    THANK_YOU_MESSAGE: "Gracias por escribir su comentario!"
 | 
				
			||||||
 | 
					    WARNINGS: Warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fr:
 | 
					fr:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: Ajouter un commentaire
 | 
					    ADD_COMMENT: Ajouter un commentaire
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: Commentaires
 | 
					    COMMENTS: Commentaires
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: E-mail non configuré
 | 
					    EMAIL_NOT_CONFIGURED: E-mail non configuré
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: 'Nouveau commentaire sur %1$s'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: 'Nouveau commentaire sur %1$s'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>Un nouveau commentaire a été publié sur %1$s par %3$s (%4$s).</p><p>Page : %2$s</p><p>Texte : %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>Un nouveau commentaire a été publié sur %1$s par %3$s (%4$s).</p><p>Page : %2$s</p><p>Texte : %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -84,14 +115,23 @@ fr:
 | 
				
			||||||
    EMAIL_PLACEHOLDER: "Indiquez votre adresse e-mail"
 | 
					    EMAIL_PLACEHOLDER: "Indiquez votre adresse e-mail"
 | 
				
			||||||
    MESSAGE_LABEL: "Commentaire"
 | 
					    MESSAGE_LABEL: "Commentaire"
 | 
				
			||||||
    MESSAGE_PLACEHOLDER: "Rédigez votre commentaire"
 | 
					    MESSAGE_PLACEHOLDER: "Rédigez votre commentaire"
 | 
				
			||||||
 | 
					    RECAPTCHA: reCAPTCHA
 | 
				
			||||||
 | 
					    SITE_LABEL: Site
 | 
				
			||||||
    SUBMIT_COMMENT_BUTTON_TEXT: "Envoyer"
 | 
					    SUBMIT_COMMENT_BUTTON_TEXT: "Envoyer"
 | 
				
			||||||
    EMAIL_NEW_COMMENT_SUBJECT: "[Nouveau commentaire] de {{ form.value.name|e }}"
 | 
					    EMAIL_NEW_COMMENT_SUBJECT: "[Nouveau commentaire] de {{ form.value.name|e }}"
 | 
				
			||||||
    THANK_YOU_MESSAGE: "Merci d'avoir rédigé votre commentaire !"
 | 
					    THANK_YOU_MESSAGE: "Merci d'avoir rédigé votre commentaire !"
 | 
				
			||||||
 | 
					    WARNINGS: Warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
hr:
 | 
					hr:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: Dodaj komentar
 | 
					    ADD_COMMENT: Dodaj komentar
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: Komentari
 | 
					    COMMENTS: Komentari
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: Email adresa nije podešena
 | 
					    EMAIL_NOT_CONFIGURED: Email adresa nije podešena
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: 'Novi komentar na %1$s'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: 'Novi komentar na %1$s'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>Novi komentar je napisan na %1$s od %3$s (%4$s).</p><p>Stranica:: %2$s</p><p>Tekst: %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>Novi komentar je napisan na %1$s od %3$s (%4$s).</p><p>Stranica:: %2$s</p><p>Tekst: %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -106,14 +146,23 @@ hr:
 | 
				
			||||||
    EMAIL_PLACEHOLDER: "Unesite email adresu"
 | 
					    EMAIL_PLACEHOLDER: "Unesite email adresu"
 | 
				
			||||||
    MESSAGE_LABEL: "Komentar"
 | 
					    MESSAGE_LABEL: "Komentar"
 | 
				
			||||||
    MESSAGE_PLACEHOLDER: "Unesite komentar"
 | 
					    MESSAGE_PLACEHOLDER: "Unesite komentar"
 | 
				
			||||||
 | 
					    RECAPTCHA: reCAPTCHA
 | 
				
			||||||
 | 
					    SITE_LABEL: Site
 | 
				
			||||||
    SUBMIT_COMMENT_BUTTON_TEXT: "Pošalji"
 | 
					    SUBMIT_COMMENT_BUTTON_TEXT: "Pošalji"
 | 
				
			||||||
    EMAIL_NEW_COMMENT_SUBJECT: "[Novi komentar] od {{ form.value.name|e }}"
 | 
					    EMAIL_NEW_COMMENT_SUBJECT: "[Novi komentar] od {{ form.value.name|e }}"
 | 
				
			||||||
    THANK_YOU_MESSAGE: "Hvala Vam što ste napisali svoj komentar!"
 | 
					    THANK_YOU_MESSAGE: "Hvala Vam što ste napisali svoj komentar!"
 | 
				
			||||||
 | 
					    WARNINGS: Warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
it:
 | 
					it:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: Aggiungi un commento
 | 
					    ADD_COMMENT: Aggiungi un commento
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: Commenti
 | 
					    COMMENTS: Commenti
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: Email non configurata
 | 
					    EMAIL_NOT_CONFIGURED: Email non configurata
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: 'Nuovo commento su %1$s'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: 'Nuovo commento su %1$s'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>Un nuovo commento è stato postato su %1$s da %3$s (%4$s).</p><p>Pagina: %2$s</p><p>Testo: %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>Un nuovo commento è stato postato su %1$s da %3$s (%4$s).</p><p>Pagina: %2$s</p><p>Testo: %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -128,14 +177,23 @@ it:
 | 
				
			||||||
    EMAIL_PLACEHOLDER: "Inserisci il tuo indirizzo email"
 | 
					    EMAIL_PLACEHOLDER: "Inserisci il tuo indirizzo email"
 | 
				
			||||||
    MESSAGE_LABEL: "Messaggio"
 | 
					    MESSAGE_LABEL: "Messaggio"
 | 
				
			||||||
    MESSAGE_PLACEHOLDER: "Inserisci il tuo commento"
 | 
					    MESSAGE_PLACEHOLDER: "Inserisci il tuo commento"
 | 
				
			||||||
 | 
					    RECAPTCHA: reCAPTCHA
 | 
				
			||||||
 | 
					    SITE_LABEL: Site
 | 
				
			||||||
    SUBMIT_COMMENT_BUTTON_TEXT: "Invia"
 | 
					    SUBMIT_COMMENT_BUTTON_TEXT: "Invia"
 | 
				
			||||||
    EMAIL_NEW_COMMENT_SUBJECT: "[Nuovo commento] da {{ form.value.name|e }}"
 | 
					    EMAIL_NEW_COMMENT_SUBJECT: "[Nuovo commento] da {{ form.value.name|e }}"
 | 
				
			||||||
    THANK_YOU_MESSAGE: "Grazie per il tuo commento!"
 | 
					    THANK_YOU_MESSAGE: "Grazie per il tuo commento!"
 | 
				
			||||||
 | 
					    WARNINGS: Warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ja:
 | 
					ja:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: コメントを追加する
 | 
					    ADD_COMMENT: コメントを追加する
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: コメント
 | 
					    COMMENTS: コメント
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: メールアドレスは設定さていません
 | 
					    EMAIL_NOT_CONFIGURED: メールアドレスは設定さていません
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: '%1$sについて新しいコメント'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: '%1$sについて新しいコメント'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>新しいコメントが%1$sについて%3$sから(%4$s)書かれた.</p><p>ページー : %2$s</p><p>文書 : %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>新しいコメントが%1$sについて%3$sから(%4$s)書かれた.</p><p>ページー : %2$s</p><p>文書 : %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -150,14 +208,23 @@ ja:
 | 
				
			||||||
    EMAIL_PLACEHOLDER: "ご自分のメールアドレスをここに..."
 | 
					    EMAIL_PLACEHOLDER: "ご自分のメールアドレスをここに..."
 | 
				
			||||||
    MESSAGE_LABEL: "コメント"
 | 
					    MESSAGE_LABEL: "コメント"
 | 
				
			||||||
    MESSAGE_PLACEHOLDER: "コメントをここに"
 | 
					    MESSAGE_PLACEHOLDER: "コメントをここに"
 | 
				
			||||||
 | 
					    RECAPTCHA: reCAPTCHA
 | 
				
			||||||
 | 
					    SITE_LABEL: Site
 | 
				
			||||||
    SUBMIT_COMMENT_BUTTON_TEXT: "送信する"
 | 
					    SUBMIT_COMMENT_BUTTON_TEXT: "送信する"
 | 
				
			||||||
    EMAIL_NEW_COMMENT_SUBJECT: "[新しいコメント]、 {{ form.value.name|e }}から"
 | 
					    EMAIL_NEW_COMMENT_SUBJECT: "[新しいコメント]、 {{ form.value.name|e }}から"
 | 
				
			||||||
    THANK_YOU_MESSAGE: "コメントを書いてくださいましてありがとうございました!"
 | 
					    THANK_YOU_MESSAGE: "コメントを書いてくださいましてありがとうございました!"
 | 
				
			||||||
 | 
					    WARNINGS: Warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pl:
 | 
					pl:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: Dodaj komentarz
 | 
					    ADD_COMMENT: Dodaj komentarz
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: Komentarzy
 | 
					    COMMENTS: Komentarzy
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: Email jest nie skofigurowany
 | 
					    EMAIL_NOT_CONFIGURED: Email jest nie skofigurowany
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: 'Nowy komentarz %1$s'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: 'Nowy komentarz %1$s'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>Pojawił się nowy komentarz, napisany %1$s przez %3$s (%4$s).</p><p>Strona: %2$s</p><p>Treść: %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>Pojawił się nowy komentarz, napisany %1$s przez %3$s (%4$s).</p><p>Strona: %2$s</p><p>Treść: %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -170,7 +237,13 @@ pl:
 | 
				
			||||||
ru:
 | 
					ru:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: Добавить комментарий
 | 
					    ADD_COMMENT: Добавить комментарий
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: Комментарии
 | 
					    COMMENTS: Комментарии
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: Email не настроен
 | 
					    EMAIL_NOT_CONFIGURED: Email не настроен
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: 'Новый комментарий к %1$s'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: 'Новый комментарий к %1$s'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>Новый комментарий был сделан на %1$s by %3$s (%4$s).</p><p>Страница: %2$s</p><p>Текст: %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>Новый комментарий был сделан на %1$s by %3$s (%4$s).</p><p>Страница: %2$s</p><p>Текст: %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -183,7 +256,13 @@ ru:
 | 
				
			||||||
pt-br:
 | 
					pt-br:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: Escreva um comentário
 | 
					    ADD_COMMENT: Escreva um comentário
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: Comentários
 | 
					    COMMENTS: Comentários
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: E-mail não configurado
 | 
					    EMAIL_NOT_CONFIGURED: E-mail não configurado
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: 'Novo comentário em %1$s'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: 'Novo comentário em %1$s'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>Um novo comentário foi feito em %1$s por %3$s (%4$s).</p><p>Página: %2$s</p><p>Texto: %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>Um novo comentário foi feito em %1$s por %3$s (%4$s).</p><p>Página: %2$s</p><p>Texto: %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -198,14 +277,23 @@ pt-br:
 | 
				
			||||||
    EMAIL_PLACEHOLDER: "Escreva seu e-mail. Ex.: seunome@provedor.com.br"
 | 
					    EMAIL_PLACEHOLDER: "Escreva seu e-mail. Ex.: seunome@provedor.com.br"
 | 
				
			||||||
    MESSAGE_LABEL: "Comentário"
 | 
					    MESSAGE_LABEL: "Comentário"
 | 
				
			||||||
    MESSAGE_PLACEHOLDER: "Escreva seu comentário"
 | 
					    MESSAGE_PLACEHOLDER: "Escreva seu comentário"
 | 
				
			||||||
 | 
					    RECAPTCHA: reCAPTCHA
 | 
				
			||||||
 | 
					    SITE_LABEL: Site
 | 
				
			||||||
    SUBMIT_COMMENT_BUTTON_TEXT: "Enviar"
 | 
					    SUBMIT_COMMENT_BUTTON_TEXT: "Enviar"
 | 
				
			||||||
    EMAIL_NEW_COMMENT_SUBJECT: "[Novo comentário] de {{ form.value.name|e }}"
 | 
					    EMAIL_NEW_COMMENT_SUBJECT: "[Novo comentário] de {{ form.value.name|e }}"
 | 
				
			||||||
    THANK_YOU_MESSAGE: "Obrigada por enviar seu comentário!"
 | 
					    THANK_YOU_MESSAGE: "Obrigada por enviar seu comentário!"
 | 
				
			||||||
 | 
					    WARNINGS: Warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ro:
 | 
					ro:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: 'Adăugați un comentariu'
 | 
					    ADD_COMMENT: 'Adăugați un comentariu'
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: 'Comentarii'
 | 
					    COMMENTS: 'Comentarii'
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: 'Adresa de email nu este configurată'
 | 
					    EMAIL_NOT_CONFIGURED: 'Adresa de email nu este configurată'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: 'Comentariu nou pentru %1$s'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: 'Comentariu nou pentru %1$s'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>Un nou comentariu a fost adăugat la %1$s de către %3$s (%4$s).</p><p>Pagină: %2$s</p><p>Text: %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>Un nou comentariu a fost adăugat la %1$s de către %3$s (%4$s).</p><p>Pagină: %2$s</p><p>Text: %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -220,14 +308,23 @@ ro:
 | 
				
			||||||
    EMAIL_PLACEHOLDER: "Introduceți adresa Dvs. de email"
 | 
					    EMAIL_PLACEHOLDER: "Introduceți adresa Dvs. de email"
 | 
				
			||||||
    MESSAGE_LABEL: "Comentariu"
 | 
					    MESSAGE_LABEL: "Comentariu"
 | 
				
			||||||
    MESSAGE_PLACEHOLDER: "Scrieți comentariul Dvs."
 | 
					    MESSAGE_PLACEHOLDER: "Scrieți comentariul Dvs."
 | 
				
			||||||
 | 
					    RECAPTCHA: reCAPTCHA
 | 
				
			||||||
 | 
					    SITE_LABEL: Site
 | 
				
			||||||
    SUBMIT_COMMENT_BUTTON_TEXT: "Trimiteți"
 | 
					    SUBMIT_COMMENT_BUTTON_TEXT: "Trimiteți"
 | 
				
			||||||
    EMAIL_NEW_COMMENT_SUBJECT: "[Comentariu nou] from {{ form.value.name|e }}"
 | 
					    EMAIL_NEW_COMMENT_SUBJECT: "[Comentariu nou] from {{ form.value.name|e }}"
 | 
				
			||||||
    THANK_YOU_MESSAGE: "Vă mulțumim pentru comentariu!"
 | 
					    THANK_YOU_MESSAGE: "Vă mulțumim pentru comentariu!"
 | 
				
			||||||
 | 
					    WARNINGS: Warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
no:
 | 
					no:
 | 
				
			||||||
  PLUGIN_COMMENTS:
 | 
					  PLUGIN_COMMENTS:
 | 
				
			||||||
    ADD_COMMENT: Skriv en kommentar
 | 
					    ADD_COMMENT: Skriv en kommentar
 | 
				
			||||||
 | 
					    AKISMET: Akismet
 | 
				
			||||||
 | 
					    AKISMET_APIKEY: Akismet API Key
 | 
				
			||||||
 | 
					    AKISMET_SITE_OVERRIDE: Akismet Site Override
 | 
				
			||||||
    COMMENTS: Kommentarer
 | 
					    COMMENTS: Kommentarer
 | 
				
			||||||
 | 
					    COMMENTS_NESTED: Nested Comments
 | 
				
			||||||
 | 
					    COMMENTS_NONE: There are no comments yet.
 | 
				
			||||||
 | 
					    COMMENTS_PINGBACKS: Pingbacks
 | 
				
			||||||
    EMAIL_NOT_CONFIGURED: Epost er ikke konfigurert
 | 
					    EMAIL_NOT_CONFIGURED: Epost er ikke konfigurert
 | 
				
			||||||
    NEW_COMMENT_EMAIL_SUBJECT: 'Ny kommentar på %1$s'
 | 
					    NEW_COMMENT_EMAIL_SUBJECT: 'Ny kommentar på %1$s'
 | 
				
			||||||
    NEW_COMMENT_EMAIL_BODY: '<p>En ny kommentar er skrevet på %1$s av %3$s (%4$s).</p><p>Side: %2$s</p><p>Tekst: %5$s</p>'
 | 
					    NEW_COMMENT_EMAIL_BODY: '<p>En ny kommentar er skrevet på %1$s av %3$s (%4$s).</p><p>Side: %2$s</p><p>Tekst: %5$s</p>'
 | 
				
			||||||
| 
						 | 
					@ -242,6 +339,9 @@ no:
 | 
				
			||||||
    EMAIL_PLACEHOLDER: "Skriv din epost adresse"
 | 
					    EMAIL_PLACEHOLDER: "Skriv din epost adresse"
 | 
				
			||||||
    MESSAGE_LABEL: "Kommentar"
 | 
					    MESSAGE_LABEL: "Kommentar"
 | 
				
			||||||
    MESSAGE_PLACEHOLDER: "Skriv din kommentar"
 | 
					    MESSAGE_PLACEHOLDER: "Skriv din kommentar"
 | 
				
			||||||
 | 
					    RECAPTCHA: reCAPTCHA
 | 
				
			||||||
 | 
					    SITE_LABEL: Site
 | 
				
			||||||
    SUBMIT_COMMENT_BUTTON_TEXT: "Send"
 | 
					    SUBMIT_COMMENT_BUTTON_TEXT: "Send"
 | 
				
			||||||
    EMAIL_NEW_COMMENT_SUBJECT: "[Ny kommentar] fra {{ form.value.name|e }}"
 | 
					    EMAIL_NEW_COMMENT_SUBJECT: "[Ny kommentar] fra {{ form.value.name|e }}"
 | 
				
			||||||
    THANK_YOU_MESSAGE: "Takk for din kommentar!"
 | 
					    THANK_YOU_MESSAGE: "Takk for din kommentar!"
 | 
				
			||||||
 | 
					    WARNINGS: Warnings
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue