From 871ad4974cf7d0fc0696afaab2ba3e45942bee4a Mon Sep 17 00:00:00 2001
From: Matt Vance <mvance@pobox.com>
Date: Tue, 1 Mar 2011 17:13:27 -0800
Subject: [PATCH] Issue #373699 by Matt V.: added a setting to limit the number of characters per line.

---
 signature_forum.module |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/signature_forum.module b/signature_forum.module
index c9a1dd7..2f88829 100644
--- a/signature_forum.module
+++ b/signature_forum.module
@@ -209,6 +209,14 @@ function signature_forum_admin_settings() {
     '#default_value' => $settings['signature_forum_line_limit'],
     '#description' => t('The maximum number of lines allowed in a signature. 0 means no limit. Note: existing signatures that are too long will not be changed.'),
   );
+  $form['signature_other']['characters_per_line'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Characters per line'),
+    '#size' => 3,
+    '#maxlength' => 10,
+    '#default_value' => $settings['signature_forum_characters_per_line'],
+    '#description' => t('The maximum number of characters per line allowed in a signature. 0 means no limit. Note: existing signatures that are too long will not be changed.'),
+  );
   $form['signature_other']['delete_signatures'] = array(
     '#type' => 'checkbox',
     '#title' => t('Delete embedded signatures'),
@@ -292,6 +300,7 @@ function signature_forum_admin_settings_submit($form, &$form_state) {
   $settings['signature_forum_template'] = $form_state['values']['template'];
   $settings['signature_forum_format'] = $form_state['values']['format'];
   $settings['signature_forum_line_limit'] = $form_state['values']['line_limit'];
+  $settings['signature_forum_characters_per_line'] = $form_state['values']['characters_per_line'];
   $settings['signature_forum_min_content_length'] = $form_state['values']['min_content_length'];
   $settings['signature_forum_min_content_length_action'] = $form_state['values']['min_content_length_action'];
   $settings['signature_forum_min_content_length_filter'] = $form_state['values']['min_content_length_filter'];
@@ -339,6 +348,14 @@ function signature_forum_user($op, &$edit, &$account, $category = NULL) {
 
         form_set_error('signature', t('Maximum number of !max_lines lines allowed in signature exceeded.', array('!max_lines' => $settings['signature_forum_line_limit'])));
       }
+      if ($settings['signature_forum_characters_per_line']) {
+        $lines = explode("\n", $edit['signature']);
+        foreach ($lines as $line) {
+          if (strlen($line) > $settings['signature_forum_characters_per_line']) {
+            form_set_error('signature', t('Signatures may not exceed !max_characters characters per line.', array('!max_characters' => $settings['signature_forum_characters_per_line'])));
+          }
+        }
+      }
       break;
   }
 }
-- 
1.7.0.4

