diff options
Diffstat (limited to 'inc/parser/spamcheck.php')
-rw-r--r-- | inc/parser/spamcheck.php | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/inc/parser/spamcheck.php b/inc/parser/spamcheck.php new file mode 100644 index 000000000..1c2958e6f --- /dev/null +++ b/inc/parser/spamcheck.php @@ -0,0 +1,72 @@ +<?php +if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); + +require_once DOKU_INC . 'inc/parser/renderer.php'; + +class Doku_Renderer_SpamCheck extends Doku_Renderer { + + // This should be populated by the code executing the instructions + var $currentCall; + + // An array of instructions that contain spam + var $spamFound = array(); + + // pcre pattern for finding spam + var $spamPattern = '#^$#'; + + function internallink($link, $title = NULL) { + $this->__checkTitle($title); + } + + function externallink($link, $title = NULL) { + $this->__checkLinkForSpam($link); + $this->__checkTitle($title); + } + + function interwikilink($link, $title = NULL) { + $this->__checkTitle($title); + } + + function filelink($link, $title = NULL) { + $this->__checkLinkForSpam($link); + $this->__checkTitle($title); + } + + function windowssharelink($link, $title = NULL) { + $this->__checkLinkForSpam($link); + $this->__checkTitle($title); + } + + function email($address, $title = NULL) { + $this->__checkLinkForSpam($address); + $this->__checkTitle($title); + } + + function internalmedialink ($src) { + $this->__checkLinkForSpam($src); + } + + function externalmedialink($src) { + $this->__checkLinkForSpam($src); + } + + function __checkTitle($title) { + if ( is_array($title) && isset($title['src'])) { + $this->__checkLinkForSpam($title['src']); + } + } + + // Pattern matching happens here + /** + * @TODO What about links like www.google.com - no http:// + */ + function __checkLinkForSpam($link) { + if( preg_match($this->spamPattern,$link) ) { + $spam = $this->currentCall; + $spam[3] = $link; + $this->spamFound[] = $spam; + } + } +} + +?> |