Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.611
diff -u -p -r1.611 comment.module
--- modules/comment/comment.module 28 Dec 2007 12:02:51 -0000 1.611
+++ modules/comment/comment.module 4 Jan 2008 11:33:40 -0000
@@ -1757,23 +1757,33 @@ function theme_comment_thread_expanded($
*/
function theme_comment_post_forbidden($node) {
global $user;
- if ($user->uid) {
- return t("you can't post comments");
- }
- else {
- // we cannot use drupal_get_destination() because these links sometimes appear on /node and taxo listing pages
- if (variable_get('comment_form_location_'. $node->type, COMMENT_FORM_SEPARATE_PAGE) == COMMENT_FORM_SEPARATE_PAGE) {
- $destination = "destination=". drupal_urlencode("comment/reply/$node->nid#comment-form");
- }
- else {
- $destination = "destination=". drupal_urlencode("node/$node->nid#comment-form");
+ static $authenticated_post_comments;
+
+ if (!$user->uid) {
+ if (!isset($authenticated_post_comments)) {
+ // We only output any link if we are certain, that users get permission
+ // to post comments by logging in. We also locally cache this information.
+ $authenticated_post_comments = array_key_exists(DRUPAL_AUTHENTICATED_RID, user_roles(TRUE, 'post comments') + user_roles(TRUE, 'post comments without approval'));
}
+
+ if ($authenticated_post_comments) {
+ // We cannot use drupal_get_destination() because these links
+ // sometimes appear on /node and taxonomy listing pages.
+ if (variable_get('comment_form_location_'. $node->type, COMMENT_FORM_SEPARATE_PAGE) == COMMENT_FORM_SEPARATE_PAGE) {
+ $destination = 'destination='. drupal_urlencode("comment/reply/$node->nid#comment-form");
+ }
+ else {
+ $destination = 'destination='. drupal_urlencode("node/$node->nid#comment-form");
+ }
- if (variable_get('user_register', 1)) {
- return t('Login or register to post comments', array('@login' => url('user/login', array('query' => $destination)), '@register' => url('user/register', array('query' => $destination))));
- }
- else {
- return t('Login to post comments', array('@login' => url('user/login', array('query' => $destination))));
+ if (variable_get('user_register', 1)) {
+ // Users can register themselfs.
+ return t('Login or register to post comments', array('@login' => url('user/login', array('query' => $destination)), '@register' => url('user/register', array('query' => $destination))));
+ }
+ else {
+ // Only admins can add new users, no public registration.
+ return t('Login to post comments', array('@login' => url('user/login', array('query' => $destination))));
+ }
}
}
}