You are here

function guestbook_page in Guestbook 7.2

Same name and namespace in other branches
  1. 5.2 guestbook.module \guestbook_page()
  2. 5 guestbook.module \guestbook_page()
  3. 6.2 guestbook.module \guestbook_page()
  4. 6 guestbook.module \guestbook_page()

Output a guestbook page; menu callback.

1 call to guestbook_page()
guestbook_content_guestbook_user in panels/guestbook_user.inc
Render the guestbook of a user.
1 string reference to 'guestbook_page'
guestbook_menu in ./guestbook.module
Implementation of hook_menu().

File

./guestbook.module, line 350

Code

function guestbook_page($account, $op = NULL, $op_id = NULL, $page = TRUE) {
  global $user;

  // Prepare site guestbook.
  if (empty($account->uid)) {
    $account = drupal_anonymous_user();
    drupal_set_title(variable_get('guestbook_site_title', t('Site guestbook')));
  }
  if (!_guestbook_exists($account->uid)) {
    if ($page) {
      drupal_not_found();
    }
    return;
  }

  // Set last visited time for own guestbook
  if ($account->uid > 0 && $account->uid == $user->uid) {
    user_save($account, array(
      'guestbook_visited' => time(),
    ));
  }

  // Delete or comment an entry
  $comment_entry = 0;
  if (_guestbook_access('moderate', $account->uid) && is_numeric($op_id)) {
    switch ($op) {
      case 'edit':
        return drupal_get_form('guestbook_form_entry_form', $account->uid, 'page', $op_id);
      case 'delete':
        return guestbook_delete_entry_confirm_page($account->uid, $op_id);
      case 'comment':
        $comment_entry = $op_id;
        break;
    }
  }

  // Fetch guestbook entries
  $limit = variable_get('guestbook_entries_per_page', 20);
  $query = db_select('guestbook', 'g', array(
    'fetch' => PDO::FETCH_ASSOC,
  ));
  if (empty($comment_entry)) {
    $query = $query
      ->extend('PagerDefault');
    $query
      ->limit($limit);
  }
  $query
    ->leftJoin('users', 'u1', 'u1.uid = g.author');
  $query
    ->leftJoin('users', 'u2', 'u2.uid = g.commentauthor');
  $query
    ->fields('g')
    ->fields('u1', array(
    'uid',
    'name',
    'data',
    'picture',
  ));
  $query
    ->addField('u2', 'name', 'commentby');
  $query
    ->condition('g.recipient', $account->uid)
    ->orderBy('g.created', 'desc');

  // Fetch only guestbook entry for administrative comment.
  if (!empty($comment_entry)) {
    $query
      ->condition('g.id', $comment_entry);
  }
  if (!_guestbook_access('moderate', $account->uid) || !(user_access('moderate own guestbook') || user_access('moderate all guestbooks'))) {
    $query
      ->condition('g.status', 1);
  }
  $entries = array();
  foreach ($query
    ->execute() as $entry) {
    $entries[] = $entry;
  }
  $build = array(
    '#theme' => 'guestbook',
    '#uid' => $account->uid,
    '#entries' => $entries,
    '#comment_entry' => $comment_entry,
    '#limit' => $limit,
  );
  return $build;
}