? autoresponder-d6.patch
Index: autoresponder.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/autoresponder/autoresponder.info,v
retrieving revision 1.1.4.4
diff -u -p -r1.1.4.4 autoresponder.info
--- autoresponder.info	30 Jul 2007 08:24:18 -0000	1.1.4.4
+++ autoresponder.info	5 Jul 2008 19:50:44 -0000
@@ -1,5 +1,6 @@
 ; $Id $
 name = Autoresponder
 description = Allow a site visitor to sign up for a series of emails sent each day via a cron job.
-dependencies = mimemail
-version = 5.x-1.x-dev
\ No newline at end of file
+core = 6.x
+dependencies[] = mimemail
+version = 6.x-1.x-dev
Index: autoresponder.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/autoresponder/autoresponder.install,v
retrieving revision 1.1.2.5
diff -u -p -r1.1.2.5 autoresponder.install
--- autoresponder.install	11 Sep 2007 13:28:49 -0000	1.1.2.5
+++ autoresponder.install	5 Jul 2008 19:50:45 -0000
@@ -3,77 +3,142 @@
 //$Id: autoresponder.install,v 1.1.2.5 2007/09/11 13:28:49 cyberpunk Exp $
 
 /**
+ * Schema specification for Drupal 6
+ */
+function autoresponder_schema() {
+  $schema = array();
+  
+  $schema['autoresponder_users'] = array(
+    'description' => t('The autoresponder users'),
+    'fields' => array(
+      'id' => array(
+        'description' => t('Identifies the autoresponder subscriber'),
+        'type' => 'serial',
+        'not null' => TRUE,
+      ),
+      'email' => array(
+        'description' => t("The subscriber's e-mail address"),
+        'type' => 'varchar',
+        'length' => 50,
+        'not null' => TRUE,
+      ),
+      'reg_date' => array(
+        'description' => t("Registration date"),
+        'type' => 'int',
+        'not null' => TRUE,
+      ),
+    ),
+    'primary key' => array('id'),
+  );
+  
+  $schema['autoresponder_messages'] = array(
+    'description' => t('The individual messages which can be part of {autoresponder_sets}'),
+    'fields' => array(
+      'id' => array(
+        'description' => t('Identifies the message'),
+        'type' => 'serial',
+        'not null' => TRUE,
+      ),
+      'subject' => array(
+        'description' => t('The mail subject'),
+        'type' => 'varchar',
+        'length' => 50,
+        'not null' => TRUE,
+      ),
+      'body' => array(
+        'description' => t('The mail body'),
+        'type' => 'text',
+        'size' => 'normal',
+        'not null' => TRUE,
+      ),
+      'day' => array(
+        'description' => t('The day when the message is sent'),
+        'type' => 'int',
+        'not null' => FALSE,
+      ),
+      'mset' => array(
+        'description' => t('The {autoresponder_sets}.id which this message is part of'),
+        'type' => 'int',
+        'not null' => FALSE,
+      ),
+    ),
+    'primary key' => array('id'),
+  );
+  
+  $schema['autoresponder_sets'] = array(
+    'description' => t('Message sets'),
+    'fields' => array(
+      'id' => array(
+        'description' => t('Message set identifier'),
+        'type' => 'serial',
+        'not null' => TRUE,
+      ),
+      'name' => array(
+        'description' => t('Message set name'),
+        'type' => 'varchar',
+        'length' => 50,
+        'not null' => TRUE,
+      ),
+      'description' => array(
+        'description' => t('Message set description'),
+        'type' => 'text',
+        'size' => 'normal',
+        'not null' => TRUE,
+      ),
+      'message' => array(
+        'description' => t('Message that is shown to the user after successful subscribing'),
+        'type' => 'text',
+        'size' => 'normal',
+        'not null' => TRUE,
+      ),
+      'active' => array(
+        'description' => t('Indicates this is an active set or not'),
+        'type' => 'int',
+        'size' => 'small',
+        'not null' => TRUE,
+      ),
+      'unsubscribe' => array(
+        'description' => t('User automatically unsubscribed when last mail sent or not'),
+        'type' => 'int',
+        'size' => 'small',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+    ),
+    'primary key' => array('id'),
+  );
+  
+  $schema['autoresponder'] = array(
+    'description' => t('Pairs {autoresponder_users} and {autoresponder_sets}'),
+    'fields' => array(
+      'id' => array(
+        'description' => t('Identifies the user-set pair'),
+        'type' => 'serial',
+        'not null' => TRUE,
+      ),
+      'uid' => array(
+        'description' => t('{autoresponder_users}.id'),
+        'type' => 'int',
+        'not null' => TRUE,
+      ),
+      'setid' => array(
+        'description' => t('{autoresponder_sets}.id'),
+        'type' => 'int',
+        'not null' => TRUE,
+      ),
+    ),
+    'primary key' => array('id'),
+  );
+  
+  return $schema;
+}
+
+/**
  * Install the database schema
  */
 function autoresponder_install() {
   variable_set('emails_sent', '0');
-  switch($GLOBALS['db_type']) {
-    case 'mysql':
-    case 'mysqli':
-      db_query("CREATE TABLE {autoresponder_users} (
-      id int(11) NOT NULL default '0',
-      email char(50) NOT NULL,
-      reg_date int(11) NOT NULL,
-      PRIMARY KEY  (id)
-      );");
-      db_query("CREATE TABLE {autoresponder_messages} (
-      id int(11) NOT NULL default '0',
-      subject char(50) NOT NULL,
-      body text NOT NULL,
-      day int(11) default NULL,
-      mset int(11) default NULL,
-      PRIMARY KEY  (id)
-      );");
-      db_query("CREATE TABLE {autoresponder_sets} (
-      id int(11) NOT NULL default '0',
-      name char(50) NOT NULL,
-      description text NOT NULL,
-      message text NOT NULL,
-      active bool NOT NULL,
-      unsubscribe bool NOT NULL,
-      PRIMARY KEY  (id)
-      );");
-      db_query("CREATE TABLE {autoresponder} (
-      id int(11) NOT NULL default '0',
-      uid int(11) NOT NULL,
-      setid int(11) NOT NULL,
-      PRIMARY KEY  (id)
-      );");
-      drupal_set_message(t("The database schema for the autoresponder module was created."));
-      break;
-    case 'pgsql':
-      db_query("CREATE TABLE {autoresponder_users} (
-      id integer NOT NULL UNIQUE,
-      email char(50) NOT NULL,
-      reg_date integer NOT NULL
-      );");
-      db_query("CREATE TABLE {autoresponder_messages} (
-      id integer NOT NULL UNIQUE,
-      subject char(50) NOT NULL,
-      body text NOT NULL,
-      day integer default NULL,
-      mset integer default NULL
-      );");
-      db_query("CREATE TABLE {autoresponder_sets} (
-      id integer NOT NULL UNIQUE,
-      name char(50) NOT NULL,
-      description text NOT NULL,
-      message text NOT NULL,
-      active smallint NOT NULL,
-      unsubscribe smallint NOT NULL
-      );");
-      db_query("CREATE TABLE {autoresponder} (
-      id integer NOT NULL UNIQUE,
-      uid integer NOT NULL,
-      setid integer NOT NULL
-      );");
-      db_query("CREATE SEQUENCE {autoresponder_users}_seq");
-      db_query("CREATE SEQUENCE {autoresponder_messages}_seq");
-      db_query("CREATE SEQUENCE {autoresponder_sets}_seq");
-      db_query("CREATE SEQUENCE {autoresponder}_seq");
-      drupal_set_message(t("The database schema for the autoresponder module was created."));
-      break;
-  }
+  drupal_install_schema('autoresponder');
 }
 
 /**
@@ -81,25 +146,5 @@ function autoresponder_install() {
  */
 function autoresponder_uninstall() {
   variable_del('emails_sent');
-  switch($GLOBALS['db_type']) {
-    case 'mysql':
-    case 'mysqli':
-      db_query("DROP TABLE {autoresponder_users}");
-      db_query("DROP TABLE {autoresponder_messages}");
-      db_query("DROP TABLE {autoresponder_sets}");
-      db_query("DROP TABLE {autoresponder}");
-      break;
-    case 'pgsql':
-      db_query("DROP TABLE {autoresponder_users}");
-      db_query("DROP TABLE {autoresponder_messages}");
-      db_query("DROP TABLE {autoresponder_sets}");
-      db_query("DROP TABLE {autoresponder}");
-      db_query("DROP SEQUENCE {autoresponder_users}_seq");
-      db_query("DROP SEQUENCE {autoresponder_messages}_seq");
-      db_query("DROP SEQUENCE {autoresponder_sets}_seq");
-      db_query("DROP SEQUENCE {autoresponder}_seq");
-      drupal_set_message(t("Autoresponder module successfully uninstalled."));
-      break;
-  }
+  drupal_uninstall_schema('autoresponder');
 }
-?>
\ No newline at end of file
Index: autoresponder.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/autoresponder/autoresponder.module,v
retrieving revision 1.6.2.26
diff -u -p -r1.6.2.26 autoresponder.module
--- autoresponder.module	3 Jul 2008 15:33:15 -0000	1.6.2.26
+++ autoresponder.module	5 Jul 2008 19:50:48 -0000
@@ -6,175 +6,153 @@ function autoresponder_perm() {
   return array('configure autoresponder', 'autoresponder massmail');
 }
 
-function autoresponder_menu($may_cache) {
+function autoresponder_menu() {
   $items = array();
-  if ($may_cache) {
-    global $user;
-    $items[] = array(
-      'path' => 'autoresponder/unsubscribe',
-      'access' => TRUE,
-      'callback' => 'autoresponder_user_unsubscribe',
-      'type' => MENU_CALLBACK
-    );
-    $items[] = array(
-      'path' => 'autoresponder/mail',
-      'access' => TRUE,
-      'callback' => 'drupal_get_form',
-      'callback arguments' => array('autoresponder_mail_show_form'),
-      'title' => t('View message'),
-      'type' => MENU_CALLBACK
-    );  
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder',
-      'title' => t('Autoresponder'),
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'system_admin_menu_block_page',
-      'description' => t('Autoresponder control panel')
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/settings',
-      'title' => t('Autoresponder settings'),
-      'access' => user_access('autoresponder settings'),
-      'callback' => 'drupal_get_form',
-      'callback arguments' => array('autoresponder_admin_settings'),
-      'description' => t('Settings'),
-      'weight' => 7
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/massmailer',
-      'title' => t('Mass-Mailer'),
-      'access' => user_access('autoresponder massmail'),
-      'callback' => 'drupal_get_form',
-      'callback arguments' => array('autoresponder_set_massmail_form'),
-      'description' => t('Sets/Subscribers/Roles mass-mailer')
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/massmailer/sets',
-      'title' => t('Sets mass-mailing'),
-      'access' => user_access('autoresponder massmail'),
-      'type' => MENU_DEFAULT_LOCAL_TASK,
-      'callback' => 'drupal_get_form',
-      'callback arguments' => array('autoresponder_set_massmail_form'),
-      'weight' => 0
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/massmailer/role',
-      'title' => t('Role mass-mailing'),
-      'access' => user_access('autoresponder massmail'),
-      'type' => MENU_LOCAL_TASK,
-      'callback' => 'drupal_get_form',
-      'callback arguments' => array('autoresponder_role_massmail_form'),
-      'weight' => 1
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/massmailer/all',
-      'title' => t('All subscribers mass-mailing'),
-      'access' => user_access('autoresponder massmail'),
-      'type' => MENU_LOCAL_TASK,
-      'callback' => 'drupal_get_form',
-      'callback arguments' => array('autoresponder_all_massmail_form'),
-      'weight' => 2
-    );
-
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/user/list',
-      'title' => t('Users'),
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_user_list',
-      'description' => t('Subscribers overview'),
-      'weight' => 0
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/user/edit',
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_user_list',
-      'type' => MENU_CALLBACK,
-      'weight' => 1
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/user/delete',
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_user_list',
-      'type' => MENU_CALLBACK,
-    );
-
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/mail/list',
-      'title' => t('Messages'),
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_mail_list',
-      'description' => t('Messages overview'),
-      'weight' => 2
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/mail/add',
-      'title' => t('Add message'),
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_mail_list',
-      'type' => MENU_LOCAL_TASK,
-      'weight' => 3
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/mail/edit',
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_mail_list',
-      'type' => MENU_CALLBACK,
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/mail/delete',
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_mail_list',
-      'type' => MENU_CALLBACK,
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/set/list',
-      'title' => t('Sets'),
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_set_list',
-      'description' => t('E-mails sets overview'),
-      'weight' => 4
-    );
-
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/set/add', 'title' => t('Add set'),
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_set_list',
-      'type' => MENU_LOCAL_TASK,
-      'weight' => 5
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/set/activate',
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_set_list',
-      'type' => MENU_CALLBACK,
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/set/deactivate',
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_set_list',
-      'type' => MENU_CALLBACK,
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/set/edit',
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_set_list',
-      'type' => MENU_CALLBACK,
-    );
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/set/delete',
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_set_list',
-      'type' => MENU_CALLBACK,
-    );
-   
-    $items[] = array(
-      'path' => 'admin/settings/autoresponder/status', 'title' => t('Status'),
-      'access' => user_access('configure autoresponder'),
-      'callback' => 'autoresponder_status',
-      'description' => t('Status of e-mails sending. Manual mailing.'),
-      'weight' => 6
-    );
-  }
+  global $user;
+  $items['autoresponder/unsubscribe'] = array(
+    'access callback' => TRUE,
+    'page callback' => 'autoresponder_user_unsubscribe',
+    'type' => MENU_CALLBACK
+  );
+  $items['autoresponder/mail'] = array(
+    'access callback' => TRUE,
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('autoresponder_mail_show_form'),
+    'title' => 'View message',
+    'type' => MENU_CALLBACK
+  );  
+  $items['admin/settings/autoresponder'] = array(
+    'title' => 'Autoresponder',
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'system_admin_menu_block_page',
+    'description' => 'Autoresponder control panel'
+  );
+  $items['admin/settings/autoresponder/settings'] = array(
+    'title' => 'Autoresponder settings',
+    'access arguments' => array('autoresponder settings'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('autoresponder_admin_settings'),
+    'description' => 'Settings',
+    'weight' => 7
+  );
+  $items['admin/settings/autoresponder/massmailer'] = array(
+    'title' => 'Mass-Mailer',
+    'access arguments' => array('autoresponder massmail'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('autoresponder_set_massmail_form'),
+    'description' => 'Sets/Subscribers/Roles mass-mailer'
+  );
+  $items['admin/settings/autoresponder/massmailer/sets'] = array(
+    'title' => 'Sets mass-mailing',
+    'access arguments' => array('autoresponder massmail'),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('autoresponder_set_massmail_form'),
+    'weight' => 0
+  );
+  $items['admin/settings/autoresponder/massmailer/role'] = array(
+    'title' => 'Role mass-mailing',
+    'access arguments' => array('autoresponder massmail'),
+    'type' => MENU_LOCAL_TASK,
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('autoresponder_role_massmail_form'),
+    'weight' => 1
+  );
+  $items['admin/settings/autoresponder/massmailer/all'] = array(
+    'title' => 'All subscribers mass-mailing',
+    'access arguments' => array('autoresponder massmail'),
+    'type' => MENU_LOCAL_TASK,
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('autoresponder_all_massmail_form'),
+    'weight' => 2
+  );
+
+  $items['admin/settings/autoresponder/user/list'] = array(
+    'title' => 'Users',
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_user_list',
+    'description' => 'Subscribers overview',
+    'weight' => 0
+  );
+  $items['admin/settings/autoresponder/user/edit'] = array(
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_user_list',
+    'type' => MENU_CALLBACK,
+    'weight' => 1
+  );
+  $items['admin/settings/autoresponder/user/delete'] = array(
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_user_list',
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['admin/settings/autoresponder/mail/list'] = array(
+    'title' => 'Messages',
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_mail_list',
+    'description' => 'Messages overview',
+    'weight' => 2
+  );
+  $items['admin/settings/autoresponder/mail/add'] = array(
+    'title' => 'Add message',
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_mail_list',
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 3
+  );
+  $items['admin/settings/autoresponder/mail/edit'] = array(
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_mail_list',
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/autoresponder/mail/delete'] = array(
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_mail_list',
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/autoresponder/set/list'] = array(
+    'title' => 'Sets',
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_set_list',
+    'description' => 'E-mails sets overview',
+    'weight' => 4
+  );
+
+  $items['admin/settings/autoresponder/set/add'] = array(
+    'title' => 'Add set',
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_set_list',
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 5
+  );
+  $items['admin/settings/autoresponder/set/activate'] = array(
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_set_list',
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/autoresponder/set/deactivate'] = array(
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_set_list',
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/autoresponder/set/edit'] = array(
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_set_list',
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/autoresponder/set/delete'] = array(
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_set_list',
+    'type' => MENU_CALLBACK,
+  );
+  
+  $items['admin/settings/autoresponder/status'] = array(
+    'title' => 'Status',
+    'access arguments' => array('configure autoresponder'),
+    'page callback' => 'autoresponder_status',
+    'description' => 'Status of e-mails sending. Manual mailing.',
+    'weight' => 6
+  );
  return $items;
 }
 
@@ -191,7 +169,7 @@ function autoresponder_admin_settings() 
     '#default_value' => variable_get('autoresponder_select_type', 'select'),
     '#options' => array('select' => t('Dropdown list'), 'checkboxes' => t('Multiple select list'))
   );
-  if (db_num_rows(db_query('SELECT * FROM {autoresponder_sets}')) > 1) {
+  if (db_result(db_query('SELECT COUNT(*) FROM {autoresponder_sets}')) > 1) {
     $hide = TRUE;
   }
   $form['block_settings']['autoresponder_hide_select'] = array(
@@ -256,7 +234,7 @@ function autoresponder_status_form() {
   return $form;
 }
 
-function autoresponder_status_form_submit($form_id, $form_values) {
+function autoresponder_status_form_submit($form, &$form_state) {
   variable_set('emails_sent', 0);
   autoresponder_cron();
   drupal_set_message(t('E-Mails successfully sent!'));
@@ -281,16 +259,14 @@ function autoresponder_user_unsubscribe_
     return drupal_access_denied();
   }
   if ($id) {
-    $result = db_query('SELECT a.*, at.name, au.email
+    $result = db_query_range('SELECT a.*, at.name, au.email
       FROM {autoresponder} AS a
       LEFT JOIN {autoresponder_sets} AS at ON a.setid = at.id
       LEFT JOIN {autoresponder_users} AS au ON a.uid = au.id
       WHERE at.id = %d AND au.id = %d
-      LIMIT 1
-      ', $id, $uid);
+      ', $id, $uid, 0, 1);
      
-    if (db_num_rows($result) > 0) {
-      $us = db_fetch_object($result);
+    if ($us = db_fetch_object($result)) {
       $form = array();
       $form['id'] = array(
         '#type' => 'value',
@@ -323,12 +299,12 @@ function autoresponder_user_unsubscribe_
   drupal_goto();
 }
 
-function autoresponder_user_unsubscribe_confirm_form_submit($form_id, $form_values) {
-  db_query('DELETE FROM {autoresponder} WHERE setid = %d AND uid = %d', $form_values['id'], $form_values['uid']);
-  drupal_set_message(t('Successfully unsubscribed %email from %set mailing list!', array('%email' => $form_values['email'], '%set' => $form_values['set'])));
-  $result = db_query('SELECT uid FROM {autoresponder} WHERE uid = %d', $form_values['uid']);
-  if (!db_num_rows($result))
-    db_query('DELETE FROM {autoresponder_users} WHERE id = %d', $form_values['uid']);
+function autoresponder_user_unsubscribe_confirm_form_submit($form, &$form_state) {
+  db_query('DELETE FROM {autoresponder} WHERE setid = %d AND uid = %d', $form_state['values']['id'], $form_state['values']['uid']);
+  drupal_set_message(t('Successfully unsubscribed %email from %set mailing list!', array('%email' => $form_state['values']['email'], '%set' => $form_state['values']['set'])));
+  $result = db_query('SELECT COUNT(uid) FROM {autoresponder} WHERE uid = %d', $form_state['values']['uid']);
+  if (!db_result($result))
+    db_query('DELETE FROM {autoresponder_users} WHERE id = %d', $form_state['values']['uid']);
   drupal_goto();
 }
 
@@ -379,8 +355,8 @@ function autoresponder_mail($u, $mail) {
   $plain_text_only = FALSE;
   $plain_text_body = autoresponder_html_to_text($mail->body, array());
   $hash = md5($mail->to);
-  $url_unsubscribe = url('autoresponder/unsubscribe/'.$u->setid.'/'.$u->uid.'/'.$hash, NULL, NULL, TRUE);
-  $url_view = url('autoresponder/mail/'.$u->setid.'/'.$mail->id.'/'.$u->uid.'/'.$hash, NULL, NULL, TRUE);
+  $url_unsubscribe = url('autoresponder/unsubscribe/'.$u->setid.'/'.$u->uid.'/'.$hash, array('absolute' => TRUE));
+  $url_view = url('autoresponder/mail/'.$u->setid.'/'.$mail->id.'/'.$u->uid.'/'.$hash, array('absolute' => TRUE));
   $mail->body .= "<br /><small>-------------------------<br />To view this message in the web follow this link <a href='$url_view'>$url_view</a></small>";
   $mail->body .= "<br /><small>To unsubscribe from the list follow this link <a href='$url_unsubscribe'>$url_unsubscribe</a></small>";
   watchdog('autoresponder', "Email sended to <i>$mail->to</i> with subject <i>$mail->subject</i>");
@@ -396,19 +372,15 @@ function autoresponder_mail_show_form() 
     return drupal_not_found();
   }
   // Check if message exists
-  $sql = 'SELECT * FROM {autoresponder_messages} WHERE id = %d AND mset = %d LIMIT 1';
-  $result = db_query($sql, $mid, $sid);
-  if (db_num_rows($result) < 1)
+  $sql = 'SELECT * FROM {autoresponder_messages} WHERE id = %d AND mset = %d';
+  $result = db_query_range($sql, $mid, $sid, 0, 1);
+  if (!($message = db_fetch_object($result)))
     return drupal_not_found();
-  else
-    $message = db_fetch_object($result);
   // Check if user exists and subscribed to this message
   $sql = 'SELECT aus.email FROM {autoresponder} a LEFT JOIN {autoresponder_users} aus ON a.uid = aus.id WHERE a.uid = %d AND a.setid = %d';
   $result = db_query($sql, $uid, $sid);
-  if (db_num_rows($result) < 1)
+  if (!($u = db_fetch_object($result)))
     return drupal_not_found();
-  else
-    $u = db_fetch_object($result);
   if (md5($u->email) != $hash)
     return drupal_access_denied();
   
@@ -493,7 +465,7 @@ function _autoresponder_mail_url($url) {
     return str_replace('mailto:', '', $url);
   }
   else {
-    return url($url, NULL, NULL, 1);
+    return url($url, array('absolute' => TRUE));
   }
 }
 
@@ -637,7 +609,7 @@ function autoresponder_user_list() {
 }
 
 function autoresponder_user_delete_confirm() {
-  $result = db_query('SELECT * FROM {autoresponder_users} WHERE id = %d LIMIT 1', arg(5));
+  $result = db_query_range('SELECT * FROM {autoresponder_users} WHERE id = %d', arg(5), 0, 1);
   $us = db_fetch_object($result);
   $form['id'] = array(
     '#type' => 'value',
@@ -711,7 +683,7 @@ function autoresponder_user_list_form($s
 function autoresponder_mail_list() {
   switch (arg(4)) {
     case 'edit':
-      $result = db_query('SELECT * FROM {autoresponder_messages} WHERE id = %d LIMIT 1', arg(6));
+      $result = db_query_range('SELECT * FROM {autoresponder_messages} WHERE id = %d', arg(6), 0, 1);
       return autoresponder_mail_edit_create(db_fetch_array($result));
     case 'add':
       return autoresponder_mail_edit_create(array());
@@ -722,7 +694,7 @@ function autoresponder_mail_list() {
 }
 
 function autoresponder_mail_delete_confirm() {
-  $result = db_query("SELECT * FROM {autoresponder_messages} WHERE id = %d LIMIT 1", arg(6));
+  $result = db_query_range("SELECT * FROM {autoresponder_messages} WHERE id = %d", arg(6), 0, 1);
   $mail = db_fetch_object($result);
   $form['mid'] = array(
     '#type' => 'value',
@@ -739,7 +711,7 @@ function autoresponder_mail_delete_confi
 }
 
 function autoresponder_mail_list_form() {
-  $result = db_query('SELECT am.*, at.name, at.id sid
+  $result = db_query('SELECT am.*, at.name, at.id AS sid
     FROM {autoresponder_messages} as am
     LEFT JOIN {autoresponder_sets} as at ON am.mset = at.id
     ORDER BY am.subject ASC, am.day ASC
@@ -777,7 +749,7 @@ function autoresponder_mail_list_form() 
 function autoresponder_set_list() {
   switch (arg(4)) {
     case 'edit':
-      $result = db_query('SELECT * FROM {autoresponder_sets} WHERE id=%d LIMIT 1', arg(5));
+      $result = db_query_range('SELECT * FROM {autoresponder_sets} WHERE id=%d', arg(5), 0, 1);
       return autoresponder_set_edit_create(db_fetch_array($result));
     case 'add':
       return autoresponder_set_edit_create();
@@ -795,7 +767,7 @@ function autoresponder_set_list() {
 }
 
 function autoresponder_set_delete_confirm() {
-  $result = db_query("SELECT * FROM {autoresponder_sets} WHERE id = %d LIMIT 1", arg(5));
+  $result = db_query_range("SELECT * FROM {autoresponder_sets} WHERE id = %d", arg(5), 0, 1);
   $set = db_fetch_object($result);
   $form['id'] = array(
     '#type' => 'value',
@@ -851,13 +823,13 @@ function autoresponder_set_massmail_form
   return $form;
 }
 
-function autoresponder_set_massmail_form_submit($form_id, $form_values) {
-  $result = db_query('SELECT a.uid, au.email FROM {autoresponder} a LEFT JOIN {autoresponder_users} au ON a.uid = au.id WHERE setid = %d', $form_values['set']);
+function autoresponder_set_massmail_form_submit($form, &$form_state) {
+  $result = db_query('SELECT a.uid, au.email FROM {autoresponder} a LEFT JOIN {autoresponder_users} au ON a.uid = au.id WHERE setid = %d', $form_state['values']['set']);
   while ($u = db_fetch_object($result)) {
     $mail->uid = $u->uid;
-    $mail->setid = $form_values['id'];
-    $mail->subject = $form_values['subject'];
-    $mail->body = $form_values['body'];
+    $mail->setid = $form_state['values']['id'];
+    $mail->subject = $form_state['values']['subject'];
+    $mail->body = $form_state['values']['body'];
     autoresponder_mail($u, $mail);
     unset($mail);
   }
@@ -893,13 +865,13 @@ function autoresponder_role_massmail_for
   return $form;
 }
 
-function autoresponder_role_massmail_form_submit($form_id, $form_values) {
-  $result = db_query('SELECT u.mail, u.uid FROM {users_roles} ur LEFT JOIN {users} u ON u.uid = ur.uid WHERE ur.rid = %d', $form_values['role']);
+function autoresponder_role_massmail_form_submit($form, &$form_state) {
+  $result = db_query('SELECT u.mail, u.uid FROM {users_roles} ur LEFT JOIN {users} u ON u.uid = ur.uid WHERE ur.rid = %d', $form_state['values']['role']);
   while ($u = db_fetch_object($result)) {
     $mail->email = $u->mail;
     $mail->uid = $u->uid;
-    $mail->subject = $form_values['subject'];
-    $mail->body = $form_values['body'];
+    $mail->subject = $form_state['values']['subject'];
+    $mail->body = $form_state['values']['body'];
     autoresponder_mail($u, $mail);
     unset($mail);
   }
@@ -929,12 +901,12 @@ function autoresponder_all_massmail_form
   return $form;
 }
 
-function autoresponder_all_massmail_form_submit($form_id, $form_values) {
+function autoresponder_all_massmail_form_submit($form, &$form_state) {
   $result = db_query('SELECT id as uid FROM {autoresponder_users}');
   while ($u = db_fetch_object($result)) {
     $mail->email = $u->email;
-    $mail->subject = $form_values['subject'];
-    $mail->body = $form_values['body'];
+    $mail->subject = $form_state['values']['subject'];
+    $mail->body = $form_state['values']['body'];
     autoresponder_mail($u, $mail);
     unset($mail);
   }
@@ -947,7 +919,7 @@ function autoresponder_set_list_form() {
   while ($set = db_fetch_object($result)) {
     $rows[$set->id] = array(
       '',
-      l($set->name, 'admin/settings/autoresponder/user/list/'.$set->id, array('title' => 'View users')).'<br /><small>'.$set->description.'</small>',
+      l($set->name, 'admin/settings/autoresponder/user/list/'.$set->id, array('attributes' => array('title' => 'View users'))).'<br /><small>'.$set->description.'</small>',
       $set->active == 0 ? l(t('Activate'), 'admin/settings/autoresponder/set/activate/'.$set->id) : l(t('Deactivate'), 'admin/settings/autoresponder/set/deactivate/'.$set->id),
       /*$set->unsubscribe == 0 ? l(t('Unsubscribe users'), 'admin/settings/autoresponder/set/unsubscribe/'.$set->id) : l(t('Do not unsubscribe users'), 'admin/settings/autoresponder/set/subscribe/'.$set->id),*/
       l(t('Edit'), 'admin/settings/autoresponder/set/edit/'.$set->id),
@@ -1011,26 +983,26 @@ function theme_autoresponder_user_list_f
   return $output;
 }
 
-function autoresponder_user_list_form_submit($form_id, $form_values) {
-  switch ($form_values['op']) {
+function autoresponder_user_list_form_submit($form, &$form_state) {
+  switch ($form_state['values']['op']) {
     case t('Delete users'):
       foreach ($_POST AS $key => $value)
         if (is_int($key))
           $id[] = $key;
         if ($id)
-          $ids = implode(",", $id);
+          $placeholders = array_fill(0, count($id), "%d");
         $count = count($id);
         if ($count) {
-          $form['count'] = array(
+          /*$form['count'] = array(
             '#type' => 'value',
             '#value' => $count
           );
           $form['ids'] = array(
             '#type' => 'value',
             '#value' => $ids
-          );
-          db_query('DELETE FROM {autoresponder_users} WHERE id IN (%s)', $ids);
-          db_query('DELETE FROM {autoresponder} WHERE uid IN (%s)', $ids);
+          );*/
+          db_query('DELETE FROM {autoresponder_users} WHERE id IN ('. implode(',', $placeholders) .')', $id);
+          db_query('DELETE FROM {autoresponder} WHERE uid IN ('. implode(',', $placeholders) .')', $id);
           drupal_set_message(t('%count user(s) has been deleted successfully!', array('%count' => $count)));
           drupal_goto('admin/settings/autoresponder/user/list');
         }
@@ -1042,52 +1014,52 @@ function autoresponder_user_list_form_su
  }
 }
 
-function autoresponder_mail_list_form_submit($form_id, $form_values) {
-  switch ($form_values['op']) {
+function autoresponder_mail_list_form_submit($form, &$form_state) {
+  switch ($form_state['values']['op']) {
     case t('Delete messages'):
       foreach ($_POST AS $key => $value)
         if (is_int($key))
           $id[] = $key;
       if ($id)
-        $ids = implode(",", $id);
-        $count = count($id);
-        if ($count) {
-          $form['count'] = array(
-            '#type' => 'value',
-            '#value' => $count
-          );
-          $form['ids'] = array(
-            '#type' => 'value',
-            '#value' => $ids
-          );
-          db_query('DELETE FROM {autoresponder_messages} WHERE id IN (%s)', $ids);
-          drupal_set_message(t('%count message(s) has been deleted successfully!', array('%count' => $count)));
-          drupal_goto('admin/settings/autoresponder/mail/list');
-        }
-        else
-          drupal_set_message(t('There are no selected messages!'));
+        $placeholders = array_fill(0, count($id), "%d");
+      $count = count($id);
+      if ($count) {
+        /*$form['count'] = array(
+          '#type' => 'value',
+          '#value' => $count
+        );
+        $form['ids'] = array(
+          '#type' => 'value',
+          '#value' => $ids
+        );*/
+        db_query('DELETE FROM {autoresponder_messages} WHERE id IN ('. implode(',', $placeholders) .')', $id);
+        drupal_set_message(t('%count message(s) has been deleted successfully!', array('%count' => $count)));
+        drupal_goto('admin/settings/autoresponder/mail/list');
+      }
+      else
+        drupal_set_message(t('There are no selected messages!'));
   }
 }
 
-function autoresponder_set_list_form_submit($form_id, $form_values) {
-  switch ($form_values['op']) {
+function autoresponder_set_list_form_submit($form, &$form_state) {
+  switch ($form_state['values']['op']) {
     case t('Delete sets'):
       foreach ($_POST AS $key => $value)
         if (is_int($key))
           $id[] = $key;
       if ($id)
-        $ids = implode(",", $id);
+        $placeholders = array_fill(0, count($id), "%d");
       $count = count($id);
       if ($count) {
-        $form['count'] = array(
+        /*$form['count'] = array(
           '#type' => 'value',
           '#value' => $count
         );
         $form['ids'] = array(
           '#type' => 'value',
           '#value' => $ids
-        );
-        db_query('DELETE FROM {autoresponder_sets} WHERE id IN (%s)', $ids);
+        );*/
+        db_query('DELETE FROM {autoresponder_sets} WHERE id IN ('. implode(',', $placeholders) .')', $id);
         drupal_set_message(t('%count set(s) has been deleted successfully!', array('%count' => $count)));
         drupal_goto('admin/settings/autoresponder/set/list');
       }
@@ -1207,25 +1179,30 @@ function autoresponder_user($op, &$edit,
             '#options' => $sets,
             '#description' => t('Select sets to subscribe'),
           );
-		}
+        }
       }  
       return $form;
     case 'insert':
       if (variable_get('show_on_user_register', TRUE)) {
         $sql = 'SELECT id FROM {autoresponder_users} WHERE email = \'%s\'';
         $result = db_query($sql, $edit['mail']);
-        if (db_num_rows($result)) {
-          $us = db_fetch_object($result);
+        if ($us = db_fetch_object($result)) {
           $auid = $us->id;
         }
         else {
-          $auid = db_next_id('{autoresponder_users}');
-          db_query("INSERT INTO {autoresponder_users} (id, email, reg_date) VALUES (%d, '%s', %d)", $auid, strtolower($edit['mail']), time());
+          $auobj = new stdClass();
+          $auobj->email = strtolower($edit['mail']);
+          $auobj->reg_date = time();
+          drupal_write_record('autoresponder_users', $auobj);
+          unset($auobj);
         }
         foreach ($edit['set'] as $key => $value) {
           if ($value) {
-            $aid = db_next_id('{autoresponder}');
-            db_query('INSERT INTO {autoresponder} (id, uid, setid) VALUES(%d, %d, %d)', $aid, $auid, $value);
+            $aobj = new stdClass();
+            $aobj->uid = $auid;
+            $aobj->setid = $value;
+            drupal_write_record('autoresponder', $aobj);
+            unset($aobj);
             $result_messages = db_query('SELECT * FROM {autoresponder_messages} WHERE day = %d AND mset = %d', 0,  $value);
             while ($mail = db_fetch_object($result_messages)) {
               $u->mail = $edit['mail'];
@@ -1261,7 +1238,7 @@ function autoresponder_email_enter_form(
     $u = db_fetch_object(db_query('SELECT id FROM {autoresponder_users} WHERE email = \'%s\'', $user->mail));
     $result = db_query('SELECT aus.name, aus.id, a.uid FROM {autoresponder} a LEFT JOIN {autoresponder_sets} aus ON a.setid = aus.id WHERE a.uid = %d', $u->id);
     while ($s = db_fetch_object($result)) {
-      $user_sets .= $s->name.' | '.l('Unsubscribe', 'autoresponder/unsubscribe/'.$s->id.'/'.$s->uid, array(), drupal_get_destination()).'<br />';
+      $user_sets .= $s->name.' | '.l('Unsubscribe', 'autoresponder/unsubscribe/'.$s->id.'/'.$s->uid, array('query' => drupal_get_destination())).'<br />';
       $set_array[$s->id] = $s->name;
     }
     if (!variable_get('autoresponder_hide_email', FALSE)) {
@@ -1490,43 +1467,49 @@ function autoresponder_mail_edit_create_
   return $form;
 }
 
-function autoresponder_email_enter_form_validate($form_id, $form_values) {
-  if (!valid_email_address($form_values['email']))
+function autoresponder_email_enter_form_validate($form, &$form_state) {
+  if (!valid_email_address($form_state['values']['email']))
     form_set_error('email', 'Email address is wrong. Example: <i>john@coolsite.com</i>');
-  $result = db_query("SELECT * FROM {autoresponder_users} au LEFT JOIN {autoresponder} a ON au.id = a.uid WHERE au.email = '%s' AND a.setid = %d", $form_values['email'], $form_values['set']);
-  $exist = db_num_rows($result);
+  $result = db_query("SELECT COUNT(*) FROM {autoresponder_users} au LEFT JOIN {autoresponder} a ON au.id = a.uid WHERE au.email = '%s' AND a.setid = %d", $form_state['values']['email'], $form_state['values']['set']);
+  $exist = db_result($result) > 0;
   if ($exist)
-    form_set_error('email',t('Your email address @mail is already subscribed for this list.', array('@mail' => $form_values['email'])));
+    form_set_error('email',t('Your email address @mail is already subscribed for this list.', array('@mail' => $form_state['values']['email'])));
 }
 
-function autoresponder_email_enter_form_submit($form_id, $form_values) {
-  if (!is_array($form_values['set']))
-    $form_values['set'] = array($form_values['set'] => (int)$form_values['set']);
-  if (isset($form_values['set']['empty'])) {
+function autoresponder_email_enter_form_submit($form, &$form_state) {
+  if (!is_array($form_state['values']['set']))
+    $form_state['values']['set'] = array($form_state['values']['set'] => (int)$form_state['values']['set']);
+  if (isset($form_state['values']['set']['empty'])) {
     drupal_set_message(t('No sets available to subscribe.'));
     return;
   }
   $sql = 'SELECT id FROM {autoresponder_users} WHERE email = \'%s\'';
-  $result = db_query($sql, $form_values['email']);
-  if (db_num_rows($result)) {
-    $us = db_fetch_object($result);
+  $result = db_query($sql, $form_state['values']['email']);
+  if ($us = db_fetch_object($result)) {
     $auid = $us->id;
   }
   else {
-    $auid = db_next_id('{autoresponder_users}');
-    db_query("INSERT INTO {autoresponder_users} (id, email, reg_date) VALUES (%d, '%s', %d)", $auid, strtolower($form_values['email']), time());
+    $auobj = new stdClass();
+    $auobj->email = strtolower($form_state['values']['email']);
+    $auobj->reg_date = time();
+    drupal_write_record('autoresponder_users', $auobj);
+    $auid = $auobj->id;
+    unset($auobj);
   }
-  foreach ($form_values['set'] as $key => $value) {
+  foreach ($form_state['values']['set'] as $key => $value) {
     if ($value) {
-      $aid = db_next_id('{autoresponder}');
-      db_query('INSERT INTO {autoresponder} (id, uid, setid) VALUES(%d, %d, %d)', $aid, $auid, $value);
+      $aobj = new stdClass();
+      $aobj->uid = $auid;
+      $aobj->setid = $value;
+      drupal_write_record('autoresponder', $aobj);
+      unset($aobj);
       $result_messages = db_query('SELECT * FROM {autoresponder_messages} WHERE day = %d AND mset = %d', 0, $value);
       while ($mail = db_fetch_object($result_messages)) {
-        $u->mail = $form_values['email'];
+        $u->mail = $form_state['values']['email'];
         $u->uid = $auid;
         $u->setid = $value;
         autoresponder_mail($u, $mail);
-        $message = t(db_result(db_query('SELECT message FROM {autoresponder_sets} WHERE id = %d LIMIT 1', $value)), array('%email' => $form_values['email']));
+        $message = t(db_result(db_query_range('SELECT message FROM {autoresponder_sets} WHERE id = %d', $value, 0, 1)), array('%email' => $form_state['values']['email']));
         drupal_set_message($message);
       }
     }
@@ -1534,77 +1517,84 @@ function autoresponder_email_enter_form_
   drupal_goto();
 }
 
-function autoresponder_user_delete_confirm_submit($form_id, $form_values) {
-  db_query('DELETE FROM {autoresponder_users} WHERE id = %d', $form_values['id']);
-  db_query('DELETE FROM {autoresponder} WHERE uid = %d', $form_values['id']);
-  drupal_set_message(t('User <i>%email</i> successfully deleted!',array('%email' => $form_values['email'])));
+function autoresponder_user_delete_confirm_submit($form, &$form_state) {
+  db_query('DELETE FROM {autoresponder_users} WHERE id = %d', $form_state['values']['id']);
+  db_query('DELETE FROM {autoresponder} WHERE uid = %d', $form_state['values']['id']);
+  drupal_set_message(t('User <i>%email</i> successfully deleted!',array('%email' => $form_state['values']['email'])));
   drupal_goto('admin/settings/autoresponder/user/list');
 }
 
-function autoresponder_mail_delete_confirm_submit($form_id, $form_values) {
-  db_query('DELETE FROM {autoresponder_messages} WHERE id = %d', $form_values['mid']);
-  drupal_set_message(t('Message %subject successfully deleted!', array('%subject' => $form_values['subject'])));
+function autoresponder_mail_delete_confirm_submit($form, &$form_state) {
+  db_query('DELETE FROM {autoresponder_messages} WHERE id = %d', $form_state['values']['mid']);
+  drupal_set_message(t('Message %subject successfully deleted!', array('%subject' => $form_state['values']['subject'])));
   drupal_goto('admin/settings/autoresponder/mail/list');
 }
 
-function autoresponder_set_delete_confirm_submit($form_id, $form_values) {
-  $result = db_query('SELECT uid FROM {autoresponder} WHERE setid = %d', $form_values['id']);
+function autoresponder_set_delete_confirm_submit($form, &$form_state) {
+  $result = db_query('SELECT uid FROM {autoresponder} WHERE setid = %d', $form_state['values']['id']);
   while ($user = db_fetch_object($result)) {
     $users[] = $user->uid;
   }
-  db_query('DELETE FROM {autoresponder_sets} WHERE id = %d', $form_values['id']);
-  db_query('DELETE FROM {autoresponder_messages} WHERE mset = %d', $form_values['id']);
+  db_query('DELETE FROM {autoresponder_sets} WHERE id = %d', $form_state['values']['id']);
+  db_query('DELETE FROM {autoresponder_messages} WHERE mset = %d', $form_state['values']['id']);
   if ($users) {
+    $placeholders = array_fill(0, count($users), "%d");
     $uids = implode(',', $users);
-    db_query('DELETE FROM {autoresponder_users} WHERE uid IN (%s)', $uids);
-    db_query('DELETE FROM {autoresponder} WHERE uid IN (%s)', $uids);
+    db_query('DELETE FROM {autoresponder_users} WHERE uid IN ('. implode(',', $placeholders) .')', $users);
+    db_query('DELETE FROM {autoresponder} WHERE uid IN ('. implode(',', $placeholders) .')', $users);
   }
-  drupal_set_message(t('Set %name successfully deleted! Messages, that associated with this set was deleted too.', array('%name' => $form_values['name'])));
+  drupal_set_message(t('Set %name successfully deleted! Messages, that associated with this set was deleted too.', array('%name' => $form_state['values']['name'])));
   drupal_goto('admin/settings/autoresponder/set/list');
 }
 
-function autoresponder_set_edit_create_form_submit($form_id, $form_values) {
-  $id = db_next_id('{autoresponder_sets}');
-  if ($form_values['id']) {
-    db_query('UPDATE {autoresponder_sets} SET name = \'%s\', description = \'%s\', message = \'%s\', active = %d, unsubscribe = %d WHERE id = %d',
-      $form_values['name'], $form_values['description'], $form_values['message'], $form_values['active'], $form_values['unsubscribe'], $form_values['id']);
-    drupal_set_message(t('Set %name successfully updated!', array('%name' => $form_values['name'])));
+function autoresponder_set_edit_create_form_submit($form, &$form_state) {
+  $obj = new stdClass();
+  $obj->name = $form_state['values']['name'];
+  $obj->description = $form_state['values']['description'];
+  $obj->message = $form_state['values']['message'];
+  $obj->active = $form_state['values']['active'];
+  $obj->unsubscribe = $form_state['values']['unsubscribe'];
+  if ($form_state['values']['id']) {
+    $obj->id = $form_state['values']['id'];
+    drupal_write_record('autoresponder_sets', $obj, array('id'));
+    drupal_set_message(t('Set %name successfully updated!', array('%name' => $form_state['values']['name'])));
   }
   else {
-    db_query('INSERT INTO {autoresponder_sets} (id, name, description, message, active, unsubscribe) VALUES(%d, \'%s\', \'%s\', \'%s\', \'%s\', %d)',
-      $id, $form_values['name'], $form_values['description'], $form_values['description'], $form_values['active'], $form_values['unsubscribe']);
+    drupal_write_record('autoresponder_sets', $obj);
     drupal_set_message(t('Successfully added!'));
   }
-  return 'admin/settings/autoresponder/set/list';
+  unset($obj);
+  $form_state['redirect'] = 'admin/settings/autoresponder/set/list';
 }
 
-function autoresponder_mail_edit_create_form_validate($form_id, $form_values) {
-  if (!is_numeric($form_values['day']))
+function autoresponder_mail_edit_create_form_validate($form, &$form_state) {
+  if (!is_numeric($form_state['values']['day']))
     form_set_error('day', t('The day must be a number. Example: %num', array('%num' => 10)));
-  /*elseif (!is_numeric($form_values['day']) && (strtotime($form_values['dt']['day'].'.'.$form_values['dt']['month'].'.'.$form_values['dt']['year']) < time())) {
+  /*elseif (!is_numeric($form_state['values']['day']) && (strtotime($form_state['values']['dt']['day'].'.'.$form_state['values']['dt']['month'].'.'.$form_state['values']['dt']['year']) < time())) {
     form_set_error('dt', t('The date must be in the future.'));*/
 }
 
-function autoresponder_mail_edit_create_form_submit($form_id, $form_values) {
-  if ($form_values['id']) {
-    db_query('UPDATE {autoresponder_messages} SET subject = \'%s\', body = \'%s\', mset = \'%s\', day = %d WHERE id = %d',
-      $form_values['subject'], $form_values['body'], $form_values['set'], $form_values['day'], $form_values['id']);
-    drupal_set_message(t('Mail set %subject successfully updated!', array('%subject' => $form_values['subject'])));
+function autoresponder_mail_edit_create_form_submit($form, &$form_state) {
+  $obj = new stdClass();
+  $obj->subject = $form_state['values']['subject'];
+  $obj->body = $form_state['values']['body'];
+  $obj->mset = $form_state['values']['set'];
+  $obj->day = $form_state['values']['day'];
+  if ($form_state['values']['id']) {
+    $obj->id = $form_state['values']['id'];
+    drupal_write_record('autoresponder_messages', $obj, array('id'));
+    drupal_set_message(t('Mail set %subject successfully updated!', array('%subject' => $form_state['values']['subject'])));
   }
   else {
-    $mid = db_next_id('{autoresponder_messages}');
-    db_query('INSERT INTO {autoresponder_messages}
-      (id, subject, body, mset, day)
-      VALUES(%d, \'%s\', \'%s\', %d, \'%s\')',
-      $mid, $form_values['subject'], $form_values['body'], $form_values['set'], $form_values['day']
-    );
-    drupal_set_message(t('New message %subject successfully added on day %day! If you want, you can add more messages !url', array('%subject' => $form_values['subject'], '%day' => $form_values['day'], '!url' => l(t('here...'), 'admin/settings/autoresponder/mail/add'))));
+    drupal_write_record('autoresponder_messages', $obj);
+    drupal_set_message(t('New message %subject successfully added on day %day! If you want, you can add more messages !url', array('%subject' => $form_state['values']['subject'], '%day' => $form_state['values']['day'], '!url' => l(t('here...'), 'admin/settings/autoresponder/mail/add'))));
   }
-  return 'admin/settings/autoresponder/mail/list';
+  unset($obj);
+  $form_state['redirect'] = 'admin/settings/autoresponder/mail/list';
 }
 
 function autoresponder_set_activate($id) {
-  $query = db_query('SELECT * FROM {autoresponder_sets} WHERE id = %d LIMIT 1', $id);
+  $query = db_query_range('SELECT * FROM {autoresponder_sets} WHERE id = %d', $id, 0, 1);
   $set = db_fetch_object($query);
   db_query('UPDATE {autoresponder_sets} SET active = 1 WHERE id = %d', $id);
   drupal_set_message(t('Set %name successfully activated!', array('%name' => $set->name)));
@@ -1612,10 +1602,17 @@ function autoresponder_set_activate($id)
 }
 
 function autoresponder_set_deactivate($id) {
-  $query = db_query('SELECT * FROM {autoresponder_sets} WHERE id = %d LIMIT 1', $id);
+  $query = db_query_range('SELECT * FROM {autoresponder_sets} WHERE id = %d', $id, 0, 1);
   $set = db_fetch_object($query);
   db_query('UPDATE {autoresponder_sets} SET active = 0 WHERE id = %d', $id);
   drupal_set_message(t('Set %name successfully deactivated!', array('%name' => $set->name)));
   drupal_goto('admin/settings/autoresponder/set/list');
 }
-?>
\ No newline at end of file
+
+function autoresponder_theme() {
+  return array(
+    'autoresponder_user_list_form' => array(
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
