Index: privatemsg.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.module,v
retrieving revision 1.63
diff -u -p -r1.63 privatemsg.module
--- privatemsg.module	23 Oct 2006 23:33:55 -0000	1.63
+++ privatemsg.module	16 Jan 2007 21:23:52 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: privatemsg.module,v 1.63 2006/10/23 23:33:55 mindless Exp $
+// $Id: privatemsg.module,v 1.52.2.9 2006/10/23 23:34:42 mindless Exp $
 
 /**
  * Implementation of hook_help().
@@ -33,7 +33,8 @@ function privatemsg_link($type, $node = 
       $access[$node->uid] = user_access('access private messages', $author) && $author->uid && (isset($author->privatemsg_allow) ? $author->privatemsg_allow : 1);
     }
     if ($access[$node->uid]) {
-      return array(l(t('write to author'), "privatemsg/msgto/$node->uid"));
+      $links['privatemsg'] =  array( 'title' => t('write to author'), 'href' => "privatemsg/msgto/" . $node->uid);
+      return $links;
     }
   }
 }
@@ -48,12 +49,14 @@ function privatemsg_menu($may_cache) {
   if ($may_cache) {
     $items[] = array('path' => 'admin/settings/privatemsg',
         'title' => 'privatemsg',
-        'callback' => 'privatemsg_configure');
+        'description' => t('privatemsg configuration options'),
+        'callback' => 'drupal_get_form',
+        'callback arguments' => 'privatemsg_configure');
   }
   else {
     $new = (int)_privatemsg_get_new_messages();
     $items[] = array('path' => 'privatemsg',
-                     'title' => t('my inbox') . ($new ? ' ('. $new .')' : ''),
+                     'title' => t('My Inbox') . ($new ? ' ('. $new .')' : ''),
                      'callback' => 'privatemsg_page',
                      'access' => user_access('access private messages'),
                      'type' => $user->uid && (isset($user->privatemsg_allow) ? $user->privatemsg_allow : 1) ? MENU_DYNAMIC_ITEM : MENU_CALLBACK);
@@ -174,7 +177,7 @@ function privatemsg_configure() {
       '#description' => t('Provide a link to send private messages to users with their comments.')
       );
 
-  return system_settings_form('privatemsg_settings', $form);
+  return system_settings_form($form);
 }
 
 /**
@@ -253,7 +256,7 @@ function privatemsg_page() {
 
   $breadcrumb = NULL;
   $op = $_POST["op"];
-  $edit = $_POST["edit"];
+  $edit = $_POST;
   $recipient = $_POST["recipient"];
   if (isset($edit['messages'])) {
     $msg = array_keys($edit['messages']);
@@ -286,14 +289,14 @@ function privatemsg_page() {
       $arg = "";
     case 'form':
     case 'reply':
-      $output = _privatemsg_form($arg);
+      $output = drupal_get_form('privatemsg_message_form', $arg);
       $title = t("Write a new message");
       $breadcrumb = array(l(t('Home'), ''), l(t('private messages'), 'privatemsg'));
       break;
     case 'msgto':
       $msg = (object)$msg;
       $msg->recipient = db_result(db_query("SELECT name FROM {users} WHERE uid = '%d'", $arg));
-      $output = _privatemsg_form($msg);
+      $output = drupal_get_form('privatemsg_message_form', $msg);
       $title = t("Write a new message");
       $breadcrumb = array(l(t('Home'), ''), l(t('private messages'), 'privatemsg'));
       break;
@@ -418,14 +421,14 @@ function _privatemsg_list($current_folde
 
 function _privatemsg_format_folder($current, $fid, $name) {
   if ($current == $fid) {
-    return "<strong>$name</strong>";
+    return array('title' => $name);
   }
   else {
-    return l($name, "privatemsg/list/$fid");
+    return array('title' => $name, 'href' => "privatemsg/list/$fid");
   }
 }
 
-function _privatemsg_form($message = 0) {
+function privatemsg_message_form($message = 0) {
   global $user;
   $form = array();
 
@@ -458,6 +461,17 @@ function _privatemsg_form($message = 0) 
   while ($name = db_fetch_object($result)) {
     $contacts[] = check_plain($name->name);
   }
+  // Extension of privatemsg to make use of buddylist
+  if (module_exists("buddylist")) {
+    $buddies = buddylist_get_buddies($user->uid);
+    foreach ($buddies as $buddy) {
+      $buddyname = check_plain($buddy['name']);
+      if (!in_array($buddyname, $contacts)) {
+        $contacts[] = $buddyname;
+      }
+    }
+  }
+  
   $form['quick'] = array(
       '#type' => 'select',
       '#options' => drupal_map_assoc($contacts),
@@ -486,7 +500,7 @@ function _privatemsg_form($message = 0) 
       '#name' => 'op'
       );
 
-  return drupal_get_form('privatemsg_message_form', $form);
+  return $form;
 }
 
 function _privatemsg_edit($edit) {
@@ -494,7 +508,7 @@ function _privatemsg_edit($edit) {
 
   if ($edit['recipient'] == '') {
     form_set_error('recipient', t('The <em>Recipient</em> field is required.'));
-    return _privatemsg_form((object)$edit);
+    return drupal_get_form('privatemsg_message_form', (object)$edit);
   }
   else {
     $recipient = user_load(array('name' => $edit['recipient']));
@@ -502,23 +516,23 @@ function _privatemsg_edit($edit) {
   
   if (!$recipient->uid) {
     form_set_error('recipient', t('The <em>Recipient</em> does not exist.'));
-    return _privatemsg_form((object)$edit);
+    return drupal_get_form('privatemsg_message_form', (object)$edit);
   }
   else if (!(isset($recipient->privatemsg_allow) ? $recipient->privatemsg_allow : 1)) {
     form_set_error('recipient', t('%name does not accept private messages.', array('%name' => $recipient->name)));
-    return _privatemsg_form((object)$edit);
+    return drupal_get_form('privatemsg_message_form', (object)$edit);
   }
   else if (trim($edit['subject']) == '') {
     form_set_error('subject', t('The <em>Subject</em> field is required.'));
-    return _privatemsg_form((object)$edit);
+    return drupal_get_form('privatemsg_message_form', (object)$edit);
   }
   if (trim($edit['privatemsgbody']) == '') {
     form_set_error('privatemsgbody', t('The <em>Message</em> field is required.'));
-    return _privatemsg_form((object)$edit);
+    return drupal_get_form('privatemsg_message_form', (object)$edit);
   }
   else if (array_key_exists('format', $edit) && !filter_access($edit['format'])) {
     form_set_error('format', t('The supplied input format is invalid.'));
-    return _privatemsg_form((object)$edit);
+    return drupal_get_form('privatemsg_message_form', (object)$edit);
   }
   else {
     $result = db_query("INSERT INTO {privatemsg} (author, recipient, subject, message, timestamp, newmsg, hostname, format) VALUES ('%d', '%d', '%s', '%s', '%d', '%d', '%s', '%d')", $user->uid, $recipient->uid, $edit['subject'], $edit['privatemsgbody'], time(), 1, getenv("REMOTE_ADDR"), $edit['format']);
@@ -623,17 +637,19 @@ function theme_privatemsg_view($message)
     if ($message->recipient == $user->uid) {
       $author = user_load(array('uid' => $message->uid));
       if ($author->uid && (isset($author->privatemsg_allow) ? $author->privatemsg_allow : 1)) {
-        $links[] = l(t('Reply to this message'), "privatemsg/reply/$message->id");
+        $links['reply'] = array('title' => t('Reply to this message'), 'href' => "privatemsg/reply/$message->id");
       }
       else {
-        $links[] = t('Sender does not accept replies');
+        $links['no_reply'] = array('title' => t('Sender does not accept replies'));
       }
     }
     if (($message->recipient == $user->uid) || (variable_get("privatemsg_sent_status", 1))) {
-      $links[] = l(t('Delete this message'), "privatemsg/delete/$message->id", array('onClick' => "return confirm('".t('Are you sure to delete this message?')."')"));
+      $links['delete'] = array('title' => t('Delete this message'), 
+                                'href' => "privatemsg/delete/$message->id", 
+                                'attributes' => array('onClick' => "return confirm('".t('Are you sure to delete this message?')."')"));
     }
 
-    $links[] = l(t('List messages'), 'privatemsg');
+    $links['list_messages'] = array('title' => t('List messages'), 'href' => 'privatemsg');
     $body .= '<div class="links">'. theme('links', $links) .'</div>';
   } 
   else {
@@ -656,13 +672,17 @@ function theme_privatemsg_list($current_
 
   $extra_folders = array();
   foreach ($folders as $folder) {
-    $folder_list[] = _privatemsg_format_folder($current_folder, $folder[0], $folder[1]);
+    $folder_list['folder_' . $folder[0]] = _privatemsg_format_folder($current_folder, $folder[0], $folder[1]);
     if ($folder[0] != 1 && $folder[0] != $current_folder) {
       $extra_folders[$folder[0]] = $folder[1];
     }
   }
   $out = theme('links', $folder_list);
 
+  return $out . drupal_get_form('privatemsg_list_form', $current_folder, $messages, $folders);
+}
+
+function privatemsg_list_form($current_folder, $messages, $folders) {
   $form['messages'] = array(
       '#theme' => 'privatemsg_message_table',
       '#tree' => TRUE
@@ -763,7 +783,7 @@ function theme_privatemsg_list($current_
       '#name' => 'op'
       );
 
-  return $out . drupal_get_form('privatemsg_list_form', $form);
+  return $form;
 }
 
 function theme_privatemsg_message_table($form) {
@@ -772,7 +792,7 @@ function theme_privatemsg_message_table(
   foreach (element_children($form) as $key) {
     if ($key != 'current_folder') {
       $row = array();
-      $row[] = form_render($form[$key]['selected']);
+      $row[] = drupal_render($form[$key]['selected']);
       $row[] = $form[$key]['date']['#value'];
       $row[] = $form[$key]['user']['#value'];
       $row[] = $form[$key]['subject']['#value'];
