You are here

function guestbook_list in Guestbook 7.2

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

Output a list of all guestbooks; menu callback.

1 string reference to 'guestbook_list'
guestbook_menu in ./guestbook.module
Implementation of hook_menu().

File

./guestbook.module, line 443

Code

function guestbook_list() {
  $limit = 40;
  $guestbooks = array();
  $guestbook_mode = variable_get('guestbook_mode', GUESTBOOK_SITE_GUESTBOOK | GUESTBOOK_USER_GUESTBOOKS);
  $header = array(
    array(
      'data' => t('user'),
      'field' => 'u.name',
    ),
    array(
      'data' => t('entries'),
      'field' => 'num',
    ),
    array(
      'data' => t('last update'),
      'field' => 'created',
      'sort' => 'desc',
    ),
  );
  $query = db_select('users', 'u', array(
    'fetch' => PDO::FETCH_ASSOC,
  ))
    ->extend('TableSort')
    ->extend('PagerDefault');
  $query
    ->leftJoin('guestbook', 'g', 'u.uid = g.recipient');
  $query
    ->fields('u', array(
    'uid',
    'name',
    'data',
  ));
  $query
    ->addExpression('MAX(g.created)', 'created');
  $query
    ->addExpression('COUNT(g.recipient)', 'num');
  $query
    ->groupBy('u.uid');
  $query
    ->groupBy('u.name');
  $query
    ->groupBy('u.data');
  $query
    ->groupBy('g.recipient');
  $query
    ->orderByHeader($header);
  $query
    ->limit($limit);
  foreach ($query
    ->execute() as $guestbook) {
    if ($guestbook['uid'] == 0 && user_access('access site guestbook') && $guestbook_mode & GUESTBOOK_SITE_GUESTBOOK) {

      // Site guestbook.
      $guestbooks[0] = $guestbook;
    }
    else {
      if ($guestbook['uid'] > 0 && user_access('access user guestbooks')) {

        // User guestbooks.
        $data = unserialize($guestbook['data']);
        if (empty($data['guestbook_status'])) {
          $guestbooks[$guestbook['uid']] = $guestbook;
        }
      }
    }
  }
  $build = array(
    '#theme' => 'guestbook_list',
    '#guestbooks' => $guestbooks,
    '#header' => $header,
    '#limit' => $limit,
  );
  return $build;
}