? LICENSE.txt Index: constant_contact.info =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/constant_contact/constant_contact.info,v retrieving revision 1.3 diff -u -p -r1.3 constant_contact.info --- constant_contact.info 12 Feb 2008 13:01:26 -0000 1.3 +++ constant_contact.info 15 May 2009 14:14:47 -0000 @@ -2,10 +2,4 @@ name = Constant Contact description = Allows you to keep your users in-sync with your Constant Contact Mailing lists package ="Mail" -version = 5.6 - -; Information added by drupal.org packaging script on 2008-01-29 -version = "5.x-1.x-dev" -project = "constant_contact" -datestamp = "1201564951" - +core = 6.x Index: constant_contact.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/constant_contact/constant_contact.install,v retrieving revision 1.2 diff -u -p -r1.2 constant_contact.install --- constant_contact.install 30 Jan 2008 03:01:31 -0000 1.2 +++ constant_contact.install 15 May 2009 14:14:47 -0000 @@ -12,6 +12,9 @@ function constant_contact_install() { * Implementation of hook_uninstall(). */ function constant_contact_uninstall() { + // Remove tables. + drupal_uninstall_schema('constant_contact'); + $variables = array( 'constant_contact_username', 'constant_contact_password', @@ -35,3 +38,28 @@ function constant_contact_uninstall() { cache_clear_all('*', 'cache_menu', TRUE); cache_clear_all('*', 'cache_page', TRUE); } + + +/** + * Implementation of hook_requirements(). + */ +function constant_contact_requirements($phase) { + $requirements = array(); + $t = get_t(); + + switch ($phase) { + case 'runtime': + case 'install': + $srcUrl = 'http://www.jamesbenson.net/projects/ConstantContact/'; + module_load_include('php', 'constant_contact', 'ConstantContact'); + if (!class_exists('ConstantContact')) { + $requirements['constant_contact_module'] = array( + 'title' => $t('Constant Contact requirements'), + 'value' => $t('The Constant Contact module requires the ConstantContact class from '.l($srcUrl,$srcUrl).'. You should place it in '.drupal_get_path('module', 'constant_contact').'.'), + 'severity' => ($phase == 'runtime') ? REQUIREMENT_ERROR : REQUIREMENT_INFO, + ); + } + break; + } + return $requirements; +} \ No newline at end of file Index: constant_contact.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/constant_contact/constant_contact.module,v retrieving revision 1.6 diff -u -p -r1.6 constant_contact.module --- constant_contact.module 17 Feb 2008 10:28:48 -0000 1.6 +++ constant_contact.module 15 May 2009 14:14:49 -0000 @@ -11,35 +11,32 @@ function constant_contact_perm() { /** * Implementation of hook_menu(). */ -function constant_contact_menu($may_cache) { +function constant_contact_menu() { $items = array(); - $items[] = array( - 'path' => 'admin/settings/constant_contact', - 'title' => t('Constant Contact Settings'), - 'description' => t('Configure settings for Constant Contact'), - 'callback' => 'drupal_get_form', - 'callback arguments' => array('constant_contact_admin_settings'), - 'access' => user_access('admininister constant_contact'), + $items['admin/settings/constant_contact'] = array( + 'title' => 'Constant Contact Settings', + 'description' => 'Configure settings for Constant Contact', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('constant_contact_admin_settings'), + 'access arguments' => array('admininister constant_contact'), 'type' => MENU_NORMAL_ITEM); - $items[] = array( - 'path' => 'admin/settings/constant_contact_import', - 'title' => t('Constant Contact Import Users'), - 'description' => t('Import existing Drupal users to Constant Contact'), - 'callback' => 'drupal_get_form', - 'callback arguments' => array('constant_contact_import'), - 'access' => user_access('admininister constant_contact'), + $items['admin/settings/constant_contact_import'] = array( + 'title' => 'Constant Contact Import Users', + 'description' => 'Import existing Drupal users to Constant Contact', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('constant_contact_import'), + 'access arguments' => array('admininister constant_contact'), 'type' => MENU_NORMAL_ITEM); - $items[] = array( - 'path' => 'constant_contact/unsubscribe', - 'title' => t('List Unsubscribe'), - 'description' => t('Unsubscribe from a list'), - 'callback' => 'drupal_get_form', - 'callback arguments' => array('constant_contact_unsubscribe_confirm'), + $items['constant_contact/unsubscribe/%'] = array( + 'title' => 'List Unsubscribe', + 'description' => 'Unsubscribe from a list', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('constant_contact_unsubscribe_confirm', 2), 'type' => MENU_CALLBACK, - 'access' => TRUE, + 'access arguments' => array('access content'), ); return $items; @@ -48,8 +45,8 @@ function constant_contact_menu($may_cach /** * Implementation of hook_help(). */ -function constant_contact_help($section) { - switch ($section) { +function constant_contact_help($path, $arg) { + switch ($path) { case 'admin/help/constant_contact': case 'admin/help#constant_contact': // Return a line-break version of the module README @@ -63,12 +60,12 @@ function constant_contact_help($section) function constant_contact_block($op = 'list', $delta = 0) { switch ($op) { case 'list': - $blocks=array(); - $lists=constant_contact_get_lists(); - foreach ($lists as $i => $list) { - $blocks[]=array('info' => t('Constant Contact: '. $list)); - } - return $blocks; + $blocks=array(); + $lists=constant_contact_get_lists(); + foreach ($lists as $i => $list) { + $blocks[]=array('info' => t('Constant Contact: '. $list)); + } + return $blocks; break; case 'view': global $user; @@ -211,12 +208,13 @@ function constant_contact_admin_settings * Implementation of hook_form() * creates the join mailing list block */ -function constant_contact_block_form($delta = 0, $op = 'list', $edit = array()) { +function constant_contact_block_form(&$form_state, $delta = 0, $op = 'list', $edit = array()) { global $user; $lists=constant_contact_get_lists(); - $lists_arr=array_values($lists); - $keyname=constant_contact_escape_listname($lists_arr[$delta]); + $lists_arr=array_keys($lists); + $keyname=$lists_arr[$delta]; + $list=$lists[$keyname]; if (constant_contact_check_user($list)) { @@ -256,9 +254,9 @@ function constant_contact_block_form($de * Implementation of hook_form_validate() * validate the join mailing list block */ -function constant_contact_block_form_validate($form_id, $values) { +function constant_contact_block_form_validate($form, &$form_state) { global $user; - $ok=((empty($user->uid) && !empty($values['email'])) || !empty($user->uid)); + $ok=((empty($user->uid) && !empty($form_state['values']['email'])) || !empty($user->uid)); if (!$ok){ drupal_set_message(t('You need to set your email address.'), 'error'); @@ -271,7 +269,7 @@ function constant_contact_block_form_val * Implementation of hook_form_submit() * process the join mailing list block */ -function constant_contact_block_form_submit($form_id, $values) { +function constant_contact_block_form_submit($form, &$form_state) { global $user; $data=array(); if ($user->uid) { @@ -281,23 +279,22 @@ function constant_contact_block_form_sub $data['Custom_field_3']=date('r'); } else{ - $email=$values['email']; + $email=$form_state['values']['email']; } - require_once('ConstantContact.php'); + module_load_include('php', 'constant_contact', 'ConstantContact'); $constant_contact = new ConstantContact(); $constant_contact->setUsername(variable_get('constant_contact_username', '')); $constant_contact->setPassword(variable_get('constant_contact_password', '')); - $constant_contact->setCategory($values['list']); + $constant_contact->setCategory($form_state['values']['list']); if ($constant_contact->add($email, $data)) { $type='status'; $message='You have been added to our list.'; if (variable_get('constant_contact_sendemail', TRUE)) { - constant_contact_confirmation_email($email, $values['list']); + constant_contact_confirmation_email($email, $form_state['values']['list']); } - constant_contact_save_user($user, $values['list']); - + constant_contact_save_user($user, $form_state['values']['list']); } else{ $type='error'; @@ -310,7 +307,7 @@ function constant_contact_block_form_sub * Implementation of hook_form() * confirm unsubscribe */ -function constant_contact_unsubscribe_confirm($list=NULL) { +function constant_contact_unsubscribe_confirm(&$form_state, $list=NULL) { $lists=constant_contact_get_lists(); $list=urldecode($list); @@ -330,6 +327,7 @@ function constant_contact_unsubscribe_co t('You must be logged in and subscribed under your account email, for this to work.'), t('Unsubscribe'), t('Cancel') ); + return $form; } @@ -337,13 +335,13 @@ function constant_contact_unsubscribe_co * Implementation of hook_form_submit() * process confirm unsubscribe */ -function constant_contact_unsubscribe_confirm_submit($form_id, $values) { +function constant_contact_unsubscribe_confirm_submit($form, &$form_state) { global $user; - if (!constant_contact_check_user($values['list'])) { + if (!constant_contact_check_user($form_state['values']['list'])) { if (empty($user->uid)) { drupal_set_message(t('You must be logged in to unsubscribe.'), 'error'); - return drupal_goto('user/user', 'destination=constant_contact/unsubscribe/'. urlencode($values['list'])); + return drupal_goto('user', 'destination=constant_contact/unsubscribe/'. urlencode($form_state['values']['list'])); } else{ drupal_set_message(t('You are logged in, but your email does not appear to be subscribed to that list.'), 'error'); @@ -353,26 +351,26 @@ function constant_contact_unsubscribe_co $lists=constant_contact_get_lists(); - if (empty($values['list']) || !array_search($values['list'], $lists)) { + if (empty($form_state['values']['list']) || !array_search($form_state['values']['list'], $lists)) { drupal_set_message(t('Invalid list name.'), 'error'); return drupal_goto($_GET['destination'] ? $_GET['destination'] : ''); } - require_once('ConstantContact.php'); + module_load_include('php', 'constant_contact', 'ConstantContact'); $constant_contact = new ConstantContact(); $constant_contact->setUsername(variable_get('constant_contact_username', '')); $constant_contact->setPassword(variable_get('constant_contact_password', '')); - $constant_contact->setCategory($values['list']); + $constant_contact->setCategory($form_state['values']['list']); if ($constant_contact->remove($user->mail)) { $type='status'; - $message=t('You have been removed from %list mailing list.', array('%list' => $values['list'])); - constant_contact_save_user($user, $values['list'], FALSE); + $message=t('You have been removed from %list mailing list.', array('%list' => $form_state['values']['list'])); + constant_contact_save_user($user, $form_state['values']['list'], FALSE); } else{ $type='error'; - $message=t('You could not be removed from %list mailing list.', array('%list' => $values['list'])); - $_GET['destination']='constant_contact/unsubscribe/'. urlencode($values['list']); + $message=t('You could not be removed from %list mailing list.', array('%list' => $form_state['values']['list'])); + $_GET['destination']='constant_contact/unsubscribe/'. urlencode($form_state['values']['list']); } drupal_set_message($message, $type); @@ -409,16 +407,16 @@ function constant_contact_import() { * Implementation of hook_form_submit() * process import users */ -function constant_contact_import_submit($form_id, $values) { +function constant_contact_import_submit($form, &$form_state) { $lists = constant_contact_get_lists(); $rs = db_query("SELECT * FROM {users}"); $fail_count = $success_count=0; - require_once('ConstantContact.php'); + module_load_include('php', 'constant_contact', 'ConstantContact'); $constant_contact = new ConstantContact(); $constant_contact->setUsername(variable_get('constant_contact_username', '')); $constant_contact->setPassword(variable_get('constant_contact_password', '')); - $constant_contact->setCategory($values['list']); + $constant_contact->setCategory($form_state['values']['list']); while ($user = db_fetch_object($rs)) { if (empty($user->uid)) { @@ -432,7 +430,7 @@ function constant_contact_import_submit( ); if ($constant_contact->add($user->mail, $data)) { - constant_contact_save_user($user, $values['list']); + constant_contact_save_user($user, $form_state['values']['list']); $success_count++; } else{ @@ -517,13 +515,60 @@ function constant_contact_confirmation_e '!uri_brief' => substr($base_url, strlen('http://')), '!mailto' => $address, '!date' => format_date(time()), - '!login_uri' => url('user', NULL, NULL, TRUE), // version 6 is url('user', array('absolute' => TRUE)), - '!uri_list_unsubscribe' => url('constant_contact/unsubscribe/'. urlencode($list_name), NULL, NULL, TRUE), // version 6 is url('user', array('absolute' => TRUE)), + '!login_uri' => url('user', array('absolute' => TRUE)), // version 6 is url('user', array('query' => array('absolute' => TRUE))), + '!uri_list_unsubscribe' => url('constant_contact/unsubscribe/'. urlencode($list_name), array('absolute' => TRUE)), // version 6 is url('user', array('query' => array('absolute' => TRUE))), ); - return drupal_mail('constant_contact-confirmation', $address, t(variable_get('constant_contact_email_subject', ''), $variables), t(variable_get('constant_contact_email_body', ''), $variables), variable_get('site_mail', ini_get('sendmail_from'))); + $account = array(); // Set this as needed + $language = user_preferred_language($account); + $object = array(); // Replace this as needed + $context['subject'] = t(variable_get('constant_contact_email_subject', ''), $variables); + $context['message'] = t(variable_get('constant_contact_email_body', ''), $variables); + $context['from'] = variable_get('site_mail', ini_get('sendmail_from')); + $params = array('account' => $account, 'object' => $object, 'context' => $context); + return drupal_mail('constant_contact', 'constant_contact-confirmation', $address, $language, $params); } +/** + * Implementation of hook_mail + */ +function constant_contact_mail($key, &$message, $params) { + $account = $params['account']; + $context = $params['context']; + $variables = array( + '%site_name' => variable_get('site_name', 'Drupal'), + '%username' => $account->name, + ); + if ($context['hook'] == 'taxonomy') { + $object = $params['object']; + $vocabulary = taxonomy_vocabulary_load($object->vid); + $variables += array( + '%term_name' => $object->name, + '%term_description' => $object->description, + '%term_id' => $object->tid, + '%vocabulary_name' => $vocabulary->name, + '%vocabulary_description' => $vocabulary->description, + '%vocabulary_id' => $vocabulary->vid, + ); + } + + // Node-based variable translation is only available if we have a node. + if (isset($params['node'])) { + $node = $params['node']; + $variables += array( + '%uid' => $node->uid, + '%node_url' => url('node/'. $node->nid, array('absolute' => TRUE)), + '%node_type' => node_get_types('name', $node), + '%title' => $node->title, + '%teaser' => $node->teaser, + '%body' => $node->body, + ); + } + $subject = strtr($context['subject'], $variables); + $body = strtr($context['message'], $variables); + $message['subject'] .= str_replace(array("\r", "\n"), '', $subject); + $message['body'][] = drupal_html_to_text($body); +} /** * returns an array of available lists