287 lines
9.4 KiB
Plaintext
287 lines
9.4 KiB
Plaintext
<?php
|
|
// $Id$
|
|
|
|
function blog_node($field) {
|
|
global $user;
|
|
|
|
$info = array("name" => "personal blog");
|
|
|
|
return $info[$field];
|
|
}
|
|
|
|
function blog_access($op, $node) {
|
|
global $user;
|
|
|
|
if ($op == "view") {
|
|
return $node->nid && $node->status && !$node->moderate;
|
|
}
|
|
|
|
if ($op == "create") {
|
|
return $user->uid;
|
|
}
|
|
|
|
if ($op == "update") {
|
|
return user_access("administer nodes") || ($user->uid == $node->uid);
|
|
}
|
|
|
|
if ($op == "delete") {
|
|
return user_access("administer nodes") || ($user->uid == $node->uid);
|
|
}
|
|
|
|
}
|
|
|
|
function blog_help() {
|
|
?>
|
|
<p>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.</p>
|
|
<?php
|
|
}
|
|
|
|
function blog_perm() {
|
|
return array("administer blogs", "access blogs", "post blogs");
|
|
}
|
|
|
|
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.body, n.created, u.name, u.uid FROM blog b LEFT JOIN node n ON b.nid = n.nid LEFT JOIN users u ON n.uid = u.uid WHERE u.uid = '$uid' AND n.created > '". ($date - 2592000) ."' ORDER BY b.nid 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 .= "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";
|
|
$output .= "<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC \"-//W3C//ENTITIES Latin 1 for XHTML//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent\">\n";
|
|
$output .= "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";
|
|
$output .= "<rss version=\"0.91\">\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 .= "</rss>\n";
|
|
|
|
header("Content-Type: text/xml");
|
|
|
|
print $output;
|
|
|
|
}
|
|
|
|
function blog_feed_last() {
|
|
$result = db_query("SELECT n.nid, n.title, n.body, n.created, u.name, u.uid FROM blog b LEFT JOIN node n ON b.nid = n.nid LEFT JOIN users u ON n.uid = u.uid ORDER BY b.nid DESC LIMIT 15");
|
|
while ($blog = db_fetch_object($result)) {
|
|
$items .= format_rss_item($blog->title, path_uri() ."module.php?mod=blog&op=view&id=$blog->nid", $blog->body);
|
|
}
|
|
|
|
$output .= "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";
|
|
$output .= "<rss version=\"0.91\">\n";
|
|
$output .= format_rss_channel(variable_get("site_name", "drupal") .": user blogs", path_uri() ."module.php?mod=blog", "Recently updated blogs.", $items);
|
|
$output .= "</rss>\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 nid FROM node WHERE type = 'blog' AND uid = '$account->uid' AND created <= '$date' AND created >= '". ($date - 2592000) ."' ORDER BY nid DESC");
|
|
|
|
$output .= "<table border=\"0\" cellpadding=\"4\" cellspacing=\"4\">";
|
|
|
|
while ($node = db_fetch_object($result)) {
|
|
|
|
$blog = node_load(array("nid" => $node->nid));
|
|
|
|
$links = array();
|
|
|
|
if ($date != date("dny", $blog->created)) {
|
|
$date = date("dny", $blog->created);
|
|
$output .= "<tr><td colspan=\"2\"><b><a href=\"module.php?mod=blog&id=$blog->uid&date=". mktime(23, 59, 59, date("n", $blog->created), date("d", $blog->created), date("Y", $blog->created)) ."\">". format_date($blog->created, custom, "d M Y") .":</a></b></td></tr>";
|
|
}
|
|
|
|
if ($user->uid && $user->uid == $uid) {
|
|
$links[] = "<a href=\"module.php?mod=node&op=edit&id=$blog->nid\">". t("edit") ."</a>";
|
|
}
|
|
|
|
if ($user->uid && user_access("post blogs")) {
|
|
$links[] = "<a href=\"module.php?mod=node&op=add&type=blog&nid=$blog->nid\">". t("blog it") ."</a>";
|
|
}
|
|
|
|
if ($blog->comment) {
|
|
$links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural(node_get_comments($blog->nid), t("comment"), t("comments")) ."</a>";
|
|
}
|
|
|
|
$output .= "<tr><td><div style=\"margin-left: 20px;\"><b>". check_output($blog->title) ."</b></div></td><td align=\"right\">". $theme->links($links) ."</td></tr>";
|
|
$output .= "<tr><td colspan=\"2\"><div style=\"margin-left: 40px;\">". check_output($blog->body, 1) ."</div><br /></td></tr>";
|
|
|
|
}
|
|
|
|
$output .= "</table>";
|
|
$output .= "<a href=\"module.php?mod=blog&op=feed&id=$account->uid\"><img src=\"". $theme->image("xml.gif") ."\" width=\"36\" height=\"14\" align=\"right\" border=\"0\" /></a>\n";
|
|
|
|
$theme->box(sprintf(t("%s's blog"), $account->name), $output, "main");
|
|
}
|
|
|
|
function blog_page_last() {
|
|
global $theme, $user;
|
|
|
|
$result = db_query("SELECT nid FROM node WHERE type = 'blog' ORDER BY nid DESC LIMIT 20");
|
|
|
|
$output .= "<table border=\"0\" cellpadding=\"4\" cellspacing=\"4\">";
|
|
|
|
while ($node = db_fetch_object($result)) {
|
|
$blog = node_load(array("nid" => $node->nid));
|
|
|
|
$links = array();
|
|
|
|
$links[] = "<a href=\"module.php?mod=blog&op=view&id=$blog->uid\">". sprintf("%s's blog", $blog->name) ."</a>";
|
|
|
|
if ($blog->uid == $user->uid) {
|
|
$links[] = "<a href=\"module.php?mod=node&op=edit&id=$blog->nid\">". t("edit") ."</a>";
|
|
}
|
|
|
|
if ($user->uid && user_access("post blogs")) {
|
|
$links[] = "<a href=\"module.php?mod=node&op=add&type=blog&nid=$blog->nid\">". t("blog it") ."</a>";
|
|
}
|
|
|
|
if ($blog->comment) {
|
|
$links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural(node_get_comments($blog->nid), t("comment"), t("comments")) ."</a>";
|
|
}
|
|
|
|
$output .= "<tr><td><b>". check_output($blog->title) ."</b></td><td align=\"right\">". $theme->links($links) ."</td></tr>";
|
|
$output .= "<tr><td colspan=\"2\"><div style=\"margin-left: 20px;\">". check_output($blog->body, 1) ."</div><br /></td></tr>";
|
|
|
|
}
|
|
|
|
$output .= "</table>";
|
|
$output .= "<a href=\"module.php?mod=blog&op=feed\"><img src=\"". $theme->image("xml.gif") ."\" width=\"36\" height=\"14\" align=\"right\" border=\"0\" /></a>\n";
|
|
|
|
$theme->box(t("User blogs"), $output, "main");
|
|
}
|
|
|
|
function blog_form($node, $error) {
|
|
global $nid, $iid;
|
|
|
|
if ($node->body) {
|
|
if (count(explode(" ", $node->body)) < variable_get("minimum_node_size", 0)) {
|
|
$error["body"] = "<div style=\"color: red;\">". t("The body of your blog is too short.") ."</div>";
|
|
}
|
|
}
|
|
else {
|
|
if ($nid && $blog = node_load(array("nid" => $nid))) {
|
|
$node->body = "<i>". $blog->body ."</i> [<a href=\"module.php?mod=blog&id=$blog->uid&date=$blog->created\">$blog->name</a>]";
|
|
}
|
|
|
|
if ($iid && $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($iid) ."' AND i.fid = f.fid"))) {
|
|
$node->body = "<a href=\"$item->link\">$item->title</a> - <i>". check_output($item->description) ."</i> [<a href=\"$item->flink\">$item->ftitle</a>]\n";
|
|
}
|
|
}
|
|
|
|
$output = form_textarea(t("Body"), "body", $node->body, 60, 15, $error["body"] ? $error["body"] : t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
|
|
|
|
return $output;
|
|
}
|
|
|
|
function blog_save($node) {
|
|
|
|
if ($node->nid) {
|
|
return array();
|
|
}
|
|
else {
|
|
return array("promote" => 0, "moderate" => 0, "status" => 1);
|
|
}
|
|
|
|
}
|
|
|
|
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_link($type, $node = 0) {
|
|
global $user;
|
|
|
|
if ($type == "page" && user_access("access blogs")) {
|
|
$links[] = "<a href=\"module.php?mod=blog\">". t("user blogs") ."</a>";
|
|
}
|
|
|
|
if ($type == "menu" && user_access("post blogs")) {
|
|
$links[] = "<a href=\"module.php?mod=node&op=add&type=blog\">". t("add blog entry") ."</a>";
|
|
$links[] = "<a href=\"module.php?mod=blog&op=view&id=$user->uid\">". t("view your blog") ."</a>";
|
|
}
|
|
|
|
if ($type == "node" && $node->type == "blog") {
|
|
$links[] = "<a href=\"module.php?mod=blog&op=view&id=$node->uid\">". strtr(t("%a's blog"), array("%a" => $node->name)) ."</a>";
|
|
}
|
|
|
|
return $links ? $links : array();
|
|
}
|
|
|
|
|
|
function blog_block() {
|
|
global $user;
|
|
|
|
$result = db_query("SELECT u.uid, u.name, n.created, n.title, n.nid FROM node n LEFT JOIN users u ON n.uid = u.uid WHERE n.type = 'blog' ORDER BY n.nid DESC LIMIT 10");
|
|
|
|
while ($node = db_fetch_object($result)) {
|
|
$output .= "<a href=\"node.php?id=$node->nid\">". check_output($node->title) ."</a><br />\n";
|
|
}
|
|
|
|
$output .= "<br /><div align=\"right\"><a href=\"module.php?mod=blog\">". t("more") ."</a></div>";
|
|
|
|
$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;
|
|
}
|
|
|
|
?>
|