--- guestbook.module.ORIG	2008-09-04 19:59:43.000000000 +0200
+++ guestbook.module	2010-03-15 10:31:04.000000000 +0100
@@ -29,7 +29,7 @@ function guestbook_menu() {
   $items = array();
   $guestbook_mode = variable_get('guestbook_mode', GUESTBOOK_SITE_GUESTBOOK | GUESTBOOK_USER_GUESTBOOKS);
 
-  $items['admin/settings/guestbook'] = array( 
+  $items['admin/settings/guestbook'] = array(
     'title' => 'Guestbook',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('guestbook_admin_settings'),
@@ -38,22 +38,22 @@ function guestbook_menu() {
 
   // User guestbooks.
   if ($guestbook_mode & GUESTBOOK_USER_GUESTBOOKS) {
-    $items['guestbooks'] = array( 
+    $items['guestbooks'] = array(
       'title' => 'Guestbooks',
       'page callback' => 'guestbook_list',
       'access arguments' => array('access user guestbooks'),
     );
-    $items['user/%user/guestbook'] = array( 
+    $items['user/%user/guestbook'] = array(
       'title' => 'User guestbook',
       'title callback' => '_guestbook_info',
       'title arguments' => array(1, 'title'),
       'page callback' => 'guestbook_page',
       'page arguments' => array(1),
-      'access callback' => 'user_access',
-      'access arguments' => array('access user guestbooks'),
+      'access callback' => 'guestbook_access_user_guestbooks',
+      'access arguments' => array(1),
       'type' => MENU_LOCAL_TASK,
     );
-    $items['user/%user/guestbook/sign'] = array( 
+    $items['user/%user/guestbook/sign'] = array(
       'title' => 'Add guestbook entry',
       'page callback' => 'guestbook_page_form',
       'page arguments' => array(1),
@@ -63,13 +63,13 @@ function guestbook_menu() {
   }
   // Site guestbook.
   if ($guestbook_mode & GUESTBOOK_SITE_GUESTBOOK) {
-    $items['guestbook'] = array( 
+    $items['guestbook'] = array(
       'title' => variable_get('guestbook_site_title', t('Site guestbook')),
       'page callback' => 'guestbook_page',
       'page arguments' => array(0),
       'access arguments' => array('access site guestbook'),
     );
-    $items['guestbook/sign'] = array( 
+    $items['guestbook/sign'] = array(
       'title' => 'Add guestbook entry',
       'page callback' => 'guestbook_page_form',
       'page arguments' => array(0),
@@ -82,6 +82,20 @@ function guestbook_menu() {
 }
 
 /**
+ * Access callback.
+ *
+ * @see guestbook_menu()
+ */
+function guestbook_access_user_guestbooks($user) {
+  if (user_access('access user guestbooks') && $user->guestbook_status == TRUE) {
+    return TRUE;
+  }
+  else {
+    return FALSE;
+  }
+}
+
+/**
  *  Implementation of hook_user()
  */
 function guestbook_user($op, &$edit, &$user, $category = '') {
@@ -111,7 +125,7 @@ function guestbook_user($op, &$edit, &$u
             '#type' => 'radios',
             '#title' => t('Status'),
             '#default_value' => isset($edit['guestbook_status']) ? $edit['guestbook_status'] : 0,
-            '#options' => array(t('Enabled'), t('Disabled')),
+            '#options' => array(1 => t('Enabled'), 0 => t('Disabled')),
           );
           $form['guestbook']['guestbook_send_email'] = array(
             '#type' => 'checkbox',
@@ -331,10 +345,10 @@ function guestbook_page($account, $op = 
   // Fetch guestbook entries
   $limit = variable_get('guestbook_entries_per_page', 20);
   $result = pager_query(
-    "SELECT g.*, u1.name, u1.data, u1.picture, u2.name as commentby 
-    FROM {guestbook} g 
-    LEFT JOIN {users} u1 ON g.author = u1.uid 
-    LEFT JOIN {users} u2 ON g.commentauthor = u2.uid 
+    "SELECT g.*, u1.name, u1.data, u1.picture, u2.name as commentby
+    FROM {guestbook} g
+    LEFT JOIN {users} u1 ON g.author = u1.uid
+    LEFT JOIN {users} u2 ON g.commentauthor = u2.uid
     WHERE g.recipient = %d
     ORDER BY g.created DESC",
     $limit, 0, "SELECT COUNT(*) FROM {guestbook} WHERE recipient = %d", $account->uid
@@ -374,9 +388,9 @@ function guestbook_list() {
     array('data' => t('last update'), 'field' => 'created', 'sort' => 'desc'),
   );
   $result = pager_query(
-    "SELECT u.uid, u.name, u.data, MAX(g.created) as created, COUNT(g.recipient) as num 
-    FROM {users} u 
-    LEFT OUTER JOIN {guestbook} g ON u.uid = g.recipient 
+    "SELECT u.uid, u.name, u.data, MAX(g.created) as created, COUNT(g.recipient) as num
+    FROM {users} u
+    LEFT OUTER JOIN {guestbook} g ON u.uid = g.recipient
     GROUP BY u.uid, u.name, u.data, g.recipient". tablesort_sql($header),
     $limit, 0, "SELECT COUNT(*) FROM {users}"
   );
@@ -629,10 +643,10 @@ function guestbook_delete_entry_confirm_
 
 function guestbook_delete_entry_confirm($form_state, $uid, $entry_id) {
   $entry = db_fetch_array(db_query(
-      "SELECT g.*, u1.name, u1.data, u1.picture, u2.name as commentby 
-    FROM {guestbook} g 
-    LEFT JOIN {users} u1 ON g.author = u1.uid 
-    LEFT JOIN {users} u2 ON g.commentauthor = u2.uid 
+    "SELECT g.*, u1.name, u1.data, u1.picture, u2.name as commentby
+    FROM {guestbook} g
+    LEFT JOIN {users} u1 ON g.author = u1.uid
+    LEFT JOIN {users} u2 ON g.commentauthor = u2.uid
     WHERE g.id = %d", $entry_id));
 
   $form             = array();
@@ -855,10 +869,10 @@ function _guestbook_info($uid, $data) {
     }
     else if ($guestbook_mode & GUESTBOOK_USER_GUESTBOOKS) {
       $guestbook_user = ($uid != $user->uid ? user_load(array('uid' => $uid)) : $user);
-      if ($guestbook_user->uid && ($guestbook_user->status || user_access('administer users')) && empty($guestbook_user->guestbook_status)) {
+      if ($guestbook_user->uid && ($guestbook_user->status || user_access('administer users')) && $guestbook_user->guestbook_status) {
         if ($uid != $user->uid) {
           // Guestbook of other users.
-          $info[$uid]['title'] = t("@username's guestbook", array('@username' => $guestbook_user->name));
+          $info[$uid]['title'] = t("@username's guestbook", array('@username' => $guestbook_user->realname ? $guestbook_user->realname :$guestbook_user->name));
           $info[$uid]['intro'] = !empty($guestbook_user->guestbook_intro) ? $guestbook_user->guestbook_intro : '';
         }
         else {
