function guestbook_page in Guestbook 7.2
Same name and namespace in other branches
- 5.2 guestbook.module \guestbook_page()
- 5 guestbook.module \guestbook_page()
- 6.2 guestbook.module \guestbook_page()
- 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;
}