Skip to content
Snippets Groups Projects
tracker.module 3.1 KiB
Newer Older
Dries Buytaert's avatar
Dries Buytaert committed
<?php
Dries Buytaert's avatar
Dries Buytaert committed

Dries Buytaert's avatar
 
Dries Buytaert committed
function tracker_help() {
Dries Buytaert's avatar
 
Dries Buytaert committed
  $output .= "<p>The tracker module is a handy module for displaying the most recent posts.  By following the <i>view recent posts</i> link in the user block, a user may quickly review all recent postings.</p>";
Dries Buytaert's avatar
 
Dries Buytaert committed
  return $output;
}

function tracker_system($field){
Dries Buytaert's avatar
 
Dries Buytaert committed
  $system["description"] = t("Enables tracking of recent posts for users.");
Dries Buytaert's avatar
Dries Buytaert committed
function tracker_link($type) {
Dries Buytaert's avatar
 
Dries Buytaert committed

Dries Buytaert's avatar
 
Dries Buytaert committed
  if ($type == "menu.view" && user_access("access content")) {
    $links[] = l(t("view recent posts"), "tracker", array("title" => t("Display an overview of the recent posts.")));
Dries Buytaert's avatar
Dries Buytaert committed
  }

  return $links ? $links : array();
}

Dries Buytaert's avatar
 
Dries Buytaert committed
function tracker_posts($id = 0) {
Dries Buytaert's avatar
 
Dries Buytaert committed

Dries Buytaert's avatar
Dries Buytaert committed
  if ($id) {
Dries Buytaert's avatar
 
Dries Buytaert committed
    $sresult = db_query_range("SELECT n.nid, n.title, n.type, n.changed, n.uid, u.name, GREATEST(n.changed, c.timestamp) AS last_activity FROM node n LEFT JOIN comments c ON n.nid = c.nid LEFT JOIN users u ON n.uid = u.uid WHERE n.uid = '". check_query($id) ."' AND n.status = 1 GROUP BY n.nid, n.title, n.type, n.changed, n.nid, u.name ORDER BY last_activity DESC", 0, 15);
Dries Buytaert's avatar
Dries Buytaert committed
  }
  else {
Dries Buytaert's avatar
 
Dries Buytaert committed
    $sresult = db_query_range("SELECT n.nid, n.title, n.type, n.changed, n.uid, u.name, GREATEST(n.changed, c.timestamp) AS last_activity FROM node n LEFT JOIN comments c ON n.nid = c.nid LEFT JOIN users u ON n.uid = u.uid WHERE n.status = 1 GROUP BY n.nid, n.title, n.type, n.changed, n.nid, u.name ORDER BY last_activity DESC", 0, 15);
Dries Buytaert's avatar
Dries Buytaert committed
  }

  while ($node = db_fetch_object($sresult)) {
    if ($id) {
Dries Buytaert's avatar
 
Dries Buytaert committed
      $cresult = db_query("SELECT c.*, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.timestamp > %d AND c.uid = '%d' AND c.nid = '%d' AND c.status = 0 ORDER BY cid DESC", time() - 259200, $id, $node->nid);
Dries Buytaert's avatar
Dries Buytaert committed
    }
    else {
Dries Buytaert's avatar
 
Dries Buytaert committed
      $cresult = db_query("SELECT c.*, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.timestamp > %d AND c.nid = '%d' AND c.status = 0 ORDER BY cid DESC", time() - 259200, $node->nid);
Dries Buytaert's avatar
Dries Buytaert committed
    }

Dries Buytaert's avatar
 
Dries Buytaert committed
    $title = l($node->title, "node/view/$node->nid") ." ". (node_is_new($node->nid, $node->changed) ? theme("theme_mark") : "");
    $type = module_invoke($node->type, "node", "name");

    $comments = array();
Dries Buytaert's avatar
Dries Buytaert committed
    while ($comment = db_fetch_object($cresult)) {
Dries Buytaert's avatar
 
Dries Buytaert committed
      $comments[] = "<li>". l($comment->subject, "node/view/$node->nid#$comment->cid") ." ". t("by") ." ". format_name($comment) ." ". (node_is_new($comment->nid, $comment->timestamp) ? theme("theme_mark") : "") ."</li>\n";
    }

    $output .= "<p>". t("%type %title by %author", array("%type" => ucfirst($type), "%title" => $title, "%author" => format_name($node))) ."</p>";

    if ($comments) {
      $output .= "<ul>". implode("\n", $comments) ."</ul>";
Dries Buytaert's avatar
Dries Buytaert committed
    }
  }

  return $output;
}

Dries Buytaert's avatar
 
Dries Buytaert committed
function tracker_user($type, &$edit, &$user) {
  switch ($type) {
    case "view_public":
      if (user_access("access content")) {
        return form_item(t("Recent posts"), l(t("view recent posts"), "tracker/$user->uid"));
      }
  }
Dries Buytaert's avatar
Dries Buytaert committed
}

function tracker_page() {
Dries Buytaert's avatar
 
Dries Buytaert committed
  global $user;
Kjartan Mannes's avatar
Kjartan Mannes committed

Dries Buytaert's avatar
 
Dries Buytaert committed
  if (user_access("access content")) {
    theme("header", t("Recent activity"));
    theme("box", t("Recent activity"), tracker_posts(arg(1)));
    theme("footer");
Dries Buytaert's avatar
Dries Buytaert committed
  }
}
Dries Buytaert's avatar
 
Dries Buytaert committed

Dries Buytaert's avatar
Dries Buytaert committed
?>