Вот пример того, как изменить содержимое узла и как отправить письмо при создании узла (но вы также можете отправлять почту при заполнении формы). Вы должны быть в состоянии адаптировать его для работы с вашими настройками.
Узел создан и по умолчанию не публикуется. Здесь я установлю узел как опубликованный, когда кто-то нажимает на ссылку в письме.
Создайте пользовательский модуль, который взаимодействует с nodeapi:
function module_nodeapi($node, $op, $a3 = NULL, $a4 = NULL){
if($node->type == 'petition'){
switch ($op) {
case 'submit':
case 'insert':
$mail = $user->mail;
$nodeid = $node->nid;
// mail the user using the drupal_send_mail() function
// make the link something like: http://web.be/petition/validate/$nodeid/$mail
// drupal_set_message('thank you for validating the petition');
case 'update':
break;
}
}
Пример ссылки: http://web.be/petition/validate/20/test@test.com. Следующее, что нужно сделать, это использовать hook_menu для получения ссылки и ее переменных (также в вашем пользовательском модуле):
function module_menu(){
$items['petition/valid/%/%'] = array(
'title' => 'Validated your petition-entry',
'page callback' => 'module_validate_petition',
'page arguments' => array(1,2),
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
}
function module_validate_petition($nid, $mail){
// load the node
$node = node_load($nid);
// set to published
$node->status = 1;
// save the node
node_save($node);
}