body = $blog[body]; } } function blog_help() { ?>

Drupal's blog module allows registered users to maintain an online blog or diary. It provides easy-to-write and easy-to-read online diaries or journals that can be filled with daily thoughts, poetry, boneless blabber, spiritual theories, intimate details, valuable experiences, cynical rants, semi-coherent comments, writing experiments, artistic babblings, critics on current facts, fresh insights, diverse dreams, chronicles and mumbling madness available for public consumption.

body; } function blog_feed_user($uid = 0, $date = 0) { global $user; if ($uid) { $account = user_load(array("uid" => $uid, "status" => 1)); } else { $account = $user; } if (!$date) { $date = time(); } $result = db_query("SELECT n.nid, n.title, n.timestamp, b.body, u.name, u.uid FROM blog b LEFT JOIN node n ON b.nid = n.nid LEFT JOIN user u ON n.author = u.uid WHERE u.uid = '$uid' AND n.timestamp > '". ($date - 2592000) ."' ORDER BY b.lid DESC LIMIT 15"); while ($blog = db_fetch_object($result)) { $items .= format_rss_item($blog->title, path_uri() ."node.php?id=$blog->nid", $blog->body); } $output .= "\n"; $output .= "\n"; $output .= format_rss_channel("$account->name's blog", path_uri() ."module.php?mod=blog&op=view&id=$account->uid", "$account->name's blog", $items); $output .= "\n"; header("Content-Type: text/xml"); print $output; } function blog_feed_last() { $result = db_query("SELECT n.nid, n.title, n.timestamp, b.body, u.name, u.uid FROM blog b LEFT JOIN node n ON b.nid = n.nid LEFT JOIN user u ON n.author = u.uid ORDER BY b.lid DESC LIMIT 15"); while ($blog = db_fetch_object($result)) { $items .= format_rss_item($blog->title, path_uri() ."module.php?mod=blog&op=view&id=". urlencode($blog->uid), $blog->body); } $output .= "\n"; $output .= "\n"; $output .= format_rss_channel(variable_get("site_name", "drupal") .": user blogs", path_uri() ."module.php?mod=blog", "Recently updated blogs.", $items); $output .= "\n"; header("Content-Type: text/xml"); print $output; } function blog_page_user($uid = 0, $date = 0) { global $theme, $user; if ($uid) { $account = user_load(array("uid" => $uid, "status" => 1)); } else { $account = $user; } if (!$date) { $date = time(); } $result = db_query("SELECT n.nid, n.title, n.comment, COUNT(c.cid) AS comments, n.timestamp, b.body, u.uid, u.name FROM blog b LEFT JOIN node n ON b.nid = n.nid LEFT JOIN user u ON n.author = u.uid LEFT JOIN comments c ON n.nid = c.lid WHERE u.uid = '$account->uid' AND n.timestamp <= '$date' AND n.timestamp >= '". ($date - 2592000) ."' GROUP BY n.nid ORDER BY n.nid DESC LIMIT 20"); $output .= ""; while ($blog = db_fetch_object($result)) { $links = array(); if ($date != date("dny", $blog->timestamp)) { $date = date("dny", $blog->timestamp); $output .= ""; } if ($user->uid && $user->name == $name) { $links[] = "nid\">". t("edit") .""; } if ($user->uid && user_access("post blogs")) { $links[] = "nid\">". t("blog it") .""; } if ($blog->comment) { $links[] = "nid\">". format_plural($blog->comments, t("comment"), t("comments")) .""; } $output .= ""; $output .= ""; } $output .= "
uid&date=". mktime(23, 59, 59, date("n", $blog->timestamp), date("d", $blog->timestamp), date("Y", $blog->timestamp)) ."\">". format_date($blog->timestamp, custom, "d M Y") .":
". check_output($blog->title) ."
". $theme->links($links) ."
". check_output($blog->body, 1) ."

"; $output .= "uid\">image("xml.gif") ."\" width=\"36\" height=\"14\" align=\"right\" border=\"0\" />\n"; $theme->box(sprintf(t("%s's blog"), $account->name), $output, "main"); } function blog_page_last() { global $theme, $user; $result = db_query("SELECT n.nid, n.title, n.comment, COUNT(c.cid) AS comments, n.timestamp, b.body, u.uid, u.name FROM blog b LEFT JOIN node n ON b.nid = n.nid LEFT JOIN user u ON n.author = u.uid LEFT JOIN comments c ON n.nid = c.lid GROUP BY n.nid ORDER BY n.nid DESC LIMIT 20"); $output .= ""; while ($blog = db_fetch_object($result)) { $links = array(); $links[] = "uid\">". sprintf("%s's blog", $blog->name) .""; if ($blog->uid == $user->uid) { $links[] = "nid\">". t("edit") .""; } if ($user->uid && user_access("post blogs")) { $links[] = "nid\">". t("blog it") .""; } if ($blog->comment) { $links[] = "nid\">". format_plural($blog->comments, t("comment"), t("comments")) .""; } $output .= ""; $output .= ""; } $output .= "
". check_output($blog->title) ."". $theme->links($links) ."
". check_output($blog->body, 1) ."

"; $output .= "image("xml.gif") ."\" width=\"36\" height=\"14\" align=\"right\" border=\"0\" />\n"; $theme->box(t("User blogs"), $output, "main"); } function blog_remove($nid) { global $status, $user; $blog = node_get_object(array(nid => $nid, type => "blog")); if ($blog && $blog->uid == $user->uid) { node_save(array(nid => $nid), array(status => $status[dumped])); node_del(array(type => "blog", nid => $nid)); } } function blog_view($node, $main = 0) { global $theme; $theme->node($node, $main); } function blog_form($edit = array()) { global $REQUEST_URI, $id, $mod, $type, $user, $theme; if ($user->uid && (user_access("administer blogs") || user_access("post blogs"))) { if ($mod == "node" || $edit[type] == "blog") { // do nothing } else if ($type == "blog") { $item = node_get_object(array(type => "blog", nid => $id)); $edit["title"] = $item->title; $edit["body"] = "". $item->body ." [name) ."&date=$item->timestamp\">$item->name]"; } else if ($type == "import") { $item = db_fetch_object(db_query("SELECT i.*, f.title as ftitle, f.link as flink FROM item i, feed f WHERE i.iid = '". check_input($id) ."' AND i.fid = f.fid")); $edit["title"] = $item->title; $edit["body"] = "link\">$item->title - ". check_output($item->description) ." [flink\">$item->ftitle]\n"; } if ($edit["title"]) { $form .= blog_view(new Blog(node_preview($edit))); } $form .= form_textfield(t("Subject"), "title", $edit["title"], 50, 64); $form .= form_textarea(t("Body"), "body", $edit["body"], 70, 15, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", ""))); $form .= form_hidden("type", "blog"); if ($edit["nid"] > 0) { $form .= form_hidden("nid", $edit["nid"]); } if (!$edit) { $form .= form_submit(t("Preview")); } else if ($edit && !$edit["title"]) { $form .= "". t("Warning: you did not supply a subject.") ."

\n"; $form .= form_submit(t("Preview")); } else if ($edit && !$edit["body"]) { $form .= "". t("Warning: you did not supply any text.") ."

\n"; $form .= form_submit(t("Preview")); } else { $form .= form_submit(t("Preview")); $form .= form_submit(t("Submit")); } return form($REQUEST_URI, $form); } else { return message_access(); } } function blog_save($edit) { global $status, $user; if ($user->uid && (user_access("administer blogs") || user_access("post blogs"))) { if ($edit["nid"]) { node_save($edit, array(title, body, type => "blog")); } else { node_save($edit, array(attributes => node_attributes_save("blog", $edit), author => $user->uid, body, comment => variable_get("blog_comment", 0), moderate => variable_get("blog_moderate", ""), promote => variable_get("blog_promote", 0), score => 0, status => variable_get("blog_status", $status[posted]), timestamp => time(), title, type => "blog", votes => 0)); } } } function blog_edit_history($nid) { global $user; $result = db_query("SELECT n.nid, n.title, n.timestamp, b.body FROM blog b LEFT JOIN node n ON b.nid = n.nid WHERE n.author = '$user->uid' AND n.nid <= '". check_input($nid) ."' ORDER BY b.lid DESC LIMIT 15"); $output .= ""; while ($blog = db_fetch_object($result)) { $output .= "\n"; } $output .= "
". check_output($blog->title) ."
". check_output($blog->body, 1) ."
nid\">". t("edit") ."nid\">". t("delete") ."
"; return $output; } function blog_page() { global $theme, $id, $op, $date; if (user_access("access blogs")) { switch ($op) { case "feed": if ($id) { blog_feed_user($id, $date); } else { blog_feed_last(); } break; default: $theme->header(); if ($id) { blog_page_user($id, $date); } else { blog_page_last(); } $theme->footer(); } } else { $theme->header(); $theme->box(t("Access denied"), message_access()); $theme->footer(); } } function blog_user() { global $op, $id, $edit, $theme, $user; if (user_access("post blogs")) { switch ($op) { case "delete": blog_remove($id); blog_page_user($user->uid, time()); break; case "edit": $theme->box(t("Submit a blog"), blog_form(node_get_array(array("nid" => $id, "type" => "blog"))), "main"); $theme->box(t("Older blogs"), blog_edit_history($id), "main"); break; case t("Preview"): $theme->box(t("Preview Blog"), blog_form($edit), "main"); break; case t("Submit"): blog_save($edit); blog_page_user($user->uid, time()); break; default: $theme->box(t("Submit a blog"), blog_form($edit), "main"); } } } function blog_link($type, $node = 0) { global $user; if ($type == "page" && user_access("access blogs")) { $links[] = "". t("user blogs") .""; } if ($type == "menu" && user_access("post blogs")) { $links[] = "". t("add blog entry") .""; $links[] = "uid\">". t("view your blog") .""; } if ($type == "node" && $node->type == "blog") { $links[] = "uid\">". strtr(t("%a's blog"), array("%a" => $node->name)) .""; } return $links ? $links : array(); } function blog_block() { global $user; $result = db_query("SELECT u.uid, u.name, n.timestamp, n.title, n.nid FROM node n LEFT JOIN user u ON n.author = u.uid WHERE n.type = 'blog' ORDER BY n.nid DESC LIMIT 10"); while ($node = db_fetch_object($result)) { $output .= "nid\">". check_output($node->title) ."
\n"; } $block[0]["subject"] = "". t("User blogs") .""; $block[0]["content"] = $output; $block[0]["info"] = t("User blogs"); $block[0]["link"] = "module.php?mod=blog"; return $block; } function blog_search($keys) { global $PHP_SELF, $status; $result = db_query("SELECT n.*, b.* FROM blog b LEFT JOIN node n ON n.nid = b.nid AND n.lid = b.lid WHERE (n.title LIKE '%$keys%' OR b.body LIKE '%$keys%') ORDER BY n.timestamp DESC LIMIT 20"); while ($blog = db_fetch_object($result)) { $find[$i++] = array("title" => check_output($blog->title), "link" => ($PHP_SELF == "/admin.php" ? "admin.php?mod=node&type=blog&op=edit&id=$blog->nid" : "node.php?id=$blog->nid"), "user" => $blog->name, "date" => $blog->timestamp); } return $find; } class BlogCalendar { var $date; var $name; function BlogCalendar($name, $date) { $this->name = urlencode($name); // Prevent future dates: $today = mktime(23, 59, 59, date("n", time()), date("d", time()), date("Y", time())); $this->date = (($date && $date <= $today) ? $date : $today); $this->date = mktime(23, 59, 59, date("n", $this->date), date("d", $this->date), date("Y", $this->date)); } function display() { // Extract information from the given date: $month = date("n", $this->date); $year = date("Y", $this->date); $day = date("d", $this->date); // Extract today's date: $today = mktime(23, 59, 59, date("n", time()), date("d", time()), date("Y", time())); // Extract the timestamp of the last day of today's month: $thislast = mktime(23, 59, 59, date("n", time()), date("t", time()), date("Y", time())); // Extract first day of the month: $first = date("w", mktime(0, 0, 0, $month, 1, $year)); // Extract last day of the month: $last = date("t", mktime(0, 0, 0, $month, 1, $year)); // Calculate previous and next months dates and check for shorter months (28/30 days) $prevmonth = mktime(23, 59, 59, $month - 1, 1, $year); $prev = mktime(23, 59, 59, $month - 1, min(date("t", $prevmonth), $day), $year); $nextmonth = mktime(23, 59, 59, $month + 1, 1, $year); $next = mktime(23, 59, 59, $month + 1, min(date("t", $nextmonth), $day), $year); // Generate calendar header: $output .= "\n\n"; $output .= "\n"; $output .= " \n"; // Generate the days of the week: $output .= " "; $somesunday = mktime(0, 0, 0, 3, 20, 1994); for ($i = 0; $i < 7; $i++) { $output .= ""; } $output .= "\n"; // Initialize temporary variables: $nday = 1; $sday = $first; // Loop through all the days of the month: while ($nday <= $last) { // Set up blank days for first week of the month: if ($first) { $output .= " \n"; $first = 0; } // Start every week on a new line: if ($sday == 0) $output .= " \n"; // Print one cell: $date = mktime(23, 59, 59, $month, $nday, $year); if ($date == $this->date) $output .= " \n"; else if ($date > $today) $output .= " \n"; else $output .= " \n"; // Start every week on a new line: if ($sday == 6) $output .= " \n"; // Update temporary variables: $sday++; $sday = $sday % 7; $nday++; } // Complete the calendar: if ($sday) { $end = 7 - $sday; $output .= " \n \n"; } $output .= "
name) ."&date=$prev\" STYLE=\"text-decoration: none;\"><<   ". date("F Y", $this->date) ."   " . ($next <= $thislast ? "name) ."&date=$next\" STYLE=\"text-decoration: none;\">>>" : ">>") . "
" . substr(ucfirst(t(date("l", $somesunday + $i * 86400))), 0, 1) . "
 
$nday$ndayname) ."&date=$date\" STYLE=\"text-decoration: none;\">$nday
 
\n\n"; // Return calendar: return $output; } } ?>