Не работает обработчик формы

Аватар пользователя Strycker Strycker 14 июня 2013 в 14:04

Добрый день, коллеги.

Есть вопрос. Написал свой модуль, в нём реализован хук - hook_form_FORM_ID_alter()

<?php
function ure_form_user_profile_form_alter(&$form, &$form_state$form_id) {

 

// ....

      

$form['#submit'][] = 'ure_submit';
    }
  return 
$form;
}
?>

В этой функции я добавляю к форме редактирования пользователя пару селектов. Задумка такая, чтобы пользователь выбирал что-то из предложенных в селектах вариантах, а при сохранении профиля этот текст сохранялся в текстовое поле пользователя, сформированное встроенными средствами друпал, через админку.

Написал обработчик всего этого хозяйства:

<?php
function ure_submit($form, &$form_state) {
  if (isset(
$form['actions']['submit']['#value']) && $form_state['triggering_element']['#value'] == $form['actions']['submit']['#value']) {
    if ((
$form_state['values']['text1'] != 'Невыбрано')
      && (
$form_state['values']['text2'] != 'Неуказано')) {
      
watchdog('ure''Сработал обработчик формы ');
      
$user user_load($form['#user']->uid);
      
$edit = array();
      
$user->field_user_text['und'][]['value'] = 'Группа - ' $form_state['values']['text1'] . ', срок устранения - ' $form_state['values']['text2'];
      
user_save($user$edit);
      
$text = array('Группа - ' $form_state['values']['text1'] . ', срок устранения - ' $form_state['values']['text2']);
      
user_mail_send($user$text'text_message');
    }
  }
}
?>

Вроде бы работает. Сформированное с помощью селектов значение записывается в поле пользователя. НО! всё это работает только под учётной записью администратора. Если войти обычным пользователем, то этот обработчик вообще не вызывается (специально для проверки этого факта вставил watchdog).

Почему такое происходит и как с этим справиться? Буду рад любым комментариям по делу, так как у меня идеи уже иссякли.

Комментарии

Аватар пользователя Chyvakoff Chyvakoff 14 июня 2013 в 14:22

Попробуй поставить ватчдог в начало обработчика, может условия просто не пропускают?
А hook_form_FORM_ID_alter срабатывает для обычных пользователей?

Аватар пользователя Strycker Strycker 14 июня 2013 в 15:04

Когда прогонял под админом - все условия отрабатывались правильно, поэтому и воткнул его после условий, но попробую.
Да, хук отрабатывается, потому что его силами и генерятся два селекта, предназначенные для пользователей. Админ редактирует поле field_user_text как обычное текстовое.

UPD: поставил watchdog первой строкой в обработчике картина та же: сохраняю форму под админом - запись в логе есть, сохраняю под пользователем - нет.