/**
  * Send an email notification to a user
  * 
  * @static
  * @since 1.1.0
  * @param string $user_id User object_id
  * @param string $subject Email subject line
  * @param string $message Email body
  */
 public static function notify_user($user_id, $subject, $message, $short_text = null)
 {
     $error = new argent_error();
     if (!class_exists('PHPMailer')) {
         $error->add('1042', 'PHPMailer is not available', NULL, 'argent_notification');
     }
     if ($error->has_errors()) {
         return $error;
     }
     $mail = new PHPMailer();
     $mail->AddReplyTo(NOTIFICATION_FROM_MAIL, NOTIFICATION_FROM_NAME);
     $mail->SetFrom(NOTIFICATION_FROM_MAIL, NOTIFICATION_FROM_NAME);
     $user_data = argent_uauth::user_get_data($user_id);
     if (argent_error::check($user_data)) {
         return $user_data;
     }
     $mail->AddAddress($user_data['email'], $user_data['display_name']);
     $mail->Subject = $subject;
     $mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
     // optional, comment out and test
     $merge_fields = array('user_name' => $user_data['display_name'], 'email' => $user_data['email'], 'body' => $message, 'subject' => $subject, 'intro' => $short_text);
     $message_body = self::merge_template(ABSOLUTE_PATH . 'argent/html_email_templates/basic.html', $merge_fields);
     if (argent_error::check($message_body)) {
         return $message_body;
     }
     $mail->MsgHTML($message_body);
     if (!$mail->Send()) {
         $error->add('1040', 'Error sending mail', $mail->ErrorInfo, 'argent_notification');
         return $error;
     } else {
         return 'Mail sent to ' . $user_data['email'];
     }
 }