| 1 |
<?php // $Id: send.form.inc,v 1.7 2009/05/25 20:25:56 vauxia Exp $ |
<?php // $Id: send.form.inc,v 1.8 2009/05/26 15:09:52 vauxia Exp $ |
| 2 |
|
|
| 3 |
/** |
/** |
| 4 |
* The default submission page for user-initiated send activities. |
* The default submission page for user-initiated send activities. |
| 5 |
*/ |
*/ |
| 6 |
function send_form($form_state, $profile, $options = array(), $nids = array()) { |
function send_form($form_state, $profile, $options = array(), $nids = array()) { |
| 7 |
|
$profile = (object) $profile; |
| 8 |
|
$profile->nids = ($nids && !is_array($nids)) ? explode(' ', $nids) : $nids; |
| 9 |
|
$profile->from_element = 'send_user'; |
| 10 |
|
$profile->to_element = 'send_contact'; |
| 11 |
|
$profile->message_element = 'send_message'; |
| 12 |
|
|
| 13 |
return array( |
return array( |
| 14 |
'#send_element' => 'send', |
'#send_element' => 'send', |
| 15 |
'send' => array( |
'send' => array( |
| 16 |
'#type' => 'send', |
'#type' => 'send', |
| 17 |
'#send_profile' => $profile, |
'#send' => $profile, |
|
'#send_nids' => ($nids && !is_array($nids)) ? explode(' ', $nids) : $nids, |
|
|
'#send_options' => $options, |
|
| 18 |
), |
), |
| 19 |
); |
); |
| 20 |
} |
} |
| 42 |
* Added by send_element_process(). |
* Added by send_element_process(). |
| 43 |
*/ |
*/ |
| 44 |
function send_submit($form, &$form_state) { |
function send_submit($form, &$form_state) { |
| 45 |
|
// Override the send profile's default values with POSTed ones. |
| 46 |
|
foreach ($form_state['values'] as $name => $value) { |
| 47 |
|
if ($name) $form_state['send']->$name = $value; |
| 48 |
|
} |
| 49 |
|
|
| 50 |
// We only care about elements and values within the send element. |
// We only care about elements and values within the send element. |
| 51 |
$key = $form['#send_element']; |
$key = $form['#send_element']; |
| 52 |
|
$key = 'send'; |
| 53 |
|
|
| 54 |
$values = send_form_set_values($form, $form_state, $key); |
$values = send_form_set_values($form, $form_state, $key); |
|
//$values = $form_state['values'][$key]; |
|
| 55 |
|
|
| 56 |
$profile = $form[$key]['#send_profile']; |
$send = $form_state['send']; |
|
$nids = $form[$key]['#send_nids']; |
|
| 57 |
|
|
| 58 |
// Set up the message values. |
// Set up the message values. |
| 59 |
$message = $values['message']; |
$message = $values['message']; |
| 60 |
$message['sender'] = $values['from'][0]; |
$message['sender'] = $values['from'][0]; |
| 61 |
|
|
| 62 |
// Call the send API with our processed values. |
if (!isset($form_state['send_deliver']) || $form_state['send_deliver']) { |
| 63 |
if ($ret = send($profile, $values['to'], $nids, $message)) { |
// Call the send API with our processed values. |
| 64 |
flood_register_event("send $profile"); |
if ($ret = send($send, $values['to'], $send->nids, $message)) { |
| 65 |
} |
flood_register_event("send $send->name"); |
|
|
|
|
// Redirect the user, if there's not already a redirect on this form. |
|
|
if (!isset($form_state['redirect'])) { |
|
|
if (count($nids) == 1) { |
|
|
$form_state['redirect'] = 'node/'. $nids[0]; |
|
| 66 |
} |
} |
| 67 |
else { |
|
| 68 |
$form_state['redirect'] = '<front>'; |
// Redirect the user, if there's not already a redirect on this form. |
| 69 |
|
if (!isset($form_state['redirect'])) { |
| 70 |
|
if (count($nids) == 1) { |
| 71 |
|
$form_state['redirect'] = 'node/'. $nids[0]; |
| 72 |
|
} |
| 73 |
|
else { |
| 74 |
|
$form_state['redirect'] = '<front>'; |
| 75 |
|
} |
| 76 |
} |
} |
| 77 |
} |
} |
| 78 |
} |
} |
| 79 |
|
|
| 80 |
function send_submit_refresh($form, &$form_state) { |
function send_submit_refresh($form, &$form_state) { |
| 81 |
$form_state['send'] = $form_state['values']; |
$form_state['send_deliver'] = FALSE; |
| 82 |
|
send_submit($form, $form_state); |
| 83 |
|
|
| 84 |
$form_state['rebuild'] = TRUE; |
$form_state['rebuild'] = TRUE; |
| 85 |
|
$form_state['redirect'] = FALSE; |
| 86 |
} |
} |
| 87 |
|
|
| 88 |
/** |
/** |
| 89 |
* The #process handler for a "send" element. |
* The #process handler for the main "send" element. |
| 90 |
*/ |
*/ |
| 91 |
function send_element_process($element, $edit, &$form_state, $form) { |
function send_element_process($element, $edit, &$form_state, $form) { |
| 92 |
global $user; |
global $user; |
| 93 |
|
|
| 94 |
$profile = $element['#send_profile']; |
if (!isset($form_state['send'])) { |
| 95 |
//$id = 'send-'. $profile .'-form'; |
$form_state['send'] = (object) $element['#send']; |
| 96 |
$id = 'send-form'; |
} |
| 97 |
|
$send = $form_state['send']; |
| 98 |
|
|
| 99 |
// Make sure that the send item's submit handler is added to the form. |
// Make sure that the send item's submit handler is added to the form. |
| 100 |
if (!isset($form_state['submit_handlers'])) { |
if (!isset($form_state['submit_handlers'])) { |
| 107 |
if (!isset($element['#parents'])) $element['#parents'] = array(); |
if (!isset($element['#parents'])) $element['#parents'] = array(); |
| 108 |
$element['#parents'] = array(); |
$element['#parents'] = array(); |
| 109 |
|
|
|
$o = $element['#send_options']; |
|
|
|
|
| 110 |
$element['#tree'] = TRUE; |
$element['#tree'] = TRUE; |
|
$element['#prefix'] = '<div id="'. $id .'">'; |
|
|
$element['#suffix'] = '</div>'; |
|
| 111 |
|
|
| 112 |
$element['from'] = array( |
$element['from'] = array( |
| 113 |
'#type' => isset($o['from_element']) ? $o['from_element'] : 'send_user', |
'#type' => $send->from_element, |
| 114 |
); |
); |
| 115 |
$element['to'] = array( |
$element['to'] = array( |
| 116 |
'#type' => isset($o['to_element']) ? $o['to_element'] : 'send_contact', |
'#type' => $send->to_element, |
| 117 |
); |
); |
| 118 |
|
|
| 119 |
$element['message'] = array( |
$element['message'] = array( |
| 120 |
'#type' => isset($o['message_element']) ? $o['message_element'] : 'send_message', |
'#type' => $send->message_element, |
|
'#send_profile' => $profile, |
|
| 121 |
); |
); |
| 122 |
$element['message']['nids'] = array( |
$element['message']['nids'] = array( |
| 123 |
'#type' => 'value', |
'#type' => 'value', |
| 124 |
'#value' => $element['#send_nids'] |
'#value' => $send->nids, |
| 125 |
); |
); |
| 126 |
|
|
| 127 |
return $element; |
return $element; |
| 152 |
$form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id); |
$form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id); |
| 153 |
|
|
| 154 |
$send_form = $form[$key]; |
$send_form = $form[$key]; |
| 155 |
if ($element) $send_form = $send_form[$element]; |
if ($element) { |
| 156 |
|
foreach (element_children($send_form) as $i) { |
| 157 |
|
if ($i != $element) $send_form[$i]['#access'] = FALSE; |
| 158 |
|
} |
| 159 |
|
} |
| 160 |
|
//watchdog('debug', '<pre>'.print_r($send_form, 1)); |
| 161 |
|
|
| 162 |
unset($send_form['#prefix'], $send_form['#suffix']); |
unset($send_form['#prefix'], $send_form['#suffix']); |
| 163 |
$output = theme('status_messages') . drupal_render($send_form); |
$output = theme('status_messages') . drupal_render($send_form); |
| 285 |
function send_message_element_process($element, $edit, &$form_state, $form) { |
function send_message_element_process($element, $edit, &$form_state, $form) { |
| 286 |
module_load_include('inc', 'send', 'includes/send.template'); |
module_load_include('inc', 'send', 'includes/send.template'); |
| 287 |
|
|
| 288 |
|
//$post = isset($form_state['send']) ? $form_state['send']['message'] : array(); |
| 289 |
|
$send = $form_state['send']; |
| 290 |
|
|
| 291 |
$templates = array(); |
$templates = array(); |
| 292 |
foreach (send_template_list($profile) as $t) { |
foreach (send_template_list($send) as $t) { |
| 293 |
$templates[$t->stid] = $t->name; |
$templates[$t->stid] = $t->name; |
| 294 |
} |
} |
| 295 |
|
|
| 296 |
if (isset($form_state['send']['message']['template'])) { |
if (isset($send->message['template'])) { |
| 297 |
$template = send_template_load($form_state['send']['message']['template']); |
$template = $send->message['template']; |
| 298 |
} |
} |
| 299 |
elseif ($stid = send_value('template', $profile)) { |
elseif (isset($send->template)) { |
| 300 |
$template = send_template_load($templates['stid']); |
$template = $send->template; |
| 301 |
} |
} |
| 302 |
if (!$template) { |
if (!$template) { |
| 303 |
$template = send_template_load(key($templates)); |
$template = key($templates); |
| 304 |
} |
} |
| 305 |
|
$template = send_template_load($template); |
| 306 |
|
|
| 307 |
$element['template'] = array( |
$element['template'] = array( |
| 308 |
'#type' => 'select', |
'#type' => 'select', |
| 318 |
'#submit' => array('send_submit_refresh'), |
'#submit' => array('send_submit_refresh'), |
| 319 |
'#attributes' => array('onload' => '$(this).hide();'), |
'#attributes' => array('onload' => '$(this).hide();'), |
| 320 |
'#ahah' => array( |
'#ahah' => array( |
| 321 |
//'path' => 'send/js/send_form/message', |
'path' => 'send/js/send_form/message', |
| 322 |
'path' => 'send/js/send_form', |
//'path' => 'send/js/send_form', |
|
//'wrapper' => $id, |
|
| 323 |
'wrapper' => 'send-form', |
'wrapper' => 'send-form', |
| 324 |
|
'wrapper' => 'edit-message-wrapper', |
| 325 |
'method' => 'replace', |
'method' => 'replace', |
| 326 |
'effect' => 'fade', |
'effect' => 'fade', |
| 327 |
), |
), |
| 340 |
} |
} |
| 341 |
|
|
| 342 |
if ($template->subject_editable) { |
if ($template->subject_editable) { |
| 343 |
|
if (!$subject = $send->message['subject']) $subject = $template->subject; |
| 344 |
$element['subject_display'] = array( |
$element['subject_display'] = array( |
| 345 |
'#type' => 'textfield', |
'#type' => 'textfield', |
| 346 |
'#title' => t('Subject'), |
'#title' => t('Subject'), |
| 347 |
'#default_value' => $template->subject, |
'#default_value' => $subject, |
| 348 |
); |
); |
| 349 |
$element['subject'] = array( |
$element['subject'] = array( |
| 350 |
'#type' => 'value', |
'#type' => 'value', |
| 351 |
'#value' => $template->subject, |
'#value' => $subject, |
| 352 |
); |
); |
| 353 |
} |
} |
| 354 |
else { |
else { |
| 362 |
$element['message'] = array( |
$element['message'] = array( |
| 363 |
'#type' => 'textarea', |
'#type' => 'textarea', |
| 364 |
'#title' => t('Message'), |
'#title' => t('Message'), |
| 365 |
'#default_value' => $template->message, |
'#default_value' => $send->message['message'], |
| 366 |
); |
); |
| 367 |
if (isset($form_state['send']['message']['build_mode'])) { |
|
| 368 |
$build_mode = $form_state['send']['message']['build_mode']; |
if (isset($send->message['build_mode'])) { |
| 369 |
} |
$build_mode = $send->message['build_mode']; |
|
elseif (isset($element['#value']['build_mode'])) { |
|
|
$build_mode = $element['#value']['build_mode']; |
|
| 370 |
} |
} |
| 371 |
else { |
else { |
| 372 |
$build_mode = $template->build_mode ? $template->build_mode : 'teaser'; |
$build_mode = $template->build_mode ? $template->build_mode : 'teaser'; |
| 386 |
|
|
| 387 |
$body = ''; |
$body = ''; |
| 388 |
|
|
| 389 |
foreach ($element['nids']['#value'] as $nid) { |
foreach ($send->nids as $nid) { |
| 390 |
$node = node_load($nid); |
$node = node_load($nid); |
| 391 |
$node->build_mode = $build_mode; |
$node->build_mode = $build_mode; |
| 392 |
$teaser = $node->build_mode == 'teaser'; |
$teaser = $node->build_mode == 'teaser'; |
| 396 |
'#value' => $content, |
'#value' => $content, |
| 397 |
); |
); |
| 398 |
|
|
| 399 |
|
// TODO make this conditional. |
| 400 |
|
$element['nodes']['#theme'] = 'send_draggable'; |
| 401 |
|
|
| 402 |
$body .= $content; |
$body .= $content; |
| 403 |
} |
} |
| 404 |
$element['body'] = array( |
$element['body'] = array( |
| 411 |
|
|
| 412 |
/** |
/** |
| 413 |
* An #after_build handler for a send_message element. |
* An #after_build handler for a send_message element. |
| 414 |
* Set the element value to something that will |
* Set the element value to something that will be understood by the Send API. |
| 415 |
*/ |
*/ |
| 416 |
function send_message_element_set_value($element, &$form_state) { |
function send_message_element_set_value($element, &$form_state) { |
| 417 |
$subject = $element['#value']['subject']; |
$send = $form_state['send']; |
| 418 |
$profile = $element['#send_profile']; |
$message = $send->message; |
| 419 |
$message = $form_state['values']['message']; |
$subject = $send->message['subject']; |
| 420 |
$template = send_template_load($form_state['values']['message']['template']); |
$template = send_template_load($send->message['template']); |
| 421 |
$params = array_merge($form_state['values'], $form_state['values']['message']); |
$params = $send->message; |
| 422 |
|
|
| 423 |
$element['#value'] = array( |
$element['#value'] = array( |
| 424 |
'subject' => theme('send_subject', $subject, $profile, $template, $params), |
'subject' => theme('send_subject', $subject, $profile, $template, $params), |