You are here

function download_count_node_view in Download Count 7.2

Implements hook_node_view().

File

./download_count.module, line 87
Tracks file downloads for files stored in the drupal files table using the private files setting or custom private filefield.

Code

function download_count_node_view($node, $view_mode = 'full') {
  if (isset($node->files) && count($node->files) && user_access('view uploaded files') && !$teaser) {
    global $user;
    if (user_access('view own download counts') && $user->uid != 1) {
      $result = db_query("SELECT dc.fid, f.filename, COUNT(dc.dcid) AS count, MAX(dc.timestamp) AS last FROM {download_count} dc JOIN {files} f ON dc.fid = f.fid WHERE dc.nid = :dc.nid AND dc.uid = :dc.uid GROUP BY f.filename", array(
        ':dc.nid' => $node->nid,
        ':dc.uid' => $user->uid,
      ));
    }
    elseif (user_access('view all download counts')) {
      $result = db_query("SELECT dc.fid, f.filename, COUNT(dc.dcid) AS count, MAX(dc.timestamp) AS last FROM {download_count} dc JOIN {files} f ON dc.fid = f.fid WHERE dc.nid = :dc.nid GROUP BY f.filename", array(
        ':dc.nid' => $node->nid,
      ));
    }
    while ($download = db_fetch_object($result)) {
      $downloads[$download->filename]['count'] = $download->count;
      $downloads[$download->filename]['last'] = $download->last;
      $node->files[$download->fid]->downloads = $download->count;
    }
    if (isset($downloads)) {
      $node->content['files']['#value'] = theme('download_count_upload_attachments', array(
        'files' => $node->files,
        'downloads' => $downloads,
      ));
    }
  }
}