diff options
Diffstat (limited to 'modules/blog/blog.module')
-rw-r--r-- | modules/blog/blog.module | 282 |
1 files changed, 38 insertions, 244 deletions
diff --git a/modules/blog/blog.module b/modules/blog/blog.module index f5341a746..97c9a8559 100644 --- a/modules/blog/blog.module +++ b/modules/blog/blog.module @@ -1,14 +1,6 @@ <?php // $Id$ -class Blog { - function Blog($blog) { - global $user; - $this = new Node($blog); - $this->body = $blog[body]; - } -} - 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> @@ -19,14 +11,6 @@ function blog_perm() { return array("administer blogs", "access blogs", "post blogs"); } -function blog_status() { - return array(dumped, posted); -} - -function blog_summary($node) { - return $node->body; -} - function blog_feed_user($uid = 0, $date = 0) { global $user; @@ -41,7 +25,7 @@ function blog_feed_user($uid = 0, $date = 0) { $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 users u ON n.uid = u.uid WHERE u.uid = '$uid' AND n.timestamp > '". ($date - 2592000) ."' ORDER BY b.nid DESC LIMIT 15"); + $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); } @@ -60,9 +44,9 @@ function blog_feed_user($uid = 0, $date = 0) { } 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 users u ON n.uid = u.uid ORDER BY b.nid DESC LIMIT 15"); + $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->uid", $blog->body); + $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"; @@ -90,29 +74,31 @@ function blog_page_user($uid = 0, $date = 0) { $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 users u ON n.uid = 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, n.title, n.comment, n.timestamp, b.body, u.uid, u.name ORDER BY n.nid DESC LIMIT 20"); + $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 ($blog = db_fetch_object($result)) { + while ($node = db_fetch_object($result)) { + + $blog = node_load(array("nid" => $node->nid)); $links = array(); - if ($date != date("dny", $blog->timestamp)) { - $date = date("dny", $blog->timestamp); - $output .= "<tr><td colspan=\"2\"><b><a href=\"module.php?mod=blog&id=$blog->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") .":</a></b></td></tr>"; + 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=\"submit.php?mod=blog&op=edit&id=$blog->nid\">". t("edit") ."</a>"; + $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=\"submit.php?mod=blog&type=blog&id=$blog->nid\">". t("blog it") ."</a>"; + $links[] = "<a href=\"module.php?mod=blog&op=blog&id=$blog->nid\">". t("blog it") ."</a>"; } if ($blog->comment) { - $links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural($blog->comments, t("comment"), t("comments")) ."</a>"; + $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>"; @@ -129,26 +115,27 @@ function blog_page_user($uid = 0, $date = 0) { 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 users u ON n.uid = u.uid LEFT JOIN comments c ON n.nid = c.lid GROUP BY n.nid, n.title, n.comment, n.timestamp, b.body, u.uid, u.name ORDER BY n.nid DESC LIMIT 20"); + $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 ($blog = db_fetch_object($result)) { + 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=\"submit.php?mod=blog&op=edit&id=$blog->nid\">". t("edit") ."</a>"; + $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=\"submit.php?mod=blog&type=blog&id=$blog->nid\">". t("blog it") ."</a>"; + $links[] = "<a href=\"module.php?mod=blog&op=blog&id=$blog->nid\">". t("blog it") ."</a>"; } if ($blog->comment) { - $links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural($blog->comments, t("comment"), t("comments")) ."</a>"; + $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>"; @@ -162,101 +149,38 @@ function blog_page_last() { $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_del(array(type => "blog", nid => $nid)); - } -} +function blog_form($edit) { -function blog_view($node, $main = 0) { - global $theme; + $output = form_textarea(t("Body"), "body", $edit->body, 60, 15, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", ""))); - $theme->node($node, $main); + return $output; } -function blog_form($edit = array()) { - global $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"] = "<i>". $item->body ."</i> [<a href=\"module.php?mod=blog&name=". urlencode($item->name) ."&date=$item->timestamp\">$item->name</a>]"; - } - 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"] = "<a href=\"$item->link\">$item->title</a> - <i>". check_output($item->description) ."</i> [<a href=\"$item->flink\">$item->ftitle</a>]\n"; - } - - if ($edit["title"]) { - $form .= blog_view(new Blog(node_preview($edit))); - } +function blog_save($node) { + global $user; - $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", ""))); + if ($node->nid) { - $form .= form_hidden("type", "blog"); + /* + ** Load the original blog from the database to make sure that only + ** original author can update his blog. + */ - if ($edit["nid"] > 0) { - $form .= form_hidden("nid", $edit["nid"]); - } + $blog = node_load(array("nid" => $node->nid)); - if (!$edit) { - $form .= form_submit(t("Preview")); + if ($user->uid && $user->uid == $node->uid && $user->uid == $blog->uid) { + return array(); } - else if ($edit && !$edit["title"]) { - $form .= "<font color=\"red\">". t("Warning: you did not supply a subject.") ."</font><p>\n"; - $form .= form_submit(t("Preview")); - } - else if ($edit && !$edit["body"]) { - $form .= "<font color=\"red\">". t("Warning: you did not supply any text.") ."</font><p>\n"; - $form .= form_submit(t("Preview")); + else if (user_access("adminster nodes")) { + return array(); } else { - $form .= form_submit(t("Preview")); - $form .= form_submit(t("Submit")); + return 0; } - - return form($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), uid => $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.uid = '$user->uid' AND n.nid <= '". check_input($nid) ."' ORDER BY b.nid DESC LIMIT 15"); - - $output .= "<table cellpadding=\"3\" cellspacing=\"3\" border=\"0\" width=\"100%\">"; - while ($blog = db_fetch_object($result)) { - $output .= "<tr><td><b>". check_output($blog->title) ."</b><br />". check_output($blog->body, 1) ."</td><td><a href=\"submit.php?mod=blog&op=edit&id=$blog->nid\">". t("edit") ."</a></td><td><a href=\"submit.php?mod=blog&op=delete&id=$blog->nid\">". t("delete") ."</a></td></tr>\n"; + return array("promote" => 0, "moderate" => 0, "status" => 1); } - $output .= "</table>"; - - return $output; } function blog_page() { @@ -291,33 +215,6 @@ function blog_page() { } -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; @@ -326,7 +223,7 @@ function blog_link($type, $node = 0) { } if ($type == "menu" && user_access("post blogs")) { - $links[] = "<a href=\"submit.php?mod=blog\">". t("add blog entry") ."</a>"; + $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>"; } @@ -341,7 +238,7 @@ function blog_link($type, $node = 0) { function blog_block() { global $user; - $result = db_query("SELECT u.uid, u.name, n.timestamp, 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"); + $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"; @@ -357,107 +254,4 @@ function blog_block() { 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 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" => (strstr($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<!-- calendar -->\n"; - $output .= "<TABLE WIDTH=\"100%\" BORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"1\">\n"; - $output .= " <TR><TD ALIGN=\"center\" COLSPAN=\"7\"><B><A HREF=\"module.php?mod=blog&name=". urlencode($this->name) ."&date=$prev\" STYLE=\"text-decoration: none;\"><<</A> ". date("F Y", $this->date) ." " . ($next <= $thislast ? "<A HREF=\"module.php?mod=blog&name=". urlencode($this->name) ."&date=$next\" STYLE=\"text-decoration: none;\">>></A>" : ">>") . "<B></TD></TR>\n"; - - // Generate the days of the week: - $output .= " <TR>"; - $somesunday = mktime(0, 0, 0, 3, 20, 1994); - for ($i = 0; $i < 7; $i++) { - $output .= "<TD ALIGN=\"center\">" . substr(ucfirst(t(date("l", $somesunday + $i * 86400))), 0, 1) . "</TD>"; - } - $output .= "</TR>\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 .= " <TR><TD COLSPAN=\"$first\"> </TD>\n"; - $first = 0; - } - - // Start every week on a new line: - if ($sday == 0) $output .= " <TR>\n"; - - // Print one cell: - $date = mktime(23, 59, 59, $month, $nday, $year); - if ($date == $this->date) $output .= " <TD ALIGN=\"center\" BGCOLOR=\"#CCCCCC\"><B>$nday</B></TD>\n"; - else if ($date > $today) $output .= " <TD ALIGN=\"center\">$nday</TD>\n"; - else $output .= " <TD ALIGN=\"center\"><A HREF=\"module.php?mod=blog&name=". urlencode($this->name) ."&date=$date\" STYLE=\"text-decoration: none;\">$nday</A></TD>\n"; - - // Start every week on a new line: - if ($sday == 6) $output .= " </TR>\n"; - - // Update temporary variables: - $sday++; - $sday = $sday % 7; - $nday++; - } - - // Complete the calendar: - if ($sday) { - $end = 7 - $sday; - $output .= " <TD COLSPAN=\"$end\"> </TD>\n </TR>\n"; - } - $output .= "</TABLE>\n\n"; - - // Return calendar: - return $output; - } -} -
?> |