"$diary->userid's diary", "link" => (user_access($user, "diary") ? "admin.php?mod=diary&op=edit&id=$diary->id" : "module.php?mod=diary&op=view&name=$diary->userid"), "user" => $diary->userid, "date" => $diary->timestamp); } return $find; } function diary_page_overview($num = 20) { global $theme, $user; $result = db_query("SELECT d.*, u.userid FROM diaries d LEFT JOIN users u ON d.author = u.id ORDER BY d.timestamp DESC LIMIT $num"); while ($diary = db_fetch_object($result)) { if ($time != date("F jS", $diary->timestamp)) { $output .= "". $date = t(date("l", $diary->timestamp)) .", ". t(date("F", $diary->timestamp)) ." ". date("j", $diary->timestamp) ."\n"; $time = date("F jS", $diary->timestamp); } $output .= "
\n"; $output .= "

$diary->userid ". t("wrote") .":

\n"; $output .= "
\n"; $output .= "

". check_output($diary->text, 1) ."

[ userid\">". t("more") ." ]

\n"; $output .= "
\n"; $output .= "
\n"; } $theme->header(); $theme->box(t("Online diary"), $output); $theme->footer(); } function diary_page_entry($timestamp, $text, $id = 0) { if ($id) { $output .= "
\n"; $output .= "
". format_date($timestamp, "large") .":
\n"; $output .= "

[ ". t("edit") ." | ". t("delete") ." ]

". check_output($text, 1) ."

\n"; $output .= "
\n"; } else { $output .= "
\n"; $output .= "
". format_date($timestamp, "large") .":
\n"; $output .= "

". check_output($text, 1) ."

\n"; $output .= "
\n"; } return $output; } function diary_page_display($username) { global $theme, $user; $username = empty($username) ? $user->userid : $username; $result = db_query("SELECT d.*, u.userid FROM diaries d LEFT JOIN users u ON d.author = u.id WHERE u.userid = '$username' ORDER BY timestamp DESC"); if ($username == $user->userid) { $output .= diary_page_entry(time(), "". t("Add new diary entry!") ."

"); while ($diary = db_fetch_object($result)) $output .= diary_page_entry($diary->timestamp, $diary->text, $diary->id); } else { $output .= "". t("Username") .": ". format_username($username); while ($diary = db_fetch_object($result)) $output .= diary_page_entry($diary->timestamp, $diary->text); } $theme->header(); $theme->box(t("Online diary"), $output); $theme->footer(); } function diary_page_add() { global $theme, $user, $allowed_html; $output .= "

\n"; $output .= "

\n"; $output .= "
\n"; $output .= " ". t("Allowed HTML tags") .": ". htmlspecialchars($allowed_html) .".\n"; $output .= "

\n"; $output .= "

\n"; $output .= " \n"; $output .= "

\n"; $output .= "
\n"; $theme->header(); $theme->box(t("Edit your diary"), $output); $theme->footer(); } function diary_page_delete($id) { db_query("DELETE FROM diaries WHERE id = '$id'"); watchdog("message", "diary: diary entry deleted"); } function diary_page_edit($id) { global $theme, $user, $allowed_html; $result = db_query("SELECT * FROM diaries WHERE id = '$id'"); $diary = db_fetch_object($result); $output .= diary_page_entry($diary->timestamp, $diary->text); $output .= "
\n"; $output .= "

\n"; $output .= "
\n"; $output .= " ". t("Allowed HTML tags") .": ". htmlspecialchars($allowed_html) .".\n"; $output .= "

\n"; $output .= "

\n"; $output .= " id\">\n"; $output .= " timestamp\">\n"; $output .= " \n"; $output .= "

\n"; $output .= "
\n"; $theme->header(); $theme->box(t("Edit your diary"), $output); $theme->footer(); } function diary_page_preview($text, $timestamp, $id = 0) { global $theme, $user, $allowed_html; $output .= diary_page_entry($timestamp, $text); $output .= "
\n"; $output .= "

\n"; $output .= "
\n"; $output .= " ". t("Allowed HTML tags") .": ". htmlspecialchars($allowed_html) .".\n"; $output .= "

\n"; $output .= "

\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= "

\n"; $output .= "
\n"; $theme->header(); $theme->box(t("Edit your diary"), $output); $theme->footer(); } function diary_page_submit($text, $id = 0) { global $user, $theme; if ($id) { watchdog("message", "diary: old diary entry updated"); db_query("UPDATE diaries SET text = '$text' WHERE id = '$id'"); } else { watchdog("special", "diary: new diary entry added"); db_query("INSERT INTO diaries (author, text, timestamp) VALUES ('$user->id', '$text', '". time() ."')"); } header("Location: module.php?mod=diary&op=view&name=$user->userid"); } function diary_page() { global $op, $id, $name, $text, $timestamp; // Security check: if (strstr($id, " ") || strstr($name, " ")) { watchdog("error", "diary: attempt to provide malicious input through URI"); exit(); } switch($op) { case "add": diary_page_add(); break; case "delete": diary_page_delete(check_input($id)); diary_page_display(check_input($name)); break; case "edit": diary_page_edit(check_input($id)); break; case "view": diary_page_display(check_input($name)); break; case "Preview diary entry": if ($id) diary_page_preview(($text ? check_output($text) : ""), check_input($timestamp), check_input($id)); else diary_page_preview(($text ? check_output($text) : ""), time()); break; case "Submit diary entry": if ($id) diary_page_submit(check_input($text), check_input($id)); else diary_page_submit(check_input($text)); break; default: diary_page_overview(); } } function diary_help() { ?>

Drupal's diary module allows registered users to maintain an online 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.

". t("edit your diary") ."", "". t("view your diary") .""); } function diary_block() { $result = db_query("SELECT u.userid, d.timestamp FROM diaries d LEFT JOIN users u ON d.author = u.id ORDER BY timestamp DESC LIMIT 10"); while ($diary = db_fetch_object($result)) { if ($time != date("F jS", $diary->timestamp)) { $content .= "

". t(date("l", $diary->timestamp)) ." (". date("m/d/Y", $diary->timestamp) .")

\n"; $time = date("F jS", $diary->timestamp); } $content .= "
  • userid\">$diary->userid
  • \n"; } $block[0]["subject"] = "Recent diary entries"; $block[0]["content"] = $content; $block[0]["info"] = "Recent diary entries"; $block[0]["link"] = "module.php?mod=diary"; return $block; } function diary_admin_edit($id) { $result = db_query("SELECT d.*, u.userid FROM diaries d LEFT JOIN users u ON d.author = u.id WHERE d.id = '$id'"); $diary = db_fetch_object($result); $output .= "
    \n"; $output .= "

    \n"; $output .= " Author:
    \n"; $output .= " ". format_username($diary->userid) ."\n"; $output .= "

    \n"; $output .= "

    \n"; $output .= "Diary entry:
    \n"; $output .= "
    \n"; $output .= "

    \n"; $output .= "

    \n"; $output .= " \n"; $output .= "

    \n"; $output .= "
    \n"; print $output; } function diary_admin_save($id, $text) { db_query("UPDATE diaries SET text = '$text' WHERE id = $id"); watchdog("message", "diary: modified entry #$id."); } function diary_admin_delete($id) { db_query("DELETE FROM diaries WHERE id = '$id'"); watchdog("message", "diary: deleted entry #$id."); } function diary_admin_display($order = "date") { // Initialize variables: $fields = array("author" => "author", "date" => "timestamp DESC"); // Perform SQL query: $result = db_query("SELECT d.*, u.userid FROM diaries d LEFT JOIN users u ON u.id = d.author ORDER BY d.$fields[$order] LIMIT 50"); // Display stories: $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; while ($diary = db_fetch_object($result)) { $output .= " \n"; } $output .= "
    \n"; $output .= "
    \n"; $output .= " \n"; $output .= " \n"; $output .= "
    \n"; $output .= "
    subjectauthoroperations
    userid\">$diary->userid on ". format_date($diary->timestamp, "small") ."". format_username($diary->userid) ."id\">editid\">delete
    \n"; print $output; } function diary_admin() { global $op, $id, $mod, $keys, $text, $order; print "overview | search diary | help
    \n"; switch ($op) { case "delete": diary_admin_delete(check_input($id)); diary_admin_display(); break; case "edit": diary_admin_edit(check_input($id)); break; case "help": diary_help(); break; case "search": print search_form($keys); print search_data($keys, $mod); break; case "Save diary entry": diary_admin_save(check_input($id), check_input($text)); diary_admin_display(); break; case "Update": diary_admin_display(check_input($order)); break; default: diary_admin_display(); } } function diary_export($uri) { if ($uri[2] == "diary") { print "TODO: export diary for user $uri[3]"; } } ?>