summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2008-12-31 06:19:35 +0000
committerTim Almdal <tnalmdal@shaw.ca>2008-12-31 06:19:35 +0000
commit517ddf53883214f225ad76997fd033faae276a42 (patch)
tree65afda6518c32acab570994d28fbb736a5694ca7
parent9ad253a2bbd76048934c304c54239b94f45b3809 (diff)
First look at the spam filter module. At this point, it does not connect to any spam services. But you can go into the admin screen and choose the driver and set the api key.
-rw-r--r--modules/comment/helpers/comment.php8
-rw-r--r--modules/spam_filter/controllers/admin_spam_filter.php71
-rw-r--r--modules/spam_filter/helpers/spam_filter.php32
-rw-r--r--modules/spam_filter/helpers/spam_filter_block.php26
-rw-r--r--modules/spam_filter/helpers/spam_filter_installer.php33
-rw-r--r--modules/spam_filter/helpers/spam_filter_menu.php28
-rw-r--r--modules/spam_filter/js/spam_filter.js18
-rw-r--r--modules/spam_filter/libraries/Spam_Filter.php80
-rw-r--r--modules/spam_filter/libraries/drivers/Akismet.php102
-rw-r--r--modules/spam_filter/libraries/drivers/Mollon.php61
-rw-r--r--modules/spam_filter/libraries/drivers/SpamFilter.php48
-rw-r--r--modules/spam_filter/module.info3
-rw-r--r--modules/spam_filter/tests/Spam_Filter_Helper_Test.php32
13 files changed, 538 insertions, 4 deletions
diff --git a/modules/comment/helpers/comment.php b/modules/comment/helpers/comment.php
index e92c59a0..9617b706 100644
--- a/modules/comment/helpers/comment.php
+++ b/modules/comment/helpers/comment.php
@@ -51,8 +51,8 @@ class comment_Core {
$comment->created = time();
// @todo Figure out how to mock up the test of the spam_filter
- if (module::is_installed("spam_filter") && !TEST_MODE) {
- spam_filter::verify_comment($comment);
+ if (module::is_installed("spam_filter") && TEST_MODE == 0) {
+ Spam_Filter::instance()->check_comment($comment);
} else {
$comment->published = true;
}
@@ -81,8 +81,8 @@ class comment_Core {
$comment->user_agent = Kohana::$user_agent;
// @todo Figure out how to mock up the test of the spam_filter
- if (module::is_installed("spam_filter") && !TEST_MODE) {
- spam_filter::verify_comment($comment);
+ if (module::is_installed("spam_filter") && TEST_MODE == 0) {
+ Spam_Filter::instance()->check_comment($comment);
}
$comment->save();
diff --git a/modules/spam_filter/controllers/admin_spam_filter.php b/modules/spam_filter/controllers/admin_spam_filter.php
new file mode 100644
index 00000000..cf06d012
--- /dev/null
+++ b/modules/spam_filter/controllers/admin_spam_filter.php
@@ -0,0 +1,71 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class Admin_Spam_Filter_Controller extends Admin_Controller {
+ public function index() {
+ $view = new Admin_View("admin.html");
+ $view->content = $this->get_edit_form();
+
+ print $view;
+ }
+
+ public function get_edit_form() {
+ $form = new Forge("admin/spam_filter/edit", "", "post");
+ $group = $form->group("edit_spam_filter")->label(_("Configure Spam Filter"));
+ $drivers = spam_filter::get_driver_names();
+ $current_driver = module::get_var("spam_filter", "driver");
+
+ $selected = -1;
+ foreach ($drivers as $idx => $driver) {
+ if ($driver == $current_driver) {
+ $selected = $idx;
+ }
+ }
+ $group->dropdown("drivers")->label(_("Available Drivers"))
+ ->options(spam_filter::get_driver_names())
+ ->rules("required")
+ ->selected($selected);
+ $group->input("api_key")->label(_("Api Key"))
+ ->rules("required")
+ ->value(module::get_var("spam_filter", "api_key"));
+ $group->submit(_("Configure"));
+
+ return $form;
+ }
+
+ public function edit() {
+ $form = $this->get_edit_form();
+ if ($form->validate()) {
+ $driver_index = $form->edit_spam_filter->drivers->value;
+ $drivers = spam_filter::get_driver_names();
+ module::set_var("spam_filter", "driver", $drivers[$driver_index]);
+ // @todo do verify key
+ module::set_var("spam_filter", "api_key", $form->edit_spam_filter->api_key->value);
+ log::success("spam_filter", _("Spam Filter configured"));
+ message::success(_("Spam Filter configured"));
+ print json_encode(
+ array("result" => "success",
+ "location" => url::site("admin/spam_filter")));
+ } else {
+ print json_encode(
+ array("result" => "error",
+ "form" => $form->__toString()));
+ }
+ }
+} \ No newline at end of file
diff --git a/modules/spam_filter/helpers/spam_filter.php b/modules/spam_filter/helpers/spam_filter.php
new file mode 100644
index 00000000..bc6f277d
--- /dev/null
+++ b/modules/spam_filter/helpers/spam_filter.php
@@ -0,0 +1,32 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class spam_filter {
+ public static function get_driver_names() {
+ foreach (glob(MODPATH . "spam_filter/libraries/drivers/*.php") as $file) {
+ if (preg_match("#spam_filter/libraries/drivers/(.*).php$#", $file, $matches)) {
+ if ($matches[1] != "Spam_Filter") {
+ $drivers[] = $matches[1];
+ }
+ }
+ }
+
+ return $drivers;
+ }
+} \ No newline at end of file
diff --git a/modules/spam_filter/helpers/spam_filter_block.php b/modules/spam_filter/helpers/spam_filter_block.php
new file mode 100644
index 00000000..30466777
--- /dev/null
+++ b/modules/spam_filter/helpers/spam_filter_block.php
@@ -0,0 +1,26 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+class spam_filter_block_Core {
+ public static function admin_head($theme) {
+ $url = url::file("modules/spam_filter/js/spam_filter.js");
+ return "<script src=\"$url\" type=\"text/javascript\"></script>\n";
+ }
+} \ No newline at end of file
diff --git a/modules/spam_filter/helpers/spam_filter_installer.php b/modules/spam_filter/helpers/spam_filter_installer.php
new file mode 100644
index 00000000..4d0edde9
--- /dev/null
+++ b/modules/spam_filter/helpers/spam_filter_installer.php
@@ -0,0 +1,33 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class spam_filter_installer {
+
+ public static function install() {
+ $version = module::get_version("spam_filter");
+
+ if ($version == 0) {
+ module::set_version("spam_filter", 1);
+ }
+ }
+
+ public static function uninstall() {
+ module::delete("spam_filter");
+ }
+}
diff --git a/modules/spam_filter/helpers/spam_filter_menu.php b/modules/spam_filter/helpers/spam_filter_menu.php
new file mode 100644
index 00000000..06ff14d6
--- /dev/null
+++ b/modules/spam_filter/helpers/spam_filter_menu.php
@@ -0,0 +1,28 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class spam_filter_menu_Core {
+ public static function admin($menu, $theme) {
+ $menu->get("content_menu")
+ ->append(Menu::factory("link")
+ ->id("spam_filter")
+ ->label(_("Configure Spam Filter"))
+ ->url(url::site("admin/spam_filter")));
+ }
+}
diff --git a/modules/spam_filter/js/spam_filter.js b/modules/spam_filter/js/spam_filter.js
new file mode 100644
index 00000000..175732ab
--- /dev/null
+++ b/modules/spam_filter/js/spam_filter.js
@@ -0,0 +1,18 @@
+$("document").ready(function() {
+ ajaxify_spam_filter_form();
+});
+
+function ajaxify_spam_filter_form() {
+ $("#gContent form").ajaxForm({
+ dataType: "json",
+ success: function(data) {
+ if (data.form) {
+ $("#gContent form").replaceWith(data.form);
+ ajaxify_spam_filter_form();
+ }
+ if (data.result == "success") {
+ window.location.reload();
+ }
+ }
+ });
+};
diff --git a/modules/spam_filter/libraries/Spam_Filter.php b/modules/spam_filter/libraries/Spam_Filter.php
new file mode 100644
index 00000000..47f45eb9
--- /dev/null
+++ b/modules/spam_filter/libraries/Spam_Filter.php
@@ -0,0 +1,80 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class Spam_Filter_Core {
+
+ private static $spam_filter;
+
+ protected $driver;
+
+ public static function instance() {
+ if (empty(self::$spam_filter)) {
+ self::$spam_filter = new Spam_Filter();
+ }
+ return self::$spam_filter;
+ }
+
+ protected function __construct() {
+ $driver = module::get_var("spam_filter", "driver", null);
+ $api_key = module::get_var("spam_filter", "api_key", null);
+
+ if (empty($api_key)) {
+ throw new Exception("@todo SPAM FILTER NOT INITIALIZED");
+ }
+
+ // Set driver name
+ $driver = "{$driver}_Driver";
+
+ // Load the driver
+ if (!Kohana::auto_load($driver)) {
+ throw new Exception("@todo SPAM FILTER DRIVER NO FOUND");
+ }
+
+ // Initialize the driver
+ $this->driver = new $driver();
+
+ // Validate the driver
+ if (!($this->driver instanceof SpamFilter_Driver)) {
+ throw new Exception("@todo SPAM FILTER DRIVER NOT IMPLEMENTED");
+ }
+ }
+
+ public function verify_key($api_key) {
+ return $this->driver->verify_key($api_key);
+ }
+
+ public function check_comment($comment) {
+ $is_valid = $this->driver->check_comment($comment);
+ $comment->published = $is_valid;
+ return $is_valid;
+ }
+
+ public function submit_spam($comment) {
+ return $this->driver->submit_spam($comment);
+ }
+
+ public function submit_ham($comment) {
+ return $this->driver->submit_ham($comment);
+ }
+
+ public function get_statistics() {
+ return $this->driver->get_statistics();
+ }
+}
+
diff --git a/modules/spam_filter/libraries/drivers/Akismet.php b/modules/spam_filter/libraries/drivers/Akismet.php
new file mode 100644
index 00000000..73e1e4e4
--- /dev/null
+++ b/modules/spam_filter/libraries/drivers/Akismet.php
@@ -0,0 +1,102 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class Akismet_Driver extends SpamFilter_Driver {
+ // Lets not send everything to Akismet
+ private $ignore = array("HTTP_COOKIE",
+ "HTTP_USER_AGENT",
+ "HTTP_X_FORWARDED_FOR",
+ "HTTP_X_FORWARDED_HOST",
+ "HTTP_MAX_FORWARDS",
+ "HTTP_X_FORWARDED_SERVER",
+ "REDIRECT_STATUS",
+ "SERVER_PORT",
+ "PATH",
+ "DOCUMENT_ROOT",
+ "REMOTE_ADDR",
+ "SERVER_ADMIN",
+ "QUERY_STRING",
+ "PHP_SELF" );
+
+ public function verify_key($api_key) {
+// $url = url::base();
+// $response = $this->_http_post("rest.akismet.com", "key={$api_key}&blog=$url");
+// if ("valid" != $response[1]) {
+// throw new Exception("@todo INVALID AKISMET KEY");
+// }
+ return true;
+ }
+
+ public function check_comment($comment) {
+// $request = $this->_build_request("comment-check", $comment);
+// $response = $this->_http_post($this->_get_host_url(), $request);
+// return $reponse[1] == "true";
+ return true;
+ }
+
+ public function submit_spam($comment) {
+// $request = $this->_build_request("submit-spam", $comment);
+// $response = $this->_http_post($this->_get_host_url(), $request);
+// return $response[1] == "true";
+ return true;
+ }
+
+ public function submit_ham($comment) {
+// $request = $this->_build_request("submit-ham", $comment);
+// $response = $this->_http_post($this->_get_host_url(), $request);
+// return $reponse[1] == "true";
+ return true;
+ }
+
+ public function get_statistics() {
+ throw new Exception("@todo GET_STATISTICS NOT SUPPORTED");
+ }
+
+ private function _build_request($function, $comment) {
+ $comment_data = array();
+ foreach($_SERVER as $key => $value) {
+ if(!in_array($key, $this->ignore)) {
+ $comment_data[$key] = $value;
+ }
+ }
+
+ $query_string = "";
+ foreach($comment_data as $key => $data) {
+ if(!is_array($data)) {
+ $query_string .= $key . "=" . urlencode(stripslashes($data)) . "&";
+ }
+ }
+
+ $host = $this->_get_host_url();
+ $http_request = "POST /1.1/$function HTTP/1.0\r\n";
+ $http_request .= "Host: $host\r\n";
+ $http_request .= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
+ $http_request .= "Content-Length: " . strlen($query_string) . "\r\n";
+ $http_request .= "User-Agent: Gallery 3.0 | Akismet/1.11 \r\n";
+ $http_request .= "\r\n";
+ $http_request .= $query_string;
+
+ return $http_request;
+ }
+
+ private function _get_host_url() {
+ $api_key = module::get_var("spam_filter", "api_key");
+ return "$api_key.rest.akismet.com";
+ }
+} \ No newline at end of file
diff --git a/modules/spam_filter/libraries/drivers/Mollon.php b/modules/spam_filter/libraries/drivers/Mollon.php
new file mode 100644
index 00000000..cf6972f5
--- /dev/null
+++ b/modules/spam_filter/libraries/drivers/Mollon.php
@@ -0,0 +1,61 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class Mollon_Driver extends SpamFilter_Driver {
+ // Lets not send everything to Akismet
+ private $ignore = array("HTTP_COOKIE",
+ "HTTP_USER_AGENT",
+ "HTTP_X_FORWARDED_FOR",
+ "HTTP_X_FORWARDED_HOST",
+ "HTTP_MAX_FORWARDS",
+ "HTTP_X_FORWARDED_SERVER",
+ "REDIRECT_STATUS",
+ "SERVER_PORT",
+ "PATH",
+ "DOCUMENT_ROOT",
+ "REMOTE_ADDR",
+ "SERVER_ADMIN",
+ "QUERY_STRING",
+ "PHP_SELF" );
+
+ protected $_api_key;
+
+ public function verify_key($api_key) {
+ return true;
+ }
+
+ public function check_comment($comment_data) {
+ return true;
+ }
+
+ public function submit_spam($comment_data) {
+ return $response[1] == "true";
+ }
+
+ public function submit_ham($comment_data) {
+ }
+
+ public function get_statistics() {
+ throw new Exception("@todo GET_STATISTICS NOT IMPLEMENTED");
+ }
+
+ private function _build_request($function, $host,$comment_data) {
+ return "";
+ }
+} \ No newline at end of file
diff --git a/modules/spam_filter/libraries/drivers/SpamFilter.php b/modules/spam_filter/libraries/drivers/SpamFilter.php
new file mode 100644
index 00000000..3481aee2
--- /dev/null
+++ b/modules/spam_filter/libraries/drivers/SpamFilter.php
@@ -0,0 +1,48 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+abstract class SpamFilter_Driver {
+ public abstract function verify_key($api_key);
+
+ public abstract function check_comment($comment);
+
+ public abstract function submit_spam($comment);
+
+ public abstract function submit_ham($comment);
+
+ public abstract function get_statistics();
+
+ protected function _http_post($host, $http_request, $port=80, $timeout=5) {
+ $response = "";
+ if (false !== ($fs = @fsockopen($host, $port, $errno, $errstr, $timeout))) {
+ fwrite($fs, $http_request);
+ while ( !feof($fs) ) {
+ $response .= fgets($fs, 1160); // One TCP-IP packet
+ }
+ fclose($fs);
+ list($headers, $body) = explode("\r\n\r\n", $response);
+ $headers = explode("\r\n", $headers);
+ $body = explode("\r\n", $body);
+ $response = array("headers" => $headers, "body" => $body);
+ } else {
+ throw new Exception("@todo CONNECTION TO SPAM SERVICE FAILED");
+ }
+ return $response;
+ }
+} \ No newline at end of file
diff --git a/modules/spam_filter/module.info b/modules/spam_filter/module.info
new file mode 100644
index 00000000..5909e987
--- /dev/null
+++ b/modules/spam_filter/module.info
@@ -0,0 +1,3 @@
+name = Spam Filter
+description = Flag comments based on whether they are spam or not.
+version = 1
diff --git a/modules/spam_filter/tests/Spam_Filter_Helper_Test.php b/modules/spam_filter/tests/Spam_Filter_Helper_Test.php
new file mode 100644
index 00000000..c52883d8
--- /dev/null
+++ b/modules/spam_filter/tests/Spam_Filter_Helper_Test.php
@@ -0,0 +1,32 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class Spam_Filter_Helper_Test extends Unit_Test_Case {
+ public function get_driver_names_test() {
+ $current_driver = module::get_var("spam_filter", "driver");
+ foreach (glob(MODPATH . "spam_filter/libraries/drivers/*.php") as $file) {
+ if (preg_match("#spam_filter/libraries/drivers/(.*).php$#", $file, $matches)) {
+ if ($matches[1] != "Spam_Filter") {
+ $expected[$matches[1]] = $matches[1] === $current_driver;
+ }
+ }
+ }
+ $this->assert_equal($expected, spam_filter::get_driver_names());
+ }
+} \ No newline at end of file