You are here

function modr8_block_view in modr8 7

Implements hook_block_view().

File

./modr8.module, line 318
Easy dedicated content moderation

Code

function modr8_block_view($delta) {
  if (TRUE) {
    if ($delta == 'modr8-moderators') {
      $block = array();
      $cutoff = strtotime('now -6 months');
      $qry = db_select('modr8_log', 'ml')
        ->condition('ml.action', 'Response', '<>')
        ->condition('ml.timestamp', $cutoff, '>');
      $qry
        ->join('users', 'u', 'u.uid = ml.uid');
      $qry
        ->fields('u');
      $qry
        ->condition('u.status', 1)
        ->addExpression('COUNT(ml.modid)', 'number');
      $accounts = $qry
        ->execute()
        ->fetchAll();
      $header = array(
        t('User'),
        t('Number of actions'),
      );
      $rows = array();
      foreach ($accounts as $key => $account) {
        $rows[] = array(
          theme('username', array(
            'account' => $account,
          )),
          $account->number,
        );
      }
      if ($rows) {
        $block['content'] = t('Last 6 months:') . '<br />' . theme('table', array(
          'header' => $header,
          'rows' => $rows,
        ));
        $block['subject'] = t('Top moderators');
      }
      return $block;
    }
    elseif (user_access('moderate content')) {
      $block['subject'] = t('Moderation queue');
      $is_published = array(
        0,
        1,
      );
      if (!user_access('administer nodes')) {

        // Users who don't have the 'administer nodes' permission can only see published nodes.
        $is_published = 1;
      }
      $qry = db_select('node', 'n')
        ->condition('n.moderate', 1)
        ->condition('n.status', $is_published)
        ->addTag('node_access')
        ->addMetaData('base_table', 'node');
      $count = $qry
        ->countQuery()
        ->execute()
        ->fetchField();
      $content = '<p>' . l(t('@items in moderation', array(
        '@items' => format_plural($count, '1 post', '@count posts'),
      )), 'admin/content/modr8') . '</p>';
      if ($count) {
        $qry = db_select('node', 'n')
          ->fields('n', array(
          'nid',
          'title',
        ))
          ->condition('n.moderate', 1)
          ->condition('n.status', $is_published)
          ->extend('PagerDefault')
          ->limit(6)
          ->addTag('node_access')
          ->addMetaData('base_table', 'node')
          ->orderBy('n.changed', 'DESC');
        $result = $qry
          ->execute()
          ->fetchAll();
        if (!empty($result)) {
          $modr8_nodes = node_title_list($result, t('Recent additions:'));
          $content .= theme('item_list', $modr8_nodes);
        }
      }
      $block['content'] = $content;
      return $block;
    }
  }
}