/[drupal]/contributions/modules/news/news.module
ViewVC logotype

Diff of /contributions/modules/news/news.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.11, Sun Dec 14 02:00:22 2008 UTC revision 1.12, Wed Mar 18 22:33:50 2009 UTC
# Line 1  Line 1 
1  <?php // $Id: news.module,v 1.10 2008/08/03 05:36:05 vauxia Exp $  <?php // $Id: news.module,v 1.11 2008/12/14 02:00:22 vauxia Exp $
2    
3  /**  /**
4   * @file   * @file
5   *   *
6   * Send nodes in an news announcement using the send module   * Send nodes in a newsletter using the send API and lists handled by MLM.
7   */   */
8    
9  /**  /**
# Line 11  Line 12 
12  function news_menu() {  function news_menu() {
13    return array(    return array(
14      'send/news' => array(      'send/news' => array(
15        'title' => 'Send news',        'title'            => 'Send news',
16          'page callback'    => 'drupal_get_form',
17          'page arguments'   => array('news_form'),
18          'access arguments' => array('send news'),
19          'type'             => MENU_NORMAL_ITEM,
20          'file'             => 'news.form.inc',
21          'file path'        => drupal_get_path('module', 'news') .'/includes',
22        ),
23        'send/news/%' => array(
24          'title'            => 'Send news',
25          'page callback'    => 'drupal_get_form',
26          'page arguments'   => array('news_form', 2),
27        'access arguments' => array('send news'),        'access arguments' => array('send news'),
28        'type' => MENU_NORMAL_ITEM,        'type'             => MENU_CALLBACK,
29          'file'             => 'news.form.inc',
30          'file path'        => drupal_get_path('module', 'news') .'/includes',
31      ),      ),
32    );    );
33  }  }
# Line 26  function news_perm() { Line 40  function news_perm() {
40  }  }
41    
42  /**  /**
43   * Implementation of send module's hook_send()   * Implementation of hook_elements().
44     * Add a message element for the send form
45   */   */
46  function news_send($op, $module = 'send') {  function news_elements() {
47    if ($module != 'news') return; // only works on news module    return array(
48        'news_message' => array(
49    switch ($op) {        '#input' => TRUE,
50      case 'name':                 // human readable name of the module        '#process' => array('send_process'),
51        return t('News');        '#after_build' => array('send_set_value'),
52        ),
53      case 'features':             // features that this module uses    );
       return array('send', 'block');  
   
     case 'access':               // human readable name of the module  
       return user_access('send news');  
   
     case 'default action':       // if no nodes are included in message  
       return drupal_get_form('_send_form', $module, array());  
   
     case 'recipient type':       // node or user  
       return 'node';  
   
     case 'deliver':              // send the message to our own callback  
       return '_news_deliver';  
   }  
   return;  
54  }  }
55    
56  /**  /**
57   * Implementation of hook_form_alter() to modify the default send form   * Implementation of Send module's hook_send_profile_info().
58   */   */
59  function news_form_alter(&$form, $form_state, $form_id) {  function news_send_profile_info() {
60    if ((!isset($form['#module']) || $form['#module'] != 'news')) return;    return array(
61        'news' => array(
62    // Reset the "from" array and replace it with a list selector        'title' => t('News'),
63    unset($form['from']['sender_first_name'], $form['from']['sender_last_name']);        'mode' => 'mlm',
64    $form['from']['sender_name'] = array(      ),
     '#type'          => 'textfield',  
     '#title'         => t('Name'),  
     '#weight'        => -8,  
     '#size'          => 30,  
     '#maxsize'       => 100,  
     '#required'      => TRUE,  
     '#default_value' => variable_get('site_name', 'Drupal'),  
   );  
   
   // Reset the "to" array and replace it with a list selector  
   foreach (mlm_lists('announcement') as $list) {  
     $options[$list->nid] = l($list->title, 'node/'. $list->nid);  
   }  
   
   $values = array();  
   if (count($options) == 1) $values = array_keys($options);  
   
   $form['to'] = array();  
   $form['to']['recipients'] = array(  
     '#type'          => count($options) < 5 ? 'checkboxes' : 'select',  
     '#multiple'      => TRUE,  
     '#title'         => t('Mailing Lists'),  
     '#options'       => $options,  
     '#default_value' => $values,  
   );  
   
   // Allow author to edit the rendered node output if it exists  
   if ($value = $form['body']['node_body']['#value']) {  
     $form['body']['node_body']['#type'] = 'textarea';  
     $form['body']['node_body']['#default_value'] = $form['body']['node_body']['#value'];  
     unset($form['body']['node_body']['#value'], $form['body']['node_body_view']);  
   }  
   // Allow author to edit the subject line  
   $form['subject']['subject']['#type'] = 'textfield';  
   $form['subject']['subject']['#default_value'] = $form['subject']['subject']['#value'];  
   unset($form['subject']['subject']['#value'], $form['subject']['subject_view']);  
   
   // Send test message  
   unset($form['from']['sender_cc']);  
   $form['buttons']['test'] = array(  
     '#type'          => 'submit',  
     '#value'         => t('Send test message'),  
65    );    );
   $form['#validate'][] = '_news_test_delivery';  
   
   return;  
 }  
 function _news_test_delivery($form_id, $values) {  
   if ($values['op'] != t('Send test message')) return;  
   
   global $user;  
   mimemail($values['sender'], $user, $values['subject'], $values['body']);  
   drupal_set_message(t('Test message sent to !mail', array('!mail' => $user->mail)));  
   // cause validation to fail  
   form_set_error('buttons][test', '');  
 }  
   
 function _news_deliver($sender, $list, $values) {  
   if ($list) {  
     if (mlm_post($list, $values['sender'], $values['subject'], $values['body'])) {  
       return mlm_count($list);  
     }  
   }  
   return FALSE;  
66  }  }

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.2