diff -urp mailing_list/mailing_list.module mailing_list_add_export/mailing_list.module --- mailing_list/mailing_list.module 2008-07-20 02:11:35.000000000 -0400 +++ mailing_list_add_export/mailing_list.module 2008-11-10 21:00:06.863828444 -0500 @@ -18,6 +18,12 @@ function mailing_list_menu() { 'access arguments' => array('administer mailing list'), ); + $items['mailing-list/%mailing_list/export'] = array( + 'title' => t('Export Mailing List'), + 'page callback' => 'mailing_list_export', + 'page arguments' => array(1), + 'access arguments' => array('export mailing list'), + ); return $items; } @@ -105,12 +111,57 @@ function mailing_list_lists() { $result = db_query($query); $rows = array(); while ($row = db_fetch_object($result)) { - $rows[] = $row->list . ' ' . l('edit', 'admin/settings/mailing-list/'. $row->id .'/edit'); + $rows[] = $row->list . ' ' . l('edit', 'admin/settings/mailing-list/'. $row->id .'/edit') . ' ' . l('export' , 'mailing-list/' . $row->id . '/export'); } return theme('item_list', $rows, "Available Mailing Lists"); } +function mailing_list_export($list){ + + // --- set up file for export ---// + + //get file directory + $path = file_directory_path(); + + //create file to hold email list + $filename = $list->list. '.csv'; + + //full path name + $full_path = $path.'/'.$filename; + + // --- get email addresses from database ---// + + //create query for selection of emails + $query = "SELECT * FROM {mailing_list_emails} WHERE mailing_list_id='%d'"; + + //run query + $result = db_query($query, $list->id); + + //create string with all the emails + $emails = ""; + while ($row = db_fetch_object($result)){ + $emails .= $row->email.",\n"; + } + + //remove trailing , and \n + $emails = trim ($emails , ",\n"); + + //write resultant string to file + + file_save_data($emails, $full_path, FILE_EXISTS_REPLACE); + + //set headers for file transfer + $headers = array( + 'Content-Type: application/octet-stream', + 'Content-Disposition: attachment; filename="' . basename($full_path) . '";', + 'Content-Length: ' . sprintf('%u', filesize($full_path)), + ); + + file_transfer($full_path, $headers); + +} + function mailing_list_form(&$form_state, $list = null) { $form = array();