? .cvsignore
? 808310_partial_signup_port.patch
Index: signup.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/signup.info,v
retrieving revision 1.6
diff -u -p -r1.6 signup.info
--- signup.info	19 Sep 2009 09:18:29 -0000	1.6
+++ signup.info	1 Jun 2010 17:45:52 -0000
@@ -2,4 +2,55 @@
 name = Signup
 description = "Allow users to sign up for content (especially events)."
 package = Signup
-core = 6.x
+core = 7.x
+
+configure = admin/config/people/signup
+
+files[] = signup.api.php
+files[] = signup.install
+files[] = signup.module
+files[] = includes/admin.settings.inc
+files[] = includes/admin.signup_administration.inc
+files[] = includes/broadcast.inc
+files[] = includes/cron.inc
+files[] = includes/date.inc
+files[] = includes/event.6x-2.inc
+files[] = includes/no_views.inc
+files[] = includes/node_admin.inc
+files[] = includes/node_admin_summary.inc
+files[] = includes/node_form.inc
+files[] = includes/node_output.inc
+files[] = includes/node_settings.inc
+files[] = includes/scheduler.inc
+files[] = includes/signup_cancel.inc
+files[] = includes/signup_edit_form.inc
+files[] = includes/signup_form.inc
+files[] = includes/token_help.inc
+files[] = content_types/signup_form.inc
+files[] = theme/admin.inc
+files[] = theme/email.inc
+files[] = theme/no_views.inc
+files[] = theme/node.admin.inc
+files[] = theme/node.inc
+files[] = theme/signup_form.inc
+files[] = views/signup.views.inc
+files[] = views/signup.views_default.inc
+files[] = default_views/signup_available_signups.view.php
+files[] = default_views/signup_current_signups.view.php
+files[] = default_views/signup_user_admin_list.view.php
+files[] = default_views/signup_user_list.view.php
+files[] = default_views/signup_user_vbo_admin_list.view.php
+files[] = handlers/signup_handler_argument_signup_user_uid.inc
+files[] = handlers/signup_handler_field_signup_edit_link.inc
+files[] = handlers/signup_handler_field_signup_node_link.inc
+files[] = handlers/signup_handler_field_signup_send_confirmation.inc
+files[] = handlers/signup_handler_field_signup_status.inc
+files[] = handlers/signup_handler_field_signup_user_attended.inc
+files[] = handlers/signup_handler_field_signup_user_email.inc
+files[] = handlers/signup_handler_field_signup_user_form_data.inc
+files[] = handlers/signup_handler_filter_signup_disabled.inc
+files[] = handlers/signup_handler_filter_signup_status.inc
+files[] = handlers/signup_handler_filter_signup_user_attended.inc
+files[] = handlers/signup_handler_filter_signup_user_authenticated.inc
+files[] = plugins/signup_plugin_access_user_signup_list.inc
+files[] = plugins/signup_plugin_argument_validate_signup_status.inc
Index: signup.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/signup.install,v
retrieving revision 1.30
diff -u -p -r1.30 signup.install
--- signup.install	19 Sep 2009 01:42:52 -0000	1.30
+++ signup.install	1 Jun 2010 17:45:52 -0000
@@ -3,73 +3,79 @@
 
 
 /**
- * Implementation of hook_schema().
+ * @file
+ * Install, update and uninstall functions for the signup module.
+ *
+ */
+
+/**
+ * Implements hook_schema().
  */
 function signup_schema() {
   $schema['signup'] = array(
-    'description' => t('Signup module per-node settings.'),
+    'description' => 'Signup module per-node settings.',
     'fields' => array(
       'nid' => array(
-        'description' => t('Primary key: node ID'),
+        'description' => 'Primary key: node ID',
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
         'default' => 0,
       ),
       'forwarding_email' => array(
-        'description' => t('Email address to send signup notifications to.'),
+        'description' => 'Email address to send signup notifications to.',
         'type' => 'varchar',
         'length' => 64,
         'not null' => TRUE,
         'default' => '',
       ),
       'send_confirmation' => array(
-        'description' => t('Boolean indicating whether confirmation emails should be sent.'),
+        'description' => 'Boolean indicating whether confirmation emails should be sent.',
         'type' => 'int',
         'not null' => TRUE,
         'default' => 0,
       ),
       'confirmation_email' => array(
-        'description' => t('Email template to send to users when they signup.'),
+        'description' => 'Email template to send to users when they signup.',
         'type' => 'text',
         'size' => 'big',
         'not null' => TRUE,
       ),
       'send_reminder' => array(
-        'description' => t('Boolean indicating whether reminder emails should be sent. This is set to 0 once the reminders are sent.'),
+        'description' => 'Boolean indicating whether reminder emails should be sent. This is set to 0 once the reminders are sent.',
         'type' => 'int',
         'not null' => TRUE,
         'default' => 0,
       ),
       'reminder_days_before' => array(
-        'description' => t('Number of days before the start of a time-based node when the reminder emails should be sent.'),
+        'description' => 'Number of days before the start of a time-based node when the reminder emails should be sent.',
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
         'default' => 0,
       ),
       'reminder_email' => array(
-        'description' => t('Email template to send to users to remind them about a signup.'),
+        'description' => 'Email template to send to users to remind them about a signup.',
         'type' => 'text',
         'size' => 'big',
         'not null' => TRUE,
       ),
       'close_in_advance_time' => array(
-        'description' => t('Number of hours before the start of a time-based node when signups should automatically be closed. This column is not currently used and the behavior is controlled by a site-wide setting.  See http://drupal.org/node/290249 for more information.'),
+        'description' => 'Number of hours before the start of a time-based node when signups should automatically be closed. This column is not currently used and the behavior is controlled by a site-wide setting.  See http://drupal.org/node/290249 for more information.',
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
         'default' => 0,
       ),
       'close_signup_limit' => array(
-        'description' => t('Maximum number of users who can signup before signups are closed. If set to 0, there is no limit.'),
+        'description' => 'Maximum number of users who can signup before signups are closed. If set to 0, there is no limit.',
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
         'default' => 0,
       ),
       'status' => array(
-        'description' => t('Boolean indicating if signups are open (1) or closed (0) for the given node'),
+        'description' => 'Boolean indicating if signups are open (1) or closed (0) for the given node',
         'type' => 'int',
         'not null' => TRUE,
         'default' => 1,
@@ -79,56 +85,56 @@ function signup_schema() {
   );
 
   $schema['signup_log'] = array(
-    'description' => t('Records information for each user who signs up for a node.'),
+    'description' => 'Records information for each user who signs up for a node.',
     'fields' => array(
       'sid' => array(
-        'description' => t('Primary key: signup ID'),
+        'description' => 'Primary key: signup ID',
         'type' => 'serial',
         'size' => 'normal',
         'unsigned' => TRUE,
         'not null' => TRUE,
       ),
       'uid' => array(
-        'description' => t('Key: the user ID of the user who signed up.'),
+        'description' => 'Key: the user ID of the user who signed up.',
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
         'default' => 0,
       ),
       'nid' => array(
-        'description' => t('Key: the node ID of the node the user signed up for.'),
+        'description' => 'Key: the node ID of the node the user signed up for.',
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
         'default' => 0,
       ),
       'anon_mail' => array(
-        'description' => t('The email address for an anonymous user who signed up, or an empty string for authenticated users.'),
+        'description' => 'The email address for an anonymous user who signed up, or an empty string for authenticated users.',
         'type' => 'varchar',
         'length' => 255,
         'not null' => TRUE,
         'default' => '',
       ),
       'signup_time' => array(
-        'description' => t('Integer timestamp of when the user signed up for the node.'),
+        'description' => 'Integer timestamp of when the user signed up for the node.',
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
         'default' => 0,
       ),
       'form_data' => array(
-        'description' => t('Serialized string of additional signup form values.  See theme_signup_user_form() from theme/signup.theme for more information.'),
+        'description' => 'Serialized string of additional signup form values.  See theme_signup_user_form() from theme/signup.theme for more information.',
         'type' => 'text',
         'size' => 'big',
         'not null' => TRUE,
       ),
       'attended' => array(
-        'description' => t('Did this user actually attend the node they signed up for?'),
+        'description' => 'Did this user actually attend the node they signed up for?',
         'type' => 'int',
         'size' => 'tiny',
       ),
       'count_towards_limit' => array(
-        'description' => t('How many slots (if any) this signup should use towards the total signup limit for this node'),
+        'description' => 'How many slots (if any) this signup should use towards the total signup limit for this node',
         'type' => 'int',
         'not null' => TRUE,
         'default' => 1,
@@ -145,7 +151,7 @@ function signup_schema() {
 }
 
 /**
- * Implementation of hook_install().
+ * Implements hook_install().
  *
  * This will automatically install the database tables for the Signup
  * module for both the MySQL and PostgreSQL databases.
@@ -158,18 +164,16 @@ function signup_schema() {
  * need to be removed.
  */
 function signup_install() {
-  // Create tables.
-  drupal_install_schema('signup');
   signup_insert_default_signup_info();
 }
 
+/**
+ * Implements hook_uninstall().
+ */
 function signup_uninstall() {
-  // Remove tables.
-  drupal_uninstall_schema('signup');
-
-  $variables = db_query("SELECT name FROM {variable} WHERE name LIKE 'signup%%'");
-  while ($variable = db_fetch_object($variables)) {
-    variable_del($variable->name);
+  $variables = db_query("SELECT name FROM {variable} WHERE name LIKE :name", array(':name' => 'signup%'))->fetchCol();
+  foreach ($variables as $variable) {
+    variable_del($variable);
   }
 }
 
@@ -188,6 +192,10 @@ function signup_insert_default_signup_in
     0, 0, 1)");
 }
 
+/**
+ * @todo Please insert a Doxygen style comment for this hook_update_N.
+ *
+ */
 function signup_update_3() {
   $ret = array();
   switch ($GLOBALS['db_type']) {
@@ -317,7 +325,7 @@ function signup_update_5202() {
       $ret[] = update_sql("UPDATE {permission} SET perm = perm || ', cancel own signups' WHERE perm || ', ' LIKE '%%sign up for content, %%'");
       break;
   }
-  drupal_set_message(t("Added the 'cancel own signups' permission to all roles that have the 'sign up for content' permission.") .'<br />'. t('If you do not want your users to cancel their own signups, go to the <a href="@access_url">Access control</a> page and unset this permission.', array('@access_url' => url('/admin/user/access'))));
+  drupal_set_message(t("Added the 'cancel own signups' permission to all roles that have the 'sign up for content' permission.") . '<br />' . t('If you do not want your users to cancel their own signups, go to the <a href="@access_url">Access control</a> page and unset this permission.', array('@access_url' => url('/admin/user/access'))));
   return $ret;
 }
 
@@ -330,7 +338,7 @@ function signup_update_5203() {
   $result = db_query("SELECT name FROM {variable} WHERE name LIKE '$old_prefix%%'");
   while ($row = db_fetch_object($result)) {
     $old_name = $row->name;
-    $new_name = 'signup_node_default_state_'. substr($old_name, strlen($old_prefix));
+    $new_name = 'signup_node_default_state_' . substr($old_name, strlen($old_prefix));
     $new_value = variable_get($old_name, 0) == 1 ? 'enabled_on' : 'disabled';
     variable_del($old_name);
     variable_set($new_name, $new_value);
@@ -427,7 +435,7 @@ function signup_update_6000() {
       '%old_view_name' => 'signup_user_list_view_name',
       '%old_view_type' => 'signup_user_list_view_type',
       // NOTE: we can't use url() here because it would use 'update.php?q=...'
-      '@signup_settings_url' => base_path() .'?q=admin/settings/signup',
+      '@signup_settings_url' => base_path() . '?q=admin/settings/signup',
       '%setting_name' => t('View to embed for the signup user list'),
     )),
   );
@@ -447,8 +455,8 @@ function signup_update_6001() {
     'unsigned' => TRUE,
     'not null' => TRUE,
   );
-  db_add_field($ret, 'signup_log', 'sid', $field, array('primary key' => array('sid')));
-  return $ret;	
+  db_add_field('signup_log', 'sid', $field, array('primary key' => array('sid')));
+  return $ret;
 }
 
 /**
@@ -462,8 +470,8 @@ function signup_update_6002() {
     'type' => 'int',
     'size' => 'tiny',
   );
-  db_add_field($ret, 'signup_log', 'attended', $field);
-  return $ret;	
+  db_add_field('signup_log', 'attended', $field);
+  return $ret;
 }
 
 /**
@@ -478,7 +486,7 @@ function signup_update_6003() {
     'not null' => TRUE,
     'default' => 1,
   );
-  db_add_field($ret, 'signup_log', 'count_towards_limit', $field);
+  db_add_field('signup_log', 'count_towards_limit', $field);
   return $ret;
 }
 
Index: signup.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/signup.module,v
retrieving revision 1.242
diff -u -p -r1.242 signup.module
--- signup.module	8 Oct 2009 00:01:24 -0000	1.242
+++ signup.module	1 Jun 2010 17:45:53 -0000
@@ -13,20 +13,23 @@
  * information, see the README.txt and INSTALL.txt files in this directory.
  */
 
+// TODO: Remove this hack.
+include_once drupal_get_path('module', 'signup') . '/includes/no_views.inc';
+
 /**
  * @defgroup signup_core Core drupal hooks
  */
 
 /**
- * Implementation of hook_theme(), the theme registry.
+ * Implements hook_theme(), the theme registry().
  */
 function signup_theme() {
-  $path = drupal_get_path('module', 'signup') .'/theme';
+  $path = drupal_get_path('module', 'signup') . '/theme';
   return array(
     'signup_admin_page' => array(
       'file' => 'admin.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'filter_status_form' => NULL,
         'signup_admin_form' => NULL,
       ),
@@ -34,35 +37,31 @@ function signup_theme() {
     'signup_filter_status_form' => array(
       'file' => 'admin.inc',
       'path' => $path,
-      'arguments' => array(
-        'form' => NULL,
-      ),
+      'render element' => 'form',
     ),
     'signup_admin_form' => array(
       'file' => 'admin.inc',
       'path' => $path,
-      'arguments' => array(
-        'form' => NULL,
-      ),
+      'render element' => 'form',
     ),
     'signup_email_token_custom_data' => array(
       'file' => 'email.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'signup_data' => NULL,
       ),
     ),
     'signup_custom_data_email' => array(
       'file' => 'email.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'data' => NULL,
       ),
     ),
     'signup_custom_data_field_text' => array(
       'file' => 'email.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'key' => NULL,
         'value' => NULL,
       ),
@@ -70,7 +69,7 @@ function signup_theme() {
     'signup_broadcast_sender_copy' => array(
       'file' => 'email.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'raw_message' => NULL,
         'cooked_message' => NULL,
       ),
@@ -78,7 +77,7 @@ function signup_theme() {
     'signup_user_list' => array(
       'file' => 'no_views.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'node' => NULL,
         'registered_signups' => NULL,
         'anon_signups' => NULL,
@@ -87,14 +86,14 @@ function signup_theme() {
     'signup_user_schedule' => array(
       'file' => 'no_views.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'node' => NULL,
       ),
     ),
     'signup_node_admin_page' => array(
       'file' => 'node.admin.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'node' => NULL,
         'signup_node_admin_summary_form' => NULL,
         'signup_node_admin_details_form' => NULL,
@@ -104,35 +103,31 @@ function signup_theme() {
     'signup_node_admin_summary_form' => array(
       'file' => 'node.admin.inc',
       'path' => $path,
-      'arguments' => array(
-        'form' => NULL,
-      ),
+      'render element' => 'form',
     ),
     'signup_node_admin_details_form' => array(
       'file' => 'node.admin.inc',
       'path' => $path,
-      'arguments' => array(
-        'form' => NULL,
-      ),
+      'render element' => 'form',
     ),
     'signup_custom_data' => array(
       'file' => 'node.admin.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'data' => NULL,
       ),
     ),
     'signup_attended_text' => array(
       'file' => 'node.admin.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'attended' => NULL,
       ),
     ),
     'signup_signups_closed' => array(
       'file' => 'node.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'node' => NULL,
         'current_signup' => '',
       ),
@@ -140,51 +135,58 @@ function signup_theme() {
     'signup_anonymous_user_login_text' => array(
       'file' => 'node.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'anon_login_text' => NULL,
       ),
     ),
     'signup_node_output_header' => array(
       'file' => 'node.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'node' => NULL,
       ),
     ),
     'signup_user_form' => array(
       'file' => 'signup_form.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'node' => NULL,
       ),
     ),
     'signup_anonymous_username' => array(
       'file' => 'signup_form.inc',
       'path' => $path,
-      'arguments' => array(
+      'variables' => array(
         'form_data' => NULL,
         'email' => NULL,
       ),
     ),
     'signup_settings_view_label' => array(
       'file' => 'admin.settings.inc',
-      'path' => drupal_get_path('module', 'signup') .'/includes',
-      'arguments' => array(
+      'path' => drupal_get_path('module', 'signup') . '/includes',
+      'variables' => array(
         'view' => NULL,
       ),
     ),
+    'signups_recent_block' => array(
+      'file' => 'no_views.inc',
+      'path' => $path,
+      'variables' => array(
+        'signups' => NULL,
+      ),
+    ),
   );
 }
 
 /**
- * Implementation of hook_init().
+ * Implements hook_init().
  */
 function signup_init() {
   _signup_initialize_scheduler_backend();
 }
 
 /**
- * Implementation of hook_cron().
+ * Implements hook_cron().
  *
  * There are two cron-based tasks that can be performed by the signup module:
  * sending reminder emails to nodes that will begin soon, and auto-closing
@@ -227,51 +229,51 @@ function _signup_build_query($common_sql
   // Combine type-specific sql with common_sql.
   $full_sql = array_merge_recursive($common_sql, $type_sql);
 
-  $sql = 'SELECT '. implode(', ', $full_sql['fields']);
-  $sql .= ' FROM '. $common_sql['primary'] .' ';
+  $sql = 'SELECT ' . implode(', ', $full_sql['fields']);
+  $sql .= ' FROM ' . $common_sql['primary'] . ' ';
   if (!empty($full_sql['joins'])) {
     $sql .= implode(' ', $full_sql['joins']);
   }
   if (!empty($full_sql['where'])) {
-    $sql .= ' WHERE ('. implode(') AND (', $full_sql['where']) .')';
+    $sql .= ' WHERE (' . implode(') AND (', $full_sql['where']) . ')';
   }
   if (!empty($full_sql['group_by'])) {
-    $sql .= ' GROUP BY '. implode(', ', $full_sql['group_by']);
+    $sql .= ' GROUP BY ' . implode(', ', $full_sql['group_by']);
   }
   return $sql;
 }
 
 /**
- * Implementation of hook_help().
+ * Implements hook_help().
  *
  * @ingroup signup_core
  */
 function signup_help($path, $arg) {
   switch ($path) {
     case 'admin/help#signup':
-      return '<p>'.
+      return '<p>' .
         t('Signup allows users to sign up (in other words, register) for content of any type. The most common use is for events, where users indicate they are planning to attend. This module includes options for sending a notification email to a selected email address upon a new user signup (good for notifying event coordinators, etc.) and a confirmation email to users who sign up. Each of these options are controlled per node. When used on event nodes (with <a href="@event_url">event.module</a> installed) or nodes that have a date field (with <a href="@date_url">date.module</a>) and regular cron runs, it can also send out reminder emails to all signups a configurable number of days before the start of the event (also controlled per node) and to automatically close signups 1 hour before their start (general setting). Settings exist for resticting signups to selected roles and content types.', array('@event_url' => url('http://drupal.org/project/event'), '@date_url' => url('http://drupal.org/project/date')))
-        .'</p><p>'.
+        . '</p><p>' .
         t('To use signup, you must enable which content types should allow signups in administer->settings->content types, and you must also grant the %sign_up_for_content permission to any user role that should be able to sign up in administer->access control. Each signup-enabled node will now have a place for users to sign up.', array('%sign_up_for_content' => 'sign up for content'))
-        .'</p><p>'.
+        . '</p><p>' .
         t('There are two ways for a user to have administrative access to the signup information about a given node: either the user has the %administer_signups_for_own_content permission and they are viewing a node they created, or the user has the global %administer_all_signups permission. Administrative access allows a user to view all the users who have signed up for the node, along with whatever information they included when they signed up.  Signup administrators can also cancel other user\'s signups for the node, and can close signups on the node entirely (meaning no one else is allowed to sign up).', array('%administer_signups_for_own_content' => 'administer signups for own content', '%administer all signups' => 'administer all signups'))
-        .'</p><p>'.
+        . '</p><p>' .
         t('Default settings for notification email address, reminder emails and confirmation emails are located in administer->settings->signup. These will be the default values used for a signup node unless otherwise specified (to configure these options per node, visit \'edit\' for that node and make the adjustments in the \'Sign up settings\' section).')
-        .'</p><p>'.
+        . '</p><p>' .
         t('Signups can be manually closed for any node at the %signup_overview page, or on the \'signups\' tab on each node.', array('%signup_overview' => t('Signup overview')))
-        .'</p><p>'.
+        . '</p><p>' .
         t('The user signup form is fully themable -- form fields may be added or deleted. For more details see the instructions in signup.theme, where a sample user form is included.')
-        .'</p>';
+        . '</p>';
   }
 
   // If we're still here, consider the URL for help on various menu tabs.
   if (($node = menu_get_object()) && arg(2) == 'signups') {
     switch (arg(3)) {
       case 'broadcast':
-        return '<p>'. t('This page allows you to send an email message to every user who signed up for this %node_type.', array('%node_type' => node_get_types('name', $node->type))) .'</p>';
+        return '<p>' . t('This page allows you to send an email message to every user who signed up for this %node_type.', array('%node_type' => node_type_get_name($node->type))) . '</p>';
 
       case 'add':
-        return '<p>'. t('This page allows you to sign up another user for this %node_type.', array('%node_type' => node_get_types('name', $node->type))) .'</p>';
+        return '<p>' . t('This page allows you to sign up another user for this %node_type.', array('%node_type' => node_type_get_name($node->type))) . '</p>';
 
     }
   }
@@ -281,7 +283,7 @@ function signup_help($path, $arg) {
   // doesn't contain 'help#' since hook_help() is invoked twice on admin
   // pages.
   if (!empty($arg[0]) && $arg[0] == 'admin' && $arg[1] == 'content'
-    && function_exists('signup_date_check_node_types')
+     && function_exists('signup_date_check_node_types')
   ) {
     if ($arg[2] == 'types' && $arg[3] != 'add') {
       signup_date_check_node_types();
@@ -295,14 +297,14 @@ function signup_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_menu().
+ * Implements hook_menu().
  *
  * @ingroup signup_core
  */
 function signup_menu() {
-  $path = drupal_get_path('module', 'signup') .'/includes';
+  $path = drupal_get_path('module', 'signup') . '/includes';
   $items = array();
-  $items['admin/settings/signup'] = array(
+  $items['admin/config/people/signup'] = array(
     'description' => 'Configure settings for signups.',
     'access arguments' => array('administer all signups'),
     'page callback' => 'drupal_get_form',
@@ -350,14 +352,19 @@ function signup_menu() {
     'access callback' => '_signup_menu_access',
     'access arguments' => array(1, 'any'),
     'type' => MENU_LOCAL_TASK,
+    'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE,
     'weight' => 20,
   );
-  $items['node/%node/signups/signup'] = array(
+  $items['node/%node/signup'] = array(
     'title' => 'Sign up',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'type' => MENU_LOCAL_ACTION,
+    'page callback' => 'signup_current_user_signup_page',
+    'page arguments' => array(1),
     'access callback' => '_signup_menu_access',
     'access arguments' => array(1, 'signup'),
     'weight' => -10,
+    'file' => 'node_output.inc',
+    'file path' => $path,
   );
   $items['node/%node/signups/list'] = array(
     'title' => 'List',
@@ -365,7 +372,7 @@ function signup_menu() {
     'page arguments' => array(1),
     'access callback' => '_signup_menu_access',
     'access arguments' => array(1, 'list-tab'),
-    'type' => MENU_LOCAL_TASK,
+    'type' => MENU_DEFAULT_LOCAL_TASK,
     'weight' => -5,
     'file' => 'node_output.inc',
     'file path' => $path,
@@ -401,24 +408,24 @@ function signup_menu() {
     'file' => 'node_admin.inc',
     'file path' => $path,
   );
-  $items['node/%node/signups/add'] = array(
-    'title' => 'Add',
+  $items['node/%node/signups/admin/add'] = array(
+    'title' => 'Add signup',
     'page callback' => 'signup_node_admin_add_user_page',
     'page arguments' => array(1),
     'access callback' => '_signup_menu_access',
     'access arguments' => array(1, 'add'),
-    'type' => MENU_LOCAL_TASK,
+    'type' => MENU_LOCAL_ACTION,
     'weight' => 5,
     'file' => 'signup_form.inc',
     'file path' => $path,
   );
-  $items['node/%node/signups/broadcast'] = array(
+  $items['node/%node/signups/admin/broadcast'] = array(
     'title' => 'Signup broadcast',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('signup_broadcast_form', 1),
     'access callback' => '_signup_menu_access',
     'access arguments' => array(1, 'broadcast'),
-    'type' => MENU_LOCAL_TASK,
+    'type' => MENU_LOCAL_ACTION,
     'weight' => 10,
     'file' => 'broadcast.inc',
     'file path' => $path,
@@ -575,15 +582,22 @@ function _signup_menu_signup_access($sig
 }
 
 /**
+ * Page callback for displaying a signup form.
+ */
+function signup_current_user_signup_page($node) {
+  // TODO: This probably shouldn't be here.
+  drupal_set_title($node->title);
+
+  return _signup_current_user_signup($node, 'tab');
+}
+
+/**
  * Menu callback to handle the default tab at node/N/signups
  *
  * This tests the user's permission to see what tab they should really see.
- * If they have permission to signup for nodes and the site is configured to
- * put the signup form on a separate tab from the node itself, display the
- * current user's signup info (either a form to signup, or their current
- * signup).  If not, see if they can view a signup user list, and redirect
- * there.  If not, see if they can administer signups and redirect there.
- * Finally, if they can at least send a signup broadcast, go there.
+ * First, see if they can view a signup user list, and redirect there. If not,
+ * see if they can administer signups and redirect there. Finally, if they can
+ * at least send a signup broadcast, go there.
  *
  * @param $node
  *   Fully loaded node object to generate the node/N/signup menu handler for.
@@ -593,25 +607,27 @@ function _signup_menu_signup_access($sig
  *
  * @see signup_menu()
  * @see _signup_menu_access()
- * @see _signup_current_user_signup();
  */
 function signup_node_tab_page($node) {
-  $signup = _signup_menu_access($node, 'signup');
   $list = _signup_menu_access($node, 'list-tab');
   $admin = _signup_menu_access($node, 'admin');
   $broadcast = _signup_menu_access($node, 'broadcast');
-  if ($signup) {
-    module_load_include('inc', 'signup', 'includes/node_output');
-    return _signup_current_user_signup($node, 'tab');
+  $options = array();
+  if (isset($_GET['destination'])) {
+    // If we have a redirect destination, we don't want drupal_goto() to send
+    // us there yet, but rather send us to the desired page and preserve the
+    // destination for next time.
+    $options = array('query' => drupal_get_destination());
+    unset($_GET['destination']);
   }
-  elseif ($list) {
-    drupal_goto("node/$node->nid/signups/list");
+  if ($list) {
+    drupal_goto("node/$node->nid/signups/list", $options);
   }
   elseif ($admin) {
-    drupal_goto("node/$node->nid/signups/admin");
+    drupal_goto("node/$node->nid/signups/admin", $options);
   }
   elseif ($broadcast) {
-    drupal_goto("node/$node->nid/signups/broadcast");
+    drupal_goto("node/$node->nid/signups/admin/broadcast", $options);
   }
 }
 
@@ -624,26 +640,44 @@ function _signup_initialize_scheduler_ba
 }
 
 /**
- * Implementation of hook_perm().
+ * Implements hook_permission().
  *
  * @ingroup signup_core
  */
-function signup_perm() {
+function signup_permission() {
   return array(
-    'sign up for content',
-    'cancel signups',
-    'cancel own signups',
-    'edit own signups',
-    'view all signups',
-    'administer all signups',
-    'administer signups for own content',
-    'email users signed up for own content',
-    'email all signed up users',
+    'sign up for content' => array(
+      'title' => t('Sign up for content'),
+    ),
+    'cancel signups' => array(
+      'title' => t('Cancel signups'),
+    ),
+    'cancel own signups' => array(
+      'title' => t('Cancel own signups'),
+    ),
+    'edit own signups' => array(
+      'title' => t('Edit own signups'),
+    ),
+    'view all signups' => array(
+      'title' => t('View all signups'),
+    ),
+    'administer all signups' => array(
+      'title' => t('Administer all signups'),
+    ),
+    'administer signups for own content' => array(
+      'title' => t('Administer signups for own content'),
+    ),
+    'email users signed up for own content' => array(
+      'title' => t('Email users signed up for own content'),
+    ),
+    'email all signed up users' => array(
+      'title' => t('Email all signed up users'),
+    ),
   );
 }
 
 /**
- * Implementation of hook_user().
+ * Implements hook_user_cancel().
  *
  * When a user is deleted, cancel all of that user's signups to remove all
  * instances of that user from the {signup_log} table, free up space in nodes
@@ -651,44 +685,49 @@ function signup_perm() {
  *
  * @ingroup signup_core
  */
-function signup_user($type, &$edit, &$user, $category = NULL) {
-  switch ($type) {
-    case 'delete':
-      $uids = array();
-      if (is_array($edit['accounts'])) {
-        // A multi-user delete from Admin > User management > Users.
-        $uids = $edit['accounts'];
-      }
-      else {
-        // A single-user delete from the edit tab on the user's profile.
-        $uids[] = $edit['_account']->uid;
-      }
-      foreach ($uids as $uid) {
-        $query = db_query("SELECT * FROM {signup_log} WHERE uid = %d", $uid);
-        while ($signup = db_fetch_object($query)) {
-          signup_cancel_signup($signup);
-        }
-      }
-      break;
+function signup_user_cancel($edit, $account, $method) {
+  $uids = array();
+  if (is_array($edit['accounts'])) {
+    // A multi-user delete from Admin > User management > Users.
+    $uids = $edit['accounts'];
+  }
+  else {
+    // A single-user delete from the edit tab on the user's profile.
+    $uids[] = $edit['_account']->uid;
   }
+  foreach ($uids as $uid) {
+    $signups = db_query("SELECT * FROM {signup_log} WHERE uid = :uid", array(':uid' => $uid));
+    // TODO: Test
+    foreach ($signups as $signup) {
+      signup_cancel_signup($signup);
+    }
+  }
+}
 
-  // If we're not using views, we need to support additional user
+/**
+ * Implement hook_user_view().
+ *
+ * @see _signup_user_view()
+ * @ingroup signup_core
+ */
+function signup_user_view($account, $view_mode) {
+  // If we're not using views, we need to support additional user view
   // operations, for example, to add the user's current signup
   // schedule to their user profile page.
   if (!module_exists('views')) {
     module_load_include('inc', 'signup', 'includes/no_views');
-    return _signup_user_no_views($type, $edit, $user, $category);
+    return _signup_user_view_no_views($account, $view_mode);
   }
 }
 
 /**
- * Implementation of hook_form_alter().
+ * Implements hook_form_alter().
  *
  * @ingroup signup_core
  */
 function signup_form_alter(&$form, &$form_state, $form_id) {
   if (!empty($form['type']['#value'])) {
-    if ($form_id == $form['type']['#value'] .'_node_form') {
+    if ($form_id == $form['type']['#value'] . '_node_form') {
       module_load_include('inc', 'signup', 'includes/node_form');
       signup_alter_node_form($form, $form_state, $form_id);
     }
@@ -703,9 +742,10 @@ function signup_form_node_type_form_alte
   $type = $form['old_type']['#value'];
   $form['signup'] = array(
     '#type' => 'fieldset',
+    '#group' => 'additional_settings',
     '#title' => t('Signup settings'),
     '#collapsible' => TRUE,
-    '#collapsed' => TRUE,
+    '#collapsed' => FALSE,
   );
   $form['signup']['signup_node_default_state'] = array(
     '#type' => 'radios',
@@ -715,7 +755,7 @@ function signup_form_node_type_form_alte
       'allowed_off' => t('Allowed (off by default)'),
       'enabled_on' => t('Enabled (on by default)'),
     ),
-    '#default_value' => variable_get('signup_node_default_state_'. $type, 'disabled'),
+    '#default_value' => variable_get('signup_node_default_state_' . $type, 'disabled'),
     '#description' => t('If %disabled is selected, signups will not be possible for this content type. If %allowed_off is selected, signups will be off by default, but users with the %admin_all_signups permission will be able to allow signups for specific posts of this content type. If %enabled_on is selected, users will be allowed to signup for this content type unless an administrator disbles signups on specific posts.', array('%disabled' => t('Disabled'), '%allowed_off' => t('Allowed (off by default)'), '%enabled_on' => t('Enabled (on by default)'), '%admin_all_signups' => t('administer all signups'))),
   );
 
@@ -729,102 +769,113 @@ function signup_form_node_type_form_alte
  */
 
 /**
- * Implementation of hook_nodeapi().
- *
- * @ingroup signup_nodeapi
+ * Implements hook_node_insert.
  */
-function signup_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
-  switch ($op) {
-    case 'insert':
-    case 'update':
-      module_load_include('inc', 'signup', 'includes/node_form');
-      signup_save_node($node, $op);
-      break;
+function signup_node_insert($node) {
+  module_load_include('inc', 'signup', 'includes/node_form');
+  signup_save_node($node, $op);
+}
 
-    case 'delete':
-        // Clean up the signup tables for the deleted node.
-        db_query("DELETE FROM {signup} WHERE nid = %d", $node->nid);
-        db_query("DELETE FROM {signup_log} WHERE nid = %d", $node->nid);
-      break;
-
-    case 'load':
-      // Check for a signup for this node.
-      // If it's a new node, load the defaults.
-      $result = db_query("SELECT * FROM {signup} WHERE nid = %d", ($node->nid ? $node->nid : 0));
-      $signup = db_fetch_object($result);
-      // Load signup data for both new nodes w/ enabled node types,
-      // and any existing nodes that are already signup enabled.
-      if ((!$node->nid && variable_get('signup_node_default_state_'. $node->type, 'disabled') == 'enabled_on') || ($node->nid && !empty($signup))) {
-        $node->signup = 1;
-        $node->signup_forwarding_email = $signup->forwarding_email;
-        $node->signup_send_confirmation = $signup->send_confirmation;
-        $node->signup_confirmation_email = $signup->confirmation_email;
-        $node->signup_send_reminder  = $signup->send_reminder ;
-        $node->signup_reminder_days_before = $signup->reminder_days_before;
-        $node->signup_reminder_email = $signup->reminder_email;
-        $node->signup_close_signup_limit = $signup->close_signup_limit;
-        $node->signup_status = $signup->status;
-        if ($node->nid) {
-          $node->signup_total = db_result(db_query("SELECT COUNT(*) FROM {signup_log} WHERE nid = %d", $node->nid));
-          $node->signup_effective_total = db_result(db_query("SELECT SUM(count_towards_limit) FROM {signup_log} WHERE nid = %d", $node->nid));
-        }
-      }
-      else {
-        $node->signup = 0;
+/**
+ * Implements hook_node_update.
+ */
+function signup_node_update($node) {
+  module_load_include('inc', 'signup', 'includes/node_form');
+  signup_save_node($node, $op);
+}
+
+/**
+ * Implements hook_node_delete.
+ */
+function signup_node_delete($node) {
+  // Clean up the signup tables for the deleted node.
+  // TODO: Test
+  db_delete('signup')->condition('nid', $node->nid)->execute();
+  db_delete('signup_log')->condition('nid', $node->nid)->execute();
+}
+
+/**
+ * Implements hook_node_load.
+ */
+function signup_node_load($nodes, $types) {
+  // Check for a signup for the given nodes.
+  // If it's a new node, load the defaults.
+  $result = db_query("SELECT * FROM {signup} WHERE nid IN (:nids)", array(':nids' => array_keys($nodes)));
+  foreach ($result as $signup) {
+    // Load signup data for both new nodes w/ enabled node types,
+    // and any existing nodes that are already signup enabled.
+    if ((empty($nodes[$signup->nid]->nid) && variable_get('signup_node_default_state_' . $nodes[$signup->nid]->type, 'disabled') == 'enabled_on') || (!empty($nodes[$signup->nid]->nid) && !empty($signup))) {
+      $nodes[$signup->nid]->signup = 1;
+      $nodes[$signup->nid]->signup_forwarding_email = $signup->forwarding_email;
+      $nodes[$signup->nid]->signup_send_confirmation = $signup->send_confirmation;
+      $nodes[$signup->nid]->signup_confirmation_email = $signup->confirmation_email;
+      $nodes[$signup->nid]->signup_send_reminder  = $signup->send_reminder;
+      $nodes[$signup->nid]->signup_reminder_days_before = $signup->reminder_days_before;
+      $nodes[$signup->nid]->signup_reminder_email = $signup->reminder_email;
+      $nodes[$signup->nid]->signup_close_signup_limit = $signup->close_signup_limit;
+      $nodes[$signup->nid]->signup_status = $signup->status;
+      if ($nodes[$signup->nid]->nid) {
+        $nodes[$signup->nid]->signup_total = db_query("SELECT COUNT(*) FROM {signup_log} WHERE nid = :nid", array(':nid' => $nodes[$signup->nid]->nid))->fetchField();
+        $nodes[$signup->nid]->signup_effective_total = db_query("SELECT SUM(count_towards_limit) FROM {signup_log} WHERE nid = :nid", array(':nid' => $nodes[$signup->nid]->nid))->fetchField();
       }
-      break;
+    }
+    else {
+      $nodes[$signup->nid]->signup = 0;
+    }
+  }
+}
 
-    case 'view':
-      // If this is a signup node, figure out what (if anything) to print.
-      // Only include any of this if we're trying to view the node as
-      // a page, not during the view from comment validation, etc.
-      if ($page && _signup_needs_output($node)) {
-        $info_location = variable_get('signup_form_location', 'node');
-        $list_location = variable_get('signup_display_signup_user_list', 'signup');
-        if ($info_location == 'node' || $list_location == 'signup' || $list_location == 'embed-view') {
-          module_load_include('inc', 'signup', 'includes/node_output');
+/**
+ * Implements hook_node_view.
+ */
+function signup_node_view($node, $view_mode = 'full') {
+  // If this is a signup node, figure out what (if anything) to print.
+  // Only include any of this if we're trying to view the node as
+  // a page, not during the view from comment validation, etc.
+  if ($view_mode == 'full' && _signup_needs_output($node)) {
+    $info_location = variable_get('signup_form_location', 'node');
+    $list_location = variable_get('signup_display_signup_user_list', 'signup');
+    if ($info_location == 'node' || $list_location == 'signup' || $list_location == 'embed-view') {
+      module_load_include('inc', 'signup', 'includes/node_output');
+    }
+    if ($info_location == 'node') {
+      $signup_info = _signup_node_output($node);
+      if (!empty($signup_info)) {
+        if (module_exists('content')) {
+          // Due to a bug in CCK (http://drupal.org/node/363456), we need
+          // to call this function twice to ensure we get the real value.
+          // The bug is present when you first enable the setting to
+          // display in the node instead of a separate tab, or when you
+          // first upgrade to the version that contains this code.
+          content_extra_field_weight($node->type, 'signup_node_info');
+          $weight = content_extra_field_weight($node->type, 'signup_node_info');
         }
-        if ($info_location == 'node') {
-          $signup_info = _signup_node_output($node);
-          if (!empty($signup_info)) {
-            if (module_exists('content')) {
-              // Due to a bug in CCK (http://drupal.org/node/363456), we need 
-              // to call this function twice to ensure we get the real value.
-              // The bug is present when you first enable the setting to
-              // display in the node instead of a separate tab, or when you
-              // first upgrade to the version that contains this code.
-              content_extra_field_weight($node->type, 'signup_node_info');
-              $weight = content_extra_field_weight($node->type, 'signup_node_info');
-            }
-            else {
-              $weight = variable_get('signup_info_node_weight_'. $node->type, 10);
-            }
-            $node->content['signup'] = array(
-              '#value' => $signup_info,
+        else {
+          $weight = variable_get('signup_info_node_weight_' . $node->type, 10);
+        }
+        $node->content['signup'] = array(
+              '#markup' => $signup_info,
               '#weight' => $weight,
             );
-          }
+      }
+    }
+    if ($list_location == 'signup' || $list_location == 'embed-view') {
+      $signup_list = signup_user_list_output($node);
+      if (!empty($signup_list)) {
+        if (module_exists('content')) {
+          // Call this twice to work-around a bug in CCK (#363456).
+          content_extra_field_weight($node->type, 'signup_node_list');
+          $weight = content_extra_field_weight($node->type, 'signup_node_list');
         }
-        if ($list_location == 'signup' || $list_location == 'embed-view') {
-          $signup_list = signup_user_list_output($node);
-          if (!empty($signup_list)) {
-            if (module_exists('content')) {
-              // Call this twice to work-around a bug in CCK (#363456).
-              content_extra_field_weight($node->type, 'signup_node_list');
-              $weight = content_extra_field_weight($node->type, 'signup_node_list');
-            }
-            else {
-              $weight = variable_get('signup_list_node_weight_'. $node->type, 11);
-            }
-            $node->content['signup_list'] = array(
-              '#value' => $signup_list,
+        else {
+          $weight = variable_get('signup_list_node_weight_' . $node->type, 11);
+        }
+        $node->content['signup_list'] = array(
+              '#markup' => $signup_list,
               '#weight' => $weight,
             );
-          }
-        }
       }
-      break;
-
+    }
   }
 }
 
@@ -839,7 +890,7 @@ function signup_nodeapi(&$node, $op, $te
  * @see signup_nodeapi()
  */
 function _signup_needs_output($node) {
-  if (!$node->signup) {
+  if (empty($node->signup)) {
     // Not signup enabled at all.
     return FALSE;
   }
@@ -852,23 +903,23 @@ function _signup_needs_output($node) {
 }
 
 /**
- * Implementation of hook_action_info().
+ * Implements hook_action_info().
  */
 function signup_action_info() {
   return array(
     'signup_cancel_action' => array(
       'type' => 'signup',
-      'description' => t('Cancel signup'),
+      'label' => t('Cancel signup'),
       'configurable' => FALSE,
     ),
     'signup_mark_attended_action' => array(
       'type' => 'signup',
-      'description' => t('Mark signup attended'),
+      'label' => t('Mark signup attended'),
       'configurable' => FALSE,
     ),
     'signup_mark_not_attended_action' => array(
       'type' => 'signup',
-      'description' => t('Mark signup did not attend'),
+      'label' => t('Mark signup did not attend'),
       'configurable' => FALSE,
     ),
   );
@@ -879,7 +930,7 @@ function signup_action_info() {
  *
  * @param $signup
  *   Reference to a fully-loaded signup object to cancel.
- * 
+ *
  * @see signup_load_signup()
  * @see signup_cancel_signup()
  */
@@ -921,7 +972,7 @@ function signup_mark_not_attended_action
 }
 
 /**
- * Implementation of hook_views_bulk_operations_object_info().
+ * Implements hook_views_bulk_operations_object_info().
  *
  * Exports information to VBO about what kinds of objects to do operations on.
  */
@@ -961,9 +1012,9 @@ function signup_object_info() {
  *
  * @return
  *   Fully loaded $signup object corresponding to the given ID.
- */ 
+ */
 function signup_load_signup($sid) {
-  $signup = db_fetch_object(db_query("SELECT sl.*, n.title, u.name, u.mail FROM {signup_log} sl INNER JOIN {node} n ON sl.nid = n.nid INNER JOIN {users} u ON sl.uid = u.uid WHERE sl.sid = %d", $sid));
+  $signup = db_query("SELECT sl.*, n.title, u.name, u.mail FROM {signup_log} sl INNER JOIN {node} n ON sl.nid = n.nid INNER JOIN {users} u ON sl.uid = u.uid WHERE sl.sid = :sid", array(':sid' => $sid))->fetchObject();
   if (!empty($signup)) {
     // This label is escaped by VBO, so it needs to be plain text, not HTML.
     $signup->label = t("!user signup for '!title'", array('!user' => $signup->name, '!title' => $signup->title));
@@ -1025,19 +1076,19 @@ function signup_save_signup(&$signup) {
  */
 function signup_get_signups($nid) {
   $signups = array();
-  $query = db_query("SELECT u.uid, u.name, u.mail, u.language, s_l.* FROM {signup_log} s_l INNER JOIN {users} u ON u.uid = s_l.uid WHERE s_l.nid = %d", $nid);
-  while ($signup = db_fetch_object($query)) {
+  $result = db_query("SELECT u.uid, u.name, u.mail, u.language, s_l.* FROM {signup_log} s_l INNER JOIN {users} u ON u.uid = s_l.uid WHERE s_l.nid = :nid", array(':nid' => $nid));
+  foreach ($result as $signup) {
     $signups[] = $signup;
   }
   return $signups;
 }
 
 /**
- * Implementation of hook_content_extra_fields().
+ * Implements hook_content_extra_fields().
  */
 function signup_content_extra_fields($type_name) {
   $extra = array();
-  if (variable_get('signup_node_default_state_'. $type_name, 'disabled') != 'disabled') {
+  if (variable_get('signup_node_default_state_' . $type_name, 'disabled') != 'disabled') {
     if (variable_get('signup_form_location', 'node') == 'node') {
       $extra['signup_node_info'] = array(
         'label' => t('Signup information'),
@@ -1071,8 +1122,8 @@ function signup_content_extra_fields($ty
 function signup_cancel_signup($signup, $notify_user = TRUE) {
   // If we only have a numeric sid argument, load the full signup object.
   if (is_numeric($signup)) {
-    $query = db_query('SELECT * FROM {signup_log} WHERE sid = %d', $signup);
-    $signup = db_fetch_object($query);
+    $query = db_query('SELECT * FROM {signup_log} WHERE sid = :sid', array(':sid' => $signup));
+    $signup = $query->fetchObject();
   }
 
   $node = node_load($signup->nid);
@@ -1088,7 +1139,10 @@ function signup_cancel_signup($signup, $
   module_invoke_all('signup_cancel', $signup, $node);
 
   // Delete the record from the {signup_log} table.
-  db_query('DELETE FROM {signup_log} WHERE sid = %d', $signup->sid);
+  db_delete('signup_log')
+    ->condition('sid', $signup->sid)
+    ->execute();
+  //db_query('DELETE FROM {signup_log} WHERE sid = %d', $signup->sid);
   if ($notify_user) {
     drupal_set_message(t('Signup to !title cancelled.', array('!title' => l($node->title, "node/$node->nid"))));
   }
@@ -1120,14 +1174,14 @@ function signup_valid_token($token, $sid
  * @ingroup signup_callback
  */
 function signup_close_signup($nid, $cron = 'no') {
-  db_query("UPDATE {signup} SET status = 0 WHERE nid = %d", $nid);
+  db_query("UPDATE {signup} SET status = 0 WHERE nid = :nid", array(':nid' => $nid));
   if ($cron == 'no') {
     $node = node_load($nid);
     foreach (module_implements('signup_close') as $module) {
-      $function = $module .'_signup_close';
+      $function = $module . '_signup_close';
       $function($node);
     }
-    watchdog('signup', 'Signups closed for %title.', array('%title' => $node->title), WATCHDOG_NOTICE, l(t('view'), 'node/'. $nid));
+    watchdog('signup', 'Signups closed for %title.', array('%title' => $node->title), WATCHDOG_NOTICE, l(t('view'), 'node/' . $nid));
   }
 }
 
@@ -1136,14 +1190,14 @@ function signup_close_signup($nid, $cron
  * @ingroup signup_callback
  */
 function signup_open_signup($nid, $cron = 'no') {
-  db_query("UPDATE {signup} SET status = 1 WHERE nid = %d", $nid);
+  db_query("UPDATE {signup} SET status = 1 WHERE nid = :nid", array(':nid' => $nid));
   if ($cron == 'no') {
     $node = node_load($nid);
     foreach (module_implements('signup_open') as $module) {
-      $function = $module .'_signup_open';
+      $function = $module . '_signup_open';
       $function($node);
     }
-    watchdog('signup', 'Signups reopened for %title.', array('%title' => $node->title), WATCHDOG_NOTICE, l(t('view'), 'node/'. $nid));
+    watchdog('signup', 'Signups reopened for %title.', array('%title' => $node->title), WATCHDOG_NOTICE, l(t('view'), 'node/' . $nid));
   }
 }
 
@@ -1152,8 +1206,8 @@ function signup_open_signup($nid, $cron 
  */
 function signup_content_types() {
   $signup_content_types = array();
-  foreach (node_get_types('names') as $content_type => $content_name) {
-    if (variable_get('signup_node_default_state_'. $content_type, 'disabled') != 'disabled') {
+  foreach (node_type_get_names() as $content_type => $content_name) {
+    if (variable_get('signup_node_default_state_' . $content_type, 'disabled') != 'disabled') {
       $signup_content_types[] = $content_type;
     }
   }
@@ -1203,8 +1257,8 @@ function signup_sign_up_user($signup_for
     // Ensure the uid is 0 for anonymous signups, even if it's not duplicate.
     $signup_form['uid'] = 0;
     // Now, see if this email is already signed-up.
-    if (db_result(db_query("SELECT COUNT(*) FROM {signup_log} WHERE anon_mail = '%s' AND nid = %d", $signup_anon_mail, $node->nid))) {
-      drupal_set_message(t('Anonymous user %email is already signed up for %title', array('%email' => $signup_anon_mail, '%title' => $node->title), 'error'));
+    if (db_query("SELECT COUNT(*) FROM {signup_log} WHERE anon_mail = :mail AND nid = :nid", array(':mail' => $signup_anon_mail, ':nid' => $node->nid))->fetchField()) {
+      drupal_set_message(t('Anonymous user %email is already signed up for %title', array('%email' => $signup_anon_mail, '%title' => $node->title), array('langcode' => 'error')));
       return FALSE;
     }
   }
@@ -1212,20 +1266,20 @@ function signup_sign_up_user($signup_for
     // This query does the JOIN on {users} so we can avoid a full
     // user_load() just so theme('username') can have the data it
     // needs for the error message we might print out.
-    $result = db_query("SELECT sl.uid, u.name FROM {signup_log} sl INNER JOIN {users} u ON sl.uid = u.uid WHERE sl.uid = %d AND sl.nid = %d", $signup_form['uid'], $signup_form['nid']);
-    $account = db_fetch_object($result);
+    $result = db_query("SELECT sl.uid, u.name FROM {signup_log} sl INNER JOIN {users} u ON sl.uid = u.uid WHERE sl.uid = :uid AND sl.nid = :nid", array(':uid' => $signup_form['uid'], ':nid' => $signup_form['nid']));
+    $account = $result->fetchObject();
     if (!empty($account)) {
-      drupal_set_message(t('User !user is already signed up for %title', array('!user' => theme('username', $account), '%title' => $node->title)), 'error');
+      drupal_set_message(t('User !user is already signed up for %title', array('!user' => theme('username', array('account' => $account)), '%title' => $node->title)), 'error');
       return FALSE;
     }
   }
 
   // If we made it this far, we're going to need the full user object.
-  $account = user_load(array('uid' => $signup_form['uid']));
+  $account = user_load($signup_form['uid']);
 
   if ($node->signup_status) {
     // Grab the current time once, since we need it in a few places.
-    $current_time = time();
+    $current_time = REQUEST_TIME;
 
     // Allow other modules to inject data into the user's signup data.
     $extra = module_invoke_all('signup_sign_up', $node, $account);
@@ -1239,8 +1293,8 @@ function signup_sign_up_user($signup_for
 
     // Figure out if confirmation or reminder emails will be sent and
     // inform the user.
-    $confirmation_email = $node->signup_send_confirmation ? '  '. t('A confirmation email will be sent shortly containing further information about this %node_type.', array('%node_type' => node_get_types('name', $node->type))) : '';
-    $reminder_email = $node->signup_send_reminder ? '  '. t('A reminder email will be sent !number !days before the %node_type.', array('!number' => $node->signup_reminder_days_before, '!days' => format_plural($node->signup_reminder_days_before, 'day', 'days'), '%node_type' => node_get_types('name', $node->type))) : '';
+    $confirmation_email = $node->signup_send_confirmation ? '  ' . t('A confirmation email will be sent shortly containing further information about this %node_type.', array('%node_type' => node_type_get_name($node->type))) : '';
+    $reminder_email = $node->signup_send_reminder ? '  ' . t('A reminder email will be sent !number !days before the %node_type.', array('!number' => $node->signup_reminder_days_before, '!days' => format_plural($node->signup_reminder_days_before, 'day', 'days'), '%node_type' => node_type_get_name($node->type))) : '';
 
     // Construct the appropriate $signup object representing this signup.
     $signup = new stdClass;
@@ -1294,7 +1348,7 @@ function signup_sign_up_user($signup_for
 
 /**
  * Send the signup comfirmation e-mail to a user who signs up for something.
- * 
+ *
  * Note: Each signup-enabled node can be configured to send confirmation
  * e-mails or not, along with the body of the confirmation message to use.
  * If callers wish to honor this configuration, they must test
@@ -1304,12 +1358,12 @@ function signup_sign_up_user($signup_for
  *   The fully-loaded signup object representing the user's signup.
  * @param $node
  *   The fully-loaded node object which the user signed up to.
- *   
+ *
  * @return
  *   The return value from drupal_mail() if the mail is sent, or FALSE if the
  *   confirmation was aborted for some reason (node not configured to send it,
  *   user doesn't have a valid e-mail address, etc).
- *  
+ *
  * @see signup_sign_up_user()
  * @see drupal_mail()
  */
@@ -1318,7 +1372,7 @@ function signup_send_confirmation_mail($
   if (empty($user_mail)) {
     return FALSE;
   }
-  $node_type_name = node_get_types('name', $node->type);
+  $node_type_name = node_type_get_name($node->type);
   $params = array(
     'subject' => t('Signup confirmation for !node_type: !title', array('!node_type' => $node_type_name, '!title' => $node->title)),
     'body' => $node->signup_confirmation_email,
@@ -1329,7 +1383,7 @@ function signup_send_confirmation_mail($
     $params['body'] = token_replace_multiple($params['body'], array('node' => $node, 'signup' => $signup, 'global' => NULL));
   }
   $language = user_preferred_language($signup);
-  return  drupal_mail('signup', 'signup_confirmation_mail', $user_mail, $language, $params);
+  return drupal_mail('signup', 'signup_confirmation_mail', $user_mail, $language, $params);
 }
 
 /**
@@ -1358,29 +1412,29 @@ function signup_send_forwarding_mail($si
   }
   $message = t('The following information was submitted as a signup for !title', array('!title' => $node->title));
   if (_signup_get_node_scheduler($node) != 'none') {
-    $message .= "\n\r". t('Date/Time: !time', array('!time' => signup_format_date($node)));
+    $message .= "\n\r" . t('Date/Time: !time', array('!time' => signup_format_date($node)));
   }
 
-  $message .= "\n\r\n\r". t('Username: !name', array('!name' => empty($signup->uid) ? variable_get('anonymous', t('Anonymous')) : $signup->name));
+  $message .= "\n\r\n\r" . t('Username: !name', array('!name' => empty($signup->uid) ? variable_get('anonymous', t('Anonymous')) : $signup->name));
   if (!empty($signup->uid)) {
     // For authenticated users, just include a link to their profile page.
-    $message .= "\n\r". t('Profile page: !url', array('!url' => url('user/'. $signup->uid, array('absolute' => TRUE))));
+    $message .= "\n\r" . t('Profile page: !url', array('!url' => url('user/' . $signup->uid, array('absolute' => TRUE))));
   }
   else {
     // For anonymous users, their email is all we've got, so disclose it.
-    $message .= "\n\r". t('E-mail: !email', array('!email' => $user_mail));
+    $message .= "\n\r" . t('E-mail: !email', array('!email' => $user_mail));
   }
   if (!empty($signup->form_data)) {
-    $message .= "\n\r\n\r". theme('signup_email_token_custom_data', $signup->form_data);
+    $message .= "\n\r\n\r" . theme('signup_email_token_custom_data', array('signup_data' => $signup->form_data));
   }
-  $node_type_name = node_get_types('name', $node->type);
+  $node_type_name = node_type_get_name($node->type);
   $from = variable_get('site_mail', ini_get('sendmail_from'));
   $params = array(
     'subject' => t('Signup confirmation for !node_type: !title', array('!node_type' => $node_type_name, '!title' => $node->title)),
     'body' => $message,
     'node' => $node,
     'signup' => $signup,
-    'header' => array('From' => t('New !node_type Signup', array('!node_type' => $node_type_name)) ."<$from>"),
+    'header' => array('From' => t('New !node_type Signup', array('!node_type' => $node_type_name)) . "<$from>"),
   );
   if (module_exists('token')) {
     $params['body'] = token_replace_multiple($params['body'], array('node' => $node, 'signup' => $signup, 'global' => NULL));
@@ -1469,23 +1523,23 @@ function signup_id_safe($string) {
   // If the first character is not a-z, add 'id' in front.
   // Don't use ctype_alpha since it's locale aware.
   if (!ctype_lower($string{0})) {
-    $string = 'id'. $string;
+    $string = 'id' . $string;
   }
   return $string;
 }
 
 /**
- * Implementation of hook_views_api().
+ * Implements hook_views_api().
  */
 function signup_views_api() {
   return array(
     'api' => 2.0,
-    'path' => drupal_get_path('module', 'signup') .'/views',
+    'path' => drupal_get_path('module', 'signup') . '/views',
   );
 }
 
 /**
- * Implementation of hook_mail().
+ * Implements hook_mail().
  *
  * Constructs all of the email messages generated by the signup module.
  *
@@ -1538,7 +1592,7 @@ function _signup_get_email_tokens($node,
   // Tokens about the node itself are easy and don't require any logic.
   $tokens = array(
     '%node_title' => $node->title,
-    '%node_url' => url('node/'. $node->nid, array('absolute' => TRUE)),
+    '%node_url' => url('node/' . $node->nid, array('absolute' => TRUE)),
     '%node_start_time' => signup_format_date($node),
   );
 
@@ -1555,7 +1609,7 @@ function _signup_get_email_tokens($node,
     else {
       $signup_data = unserialize($signup->form_data);
     }
-    $tokens['%user_signup_info'] = theme('signup_email_token_custom_data', $signup_data);
+    $tokens['%user_signup_info'] = theme('signup_email_token_custom_data', array('signup_data' => $signup_data));
   }
   else {
     $tokens['%user_signup_info'] = '';
@@ -1606,10 +1660,10 @@ function _signup_get_username($signup, $
   }
   // Determine if this is an anon signup or not, and get the right info.
   if (!empty($signup->anon_mail)) {
-    $user_name = theme('signup_anonymous_username', $signup_data, $signup->anon_mail);
+    $user_name = theme('signup_anonymous_username', array('form_data' => $signup_data, 'email' => $signup->anon_mail));
   }
   elseif ($link) {
-    $user_name = theme('username', $signup);
+    $user_name = theme('username', array('account' => $signup));
   }
   else {
     $user_name = $signup->name;
@@ -1626,7 +1680,7 @@ function _signup_get_cancel_link($sid) {
 }
 
 /**
- * Implementation of hook_panels_include_directory().
+ * Implements hook_panels_include_directory().
  *
  * @param $plugin_type
  *   The plugin type for which the Panels engine is currently requesting the
@@ -1638,7 +1692,7 @@ function _signup_get_cancel_link($sid) {
  */
 function signup_panels_include_directory($plugin_type) {
   if ($plugin_type == 'content_types') {
-    return 'panels/'. $plugin_type;
+    return 'panels/' . $plugin_type;
   }
 }
 
@@ -1684,7 +1738,7 @@ function signup_view_user_list_access($v
 }
 
 /**
- * Implement hook_token_list() (from token.module)
+ * Implements hook_token_list() (from token.module)().
  */
 function signup_token_list($type) {
   $tokens = array();
@@ -1713,7 +1767,7 @@ function signup_token_list($type) {
 }
 
 /**
- * Implement hook_token_values() (from token.module)
+ * Implements hook_token_values() (from token.module)().
  */
 function signup_token_values($type = 'all', $object = NULL) {
   $values = array();
@@ -1726,7 +1780,7 @@ function signup_token_values($type = 'al
     else {
       $values['node-signup-enabled'] = t('enabled');
       $values['node-signup-status'] = $object->signup_status ? t('open') : t('closed');
-      $values['node-signup-limit'] = (int)$object->signup_close_signup_limit;
+      $values['node-signup-limit'] = (int) $object->signup_close_signup_limit;
     }
   }
   elseif ($type == 'signup') {
@@ -1739,12 +1793,11 @@ function signup_token_values($type = 'al
         $signup_data = unserialize($object->form_data);
       }
     }
-    $values['signup-user-data'] = theme('signup_custom_data', $signup_data);
-    $values['signup-user-data-raw'] = theme('signup_email_token_custom_data', $signup_data);
-    $values['signup-date-short'] = format_date($object->signup_time, 'small');
+    $values['signup-user-data'] = theme('signup_custom_data', array('data' => $signup_data));
+    $values['signup-user-data-raw'] = theme('signup_email_token_custom_data', array('signup_data' => $signup_data));
+    $values['signup-date-short'] = format_date($object->signup_time, 'short');
     $values['signup-date-medium'] = format_date($object->signup_time, 'medium');
-    $values['signup-date-long'] = format_date($object->signup_time, 'large');
-'';
+    $values['signup-date-long'] = format_date($object->signup_time, 'long');
     $values['signup-cancel-url'] = _signup_get_cancel_link($object->sid);
     if (!empty($object->anon_mail)) {
       $values['signup-email'] = $object->anon_mail;
@@ -1757,8 +1810,21 @@ function signup_token_values($type = 'al
     }
     $values['signup-anonymous-email'] = !empty($object->anon_mail) ? $object->anon_mail : '';
     $attended = isset($signup->attended) ? $signup->attended : NULL;
-    $values['signup-attendence'] = check_plain(theme('signup_attended_text', $attended));
+    $values['signup-attendence'] = check_plain(theme('signup_attended_text', array('attended' => $attended)));
     $values['signup-id'] = $object->sid;
   }
   return $values;
 }
+
+/**
+ * Implements hook_admin_paths().
+ */
+function signup_admin_paths() {
+  $paths = array(
+    'signup/cancel/*' => TRUE,
+    'signup/edit/*' => TRUE,
+    'node/*/signups' => TRUE,
+    'node/*/signups/*' => TRUE,
+  );
+  return $paths;
+}
Index: includes/admin.settings.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/admin.settings.inc,v
retrieving revision 1.7
diff -u -p -r1.7 admin.settings.inc
--- includes/admin.settings.inc	24 Jan 2009 08:52:39 -0000	1.7
+++ includes/admin.settings.inc	1 Jun 2010 17:45:53 -0000
@@ -4,11 +4,11 @@
 
 /**
  * @file
- * Code required for the signup settings page (admin/settings/signup).
+ * Code required for the signup settings page (admin/config/people/signup).
  */
 
 /**
- * Form builder for the settings page under admin/setttings/signup
+ * Form builder for the settings page under admin/config/people/signup
  */
 function signup_settings_form() {
   module_load_include('inc', 'signup', 'includes/node_settings');
@@ -20,7 +20,7 @@ function signup_settings_form() {
       '#size' => 5, '#maxlength' => 10,
       '#description' => t('The number of hours before the event which signups will no longer be allowed. Use negative numbers to close signups after the event start (example: -12).'),
     );
-  };
+  }
   $form['node_defaults'] = array(
     '#type' => 'fieldset',
     '#title' => t('Default signup information'),
@@ -44,7 +44,7 @@ function signup_settings_form() {
       'large' => t('Large'),
     ),
     '#default_value' => variable_get('signup_date_format', 'small'),
-    '#description' => t('Whenever this module needs to print a date (both in the administrative interface, and in the various e-mail messages it can send), this setting controls which date format string to use. The format strings are defined at the <a href="!settings_url">Date and time settings page</a>.', array('!settings_url' => url('admin/settings/date-time'))),
+    '#description' => t('Whenever this module needs to print a date (both in the administrative interface, and in the various e-mail messages it can send), this setting controls which date format string to use. The format strings are defined at the <a href="!settings_url">Date and time settings page</a>.', array('!settings_url' => url('admin/config/date-time'))),
   );
   if (!module_exists('views')) {
     $form['adv_settings']['signup_no_views_user_info'] = array(
@@ -73,7 +73,7 @@ function signup_settings_form() {
   // form is being displayed.  We use jQuery to hide settings when they're not
   // relevant.
   $signup_path = drupal_get_path('module', 'signup');
-  drupal_add_js($signup_path .'/js/admin.settings.js');
+  drupal_add_js($signup_path . '/js/admin.settings.js');
 
   // For each setting that should be hidden, system.css will hide all the
   // settings on page load if JS is enabled.
@@ -87,7 +87,7 @@ function signup_settings_form() {
     '#options' => array(1 => t('Collapsed'), 0 => t('Expanded')),
     '#default_value' => variable_get('signup_fieldset_collapsed', 1),
     '#description' => t('If the signup form is included on each node, the signup form will be encapsulated in a collapsible fieldset. This setting controls if that fieldset is expanded or collapsed by default.'),
-    '#prefix' => '<div class="'. $class .'">',
+    '#prefix' => '<div class="' . $class . '">',
     '#suffix' => '</div>',
   );
 
@@ -140,7 +140,7 @@ function signup_settings_form() {
       $class .= ' js-hide';
     }
     $form['adv_settings']['view_settings'] = array(
-      '#prefix' => '<div class="'. $class .'">',
+      '#prefix' => '<div class="' . $class . '">',
       '#suffix' => '</div>',
       '#weight' => 2,
     );
@@ -149,8 +149,8 @@ function signup_settings_form() {
     foreach ($views as $view) {
       foreach (array_keys($view->display) as $display_id) {
         if ($display_id != 'default' || 1) {
-          $key = $view->name .':'. $display_id;
-          $view_options[$key] = theme('signup_settings_view_label', $view, $display_id);
+          $key = $view->name . ':' . $display_id;
+          $view_options[$key] = theme('signup_settings_view_label', array('view' => $view, '' => $display_id));
         }
       }
     }
@@ -167,7 +167,7 @@ function signup_settings_form() {
       $class .= ' js-hide';
     }
     $form['adv_settings']['admin_view_settings'] = array(
-      '#prefix' => '<div class="'. $class .'">',
+      '#prefix' => '<div class="' . $class . '">',
       '#suffix' => '</div>',
       '#weight' => 6,
     );
@@ -198,7 +198,20 @@ function signup_settings_form() {
  */
 function signup_settings_form_submit($form, &$form_state) {
   $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
-  if ($op == t('Save configuration') && db_result(db_query('SELECT COUNT(*) FROM {signup} WHERE nid = 0'))) {
+  if ($op == t('Save configuration') && db_query('SELECT COUNT(*) FROM {signup} WHERE nid = 0')->fetchField()) {
+    db_update('signup')
+      ->fields(array(
+          'forwarding_email' => $form_state['values']['signup_forwarding_email'],
+          'send_confirmation' => $form_state['values']['signup_send_confirmation'],
+          'confirmation_email' => $form_state['values']['signup_confirmation_email'],
+          'close_signup_limit' => $form_state['values']['signup_close_signup_limit'],
+          'reminder_days_before' => isset($form_state['values']['signup_reminder_days_before']) ? $form_state['values']['signup_reminder_days_before'] : 0,
+          'send_reminder' => isset($form_state['values']['signup_send_reminder']) ? $form_state['values']['signup_send_reminder'] : 0,
+          'reminder_email' => isset($form_state['values']['signup_reminder_email']) ? $form_state['values']['signup_reminder_email'] : '',
+        ))
+      ->condition('nid', 0)
+      ->execute();
+      /*
     $values = array(
       $form_state['values']['signup_forwarding_email'],
       $form_state['values']['signup_send_confirmation'],
@@ -208,12 +221,16 @@ function signup_settings_form_submit($fo
     $values[] = isset($form_state['values']['signup_send_reminder']) ? $form_state['values']['signup_send_reminder'] : 0;
     $values[] = isset($form_state['values']['signup_reminder_days_before']) ? $form_state['values']['signup_reminder_days_before'] : 0;
     $values[] = isset($form_state['values']['signup_reminder_email']) ? $form_state['values']['signup_reminder_email'] : '';
-    $values[] = 0;  // "nid" of the row in {signup} for the global settings.
+    $values[] = 0; // "nid" of the row in {signup} for the global settings.
     db_query("UPDATE {signup} SET forwarding_email = '%s', send_confirmation = %d, confirmation_email = '%s', close_signup_limit = %d, send_reminder = %d, reminder_days_before = %d, reminder_email = '%s' WHERE nid = %d", $values);
+       *
+       */
   }
   else {
     module_load_include('install', 'signup', 'signup');
-    db_query("DELETE FROM {signup} WHERE nid = 0");
+    db_delete('signup')
+      ->condition('nid', 0)
+      ->execute();
     signup_insert_default_signup_info();
   }
 
@@ -259,10 +276,10 @@ function signup_settings_form_submit($fo
 function theme_signup_settings_view_label($view, $display_id) {
   $display_title = check_plain($view->display[$display_id]->display_title);
   $label = $view->name;
-  $label .= ' ['. $display_title .']: ';
+  $label .= ' [' . $display_title . ']: ';
   $label .= $view->description;
   if (drupal_strlen($label) > 90) {
-    $label = drupal_substr($label, 0, 90) .'...';
+    $label = drupal_substr($label, 0, 90) . '...';
   }
   return $label;
 }
Index: includes/admin.signup_administration.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/admin.signup_administration.inc,v
retrieving revision 1.3
diff -u -p -r1.3 admin.signup_administration.inc
--- includes/admin.signup_administration.inc	21 Sep 2009 05:23:02 -0000	1.3
+++ includes/admin.signup_administration.inc	1 Jun 2010 17:45:53 -0000
@@ -11,16 +11,22 @@
  * Print the admin signup overview page located at admin/content/signup.
  */
 function signup_admin_page() {
-  drupal_add_css(drupal_get_path('module', 'signup') .'/signup.css');
   $filter_status_form = drupal_get_form('signup_filter_status_form');
   $signup_admin_form = drupal_get_form('signup_admin_form');
-  return theme('signup_admin_page', $filter_status_form, $signup_admin_form);
+  return array(
+    '#theme' => 'signup_admin_page',
+    '#attached' => array(
+      'css' => drupal_get_path('module', 'signup') . '/signup.css',
+    ),
+    '#filter_status_form' => $filter_status_form,
+    '#signup_admin_form' => $signup_admin_form,
+  );
 }
 
 /**
  * Form builder for the signup status filter on the signup administration page.
  */
-function signup_filter_status_form(&$form_state) {
+function signup_filter_status_form($form, &$form_state) {
   $options = array(
     'all' => t('All'),
     'open' => t('Open'),
@@ -36,7 +42,7 @@ function signup_filter_status_form(&$for
     '#default_value' => $_SESSION['signup_status_filter'],
   );
   $form['submit'] = array('#type' => 'submit', '#value' => t('Filter'));
-//  $form['#redirect'] = FALSE;
+  //  $form['#redirect'] = FALSE;
   return $form;
 }
 
@@ -50,7 +56,7 @@ function signup_filter_status_form_submi
 /**
  * Form builder for the main form on the signup administration page.
  */
-function signup_admin_form($form_state) {
+function signup_admin_form($form, $form_state) {
   // Figure out if the current user has permission to use signup broadcast.
   $access_broadcast = user_access('email all signed up users');
 
@@ -71,12 +77,13 @@ function signup_admin_form($form_state) 
 
   $form['header']['#value'] = $header;
 
-  $sql .= tablesort_sql($header);
+  // TODO: Add this back using correct D7 methods.
+  // $sql .= tablesort_sql($header);
 
   $result = pager_query($sql, 25, 0, $sql_count);
 
   // Loop through the signup nodes, and generate our form elements
-  while ($signup_node = db_fetch_object($result)) {
+  foreach ($result as $signup_node) {
     $row = array();
     if (!empty($start_column)) {
       $row['start'] = signup_admin_form_extra($signup_node);
@@ -88,14 +95,12 @@ function signup_admin_form($form_state) 
     module_load_include('inc', 'signup', 'includes/node_admin_summary');
     $node_admin_form = signup_node_admin_summary_form(array(), $signup_node);
     $row['title'] = array(
-      '#type' => 'markup',
-      '#value' => l($signup_node->title, "node/$signup_node->nid"),
+      '#markup' => l($signup_node->title, "node/$signup_node->nid"),
     );
     $row['status'] = $node_admin_form['status'];
     unset($row['status']['#title']);
     $row['total'] = array(
-      '#type' => 'markup',
-      '#value' => $signup_node->signup_total,
+      '#markup' => $signup_node->signup_total,
     );
     $row['limit'] = $node_admin_form['limit'];
     unset($row['limit']['#title']);
@@ -103,11 +108,10 @@ function signup_admin_form($form_state) 
     if ($access_broadcast) {
       $op_links .= '<br />';
       $options['attributes']['title'] = t('Send an email message to all users who signed up.');
-      $op_links .= l(t('Signup broadcast'), "node/$signup_node->nid/signups/broadcast", $options);
+      $op_links .= l(t('Signup broadcast'), "node/$signup_node->nid/signups/admin/broadcast", $options);
     }
     $row['operations'] = array(
-      '#type' => 'markup',
-      '#value' => $op_links,
+      '#markup' => $op_links,
     );
     $form['nids'][$signup_node->nid] = $row;
   }
@@ -135,8 +139,7 @@ function signup_admin_form_header() {
 
 function signup_admin_form_extra($signup_node) {
   return array(
-    '#type' => 'markup',
-    '#value' => signup_format_date($signup_node),
+    '#markup' => signup_format_date($signup_node),
   );
 }
 
@@ -187,10 +190,12 @@ function signup_admin_form_sql() {
   $all_fragments = array_merge_recursive($admin_common_sql, $admin_sql);
   $sql_count = "SELECT COUNT(s.nid) FROM {signup} s";
   if (!empty($all_fragments['where'])) {
-    $sql_count .= ' WHERE '. implode(' AND ', $all_fragments['where']);
+    $sql_count .= ' WHERE ' . implode(' AND ', $all_fragments['where']);
   }
 
-  return array(db_rewrite_sql($sql), db_rewrite_sql($sql_count, 's'));
+  // TODO: This should be a dynamic query tagged 'node_access'.
+  return array($sql, $sql_count);
+  // return array(db_rewrite_sql($sql), db_rewrite_sql($sql_count, 's'));
 }
 
 function signup_admin_form_submit($form, &$form_state) {
Index: includes/broadcast.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/broadcast.inc,v
retrieving revision 1.4
diff -u -p -r1.4 broadcast.inc
--- includes/broadcast.inc	14 Aug 2009 23:26:00 -0000	1.4
+++ includes/broadcast.inc	1 Jun 2010 17:45:53 -0000
@@ -13,11 +13,13 @@
  * @param $node
  *   The node that the broadcast form is being attached to.
  */
-function signup_broadcast_form($form_state, $node) {
+function signup_broadcast_form($form, $form_state, $node) {
+  drupal_set_title(t('Broadcast signups for %title', array('%title' => $node->title)), PASS_THROUGH);
+
   $signups = signup_get_signups($node->nid);
   if (empty($signups)) {
     $form['no_users'] = array(
-      '#value' => t('No users have signup up for this %node_type.', array('%node_type' => node_get_types('name', $node->type))),
+      '#markup' => t('No users have signup up for this %node_type.', array('%node_type' => node_type_get_name($node->type))),
     );
     return $form;
   }
@@ -42,7 +44,7 @@ function signup_broadcast_form($form_sta
     '#type' => 'textarea',
     '#title' => t('Message body'),
     '#required' => TRUE,
-    '#description' => t('Body of the email message you wish to send to all users who have signed up for this %node_type. !token_description', array('%node_type' => node_get_types('name', $node->type), '!token_description' => $token_text)),
+    '#description' => t('Body of the email message you wish to send to all users who have signed up for this %node_type. !token_description', array('%node_type' => node_type_get_name($node->type), '!token_description' => $token_text)),
     '#rows' => 10,
   );
 
@@ -77,7 +79,7 @@ function signup_broadcast_form($form_sta
   }
   else {
     $form['from'] = array(
-      '#value' => t('This message will be sent from: %from', array('%from' => $user->mail)),
+      '#markup' => t('This message will be sent from: %from', array('%from' => $user->mail)),
       '#pre' => '<strong>',
       '#post' => '</strong>',
     );
@@ -157,7 +159,7 @@ function signup_send_broadcast($nid, $su
       }
       $language = user_preferred_language($signup);
       drupal_mail('signup', 'signup_broadcast_mail', $user_mail, $language, $params, $from);
-      watchdog('signup', 'Broadcast email for %title sent to %email.', array('%title' => $node->title, '%email' => $user_mail), WATCHDOG_NOTICE, l(t('view'), 'node/'. $node->nid));
+      watchdog('signup', 'Broadcast email for %title sent to %email.', array('%title' => $node->title, '%email' => $user_mail), WATCHDOG_NOTICE, l(t('view'), 'node/' . $node->nid));
     }
     if ($copy) {
       $sender_email = _signup_get_email($user);
@@ -167,7 +169,7 @@ function signup_send_broadcast($nid, $su
         // If the token.module is enabled, also handle any tokens it provides.
         $message = token_replace_multiple($message, array('node' => $node, 'signup' => $signup, 'global' => NULL));
       }
-      $final_text = theme('signup_broadcast_sender_copy', $body, $message);
+      $final_text = theme('signup_broadcast_sender_copy', array('raw_message' => $body, 'cooked_message' => $message));
       $params = array(
         'subject' => $subject,
         'body' => $final_text,
@@ -175,7 +177,7 @@ function signup_send_broadcast($nid, $su
       );
       $language = user_preferred_language($user);
       drupal_mail('signup', 'signup_broadcast_mail', $sender_email, $language, $params, $from);
-      watchdog('signup', 'Broadcast email copy for %title sent to %email.', array('%title' => $node->title, '%email' => $sender_email), WATCHDOG_NOTICE, l(t('view'), 'node/'. $node->nid));
+      watchdog('signup', 'Broadcast email copy for %title sent to %email.', array('%title' => $node->title, '%email' => $sender_email), WATCHDOG_NOTICE, l(t('view'), 'node/' . $node->nid));
       drupal_set_message(t('Sent a copy of this message to %email', array('%email' => $sender_email)));
     }
   }
Index: includes/cron.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/cron.inc,v
retrieving revision 1.3
diff -u -p -r1.3 cron.inc
--- includes/cron.inc	14 Aug 2009 23:26:00 -0000	1.3
+++ includes/cron.inc	1 Jun 2010 17:45:53 -0000
@@ -47,13 +47,13 @@ function _signup_cron_send_reminders() {
 
     // Grab each node, construct the email header and subject, and query
     // the signup log to pull all users who are signed up for this node.
-    while ($node = db_fetch_object($result)) {
-      $subject = t('!node_type reminder: !title', array('!node_type' => node_get_types('name', $type), '!title' => $node->title));
+    foreach ($result as $node) {
+      $subject = t('!node_type reminder: !title', array('!node_type' => node_type_get_name($type), '!title' => $node->title));
       $signups = db_query("SELECT u.name, u.mail, s_l.sid, s_l.anon_mail, s_l.form_data FROM {signup_log} s_l INNER JOIN {users} u ON u.uid = s_l.uid WHERE s_l.nid = %d", $node->nid);
 
       // Loop through the users, composing their customized message
       // and sending the email.
-      while ($signup = db_fetch_object($signups)) {
+      foreach ($signups as $signup) {
         $user_mail = _signup_get_email($signup);
         $params = array(
           'subject' => $subject,
@@ -66,7 +66,7 @@ function _signup_cron_send_reminders() {
         }
         $language = user_preferred_language($signup);
         drupal_mail('signup', 'signup_reminder_mail', $user_mail, $language, $params, $from);
-        watchdog('signup', 'Reminder for %title sent to %user_mail.', array('%title' => $node->title, '%user_mail' => $user_mail), WATCHDOG_NOTICE, l(t('view'), 'node/'. $node->nid));
+        watchdog('signup', 'Reminder for %title sent to %user_mail.', array('%title' => $node->title, '%user_mail' => $user_mail), WATCHDOG_NOTICE, l(t('view'), 'node/' . $node->nid));
       }
 
       // Reminders for this node are all sent, so mark it in the
@@ -113,14 +113,14 @@ function _signup_cron_autoclose() {
     $result = db_query($sql, $type);
 
     // Loop through the results, calling the signup closing function.
-    while ($signup = db_fetch_object($result)) {
+    foreach ($result as $signup) {
       signup_close_signup($signup->nid, $cron = 'yes');
       $node = node_load($signup->nid);
       foreach (module_implements('signup_close') as $module) {
-        $function = $module .'_signup_close';
+        $function = $module . '_signup_close';
         $function($node);
       }
-      watchdog('signup', 'Signups closed for %title by cron.', array('%title' => $node->title), WATCHDOG_NOTICE, l(t('view'), 'node/'. $node->nid));
+      watchdog('signup', 'Signups closed for %title by cron.', array('%title' => $node->title), WATCHDOG_NOTICE, l(t('view'), 'node/' . $node->nid));
     }
   }
 }
Index: includes/date.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/date.inc,v
retrieving revision 1.19
diff -u -p -r1.19 date.inc
--- includes/date.inc	4 Mar 2009 19:19:31 -0000	1.19
+++ includes/date.inc	1 Jun 2010 17:45:54 -0000
@@ -22,13 +22,13 @@ function _signup_date_admin_sql($content
   $alias = db_escape_table($content_type);
 
   // See what fields to SELECT.
-  $fields[] = $alias .'.'. $field['database']['columns']['value']['column'];
+  $fields[] = $alias . '.' . $field['database']['columns']['value']['column'];
   if (isset($field['database']['columns']['timezone']['column'])) {
-    $fields[] = $alias .'.'. $field['database']['columns']['timezone']['column'];
+    $fields[] = $alias . '.' . $field['database']['columns']['timezone']['column'];
   }
   // We need to quote the alias in case someone used a reserved word for the
   // machine-readable name of a content type.
-  $table = '{'. $field['database']['table'] .'} `'. $alias .'`';
+  $table = '{' . $field['database']['table'] . '} `' . $alias . '`';
   return array(
     'fields' => $fields,
     'joins' => array("LEFT JOIN $table ON $alias.vid = n.vid"),
@@ -49,7 +49,7 @@ function signup_field_names($content_typ
 }
 
 function signup_date_field($content_type) {
-  $field_name = variable_get('signup_date_field_'. $content_type, 0);
+  $field_name = variable_get('signup_date_field_' . $content_type, 0);
   if ($field_name === 0 || $field_name == '0') {
     // PHP is completely evil and 'none' == 0 is TRUE, hence the extra checks.
     return FALSE;
@@ -102,7 +102,7 @@ function _signup_date_get_node_scheduler
  */
 function signup_form_content_field_edit_form_alter(&$form, &$form_state) {
   $type = $form['type_name']['#value'];
-  if (in_array($form['#field']['type'], array('date', 'datestamp', 'datetime')) && variable_get('signup_node_default_state_'. $type, 'disabled') != 'disabled') {
+  if (in_array($form['#field']['type'], array('date', 'datestamp', 'datetime')) && variable_get('signup_node_default_state_' . $type, 'disabled') != 'disabled') {
     $form['signup'] = array(
       '#type' => 'fieldset',
       '#title' => t('Signup settings'),
@@ -124,10 +124,10 @@ function signup_form_content_field_edit_
 function _signup_date_field_form_submit($form, &$form_state) {
   $type = $form_state['values']['type_name'];
   if (empty($form_state['values']['signup_date_field'])) {
-    variable_del('signup_date_field_'. $type);
+    variable_del('signup_date_field_' . $type);
   }
   else {
-    variable_set('signup_date_field_'. $type, $form_state['values']['signup_date_field']);
+    variable_set('signup_date_field_' . $type, $form_state['values']['signup_date_field']);
   }
 }
 
@@ -137,10 +137,10 @@ function _signup_date_field_form_submit(
  * @see signup_alter_node_type_form()
  */
 function _signup_date_alter_node_type_form(&$form, &$form_state) {
-  drupal_add_js(drupal_get_path('module', 'signup') .'/js/admin.content_types.js');
+  drupal_add_js(drupal_get_path('module', 'signup') . '/js/admin.content_types.js');
 
   $type = $form['#node_type']->type;
-  $default_signup_state = variable_get('signup_node_default_state_'. $type, 'disabled');
+  $default_signup_state = variable_get('signup_node_default_state_' . $type, 'disabled');
 
   // Add a div to the 'Signup options' radios for signup.date.js.
   $form['signup']['signup_node_default_state']['#prefix'] = '<div class="signup-node-default-state-radios">';
@@ -163,7 +163,7 @@ function _signup_date_alter_node_type_fo
   }
 
   $form['signup']['signup_date_field'] = _signup_date_field_element($type);
-  $form['signup']['signup_date_field']['#prefix'] = '<div class="'. $class .'">';
+  $form['signup']['signup_date_field']['#prefix'] = '<div class="' . $class . '">';
   $form['signup']['signup_date_field']['#suffix'] = '</div>';
 }
 
@@ -184,7 +184,7 @@ function _signup_date_field_element($typ
     '#type' => 'select',
     '#title' => t('Date field to use with signup'),
     '#options' => _signup_get_date_field_options($type),
-    '#default_value' => variable_get('signup_date_field_'. $type, 0),
+    '#default_value' => variable_get('signup_date_field_' . $type, 0),
     '#description' => t('Select the date field of this content type to use for signup time-based functionality, such as automatically closing signups when the start time has passed and sending reminder emails. Select "%none" to not use a date field for signup functionality at all.', array('%none' => t('None'))),
   );
 }
@@ -205,7 +205,7 @@ function _signup_date_field_element($typ
  * @see signup_date_field_check_config()
  */
 function signup_date_check_node_types($type = NULL) {
-  $names = node_get_types('names');
+  $names = node_type_get_names();
   if (!empty($type)) {
     signup_date_field_check_config($type, $names[$type]);
   }
@@ -237,7 +237,7 @@ function signup_date_check_node_types($t
  * @see signup_help()
  */
 function signup_date_field_check_config($type, $name) {
-  $signup_default_state = variable_get('signup_node_default_state_'. $type, 'disabled');
+  $signup_default_state = variable_get('signup_node_default_state_' . $type, 'disabled');
   $signup_scheduler = _signup_get_node_type_scheduler($type);
   if ($signup_scheduler != 'event' && $signup_default_state != 'disabled') {
     // Signups aren't disabled on this node type, see if there's a date field.
@@ -247,8 +247,8 @@ function signup_date_field_check_config(
       $placeholders = array(
         '%node_type' => $name,
         '%signup_date_field' => t('Date field to use with signup'),
-        '@type_admin_url' => url('admin/content/node-type/'. $type_url),
-        '@type_add_field_url' => url('admin/content/node-type/'. $type_url .'/fields'),
+        '@type_admin_url' => url('admin/content/node-type/' . $type_url),
+        '@type_add_field_url' => url('admin/content/node-type/' . $type_url . '/fields'),
         '%none' => t('<none>'),
       );
       // Administrator hasn't specifically turned off date support...
@@ -280,7 +280,7 @@ function signup_date_field_check_config(
 function _signup_get_date_field_options($type) {
   $options = array();
   // Add "Not specified" if the user never selected a field.
-  if (variable_get('signup_date_field_'. $type, 0) == 0) {
+  if (variable_get('signup_date_field_' . $type, 0) == 0) {
     $options = array(0 => t('<Not specified>'));
   }
   // Add any date fields from this node type.
@@ -307,7 +307,7 @@ function _signup_date_reminder_sql($cont
   // Find the current time in the appropriate TZ for this field.
   $now_date = date_now($compare_tz);
   // Need to enclose this in ' marks to use directly in the SQL.
-  $now = "'". date_format($now_date, DATE_FORMAT_DATETIME) ."'";
+  $now = "'" . date_format($now_date, DATE_FORMAT_DATETIME) . "'";
 
   // Extract the correct SQL to represent the start time.
   $start_time = $handler->sql_field($start_field);
@@ -330,7 +330,7 @@ function _signup_date_reminder_sql($cont
   if (isset($field['database']['columns']['timezone']['column'])) {
     $fields[] = $field['database']['columns']['timezone']['column'];
   }
-  $table = '{'. $field['database']['table'] .'}';
+  $table = '{' . $field['database']['table'] . '}';
   return array(
     'fields' => $fields,
     'joins' => array("INNER JOIN $table ON $table.vid = n.vid"),
@@ -371,7 +371,7 @@ function _signup_date_autoclose_sql($con
   if (isset($field['database']['columns']['timezone']['column'])) {
     $fields[] = $field['database']['columns']['timezone']['column'];
   }
-  $table = '{'. $field['database']['table'] .'}';
+  $table = '{' . $field['database']['table'] . '}';
   return array(
     'fields' => $fields,
     'joins' => array("INNER JOIN $table ON $table.vid = n.vid"),
@@ -449,7 +449,7 @@ function _signup_date_sql_math($field, $
       else {
         return "DATE_SUB($field, INTERVAL $count $granularity)";
       }
-      
+
     case 'pgsql':
       $granularity .= 'S';
       if ($direction == 'ADD') {
Index: includes/event.6x-2.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/event.6x-2.inc,v
retrieving revision 1.3
diff -u -p -r1.3 event.6x-2.inc
--- includes/event.6x-2.inc	9 Jan 2009 03:49:50 -0000	1.3
+++ includes/event.6x-2.inc	1 Jun 2010 17:45:54 -0000
@@ -13,15 +13,15 @@ function _signup_event_reminder_sql($con
     case 'mysql':
     case 'mysqli':
       $where = array(
-        "('". gmdate('Y-m-d H:i:s') ."' > (". event_where_utc() ." - INTERVAL s.reminder_days_before DAY))",
-        "('". gmdate('Y-m-d H:i:s') ."' <= (". event_where_utc() ."))",
+        "('" . gmdate('Y-m-d H:i:s') . "' > (" . event_where_utc() . " - INTERVAL s.reminder_days_before DAY))",
+        "('" . gmdate('Y-m-d H:i:s') . "' <= (" . event_where_utc() . "))",
       );
       break;
 
     case 'pgsql':
       $where = array(
-        "('". gmdate('Y-m-d H:i:s') ."' > (". event_where_utc() ." - INTERVAL 's.reminder_days_before days'))",
-        "('". gmdate('Y-m-d H:i:s') ."' <= (". event_where_utc() ."))",
+        "('" . gmdate('Y-m-d H:i:s') . "' > (" . event_where_utc() . " - INTERVAL 's.reminder_days_before days'))",
+        "('" . gmdate('Y-m-d H:i:s') . "' <= (" . event_where_utc() . "))",
       );
       break;
   }
@@ -41,7 +41,7 @@ function _signup_event_autoclose_sql($co
   return array(
     'fields' => array(event_select(), 'e.timezone'),
     'joins' => array(event_join('s')),
-    'where' => array(event_where_utc() ." < '". gmdate('Y-m-d H:i:s', time() + (variable_get('signup_close_early', 1) * 3600)) ."'"),
+    'where' => array(event_where_utc() . " < '" . gmdate('Y-m-d H:i:s', REQUEST_TIME + (variable_get('signup_close_early', 1) * 3600)) . "'"),
   );
 }
 
@@ -71,7 +71,7 @@ function _signup_event_admin_sql($conten
  */
 function _signup_event_node_completed($node) {
   if (isset($node->event)) {
-    $closing_time = gmdate('Y-m-d H:i:s', time() + (variable_get('signup_close_early', 1) * 3600));
+    $closing_time = gmdate('Y-m-d H:i:s', REQUEST_TIME + (variable_get('signup_close_early', 1) * 3600));
     if (event_is_later($closing_time, $node->event['start_utc'], 'string')) {
       return TRUE;
     }
Index: includes/no_views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/no_views.inc,v
retrieving revision 1.17
diff -u -p -r1.17 no_views.inc
--- includes/no_views.inc	10 Aug 2009 17:45:47 -0000	1.17
+++ includes/no_views.inc	1 Jun 2010 17:45:54 -0000
@@ -12,7 +12,7 @@
  */
 
 /**
- * Implementation of hook_block().
+ * Implements hook_block_info().
  *
  * @ingroup signup_core
  *
@@ -26,61 +26,71 @@
  *   One of two possibilities. The first is an array of available blocks.
  *   The other is an array containing a block.
  */
-function signup_block($op = 'list', $delta = 0) {
-  global $user;
-  switch ($op) {
-    case 'list':
-      $blocks[0]['info'] = t('Current signups');
-      return $blocks;
+function signup_block_info() {
+  $blocks['current']['info'] = t('Current signups');
+  $blocks['recent']['info'] = t('Recent signups');
+  return $blocks; 
+}
+
+/**
+ * Implements hook_block_view().
+ */
+function signup_block_view($delta = '') {
+  switch ($delta) {
+    case 'current':
+      global $user;
+      $titles = signup_list_user_signups($user->uid);
+      if (count($titles)) {
+        $block['subject'] = t('Current signups');
+        $block['content'] = theme('item_list', array('items' => $titles)) . l(t('View signup schedule'), "user/$user->uid/signups");
+        return $block;
+      }
       break;
-    case 'view':
-      if (user_access('access content')) {
-        switch ($delta) {
-          case 0:
-            $titles = signup_list_user_signups($user->uid);
-            if (count($titles)) {
-              $block['subject'] = t('Current signups');
-              $block['content'] = theme_item_list($titles) . l(t('View signup schedule'), "user/$user->uid/signups");
-            }
-            return $block;
-        }
+    case 'recent':
+      $block['subject'] = t('Recent signups');
+
+      $sql = "SELECT n.nid, n.title, s_l.sid, u.name, u.uid, s_l.form_data FROM {node} n INNER JOIN {signup_log} s_l ON n.nid = s_l.nid INNER JOIN {users} u ON s_l.uid = u.uid ORDER BY n.nid";
+      $signups = db_query($sql);
+      if ($signups) {
+        $block['content'] = theme('signups_recent_block', array('signups' => $signups));
+      }
+      else {
+        $block['content'] = t('No signups.');
       }
+      return $block;
+      break;
   }
 }
 
 /**
- * Private helper as a partial implementation of hook_user().
+ * Private helper as a partial implementation of hook_user_view().
  *
- * @see signup_user()
+ * @see signup_user_view()
  */
-function _signup_user_no_views($op, &$edit, &$user, $category = NULL) {
-  switch ($op) {
-    case 'view':
-      // grab list of nodes the user signed up for.
-      $signups = signup_list_user_signups($user->uid);
-      if (count($signups) && variable_get('signup_no_views_user_info', TRUE)) {
-        $user->content['signup'] = array(
-          '#type' => 'user_profile_category',
-          '#attributes' => array('class' => 'signup'),
-          '#weight' => 5,
-          '#title' => t('Signup information'),
-        );
-        $user->content['signup']['current'] = array(
-          '#type' => 'user_profile_item',
-          '#attributes' => array('class' => 'signup-current'),
-          '#title' => t('Current signups'),
-          '#value' => theme_item_list($signups),
-          '#weight' => 0,
-        );
-        $user->content['signup']['schedule'] = array(
-          '#type' => 'user_profile_item',
-          '#attributes' => array('class' => 'signup-schedule'),
-          '#title' => t('Signup schedule'),
-          '#value' => l(t('View full signup schedule'), 'user/'. $user->uid .'/signups'),
-          '#weight' => 2,
-        );
-      }
-      break;
+function _signup_user_view_no_views(&$account, $view_mode) {
+  // grab list of nodes the user signed up for.
+  $signups = signup_list_user_signups($account->uid);
+  if (count($signups) && variable_get('signup_no_views_user_info', TRUE)) {
+    $account->content['signup'] = array(
+      '#type' => 'user_profile_category',
+      '#attributes' => array('class' => 'signup'),
+      '#weight' => 5,
+      '#title' => t('Signup information'),
+    );
+    $account->content['signup']['current'] = array(
+      '#type' => 'user_profile_item',
+      '#attributes' => array('class' => 'signup-current'),
+      '#title' => t('Current signups'),
+      '#value' => theme_item_list($signups),
+      '#weight' => 0,
+    );
+    $account->content['signup']['schedule'] = array(
+      '#type' => 'user_profile_item',
+      '#attributes' => array('class' => 'signup-schedule'),
+      '#title' => t('Signup schedule'),
+      '#value' => l(t('View full signup schedule'), 'user/' . $account->uid . '/signups'),
+      '#weight' => 2,
+    );
   }
 }
 
@@ -111,11 +121,11 @@ function _signup_no_views_user_menu_acce
  */
 function signup_user_schedule($account) {
   $output = '';
-  drupal_set_title(t('Signups for @user', array('@user' => $account->name)));
+  drupal_set_title(t('Signups for @user', array('@user' => $account->name)), PASS_THROUGH);
   $titles = signup_list_user_signups($account->uid);
   foreach ($titles as $nid => $title) {
     $node = node_load($nid);
-    $output .= theme('signup_user_schedule', $node);
+    $output .= theme('signup_user_schedule', array('node' => $node));
   }
   return $output;
 }
@@ -135,11 +145,44 @@ function signup_list_user_signups($uid) 
 
   // We don't want to return anything for anon users.
   if ($uid != 0) {
-    $sql = "SELECT n.nid, n.title FROM {node} n INNER JOIN {signup_log} s_l ON n.nid = s_l.nid WHERE s_l.uid = %d ORDER BY n.nid";
-    $result = db_query(db_rewrite_sql($sql), $uid);
-    while ($node = db_fetch_array($result)) {
-      $titles[$node['nid']] = l($node['title'], 'node/'. $node['nid']);
+    $sql = "SELECT n.nid, n.title FROM {node} n INNER JOIN {signup_log} s_l ON n.nid = s_l.nid WHERE s_l.uid = :uid ORDER BY n.nid";
+    // TODO: add back the equivalent of db_rewrite_sql().
+    $result = db_query($sql, array(':uid' => $uid));
+    foreach ($result as $node) {
+      $titles[$node->nid] = l($node->title, 'node/' . $node->nid);
     }
   }
   return $titles;
 }
+
+function theme_signups_recent_block($variables) {
+  $signups = $variables['signups'];
+  $output = '';
+  if (empty($signups)) {
+    return $output;
+  }
+  $l_options = array('query' => drupal_get_destination());
+  foreach ($signups as $signup) {
+    $form_data = unserialize($signup->form_data);
+    $row = array();
+    $row[] = array(
+      'data' => '<div>' . l($signup->title, 'node/' . $signup->nid . '/signups') . '</div><div>' . check_plain($form_data['Name']). '</div>',
+    );
+    $row[] = array(
+      'data' => l(t('edit'), 'signup/edit/' . $signup->sid, $l_options),
+      'class' => 'edit',
+    );
+    $token = signup_get_token($signup->sid, 'cancel');
+    $row[] = array(
+      'data' => l(t('cancel'), 'signup/cancel/' . $signup->sid . '/' . $token, $l_options),
+      'class' => 'cancel',
+    );
+    $rows[] = $row;
+  }
+
+  if ($rows) {
+    $output = theme('table', array('rows' => $rows));
+  }
+
+  return $output;
+}
Index: includes/node_admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/node_admin.inc,v
retrieving revision 1.7
diff -u -p -r1.7 node_admin.inc
--- includes/node_admin.inc	14 Jan 2009 18:11:18 -0000	1.7
+++ includes/node_admin.inc	1 Jun 2010 17:45:54 -0000
@@ -11,7 +11,7 @@
  * Print the signup administration tab for a single node.
  */
 function signup_node_admin_page($node) {
-  drupal_set_title(check_plain($node->title));
+  drupal_set_title($node->title);
 
   // Administrative table to control signups for this node.
   // We only want this if we're not in the middle of confirming a bulk
@@ -21,7 +21,8 @@ function signup_node_admin_page($node) {
   // based on if it's a certain kind of POST...
   if (empty($_POST['operation'])) {
     module_load_include('inc', 'signup', 'includes/node_admin_summary');
-    $signup_node_admin_summary_form = drupal_get_form('signup_node_admin_summary_form', $node);
+    $form = drupal_get_form('signup_node_admin_summary_form', $node);
+    $signup_node_admin_summary_form = drupal_render($form);
   }
   else {
     // We're either dealing with a validation error or on a confirm form, so
@@ -32,7 +33,8 @@ function signup_node_admin_page($node) {
   // Signup details table, including cancel checkboxes.
   $display_list = variable_get('signup_display_signup_admin_list', 'signup');
   if ($display_list == 'signup') {
-    $signup_node_admin_details_form = drupal_get_form('signup_node_admin_details_form', $node);
+    $form = drupal_get_form('signup_node_admin_details_form', $node);
+    $signup_node_admin_details_form = drupal_render($form);
   }
   elseif ($display_list == 'embed-view' && module_exists('views')) {
     $signup_view = _signup_get_admin_list_view();
@@ -49,12 +51,11 @@ function signup_node_admin_page($node) {
     $signup_node_admin_details_form = '';
   }
 
-  return theme('signup_node_admin_page', $node, $signup_node_admin_summary_form, $signup_node_admin_details_form);
+  return theme('signup_node_admin_page', array('node' => $node, 'signup_node_admin_summary_form' => $signup_node_admin_summary_form, 'signup_node_admin_details_form' => $signup_node_admin_details_form));
 }
 
-function signup_node_admin_details_form(&$form_state, $node) {
+function signup_node_admin_details_form($form, &$form_state, $node) {
   unset($_SESSION['signup_cancel_multiple_users']);
-  $form = array();
 
   // Prepare a table header that allows sorting on name and signup time.
   $header = array(
@@ -65,12 +66,17 @@ function signup_node_admin_details_form(
     array('data' => t('Attendance'), 'field' => 's.attended'),
   );
 
-  $sql = "SELECT u.uid, u.name, s.* FROM {signup_log} s INNER JOIN {users} u ON u.uid = s.uid WHERE s.nid = %d";
-  $sql .= tablesort_sql($header);
-  $result = db_query($sql, $node->nid);
+  $query = db_select('signup_log', 's')->extend('TableSort');
+  $query->join('users', 'u', 'u.uid = s.uid');
+  $result = $query
+    ->fields('u', array('uid', 'name'))
+    ->fields('s')
+    ->condition('s.nid', $node->nid)
+    ->orderByHeader($header)
+    ->execute();
 
   // Loop through the users, unserializing their user data.
-  while ($signed_up_user = db_fetch_object($result)) {
+  foreach ($result as $signed_up_user) {
     // The "username" to print is different for anon signups and registered
     // user signups.  For registered users, provide a link to the user profile
     // For anon, use the user's email address as the name.
@@ -78,17 +84,17 @@ function signup_node_admin_details_form(
       $username = check_plain($signed_up_user->anon_mail);
     }
     else {
-      $username = theme('username', $signed_up_user);
+      $username = theme('username', array('account' => $signed_up_user));
     }
     $key = $signed_up_user->sid;
     $users[$key] = '';
-    $form['username'][$key] = array('#value' => $username);
-    $form['signup_date'][$key] = array('#value' => format_date($signed_up_user->signup_time, variable_get('signup_date_format', 'small')));
-    $form['signup_form_data'][$key] = array('#value' => theme('signup_custom_data', unserialize($signed_up_user->form_data)));
-    $form['attended'][$key] = array('#value' => theme('signup_attended_text', $signed_up_user->attended));
+    $form['username'][$key] = array('#markup' => $username);
+    $form['signup_date'][$key] = array('#markup' => format_date($signed_up_user->signup_time, variable_get('signup_date_format', 'small')));
+    $form['signup_form_data'][$key] = array('#markup' => theme('signup_custom_data', array('data' => unserialize($signed_up_user->form_data))));
+    $form['attended'][$key] = array('#markup' => theme('signup_attended_text', array('attended' => $signed_up_user->attended)));
   }
   if (empty($users)) {
-    $form['no_users'] = array('#value' => t('No users have signed up for this %node_type.', array('%node_type' => node_get_types('name', $node->type))));
+    $form['no_users'] = array('#markup' => t('No users have signed up for this %node_type.', array('%node_type' => node_type_get_name($node->type))));
   }
   else {
     $form['nid'] = array(
@@ -142,7 +148,7 @@ function signup_node_admin_multiple_subm
     case 'cancel':
       if (user_access('cancel signups')) {
         $_SESSION['signup_cancel_multiple_users'] = $users;
-        $form_state['redirect'] = 'node/'. $form_state['values']['nid'] .'/signups/confirm';
+        $form_state['redirect'] = 'node/' . $form_state['values']['nid'] . '/signups/confirm';
         return;
       }
       else {
@@ -166,8 +172,7 @@ function signup_node_admin_multiple_subm
 /**
  * Builds the confirm form when canceling multiple signups from node/N/signups.
  */
-function signup_cancel_multiple_confirm(&$form_state, $node) {
-  $form = array();
+function signup_cancel_multiple_confirm($form, &$form_state, $node) {
   $form['nid'] =  array(
     '#type' => 'hidden',
     '#value' => $node->nid,
@@ -178,11 +183,11 @@ function signup_cancel_multiple_confirm(
     '#tree' => TRUE,
   );
   $placeholders = db_placeholders($_SESSION['signup_cancel_multiple_users']);
-  $query = db_query("SELECT u.name, u.uid, s.* FROM {signup_log} s INNER JOIN {users} u ON s.uid = u.uid WHERE s.sid IN (". $placeholders .")", $_SESSION['signup_cancel_multiple_users']);
-  while ($signup = db_fetch_object($query)) {
+  $query = db_query("SELECT u.name, u.uid, s.* FROM {signup_log} s INNER JOIN {users} u ON s.uid = u.uid WHERE s.sid IN (" . $placeholders . ")", $_SESSION['signup_cancel_multiple_users']);
+  foreach ($query as $signup) {
     $key = $signup->sid;
     if ($signup->uid) {
-      $label = theme('username', $signup);
+      $label = theme('username', array('account' => $signup));
     }
     else {
       $label = t('Anonymous signup: %anon_mail', array('%anon_mail' => $signup->anon_mail));
@@ -191,14 +196,14 @@ function signup_cancel_multiple_confirm(
       '#type' => 'hidden',
       '#value' => $key,
       '#prefix' => '<li>',
-      '#suffix' => $label ."</li>\n",
+      '#suffix' => $label . "</li>\n",
     );
   }
   $form['#submit'][] = 'signup_cancel_multiple_confirm_submit';
   return confirm_form(
     $form,
     t('Are you sure you want to cancel signups for these users?'),
-    'node/'. $node->nid .'/signups',
+    'node/' . $node->nid . '/signups',
     t('This action cannot be undone.'),
     t('Cancel signups'), t('Keep signups')
   );
@@ -217,7 +222,7 @@ function signup_cancel_multiple_confirm_
   else {
     drupal_set_message(t('You do not have permission to cancel signups.'), 'error');
   }
-  $form_state['redirect'] = 'node/'. $nid .'/signups';
+  $form_state['redirect'] = 'node/' . $nid . '/signups';
   unset($_SESSION['signup_cancel_multiple_users']);
 }
 
Index: includes/node_admin_summary.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/node_admin_summary.inc,v
retrieving revision 1.3
diff -u -p -r1.3 node_admin_summary.inc
--- includes/node_admin_summary.inc	21 Sep 2009 05:23:02 -0000	1.3
+++ includes/node_admin_summary.inc	1 Jun 2010 17:45:54 -0000
@@ -7,8 +7,7 @@
  * Code related to the signup administration tab on each node.
  */
 
-function signup_node_admin_summary_form($form_state, $node) {
-  $form = array();
+function signup_node_admin_summary_form($form, $form_state, $node) {
   if ($node->signup_close_signup_limit &&
     $node->signup_effective_total >= $node->signup_close_signup_limit
   ) {
@@ -44,7 +43,7 @@ function signup_node_admin_summary_form(
   $form['limit'] = array(
     '#type' => 'item',
     '#title' => t('Signup limit'),
-    '#value' => l($node->signup_close_signup_limit, 'node/'. $node->nid .'/signups/settings', array('fragment' => 'signup-limit')),
+    '#value' => l($node->signup_close_signup_limit, 'node/' . $node->nid . '/signups/settings', array('fragment' => 'signup-limit')),
   );
   $form['nid'] = array(
     '#type' => 'value',
Index: includes/node_form.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/node_form.inc,v
retrieving revision 1.6
diff -u -p -r1.6 node_form.inc
--- includes/node_form.inc	16 Sep 2009 00:42:50 -0000	1.6
+++ includes/node_form.inc	1 Jun 2010 17:45:54 -0000
@@ -37,10 +37,10 @@ function signup_save_node($node, $op) {
   if ($op == 'update' && isset($node->signup_enabled)) {
     switch ($node->signup_enabled) {
       case 2: // Disabled, and delete {signup_log}, too
-        db_query("DELETE FROM {signup_log} WHERE nid = %d", $node->nid);
+        db_delete('signup_log')->condition('nid', $node->nid)->execute();
         // No break, fall through and remove from {signup} too.
       case 0: // Disabled, but leave {signup_log} alone
-        db_query("DELETE FROM {signup} WHERE nid = %d", $node->nid);
+        db_delete('signup')->condition('nid', $node->nid)->execute();
         // We're done.
         return;
     }
@@ -53,21 +53,25 @@ function signup_save_node($node, $op) {
   // the node type), see if we need to insert a new record into the {signup}
   // table for this node using the site-wide defaults.
   $needs_defaults = FALSE;
-  if ((isset($node->signup_enabled) && $node->signup_enabled == 1) || (!isset($node->signup_enabled) && variable_get('signup_node_default_state_'. $node->type, 'disabled') == 'enabled_on')) {
+  if ((isset($node->signup_enabled) && $node->signup_enabled == 1) || (!isset($node->signup_enabled) && variable_get('signup_node_default_state_' . $node->type, 'disabled') == 'enabled_on')) {
     if ($op == 'insert') {
       $needs_defaults = TRUE;
     }
     else {
       // Updating -- see if we already have a record for this node.
-      $has_record = db_result(db_query("SELECT nid FROM {signup} WHERE nid = %d", $node->nid));
+      $has_record = db_query("SELECT nid FROM {signup} WHERE nid = :nid", array(':nid' => $node->nid))->fetchField();
       $needs_defaults = empty($has_record);
     }
   }
-  
+
   if ($needs_defaults) {
-    $values = db_fetch_array(db_query("SELECT forwarding_email, send_confirmation, confirmation_email, close_signup_limit, send_reminder, reminder_days_before, reminder_email FROM {signup} WHERE nid = 0"));
-    $values[] = $node->nid;
-    db_query("INSERT INTO {signup} (forwarding_email, send_confirmation, confirmation_email, close_signup_limit, send_reminder, reminder_days_before, reminder_email, nid) VALUES ('%s', %d, '%s', %d, %d, %d, '%s', %d)", $values);
+    //TODO: this is untested
+    $values = db_query("SELECT forwarding_email, send_confirmation, confirmation_email, close_signup_limit, send_reminder, reminder_days_before, reminder_email FROM {signup} WHERE nid = 0")->fetchAssoc();
+    $values['nid'] = $node->nid;
+    db_insert('signup')
+      ->fields(array('forwarding_email', 'send_confirmation', 'confirmation_email', 'close_signup_limit', 'send_reminder', 'reminder_days_before', 'reminder_email', 'nid'))
+      ->values($values)
+      ->execute();
   }
 
   $node = node_load($node->nid);
@@ -76,7 +80,7 @@ function signup_save_node($node, $op) {
     // advance time (e.g. someone just changed the node start time), and
     // signups are still open, close them now.
     signup_close_signup($node->nid);
-    drupal_set_message(t('%node_type start time is already past the signup close-in-advance time, signups now closed.', array('%node_type' => node_get_types('name', $node->type))));
+    drupal_set_message(t('%node_type start time is already past the signup close-in-advance time, signups now closed.', array('%node_type' => node_type_get_name($node->type))));
   }
 }
 
@@ -86,7 +90,7 @@ function signup_save_node($node, $op) {
 function signup_alter_node_form(&$form, &$form_state, $form_id) {
   global $user;
 
-  // Node is not saved but previewed (nid is empty). 
+  // Node is not saved but previewed (nid is empty).
   if (isset($form['#node']->build_mode) && $form['#node']->build_mode == NODE_BUILD_PREVIEW) {
     $node = $form['#node'];
   }
@@ -99,7 +103,7 @@ function signup_alter_node_form(&$form, 
   }
   $node_type = $form['type']['#value'];
 
-  $signup_type_default = variable_get('signup_node_default_state_'. $node_type, 'disabled');
+  $signup_type_default = variable_get('signup_node_default_state_' . $node_type, 'disabled');
 
   // If signups are possible, and the current user either has the global
   // 'administer all signups' permission or has the 'administer signups
@@ -117,19 +121,20 @@ function signup_alter_node_form(&$form, 
     $form['signup'] = array(
       '#type' => 'fieldset',
       '#title' => t('Signup settings'),
+      '#group' => 'additional_settings',
       '#collapsible' => TRUE,
-      '#collapsed' => TRUE,
+      '#collapsed' => FALSE,
       '#weight' => 30,
     );
 
     // Figure out what the options should be.  If there are already
     // people signed-up for this node, we need a 3rd choice: disable
     // signups and remove all signup data.
-    $has_signups = !empty($node) && db_result(db_query("SELECT COUNT(*) from {signup_log} WHERE nid = %d", $node->nid));
+    $has_signups = !empty($node) && db_query("SELECT COUNT(*) from {signup_log} WHERE nid = :nid", array(':nid' => $node->nid))->fetchField();
     $radio_options[1] = t('Enabled');
     if ($has_signups) {
       $radio_options[0] = t('Disabled, but save existing signup information');
-      $radio_options[2] = t('Disabled, and remove all signup information') .' <strong>('. t('This can not be undone, use with extreme caution!') .')</strong>';
+      $radio_options[2] = t('Disabled, and remove all signup information') . ' <strong>(' . t('This can not be undone, use with extreme caution!') . ')</strong>';
     }
     else {
       $radio_options[0] = t('Disabled');
@@ -147,7 +152,7 @@ function signup_alter_node_form(&$form, 
       '#type' => 'radios',
       '#options' => $radio_options,
       '#default_value' => $default_option,
-      '#description' => t('If enabled, you can control whether users may sign up by visiting the !signup_admin tab and toggling if signups are %open or %closed for this %node_type. Other signup-related settings can be defined at the !signup_settings tab.', array('!signup_admin' => !empty($node->signup) ? l(t('Signups: Administer'), 'node/'. $node->nid .'/signups/admin') : theme('placeholder', t('Signups: Administer')), '!signup_settings' => !empty($node->signup) ? l(t('Signups: Settings'), 'node/'. $node->nid .'/signups/settings') : theme('placeholder', t('Signups: Settings')), '%open' => t('open'), '%closed' => t('closed'), '%node_type' => node_get_types('name', $node_type))),
+      '#description' => t('If enabled, you can control whether users may sign up by visiting the !signup_admin tab and toggling if signups are %open or %closed for this %node_type. Other signup-related settings can be defined at the !signup_settings tab.', array('!signup_admin' => !empty($node->signup) ? l(t('Signups: Administer'), 'node/' . $node->nid . '/signups/admin') : drupal_placeholder(array('text' => t('Signups: Administer'))), '!signup_settings' => !empty($node->signup) ? l(t('Signups: Settings'), 'node/' . $node->nid . '/signups/settings') : drupal_placeholder(array('text' => t('Signups: Settings'))), '%open' => t('open'), '%closed' => t('closed'), '%node_type' => node_type_get_name($node_type))),
     );
   }
 }
Index: includes/node_output.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/node_output.inc,v
retrieving revision 1.12
diff -u -p -r1.12 node_output.inc
--- includes/node_output.inc	23 Aug 2009 15:44:40 -0000	1.12
+++ includes/node_output.inc	1 Jun 2010 17:45:54 -0000
@@ -29,7 +29,7 @@
  *
  */
 function _signup_node_output($node, $type = 'node') {
-  $output = theme('signup_node_output_header', $node);
+  $output = theme('signup_node_output_header', array('node' => $node));
   $output .= _signup_current_user_signup($node, $type);
   return $output;
 }
@@ -49,12 +49,12 @@ function _signup_current_user_signup($no
       // If they're logged in and already signed up, show their current
       // signup info and give them the option to cancel.
       if ($user->uid) {
-        $signup = db_fetch_object(db_query("SELECT sl.*, n.title, u.name FROM {signup_log} sl INNER JOIN {node} n ON sl.nid = n.nid INNER JOIN {users} u ON sl.uid = u.uid WHERE sl.uid = %d AND sl.nid = %d", $user->uid, $node->nid));
+        $signup = db_query("SELECT sl.*, n.title, u.name FROM {signup_log} sl INNER JOIN {node} n ON sl.nid = n.nid INNER JOIN {users} u ON sl.uid = u.uid WHERE sl.uid = :uid AND sl.nid = :nid", array(':uid' => $user->uid, ':nid' => $node->nid))->fetchObject();
         if (!empty($signup)) {
           $current_signup = _signup_render_signup_edit_form($signup, $type);
         }
       }
-      $output .= theme('signup_signups_closed', $node, $current_signup);
+      $output .= theme('signup_signups_closed', array('node' => $node, 'current_signup' => $current_signup));
     }
   }
   else {
@@ -63,7 +63,8 @@ function _signup_current_user_signup($no
       if (user_access('sign up for content')) {
         // If they can signup, render the anonymous sigup form.
         module_load_include('inc', 'signup', 'includes/signup_form');
-        $output .= drupal_get_form('signup_form', $node, 'anon', $fieldset);
+        $form = drupal_get_form('signup_form', $node, 'anon', $fieldset);
+        $output .= drupal_render($form);
       }
       else {
         // If not, then display the appropriate login/register link if the
@@ -74,7 +75,7 @@ function _signup_current_user_signup($no
           $token_array = array(
             '!login' => l(t('login'), 'user/login', array('query' => drupal_get_destination())),
             '!register' => l(t('register'), 'user/register', array('query' => drupal_get_destination())),
-            '%node_type' => node_get_types('name', $node->type),
+            '%node_type' => node_type_get_name($node->type),
           );
           if (variable_get('user_register', 1) == 0) {
             $anon_login_text = t('Please !login to sign up for this %node_type.', $token_array);
@@ -83,20 +84,21 @@ function _signup_current_user_signup($no
             $anon_login_text = t('Please !login or !register to sign up for this %node_type.', $token_array);
           }
         }
-        $output .= theme('signup_anonymous_user_login_text', $anon_login_text);
+        $output .= theme('signup_anonymous_user_login_text', array('anon_login_text' => $anon_login_text));
       }
     }
     else {
       // An authenticated user.
 
       // See if the user is already signed up for this node.
-      $signup = db_fetch_object(db_query("SELECT sl.*, n.title, u.name, u.mail FROM {signup_log} sl INNER JOIN {node} n ON sl.nid = n.nid INNER JOIN {users} u ON sl.uid = u.uid WHERE sl.uid = %d AND sl.nid = %d", $user->uid, $node->nid));
+      $signup = db_query("SELECT sl.*, n.title, u.name, u.mail FROM {signup_log} sl INNER JOIN {node} n ON sl.nid = n.nid INNER JOIN {users} u ON sl.uid = u.uid WHERE sl.uid = :uid AND sl.nid = :nid", array(':uid' => $user->uid, ':nid' => $node->nid))->fetchObject();
       if (empty($signup)) {
         // Not yet signed up
         if (user_access('sign up for content')) {
           // User has permission to do so, so give them the form.
           module_load_include('inc', 'signup', 'includes/signup_form');
-          $output .= drupal_get_form('signup_form', $node, 'auth', $fieldset);
+          $form = drupal_get_form('signup_form', $node, 'auth', $fieldset);
+          $output .= drupal_render($form);
         }
       }
       else {
@@ -114,6 +116,9 @@ function _signup_current_user_signup($no
 function signup_user_list_output($node) {
   $output = '';
 
+  // TODO: This probably shouldn't be here.
+  drupal_set_title($node->title);
+
   // How should the list of signed-up users be displayed, if at all?
   $display_list = variable_get('signup_display_signup_user_list', 'signup');
 
@@ -121,17 +126,18 @@ function signup_user_list_output($node) 
   if (_signup_menu_access($node, 'list')) {
     if ($display_list == 'signup' || $display_list == 'signup-tab') {
       // Admin wants the hard-coded signup listing.
-      $registered_query = db_query("SELECT u.uid, u.name, s.signup_time, s.form_data FROM {signup_log} s INNER JOIN {users} u ON u.uid = s.uid WHERE s.nid = %d AND u.uid <> 0", $node->nid);
+      $registered_result = db_query("SELECT u.uid, u.name, s.signup_time, s.form_data FROM {signup_log} s INNER JOIN {users} u ON u.uid = s.uid WHERE s.nid = :nid AND u.uid <> 0", array(':nid' => $node->nid));
       $registered_signups = array();
-      while ($signed_up_user = db_fetch_object($registered_query)) {
+      // TODO: This is redundant. Fix theme_signup_user_list so it can handle the db result directly.
+      foreach ($registered_result as $signed_up_user) {
         $registered_signups[] = $signed_up_user;
       }
-      $anon_query = db_query("SELECT * FROM {signup_log} WHERE nid = %d AND uid = 0", $node->nid);
+      $anon_result = db_query("SELECT * FROM {signup_log} WHERE nid = :nid AND uid = 0", array(':nid' => $node->nid));
       $anon_signups = array();
-      while ($signed_up_user = db_fetch_object($anon_query)) {
+      foreach ($anon_result as $signed_up_user) {
         $anon_signups[] = $signed_up_user;
       }
-      $output .= theme('signup_user_list', $node, $registered_signups, $anon_signups);
+      $output .= theme('signup_user_list', array('node' => $node, 'registered_signups' => $registered_signups, 'anon_signups' => $anon_signups));
     }
     elseif (($display_list == 'embed-view' || $display_list == 'embed-view-tab') && module_exists('views')) {
       $signup_view = variable_get('signup_user_list_view', 'signup_user_list:default');
@@ -170,7 +176,7 @@ function signup_user_list_output($node) 
  * @see _signup_node_output()
  */
 function signup_node_tab($node) {
-  drupal_set_title(check_plain($node->title));
+  drupal_set_title($node->title);
   return _signup_node_output($node, 'tab');
 }
 
@@ -186,7 +192,7 @@ function _signup_render_signup_edit_form
   module_load_include('inc', 'signup', 'includes/signup_edit_form');
   $form = drupal_get_form('signup_edit_form', $signup, $type);
   $form_errors = form_get_errors() ? TRUE : FALSE;
-  drupal_add_js(array('signupEditFormErrors' => $form_errors), 'setting');
-  return $form;
+  drupal_add_js(array('signupEditFormErrors' => $form_errors), array('type' => 'setting', 'scope' => JS_DEFAULT));
+  return drupal_render($form);
 }
 
Index: includes/node_settings.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/node_settings.inc,v
retrieving revision 1.5
diff -u -p -r1.5 node_settings.inc
--- includes/node_settings.inc	21 Sep 2009 05:23:02 -0000	1.5
+++ includes/node_settings.inc	1 Jun 2010 17:45:54 -0000
@@ -28,7 +28,7 @@
  *   The form array for the per-node signup settings.
  *
  */
-function signup_node_settings_form($form_state, $node = NULL, $node_type = NULL, $has_date = FALSE, $include_buttons = FALSE) {
+function signup_node_settings_form($form, $form_state, $node = NULL, $node_type = NULL, $has_date = FALSE, $include_buttons = FALSE) {
   if (module_exists('token')) {
     $signup_token_description = t('Supported string substitutions: %node_title, %node_url, %node_start_time, %user_name, %user_mail, %user_signup_info (additional information from the signup form), %cancel_signup_url (access to this link is denied to users without the "%cancel_own_signups" permission), and any tokens in the %replacement_tokens list.', array('%replacement_tokens' => t('Replacement tokens'), '%cancel_own_signups' => t('cancel own signups')));
   }
@@ -38,7 +38,7 @@ function signup_node_settings_form($form
 
   // Load the default admin form data for new nodes.
   if (!$node || !$node->signup) {
-    $result = db_fetch_object(db_query("SELECT * FROM {signup} WHERE nid = 0"));
+    $result = db_query("SELECT * FROM {signup} WHERE nid = 0")->fetchObject();
     $node->signup_forwarding_email = $result->forwarding_email;
     $node->signup_send_confirmation = $result->send_confirmation;
     $node->signup_confirmation_email = $result->confirmation_email;
@@ -88,7 +88,7 @@ function signup_node_settings_form($form
     for ($i = 1; $i <= 60; $i++) {
       $options[$i] = $i;
     }
-    $node_type_name = isset($node_type) ? node_get_types('name', $node_type) : '';
+    $node_type_name = isset($node_type) ? node_type_get_name($node_type) : '';
     $form['signup_reminder']['signup_reminder_days_before'] = array(
       '#type' => 'select',
       '#default_value' => $node->signup_reminder_days_before,
@@ -139,6 +139,9 @@ function signup_node_settings_form($form
  * Page callback for the node/N/signups/settings subtab.
  */
 function signup_node_settings_page($node) {
+  // TODO: This probably shouldn't be here.
+  drupal_set_title($node->title);
+
   $node_scheduler = _signup_get_node_scheduler($node);
   $node_has_date = $node_scheduler != 'none';
   return drupal_get_form('signup_node_settings_form', $node, $node->type, $node_has_date, TRUE);
@@ -156,7 +159,7 @@ function signup_node_settings_form_submi
   $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
   if ($op == t('Reset to defaults')) {
     // If we're resetting, we just want to grab the site-wide defaults.
-    $values = db_fetch_array(db_query("SELECT forwarding_email, send_confirmation, confirmation_email, close_signup_limit, send_reminder, reminder_days_before, reminder_email FROM {signup} WHERE nid = 0"));
+    $values = db_query("SELECT forwarding_email, send_confirmation, confirmation_email, close_signup_limit, send_reminder, reminder_days_before, reminder_email FROM {signup} WHERE nid = 0")->fetchAssoc();
   }
   else {
     // Populate $values from $form_state.
@@ -174,13 +177,17 @@ function signup_node_settings_form_submi
   // Either way, we want to make sure we're updating the values for the
   // current node, not nid 0...
   $node = $form['#node'];
-  $values[] = $node->nid;
-  db_query("UPDATE {signup} SET forwarding_email = '%s', send_confirmation = %d, confirmation_email = '%s', close_signup_limit = %d, send_reminder = %d, reminder_days_before = %d, reminder_email = '%s' WHERE nid = %d", $values);
+  // TODO: test
+  db_update('signup')
+    ->fields($values)
+    ->condition('nid', $node->nid)
+    ->execute();
+  //db_query("UPDATE {signup} SET forwarding_email = '%s', send_confirmation = %d, confirmation_email = '%s', close_signup_limit = %d, send_reminder = %d, reminder_days_before = %d, reminder_email = '%s' WHERE nid = %d", $values);
 
   // See if the limit changed, and if so, take any necessary action.
   if ($node->signup_close_signup_limit != $form_state['values']['signup_close_signup_limit']) {
     $node->signup_close_signup_limit = $form_state['values']['signup_close_signup_limit'];
-    $node->signup_effective_total = db_result(db_query("SELECT SUM(count_towards_limit) FROM {signup_log} WHERE nid = %d", $node->nid));
+    $node->signup_effective_total = db_query("SELECT SUM(count_towards_limit) FROM {signup_log} WHERE nid = :nid", array(':nid' => $node->nid))->fetchField();
     _signup_check_limit($node, 'limit');
   }
 
Index: includes/scheduler.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/scheduler.inc,v
retrieving revision 1.4
diff -u -p -r1.4 scheduler.inc
--- includes/scheduler.inc	6 Nov 2008 10:20:48 -0000	1.4
+++ includes/scheduler.inc	1 Jun 2010 17:45:55 -0000
@@ -67,11 +67,11 @@ function _signup_get_node_scheduler($nod
  *   the node type is untimed.
  */
 function _signup_get_node_type_scheduler($type) {
-  if (module_exists('event') && variable_get('event_nodeapi_'. $type, 'never') != 'never') {
+  if (module_exists('event') && variable_get('event_nodeapi_' . $type, 'never') != 'never') {
     return 'event';
   }
   if (module_exists('date')) {
-    $date_field = variable_get('signup_date_field_'. $type, 0);
+    $date_field = variable_get('signup_date_field_' . $type, 0);
     if (!empty($date_field) && $date_field != 'none') {
       return 'date';
     }
Index: includes/signup_cancel.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/signup_cancel.inc,v
retrieving revision 1.3
diff -u -p -r1.3 signup_cancel.inc
--- includes/signup_cancel.inc	25 Jan 2009 03:10:55 -0000	1.3
+++ includes/signup_cancel.inc	1 Jun 2010 17:45:55 -0000
@@ -15,10 +15,9 @@ function signup_cancel_signup_page($sign
   drupal_goto();
 }
 
-function signup_cancel_link_confirm_form($form_state, $sid) {
-  $info = db_fetch_object(db_query("SELECT n.nid, n.title, s.* FROM {node} n INNER JOIN {signup_log} s ON n.nid = s.nid WHERE s.sid = %d", $sid));
+function signup_cancel_link_confirm_form($form, $form_state, $sid) {
+  $info = db_query("SELECT n.nid, n.title, s.* FROM {node} n INNER JOIN {signup_log} s ON n.nid = s.nid WHERE s.sid = :sid", array(':sid' => $sid))->fetchObject();
 
-  $form = array();
   $form['sid'] = array(
     '#type' => 'hidden',
     '#value' => $sid,
@@ -44,6 +43,6 @@ function signup_cancel_link_confirm_form
 
 function signup_cancel_link_confirm_form_submit($form, &$form_state) {
   signup_cancel_signup($form_state['values']['sid']);
-  $form_state['redirect'] = 'node/'. $form_state['values']['nid'];
+  $form_state['redirect'] = 'node/' . $form_state['values']['nid'];
 }
 
Index: includes/signup_edit_form.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/signup_edit_form.inc,v
retrieving revision 1.7
diff -u -p -r1.7 signup_edit_form.inc
--- includes/signup_edit_form.inc	19 Sep 2009 00:31:56 -0000	1.7
+++ includes/signup_edit_form.inc	1 Jun 2010 17:45:55 -0000
@@ -34,7 +34,7 @@ function signup_edit_form($form_state, $
   $can_edit = $admin || (user_access('edit own signups') && $own);
 
   if ($type == 'admin') {
-    $title = t("Information for !user's signup to !node", array('!user' => _signup_get_username($signup, TRUE), '!node' => l($node->title, 'node/'. $node->nid)));
+    $title = t("Information for !user's signup to !node", array('!user' => _signup_get_username($signup, TRUE), '!node' => l($node->title, 'node/' . $node->nid)));
   }
   else {
     $title = t('Your signup information');
@@ -51,8 +51,7 @@ function signup_edit_form($form_state, $
   else {
     $form['elements'] = array();
     $form['elements']['header'] = array(
-      '#type' => 'markup',
-      '#value' => $title,
+      '#markup' => $title,
       '#prefix' => '<h4>',
       '#suffix' => '</h4>',
     );
@@ -72,11 +71,11 @@ function signup_edit_form($form_state, $
 
   if ($admin) {
     $options = array();
-    if (1|| !isset($signup->attended)) {
+    if (1 || !isset($signup->attended)) {
       $options[-1] = t('- Not recorded -');
     }
-    $options[1] = theme('signup_attended_text', 1);
-    $options[0] = theme('signup_attended_text', 0);
+    $options[1] = theme('signup_attended_text', array('attended' => 1));
+    $options[0] = theme('signup_attended_text', array('attended' => 0));
     $form['elements']['attended'] = array(
       '#type' => 'select',
       '#title' => t('Attendance'),
@@ -86,7 +85,7 @@ function signup_edit_form($form_state, $
   }
 
   // Build the themed signup form for this site and include that.
-  $site_form = theme('signup_user_form', $node);
+  $site_form = theme('signup_user_form', array('node' => $node));
   $form_data = unserialize($signup->form_data);
 
   // This is sort of a hack, but we don't support nested arrays for the custom
@@ -117,12 +116,11 @@ function signup_edit_form($form_state, $
     }
     else {
       // If there's no destination already set, redirect to the node.
-      $destination = 'destination='. urlencode("node/$signup->nid");
+      $destination = 'destination=' . urlencode("node/$signup->nid");
     }
     $signup_token = signup_get_token($signup->sid, 'cancel');
     $form['elements']['cancel-signup'] = array(
-      '#type' => 'markup',
-      '#value' => l(t('Cancel signup'), "signup/cancel/$signup->sid/$signup_token", array('query' => $destination)),
+      '#markup' => l(t('Cancel signup'), "signup/cancel/$signup->sid/$signup_token", array('query' => $destination)),
     );
   }
 
Index: includes/signup_form.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/signup_form.inc,v
retrieving revision 1.2
diff -u -p -r1.2 signup_form.inc
--- includes/signup_form.inc	20 Dec 2008 06:31:22 -0000	1.2
+++ includes/signup_form.inc	1 Jun 2010 17:45:55 -0000
@@ -20,10 +20,9 @@
  * @param $fieldset
  *   Boolean that indicates if the signup form should be in a fieldset.
  */
-function signup_form(&$form_state, $node, $signup_type = 'auth', $fieldset = TRUE) {
+function signup_form($form, &$form_state, $node, $signup_type = 'auth', $fieldset = TRUE) {
   global $user;
 
-  $form = array();
   $form['nid'] = array('#type' => 'value', '#value' => $node->nid);
   $form['uid'] = array('#type' => 'value', '#value' => $user->uid);
 
@@ -52,7 +51,7 @@ function signup_form(&$form_state, $node
     $anon_form['signup_anon_mail'] = array(
       '#type' => 'textfield',
       '#title' => t('Email'),
-      '#description' => t('An e-mail address is required for users who are not registered at this site. If you are a registered user at this site, please !login to sign up for this %node_type.', array('!login' => l(t('login'), 'user/login', array('query' => drupal_get_destination())), '%node_type' => node_get_types('name', $node->type))),
+      '#description' => t('An e-mail address is required for users who are not registered at this site. If you are a registered user at this site, please !login to sign up for this %node_type.', array('!login' => l(t('login'), 'user/login', array('query' => drupal_get_destination())), '%node_type' => node_type_get_name($node->type))),
       '#size' => 40,
       '#maxlength' => 255,
       '#required' => TRUE,
@@ -76,7 +75,7 @@ function signup_form(&$form_state, $node
   }
 
   // Build the themed signup form for this site and include that.
-  $signup_themed_form = theme('signup_user_form', $node);
+  $signup_themed_form = theme('signup_user_form', array('node' => $node));
 
   if ($signup_type == 'admin') {
     // Special case hack for the default signup form, where the current
@@ -108,7 +107,7 @@ function signup_form(&$form_state, $node
  */
 function signup_form_submit($form, &$form_state) {
   if (isset($form_state['values']['signup_username'])) {
-    $account = user_load(array('name' => $form_state['values']['signup_username']));
+    $account = user_load_multiple(array(), array('name' => $form_state['values']['signup_username']));
     $form_state['values']['uid'] = $account->uid;
   }
   signup_sign_up_user($form_state['values']);
@@ -145,12 +144,12 @@ function signup_validate_anon_email($nid
   if (!valid_email_address($anon_mail)) {
     $message = t('Invalid email address entered for signup.');
   }
-  elseif (db_result(db_query("SELECT COUNT(*) FROM {users} WHERE mail = '%s'", $anon_mail))) {
+  elseif (db_query("SELECT COUNT(*) FROM {users} WHERE mail = :mail", array(':mail' => $anon_mail))->fetchField()) {
     $message = t('The email address entered belongs to a registered user.');
   }
-  elseif (db_result(db_query("SELECT COUNT(*) FROM {signup_log} WHERE anon_mail = '%s' AND nid = %d", $anon_mail, $nid))) {
+  elseif (db_query("SELECT COUNT(*) FROM {signup_log} WHERE anon_mail = :mail AND nid = :nid", array(':mail' => $anon_mail, ':nid' => $nid))->fetchField()) {
     $node = node_load($nid);
-    $message = t('The email address entered has already been used to sign up for this %node_type.', array('%node_type' => node_get_types('name', $node->type)));
+    $message = t('The email address entered has already been used to sign up for this %node_type.', array('%node_type' => node_type_get_name($node->type)));
   }
 
   // If there's no message, it's a valid email, so return success.
@@ -179,20 +178,22 @@ function signup_validate_anon_email($nid
 function signup_form_validate_username($form, $form_state) {
   $nid = $form_state['values']['nid'];
   $username = $form_state['values']['signup_username'];
-  $account = user_load(array('name' => $username));
+  $account = user_load_multiple(array(), array('name' => $username));
   if (empty($account)) {
     form_set_error('signup_username', t('User %user_name does not exist.', array('%user_name' => $username)));
   }
   elseif (!user_access('sign up for content', $account)) {
-    form_set_error('signup_username', t('User !user does not have permission to sign up.', array('!user' => theme('username', $account))));
+    form_set_error('signup_username', t('User !user does not have permission to sign up.', array('!user' => theme('username', array('account' => $account)))));
   }
   elseif (db_result(db_query("SELECT COUNT(*) FROM {signup_log} WHERE uid = %d AND nid = %d", $account->uid, $nid)) > 0) {
     $node = node_load($nid);
-    form_set_error('signup_username', t('User !user is already signed up for %title', array('!user' => theme('username', $account), '%title' => $node->title)));
+    form_set_error('signup_username', t('User !user is already signed up for %title', array('!user' => theme('username', array('account' => $account)), '%title' => $node->title)));
   }
 }
 
 function signup_node_admin_add_user_page($node) {
+  drupal_set_title(t('Add signup for %title', array('%title' => $node->title)), PASS_THROUGH);
+
   $output = '';
   if ($node->signup_status) {
     $output = drupal_get_form('signup_form', $node, 'admin', FALSE);
Index: includes/token_help.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/token_help.inc,v
retrieving revision 1.2
diff -u -p -r1.2 token_help.inc
--- includes/token_help.inc	14 Aug 2009 23:26:00 -0000	1.2
+++ includes/token_help.inc	1 Jun 2010 17:45:55 -0000
@@ -24,7 +24,7 @@ function _signup_token_help(&$form, $ele
     '#collapsed' => TRUE,
   );
   $form[$element_name]['help_text'] = array(
-    '#value' => _signup_build_token_help(),
+    '#markup' => _signup_build_token_help(),
   );
 }
 
@@ -36,6 +36,7 @@ function _signup_token_help(&$form, $ele
 function _signup_build_token_help() {
   static $help_html = '';
   if (empty($help_html)) {
+    // TODO Please change this theme call to use an associative array for the $variables parameter.
     $help_html = theme('token_help', array('signup', 'node', 'global'));
   }
   return $help_html;
Index: modules/signup_confirm_email/signup_confirm_email.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/modules/signup_confirm_email/signup_confirm_email.inc,v
retrieving revision 1.4
diff -u -p -r1.4 signup_confirm_email.inc
--- modules/signup_confirm_email/signup_confirm_email.inc	21 Sep 2009 06:56:33 -0000	1.4
+++ modules/signup_confirm_email/signup_confirm_email.inc	1 Jun 2010 17:45:55 -0000
@@ -23,8 +23,8 @@ function signup_confirm_email_alter_sign
     // and we shouldn't confirm email when an admin is editing another signup).
     if (empty($user->uid) || $user->uid != $signup->uid) {
       return;
-    } 
-    
+    }
+
     // Ensure the user has permission to edit their own signups, or the rest
     // of this is wasted effort for a form that can't be submitted.
     $node = node_load($signup->nid);
@@ -91,7 +91,7 @@ function signup_email_confirm_validate($
   }
   // Add a JS setting for if the checkbox has a validation error, in which
   // case we display it, even if the 'E-mail address' field isn't re-edited.
-  drupal_add_js(array('signupConfirmEmailCheckboxError' => $error), 'setting');
+  drupal_add_js(array('signupConfirmEmailCheckboxError' => $error), array('type' => 'setting', 'scope' => JS_DEFAULT));
 }
 
 /**
@@ -105,7 +105,7 @@ function signup_email_confirm_validate($
  */
 function signup_email_confirm_submit($form, &$form_state) {
   global $user;
-  if (!empty($form_state['values']['email_confirm']) && 
+  if (!empty($form_state['values']['email_confirm']) &&
       !empty($form_state['values']['email_address'])) {
     if ($form_state['values']['email_address'] != $user->mail) {
       // Update the user's e-mail address in their profile.
Index: modules/signup_confirm_email/signup_confirm_email.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/modules/signup_confirm_email/signup_confirm_email.info,v
retrieving revision 1.2
diff -u -p -r1.2 signup_confirm_email.info
--- modules/signup_confirm_email/signup_confirm_email.info	19 Sep 2009 09:18:29 -0000	1.2
+++ modules/signup_confirm_email/signup_confirm_email.info	1 Jun 2010 17:45:55 -0000
@@ -3,4 +3,8 @@ name = Signup confirm e-mail
 description = "Adds a field to the signup form to confirm the user's e-mail address."
 dependencies[] = signup
 package = Signup
-core = 6.x
+core = 7.x
+
+files[] = signup_confirm_email.inc
+files[] = signup_confirm_email.install
+files[] = signup_confirm_email.module
Index: modules/signup_confirm_email/signup_confirm_email.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/modules/signup_confirm_email/signup_confirm_email.install,v
retrieving revision 1.1
diff -u -p -r1.1 signup_confirm_email.install
--- modules/signup_confirm_email/signup_confirm_email.install	3 Aug 2009 20:59:45 -0000	1.1
+++ modules/signup_confirm_email/signup_confirm_email.install	1 Jun 2010 17:45:55 -0000
@@ -2,6 +2,12 @@
 // $Id: signup_confirm_email.install,v 1.1 2009/08/03 20:59:45 dww Exp $
 
 /**
+ * @file
+ * Install, update and uninstall functions for the signup_confirm_email module.
+ *
+ */
+
+/**
  * Rebuild the site's menu to remove the stale menu item.
  */
 function signup_confirm_email_update_6000() {
Index: modules/signup_confirm_email/signup_confirm_email.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/modules/signup_confirm_email/signup_confirm_email.module,v
retrieving revision 1.3
diff -u -p -r1.3 signup_confirm_email.module
--- modules/signup_confirm_email/signup_confirm_email.module	18 Aug 2009 15:14:18 -0000	1.3
+++ modules/signup_confirm_email/signup_confirm_email.module	1 Jun 2010 17:45:55 -0000
@@ -13,7 +13,7 @@
 
 
 /**
- * Implement hook_form_alter().
+ * Implements hook_form_alter().
  */
 function signup_confirm_email_form_alter(&$form, &$form_state, $form_id) {
   if ($form_id == 'signup_form' || $form_id == 'signup_edit_form') {
Index: panels/content_types/signup_form.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/panels/content_types/signup_form.inc,v
retrieving revision 1.4
diff -u -p -r1.4 signup_form.inc
--- panels/content_types/signup_form.inc	15 Nov 2008 02:03:50 -0000	1.4
+++ panels/content_types/signup_form.inc	1 Jun 2010 17:45:55 -0000
@@ -25,7 +25,7 @@ function signup_panels_content_types_sig
   return array(
     'signup_form' => array(
       'title' => t('Signup form'),
-      'icon' => 'icon_node.png',  // TODO: choose different icon
+      'icon' => 'icon_node.png',   // TODO: choose different icon
       'path' => panels_get_path('content_types/node'), // TODO: adjust path
       'description' => t('Signup form.'),
       'required context' => new panels_required_context(t('Node'), 'node'),
@@ -40,7 +40,7 @@ function signup_panels_content_types_sig
  * Outputs the signup form based on a given nid, as provided by the $context.
  */
 function signup_panels_content_signup_form($subtype, $conf, $panel_args, &$context) {
-  $node = isset($context->data) ? drupal_clone($context->data) : NULL;
+  $node = isset($context->data) ? clone $context->data : NULL;
   $block = new stdClass();
   $block->module = 'signup';
   $block->subject = '';
Index: theme/admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/theme/admin.inc,v
retrieving revision 1.1
diff -u -p -r1.1 admin.inc
--- theme/admin.inc	12 Nov 2008 23:22:19 -0000	1.1
+++ theme/admin.inc	1 Jun 2010 17:45:55 -0000
@@ -16,22 +16,24 @@
  * results by signup status, which is rendered at the top of the page by
  * default.
  *
- * @param $filter_status_form
- *   HTML representation of the signup status filter form.
- * @param $signup_admin_form
- *   HTML representation of the main signup administration form.
+ * @param $variables
+ *   An array of variables containing:
+ *   - 'filter_status_form': HTML representation of the signup status filter
+ *     form.
+ *   - 'signup_admin_form': HTML representation of the main signup
+ *     administration form.
  *
  * @return
  *   Themed output for the signup administration overview page.
  */
-function theme_signup_admin_page($filter_status_form, $signup_admin_form) {
-  $output = $filter_status_form;
-  $output .= $signup_admin_form;
+function theme_signup_admin_page($variables) {
+  $output = $variables['filter_status_form'];
+  $output .= $variables['signup_admin_form'];
   return $output;
 }
 
 function theme_signup_filter_status_form($form) {
-  return '<div class="container-inline">'. drupal_render($form) .'</div>';
+  return '<div class="container-inline">' . drupal_render($form) . '</div>';
 }
 
 function theme_signup_admin_form($form) {
@@ -69,9 +71,9 @@ function theme_signup_admin_form($form) 
   }
   $header = $form['header']['#value'];
   unset($form['header']);
-  $output = theme('table', $header, $rows, array('style' => 'width:100%'));
+  $output = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('style' => 'width:100%')));
   $output .= drupal_render($form);
-  $pager = theme('pager', NULL, 25, 0);
+  $pager = theme('pager', array('tags' => NULL, 'element' => 0));
   if (!empty($pager)) {
     $output .= $pager;
   }
Index: theme/email.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/theme/email.inc,v
retrieving revision 1.2
diff -u -p -r1.2 email.inc
--- theme/email.inc	7 Jan 2009 00:55:00 -0000	1.2
+++ theme/email.inc	1 Jun 2010 17:45:55 -0000
@@ -17,7 +17,7 @@
  * @see theme_signup_custom_data_email()
  */
 function theme_signup_email_token_custom_data($signup_data) {
-  return t('SIGNUP INFORMATION') ."\n\r". theme('signup_custom_data_email', $signup_data);
+  return t('SIGNUP INFORMATION') . "\n\r" . theme('signup_custom_data_email', array('data' => $signup_data));
 }
 
 /**
@@ -42,10 +42,10 @@ function theme_signup_custom_data_email(
     if (is_array($value)) {
       // Element is nested, render it recursively.
       // Instead of the overhead of theme(), just call ourself directly.
-      $output .= "\n\r". call_user_func(__FUNCTION__, $value) ."\n\r";
+      $output .= "\n\r" . call_user_func(__FUNCTION__, $value) . "\n\r";
     }
     else {
-      $output .= theme('signup_custom_data_field_text', $key, $value) ."\n\r";
+      $output .= theme('signup_custom_data_field_text', array('key' => $key, 'value' => $value)) . "\n\r";
     }
   }
   return $output;
@@ -71,7 +71,7 @@ function theme_signup_custom_data_field_
   // warnings when extracting strings, "hide" the call to t() by using a
   // variable to hold the function name.
   $tr = 't';
-  return $tr($key) .': '. $value;
+  return $tr($key) . ': ' . $value;
 }
 
 /**
@@ -86,12 +86,12 @@ function theme_signup_custom_data_field_
  *   The final text to put in the email body sent to the broadcast sender.
  */
 function theme_signup_broadcast_sender_copy($raw_message, $cooked_message) {
-  $output = t('This is a copy of the signup broadcast you just sent.') ."\n";
-  $output .= wordwrap(t('Here is the original text you entered, with none of the tokens replaced:'), 72) ."\n";
+  $output = t('This is a copy of the signup broadcast you just sent.') . "\n";
+  $output .= wordwrap(t('Here is the original text you entered, with none of the tokens replaced:'), 72) . "\n";
   $output .= "----------\n";
   $output .= $raw_message;
   $output .= "\n----------\n\n";
-  $output .= wordwrap(t('Here is how the message that was sent to each user looked, with all of the tokens replaced (using your account for the user-related tokens):'), 72) ."\n";
+  $output .= wordwrap(t('Here is how the message that was sent to each user looked, with all of the tokens replaced (using your account for the user-related tokens):'), 72) . "\n";
   $output .= "----------\n";
   $output .= $cooked_message;
   $output .= "\n----------\n\n";
Index: theme/no_views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/theme/no_views.inc,v
retrieving revision 1.2
diff -u -p -r1.2 no_views.inc
--- theme/no_views.inc	19 Nov 2008 18:30:07 -0000	1.2
+++ theme/no_views.inc	1 Jun 2010 17:45:55 -0000
@@ -10,34 +10,40 @@
 /**
  * Formats the list of users signed up for a particular node.
  *
- * @param $node
- *   The node object that users have signed up for.
- * @param $registered_signups
- *   Array of objects with data for each registered user signed up.
- * @param $anon_signups
- *   Array of objects with data for each anonymous user signed up.
+ * @param $variables
+ *   An array of variables containing:
+ *   - 'node': The node object that users have signed up for.
+ *   - 'registered_signups': Array of objects with data for each registered
+ *     user signed up.
+ *   - 'anon_signups': Array of objects with data for each anonymous user
+ *     signed up.
  */
-function theme_signup_user_list($node, $registered_signups, $anon_signups) {
+function theme_signup_user_list($variables) {
+  $node = $variables['node'];
+  $registered_signups = $variables['registered_signups'];
+  $anon_signups = $variables['anon_signups'];
   $header = array(array('data' => t('!users signed up', array('!users' => format_plural((count($registered_signups) + count($anon_signups)), '1 individual', '@count individuals')))));
   $rows = array();
   foreach ($registered_signups as $signup) {
-    $rows[] = array(theme('username', $signup));
+    $rows[] = array(theme('username', array('account' => $signup)));
   }
   if (!empty($anon_signups)) {
     $rows[] = array(t('!count anonymous', array('!count' => count($anon_signups))));
   }
-  return theme('table', $header, $rows);
+  return theme('table', array('header' => $header, 'rows' => $rows));
 }
 
 /**
  * Format a user signup for display in a schedule list.
  *
- * @param node
- *   The node which needs theming
+ * @param $variables
+ *   An array of variables containing:
+ *   - 'node': The node which needs theming
  */
-function theme_signup_user_schedule($node) {
+function theme_signup_user_schedule($variables) {
+  $node = $variables['node'];
   $output = '';
-  $output .= '<div class="signup-user-schedule"><div class="'. $node->type .'signup-title"><h4>'. l($node->title, "node/$node->nid") .'</h4></div></div>';
+  $output .= '<div class="signup-user-schedule"><div class="' . $node->type . 'signup-title"><h4>' . l($node->title, "node/$node->nid") . '</h4></div></div>';
   return $output;
 }
 
Index: theme/node.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/theme/node.admin.inc,v
retrieving revision 1.8
diff -u -p -r1.8 node.admin.inc
--- theme/node.admin.inc	21 Sep 2009 05:23:02 -0000	1.8
+++ theme/node.admin.inc	1 Jun 2010 17:45:55 -0000
@@ -16,17 +16,21 @@
  * signup_node_admin_page()), and if the node is signup-enabled, the
  * form to signup other users.
  *
- * @param $node
- *   The node object for the signup-enabled node this is a tab on.
- * @param $signup_node_admin_summary_form
- *   The rendered HTML for the signup node summary form (to set the signup
- *   limit, open/close signups, see the total number of signups, etc).
- * @param $signup_node_admin_details_form
- *   The rendered HTML for the signup node details form (to view all the users
- *   who have signed up, their full signup details, and checkboxes to cancel
- *   multiple signups at once.
+ * @param $variables
+ *   An array of variables including:
+ *   - 'node': The node object for the signup-enabled node this is a tab on.
+ *   - 'signup_node_admin_summary_form': The rendered HTML for the signup node
+ *     summary form (to set the signup limit, open/close signups, see the total
+ *     number of signups, etc).
+ *   - 'signup_node_admin_details_form': The rendered HTML for the signup node
+ *     details form (to view all the users who have signed up, their full
+ *     signup details, and checkboxes to cancel multiple signups at once.
  */
-function theme_signup_node_admin_page($node, $signup_node_admin_summary_form, $signup_node_admin_details_form) {
+function theme_signup_node_admin_page($variables) {
+  $node = $variables['node'];
+  $signup_node_admin_summary_form = $variables['signup_node_admin_summary_form'];
+  $signup_node_admin_details_form = $variables['signup_node_admin_details_form'];
+
   $output = '';
 
   // Administrative summary table to control signups for this node.
@@ -41,7 +45,8 @@ function theme_signup_node_admin_page($n
 /**
  * Renders the HTML for the per-node signup summary administrative form.
  */
-function theme_signup_node_admin_summary_form($form) {
+function theme_signup_node_admin_summary_form($variables) {
+  $form = $variables['form'];
   $output = '';
   $output .= '<div class="container-inline">' . drupal_render($form['status']);
   if (!empty($form['submit']) && $form['status']['#type'] == 'select') {
@@ -66,21 +71,26 @@ function theme_signup_node_admin_summary
       }
     }
   }
-  $output .= drupal_render($form);
+  $output .= drupal_render_children($form);
   $fieldset = array(
     '#title' => t('Signup summary'),
     '#collapsible' => TRUE,
     '#collapsed' => FALSE,
+    '#attributes' => array(),
+    '#children' => '',
     '#value' => $output,
   );
-  return theme('fieldset', $fieldset);
+  return theme('fieldset', array('element' => $fieldset));
 }
 
-function theme_signup_node_admin_details_form($form) {
+function theme_signup_node_admin_details_form($variables) {
+  $form = $variables['form'];
   $fieldset = array(
     '#title' => t('Signup details'),
     '#collapsible' => TRUE,
     '#collapsed' => FALSE,
+    '#attributes' => array(),
+    '#children' => '',
   );
   if (!empty($form['users']['#options'])) {
     $header = $form['#header'];
@@ -98,12 +108,12 @@ function theme_signup_node_admin_details
     $fieldset['#value'] .= drupal_render($form['operation']);
     $fieldset['#value'] .= drupal_render($form['submit']);
     $fieldset['#value'] .= '</div>';
-    $fieldset['#value'] .= theme('table', $header, $rows);
+    $fieldset['#value'] .= theme('table', array('header' => $header, 'rows' => $rows));
   }
   else {
-    $fieldset['#value'] = '<span>'. drupal_render($form['no_users']) .'</span>';
+    $fieldset['#value'] = '<span>' . drupal_render($form['no_users']) . '</span>';
   }
-  return theme('fieldset', $fieldset) . drupal_render($form);
+  return theme('fieldset', array('element' => $fieldset)) . drupal_render_children($form);
 }
 
 /**
@@ -113,15 +123,17 @@ function theme_signup_node_admin_details
  * nested data), so if you override it, be sure not to change the part
  * where it does "call_user_func(__FUNCTION__)".
  *
- * @param $data
- *   Array of custom user signup data.
+ * @param $variables
+ *   An array of variables including:
+ *   - 'data': Array of custom user signup data.
  *
  * @return
  *   User data directly formatted in divs.
  *
  * @see theme_signup_user_form()
  */
-function theme_signup_custom_data($data) {
+function theme_signup_custom_data($variables) {
+  $data = $variables['data'];
   $output = '';
   // All of the possible array key values should already be translated as
   // string literals in theme_signup_user_form() via the #title attributes, so
@@ -131,21 +143,22 @@ function theme_signup_custom_data($data)
   $tr = 't';
   // Loop through each first level element.
   foreach ($data as $key => $value) {
-    $output .= '<div id="'. signup_id_safe($key) .'">';
+    $output .= '<div id="' . signup_id_safe($key) . '">';
     if (is_array($value)) {
       // Element is nested, render it recursively.
       // Instead of the overhead of theme(), just call ourself directly.
       $output .= call_user_func(__FUNCTION__, $value);
     }
     else {
-      $output .= $tr($key) .': '. check_plain($value);
+      $output .= $tr($key) . ': ' . check_plain($value);
     }
     $output .= "</div>\n";
   }
   return $output;
 }
 
-function theme_signup_attended_text($attended = NULL) {
+function theme_signup_attended_text($variables) {
+  $attended = $variables['attended'];
   if ($attended === NULL) {
     return '';
   }
Index: theme/node.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/theme/node.inc,v
retrieving revision 1.3
diff -u -p -r1.3 node.inc
--- theme/node.inc	22 Jan 2009 18:59:29 -0000	1.3
+++ theme/node.inc	1 Jun 2010 17:45:55 -0000
@@ -10,11 +10,11 @@
 /**
  * Controls the output displayed if this node is closed for signups.
  *
- * @param $node
- *   The fully loaded node object.
- * @param $current_signup
- *   If the user already signed up, an HTML representation of their current
- *   signup information, otherwise an empty string.
+ * @param $variables
+ *   An array of variables containing:
+ *   - 'node': The fully loaded node object.
+ *   - 'current_signup': If the user already signed up, an HTML representation
+ *     of their current signup information, otherwise an empty string.
  *
  * @return
  *   Themed output to display for a node with closed signups.
@@ -22,8 +22,10 @@
  * @see _signup_node_output()
  * @see _signup_print_current_signup()
  */
-function theme_signup_signups_closed($node, $current_signup = '') {
-  $output = '<h3>'. t('Signups closed for this %node_type', array('%node_type' => node_get_types('name', $node->type))) .'</h3>';
+function theme_signup_signups_closed($variables) {
+  $node = $variables['node'];
+  $current_signup = $variables['current_signup'];
+  $output = '<h3>' . t('Signups closed for this %node_type', array('%node_type' => node_type_get_name($node->type))) . '</h3>';
   $output .= $current_signup;
   return $output;
 }
@@ -31,30 +33,33 @@ function theme_signup_signups_closed($no
 /**
  * Controls the output for anonymous users who can't signup.
  *
- * @param $anon_login_text
- *   The translated HTML help text telling users to login (and if allowed on
- *   this site, register) so they can signup, including login/register links.
+ * @param $variables
+ *   An array of variables containing:
+ *   - 'anon_login_text': The translated HTML help text telling users to login
+ *     (and if allowed on this site, register) so they can signup, including
+ *     login/register links.
  *
  * @return
  *   The themed HTML to display the login (and maybe register) help text.
  */
-function theme_signup_anonymous_user_login_text($anon_login_text) {
-  if (!empty($anon_login_text)) {
-    return '<div class="signup_anonymous_login">'. $anon_login_text .'</div>';
+function theme_signup_anonymous_user_login_text($variables) {
+  if (!empty($variables['anon_login_text'])) {
+    return '<div class="signup_anonymous_login">' . $variables['anon_login_text'] . '</div>';
   }
 }
 
 /**
  * Return HTML desired at the top of the signup output for a node.
  *
- * @param $node
- *   The fully loaded node object to generate a header for.
+ * @param $variables
+ *   An array of variables containing:
+ *   - 'node': The fully loaded node object to generate a header for.
  *
  * @return
  *   HTML to display at the top of the signup output.
  *
  * @see _signup_node_output()
  */
-function theme_signup_node_output_header($node) {
+function theme_signup_node_output_header($variables) {
   return '<a name="signup"></a>';
 }
Index: views/signup.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/signup.views.inc,v
retrieving revision 1.11
diff -u -p -r1.11 signup.views.inc
--- views/signup.views.inc	22 Jul 2009 21:47:01 -0000	1.11
+++ views/signup.views.inc	1 Jun 2010 17:46:02 -0000
@@ -206,7 +206,7 @@ function signup_views_data() {
     'click sortable' => TRUE,
     'field' => array(
       'handler' => 'signup_handler_field_signup_user_email',
-      'help' => t('Email address of a user (authenticated or anonymous) who signed up.') .' <strong>'. t('WARNING: only expose this data in a view that is restricted to users whom you can trust with such sensitive information.') .'</strong>',
+      'help' => t('Email address of a user (authenticated or anonymous) who signed up.') . ' <strong>' . t('WARNING: only expose this data in a view that is restricted to users whom you can trust with such sensitive information.') . '</strong>',
     ),
   );
 
@@ -294,7 +294,7 @@ function signup_views_data() {
 function signup_views_handlers() {
   return array(
     'info' => array(
-      'path' => drupal_get_path('module', 'signup') .'/views/handlers',
+      'path' => drupal_get_path('module', 'signup') . '/views/handlers',
     ),
     'handlers' => array(
       'signup_handler_argument_signup_user_uid' => array(
@@ -341,7 +341,7 @@ function signup_views_handlers() {
  * Implementation of hook_views_plugins().
  */
 function signup_views_plugins() {
-  $path = drupal_get_path('module', 'signup') .'/views/plugins';
+  $path = drupal_get_path('module', 'signup') . '/views/plugins';
   return array(
     'argument validator' => array(
       'signup_status' => array(
Index: views/signup.views_default.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/signup.views_default.inc,v
retrieving revision 1.9
diff -u -p -r1.9 signup.views_default.inc
--- views/signup.views_default.inc	3 Oct 2009 01:21:58 -0000	1.9
+++ views/signup.views_default.inc	1 Jun 2010 17:46:02 -0000
@@ -12,13 +12,13 @@
  */
 function signup_views_default_views() {
   // Search the "default_views" directory for files ending in .view.php.
-  $files = file_scan_directory(drupal_get_path('module', 'signup'). '/views/default_views', 'view.php');
+  $files = file_scan_directory(drupal_get_path('module', 'signup') . '/views/default_views', '/view.php/', );
   foreach ($files as $absolute => $file) {
     if (strpos($file->name, '_vbo_') !== FALSE && !module_exists('views_bulk_operations')) {
       // This is a VBO-specific view, but we don't have VBO, so skip it.
       continue;
     }
-    require_once $absolute;
+    require_once DRUPAL_ROOT . '/' . $absolute;
     if (isset($view)) {
       // $file->name has the ".php" stripped off, but still has the ".view".
       $view_name = substr($file->name, 0, strrpos($file->name, '.'));
Index: views/handlers/signup_handler_field_signup_node_link.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/handlers/signup_handler_field_signup_node_link.inc,v
retrieving revision 1.4
diff -u -p -r1.4 signup_handler_field_signup_node_link.inc
--- views/handlers/signup_handler_field_signup_node_link.inc	20 Sep 2009 23:12:32 -0000	1.4
+++ views/handlers/signup_handler_field_signup_node_link.inc	1 Jun 2010 17:46:02 -0000
@@ -80,7 +80,7 @@ class signup_handler_field_signup_node_l
   }
 
   function check_access($node, $tab) {
-    switch ($tab) {    
+    switch ($tab) {
       case 'signup':
         // Slightly complicated, since _signup_menu_access() is testing if we
         // want the signup tab, but here we just want to know if the user can
Index: views/handlers/signup_handler_field_signup_user_attended.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/handlers/signup_handler_field_signup_user_attended.inc,v
retrieving revision 1.1
diff -u -p -r1.1 signup_handler_field_signup_user_attended.inc
--- views/handlers/signup_handler_field_signup_user_attended.inc	18 Dec 2008 00:55:29 -0000	1.1
+++ views/handlers/signup_handler_field_signup_user_attended.inc	1 Jun 2010 17:46:02 -0000
@@ -6,7 +6,7 @@
  */
 class signup_handler_field_signup_user_attended extends views_handler_field {
   function render($values) {
-    return theme('signup_attended_text', $values->{$this->field_alias});
+    return theme('signup_attended_text', array('attended' => $values->{$this->field_alias}));
   }
 }
 
Index: views/handlers/signup_handler_field_signup_user_form_data.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/handlers/signup_handler_field_signup_user_form_data.inc,v
retrieving revision 1.2
diff -u -p -r1.2 signup_handler_field_signup_user_form_data.inc
--- views/handlers/signup_handler_field_signup_user_form_data.inc	7 Jan 2009 00:55:00 -0000	1.2
+++ views/handlers/signup_handler_field_signup_user_form_data.inc	1 Jun 2010 17:46:02 -0000
@@ -26,7 +26,7 @@ class signup_handler_field_signup_user_f
         $form_data = unserialize($result->{$this->field_alias});
         if ($form_data) {
           foreach ($form_data as $key => $value) {
-            $this->items[$result->{$this->field_alias}][$key] = check_plain(theme('signup_custom_data_field_text', $key, $value));
+            $this->items[$result->{$this->field_alias}][$key] = check_plain(theme('signup_custom_data_field_text', array('key' => $key, 'value' => $value)));
           }
         }
       }
Index: views/handlers/signup_handler_filter_signup_disabled.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/handlers/signup_handler_filter_signup_disabled.inc,v
retrieving revision 1.5
diff -u -p -r1.5 signup_handler_filter_signup_disabled.inc
--- views/handlers/signup_handler_filter_signup_disabled.inc	18 Dec 2008 18:43:00 -0000	1.5
+++ views/handlers/signup_handler_filter_signup_disabled.inc	1 Jun 2010 17:46:02 -0000
@@ -11,7 +11,7 @@ class signup_handler_filter_signup_disab
 
   function query() {
     $this->ensure_my_table();
-    $this->query->add_where($this->options['group'], "$this->table_alias.nid ". (empty($this->value) ? 'IS' : 'IS NOT') .' NULL');
+    $this->query->add_where($this->options['group'], "$this->table_alias.nid " . (empty($this->value) ? 'IS' : 'IS NOT') . ' NULL');
   }
 }
 
Index: views/handlers/signup_handler_filter_signup_user_authenticated.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/handlers/signup_handler_filter_signup_user_authenticated.inc,v
retrieving revision 1.4
diff -u -p -r1.4 signup_handler_filter_signup_user_authenticated.inc
--- views/handlers/signup_handler_filter_signup_user_authenticated.inc	18 Dec 2008 18:43:00 -0000	1.4
+++ views/handlers/signup_handler_filter_signup_user_authenticated.inc	1 Jun 2010 17:46:02 -0000
@@ -11,7 +11,7 @@ class signup_handler_filter_signup_user_
 
   function query() {
     $this->ensure_my_table();
-    $this->query->add_where($this->options['group'], "$this->table_alias.$this->real_field ". ($this->value ? '!= ' : '= ') ."0");
+    $this->query->add_where($this->options['group'], "$this->table_alias.$this->real_field " . ($this->value ? '!= ' : '= ') . "0");
   }
 }
 
Index: views/plugins/signup_plugin_access_user_signup_list.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/plugins/signup_plugin_access_user_signup_list.inc,v
retrieving revision 1.1
diff -u -p -r1.1 signup_plugin_access_user_signup_list.inc
--- views/plugins/signup_plugin_access_user_signup_list.inc	22 Jul 2009 21:47:01 -0000	1.1
+++ views/plugins/signup_plugin_access_user_signup_list.inc	1 Jun 2010 17:46:02 -0000
@@ -36,7 +36,7 @@ class signup_plugin_access_user_signup_l
   function option_defaults(&$options) {
     $options['signup_user_argument'] = '';
   }
-  
+
   function options_form(&$form, &$form_state) {
     $arguments = array();
     foreach ($this->view->display_handler->get_handlers('argument') as $id => $handler) {
