? signature.install Index: signature.info =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/signature/signature.info,v retrieving revision 1.1 diff -u -p -r1.1 signature.info --- signature.info 10 Mar 2007 17:44:43 -0000 1.1 +++ signature.info 30 Oct 2007 10:44:25 -0000 @@ -1,3 +1,8 @@ ; $Id: signature.info,v 1.1 2007/03/10 17:44:43 zertox Exp $ name = Signature description = Manages users signatures. + +; Information added by drupal.org packaging script on 2007-03-11 +version = "5.x-1.x-dev" +project = "signature" + Index: signature.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/signature/signature.module,v retrieving revision 1.1 diff -u -p -r1.1 signature.module --- signature.module 10 Mar 2007 17:44:43 -0000 1.1 +++ signature.module 30 Oct 2007 10:44:25 -0000 @@ -1,134 +1,175 @@ - 'admin/settings/signature', - 'title' => t('signature'), - 'description' => t('Manages users\' signatures.'), - 'callback' => 'drupal_get_form', - 'callback arguments' => array('signature_admin_settings'), - 'access' => user_access('administer site configuration'), - 'type' => MENU_NORMAL_ITEM, // optional - ); - return $items; -} -function signature_admin_settings() { - $form['signature'] = array( - '#type' => 'fieldset', - '#description' => t('Show signatures with nodes and comments for: '), - ); - - foreach(node_get_types('names') as $type => $name) { - $form['signature']['signature_show_for_'.$type] = array( - '#type' => 'checkbox', - '#title' => $name, - '#return_value' => 1, - '#default_value' => variable_get('signature_show_for_'.$type, '0'), - ); - } - - $form['signature']['signature_template'] = array ( - '#type' => 'textarea', - '#title' => 'Template for signatures:', - '#default_value' => variable_get('signature_template', "__________________________\n
%s"), - '#description' => '%s will be replaced with user\'s actual signature. Please note, all html tags will be filtered out.', - ); - - return system_settings_form($form); -} - -function signature_form_alter($form_id, &$form) { -//if signatures are disabled for all content types, hiding signature field in user profile settings - if ($form_id == 'user_edit') { - $enabled = false; - foreach(node_get_types('names') as $type => $name) { - if (variable_get('signature_show_for_'.$type, '0')) { - $enabled = true; - break; - } - } - if (!$enabled) { - unset($form['comment_settings']); - } - } - -//cleaning signature in comment/reply - if ($form_id == 'comment_form') { - global $user; - if ($form['comment_filter']['comment']['#default_value'] == $user->signature ) { - $form['comment_filter']['comment']['#default_value'] = ''; - } - } -} - - -function signature_nodeapi(&$node, $op, $teaser, $page) { - if (variable_get('signature_show_for_'.$node->type, '0')) { - switch ($op) { - - case 'load': - global $signature_node_type; - $signature_node_type = $node->type; - - $node->signature = db_result(db_query('SELECT signature FROM {users} WHERE uid = %d', $node->uid)); - $node->body = $node->body . theme('signature', $node->signature); - break; - -// case 'view': -// $node->body = $node->body . theme('signature', $node->signature); -// break; - - case 'prepare': - $themed_signature = theme('signature', $node->signature); - if (substr($node->body, - strlen($themed_signature)) == $themed_signature) { - $node->body = substr($node->body, 0, strlen($node->body) - strlen($themed_signature)); - } - break; - } - } -} - - -function signature_comment(&$comment, $op) { -// $node_type = db_result(db_query('SELECT type FROM {node} WHERE nid = %d', $comment->nid)); - global $signature_node_type; - - if ($op == 'view' && variable_get('signature_show_for_'.$signature_node_type, '0')) { - static $cache; - if (!isset($cache)) { - $result = db_query('SELECT u.uid, u.signature FROM {comments} c - INNER JOIN {users} u ON c.uid = u.uid - WHERE c.nid = %d AND c.status = 0 AND NOT(u.signature = "") - GROUP BY u.uid', $comment->nid); - $cache = array(); - while($row = db_fetch_object($result)) { - $cache[$row->uid] = $row->signature; - } - } - - if (isset($cache[$comment->uid])) { - $comment->comment .= theme('signature', $cache[$comment->uid]); - } - } -} - - -function theme_signature($signature) { - return sprintf("\n" . variable_get('signature_template', "__________________________\n
%s"), check_markup($signature)); -} - -?> \ No newline at end of file + 'admin/settings/signature', + 'title' => t('Signature'), + 'description' => t('Manages users\' signatures.'), + 'callback' => 'drupal_get_form', + 'callback arguments' => array('signature_admin_settings'), + 'access' => user_access('administer site configuration'), + 'type' => MENU_NORMAL_ITEM, // optional + ); + return $items; +} + +/** + * Admin settings form + */ +function signature_admin_settings() { + $form['signature'] = array( + '#type' => 'fieldset', + '#description' => t('Show signatures with nodes and comments for: '), + ); + + foreach(node_get_types('names') as $type => $name) { + $form['signature']['signature_show_for_'.$type] = array( + '#type' => 'checkbox', + '#title' => $name, + '#return_value' => 1, + '#default_value' => variable_get('signature_show_for_'.$type, '0'), + ); + } + + $form['signature']['signature_template'] = array ( + '#type' => 'textarea', + '#title' => 'Template for signatures:', + '#default_value' => variable_get('signature_template', "__________________________\n

