--- privatemsg.module 2009-09-14 17:53:20.000000000 +0200 +++ privatemsgNew.module 2009-09-22 18:29:20.906250000 +0200 @@ -25,6 +25,7 @@ function privatemsg_perm() { 'administer privatemsg settings', 'write privatemsg', 'delete privatemsg', + 'reply only', ); } @@ -642,7 +643,7 @@ function privatemsg_view($thread) { $content['messages']['#weight'] = 0; // Display the reply form if user is allowed to use it. - if (privatemsg_user_access('write privatemsg')) { + if (privatemsg_user_access('reply only')) { $content['reply']['#value'] = drupal_get_form('privatemsg_new', $thread['participants'], $thread['subject'], $thread['thread_id'], $thread['read_all']); $content['reply']['#weight'] = 5; } @@ -722,10 +723,18 @@ function privatemsg_new(&$form_state, $r '#value' => $form_state['privatemsg_preview'], ); } - $form['privatemsg'] = array( - '#type' => 'fieldset', - '#access' => privatemsg_user_access('write privatemsg'), - ); + if (privatemsg_user_access('write privatemsg')) { + $form['privatemsg'] = array( + '#type' => 'fieldset', + '#access' => privatemsg_user_access('write privatemsg'), + ); + } + else { + $form['privatemsg'] = array( + '#type' => 'fieldset', + '#access' => privatemsg_user_access('reply only'), + ); + } $form['privatemsg']['author'] = array( '#type' => 'value', '#value' => $user, @@ -1441,7 +1450,7 @@ function privatemsg_reply($thread_id, $b function _privatemsg_validate_message(&$message, $form = FALSE) { $messages = array('error' => array(), 'warning' => array()); - if (!privatemsg_user_access('write privatemsg', $message['author'])) { + if (!privatemsg_user_access('write privatemsg', $message['author']) && (!privatemsg_user_access('reply only', $message['author']) && isset($message['thread_id']))) { // no need to do further checks in this case... if ($form) { form_set_error('author', t('User @user is not allowed to write messages', array('@user' => $message['author']->name)));