122 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
/*
 | 
						|
Plugin Name: QuickSpamFilter
 | 
						|
Plugin URI: http://flatpress.nowherland.it/
 | 
						|
Description: Quick ban words (edit the plugin to add more to the list) 
 | 
						|
Author: NoWhereMan
 | 
						|
Version: 3.5.1
 | 
						|
Author URI: http://www.nowhereland.it
 | 
						|
*/
 | 
						|
 | 
						|
/**
 | 
						|
 * This plugin denies comments when they're containing "bad words",
 | 
						|
 * e.g. "href" (which indexes links)., etc.
 | 
						|
 *
 | 
						|
 * @global $smarty
 | 
						|
 * @param boolean $bool
 | 
						|
 * @param string $contents The comment
 | 
						|
 * @return unknown
 | 
						|
 */
 | 
						|
function plugin_qspam_validate($bool, $contents) {
 | 
						|
	if (!$bool) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
	$qscfg = plugin_getoptions('qspam');
 | 
						|
	// We're looking for these words:
 | 
						|
	$BAN_WORDS = '';
 | 
						|
	if (isset($qscfg['wordlist'])) {
 | 
						|
		$BAN_WORDS = $qscfg['wordlist'];
 | 
						|
	} else {
 | 
						|
		// rudimentary ban of links
 | 
						|
		$BAN_WORDS = array('href', '[url');
 | 
						|
	}
 | 
						|
	$qscfg['number'] = isset($qscfg['number'])
 | 
						|
		? $qscfg['number']
 | 
						|
		: 1;
 | 
						|
	$txt = strtolower(trim($contents['content']));
 | 
						|
	$count = 0;
 | 
						|
	while ($w = array_pop($BAN_WORDS)) {
 | 
						|
		$count += substr_count($txt, strtolower($w));
 | 
						|
	}
 | 
						|
	if ($count >= $qscfg['number']) {
 | 
						|
		global $smarty;
 | 
						|
		$lang = lang_load('plugin:qspam');
 | 
						|
		$smarty->assign('error', array($lang['plugin']['qspam']['error']));
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
	return true;
 | 
						|
}
 | 
						|
add_action('comment_validate', 'plugin_qspam_validate', 5, 2);
 | 
						|
 | 
						|
if (class_exists('AdminPanelAction')){
 | 
						|
	/**
 | 
						|
	 * Provides an admin panel entry for QuickSpam setup.
 | 
						|
	 */
 | 
						|
	class admin_plugin_qspam extends AdminPanelAction {
 | 
						|
		var $langres = 'plugin:qspam';
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * Initializes this panel.
 | 
						|
		 */
 | 
						|
		function setup() {
 | 
						|
			$this->smarty->assign('admin_resource', "plugin:qspam/admin.plugin.qspam");
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * Setups the default panel.
 | 
						|
		 */
 | 
						|
		function main() {
 | 
						|
			$qscfg = plugin_getoptions('qspam');
 | 
						|
			$qscfg['wordlist'] = isset($qscfg['wordlist']) && is_array($qscfg['wordlist'])
 | 
						|
				? implode("\n", $qscfg['wordlist'])
 | 
						|
				: '';
 | 
						|
			$qscfg['number'] = isset($qscfg['number'])
 | 
						|
				? $qscfg['number']
 | 
						|
				: 1;
 | 
						|
			$this->smarty->assign('qscfg', $qscfg);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * Will be executed when the QSF configuration is send.
 | 
						|
		 *
 | 
						|
		 * @return int
 | 
						|
		 */
 | 
						|
		function onsubmit($data = null) {
 | 
						|
			if ($_POST['qs-wordlist']){
 | 
						|
				$wordlist = isset($_POST['qs-wordlist'])
 | 
						|
					? stripslashes($_POST['qs-wordlist'])
 | 
						|
					: '';
 | 
						|
				$wordlist = str_replace("\r", "\n", $wordlist);
 | 
						|
				// DMKE: Works neither recursive correct nor in a loop... *grrr*
 | 
						|
				#$wordlist = str_replace("\n\n", "\n", $wordlist);
 | 
						|
				$wordlist = explode("\n", $wordlist);
 | 
						|
				$wordlist = array_filter($wordlist, array($this, '_array_filter'));
 | 
						|
				$number = isset($_POST['qs-number']) && is_numeric($_POST['qs-number'])
 | 
						|
					? (int)$_POST['qs-number']
 | 
						|
					: 1;
 | 
						|
				plugin_addoption('qspam', 'wordlist', $wordlist);
 | 
						|
				plugin_addoption('qspam', 'number', $number);
 | 
						|
				plugin_saveoptions('qspam');
 | 
						|
				$this->smarty->assign('success', 1);
 | 
						|
			} else {
 | 
						|
			 	$this->smarty->assign('success', -1);
 | 
						|
			}
 | 
						|
			return 2;
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * Array filter callback function. Culls empty array values.
 | 
						|
		 * Life is hell ._.
 | 
						|
		 *
 | 
						|
		 * @param string $str
 | 
						|
		 * @return boolean
 | 
						|
		 */
 | 
						|
		function _array_filter($str) {
 | 
						|
			return strlen(trim($str)) > 0;
 | 
						|
		}
 | 
						|
	}
 | 
						|
	admin_addpanelaction('plugin', 'qspam', true);
 | 
						|
}
 | 
						|
 | 
						|
?>
 |