Index: diggbar_blocker.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/diggbar_blocker/diggbar_blocker.module,v
retrieving revision 1.1
diff -u -p -r1.1 diggbar_blocker.module
--- diggbar_blocker.module	11 Apr 2009 23:16:49 -0000	1.1
+++ diggbar_blocker.module	14 Apr 2009 23:19:14 -0000
@@ -3,15 +3,40 @@
 
 /**
  * @file
- * Makes resizable textarea fields expand and contract dynamically with content.
+ * Implement DiggBar blocking via different methods (javascript framebusting or nasty message)
  */
 
+DEFINE('DIGGBAR_BLOCKER_JSFB', 0);
+DEFINE('DIGGBAR_BLOCKER_BM', 1);
+
+/**
+ * Determine what DiggBar blocking method to use
+ * 0 - Javascript Framebusting (DEFAULT)
+ * 1 - Blocking Message
+ */
+function diggbar_blocker_method() {
+  return variable_get('diggbar_blocker_method', DIGGBAR_BLOCKER_JSFB); 
+}
+
+/**
+ * Implementation of hook_boot()
+ */
+function diggbar_blocker_boot() {
+  if(diggbar_blocker_method() == DIGGBAR_BLOCKER_BM && 
+    preg_match('/http:\/\/digg.com\/\w{1,8}\/*(\?.*)?$/', $_SERVER['HTTP_REFERER'])) {
+    echo diggbar_blocker_message();
+    exit;
+  }
+}
+
 /**
  * Implementation of hook_init().
  */
-function diggbar_init() {
-  drupal_add_js(drupal_get_path('module', 'diggbar_blocker') .'/diggbar_blocker.js');
-  drupal_add_js(array('diggbar_blocker' => array(array('id' => variable_get("diggbar_blocker_redirect", '')))), 'setting');
+function diggbar_blocker_init() {
+  if (diggbar_blocker_method() == DIGGBAR_BLOCKER_JSFB) {
+    drupal_add_js(drupal_get_path('module', 'diggbar_blocker') .'/diggbar_blocker.js');
+    drupal_add_js(array('diggbar_blocker' => array(array('id' => variable_get("diggbar_blocker_redirect", '')))), 'setting');
+  }
 }
 
 /**
@@ -38,12 +63,56 @@ function diggbar_blocker_settings_form()
     '#collapsed' => FALSE,
   );
 
-  $form['diggbar_blocker_settings']['diggbar_blocker_include'] = array(
+  $form['diggbar_blocker_settings']['diggbar_blocker_method'] = array(
+    '#type' => 'radios',
+    '#title' => t('DiggBar Blocking Method'),
+    '#description' => t('The DiggBar can be removed (and optionally the user can be redirect) or DiggBar users can be blocked with a message'),
+    '#default_value' => diggbar_blocker_method(),
+    '#options' => array(
+      DIGGBAR_BLOCKER_JSFB => t('Javascript Framebusting'), 
+      DIGGBAR_BLOCKER_BM => t('Blocking Message')
+    ),
+  );
+
+  $form['diggbar_blocker_settings']['javascript_framebusting'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Javascript Framebusting Settings'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+
+  $form['diggbar_blocker_settings']['javascript_framebusting']['diggbar_blocker_include'] = array(
     '#type' => 'textfield',
     '#title' => t('Page to redirect DiggBar visitors to (optional)'),
     '#default_value' => variable_get("diggbar_blocker_redirect", ''),
     '#description' => t("Example: <em>node/1</em>."),
   );
 
+  $form['diggbar_blocker_settings']['blocking_message'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Blocking Message Settings'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+
+  $form['diggbar_blocker_settings']['blocking_message']['diggbar_blocker_message'] = array(
+    '#type' => 'textarea',
+    '#description' => t('Input the message to display to diggbar users'),
+    '#default_value' => diggbar_blocker_message(),
+  );
+
+
   return system_settings_form($form);
-}
\ No newline at end of file
+}
+
+function diggbar_blocker_message() {
+  $msg = variable_get('diggbar_blocker_message', '');
+  return !empty($msg) ? $msg : 
+    '<div style="width: 25%; margin: 20% auto 0 auto; font-family: Lucida Grande, verdana, sans-serif; font-size: 1.5em;"><p>' . "\n" .
+    'Dear Digg, <br />
+    Framing sites is bullshit. <br/>
+    <br />
+    Your pal, <br />
+    &mdash; J.G.' . "\n" .
+    '</p></div>';
+}
