Index: privatemsg.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.install,v
retrieving revision 1.5.2.4.2.11.2.11
diff -u -r1.5.2.4.2.11.2.11 privatemsg.install
--- privatemsg.install	7 Jul 2009 23:31:43 -0000	1.5.2.4.2.11.2.11
+++ privatemsg.install	27 Jul 2009 00:49:57 -0000
@@ -81,6 +81,12 @@
         'not null'      => TRUE,
         'size'          => 'big',
       ),
+      'format'     => array(
+        'type' => 'int',
+        'size' => 'small',
+        'not null' => TRUE,
+        'description' => 'The {filter_formats}.format of the message text.',
+      ),
       'timestamp'     => array(
         'description'   => 'Time when the message was sent',
         'type'          => 'int',
@@ -417,4 +423,29 @@
   }
   $ret[] = array('success' => $result !== FALSE, 'query' => check_plain($sql));
   return $ret;
+}
+
+/**
+ * Create a signature_format column.
+ */
+function privatemsg_update_6004() {
+  $ret = array();
+  if (!db_column_exists('pm_message', 'format')) {
+    $schema = array(
+      'type' => 'int',
+      'size' => 'small',
+      'not null' => TRUE,
+      'description' => 'The {filter_formats}.format of the message text.',
+    );
+
+    db_add_field($ret, 'pm_message', 'format', $schema);
+
+    // Set the format of existing signatures to the current default input format.
+    if ($current_default_filter = variable_get('filter_default_format', 0)) {
+      $sql = 'UPDATE {pm_message} SET format = %d';
+      $result = db_query($sql, $current_default_filter);
+      $ret[] = array('success' => $result !== FALSE, 'query' => check_plain($sql));
+    }
+  }
+  return $ret;
 }
\ No newline at end of file
Index: privatemsg.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.module,v
retrieving revision 1.70.2.30.2.91.2.63
diff -u -r1.70.2.30.2.91.2.63 privatemsg.module
--- privatemsg.module	22 Jul 2009 15:02:52 -0000	1.70.2.30.2.91.2.63
+++ privatemsg.module	27 Jul 2009 00:44:39 -0000
@@ -424,7 +424,7 @@
    * @todo perhaps make this timestamp configurable via admin UI?
    */
   $vars['message_timestamp'] = format_date($message['timestamp'], 'small');
-  $vars['message_body'] = check_markup($message['body']);
+  $vars['message_body'] = check_markup($message['body'], $message['format']);
   if (isset($vars['mid'])) {
     $vars['message_actions'][] = array('title' => t('Delete message'), 'href' => 'messages/delete/' . $vars['mid']);
   }
@@ -437,7 +437,7 @@
   drupal_alter('privatemsg_message_view', $vars);
 
   $vars['message_actions'] = !empty($vars['message_actions']) ? theme('links', $vars['message_actions'], array('class' => 'message-actions')) : '';
-  
+
   $vars['anchors'] = '';
   foreach ($vars['message_anchors'] as $anchor) {
     $vars['anchors'].= '<a name="' . $anchor . '"></a>';
@@ -683,7 +683,7 @@
     '#autocomplete_path'  => 'messages/user-name-autocomplete',
     // Do not hardcode #maxlength, make it configurable by number of recipients, not their name length.
   );
-  $form['privatemsg']['subject']    = array(
+  $form['privatemsg']['subject'] = array(
     '#type'               => 'textfield',
     '#title'              => t('Subject'),
     '#size'               => 50,
@@ -691,14 +691,21 @@
     '#default_value'      => $subject,
     '#weight'             => -5,
   );
-  $form['privatemsg']['body']       = array(
+  $form['privatemsg']['body'] = array(
     '#type'               => 'textarea',
     '#title'              => t('Message'),
-    '#cols'               => 10,
     '#rows'               => 6,
     '#weight'             => 0,
     '#default_value'      => $body,
+    '#resizable'          => TRUE,
   );
+  $format = FILTER_FORMAT_DEFAULT;
+  // The input filter widget looses the format during preview, specify it
+  // explicitly.
+  if (isset($form_state['values']) && array_key_exists('format', $form_state['values'])) {
+    $format = $form_state['values']['format'];
+  }
+  $form['privatemsg']['format'] = filter_form($format);
   $form['privatemsg']['preview'] = array(
     '#type'               => 'submit',
     '#value'              => t('Preview message'),
@@ -759,6 +766,7 @@
   $message['body']      = $form_state['values']['body'];
   $message['subject']   = $form_state['values']['subject'];
   $message['author']    = $form_state['values']['author'];
+  $message['format']    = $form_state['values']['format'];
   $message['timestamp'] = time();
   if (isset($form_state['values']['thread_id']) && $form_state['values']['thread_id']) {
     $message['thread_id'] = $form_state['values']['thread_id'];
@@ -854,6 +862,22 @@
   $form_state['rebuild'] = TRUE; // this forces our form to be rebuilt instead of being submitted.
 }
 
+/**
+ * @addtogroup sql
+ * @{
+ */
+
+/**
+ * Query definition to load a list of threads.
+ *
+ * @param $fragments
+ *  Query fragments array.
+ * @param $account
+ *  User object for which the messages are being loaded.
+ * @param $argument
+ *  string argument which can be used in the query builder to modify the thread listing.
+ */
+
 function privatemsg_sql_list(&$fragments, $account, $argument = 'list') {
   $fragments['primary_table'] = '{pm_message} pm';
 
@@ -899,11 +923,6 @@
 }
 
 /**
- * @addtogroup sql
- * @{
- */
-
-/**
  * Query function for load.
  */
 function privatemsg_sql_load(&$fragments, $pmid, $account) {
@@ -915,6 +934,7 @@
   $fragments['select'][]      = "pm.subject";
   $fragments['select'][]      = "pm.body";
   $fragments['select'][]      = "pm.timestamp";
+  $fragments['select'][]      = "pm.format";
   $fragments['select'][]      = "pmi.is_new";
 
   $fragments['inner_join'][]  = 'INNER JOIN {pm_index} pmi ON pm.mid = pmi.mid';
@@ -923,6 +943,7 @@
   $fragments['where'][]       = 'pmi.uid = %d';
   $fragments['query_args']['where'][]  = $account->uid;
 }
+
 /**
  * Query definition to load messages of one or multiple threads.
  *
@@ -1233,6 +1254,7 @@
   $message += array(
     'author' => $author,
     'timestamp' => time(),
+    'format' => FILTER_FORMAT_DEFAULT,
   );
 
   $validated = _privatemsg_validate_message($message);
@@ -1290,6 +1312,7 @@
   $message += array(
     'author' => $author,
     'timestamp' => time(),
+    'format' => FILTER_FORMAT_DEFAULT,
   );
 
   // We don't know the subject and the recipients, so we need to load them..
@@ -1405,8 +1428,9 @@
   $args[] = $message['subject'];
   $args[] = $message['author']->uid;
   $args[] = $message['body'];
+  $args[] = $message['format'];
   $args[] = $message['timestamp'];
-  $query = "INSERT INTO {pm_message} (subject, author, body, timestamp) VALUES ('%s', %d, '%s', %d)";
+  $query = "INSERT INTO {pm_message} (subject, author, body, format, timestamp) VALUES ('%s', %d, '%s', %d, %d)";
   $resuld = db_query($query, $args);
   $mid = db_last_insert_id('pm_message', 'mid');
   $message['mid'] = $mid;

