Hero

Como enviar un mensaje via código con el módulo Private Messages

Mayo 09, 2013

estebanvalerioh
PHP
Programación
Drupal

A continuación explicare como enviar un nuevo mensaje privado a un usuario utilizando el módulo de Private Messages vía código.

  1. 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.

  1. 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.

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.