You are here

function download_count_nodeapi in Download Count 6.2

Same name and namespace in other branches
  1. 5 download_count.module \download_count_nodeapi()
  2. 6 download_count.module \download_count_nodeapi()

Implementation of hook_nodeapi().

File

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

Code

function download_count_nodeapi(&$node, $op, $teaser) {
  $result = array();
  switch ($op) {
    case 'view':
      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 = %d AND dc.uid = %d GROUP BY dc.fid, f.filename", $node->nid, $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 = %d GROUP BY dc.fid, f.filename", $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', $node->files, $downloads);
        }
      }
      break;
  }
}