Из валидации в отправку

Главные вкладки

Аватар пользователя Bezlepkin Bezlepkin 18 декабря 2012 в 0:16

привет всем! Помогите!

Делаю валидацию формы

<?php
$form
['privatemsg']['submit']['#validate'][] = 'pm_send_to_all_validate';
?>

В этой функции делаю $form_state['validate_built_message'] = $message;

В функции отправки

<?php
$form
['privatemsg']['submit']['#submit'][] = 'pm_send_to_all_send';
?>

Пытаюсь извлечь $form_state['validate_built_message']

НО ТАМ ПУСТО!

Комментарии

Аватар пользователя Bezlepkin Bezlepkin 18 декабря 2012 в 11:47
<?php
/**
 * Implementation of hook_form_alter().
 */
function pm_send_to_all_form_alter(&$form$form_state$form_id) {
  switch (
$form_id) {
  case 
'privatemsg_new':
  
    
// при инициализации формы, добавляем заполнитель
    
$form['validate_built_message'] = array(
      
'#type' => 'value',
      
'#value' => array(),
);
  
    
$form['privatemsg']['recipient']['#required'] = FALSE;
    
$form['select_whom']['#type'] = 'checkbox';
    
$form['select_whom']['#title'] = 'Select for send message to all users.';
    
$form['select_whom']['#weight'] = -20;
    unset(
$form['privatemsg']['submit']['#validate']);
    
$form['privatemsg']['submit']['#validate'][] = 'pm_send_to_all_validate';
  break;
  }
}
?>
<?php
/**
 * Form validation
 */
function pm_send_to_all_validate($form$form_state) {

  

// The actual message that is being sent, we create this during validation and pass to submit to send out.
  
$message $form_state['values'];
  
$message['timestamp'] = time();
  
// Avoid subjects which only consist of a space as these can not be clicked.
  
$message['subject'] = trim($message['subject']);

  

$trimed_body trim(truncate_utf8(strip_tags($message['body']), 50TRUETRUE));
  if (empty(
$message['subject']) && !empty($trimed_body)) {
    
$message['subject'] = $trimed_body;
  }
  
// Only parse the user string for a new thread.
  
if (!isset($message['thread_id'])) {
    if (
$form_state['values']['select_whom'] == 1) {
      
$result db_query("SELECT uid FROM {users_roles} WHERE rid = 2");
      while(
$row db_fetch_array($result)) {
        
$response db_fetch_array(db_query("SELECT name FROM {users} WHERE uid = %d"$row['uid']));
      
$recipients .= $response['name'] .', ';
      }
    }
    else {
      
$recipients $message['recipient'];
    }
    
    list(
$message['recipients'], $invalid) = _pm_send_to_all_parse_userstring($recipients);
  
  }
  else {
    
// Load participants.
    
$message['recipients'] = _privatemsg_load_thread_participants($message['thread_id']);
    
// Remove author.
    
if (isset($message['recipients'][$message['author']->uid]) && count($message['recipients']) > 1) {
      unset(
$message['recipients'][$message['author']->uid]);
    }
  }

  

$validated _privatemsg_validate_message($messageTRUE);
  foreach (
$validated['messages'] as $type => $text) {
    
drupal_set_message($text$type);
  }
  
// ТУТ ВОТ НИ КАК НЕ ХОЧЕТ ОТПРАВЛЯТЬ!
  
form_set_value($form['validate_built_message'], $message$form_state);
  
$form_state['validate_built_message'] = $message;
  
  if (!empty(
$invalid)) {
    
drupal_set_message(t('The following users will not receive this private message: @invalid', array('@invalid' => implode(", "$invalid))), 'error');
  }
}

?>