/* -------------------------------------------------------------------------- */ /* subscriptions.module integration */ /* -------------------------------------------------------------------------- */ /** * Implementation of hook_subscriptions(). */ function constant_contact_subscriptions($op, $arg0 = NULL, $arg1 = NULL, $arg2 = NULL) { $function = '_constant_contact_'. $op; if (function_exists($function)) { return $function($arg0, $arg1, $arg2); } } /** * Implementation of hook_types(), subhook of hook_subscriptions(). * * @return $types * Information about types for the Subscriptions module interface. */ function _constant_contact_types() { $types['newsletter'] = array( 'title' => t('Newsletters'), 'access' => 'subscribe to newsletters', 'page' => 'constant_contact_page_subscriptions', 'fields' => array('newsletter', 'list_name'), 'weight' => -4, ); return $types; } /** * Returns all Constant Contact list names defined by the administrator. */ function constant_contact_page_subscriptions($account, $form) { return drupal_get_form('constant_contact_page_subscriptions_form', constant_contact_get_lists(), $account, $form); } /** * Form to display/retrieve newsletter subscriptions. */ function constant_contact_page_subscriptions_form($lists, $account, $form) { $uid = (isset($account) ? $account->uid : (is_numeric(arg(5)) ? -arg(5) : -DRUPAL_AUTHENTICATED_RID)); $subscriptions = array(); $result = db_query(" SELECT s.value, s.send_interval, s.author_uid, s.send_comments, s.send_updates FROM pcc_subscriptions s WHERE s.module = 'constant_contact' AND s.field = 'newsletter' AND s.recipient_uid = %d", $uid); while ($s = db_fetch_array($result)) { $subscriptions[$s['value']] = $s; } # unused; referenced. $defaults = array(); $form[0] = array( '#type' => 'item', '#title' => '', '#tree' => TRUE, '#theme' => 'subscriptions_form_table', ); foreach ($lists as $list) { if (!isset($subscriptions[$list])) { $subscriptions[$list] = array( 'send_interval' => FALSE, 'send_comments' => FALSE, 'send_updates' => FALSE, 'author_uid' => FALSE, ); } subscriptions_form_helper($form[0], $defaults, -1, $list, $list, $subscriptions[$list]); } // we don't need these columns: unset($form[0]['send_interval']); unset($form[0]['send_comments']); unset($form[0]['send_updates']); unset($form['footer']); if (isset($form[0]['checkboxes'])) { subscriptions_form_column_filter($form[0], $uid); $form['uid'] = array('#type' => 'value', '#value' => $uid); $form['access_key'] = array('#type' => 'value', '#value' => 'newsletter'); $form['module'] = array('#type' => 'value', '#value' => 'constant_contact'); $form['field'] = array('#type' => 'value', '#value' => 'newsletter'); $form['submit'] = array('#type' => 'submit', '#value' => t('Save'), '#weight' => 10); $form['#submit']['subscriptions_page_form_submit'] = array(); $form['#submit']['constant_contact_page_subscriptions_form_submit'] = array(); } return $form; } /** * FAPI #submit handler for constant_contact_page_subscriptions_form(). */ function constant_contact_page_subscriptions_form_submit($form_id, $form_values) { global $user; foreach ($form_values[0]['checkboxes'] as $list => $element) { require_once('ConstantContact.php'); $constant_contact = new ConstantContact(); $constant_contact->setUsername(variable_get('constant_contact_username', '')); $constant_contact->setPassword(variable_get('constant_contact_password', '')); if ($element[-1] == 1) { $constant_contact->setCategory($list); $constant_contact->add($user->mail, array( 'Custom_field_1' => $user->name, 'Custom_field_2' => $user->uid, 'Custom_field_3' => date('r'), )); } else { $constant_contact->setCategory($values['list']); $constant_contact->remove($user->mail); } } }