You are here

function print_block_view in Printer, email and PDF versions 7

Same name and namespace in other branches
  1. 7.2 print.module \print_block_view()

Implements hook_block_view().

File

./print.module, line 265
Displays Printer-friendly versions of Drupal pages.

Code

function print_block_view($delta = '') {
  $block = array();
  switch ($delta) {
    case 'print-links':
      $nid = preg_replace('!^node/!', '', $_GET['q']);
      if (ctype_digit($nid)) {
        $node = node_load($nid);
        if (!node_access('view', $node)) {

          // If the user doesn't have access to the node, don't show any links
          $block['content'] = '';
          return;
        }
      }
      else {
        $node = NULL;
      }
      $block['content'] = '';
      foreach (array(
        'html' => 'print',
        'mail' => 'print_mail',
        'pdf' => 'print_pdf',
      ) as $format => $module) {
        $link_pos = variable_get('print_' . $format . '_link_pos', drupal_json_decode(PRINT_HTML_LINK_POS_DEFAULT));
        if (!empty($link_pos['block'])) {
          $func = $module . '_insert_link';
          if (function_exists($func)) {
            $links = $func(NULL, $node);
            if (!empty($links)) {
              $block['content'] .= $links;
            }
          }
        }
      }
      break;
    case 'print-top':
      $block['subject'] = t('Most printed');
      $result = db_query_range("SELECT path FROM {print_page_counter} LEFT JOIN {node} n ON path = CONCAT('node/', n.nid) WHERE status <> 0 OR status IS NULL ORDER BY totalcount DESC", 0, 3)
        ->fetchAll();
      if (count($result)) {
        $block['content'] = '<div class="item-list"><ul>';
        foreach ($result as $obj) {
          $block['content'] .= '<li>' . l(_print_get_title($obj->path), $obj->path) . '</li>';
        }
        $block['content'] .= '</ul></div>';
      }
      break;
  }
  return $block;
}