'notifications-lite', 'subject' => $subject, 'body' => empty($body) ? $subject : $body, ); return messaging_message_send_user($account, $message); } else { // We don't have anything else so we use Drupal's mail $account = user_load(array('uid' => $uid)); return drupal_mail('notifications-lite-'.$action, $account->mail, $subject, empty($body) ? $subject : $body); } } /** * Put simple notification into queue * * @param $uid * User id for destination * @param $subject * Notification subject * @param $body * Optional notification body * @param $action * Optional action name, so other modules can define specific message parts for their actions */ function notifications_lite_add_to_queue($uid, $subject, $body = '', $action = 'default', $params = array()) { // Build and store simple event $event = array( 'module' => 'notifications', 'uid' => 0, 'oid' => $uid, 'type' => 'lite', 'action' => $action, 'params' => array('for-uid' => $uid, 'subject' => $subject, 'body' => $body), ); $event['params'] = array_merge($event['params'], $params); $event = notifications_event($event); } /** * Implementation of hook_notifications() * * It handles event texts */ function notifications_lite_notifications($op, &$arg0, $arg1 = NULL, $arg2 = NULL) { switch ($op) { case 'event load': // $arg0 is event $event = &$arg0; if ($event->type == 'lite') { if (!empty($event->params['subject'])) { $event->text['subject'] = $event->params['subject']; $event->text['digest'] = $event->params['subject']; } if (!empty($event->params['body'])) { $event->text['main'] = $event->params['body']; } } break; // By queueing the event here we gain access to some features, like inmediate sending case 'event queued': // $event is arg0 $event = &$arg0; if ($event->type == 'lite') { notifications_lite_queue_event($event); } break; case 'event types': // We just define event type 'lite', action 'default' $types[] = array( 'type' => 'lite', 'action' => 'default', 'name' => t('Message for [user]'), 'digest' => NULL, // This means grouping by: event type, event action 'description' => t('Notifications lite message'), ); return $types; } } /** * Insert lite notificaition into queue */ function notifications_lite_queue_event($event) { $uid = $event->params['for-uid']; $account = user_load(array('uid' => $uid)); // Just inmediate sending for 5.x, diggest support in 6.x $send_interval = 0; $send_method = notifications_user_setting('send_method', $account); $sql = 'INSERT INTO {notifications_queue} (uid, sid, module, eid, send_interval, send_method, cron, created, conditions) '; $sql .= " VALUES(%d, 0, 'notifications', %d, %d, '%s', 1, %d, 0) "; db_query($sql, $uid , $event->eid, $send_interval, $send_method, time()); } /** * Implementation of hook_messaging() */ function notifications_lite_messaging($op, $arg1 = NULL, $arg2 = NULL, $arg3 = NULL, $arg4 = NULL) { switch ($op) { case 'message groups': // Generic notifications event $info['notifications-event-lite'] = array( 'module' => 'notifications_lite', 'name' => t('Simple notifications'), 'help' => t('The subject and main body will be provided by the event itself'), ); return $info; case 'message keys': $type = $arg1; switch ($type) { case 'notifications-event-lite': // The other parts for these messages will be given by the event itself return array( 'header' => t('Header'), 'footer' => t('Footer'), ); break; } break; case 'messages': $type = $arg1; // Event notifications switch ($type) { case 'notifications-event-lite': return array( 'header' => t("Greetings, [user]."), 'footer' => array( t('This is an automatic message from [site-name]'), t('To manage your subscriptions, browse to [subscriptions-manage]'), ), ); } break; } }