%s

"), + '#description' => '%s will be replaced with user\'s actual signature.', + ); + + $form['signature']['filter'] = filter_form(variable_get('signature_format', FILTER_FORMAT_DEFAULT)); + + return system_settings_form($form); +} + +/** + * Admin settings form submit + */ +function signature_admin_settings_submit($form_id, $form_values) { + foreach($form_values as $form_value_key => $form_value_value) { + if (substr($form_value_key, 0, strlen('signature_show_for_')) == 'signature_show_for_') { + variable_set($form_value_key, $form_value_value); + } + } + variable_set('signature_template', $form_values['signature_template']); + variable_set('signature_format', $form_values['format']); +} + +/** + * Implementation of hook_form_alter() + */ +function signature_form_alter($form_id, &$form) { + // if signatures are disabled for all content types, hide signature field in user profile settings + if ($form_id == 'user_edit') { + $enabled = false; + foreach(node_get_types('names') as $type => $name) { + if (variable_get('signature_show_for_'. $type, '0')) { + $enabled = true; + break; + } + } + if (!$enabled) { + unset($form['comment_settings']); + } + } +} + +/** + * Implementation of hook_user() + */ +function signature_user($op, &$edit, &$account, $category = NULL) { + if ($op == 'submit' && $category == 'account') { + // Re-route the user signature to this modules signature table + db_query('UPDATE {users_signature} SET signature=\'%s\' WHERE uid=%d', array($edit['signature'], $account->uid)); + unset($edit['signature']); + } + else if ($op == 'load') { + static $signature; + // We keep this in memory because load is called several times + if (!isset($signature)) { + $signature = db_result(db_query('SELECT signature FROM {users_signature} WHERE uid=%d', $account->uid)); + } + $account->signature = $signature; + } +} + +/** + * Implementation of hook_nodeapi() + */ +function signature_nodeapi(&$node, $op, $teaser, $page) { + if (variable_get('signature_show_for_'.$node->type, '0')) { + $node->signature = db_result(db_query('SELECT signature FROM {users_signature} WHERE uid = %d', $node->uid)); + switch ($op) { + case 'view': + // Add signature to node body text + $node->content['body']['#value'] = $node->content['body']['#value'] . theme('signature', $node->signature); + break; + } + } +} + +/** + * Implementation of hook_comment() + */ +function signature_comment(&$comment, $op) { + static $node_type; + + if (!isset($node_type)) { + $node_type = db_result(db_query('SELECT type FROM {node} WHERE nid = %d', $comment->nid)); + } + + if ($op == 'view' && variable_get('signature_show_for_'. $node_type, '0')) { + static $cache; + if (!isset($cache)) { + $result = db_query('SELECT u.uid, u.signature FROM {comments} c + INNER JOIN {users_signature} u ON c.uid = u.uid + WHERE c.nid = %d AND c.status = 0 AND NOT(u.signature = "") + GROUP BY u.uid', $comment->nid); + $cache = array(); + while($row = db_fetch_object($result)) { + $cache[$row->uid] = $row->signature; + } + } + + if (isset($cache[$comment->uid])) { + $comment->comment .= theme('signature', $cache[$comment->uid]); + } + } +} + +/** + * Format user signature + * + * @ingroup themeable + */ +function theme_signature($signature) { + $format = variable_get('signature_format', FILTER_FORMAT_DEFAULT); + $template = variable_get('signature_template', "__________________________\n

%s

"); + $sig_temp = check_markup($signature, $format); + $sig_temp = trim(sprintf("\n". $template, $sig_temp)); + + return '
'. $sig_temp .'
'; +}