Sfoglia il codice sorgente

Antispam: profanity filter #2028

Alex Trofimov 7 anni fa
parent
commit
a67305ee4b

+ 68 - 0
plugins/banbuilder/README.md

@@ -0,0 +1,68 @@
+BanBuilder Composer Package
+===================
+
+[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/snipe/banbuilder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](https://travis-ci.org/snipe/banbuilder.svg?branch=master)](https://travis-ci.org/snipe/banbuilder) [![Latest Stable Version](https://poser.pugx.org/snipe/banbuilder/v/stable.svg)](https://packagist.org/packages/snipe/banbuilder) [![Total Downloads](https://poser.pugx.org/snipe/banbuilder/downloads.svg)](https://packagist.org/packages/snipe/banbuilder) [![Latest Unstable Version](https://poser.pugx.org/snipe/banbuilder/v/unstable.svg)](https://packagist.org/packages/snipe/banbuilder) [![License](https://poser.pugx.org/snipe/banbuilder/license.svg)](https://packagist.org/packages/snipe/banbuilder)
+
+BanBuilder is a PHP package for profanity filtering. The PHP script uses regex to intelligently look for "leetspeak"-style numeric or symbol replacements.
+
+Installing
+-------
+To install BanBuilder, simply include it in your projects's `composer.json`. 
+
+	"snipe/banbuilder": "dev-master",
+
+There are no additional dependencies required for this package to work.
+
+Usage
+-------
+
+Please see the [official package website](https://banbuilder.com) for full usage details.
+
+Summary
+-------
+In a nutshell, this code takes an array of bad words and compares it to an array of common filter-evasion tactics. It then does a string replacement to insert regex parameters into your badwords array, and then evaluates your input string to that expanded banned word list.
+
+So in your bad words array, you might have:
+
+     [0] => 'ass'
+
+The `preg_replace` functions replace all of the possible shenaningan letters with regex patterns (in lieu of adding the variants onto the end of the array), so the 'ass' in your array gets turned into this, right before the `preg_replace` checks for matches:
+
+     [0] => /(a|a\.|a\-|4|@|Á|á|À|Â|à|Â|â|Ä|ä|Ã|ã|Å|å|α)(s|s\.|s\-|5|\$|§)(s|s\.|s\-|5|\$|§)/i
+
+This means that a word can have none, one or any variety of leet replacements and it will still trip the trigger. Part of the leet filter includes stripping out letter-dash and letter-dots.
+
+This means that the following all evaluate to the "bitch":
+
+- B1tch
+- bi7tch
+- b.i.t.c.h.
+- b-i-t-c-h
+- b.1.t.c.h.
+- ßitch
+- and so on....
+
+[![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=snipe&url=https://github.com/snipe/banbuilder&title=banbuilder&language=PHP&tags=github&category=software)
+
+Tests
+-------
+To run the unit tests on this package, simply run `vendor/bin/phpunit` from the package directory.
+
+-----
+
+## License
+
+	Copyright (C) 2013 Alison Gianotto - snipe@snipe.net
+
+	This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.

+ 262 - 0
plugins/banbuilder/src/CensorWords.php

@@ -0,0 +1,262 @@
+<?php
+
+namespace Snipe\BanBuilder;
+
+class CensorWords
+{
+    public $badwords;
+
+    /*
+    * When the dictionary is loaded, a ton of regular expression strings are generated
+    * These regular expressions are used to perform the profanity checks.
+    * Store them here so when we call censorString we don't need to regenerate them on every call
+    */
+    private $censorChecks = null;
+
+    /**
+     * @var array
+     */
+    private $whiteList = [];
+
+    /**
+     * @var string
+     */
+    private $whiteListPlaceHolder = ' {whiteList[i]} ';
+
+    public function __construct()
+    {
+        $this->badwords = array();
+        $this->replacer = '*';
+        $this->setDictionary('en-us');
+    }
+
+
+    /**
+     *  Sets the dictionar(y|ies) to use
+     *  This can accept a string to a language file path,
+     *  or an array of strings to multiple paths
+     *
+     *  @param		string|array
+     *  @throws     \RuntimeException   if a dictionary file is not found
+     */
+    public function setDictionary($dictionary)
+    {
+        $this->badwords = $this->readBadWords($dictionary);
+    }
+
+    /**
+     *  Add more the dictionar(y|ies) to current bad words list
+     *  This can accept a string to a language file path,
+     *  or an array of strings to multiple paths
+     *
+     *  @param		string|array
+     *  @throws     \RuntimeException   if a dictionary file is not found
+     */
+    public function addDictionary($dictionary)
+    {
+        $this->badwords = array_merge($this->badwords, $this->readBadWords($dictionary));
+    }
+
+    /**
+     *  Adds more words to current bad words list from an array of words.
+     *
+     *  @param		array
+     */
+    public function addFromArray($words)
+    {
+        $badwords       = array_merge($this->badwords, $words);
+        $this->badwords = array_keys(array_count_values($badwords));
+    }
+
+    /**
+     * Read bad words list from dictionar(y|ies) and return it
+     *
+     * @param       string|array        a language identifier or path for a dictionary (or an array of identifiers/paths)
+     *
+     * @throws      \RuntimeException   if a dictionary file is not found
+     *
+     * @return      array               de-duplicated array of bad words
+     */
+    private function readBadWords($dictionary)
+    {
+        $badwords     = array();
+        $baseDictPath = __DIR__ . DIRECTORY_SEPARATOR . 'dict' . DIRECTORY_SEPARATOR;
+
+        if (is_array($dictionary)) {
+            foreach ($dictionary as $dictionary_file) {
+                $badwords = array_merge($badwords, $this->readBadWords($dictionary_file));
+            }
+        }
+
+        // just a single string, not an array
+        if (is_string($dictionary)) {
+            if (file_exists($baseDictPath . $dictionary . '.php')) {
+                include $baseDictPath . $dictionary . '.php';
+            } elseif (file_exists($dictionary)) {
+                include $dictionary;
+            } else {
+                throw new \RuntimeException('Dictionary file not found: ' . $dictionary);
+            }
+        }
+
+        // counting values and then only returning the keys is said
+        // to be more efficient than array_values(array_unique())
+        return array_keys(array_count_values($badwords));
+    }
+
+    /**
+     * List of word to add which will be overridden
+     *
+     * @param array $list
+     */
+    public function addWhiteList(array $list)
+    {
+        foreach ($list as $value) {
+            if (is_string($value) && !empty($value)) {
+                $this->whiteList[]['word'] = $value;
+            }
+        }
+    }
+
+    /**
+     * Replace white listed words with placeholders and inversely
+     *
+     * @param      $string
+     * @param bool $reverse
+     *
+     * @return mixed
+     */
+    private function replaceWhiteListed($string, $reverse = false)
+    {
+        foreach ($this->whiteList as $key => $list) {
+            if ($reverse && !empty($this->whiteList[$key]['placeHolder'])) {
+                $placeHolder = $this->whiteList[$key]['placeHolder'];
+                $string      = str_replace($placeHolder, $list['word'], $string);
+            } else {
+                $placeHolder                          = str_replace('[i]', $key, $this->whiteListPlaceHolder);
+                $this->whiteList[$key]['placeHolder'] = $placeHolder;
+                $string                               = str_replace($list['word'], $placeHolder, $string);
+            }
+        }
+
+        return $string;
+    }
+
+    /**
+     *  Sets the replacement character to use
+     *
+     * @param        string $replacer Character to use.
+     */
+    public function setReplaceChar($replacer)
+    {
+        $this->replacer = $replacer;
+    }
+
+
+    /**
+     *  Generates a random string.
+     *
+     * @param        string $chars Chars that can be used.
+     * @param        int    $len   Length of the output string.
+     *
+     *
+     * @return string
+     */
+    public function randCensor($chars, $len)
+    {
+        return str_shuffle(
+            str_repeat($chars, (int)($len / strlen($chars))) .
+            substr($chars, 0, $len % strlen($chars))
+        );
+    }
+
+    /**
+     * Generates the regular expressions that are going to be used to check for profanity
+     *
+     * @param        boolean $fullWords Option to generate regular expressions used for full words instead. Default is
+     *                                  false
+     */
+    private function generateCensorChecks($fullWords = false)
+    {
+        $badwords = $this->badwords;
+
+        // generate censor checks as soon as we load the dictionary
+        // utilize leet equivalents as well
+        $leet_replace      = array();
+        $leet_replace['a'] = '(a|a\.|a\-|4|@|Á|á|À|Â|à|Â|â|Ä|ä|Ã|ã|Å|å|α|Δ|Λ|λ)';
+        $leet_replace['b'] = '(b|b\.|b\-|8|\|3|ß|Β|β)';
+        $leet_replace['c'] = '(c|c\.|c\-|Ç|ç|¢|€|<|\(|{|©)';
+        $leet_replace['d'] = '(d|d\.|d\-|&part;|\|\)|Þ|þ|Ð|ð)';
+        $leet_replace['e'] = '(e|e\.|e\-|3|€|È|è|É|é|Ê|ê|∑)';
+        $leet_replace['f'] = '(f|f\.|f\-|ƒ)';
+        $leet_replace['g'] = '(g|g\.|g\-|6|9)';
+        $leet_replace['h'] = '(h|h\.|h\-|Η)';
+        $leet_replace['i'] = '(i|i\.|i\-|!|\||\]\[|]|1|∫|Ì|Í|Î|Ï|ì|í|î|ï)';
+        $leet_replace['j'] = '(j|j\.|j\-)';
+        $leet_replace['k'] = '(k|k\.|k\-|Κ|κ)';
+        $leet_replace['l'] = '(l|1\.|l\-|!|\||\]\[|]|£|∫|Ì|Í|Î|Ï)';
+        $leet_replace['m'] = '(m|m\.|m\-)';
+        $leet_replace['n'] = '(n|n\.|n\-|η|Ν|Π)';
+        $leet_replace['o'] = '(o|o\.|o\-|0|Ο|ο|Φ|¤|°|ø)';
+        $leet_replace['p'] = '(p|p\.|p\-|ρ|Ρ|¶|þ)';
+        $leet_replace['q'] = '(q|q\.|q\-)';
+        $leet_replace['r'] = '(r|r\.|r\-|®)';
+        $leet_replace['s'] = '(s|s\.|s\-|5|\$|§)';
+        $leet_replace['t'] = '(t|t\.|t\-|Τ|τ|7)';
+        $leet_replace['u'] = '(u|u\.|u\-|υ|µ)';
+        $leet_replace['v'] = '(v|v\.|v\-|υ|ν)';
+        $leet_replace['w'] = '(w|w\.|w\-|ω|ψ|Ψ)';
+        $leet_replace['x'] = '(x|x\.|x\-|Χ|χ)';
+        $leet_replace['y'] = '(y|y\.|y\-|¥|γ|ÿ|ý|Ÿ|Ý)';
+        $leet_replace['z'] = '(z|z\.|z\-|Ζ)';
+
+        $censorChecks = array();
+        for ($x = 0, $xMax = count($badwords); $x < $xMax; $x++) {
+            $censorChecks[$x] = $fullWords
+                ? '/\b' . str_ireplace(array_keys($leet_replace), array_values($leet_replace), $badwords[$x]) . '\b/i'
+                : '/'   . str_ireplace(array_keys($leet_replace), array_values($leet_replace), $badwords[$x]) . '/i';
+        }
+
+        $this->censorChecks = $censorChecks;
+    }
+
+    /**
+     *  Apply censorship to $string, replacing $badwords with $censorChar.
+     *
+     * @param        string $string    String to be censored.
+     * @param        bool   $fullWords Option to censor by word only.
+     *
+     * @return array
+     */
+    public function censorString($string, $fullWords = false)
+    {
+        // generate our censor checks if they are not defined yet
+        if (!$this->censorChecks) {
+            $this->generateCensorChecks($fullWords);
+        }
+
+        $anThis            = &$this;
+        $counter           = 0;
+        $match             = array();
+        $newstring         = array();
+        $newstring['orig'] = html_entity_decode($string);
+        $original          = $this->replaceWhiteListed($newstring['orig']);
+        // $anThis for <= PHP5.3
+        $newstring['clean']   = preg_replace_callback(
+            $this->censorChecks,
+            function ($matches) use (&$anThis, &$counter, &$match) {
+                $match[$counter++] = $matches[0];
+
+                // is $anThis->replacer a single char?
+                return (strlen($anThis->replacer) === 1)
+                    ? str_repeat($anThis->replacer, strlen($matches[0]))
+                    : $anThis->randCensor($anThis->replacer, strlen($matches[0]));
+            },
+            $original
+        );
+        $newstring['clean']   = $this->replaceWhiteListed($newstring['clean'], true);
+        $newstring['matched'] = $match;
+
+        return $newstring;
+    }
+}

+ 214 - 0
plugins/banbuilder/src/dict/cs.php

@@ -0,0 +1,214 @@
+<?php
+/**
+ * PHP Array for Czech words
+ * @author Dennis Fridrich <fridrich.dennis@gmail.com>
+ */
+
+array_push(
+	$badwords,
+	'anál',
+	'análu',
+	'blbec',
+	'blbče',
+	'blbečku',
+	'blbost',
+	'blbý',
+	'blbá',
+	'blbé',
+	'bordel',
+	'buzerant',
+	'buzerante',
+	'buzeranti',
+	'buzerovat',
+	'buzna',
+	'buzík',
+	'buzíku',
+	'buzíci',
+	'chcanky',
+	'chcát',
+	'chuj',
+	'chujové',
+	'chyndit',
+	'debil',
+	'debili',
+	'debilita',
+	'debilové',
+	'debilní',
+	'demence',
+	'dement',
+	'dementi',
+	'dementní',
+	'deviace',
+	'do piče',
+	'do píče',
+	'do piči',
+	'do píči',
+	'do prdele',
+	'dršťka',
+	'držka',
+	'držko',
+	'dylina',
+	'dylino',
+	'děvka',
+	'děvko',
+	'děvky',
+	'fetovat',
+	'feťáci',
+	'feťák',
+	'feťáku',
+	'flundra',
+	'flundro',
+	'flundry',
+	'hajzl',
+	'hajzle',
+	'hajzli',
+	'hajzlíci',
+	'hajzlové',
+	'hovno',
+	'hovna',
+	'hovnoksicht',
+	'hovnoksichte',
+	'hovnoxicht',
+	'hovnoxichte',
+	'hovňous',
+	'hovňousi',
+	'idiocie',
+	'idiot',
+	'idiote',
+	'idioti',
+	'jebat',
+	'kedra',
+	'kokot',
+	'kokote',
+	'kokoti',
+	'kokotina',
+	'kokotiny',
+	'koza',
+	'kozy',
+	'koňomrd',
+	'koňomrde',
+	'kretenismus',
+	'kretenizmus',
+	'kretén',
+	'kreténe',
+	'kreténi',
+	'kripl',
+	'krypl',
+	'kriple',
+	'kryple',
+	'kripli',
+	'krypli',
+	'kráva',
+	'krávo',
+	'krávy',
+	'ksicht',
+	'ksichte',
+	'kunda',
+	'kundo',
+	'kundy',
+	'kurva',
+	'kurvo',
+	'kurvy',
+	'kurvit',
+	'kurvit se',
+	'kurvák',
+	'kuřbuřt',
+	'kuřbuřte',
+	'mamrd',
+	'mamrde',
+	'mrdat',
+	'mrdka',
+	'mrdko',
+	'mrdník',
+	'mrdůch',
+	'nasraný',
+	'orál',
+	'osel',
+	'osli',
+	'oslové',
+	'oslošoust',
+	'pěst',
+	'pěstí',
+	'pipina',
+	'pipino',
+	'pipiny',
+	'pipka',
+	'pipko',
+	'pipky',
+	'pizda',
+	'pizdo',
+	'pizdy',
+	'piča',
+	'piče',
+	'pičo',
+	'pičus',
+	'pochcat se',
+	'podělat',
+	'poser',
+	'posera',
+	'posero',
+	'posrat',
+	'pošuci',
+	'pošuk',
+	'pošuku',
+	'prcat',
+	'prdel',
+	'prdelka',
+	'prdelko',
+	'prdeloid',
+	'prsatice',
+	'píchat',
+	'píča',
+	'píče',
+	'píčo',
+	'píčus',
+	'smažka',
+	'smažko',
+	'smažky',
+	'sraček',
+	'sračka',
+	'sračkách',
+	'sračko',
+	'sračky',
+	'srát',
+	'vypíčenec',
+	'vypíčenci',
+	'vypíčit',
+	'vole',
+	'voli',
+	'volové',
+	'vůl',
+	'xicht',
+	'xichte',
+	'zasraná',
+	'zasranci',
+	'zasranče',
+	'zasraní',
+	'zasraný',
+	'zik',
+	'zkurvený',
+	'zkurvit',
+	'zkurvili',
+	'zkurvysyn',
+	'zmrd',
+	'zmrde',
+	'zmrdi',
+	'zoofil',
+	'zoofilie',
+	'úchyl',
+	'úchyle',
+	'úchylka',
+	'úchylák',
+	'úchyláku',
+	'čarák',
+	'čubka',
+	'čumět',
+	'čurat',
+	'čurák',
+	'čůrat',
+	'čůrák',
+	'šoustat',
+	'šukat',
+	'šulin',
+	'žrát'
+);

+ 79 - 0
plugins/banbuilder/src/dict/de.php

@@ -0,0 +1,79 @@
+<?php
+/**
+ * PHP Array for German words
+ * Delightful sweary additions from:
+ * - http://www.youswear.com/index.asp?language=German
+ * - http://www.insults.net/html/swear/german.html
+ */
+
+// General insults and rudeness
+array_push($badwords,
+    'arschfotze',
+    'arschgeige',
+    'arschgesicht',
+    'arschloch',
+    'fotze',
+    'bulle',
+    'furz',
+    'depp',
+    'möpse',
+    'drecksau',
+    'bastard',
+    'fick',
+    'muschi',
+    'sackgesicht',
+    'kackbratze',
+    'hurensohn',
+    'trottel',
+    'dummbatz',
+    'schlampe',
+    'dummkopf',
+    'fettbacke',
+    'fotze',
+    'hirnlos',
+    'kack',
+    'luder',
+    'stricher',
+    'miststück',
+    'muterfiker',
+    'mutterficker',
+    'onanieren',
+    'pisser',
+    'scheissen',
+    'scheißhaus',
+    'schise',
+    'schlampe',
+    'schwanz',
+    'schwanzlutscher',
+    'schweinepriester',
+    'schwuchtel',
+    'schwul',
+    'schwuler',
+    'scheisse',
+    'scheiße',
+    'scheise',
+    'trottel',
+    'fick',
+    'ficken',
+    'jud',
+    'jude',
+    'nazi',
+    'nsdap',
+    'dreck',
+    'wichser',
+    'wixer',
+    'wixen',
+    'sau',
+    'bums',
+    'arschloch',
+    'arsch',
+    'schwanz',
+    'fotze',
+    'hure',
+    'schlampe',
+    'titten',
+    'fotz',
+    'hitler',
+    'heil',
+    'opfer'
+);

+ 44 - 0
plugins/banbuilder/src/dict/en-base.php

@@ -0,0 +1,44 @@
+<?php
+/**
+ * PHP Array for English words
+ */
+array_push($badwords,
+		'anal',
+		'anus',
+		'ass',
+		'bastard',
+		'bitch',
+		'boob',
+		'cock',
+		'cum',
+		'cunt',
+		'dick',
+		'dildo',
+		'dyke',
+		'fag',
+		'faggot',
+		'fuck',
+		'fuk',
+		'handjob',
+		'homo',
+		'jizz',
+		'kike',
+		'kunt',
+		'muff',
+		'nigger',
+		'penis',
+		'piss',
+		'poop',
+		'pussy',
+		'queer',
+		'rape',
+		'semen',
+		'sex',
+		'shit',
+		'slut',
+		'titties',
+		'twat',
+		'vagina',
+		'vulva',
+		'wank'
+);

+ 133 - 0
plugins/banbuilder/src/dict/en-uk.php

@@ -0,0 +1,133 @@
+<?php
+include(__DIR__ . DIRECTORY_SEPARATOR . 'en-base.php');
+
+/**
+ * PHP Array for English (UK) words
+ */
+array_push($badwords,
+		'analplug',
+		'analsex',
+		'arse',
+		'assassin',
+		'balls',
+		'bimbo',
+		'bloody',
+		'bloodyhell',
+		'blowjob',
+		'bollocks',
+		'boner',
+		'boobies',
+		'boobs',
+		'bugger',
+		'bukkake',
+		'bullshit',
+		'chink',
+		'clit',
+		'clitoris',
+		'cocksucker',
+		'condom',
+		'coon',
+		'crap',
+		'cumshot',
+		'damm',
+		'dammit',
+		'damn',
+		'dickhead',
+		'doggystyle',
+		'f0ck',
+		'fags',
+		'fanny',
+		'fck',
+		'fcker',
+		'fckr',
+		'fcku',
+		'fcuk',
+		'fucker',
+		'fuckface',
+		'fuckr',
+		'fuct',
+		'genital',
+		'genitalia',
+		'genitals',
+		'glory hole',
+		'gloryhole',
+		'gobshite',
+		'godammet',
+		'godammit',
+		'goddammet',
+		'goddammit',
+		'goddamn',
+		'gypo',
+		'hitler',
+		'hooker',
+		'hore',
+		'horny',
+		'jesussucks',
+		'jizzum',
+		'kaffir',
+		'kill',
+		'killer',
+		'killin',
+		'killing',
+		'lesbo',
+		'masturbate',
+		'milf',
+		'molest',
+		'moron',
+		'motherfuck',
+		'mthrfckr',
+		'murder',
+		'murderer',
+		'nazi',
+		'negro',
+		'nigga',
+		'niggah',
+		'nonce',
+		'paedo',
+		'paedophile',
+		'paki',
+		'pecker',
+		'pedo',
+		'pedofile',
+		'pedophile',
+		'phuk',
+		'pig',
+		'pimp',
+		'poof',
+		'porn',
+		'prick',
+		'pron',
+		'prostitute',
+		'raped',
+		'rapes',
+		'rapist',
+		'schlong',
+		'screw',
+		'scrotum',
+		'shag',
+		'shemale',
+		'shite',
+		'shiz',
+		'slag',
+		'spastic',
+		'spaz',
+		'sperm',
+		'spunk',
+		'stripper',
+		'tart',
+		'terrorist',
+		'tits',
+		'tittyfuck',
+		'tosser',
+		'turd',
+		'vaginal',
+		'vibrator',
+		'wanker',
+		'weed',
+		'wetback',
+		'whor',
+		'whore',
+		'wog',
+		'wtf',
+		'xxx'
+);

+ 45 - 0
plugins/banbuilder/src/dict/en-us.php

@@ -0,0 +1,45 @@
+<?php
+include(__DIR__ . DIRECTORY_SEPARATOR . 'en-base.php');
+/**
+ * PHP Array for English words
+ */
+array_push($badwords,
+		'abortion',
+		'anus',
+		'beastiality',
+		'bestiality',
+		'bewb',
+		'blow',
+		'blumpkin',
+		'cawk',
+		'choad',
+		'cooter',
+		'cornhole',
+		'dong',
+		'douche',
+		'fart',
+		'foreskin',
+		'gangbang',
+		'gook',
+		'hell',
+		'honkey',
+		'humping',
+		'jiz',
+		'labia',
+		'nutsack',
+		'pen1s',
+		'poon',
+		'punani',
+		'queef',
+		'quim',
+		'rectal',
+		'rectum',
+		'rimjob',
+		'spick',
+		'spoo',
+		'spooge',
+		'taint',
+		'titty',
+		'vag',
+		'whore'
+);

+ 63 - 0
plugins/banbuilder/src/dict/es.php

@@ -0,0 +1,63 @@
+<?php
+/**
+ * PHP Array for Spanish words
+ * Original word list from http://bulbapedia.bulbagarden.net/wiki/List_of_censored_words_in_Generation_V
+ */
+array_push($badwords,
+		'bollera',		// Lesbian
+		'cabron',		// Dickhead
+		'cabrón',		// Dickhead
+		'cabrona',		// Dickhead (feminine)
+		'cabronazo',	// Bastard
+		'capulla',		// Asshole (feminine)
+		'capullo',		// Asshole
+		'chichi',		// Pussy
+		'chocho',		// Pussy
+		'cojon',		// Testicle (slang)
+		'cojón',		// Testicle (slang)
+		'cojones',		// Testicles (slang)
+		'comepollas',	// Cocksucker
+		'cono',			// Cunt
+		'coño',			// Cunt
+		'culo',			// Ass
+		'follar',		// Fuck
+		'follen',		// Go fuck
+		'furcia',		// Whore
+		'gilipollas',	// Jerk
+		'hijaputa',		// Son of a bitch (feminine)
+		'hijo puta',	// Son of a bitch
+		'hijoputa',		// Son of a bitch
+		'hostia',		// Bastard, shit, to hit
+		'joder',		// Fuck
+		'jodete',		// Go fuck yourself
+		'jódete',		// Go fuck yourself
+		'joputa',		// Abbreviation of "hijo de puta" (son of a bitch)
+		'mamada',		// Blowjob
+		'mamon',		// Sucker
+		'mamón',		// Sucker
+		'mamona',		// Sucker (feminine)
+		'marica',		// Faggy
+		'maricon',		// Faggot
+		'maricón',		// Faggot
+		'maricona',		// Drag queen, lesbian
+		'mariconazo',	// Faggot
+		'nazi',			// Nazi
+		'ojete',		// Anus (slang)
+		'ostia',		// Abbreviation of "hostia" (bastard, shit, to hit)
+		'pajillero',	// Wanker
+		'pendon',		// Slob
+		'pendón',		// Slob
+		'picha',		// Dick
+		'polla',		// Dick
+		'pollon',		// Dick
+		'pollón',		// Dick
+		'polvo',		// To ejaculate
+		'potorro',		// Vagina
+		'puta',			// Bitch/whore
+		'puto',			// Bitch/whore (masculine), faggot
+		'puton',		// Bitch/whore
+		'putón',		// Bitch/whore
+		'tortillera',	// Lesbian
+		'zorron',		// To be/act slutty
+		'zorrón'		// To be/act slutty
+);

+ 425 - 0
plugins/banbuilder/src/dict/fi.php

@@ -0,0 +1,425 @@
+<?php
+// Submitted via @rtxanson 
+// To add new swearwords, make sure to include some additional
+// wordforms.
+//
+// Existing words could always have more forms, but I was too lazy to
+// generate all of them, so this is a start; in no particular
+// order...
+array_push($badwords,
+		'jumalauta',     // goddamnit, interjection
+		'helvetit',      // hell, pl. nominative
+		'helvetiltä',    // hell, sg. ablative
+		'helvetillä',    // hell, sg. adessive
+		'helvetille',    // hell, sg. allative
+		'helvetistä',    // hell, sg. elative
+		'helvetin',      // hell, sg. genitive
+		'helvettiin',    // hell, sg. illative
+		'helvetissä',    // hell, sg. inessive
+		'helvetti',      // hell, sg. nominative
+		'helvettiä',     // hell, sg. partitive
+		'helveteiltä',   // hell, pl. ablative
+		'helveteillä',   // hell, pl. adessive
+		'helveteille',   // hell, pl. allative
+		'helveteistä',   // hell, pl. elative
+		'helvettien',    // hell, pl. genitive
+		'helvetteihin',  // hell, pl. illative
+		'helveteissä',   // hell, pl. inessive
+		'helvetit',      // hell, pl. nominative
+		'helvettejä',    // hell, pl. partitive
+		'hinttarit',     // faggot, pl. nominative
+		'hinttarilta',   // faggot, sg. ablative
+		'hinttarilla',   // faggot, sg. adessive
+		'hinttarille',   // faggot, sg. allative
+		'hinttarista',   // faggot, sg. elative
+		'hinttarin',     // faggot, sg. genitive
+		'hinttariin',    // faggot, sg. illative
+		'hinttarissa',   // faggot, sg. inessive
+		'hinttari',      // faggot, sg. nominative
+		'hinttaria',     // faggot, sg. partitive
+		'hinttareilta',  // faggot, pl. ablative
+		'hinttareilla',  // faggot, pl. adessive
+		'hinttareille',  // faggot, pl. allative
+		'hinttareista',  // faggot, pl. elative
+		'hinttarien',    // faggot, pl. genitive
+		'hinttareiden',  // faggot, pl. genitive
+		'hinttareitten', // faggot, pl. genitive
+		'hinttareihin',  // faggot, pl. illative
+		'hinttareissa',  // faggot, pl. inessive
+		'hinttarit',     // faggot, pl. nominative
+		'hinttareita',   // faggot, pl. partitive
+		'hinttareja',    // faggot, pl. partitive
+		'hintit',        // fag, pl. nominative
+		'hintiltä',      // fag, sg. ablative
+		'hintillä',      // fag, sg. adessive
+		'hintille',      // fag, sg. allative
+		'hintistä',      // fag, sg. elative
+		'hintin',        // fag, sg. genitive
+		'hinttiin',      // fag, sg. illative
+		'hintissä',      // fag, sg. inessive
+		'hintti',        // fag, sg. nominative
+		'hinttiä',       // fag, sg. partitive
+		'hinteiltä',     // fag, pl. ablative
+		'hinteillä',     // fag, pl. adessive
+		'hinteille',     // fag, pl. allative
+		'hinteistä',     // fag, pl. elative
+		'hinttien',      // fag, pl. genitive
+		'hintteihin',    // fag, pl. illative
+		'hinteissä',     // fag, pl. inessive
+		'hintit',        // fag, pl. nominative
+		'hinttejä',      // fag, pl. partitive
+		'huorat',        // whore, pl. nominative
+		'huoralta',      // whore, sg. ablative
+		'huoralla',      // whore, sg. adessive
+		'huoralle',      // whore, sg. allative
+		'huorasta',      // whore, sg. elative
+		'huoran',        // whore, sg. genitive
+		'huoraan',       // whore, sg. illative
+		'huorassa',      // whore, sg. inessive
+		'huora',         // whore, sg. nominative
+		'huoraa',        // whore, sg. partitive
+		'huorilta',      // whore, pl. ablative
+		'huorilla',      // whore, pl. adessive
+		'huorille',      // whore, pl. allative
+		'huorista',      // whore, pl. elative
+		'huorien',       // whore, pl. genitive
+		'huoriin',       // whore, pl. illative
+		'huorissa',      // whore, pl. inessive
+		'huorat',        // whore, pl. nominative
+		'huoria',        // whore, pl. partitive
+		'kusipäät',      // pisshead, pl. nominative
+		'kusipäältä',    // pisshead, sg. ablative
+		'kusipäällä',    // pisshead, sg. adessive
+		'kusipäälle',    // pisshead, sg. allative
+		'kusipäästä',    // pisshead, sg. elative
+		'kusipään',      // pisshead, sg. genitive
+		'kusipäähän',    // pisshead, sg. illative
+		'kusipäässä',    // pisshead, sg. inessive
+		'kusipää',       // pisshead, sg. nominative
+		'kusipäätä',     // pisshead, sg. partitive
+		'kusipäiltä',    // pisshead, pl. ablative
+		'kusipäillä',    // pisshead, pl. adessive
+		'kusipäille',    // pisshead, pl. allative
+		'kusipäistä',    // pisshead, pl. elative
+		'kusipäitten',   // pisshead, pl. genitive
+		'kusipäihin',    // pisshead, pl. illative
+		'kusipäissä',    // pisshead, pl. inessive
+		'kusipäät',      // pisshead, pl. nominative
+		'kusipäitä',     // pisshead, pl. partitive
+		'kyrvät',        // cock, pl. nominative
+		'kyrvältä',      // cock, sg. ablative
+		'kyrvällä',      // cock, sg. adessive
+		'kyrvälle',      // cock, sg. allative
+		'kyrvästä',      // cock, sg. elative
+		'kyrvän',        // cock, sg. genitive
+		'kyrpään',       // cock, sg. illative
+		'kyrvässä',      // cock, sg. inessive
+		'kyrpä',         // cock, sg. nominative
+		'kyrpää',        // cock, sg. partitive
+		'kyrviltä',      // cock, pl. ablative
+		'kyrvillä',      // cock, pl. adessive
+		'kyrville',      // cock, pl. allative
+		'kyrvistä',      // cock, pl. elative
+		'kyrpien',       // cock, pl. genitive
+		'kyrpiin',       // cock, pl. illative
+		'kyrvissä',      // cock, pl. inessive
+		'kyrvät',        // cock, pl. nominative
+		'kyrpiä',        // cock, pl. partitive
+		'mulkut',        // dick, pl. nominative
+		'mulkulta',      // dick, sg. ablative
+		'mulkulla',      // dick, sg. adessive
+		'mulkulle',      // dick, sg. allative
+		'mulkusta',      // dick, sg. elative
+		'mulkun',        // dick, sg. genitive
+		'mulkkuun',      // dick, sg. illative
+		'mulkussa',      // dick, sg. inessive
+		'mulkku',        // dick, sg. nominative
+		'mulkkua',       // dick, sg. partitive
+		'mulkuilta',     // dick, pl. ablative
+		'mulkuilla',     // dick, pl. adessive
+		'mulkuille',     // dick, pl. allative
+		'mulkuista',     // dick, pl. elative
+		'mulkkujen',     // dick, pl. genitive
+		'mulkkuihin',    // dick, pl. illative
+		'mulkuissa',     // dick, pl. inessive
+		'mulkut',        // dick, pl. nominative
+		'mulkkuja',      // dick, pl. partitive
+		'nartut',        // bitch, pl. nominative
+		'nartulta',      // bitch, sg. ablative
+		'nartulla',      // bitch, sg. adessive
+		'nartulle',      // bitch, sg. allative
+		'nartusta',      // bitch, sg. elative
+		'nartun',        // bitch, sg. genitive
+		'narttuun',      // bitch, sg. illative
+		'nartussa',      // bitch, sg. inessive
+		'narttu',        // bitch, sg. nominative
+		'narttua',       // bitch, sg. partitive
+		'nartuilta',     // bitch, pl. ablative
+		'nartuilla',     // bitch, pl. adessive
+		'nartuille',     // bitch, pl. allative
+		'nartuista',     // bitch, pl. elative
+		'narttujen',     // bitch, pl. genitive
+		'narttuihin',    // bitch, pl. illative
+		'nartuissa',     // bitch, pl. inessive
+		'nartut',        // bitch, pl. nominative
+		'narttuja',      // bitch, pl. partitive
+		'neekerit',      // nigger, pl. nominative
+		'neekeriltä',    // nigger, sg. ablative
+		'neekerillä',    // nigger, sg. adessive
+		'neekerille',    // nigger, sg. allative
+		'neekeristä',    // nigger, sg. elative
+		'neekerin',      // nigger, sg. genitive
+		'neekeriin',     // nigger, sg. illative
+		'neekerissä',    // nigger, sg. inessive
+		'neekeri',       // nigger, sg. nominative
+		'neekeriä',      // nigger, sg. partitive
+		'neekereiltä',   // nigger, pl. ablative
+		'neekereillä',   // nigger, pl. adessive
+		'neekereille',   // nigger, pl. allative
+		'neekereistä',   // nigger, pl. elative
+		'neekerien',     // nigger, pl. genitive
+		'neekereitten',  // nigger, pl. genitive
+		'neekereiden',   // nigger, pl. genitive
+		'neekereihin',   // nigger, pl. illative
+		'neekereissä',   // nigger, pl. inessive
+		'neekerit',      // nigger, pl. nominative
+		'neekereitä',    // nigger, pl. partitive
+		'neekerejä',     // nigger, pl. partitive
+		'paskat',        // shit, pl. nominative
+		'paskalta',      // shit, sg. ablative
+		'paskalla',      // shit, sg. adessive
+		'paskalle',      // shit, sg. allative
+		'paskasta',      // shit, sg. elative
+		'paskan',        // shit, sg. genitive
+		'paskaan',       // shit, sg. illative
+		'paskassa',      // shit, sg. inessive
+		'paska',         // shit, sg. nominative
+		'paskaa',        // shit, sg. partitive
+		'paskoilta',     // shit, pl. ablative
+		'paskoilla',     // shit, pl. adessive
+		'paskoille',     // shit, pl. allative
+		'paskoista',     // shit, pl. elative
+		'paskojen',      // shit, pl. genitive
+		'paskoihin',     // shit, pl. illative
+		'paskoissa',     // shit, pl. inessive
+		'paskat',        // shit, pl. nominative
+		'paskoja',       // shit, pl. partitive
+		'perhanat',      // deuce, pl. nominative
+		'perhanalta',    // deuce, sg. ablative
+		'perhanalla',    // deuce, sg. adessive
+		'perhanalle',    // deuce, sg. allative
+		'perhanasta',    // deuce, sg. elative
+		'perhanan',      // deuce, sg. genitive
+		'perhanaan',     // deuce, sg. illative
+		'perhanassa',    // deuce, sg. inessive
+		'perhana',       // deuce, sg. nominative
+		'perhanaa',      // deuce, sg. partitive
+		'perhanoilta',   // deuce, pl. ablative
+		'perhanoilla',   // deuce, pl. adessive
+		'perhanoille',   // deuce, pl. allative
+		'perhanoista',   // deuce, pl. elative
+		'perhanoiden',   // deuce, pl. genitive
+		'perhanoitten',  // deuce, pl. genitive
+		'perhanoihin',   // deuce, pl. illative
+		'perhanoissa',   // deuce, pl. inessive
+		'perhanat',      // deuce, pl. nominative
+		'perhanoita',    // deuce, pl. partitive
+		'perkeleet',     // devil, pl. nominative
+		'perkeleeltä',   // devil, sg. ablative
+		'perkeleellä',   // devil, sg. adessive
+		'perkeleelle',   // devil, sg. allative
+		'perkeleestä',   // devil, sg. elative
+		'perkeleen',     // devil, sg. genitive
+		'perkeleeseen',  // devil, sg. illative
+		'perkeleessä',   // devil, sg. inessive
+		'perkele',       // devil, sg. nominative
+		'perkelettä',    // devil, sg. partitive
+		'perkeleiltä',   // devil, pl. ablative
+		'perkeleillä',   // devil, pl. adessive
+		'perkeleille',   // devil, pl. allative
+		'perkeleistä',   // devil, pl. elative
+		'perkeleitten',  // devil, pl. genitive
+		'perkeleiden',   // devil, pl. genitive
+		'perkeleihin',   // devil, pl. illative
+		'perkeleisiin',  // devil, pl. illative
+		'perkeleissä',   // devil, pl. inessive
+		'perkeleet',     // devil, pl. nominative
+		'perkeleitä',    // devil, pl. partitive
+		'perseet',       // ass, pl. nominative
+		'perseeltä',     // ass, sg. ablative
+		'perseellä',     // ass, sg. adessive
+		'perseelle',     // ass, sg. allative
+		'perseestä',     // ass, sg. elative
+		'perseen',       // ass, sg. genitive
+		'perseeseen',    // ass, sg. illative
+		'perseessä',     // ass, sg. inessive
+		'perse',         // ass, sg. nominative
+		'persettä',      // ass, sg. partitive
+		'perseiltä',     // ass, pl. ablative
+		'perseillä',     // ass, pl. adessive
+		'perseille',     // ass, pl. allative
+		'perseistä',     // ass, pl. elative
+		'perseitten',    // ass, pl. genitive
+		'perseiden',     // ass, pl. genitive
+		'perseihin',     // ass, pl. illative
+		'perseisiin',    // ass, pl. illative
+		'perseissä',     // ass, pl. inessive
+		'perseet',       // ass, pl. nominative
+		'perseitä',      // ass, pl. partitive
+		'pillut',        // pussy, pl. nominative
+		'pillulta',      // pussy, sg. ablative
+		'pillulla',      // pussy, sg. adessive
+		'pillulle',      // pussy, sg. allative
+		'pillusta',      // pussy, sg. elative
+		'pillun',        // pussy, sg. genitive
+		'pilluun',       // pussy, sg. illative
+		'pillussa',      // pussy, sg. inessive
+		'pillu',         // pussy, sg. nominative
+		'pillua',        // pussy, sg. partitive
+		'pilluilta',     // pussy, pl. ablative
+		'pilluilla',     // pussy, pl. adessive
+		'pilluille',     // pussy, pl. allative
+		'pilluista',     // pussy, pl. elative
+		'pillujen',      // pussy, pl. genitive
+		'pilluihin',     // pussy, pl. illative
+		'pilluissa',     // pussy, pl. inessive
+		'pillut',        // pussy, pl. nominative
+		'pilluja',       // pussy, pl. partitive
+		'saamarit',      // bloody, pl. nominative
+		'saamarilta',    // bloody, sg. ablative
+		'saamarilla',    // bloody, sg. adessive
+		'saamarille',    // bloody, sg. allative
+		'saamarista',    // bloody, sg. elative
+		'saamarin',      // bloody, sg. genitive
+		'saamariin',     // bloody, sg. illative
+		'saamarissa',    // bloody, sg. inessive
+		'saamari',       // bloody, sg. nominative
+		'saamaria',      // bloody, sg. partitive
+		'saamareilta',   // bloody, pl. ablative
+		'saamareilla',   // bloody, pl. adessive
+		'saamareille',   // bloody, pl. allative
+		'saamareista',   // bloody, pl. elative
+		'saamarien',     // bloody, pl. genitive
+		'saamareiden',   // bloody, pl. genitive
+		'saamareitten',  // bloody, pl. genitive
+		'saamareihin',   // bloody, pl. illative
+		'saamareissa',   // bloody, pl. inessive
+		'saamarit',      // bloody, pl. nominative
+		'saamareita',    // bloody, pl. partitive
+		'saamareja',     // bloody, pl. partitive
+		'saatanat',      // satan, pl. nominative
+		'saatanalta',    // satan, sg. ablative
+		'saatanalla',    // satan, sg. adessive
+		'saatanalle',    // satan, sg. allative
+		'saatanasta',    // satan, sg. elative
+		'saatanan',      // satan, sg. genitive
+		'saatanaan',     // satan, sg. illative
+		'saatanassa',    // satan, sg. inessive
+		'saatana',       // satan, sg. nominative
+		'saatanaa',      // satan, sg. partitive
+		'saatanoilta',   // satan, pl. ablative
+		'saatanoilla',   // satan, pl. adessive
+		'saatanoille',   // satan, pl. allative
+		'saatanoista',   // satan, pl. elative
+		'saatanoiden',   // satan, pl. genitive
+		'saatanoitten',  // satan, pl. genitive
+		'saatanoihin',   // satan, pl. illative
+		'saatanoissa',   // satan, pl. inessive
+		'saatanat',      // satan, pl. nominative
+		'saatanoita',    // satan, pl. partitive
+		'vittu',         // cunt, interjection, sg. nominative
+		'vitut',         // cunt, pl. nominative
+		'vitulta',       // cunt, sg. ablative
+		'vitulla',       // cunt, sg. adessive
+		'vitulle',       // cunt, sg. allative
+		'vitusta',       // cunt, sg. elative
+		'vitun',         // cunt, sg. genitive
+		'vittuun',       // cunt, sg. illative
+		'vitussa',       // cunt, sg. inessive
+		'vittua',        // cunt, sg. partitive
+		'vituilta',      // cunt, pl. ablative
+		'vituilla',      // cunt, pl. adessive
+		'vituille',      // cunt, pl. allative
+		'vituista',      // cunt, pl. elative
+		'vittujen',      // cunt, pl. genitive
+		'vittuihin',     // cunt, pl. illative
+		'vituissa',      // cunt, pl. inessive
+		'vitut',         // cunt, pl. nominative
+		'vittuja',       // cunt, pl. partitive
+		'ämmät',         // hag, bitch; pl. nominative
+		'ämmältä',       // hag, bitch; sg. ablative
+		'ämmällä',       // hag, bitch; sg. adessive
+		'ämmälle',       // hag, bitch; sg. allative
+		'ämmästä',       // hag, bitch; sg. elative
+		'ämmän',         // hag, bitch; sg. genitive
+		'ämmään',        // hag, bitch; sg. illative
+		'ämmässä',       // hag, bitch; sg. inessive
+		'ämmä',          // hag, bitch; sg. nominative
+		'ämmää',         // hag, bitch; sg. partitive
+		'ämmiltä',       // hag, bitch; pl. ablative
+		'ämmillä',       // hag, bitch; pl. adessive
+		'ämmille',       // hag, bitch; pl. allative
+		'ämmistä',       // hag, bitch; pl. elative
+		'ämmien',        // hag, bitch; pl. genitive
+		'ämmiin',        // hag, bitch; pl. illative
+		'ämmissä',       // hag, bitch; pl. inessive
+		'ämmät',         // hag, bitch; pl. nominative
+		'ämmiä',         // hag, bitch; pl. partitive
+		'fittu',         // cunt (f- version); interjection, sg. nominative
+		'fitut',         // cunt (f- version); pl. nominative
+		'fitulta',       // cunt (f- version); sg. ablative
+		'fitulla',       // cunt (f- version); sg. adessive
+		'fitulle',       // cunt (f- version); sg. allative
+		'fitusta',       // cunt (f- version); sg. elative
+		'fitun',         // cunt (f- version); sg. genitive
+		'fittuun',       // cunt (f- version); sg. illative
+		'fitussa',       // cunt (f- version); sg. inessive
+		'fittua',        // cunt (f- version); sg. partitive
+		'fituilta',      // cunt (f- version); pl. ablative
+		'fituilla',      // cunt (f- version); pl. adessive
+		'fituille',      // cunt (f- version); pl. allative
+		'fituista',      // cunt (f- version); pl. elative
+		'fittujen',      // cunt (f- version); pl. genitive
+		'fittuihin',     // cunt (f- version); pl. illative
+		'fituissa',      // cunt (f- version); pl. inessive
+		'fitut',         // cunt (f- version); pl. nominative
+		'fittuja',       // cunt (f- version); pl. partitive
+		'fiddu',         // cunt (fidd- version); interjection, sg. nominative
+		'fiddut',        // cunt (fidd- version); pl. nominative
+		'fiddulta',      // cunt (fidd- version); sg. ablative
+		'fiddulla',      // cunt (fidd- version); sg. adessive
+		'fiddulle',      // cunt (fidd- version); sg. allative
+		'fiddusta',      // cunt (fidd- version); sg. elative
+		'fiddun',        // cunt (fidd- version); sg. genitive
+		'fidduun',       // cunt (fidd- version); sg. illative
+		'fiddussa',      // cunt (fidd- version); sg. inessive
+		'fiddua',        // cunt (fidd- version); sg. partitive
+		'fidduilta',     // cunt (fidd- version); pl. ablative
+		'fidduilla',     // cunt (fidd- version); pl. adessive
+		'fidduille',     // cunt (fidd- version); pl. allative
+		'fidduista',     // cunt (fidd- version); pl. elative
+		'fiddujen',      // cunt (fidd- version); pl. genitive
+		'fidduihin',     // cunt (fidd- version); pl. illative
+		'fidduissa',     // cunt (fidd- version); pl. inessive
+		'fiddut',        // cunt (fidd- version); pl. nominative
+		'fidduja',       // cunt (fidd- version); pl. partitive
+		'horo',          // whore; interjection, sg. nominative
+		'horot',         // whore; pl. nominative
+		'horolta',       // whore; sg. ablative
+		'horolla',       // whore; sg. adessive
+		'horolle',       // whore; sg. allative
+		'horosta',       // whore; sg. elative
+		'horon',         // whore; sg. genitive
+		'horoon',        // whore; sg. illative
+		'horossa',       // whore; sg. inessive
+		'horoa',         // whore; sg. partitive
+		'horoilta',      // whore; pl. ablative
+		'horoilla',      // whore; pl. adessive
+		'horoille',      // whore; pl. allative
+		'horoista',      // whore; pl. elative
+		'horojen',       // whore; pl. genitive
+		'horoihin',      // whore; pl. illative
+		'horoissa',      // whore; pl. inessive
+		'horot',         // whore; pl. nominative
+		'horoja'        // whore; pl. partitive
+);

+ 66 - 0
plugins/banbuilder/src/dict/fr.php

@@ -0,0 +1,66 @@
+<?php
+/**
+ * PHP Array for French words
+ * Original word list from http://bulbapedia.bulbagarden.net/wiki/List_of_censored_words_in_Generation_V
+ */
+array_push($badwords,
+		'abruti', 		// Idiot (masculine)
+		'abrutie', 		// Idiot (feminine)
+		'baise',		// Fuck
+		'baisé',		// Fucked
+		'baiser',		// To fuck
+		'batard',		// Bastard
+		'bite',			// Dick
+		'bougnoul',		// Sandnigger
+		'branleur',		// Wanker
+		'burne',		// Testicle
+		'chier',		// To shit
+		'cocu',			// Cuckold
+		'con',			// Idiot
+		'connard',		// Idiot
+		'connasse',		// Stupid and annoying girl
+		'conne',		// Idiot (feminine)
+		'couille',		// Ball (testicle)
+		'couillon',		// Stupid (masculine)
+		'couillonne',	// Stupid (feminine)
+		'crevard',		// Backstabber or Hobo, depending on the context
+		'cul',			// Ass
+		'encule',		// Mother-fucker (masculine)
+		'enculé',		// Mother-fucker (masculine)
+		'enculee',		// Mother-fucker (feminine)
+		'enculée',		// Mother-fucker (feminine)
+		'enculer',		// To fuck in the ass
+		'enfoire',		// Bastard (masculine)
+		'enfoiré',		// Bastard (masculine)
+		'fion',			// Ass
+		'foutre',		// Cum
+		'merde',		// Shit
+		'negre',		// Nigger (masculine)
+		'nègre',		// Nigger (masculine)
+		'negresse',		// Nigger (feminine)
+		'négresse',		// Nigger (feminine)
+		'nique',		// Fuck
+		'niquer',		// To fuck
+		'partouze',		// Sex orgy
+		'pd',			// Fag
+		'pede',			// Fag
+		'pédé',			// Fag
+		'petasse',		// Slut/Show-off (feminine)
+		'pétasse',		// Slut/Show-off (feminine)
+		'pine',			// Dick
+		'pouffe',		// Show-off (feminine)
+		'pouffiasse',	// Show-off (feminine)
+		'putain',		// Slut
+		'pute',			// Slut
+		'salaud',		// Bastard/backstabber (masculine)
+		'salop',		// Bastard/backstabber (masculine)
+		'salopard',		// Bastard/backstabber (masculine)
+		'salope',		// Slut (feminine)
+		'sodomie',		// Sodomy
+		'sucer',		// To suck
+		'tapette',		// Fag
+		'tare',			// Insane
+		'taré',			// Insane
+		'vagin',		// Vagina
+		'zob'			// Dick
+);

+ 226 - 0
plugins/banbuilder/src/dict/it.php

@@ -0,0 +1,226 @@
+<?php
+/**
+ * PHP Array for Italian words
+ */
+// https://github.com/shutterstock/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words/blob/master/it
+array_push($badwords,
+	"allupato",
+	"ammucchiata",
+	"anale",
+	"arrapato",
+	"arrusa",
+	"arruso",
+	"assatanato",
+	"bagascia",
+	"bagassa",
+	"bagnarsi",
+	"baldracca",
+	"balle",
+	"battere",
+	"battona",
+	"belino",
+	"biga",
+	"bocchinara",
+	"bocchino",
+	"bofilo",
+	"boiata",
+	"bordello",
+	"brinca",
+	"bucaiolo",
+	"budiùlo",
+	"buona donna",
+	"busone",
+	"cacca",
+	"caccati in mano e prenditi a schiaffi",
+	"caciocappella",
+	"cadavere",
+	"cagare",
+	"cagata",
+	"cagna",
+	"cammello",
+	"cappella",
+	"carciofo",
+	"carità",
+	"casci",
+	"cazzata",
+	"cazzimma",
+	"cazzo",
+	"checca",
+	"chiappa",
+	"chiavare",
+	"chiavata",
+	"ciospo",
+	"ciucciami il cazzo",
+	"coglione",
+	"coglioni",
+	"cornuto",
+	"cozza",
+	"culattina",
+	"culattone",
+	"culo",
+	"di merda",
+	"ditalino",
+	"duro",
+	"fare unaŠ",
+	"fava",
+	"femminuccia",
+	"fica",
+	"figa",
+	"figlio di buona donna",
+	"figlio di puttana",
+	"figone",
+	"finocchio",
+	"fottere",
+	"fottersi",
+	"fracicone",
+	"fregna",
+	"frocio",
+	"froscio",
+	"fuori come un balcone",
+	"goldone",
+	"grilletto",
+	"guanto",
+	"guardone",
+	"incazzarsi",
+	"incoglionirsi",
+	"ingoio",
+	"l'arte bolognese",
+	"leccaculo",
+	"lecchino",
+	"lofare",
+	"loffa",
+	"loffare",
+	"lumaca",
+	"manico",
+	"mannaggia",
+	"merda",
+	"merdata",
+	"merdoso",
+	"mignotta",
+	"minchia",
+	"minchione",
+	"mona",
+	"monta",
+	"montare",
+	"mussa",
+	"nave scuola",
+	"nerchia",
+	"nudo",
+	"padulo",
+	"palle",
+	"palloso",
+	"patacca",
+	"patonza",
+	"pecorina",
+	"pesce",
+	"picio",
+	"pincare",
+	"pipa",
+	"pipì",
+	"pippone",
+	"pirla",
+	"pisciare",
+	"piscio",
+	"pisello",
+	"pistola",
+	"pistolotto",
+	"pomiciare",
+	"pompa",
+	"pompino",
+	"porca",
+	"porca madonna",
+	"porca miseria",
+	"porca puttana",
+	"porco due",
+	"porco zio",
+	"potta",
+	"puppami",
+	"puttana",
+	"quaglia",
+	"recchione",
+	"regina",
+	"rincoglionire",
+	"rizzarsi",
+	"rompiballe",
+	"ruffiano",
+	"sbattere",
+	"sbattersi",
+	"sborra",
+	"sborrata",
+	"sborrone",
+	"sbrodolata",
+	"scopare",
+	"scopata",
+	"scorreggiare",
+	"sega",
+	"slinguare",
+	"slinguata",
+	"smandrappata",
+	"soccia",
+	"socmel",
+	"sorca",
+	"spagnola",
+	"spompinare",
+	"sticchio",
+	"stronza",
+	"stronzata",
+	"stronzo",
+	"succhiami",
+	"sveltina",
+	"sverginare",
+	"tarzanello",
+	"terrone",
+	"testa di cazzo",
+	"tette",
+	"tirare",
+	"topa",
+	"troia",
+	"trombare",
+	"uccello",
+	"vacca",
+	"vaffanculo",
+	"vangare",
+	"venire",
+	"zinne",
+	"zio cantante",
+	"zoccola"
+);
+// http://bulbapedia.bulbagarden.net/wiki/List_of_censored_words_in_Generation_V
+array_push($badwords,
+	"affanculo",
+	"bagascia",
+	"baldracca",
+	"battona",
+	"bocchinara",
+	"bocchinaro",
+	"cazzi",
+	"cazzo",
+	"chiavare",
+	"coglione",
+	"culattone",
+	"dio bestia",
+	"dio cane",
+	"dio porco",
+	"fanculo",
+	"fica",
+	"figa",
+	"fottere",
+	"frocio",
+	"inculare",
+	"mignotta",
+	"minchia",
+	"pompinara",
+	"pompino",
+	"porco dio",
+	"puttana",
+	"ricchione",
+	"rottinculo",
+	"sborra",
+	"segaiolo",
+	"troia",
+	"troietta",
+	"troiona",
+	"troione",
+	"vaffanculo",
+	"zoccola"
+);

+ 50 - 0
plugins/banbuilder/src/dict/jp.php

@@ -0,0 +1,50 @@
+<?php
+/**
+ * PHP Array for Janapese words
+ * Original word list from http://bulbapedia.bulbagarden.net/wiki/List_of_censored_words_in_Generation_V
+ */
+array_push($badwords,
+		'あいえき',     	// Sexual fluids
+		'せいえき',     	// Semen
+		'ファック',     	// Fuck
+		'いぬごろし',   	// Dog killer
+		'いんぱい',     	// Slut
+		'いんもう',     	// Pubic hair
+		'うんこ',     	// Shit
+		'うんち',     	// Shit
+		'おめこ',     	// Vagina
+		'かたわ',     	// Cripple
+		'きちがい',     	// Lunatic
+		'くろんぼ',     	// Negro
+		'けとう',     	// Hairy foreigner
+		'ころす',     	// Kill
+		'ごうかん',     	// Rape
+		'さんごくじん',	// Foreign resident
+		'しなじん',    	// Chinese person (offensive)
+		'しね',     		// Die
+		'せっくす',    	// Sex
+		'ちゃんころ',    // Chink
+		'ちんこ',     	// Penis
+		'ちんちん',     	// Dick
+		'ちんぽ',     	// Dick
+		'ちんば',     	// Cripple
+		'つんぼ',     	// Deaf person
+		'どかた',     	// Laborer
+		'とさつ',     	// Slaughter
+		'どもり',     	// Speech impediment
+		'にぐろ',     	// Negro
+		'にんぴにん',  	// Brute
+		'びっこ',     	// Cripple
+		'ひにん',     	// Contraception / Non-human (insult to Burakumin)
+		'ふぇら',     	// Fellatio
+		'ぶらく',			// Buraku
+		'ぺにす',     	// Penis
+		'まんこ',     	// Vagina
+		'おまんこ',     	// Vagina
+		'めくら',     	// Blind person, illiterate person
+		'やらせろ',    	// "Let me do you"
+		'やりまん',    	// Slut
+		'りょうじょく', 	// Rape
+		'れいぷ',     	// Rape
+		'ろりこん'  	// Pedophile
+);

+ 55 - 0
plugins/banbuilder/src/dict/kr.php

@@ -0,0 +1,55 @@
+<?php
+/**
+ * PHP Array for Korean words
+ * Original word list from http://bulbapedia.bulbagarden.net/wiki/List_of_censored_words_in_Generation_V
+ */
+array_push($badwords,
+		'강간',     		// Rape
+		'개새끼',     	// Son of a bitch
+		'개지랄',     	// Careless dog (insult)
+		'걸레같은년',    	// A bitch that is a rag
+		'걸레년',    		// Insult for women
+		'귀두',    		// Glans penis
+		'빨아',    		// To suck
+		'핥아',    		// To lick
+		'니미랄',    		// An insulting word
+		'딸딸이',    		// Masturbation
+		'미친년',    		// Crazy bitch
+		'미친놈',    		// Crazy bastard
+		'병신',    		// Retard
+		'보지',    		// Vulva
+		'부랄',    		// Same pronunciation as the word for testicles
+		'불알',    		// Testicles
+		'빠구리',    		// Sexual relationship (slang)
+		'빠굴이',    		// Same pronunciation as slang for sexual relationship
+		'사까시',     	// Oral sex
+		'꼡성감대',     	// Any body part that reacts to sexual stimuli
+		'성관계',     	// Sexual relationship
+		'냕성폭행',     	// Sexual assult
+		'성행위',     	// Sexual act
+		'섹스',     		// Sex
+		'시팔년',     	// An insult (for women)
+		'시팔놈',     	// An insult (for men)
+		'쌍넘',     		// An insult (for men)
+		'쌍년',     		// An insult (for women)
+		'쌍놈',     		// An insult (for men)
+		'쌍뇬',     		// An insult (for men)
+		'씨발',     		// Shit
+		'씨발넘',     	// An insult (for men)
+		'씨발년',     	// An insult (for women)
+		'씨발놈',     	// An insult (for men)
+		'씨발뇬',     	// An insult (for men)
+		'씹새끼',     	// Bastard
+		'염병',			// Typhoid fever (slang)
+		'오르',     		// Orgasm
+		'왕자지',     	// Penis
+		'유두',     		// Nipple
+		'자지',     		// Penis (slang)
+		'잠지',     		// Penis
+		'정액',     		// Semen
+		'창녀',     		// Prostitute
+		'콘돔',     		// Condom
+		'클리토리스',    	// Clitoris
+		'페니스',    		// Penis
+		'후장'    		// Gut
+);

+ 81 - 0
plugins/banbuilder/src/dict/nl.php

@@ -0,0 +1,81 @@
+<?php
+/**
+ * PHP Array for Dutch words
+ * Original word list from http://bulbapedia.bulbagarden.net/wiki/List_of_censored_words_in_Generation_V
+ */
+array_push($badwords,
+		'abortus', 			// Abortion
+		'achterlijk', 		// Retarded
+		'bosneger', 		// Forest nigger
+		'debiel', 			// Moron, mentally retarded
+		'etterbak', 		// Annoying person (mostly children)
+		'flikker', 			// Faggot
+		'flikker op', 		// Fuck off!
+		'fock', 			// Misspelling of "fuck" (anglicism)
+		'geil', 			// Horny
+		'godver', 			// Short version of "godverdomme" (goddammit)
+		'godverju', 		// Short version of "godverdomme" (goddammit)
+		'hoer', 			// Hooker; whore; harlot
+		'hoertje', 			// Hooker
+		'homofiel', 		// Homophile
+		'huppelkut', 		// Used to insult a woman's perceived shallowness; literally "skipping cunt"
+		'kak', 				// Shit
+		'kakker', 			// Person of higher class/wealth (derogatory); literally "shitter"
+		'kanker', 			// Cancer (expletive)
+		'kankeren', 		// Bitch (verb)
+		'kankerjoch', 		// Cancer kid (insult)
+		'kankerlyer', 		// Cancer sufferer (insult; old spelling)
+		'klerelijer', 		// Asshole; literally "cholera sufferer"
+		'klojo', 			// Asshole (shorter version of "klootzak")
+		'klootzak', 		// Asshole; son of a bitch; literally "ball sack"
+		'kut', 				// Fuck (interjection); vagina
+		'lijer', 			// Sufferer (insult); slang spelling of "lijder"
+		'lul', 				// Dick
+		'lulhannes', 		// Dickhead
+		'makak', 			// Moroccan (racist)
+		'makakken', 		// Moroccans (racist; plural)
+		'mof', 				// German (derogatory)
+		'mongool', 			// Person with Down syndrome (derogatory)
+		'mongolen', 		// Person with Down syndrome (derogatory; plural)
+		'neger', 			// Black male (not necessarily considered an insult)
+		'negerin', 			// Black female (not necessarily considered an insult)
+		'neuk', 			// (to) fuck
+		'neuken', 			// Fucking
+		'nikker', 			// Nigger
+		'nsb', 				// Nationaal-Socialistische Beweging (National Socialist Movement)
+		'nsber', 			// NSB member (insult synonymous with traitor)
+		'ouwehoeren', 		// To talk bullshit; literally "old whores"
+		'paardelul', 		// Horsedick
+		'pik', 				// Penis
+		'pleuris', 			// Pleuritis (expletive), slang for tuberculosis
+		'poep', 			// Poop
+		'poepen', 			// Pooping
+		'pokke', 			// Smallpox; slang spelling of "pokken"
+		'pokkelijer', 		// Asshole; slang meaning "smallpox sufferer"
+		'pokkelyer', 		// Asshole; slang meaning "smallpox sufferer", old spelling
+		'pokken', 			// Smallpox
+		'pokkenlyer', 		// Asshole; slang meaning "smallpox sufferer", old spelling
+		'roetmop', 			// Nigger; literally "soot mop"
+		'rotzak', 			// Scumbag
+		'seks', 			// Sex
+		'slet', 			// Slut
+		'sloerie', 			// Slut
+		'snol', 			// Moll; prostitute
+		'spleetoog', 		// Oriental person (derogatory); literally "slit eye"
+		'stoephoer', 		// Sidewalk whore
+		'stront', 			// Shit; poop; turd
+		'sukkel', 			// Softy, dolt, someone you feel sorry for
+		'tering', 			// Slang for tuberculosis; short for "vertering" (digestion)
+		'teringlyer', 		// Asshole; slang meaning "tuberculosis sufferer"
+		'tiet', 			// Boob; tit
+		'tieten', 			// Boobies; titties
+		'tietjes', 			// Boobies; titties
+		'trut', 			// Bitch
+		'tyfus', 			// Typhoid fever
+		'tyfuslijer', 		// Asshole; slang meaning "typhoid fever sufferer"
+		'tyfuslyer', 		// Asshole; slang meaning "typhoid fever sufferer", old spelling
+		'verdomme', 		// Damn it
+		'vetzak', 			// Fatass
+		'zakkewassr', 		// Idiot; "zakkenwasser" shortened to character limit; literally "jute sack washer"
+		'zandneger' 		// People of Middle Eastern descent (derogatory); literally "sand nigger"
+);

+ 140 - 0
plugins/banbuilder/src/dict/no.php

@@ -0,0 +1,140 @@
+<?php
+/**
+ * PHP Array for Norwegian words
+ * Delightful sweary additions from:
+ * - http://www.youswear.com/index.asp?language=Norwegian
+ * - http://www.insults.net/html/swear/norwegian.html
+ * - http://www.reddit.com/r/europe/comments/1hzv9d/tell_me_the_best_swearwords_in_your_language/cazmerv
+ */
+
+// General insults and rudeness
+array_push($badwords,
+		'dritt',
+		'drittsekk',
+		'dust',
+		'faen',
+		'fæn',
+		'fanden',
+		'helvete',
+		'helvette',
+		'hora',
+		'hore',
+		'jævel',
+		'jævla',
+		'kjerring',
+		'ludder',
+		'pedo',
+		'pedofil',
+		'pokker',
+		'porn',
+		'porno',
+		'quisling',
+		'satan',
+		'sattan',
+		'søren'
+);
+
+// Bodily parts and actions
+array_push($badwords,
+		'bæsj',
+		'dildo',
+		'ereksjon',
+		'fitta',
+		'fitte',
+		'forpult',
+		'fuck',
+		'fucking',
+		'føkk',
+		'føkking',
+		'førpult',
+		'førrpult',
+		'hæstkug',
+		'hæstkuk',
+		'hestkug',
+		'hestkuk',
+		'klitoris',
+		'klitt',
+		'knull',
+		'kug',
+		'kugost',
+		'kuk',
+		'kukk',
+		'kukkost',
+		'kukost',
+		'kåt',
+		'lort',
+		'masturbasjon',
+		'masturbere',
+		'patte',
+		'penis',
+		'pess',
+		'pikk',
+		'piss',
+		'pong',
+		'pul',
+		'pule',
+		'pult',
+		'pung',
+		'pupp',
+		'pæss',
+		'pæss',
+		'rape',
+		'rass',
+		'rasshøl',
+		'rasshøl',
+		'rompe',
+		'ronk',
+		'runk',
+		'ræv',
+		'ræva',
+		'rævhøl',
+		'rævva',
+		'sæd',
+		'shit',
+		'skit',
+		'sodom',
+		'stivas',
+		'stiven',
+		'utpult',
+		'vagina',
+		'voldta',
+		'voldtekt'
+);
+
+// Various insults based on bodily parts
+array_push($badwords,
+		'fittetryne',
+		'kukklest',
+		'kukkpeis',
+		'kukkskalle',
+		'kuklest',
+		'kukpeis',
+		'kukskalle',
+		'kuktryne',
+		'rasstryne',
+		'rautryne',
+		'rævtryne',
+		'rævvtryne'
+);
+
+// Racial slurs
+array_push($badwords,
+		'bruning',
+		'hviting',
+		'neger',
+		'nigger',
+		'pakkis',
+		'svarting'
+);
+
+// LGBT slurs
+array_push($badwords,
+		'homo',
+		'homse',
+		'lesbe',
+		'lespe',
+		'pøke',
+		'skinkerytter',
+		'soper',
+		'teppetygger'
+);

+ 0 - 1360
plugins/profanity-filter/config/profanities.php

@@ -1,1360 +0,0 @@
-<?php
-
-return array(
-    'abbo',
-    'abortionist',
-    'abuser',
-    'ahole',
-    'alabama hotpocket',
-    'alligatorbait',
-    'anal',
-    'analannie',
-    'analsex',
-    'anus',
-    'areola',
-    'arse',
-    'arsebagger',
-    'arsebandit',
-    'arseblaster',
-    'arsecowboy',
-    'arsefuck',
-    'arsefucker',
-    'arsehat',
-    'arsehole',
-    'arseholes',
-    'arsehore',
-    'arsejockey',
-    'arsekiss',
-    'arsekisser',
-    'arselick',
-    'arselicker',
-    'arselover',
-    'arseman',
-    'arsemonkey',
-    'arsemunch',
-    'arsemuncher',
-    'arsepacker',
-    'arsepirate',
-    'arsepuppies',
-    'arseranger',
-    'arses',
-    'arsewhore',
-    'arsewipe',
-    'ass',
-    'assassinate',
-    'assassination',
-    'assbag',
-    'assbagger',
-    'assbandit',
-    'assbanger',
-    'assbite',
-    'assblaster',
-    'assclown',
-    'asscock',
-    'asscowboy',
-    'asscracker',
-    'asses',
-    'assface',
-    'assfuck',
-    'assfucker',
-    'assgoblin',
-    'ass-hat',
-    'asshat',
-    'asshead',
-    'asshole',
-    'assholes',
-    'assholz',
-    'asshopper',
-    'asshore',
-    'ass-jabber',
-    'assjacker',
-    'assjockey',
-    'asskiss',
-    'asskisser',
-    'assklown',
-    'asslick',
-    'asslicker',
-    'asslover',
-    'assman',
-    'assmonkey',
-    'ass monkey',
-    'assmunch',
-    'assmuncher',
-    'assnigger',
-    'asspacker',
-    'ass-pirate',
-    'asspirate',
-    'asspuppies',
-    'assranger',
-    'assshit',
-    'assshole',
-    'asssucker',
-    'asswad',
-    'asswhore',
-    'asswipe',
-    'axwound',
-    'azzhole',
-    'backdoorman',
-    'badfuck',
-    'baldy',
-    'ball licker',
-    'balllicker',
-    'ballsack',
-    'bampot',
-    'banging',
-    'barelylegal',
-    'barface',
-    'barfface',
-    'bassterds',
-    'bastard',
-    'bastards',
-    'bastardz',
-    'basterds',
-    'basterdz',
-    'bazongas',
-    'bazooms',
-    'beaner',
-    'beastality',
-    'beastial',
-    'beastiality',
-    'beat-off',
-    'beatoff',
-    'beatyourmeat',
-    'bestial',
-    'bestiality',
-    'biatch',
-    'bicurious',
-    'bigass',
-    'bigbastard',
-    'bigbutt',
-    'bitch',
-    'bitchass',
-    'bitcher',
-    'bitches',
-    'bitchez',
-    'bitchin',
-    'bitching',
-    'bitchslap',
-    'bitchtits',
-    'bitchy',
-    'biteme',
-    'blackout',
-    'blow job',
-    'blowjob',
-    'boffing',
-    'bohunk',
-    'bollick',
-    'bollock',
-    'bollocks',
-    'bollox',
-    'bondage',
-    'boner',
-    'boob',
-    'boobies',
-    'boobs',
-    'booby',
-    'bootycall',
-    'bountybar',
-    'breastjob',
-    'breastlover',
-    'breastman',
-    'brothel',
-    'brotherfucker',
-    'bugger',
-    'buggered',
-    'buggery',
-    'bukake',
-    'bullcrap',
-    'bulldike',
-    'bulldyke',
-    'bullshit',
-    'bum',
-    'bumblefuck',
-    'bumfuck',
-    'bungabunga',
-    'bunghole',
-    'butchbabes',
-    'butchdike',
-    'butchdyke',
-    'butt-bang',
-    'buttbang',
-    'buttcheeks',
-    'buttface',
-    'butt-fuck',
-    'buttfuck',
-    'buttfucka',
-    'butt-fucker',
-    'buttfucker',
-    'butt-fuckers',
-    'buttfuckers',
-    'butthead',
-    'butthole',
-    'buttman',
-    'buttmunch',
-    'buttmuncher',
-    'butt-pirate',
-    'buttpirate',
-    'butt plug',
-    'buttplug',
-    'buttstain',
-    'buttwipe',
-    'byatch',
-    'cacker',
-    'cameljockey',
-    'camel toe',
-    'cameltoe',
-    'carpet muncher',
-    'carpetmuncher',
-    'cawk',
-    'cawks',
-    'chav',
-    'cherrypopper',
-    'chesticle',
-    'chickslick',
-    'chinc',
-    'chink',
-    'choad',
-    'chode',
-    'clamdigger',
-    'clamdiver',
-    'clit',
-    'clitface',
-    'clitfuck',
-    'clitoris',
-    'clogwog',
-    'clunge',
-    'clusterfuck',
-    'cnts',
-    'cntz',
-    'cock',
-    'cockass',
-    'cockbite',
-    'cockblock',
-    'cockblocker',
-    'cockburger',
-    'cockcowboy',
-    'cockface',
-    'cockfight',
-    'cockfucker',
-    'cock-head',
-    'cockhead',
-    'cockjockey',
-    'cockknob',
-    'cockknoker',
-    'cocklicker',
-    'cocklover',
-    'cockmaster',
-    'cockmongler',
-    'cockmongruel',
-    'cockmonkey',
-    'cockmuncher',
-    'cocknob',
-    'cocknose',
-    'cocknugget',
-    'cockqueen',
-    'cockrider',
-    'cocks',
-    'cockshit',
-    'cocksman',
-    'cocksmith',
-    'cocksmoke',
-    'cocksmoker',
-    'cocksniffer',
-    'cocksucer',
-    'cocksuck ',
-    'cocksucked ',
-    'cock-sucker',
-    'cocksucker',
-    'cocksucking',
-    'cocktease',
-    'cockwaffle',
-    'cocky',
-    'coitus',
-    'cok',
-    'commie',
-    'condom',
-    'coochie',
-    'coochy',
-    'coon',
-    'coondog',
-    'cooter',
-    'copulate',
-    'cracker',
-    'crackpipe',
-    'crack-whore',
-    'crackwhore',
-    'crap',
-    'crappy',
-    'crotchjockey',
-    'crotchmonkey',
-    'crotchrot',
-    'cum',
-    'cumbubble',
-    'cumdumpster',
-    'cumfest',
-    'cumguzzler',
-    'cumjockey',
-    'cumm',
-    'cumquat',
-    'cumqueen',
-    'cumshot',
-    'cumslut',
-    'cumtart',
-    'cunilingus',
-    'cunillingus',
-    'cunnie',
-    'cunnilingus',
-    'cunntt',
-    'cunt',
-    'cuntass',
-    'cunteyed',
-    'cuntface',
-    'cuntfuck',
-    'cuntfucker',
-    'cunthole',
-    'cuntlick ',
-    'cuntlicker ',
-    'cuntlicker',
-    'cuntlicking ',
-    'cuntrag',
-    'cunts',
-    'cuntslut',
-    'cuntsucker',
-    'cuntz',
-    'cybersex',
-    'cyberslimer',
-    'dago',
-    'dammit',
-    'damn',
-    'damnation',
-    'damnit',
-    'darkie',
-    'darky',
-    'datnigga',
-    'deapthroat',
-    'deepthroat',
-    'defecate',
-    'deggo',
-    'dego',
-    'devilworshipper',
-    'dick',
-    'dickbag',
-    'dickbeaters',
-    'dickbrain',
-    'dickface',
-    'dickforbrains',
-    'dickfuck',
-    'dickfucker',
-    'dickhead',
-    'dickhole',
-    'dickjuice',
-    'dickless',
-    'dicklick',
-    'dicklicker',
-    'dickmilk',
-    'dickmonger',
-    'dicks',
-    'dickslap',
-    'dick-sneeze',
-    'dicksucker',
-    'dicksucking',
-    'dicktickler',
-    'dickwad',
-    'dickweasel',
-    'dickweed',
-    'dickwod',
-    'dike',
-    'dildo',
-    'dildos',
-    'dilldo',
-    'dilldos',
-    'dipshit',
-    'dipstick',
-    'dixiedike',
-    'dixiedyke',
-    'doggiestyle',
-    'doggystyle',
-    'dominatricks',
-    'dominatrics',
-    'dominatrix',
-    'doochbag',
-    'dookie',
-    'douch',
-    'douchbag',
-    'douche',
-    'douchebag',
-    'douche-fag',
-    'douchewaffle',
-    'drag queen',
-    'dragqueen',
-    'dragqween',
-    'dripdick',
-    'dumass',
-    'dumb ass',
-    'dumbass',
-    'dumbbitch',
-    'dumbfuck',
-    'dumbshit',
-    'dumshit',
-    'dyke',
-    'easyslut',
-    'eatballs',
-    'eatme',
-    'eatpussy',
-    'ejaculate',
-    'ejaculated',
-    'ejaculating ',
-    'ejaculation',
-    'enema',
-    'excrement',
-    'executioner',
-    'exhibitionist',
-    'extremist',
-    'facefucker',
-    'facist',
-    'faeces',
-    'fag',
-    'fagbag',
-    'faget',
-    'fagfucker',
-    'fagging',
-    'faggit',
-    'faggot',
-    'faggotcock',
-    'faggots',
-    'fagit',
-    'fagot',
-    'fags',
-    'fagtard',
-    'fagz',
-    'faig',
-    'faigs',
-    'fannyfucker',
-    'fark',
-    'fart',
-    'farted ',
-    'farting ',
-    'farty ',
-    'fastfuck',
-    'fatass',
-    'fatfuck',
-    'fatfucker',
-    'fatso',
-    'feces',
-    'felatio ',
-    'felch',
-    'felcher',
-    'felching',
-    'fellatio',
-    'feltch',
-    'feltcher',
-    'feltching',
-    'fetish',
-    'fingerfuck ',
-    'fingerfucked ',
-    'fingerfucker ',
-    'fingerfuckers',
-    'fingerfucking ',
-    'fister',
-    'fistfuck',
-    'fistfucked ',
-    'fistfucker ',
-    'fistfucking ',
-    'fisting',
-    'flamer',
-    'flasher',
-    'flatulence',
-    'flid',
-    'flipping the bird',
-    'flyd',
-    'flydie',
-    'flydye',
-    'fondle',
-    'footaction',
-    'footfuck',
-    'footfucker',
-    'footlicker',
-    'foreskin',
-    'fornicate',
-    'foursome',
-    'freakfuck',
-    'freakyfucker',
-    'freefuck',
-    'fubar',
-    'fucck',
-    'fuck',
-    'fucka',
-    'fuckable',
-    'fuckass',
-    'fuckbag',
-    'fuckboy',
-    'fuckbrain',
-    'fuckbuddy',
-    'fuckbutt',
-    'fuckbutter',
-    'fucked',
-    'fuckedup',
-    'fucker',
-    'fuckers',
-    'fuckersucker',
-    'fuckface',
-    'fuckfest',
-    'fuckfreak',
-    'fuckfriend',
-    'fuckhead',
-    'fuckher',
-    'fuckhole',
-    'fuckin',
-    'fuckina',
-    'fucking',
-    'fuckingbitch',
-    'fuckingcunt',
-    'fuckinnuts',
-    'fuckinright',
-    'fuckit',
-    'fuckknob',
-    'fuckme ',
-    'fuckmehard',
-    'fuckmonkey',
-    'fucknut',
-    'fucknutt',
-    'fuckoff',
-    'fuckpig',
-    'fucks',
-    'fuckstick',
-    'fucktard',
-    'fucktart',
-    'fuckup',
-    'fuckwad',
-    'fuckwhore',
-    'fuckwit',
-    'fuckwitt',
-    'fuckyou',
-    'fudge packer',
-    'fudgepacker',
-    'Fudge Packer',
-    'fugly',
-    'fuk',
-    'Fukah',
-    'Fuken',
-    'fuker',
-    'Fukin',
-    'Fukk',
-    'Fukkah',
-    'Fukken',
-    'Fukker',
-    'Fukkin',
-    'fuks',
-    'funfuck',
-    'fuuck',
-    'gang bang',
-    'gangbang',
-    'gangbanged ',
-    'gangbanger',
-    'gatorbait',
-    'gay',
-    'gayass',
-    'gaybob',
-    'gayboy',
-    'gaydo',
-    'gayfuck',
-    'gayfuckist',
-    'gaygirl',
-    'gaylord',
-    'gaymuthafuckinwhore',
-    'gays',
-    'gaysex ',
-    'gaytard',
-    'gaywad',
-    'gayz',
-    'genital',
-    'genitals',
-    'getiton',
-    'givehead',
-    'glazeddonut',
-    'godammit',
-    'goddamit',
-    'goddammit',
-    'goddamn',
-    'goddamned',
-    'god-damned',
-    'goddamnes',
-    'goddamnit',
-    'goddamnmuthafucker',
-    'goldenshower',
-    'gonorrehea',
-    'gonzagas',
-    'gooch',
-    'gook',
-    'gotohell',
-    'greaseball',
-    'gringo',
-    'grostulation',
-    'guido',
-    'gypo',
-    'gypp',
-    'gyppie',
-    'gyppo',
-    'gyppy',
-    'handjob',
-    'hard on',
-    'hardon',
-    'hater',
-    'hatred',
-    'headfuck',
-    'heeb',
-    'hells',
-    'herpes',
-    'hijack',
-    'hijacker',
-    'hijacking',
-    'hillbillies',
-    'hindoo',
-    'hitler',
-    'hitlerism',
-    'hitlerist',
-    'hoar',
-    'hobo',
-    'hoe',
-    'hoes',
-    'holestuffer',
-    'homo',
-    'homobangers',
-    'homodumbshit',
-    'honger',
-    'honkers',
-    'honkey',
-    'honky',
-    'hookers',
-    'hoor',
-    'hoore',
-    'hore',
-    'horney',
-    'horniest',
-    'horny',
-    'horseshit',
-    'hosejob',
-    'hotdamn',
-    'hotpussy',
-    'hottotrot',
-    'humping',
-    'husky',
-    'hymen',
-    'iblowu',
-    'idiot',
-    'incest',
-    'insest',
-    'intercourse',
-    'internet wife',
-    'interracial',
-    'intheass',
-    'inthebuff',
-    'jackass',
-    'jackoff',
-    'jackshit',
-    'jagoff',
-    'jap',
-    'japcrap',
-    'japs',
-    'jerkass',
-    'jerk off',
-    'jerk-off',
-    'jerkoff',
-    'jesuschrist',
-    'jigaboo',
-    'jiggabo',
-    'jihad',
-    'jijjiboo',
-    'jisim',
-    'jism',
-    'jiss',
-    'jizim',
-    'jizjuice',
-    'jizm ',
-    'jizm',
-    'jizz',
-    'jizzim',
-    'jizzum',
-    'jubblies',
-    'juggalo',
-    'jungle bunny',
-    'junglebunny',
-    'kiddy fiddler',
-    'kike',
-    'kinky',
-    'kissass',
-    'knobz',
-    'kondum',
-    'kooch',
-    'kootch',
-    'krap',
-    'krappy',
-    'kraut',
-    'kumbubble',
-    'kumbullbe',
-    'kummer',
-    'kumming',
-    'kums',
-    'kunilingus',
-    'kunnilingus',
-    'kunt',
-    'kunts',
-    'kuntz',
-    'kyke',
-    'labia',
-    'lactate',
-    'lady boy',
-    'ladyboy',
-    'lameass',
-    'lapdance',
-    'lardass',
-    'lesbain',
-    'lesbayn',
-    'lesbian',
-    'lesbin',
-    'lesbo',
-    'lezbe',
-    'lezbefriends',
-    'lezbo',
-    'lezz',
-    'lezzer',
-    'lezzie',
-    'lezzo',
-    'libido',
-    'lickme',
-    'limpdick',
-    'lipshits',
-    'lipshitz',
-    'livesex',
-    'lmfao',
-    'loadedgun',
-    'lovebone',
-    'lovegoo',
-    'lovegun',
-    'lovejuice',
-    'lovemuscle',
-    'lovepistol',
-    'loverocket',
-    'low life',
-    'lowlife',
-    'lubejob',
-    'lucifer',
-    'luckycameltoe',
-    'mafia',
-    'malicious',
-    'manhater',
-    'manpaste',
-    'marijuana',
-    'masochist',
-    'masokist',
-    'massterbait ',
-    'masstrbait',
-    'masstrbate',
-    'mastabate',
-    'mastabater',
-    'masterbaiter',
-    'masterbate',
-    'master bates',
-    'masterbates',
-    'mastrabator',
-    'masturbate',
-    'masturbating',
-    'mattressprincess',
-    'mcfagget',
-    'meatbeater',
-    'meatrack',
-    'mgger',
-    'mggor',
-    'milf',
-    'minge',
-    'mofo',
-    'molest',
-    'molestation',
-    'molester',
-    'molestor',
-    'moneyshot',
-    'mooncricket',
-    'moron',
-    'mothafuck',
-    'mothafucka',
-    'mothafuckaz',
-    'mothafucked ',
-    'mothafucker',
-    'motha fucker',
-    'mothafuckin',
-    'mothafucking ',
-    'mothafuckings',
-    'motha fuker',
-    'motha fukkah',
-    'motha fukker',
-    'motherfuck',
-    'motherfucked',
-    'mother-fucker',
-    'motherfucker',
-    'mother fucker',
-    'motherfuckin',
-    'motherfucking',
-    'motherfuckings',
-    'mother fukah',
-    'mother fuker',
-    'mother fukkah',
-    'mother fukker',
-    'motherlovebone',
-    'muff',
-    'muffdive',
-    'muffdiver',
-    'muffindiver',
-    'mufflikcer',
-    'muncher',
-    'munging',
-    'murder',
-    'murderer',
-    'muthafucker',
-    'mutha fucker',
-    'mutha fukah',
-    'mutha fuker',
-    'mutha fukkah',
-    'mutha fukker',
-    'nastt',
-    'nastybitch',
-    'nastyho',
-    'nastyslut',
-    'nastywhore',
-    'nazi',
-    'necro',
-    'negro',
-    'negroes',
-    'negroid',
-    'nigaboo',
-    'nigga',
-    'niggah',
-    'niggaracci',
-    'niggard',
-    'niggarded',
-    'niggarding',
-    'niggardliness',
-    'niggardliness\'s',
-    'niggardly',
-    'niggard\'s',
-    'niggards',
-    'niggaz',
-    'nigger',
-    'niggerhead',
-    'niggerhole',
-    'nigger\'s',
-    'niggers',
-    'niggle',
-    'niggled',
-    'niggles',
-    'niggling',
-    'nigglings',
-    'niggor',
-    'niggur',
-    'niglet',
-    'nignog',
-    'nigr',
-    'nigra',
-    'nigre',
-    'nigur',
-    'niiger',
-    'niigr',
-    'nipple',
-    'nipplering',
-    'nittit',
-    'nlgger',
-    'nlggor',
-    'nofuckingway',
-    'nonce',
-    'nookey',
-    'nookie',
-    'nudger',
-    'nut case',
-    'nutcase',
-    'nutfucker',
-    'nut sack',
-    'nutsack',
-    'ontherag',
-    'orafis',
-    'orgasim ',
-    'orgasim',
-    'orgasm',
-    'orgasum',
-    'orgies',
-    'orgy',
-    'oriface',
-    'orifice',
-    'orifiss',
-    'osama bin laden',
-    'packi',
-    'packie',
-    'packy',
-    'paedo',
-    'paedofile',
-    'paedophile',
-    'paki',
-    'pakie',
-    'paky',
-    'palesimian',
-    'panooch',
-    'panti',
-    'pearlnecklace',
-    'pecker',
-    'peckerhead',
-    'peckerwood',
-    'peedo',
-    'peeenus',
-    'peeenusss',
-    'peehole',
-    'peenus',
-    'peinus',
-    'penas',
-    'penile',
-    'penis',
-    'penisbanger',
-    'penis-breath',
-    'penises',
-    'penisfucker',
-    'penispuffer',
-    'penus',
-    'penuus',
-    'perv',
-    'perversion',
-    'pervert',
-    'phonesex',
-    'phuc',
-    'phuck',
-    'phuk',
-    'phuked',
-    'phuker',
-    'phuking',
-    'phukked',
-    'phukker',
-    'phukking',
-    'phungky',
-    'phuq',
-    'pi55',
-    'picaninny',
-    'piccaninny',
-    'pickaninny',
-    'pikey',
-    'piky',
-    'pimper',
-    'pimpjuic',
-    'pimpjuice',
-    'pimpsimp',
-    'pindick',
-    'piss',
-    'pissed',
-    'pissed off',
-    'pisser',
-    'pisses ',
-    'pissflaps',
-    'pisshead',
-    'pissin ',
-    'pissing',
-    'pissoff ',
-    'play boy',
-    'playboy',
-    'play bunny',
-    'playbunny',
-    'play girl',
-    'playgirl',
-    'plumper',
-    'pocketpool',
-    'polac',
-    'polack',
-    'polak',
-    'polesmoker',
-    'pollock',
-    'poon',
-    'poonani',
-    'poonany',
-    'poontang',
-    'pooperscooper',
-    'pooping',
-    'poorwhitetrash',
-    'poostabber',
-    'popimp',
-    'porch monkey',
-    'porchmonkey',
-    'porn',
-    'pornflick',
-    'pornking',
-    'porno',
-    'pornography',
-    'pornprincess',
-    'premature',
-    'pric',
-    'prick',
-    'prik',
-    'prickhead',
-    'pros',
-    'prostitute',
-    'protestant',
-    'pu55i',
-    'pu55y',
-    'pube',
-    'pubiclice',
-    'puke',
-    'punanny',
-    'punta',
-    'puntang',
-    'purinaprincess',
-    'pusse',
-    'pussee',
-    'pussie',
-    'pussies',
-    'pussy',
-    'pussyeater',
-    'pussyfucker',
-    'pussylicker',
-    'pussylicking',
-    'pussylips',
-    'pussylover',
-    'pussypounder',
-    'pusy',
-    'puto',
-    'puuke',
-    'puuker',
-    'queef',
-    'queer',
-    'queerbait',
-    'queerhole',
-    'queers',
-    'queerz',
-    'quim',
-    'qweers',
-    'qweerz',
-    'qweir',
-    'racist',
-    'rag head',
-    'raghead',
-    'raped',
-    'rapist',
-    'rearend',
-    'rearentry',
-    'recktum',
-    'rectum',
-    'redneck',
-    'renob',
-    'rentafuck',
-    'retard',
-    'retarded',
-    'rimjob',
-    'rimming',
-    'robber',
-    'ruski',
-    'russki',
-    'russkie',
-    'sadist',
-    'sadom',
-    'saeema butt',
-    'sandm',
-    'sand nigger',
-    'sandnigger',
-    'satan',
-    'scag',
-    'scank',
-    'scat',
-    'schlong',
-    'screwing',
-    'screwyou',
-    'scrote',
-    'scrotum',
-    'scum',
-    'scumbag',
-    'seaman staines',
-    'semen',
-    'sexed',
-    'sexfarm',
-    'sexhound',
-    'sexhouse',
-    'sexing',
-    'sexkitten',
-    'sexpot',
-    'sexslave',
-    'sextogo',
-    'sextoy',
-    'sextoys',
-    'sexwhore',
-    'sexymoma',
-    'sexy-slim',
-    'seymour butts',
-    'shag',
-    'shagger',
-    'shaggin',
-    'shagging',
-    'shat',
-    'shhit',
-    'shit',
-    'shitass',
-    'shitbag',
-    'shitbagger',
-    'shitbrains',
-    'shitbreath',
-    'shitcan',
-    'shitcanned',
-    'shitcunt',
-    'shitdick',
-    'shite',
-    'shiteater',
-    'shited',
-    'shiter',
-    'shitface',
-    'shitfaced',
-    'shitfit',
-    'shitforbrains',
-    'shitfuck',
-    'shitfucker',
-    'shitfull',
-    'shithapens',
-    'shithappens',
-    'shithead',
-    'shithole',
-    'shithouse',
-    'shiting',
-    'shitlist',
-    'shitola',
-    'shitoutofluck',
-    'shits',
-    'shitspitter',
-    'shitstain',
-    'shitted',
-    'shitter',
-    'shittiest',
-    'shitting',
-    'shitty',
-    'shity',
-    'shitz',
-    'shiz',
-    'shiznit',
-    'shortfuck',
-    'shyt',
-    'shyte',
-    'shytty',
-    'shyty',
-    'sissy',
-    'sixsixsix',
-    'sixtynine',
-    'sixtyniner',
-    'skanck',
-    'skank',
-    'skankbitch',
-    'skankee',
-    'skankey',
-    'skankfuck',
-    'skanks',
-    'skankwhore',
-    'skanky',
-    'skankybitch',
-    'skankywhore',
-    'skeet',
-    'skinflute',
-    'skullfuck',
-    'skum',
-    'skumbag',
-    'slanteye',
-    'slantyeye',
-    'slapper',
-    'slavedriver',
-    'sleezebag',
-    'sleezeball',
-    'slideitin',
-    'slimeball',
-    'slimebucket',
-    'slopehead',
-    'slopey',
-    'slopy',
-    'slut',
-    'slutbag',
-    'sluts',
-    'slutt',
-    'slutting',
-    'slutty',
-    'slutwear',
-    'slutwhore',
-    'slutz',
-    'smackthemonkey',
-    'smeg',
-    'smelly',
-    'smut',
-    'snatch',
-    'snatchpatch',
-    'snot',
-    'snowback',
-    'snownigger',
-    'sodom',
-    'sodomise',
-    'sodomite',
-    'sodomize',
-    'sodomy',
-    'son-of-a-bitch',
-    'sonofabitch',
-    'sonofbitch',
-    'spac',
-    'spacca',
-    'spaghettibender',
-    'spaghettinigger',
-    'spank',
-    'spankthemonkey',
-    'spastic',
-    'spazza',
-    'sperm',
-    'spermacide',
-    'spermbag',
-    'spermhearder',
-    'spermherder',
-    'spic',
-    'spick',
-    'spig',
-    'spigotty',
-    'spik',
-    'spitter',
-    'splittail',
-    'splooge',
-    'spooge',
-    'spook',
-    'spreadeagle',
-    'spunk',
-    'squaw',
-    'stabber',
-    'stiffy',
-    'strapon',
-    'stripclub',
-    'stripper',
-    'stroking',
-    'stupid',
-    'stupidfuck',
-    'stupidfucker',
-    'suckass',
-    'suckdick',
-    'sucker',
-    'suckme',
-    'suckmyass',
-    'suckmydick',
-    'suckmytit',
-    'suckoff',
-    'swallower',
-    'swastika',
-    'syphilis',
-    'tampon',
-    'tantra',
-    'tarbaby',
-    'tard',
-    'teat',
-    'terror',
-    'terrorist',
-    'teste',
-    'testicle',
-    'testicles',
-    'thai bride',
-    'thick as',
-    'thicklips',
-    'thicko',
-    'thirdeye',
-    'thirdleg',
-    'threesome',
-    'thundercunt',
-    'timbernigger',
-    'tit',
-    'titbitnipply',
-    'titfuck',
-    'titfucker',
-    'titfuckin',
-    'titjob',
-    'titlicker',
-    'titlover',
-    'tits',
-    'tittie',
-    'titties',
-    'titty',
-    'tittyfuck',
-    'tonguethrust',
-    'tonguethruster',
-    'tonguetramp',
-    'torture',
-    'tosser',
-    'tosspot',
-    'towel head',
-    'towelhead',
-    'trailertrash',
-    'tramp',
-    'trannie',
-    'tranny',
-    'transvestite',
-    'trisexual',
-    'trots',
-    'trouser snake',
-    'tuckahoe',
-    'tunneloflove',
-    'turd',
-    'turnon',
-    'twat',
-    'twatlips',
-    'twats',
-    'twatwaffle',
-    'twink',
-    'twinkie',
-    'twobitwhore',
-    'unclefucker',
-    'unfuckable',
-    'upskirt',
-    'uptheass',
-    'upthebutt',
-    'urinate',
-    'urine',
-    'usama bin laden',
-    'uterus',
-    'vag',
-    'vagiina',
-    'vagina',
-    'vaginal',
-    'vajayjay',
-    'vajina',
-    'va-j-j',
-    'valjina',
-    'vibrater',
-    'vibrator',
-    'vietcong',
-    'violate',
-    'violation',
-    'virginbreaker',
-    'vjayjay',
-    'vomit',
-    'vullva',
-    'vulva',
-    'wank',
-    'wanker',
-    'wanking',
-    'wankjob',
-    'waysted',
-    'welcher',
-    'wetback',
-    'wetspot',
-    'whacker',
-    'whigger',
-    'whiskeydick',
-    'whiskydick',
-    'whitenigger',
-    'whitetrash',
-    'whitey',
-    'whoor',
-    'whop',
-    'whore',
-    'whorebag',
-    'whoreface',
-    'whorefucker',
-    'whorehouse',
-    'wife beater',
-    'williewanker',
-    'wog',
-    'wop',
-    'wuss',
-    'wuzzie',
-    'x-rated',
-    'xrated',
-    'yellowman',
-    'zigabo',
-    'zipperhea',
-    'zipper head'
-);

+ 0 - 310
plugins/profanity-filter/src/mofodojodino/ProfanityFilter/Check.php

@@ -1,310 +0,0 @@
-<?php
-
-namespace mofodojodino\ProfanityFilter;
-
-class Check
-{
-    const SEPARATOR_PLACEHOLDER = '{!!}';
-
-    /**
-     * Escaped separator characters
-     */
-    protected $escapedSeparatorCharacters = array(
-        '\s',
-    );
-
-    /**
-     * Unescaped separator characters.
-     * @var array
-     */
-    protected $separatorCharacters = array(
-        '@',
-        '#',
-        '%',
-        '&',
-        '_',
-        ';',
-        "'",
-        '"',
-        ',',
-        '~',
-        '`',
-        '|',
-        '!',
-        '$',
-        '^',
-        '*',
-        '(',
-        ')',
-        '-',
-        '+',
-        '=',
-        '{',
-        '}',
-        '[',
-        ']',
-        ':',
-        '<',
-        '>',
-        '?',
-        '.',
-        '/',
-    );
-
-
-    /**
-     * List of potential character substitutions as a regular expression.
-     *
-     * @var array
-     */
-    protected $characterSubstitutions = array(
-        '/a/' => array(
-            'a',
-            '4',
-            '@',
-            'Á',
-            'á',
-            'À',
-            'Â',
-            'à',
-            'Â',
-            'â',
-            'Ä',
-            'ä',
-            'Ã',
-            'ã',
-            'Å',
-            'å',
-            'æ',
-            'Æ',
-            'α',
-            'Δ',
-            'Λ',
-            'λ',
-        ),
-        '/b/' => array('b', '8', '\\', '3', 'ß', 'Β', 'β'),
-        '/c/' => array('c', 'Ç', 'ç', 'ć', 'Ć', 'č', 'Č', '¢', '€', '<', '(', '{', '©'),
-        '/d/' => array('d', '\\', ')', 'Þ', 'þ', 'Ð', 'ð'),
-        '/e/' => array('e', '3', '€', 'È', 'è', 'É', 'é', 'Ê', 'ê', 'ë', 'Ë', 'ē', 'Ē', 'ė', 'Ė', 'ę', 'Ę', '∑'),
-        '/f/' => array('f', 'ƒ'),
-        '/g/' => array('g', '6', '9'),
-        '/h/' => array('h', 'Η'),
-        '/i/' => array('i', '!', '|', ']', '[', '1', '∫', 'Ì', 'Í', 'Î', 'Ï', 'ì', 'í', 'î', 'ï', 'ī', 'Ī', 'į', 'Į'),
-        '/j/' => array('j'),
-        '/k/' => array('k', 'Κ', 'κ'),
-        '/l/' => array('l', '!', '|', ']', '[', '£', '∫', 'Ì', 'Í', 'Î', 'Ï', 'ł', 'Ł'),
-        '/m/' => array('m'),
-        '/n/' => array('n', 'η', 'Ν', 'Π', 'ñ', 'Ñ', 'ń', 'Ń'),
-        '/o/' => array(
-            'o',
-            '0',
-            'Ο',
-            'ο',
-            'Φ',
-            '¤',
-            '°',
-            'ø',
-            'ô',
-            'Ô',
-            'ö',
-            'Ö',
-            'ò',
-            'Ò',
-            'ó',
-            'Ó',
-            'œ',
-            'Œ',
-            'ø',
-            'Ø',
-            'ō',
-            'Ō',
-            'õ',
-            'Õ',
-        ),
-        '/p/' => array('p', 'ρ', 'Ρ', '¶', 'þ'),
-        '/q/' => array('q'),
-        '/r/' => array('r', '®'),
-        '/s/' => array('s', '5', '$', '§', 'ß', 'Ś', 'ś', 'Š', 'š'),
-        '/t/' => array('t', 'Τ', 'τ'),
-        '/u/' => array('u', 'υ', 'µ', 'û', 'ü', 'ù', 'ú', 'ū', 'Û', 'Ü', 'Ù', 'Ú', 'Ū'),
-        '/v/' => array('v', 'υ', 'ν'),
-        '/w/' => array('w', 'ω', 'ψ', 'Ψ'),
-        '/x/' => array('x', 'Χ', 'χ'),
-        '/y/' => array('y', '¥', 'γ', 'ÿ', 'ý', 'Ÿ', 'Ý'),
-        '/z/' => array('z', 'Ζ', 'ž', 'Ž', 'ź', 'Ź', 'ż', 'Ż'),
-    );
-
-    /**
-     * List of profanities to test against.
-     *
-     * @var array
-     */
-    protected $profanities = array();
-    protected $separatorExpression;
-    protected $characterExpressions;
-
-    /**
-     * @param null $config
-     */
-    public function __construct($config = null)
-    {
-        if ($config === null) {
-            $config = __DIR__ . '/../../../config/profanities.php';
-        }
-
-        if (is_array($config)) {
-            $this->profanities = $config;
-        } else {
-            $this->profanities = $this->loadProfanitiesFromFile($config);
-        }
-
-        $this->separatorExpression  = $this->generateSeparatorExpression();
-        $this->characterExpressions = $this->generateCharacterExpressions();
-    }
-
-    /**
-     * Checks string for profanities based on list 'profanities'
-     *
-     * @param $string
-     *
-     * @return bool
-     */
-    public function hasProfanity($string)
-    {
-        if (empty($string)) {
-            return false;
-        }
-
-        $profanities    = array();
-        $profanityCount = count($this->profanities);
-
-        for ($i = 0; $i < $profanityCount; $i++) {
-            $profanities[ $i ] = $this->generateProfanityExpression(
-                $this->profanities[ $i ],
-                $this->characterExpressions,
-                $this->separatorExpression
-            );
-        }
-
-        foreach ($profanities as $profanity) {
-            if ($this->stringHasProfanity($string, $profanity)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Obfuscates string that contains a 'profanity'.
-     *
-     * @param $string
-     *
-     * @return string
-     */
-    public function obfuscateIfProfane($string)
-    {
-        if ($this->hasProfanity($string)) {
-            $string = str_repeat("*", strlen($string));
-        }
-
-        return $string;
-    }
-
-    /**
-     * Generate a regular expression for a particular word
-     *
-     * @param $word
-     * @param $characterExpressions
-     * @param $separatorExpression
-     *
-     * @return mixed
-     */
-    protected function generateProfanityExpression($word, $characterExpressions, $separatorExpression)
-    {
-        $expression = '/' . preg_replace(
-                array_keys($characterExpressions),
-                array_values($characterExpressions),
-                $word
-            ) . '/i';
-
-        return str_replace(self::SEPARATOR_PLACEHOLDER, $separatorExpression, $expression);
-    }
-
-    /**
-     * Checks a string against a profanity.
-     *
-     * @param $string
-     * @param $profanity
-     *
-     * @return bool
-     */
-    private function stringHasProfanity($string, $profanity)
-    {
-        return preg_match($profanity, $string) === 1;
-    }
-
-    /**
-     * Generates the separator regex to test characters in between letters.
-     *
-     * @param array  $characters
-     * @param array  $escapedCharacters
-     * @param string $quantifier
-     *
-     * @return string
-     */
-    private function generateEscapedExpression(
-        array $characters = array(),
-        array $escapedCharacters = array(),
-        $quantifier = '*?'
-    ) {
-        $regex = $escapedCharacters;
-        foreach ($characters as $character) {
-            $regex[] = preg_quote($character, '/');
-        }
-
-        return '[' . implode('', $regex) . ']' . $quantifier;
-    }
-
-    /**
-     * Generates the separator regular expression.
-     *
-     * @return string
-     */
-    private function generateSeparatorExpression()
-    {
-        return $this->generateEscapedExpression($this->separatorCharacters, $this->escapedSeparatorCharacters);
-    }
-
-    /**
-     * Generates a list of regular expressions for each character substitution.
-     *
-     * @return array
-     */
-    protected function generateCharacterExpressions()
-    {
-        $characterExpressions = array();
-        foreach ($this->characterSubstitutions as $character => $substitutions) {
-            $characterExpressions[ $character ] = $this->generateEscapedExpression(
-                    $substitutions,
-                    array(),
-                    '+?'
-                ) . self::SEPARATOR_PLACEHOLDER;
-        }
-
-        return $characterExpressions;
-    }
-
-    /**
-     * Load 'profanities' from config file.
-     *
-     * @param $config
-     *
-     * @return array
-     */
-    private function loadProfanitiesFromFile($config)
-    {
-        /** @noinspection PhpIncludeInspection */
-        return include($config);
-    }
-}