Mayo 09, 2013
estebanvalerioh
A continuación explicare como enviar un nuevo mensaje privado a un usuario utilizando el módulo de Private Messages vía código.
- Crear función personalizada.
El módulo Private Messages no implementa hook como tal que podamos utilizar, pero se puede implementar un llamado a una función de menu del módulo para simular un llamado mediante la interfaz de usuario.
/**
* Enviar un mensaje usando el modulo de privatemsg.
*
* @param object $user_1
* Objecto de usuario de Drupal.
*
* @param object $user_2
* Objecto de usuario de Drupal.
*
*/
function mi_modulo_enviar_privatemsg($user_1, $user_2) {
if (!is_object($user_1) && !is_object($user_2)) {
return;
}
// Incluimos el archivo del modulo de privatemsg donde
// está la función del formulario que necesitamos.
module_load_include('pages.inc','privatemsg');
// Creamos un array $form_state con los valores básicos necesarios.
$form_state = array();
$form_state['values']['author'] = $user_1;
$form_state['values']['recipient'] = $user_2->name . ' [user]';
$form_state['values']['recipients'] = array($user_2);
$form_state['values']['subject'] = 'Titulo de mi mensaje';
$form_state['values']['body'] = array(
'value' => t('Cuerpo de mi mensaje.'),
'format' => 'filtered_html',
);
$form_state['values']['op'] = t('Send message');
drupal_form_submit('privatemsg_new', $form_state);
}
Como se aprecia en el código lo que hacemos es llenar un arreglo de estados para el form privatemsg_new e indicar a Drupal que procese el formulario.
- Utilizamos la implementación.
Llamando la función mi_modulo_enviar_privatemsg() y pasando los parámetros requeridos, el mensaje será enviado, los mensajes pueden verse en el sitio de Drupal en la URL relativa /messages registrada por el módulo Private Messages.
Saludos.