abstract = $story[abstract]; $this->body = $story[body]; } } function story_status() { return array(dumped, queued, posted); } function story_search($keys) { global $status, $user; $result = db_query("SELECT n.*, s.* FROM story s LEFT JOIN node n ON n.nid = s.nid AND n.lid = s.lid WHERE n.status = '$status[posted]' AND (n.title LIKE '%$keys%' OR s.abstract LIKE '%$keys%' OR s.body LIKE '%$keys%') LIMIT 20"); while ($story = db_fetch_object($result)) { $find[$i++] = array("title" => check_output($story->title), "link" => (user_access($user, "story") ? "admin.php?mod=story&op=edit&id=$story->nid" : "node.php?id=$story->nid"), "user" => $story->userid, "date" => $story->timestamp); } return $find; } function story_help() { ?>

Queued stories: user-contributed stories are automatically whisked away to a submission queue for moderators (i.e. registered user) to frown at. Moderators vote whether or not a story should be posted to the front page for discussion.

Posted stories: published stories accessible to all visitors.

Dumped stories: rejected stories that are no longer available to visitors.

story($node, $main); } function story_form($edit = array()) { global $REQUEST_URI, $user; $form .= form_item(t("Your name"), format_username(($edit[userid] ? $edit[userid] : $user->userid))); $form .= form_hidden("userid", $edit[userid]); $form .= form_textfield(t("Subject"), "title", $edit[title], 50, 64); $form .= structure_form("story", $edit); $form .= form_textarea(t("Abstract"), "abstract", $edit[abstract], 50, 10, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", ""))); $form .= form_textarea(t("Body"), "body", $edit[body], 50, 15, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", ""))); // hidden fields: if ($edit[nid] > 0) { $form .= form_hidden("nid", $edit[nid]); } if (!$edit) { $form .= form_submit(t("Preview")); } else if (!$edit[title]) { $form .= "". t("Warning: you did not supply a subject.") ."

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

\n"; $form .= form_submit(t("Preview")); } else { $form .= form_submit(t("Preview")); $form .= form_submit(t("Submit")); } return form($REQUEST_URI, $form); } function story_save($edit) { global $status, $user; if (!$edit[nid]) { node_save($edit, array(abstract, author => $user->id, body, cid, comment => category_comment($edit[cid]), moderate => topic_moderate($edit[tid]), promote => category_promote($edit[cid]), score => 0, status => (category_submission($edit[cid]) ? $status[queued] : $status[posted]), tid, timestamp => time(), title, type => "story", votes => 0)); } else if (user_access($user)) { node_save($edit, array(abstract, body, cid, tid, title, type => "story")); } } function story_block() { /* // // disabled for now // global $status; $result = db_query("SELECT s.lid, COUNT(c.cid) AS comments, s.title FROM story s LEFT JOIN comments c ON s.lid = c.lid WHERE s.status = '$status[posted]' AND c.link = 'story' GROUP BY s.lid ORDER BY comments DESC LIMIT 10"); while ($story = db_fetch_object($result)) { $content .= "

  • id\">". check_output($story->title) ."
    (". format_plural($story->comments, "comment", "comments") .")
  • \n"; } $blocks[0][subject] = "Top 10:
    all stories"; $blocks[0][content] = $content; $blocks[0][info] = "Top 10: all stories"; unset($content); $result = db_query("SELECT s.lid, COUNT(c.cid) AS comments, s.title FROM story s LEFT JOIN comments c ON s.lid = c.lid WHERE s.status = '$status[posted]' AND c.link = 'story' AND ". time() ." - s.timestamp < 2419200 GROUP BY s.lid ORDER BY comments DESC LIMIT 10"); while ($story = db_fetch_object($result)) { $content .= "
  • id\">". check_output($story->title) ."
    (". format_plural($story->comments, "comment", "comments") .")
  • \n"; } $blocks[1][subject] = "Top 10:
    recent stories"; $blocks[1][content] = $content; $blocks[1][info] = "Top 10: recent stories"; return $blocks; */ } function story_query($type = "") { global $status; $queries = array(array("recent stories", "WHERE n.type = 'story' ORDER BY n.timestamp DESC"), array("posted stories", "WHERE n.type = 'story' AND n.status = '$status[posted]' ORDER BY n.timestamp DESC"), array("queued stories", "WHERE n.type = 'story' AND n.status = '$status[queued]' ORDER BY n.timestamp DESC"), array("dumped stories", "WHERE n.type = 'story' AND n.status = '$status[dumped]' ORDER BY n.timestamp DESC"), array("stories without category (integrity)", "WHERE n.type = 'story' AND n.cid = '0' ORDER BY n.timestamp DESC"), array("stories without topic (integrity)", "WHERE n.type = 'story' AND n.tid = '0' ORDER BY n.timestamp DESC")); return ($queries[$type] ? $queries[$type] : $queries); } function story_overview($query = array()) { return node_overview($query); } function story_admin() { global $id, $edit, $mod, $keys, $op, $theme, $type, $user; print "add new story | story listing | search story | overview | help
    \n"; $type = ($type ? $type : 0); switch ($op) { case "add": print story_form(); break; case "delete": print story_delete($id); print story_overview(story_query($type)); break; case "edit": print story_form(node_get_array(array("nid" => check_input($id)))); break; case "help": story_help(); break; case "listing": print node_listing(story_query()); break; case "search": print search_form($keys); print search_data($keys, $mod); break; case t("Preview"): story_view(new Story(node_preview($edit))); print story_form($edit); break; case t("Submit"): story_save($edit); // fall through: default: print story_overview(story_query($type)); } } function story_user() { global $edit, $op, $theme, $user; switch($op) { case t("Preview"): story_view(new Story(node_preview($edit))); $theme->box(t("Submit"), story_form($edit)); break; case t("Submit"): story_save($edit); $theme->box(t("Submit"), t("Thank you for your submission.")); break; default: $theme->box(t("Submit"), story_form()); } } ?>