summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2001-04-07 15:02:28 +0000
committerDries Buytaert <dries@buytaert.net>2001-04-07 15:02:28 +0000
commit38806b4a39a6bdfc9d4a09f86b7bbaf0173c298d (patch)
treea445eab5750bd259731134cd31412305b55b8acb
parent8213f5b2627a6b63db9f84b572918bd7e3254dff (diff)
downloadbrdo-38806b4a39a6bdfc9d4a09f86b7bbaf0173c298d.tar.gz
brdo-38806b4a39a6bdfc9d4a09f86b7bbaf0173c298d.tar.bz2
- fixed bug in common.inc: throttle()
- streamlined method invocation in node.inc - added node_status() function to modules - added NEW (mostly static) page module - added NEW settings module
-rw-r--r--.htaccess7
-rw-r--r--database/database.mysql9
-rw-r--r--includes/common.inc1
-rw-r--r--includes/node.inc22
-rw-r--r--modules/book.module4
-rw-r--r--modules/book/book.module4
-rw-r--r--modules/node.module19
-rw-r--r--modules/node/node.module19
-rw-r--r--modules/page.module83
-rw-r--r--modules/page/page.module83
-rw-r--r--modules/settings.module115
-rw-r--r--modules/story.module4
-rw-r--r--modules/story/story.module4
-rw-r--r--updates/2.00-to-x.xx.sql10
14 files changed, 347 insertions, 37 deletions
diff --git a/.htaccess b/.htaccess
index 8c8ad53eb..1f5acf0c1 100644
--- a/.htaccess
+++ b/.htaccess
@@ -2,13 +2,8 @@
# Apache/PHP/site settings:
#
-# Archive feature:
-<Files archive>
- ForceType application/x-httpd-php
-</Files>
-
# Protect files and directories from prying eyes:
-<Files ~ "(class|conf|CVS|database|Entries|inc|modules|*.module|Repository|Root|script|sh|sql|theme)">
+<Files ~ "(class|conf|CVS|database|Entries|inc|modules|*\.module|Repository|Root|script|sh|sql|theme)">
order deny,allow
deny from all
</Files>
diff --git a/database/database.mysql b/database/database.mysql
index 3ad1199ac..e2aed1caf 100644
--- a/database/database.mysql
+++ b/database/database.mysql
@@ -168,6 +168,15 @@ CREATE TABLE node (
PRIMARY KEY (nid)
);
+DROP TABLE IF EXISTS page;
+CREATE TABLE page (
+ lid int(10) unsigned DEFAULT '0' NOT NULL auto_increment,
+ nid int(10) unsigned DEFAULT '0' NOT NULL,
+ body text NOT NULL,
+ format tinyint(2) DEFAULT '0' NOT NULL,
+ PRIMARY KEY (lid)
+);
+
DROP TABLE IF EXISTS sections;
CREATE TABLE sections (
name varchar(64) DEFAULT '' NOT NULL,
diff --git a/includes/common.inc b/includes/common.inc
index 81127c22c..53f1aa4d0 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -16,6 +16,7 @@ function watchdog($type, $message) {
}
function throttle($type, $rate) {
+ global $user;
if (!(user_access($user, "watchdog") || user_access($user, "comment") || user_access($user, "node"))) {
if ($throttle = db_fetch_object(db_query("SELECT * FROM watchdog WHERE type = '$type' AND hostname = '". getenv("REMOTE_ADDR") ."' AND ". time() ." - timestamp < $rate"))) {
watchdog("warning", "throttle: '". getenv("REMOTE_ADDR") ."' exceeded submission rate - $throttle->type");
diff --git a/includes/node.inc b/includes/node.inc
index 75b1fdc8c..fa2ca7d92 100644
--- a/includes/node.inc
+++ b/includes/node.inc
@@ -1,6 +1,7 @@
<?php
$status = array(dumped => 0, expired => 1, queued => 2, posted => 3);
+$rstatus = array(0 => dumped, 1 => expired, 2 => queued, 3 => posted);
function _node_get($field, $value) {
$result = db_query("SELECT lid, type FROM node WHERE $field = '$value'");
@@ -119,18 +120,23 @@ function node_save($node) {
}
+
+function node_invoke($node, $name, $arg = 0) {
+ if ($node[type]) $function = $node[type] ."_$name";
+ if ($node->type) $function = $node->type ."_$name";
+ if ($function) return ($arg ? $function($node) : $function($node, $arg));
+}
+
function node_view($node, $page) {
- if ($node->type) {
- $function = $node->type ."_view";
- return $function($node, $page);
- }
+ return node_invoke($node, "view", $page);
}
function node_form($node) {
- if ($node[type]) {
- $function = $node[type] ."_form";
- return $function($node);
- }
+ return node_invoke($node, "form");
+}
+
+function node_status($node) {
+ return node_invoke($node, "status");
}
function node_control($node) {
diff --git a/modules/book.module b/modules/book.module
index b2f09b84c..342c808e8 100644
--- a/modules/book.module
+++ b/modules/book.module
@@ -29,6 +29,10 @@ function book_timout_threshold($node, $default) {
return $default;
}
+function book_status() {
+ return array(dumped, expired, queued, posted);
+}
+
function book_location($node, $nodes = array()) {
$parent = db_fetch_object(db_query("SELECT n.nid, n.title, b.parent FROM node n LEFT JOIN book b ON n.nid = b.nid AND n.lid = b.lid WHERE n.nid = '$node->parent'"));
if ($parent->title) {
diff --git a/modules/book/book.module b/modules/book/book.module
index b2f09b84c..342c808e8 100644
--- a/modules/book/book.module
+++ b/modules/book/book.module
@@ -29,6 +29,10 @@ function book_timout_threshold($node, $default) {
return $default;
}
+function book_status() {
+ return array(dumped, expired, queued, posted);
+}
+
function book_location($node, $nodes = array()) {
$parent = db_fetch_object(db_query("SELECT n.nid, n.title, b.parent FROM node n LEFT JOIN book b ON n.nid = b.nid AND n.lid = b.lid WHERE n.nid = '$node->parent'"));
if ($parent->title) {
diff --git a/modules/node.module b/modules/node.module
index a84e33a05..48f680aa0 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -2,18 +2,15 @@
$module = array("admin" => "node_admin");
-
-$nstatus = array(0 => dumped, 1 => expired, 2 => queued, 3 => posted);
-
function node_overview($query = 0) {
- global $user, $nstatus;
+ global $user, $rstatus;
$result = db_query("SELECT n.*, u.userid FROM node n LEFT JOIN users u ON n.author = u.id ". ($query ? "WHERE $query" : "") ." ORDER BY n.timestamp DESC");
$output .= "<TABLE BORDER=\"1\" CELLPADDING=\"2\" CELLSPACING=\"2\">\n";
$output .= " <TR><TH>title</TH><TH>type</TH><TH>status</TH><TH>author</TH><TH>date</TH><TH COLSPAN=\"3\">operations</TH></TR>\n";
while ($node = db_fetch_object($result)) {
- $output .= " <TR><TD><A HREF=\"node.php?id=$node->nid\">". check_output($node->title) ."</A></TD><TD ALIGN=\"center\">$node->type</TD><TD>". $nstatus[$node->status] ."</TD><TD>". format_username($node->userid) ."</TD><TD>". format_date($node->timestamp) ."</TD><TD>". (user_access($user, "node") ? "<A HREF=\"admin.php?mod=node&op=view&id=$node->nid\">view node</A></TD>" : "view node") ."</TD><TD>". (user_access($user, "node") ? "<A HREF=\"admin.php?mod=node&op=edit&id=$node->nid\">edit node</A></TD>" : "edit node") ."</TD><TD>". (user_access($user, $node->type) ? "<A HREF=\"admin.php?mod=$node->type&op=edit&id=$node->nid\">edit $node->type</A></TD>" : "edit $node->type") ."</TD></TR>\n";
+ $output .= " <TR><TD><A HREF=\"node.php?id=$node->nid\">". check_output($node->title) ."</A></TD><TD ALIGN=\"center\">$node->type</TD><TD>". $rstatus[$node->status] ."</TD><TD>". format_username($node->userid) ."</TD><TD>". format_date($node->timestamp) ."</TD><TD>". (user_access($user, "node") ? "<A HREF=\"admin.php?mod=node&op=view&id=$node->nid\">view node</A></TD>" : "view node") ."</TD><TD>". (user_access($user, "node") ? "<A HREF=\"admin.php?mod=node&op=edit&id=$node->nid\">edit node</A></TD>" : "edit node") ."</TD><TD>". (user_access($user, $node->type) ? "<A HREF=\"admin.php?mod=$node->type&op=edit&id=$node->nid\">edit $node->type</A></TD>" : "edit $node->type") ."</TD></TR>\n";
}
$output .= "</TABLE>\n";
@@ -21,14 +18,14 @@ function node_overview($query = 0) {
}
function node_admin_view($id) {
- global $nstatus;
+ global $rstatus;
$node = node_get_object("nid", $id);
$output .= "<FORM ACTION=\"admin.php?mod=node&id=$node->nid\" METHOD=\"post\">\n";
$output .= "<B>Title:</B><BR>". check_output($node->title) ."<P>\n";
$output .= "<B>Author:</B><BR>". format_username($node->userid) ."<P>\n";
- $output .= "<B>Status:</B><BR>". $nstatus[$node->status] ."<P>\n";
+ $output .= "<B>Status:</B><BR>". $rstatus[$node->status] ."<P>\n";
$output .= "<B>Date:</B><BR>". format_date($node->timestamp) ."<P>\n";
$output .= "<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Edit node\">\n";
$output .= "<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Delete node\">\n";
@@ -38,13 +35,13 @@ function node_admin_view($id) {
}
function node_admin_edit($id) {
- global $status, $user;
+ global $user, $status;
$node = node_get_object("nid", $id);
foreach (array($node->userid => $node->author, $user->userid => $user->id) as $value=>$key) $author .= " <OPTION VALUE=\"$key\"". (($node->author == $key) ? " SELECTED" : "") .">$value</OPTION>\n";
foreach (array(format_date($node->timestamp) ." (original)" => $node->timestamp, format_date(time()) ." (current)" => time()) as $value=>$key) $timestamp .= " <OPTION VALUE=\"$key\"". (($node->timestamp == $key) ? " SELECTED" : "") .">$value</OPTION>\n";
- foreach ($status as $value=>$key) $statuz .= " <OPTION VALUE=\"$key\"". (($node->status == $key) ? " SELECTED" : "") .">$value</OPTION>\n";
+ foreach (node_status($node) as $value) $statuz .= " <OPTION VALUE=\"". $status[$value] ."\"". (($node->status == $status[$value]) ? " SELECTED" : "") .">$value</OPTION>\n";
$output .= "<FORM ACTION=\"admin.php?mod=node&id=$node->nid\" METHOD=\"post\">\n";
$output .= "<B>Title:</B><BR>". check_output($node->title) ."<P>\n";
@@ -60,7 +57,7 @@ function node_admin_edit($id) {
}
function node_delete($id) {
- return (node_del("nid", $id) ? "failed to delete node: node must be dumped first." : "node has been deleted.");
+ return (node_del("nid", $id) ? "node has been deleted." : "failed to delete node: node must be dumped first.");
}
function node_admin() {
@@ -79,7 +76,7 @@ function node_admin() {
break;
case "Save node":
print status(node_save($edit));
- print node_overview();
+ print node_admin_view($id);
break;
case "View node":
case "view":
diff --git a/modules/node/node.module b/modules/node/node.module
index a84e33a05..48f680aa0 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -2,18 +2,15 @@
$module = array("admin" => "node_admin");
-
-$nstatus = array(0 => dumped, 1 => expired, 2 => queued, 3 => posted);
-
function node_overview($query = 0) {
- global $user, $nstatus;
+ global $user, $rstatus;
$result = db_query("SELECT n.*, u.userid FROM node n LEFT JOIN users u ON n.author = u.id ". ($query ? "WHERE $query" : "") ." ORDER BY n.timestamp DESC");
$output .= "<TABLE BORDER=\"1\" CELLPADDING=\"2\" CELLSPACING=\"2\">\n";
$output .= " <TR><TH>title</TH><TH>type</TH><TH>status</TH><TH>author</TH><TH>date</TH><TH COLSPAN=\"3\">operations</TH></TR>\n";
while ($node = db_fetch_object($result)) {
- $output .= " <TR><TD><A HREF=\"node.php?id=$node->nid\">". check_output($node->title) ."</A></TD><TD ALIGN=\"center\">$node->type</TD><TD>". $nstatus[$node->status] ."</TD><TD>". format_username($node->userid) ."</TD><TD>". format_date($node->timestamp) ."</TD><TD>". (user_access($user, "node") ? "<A HREF=\"admin.php?mod=node&op=view&id=$node->nid\">view node</A></TD>" : "view node") ."</TD><TD>". (user_access($user, "node") ? "<A HREF=\"admin.php?mod=node&op=edit&id=$node->nid\">edit node</A></TD>" : "edit node") ."</TD><TD>". (user_access($user, $node->type) ? "<A HREF=\"admin.php?mod=$node->type&op=edit&id=$node->nid\">edit $node->type</A></TD>" : "edit $node->type") ."</TD></TR>\n";
+ $output .= " <TR><TD><A HREF=\"node.php?id=$node->nid\">". check_output($node->title) ."</A></TD><TD ALIGN=\"center\">$node->type</TD><TD>". $rstatus[$node->status] ."</TD><TD>". format_username($node->userid) ."</TD><TD>". format_date($node->timestamp) ."</TD><TD>". (user_access($user, "node") ? "<A HREF=\"admin.php?mod=node&op=view&id=$node->nid\">view node</A></TD>" : "view node") ."</TD><TD>". (user_access($user, "node") ? "<A HREF=\"admin.php?mod=node&op=edit&id=$node->nid\">edit node</A></TD>" : "edit node") ."</TD><TD>". (user_access($user, $node->type) ? "<A HREF=\"admin.php?mod=$node->type&op=edit&id=$node->nid\">edit $node->type</A></TD>" : "edit $node->type") ."</TD></TR>\n";
}
$output .= "</TABLE>\n";
@@ -21,14 +18,14 @@ function node_overview($query = 0) {
}
function node_admin_view($id) {
- global $nstatus;
+ global $rstatus;
$node = node_get_object("nid", $id);
$output .= "<FORM ACTION=\"admin.php?mod=node&id=$node->nid\" METHOD=\"post\">\n";
$output .= "<B>Title:</B><BR>". check_output($node->title) ."<P>\n";
$output .= "<B>Author:</B><BR>". format_username($node->userid) ."<P>\n";
- $output .= "<B>Status:</B><BR>". $nstatus[$node->status] ."<P>\n";
+ $output .= "<B>Status:</B><BR>". $rstatus[$node->status] ."<P>\n";
$output .= "<B>Date:</B><BR>". format_date($node->timestamp) ."<P>\n";
$output .= "<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Edit node\">\n";
$output .= "<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Delete node\">\n";
@@ -38,13 +35,13 @@ function node_admin_view($id) {
}
function node_admin_edit($id) {
- global $status, $user;
+ global $user, $status;
$node = node_get_object("nid", $id);
foreach (array($node->userid => $node->author, $user->userid => $user->id) as $value=>$key) $author .= " <OPTION VALUE=\"$key\"". (($node->author == $key) ? " SELECTED" : "") .">$value</OPTION>\n";
foreach (array(format_date($node->timestamp) ." (original)" => $node->timestamp, format_date(time()) ." (current)" => time()) as $value=>$key) $timestamp .= " <OPTION VALUE=\"$key\"". (($node->timestamp == $key) ? " SELECTED" : "") .">$value</OPTION>\n";
- foreach ($status as $value=>$key) $statuz .= " <OPTION VALUE=\"$key\"". (($node->status == $key) ? " SELECTED" : "") .">$value</OPTION>\n";
+ foreach (node_status($node) as $value) $statuz .= " <OPTION VALUE=\"". $status[$value] ."\"". (($node->status == $status[$value]) ? " SELECTED" : "") .">$value</OPTION>\n";
$output .= "<FORM ACTION=\"admin.php?mod=node&id=$node->nid\" METHOD=\"post\">\n";
$output .= "<B>Title:</B><BR>". check_output($node->title) ."<P>\n";
@@ -60,7 +57,7 @@ function node_admin_edit($id) {
}
function node_delete($id) {
- return (node_del("nid", $id) ? "failed to delete node: node must be dumped first." : "node has been deleted.");
+ return (node_del("nid", $id) ? "node has been deleted." : "failed to delete node: node must be dumped first.");
}
function node_admin() {
@@ -79,7 +76,7 @@ function node_admin() {
break;
case "Save node":
print status(node_save($edit));
- print node_overview();
+ print node_admin_view($id);
break;
case "View node":
case "view":
diff --git a/modules/page.module b/modules/page.module
new file mode 100644
index 000000000..13b3d6d9f
--- /dev/null
+++ b/modules/page.module
@@ -0,0 +1,83 @@
+<?php
+
+$module = array("page" => "page_page",
+ "admin" => "page_admin");
+
+$format = array(0 => HTML, 1 => PHP, 2 => text);
+
+function page_view($node) {
+ global $format, $theme;
+
+ switch ($format[$node->format]) {
+ case "PHP":
+ $output = eval($node->body);
+ break;
+ case "text":
+ $output = nl2br(htmlentities($node->body));
+ break;
+ default:
+ $output = check_output($node->body, 1);
+ }
+
+ $theme->header();
+ $theme->box(check_output($node->title), $output);
+ $theme->footer();
+}
+
+function page_status() {
+ return array(dumped, posted);
+}
+
+function page_form($edit = array()) {
+ global $format;
+
+ $output .= "<FORM ACTION=\"admin.php?mod=page\" METHOD=\"post\">\n";
+
+ $output .= "<B>Name:</B><BR>\n";
+ $output .= "<INPUT NAME=\"edit[title]\" SIZE=\"55\" VALUE=\"". check_textfield($edit[title]) ."\"><P>\n";
+
+ $output .= "<B>Body:</B><BR>\n";
+ $output .= "<TEXTAREA NAME=\"edit[body]\" COLS=\"55\" ROWS=\"10\" WRAP=\"virtual\">". check_textarea($edit[body]) ."</TEXTAREA><P>\n";
+
+ $output .= "<B>Type:</B><BR>\n";
+ foreach ($format as $key=>$value) $options .= "<OPTION VALUE=\"$key\"". ($edit[format] == $key ? " SELECTED" : "") .">$value</OPTION>\n";
+ $output .= "<SELECT NAME=\"edit[format]\">$options</SELECT><P>\n";
+
+ $output .= "<INPUT TYPE=\"hidden\" NAME=\"edit[nid]\" VALUE=\"$edit[nid]\">\n";
+
+ $output .= "<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Save page\">\n";
+ $output .= "</FORM>\n";
+
+ return $output;
+}
+
+function page_save($edit) {
+ global $status;
+ node_save(array_merge($edit, array(type => "page", status => $status[posted])));
+}
+
+function page_overview() {
+ return node_overview("type = 'page'");
+}
+
+function page_admin() {
+ global $id, $op, $edit;
+
+ print "<SMALL><A HREF=\"admin.php?mod=page&op=add\">add new page</A> | <A HREF=\"admin.php?mod=page\">overview</A> | <A HREF=\"admin.php?mod=page&op=help\">help</A></SMALL><HR>\n";
+
+ switch ($op) {
+ case "add":
+ print page_form();
+ break;
+ case "edit":
+ print page_form(node_get_array(nid, $id));
+ break;
+ case "Save page":
+ print status(page_save($edit));
+ // fall through:
+ default:
+ print page_overview();
+ }
+}
+
+?> \ No newline at end of file
diff --git a/modules/page/page.module b/modules/page/page.module
new file mode 100644
index 000000000..13b3d6d9f
--- /dev/null
+++ b/modules/page/page.module
@@ -0,0 +1,83 @@
+<?php
+
+$module = array("page" => "page_page",
+ "admin" => "page_admin");
+
+$format = array(0 => HTML, 1 => PHP, 2 => text);
+
+function page_view($node) {
+ global $format, $theme;
+
+ switch ($format[$node->format]) {
+ case "PHP":
+ $output = eval($node->body);
+ break;
+ case "text":
+ $output = nl2br(htmlentities($node->body));
+ break;
+ default:
+ $output = check_output($node->body, 1);
+ }
+
+ $theme->header();
+ $theme->box(check_output($node->title), $output);
+ $theme->footer();
+}
+
+function page_status() {
+ return array(dumped, posted);
+}
+
+function page_form($edit = array()) {
+ global $format;
+
+ $output .= "<FORM ACTION=\"admin.php?mod=page\" METHOD=\"post\">\n";
+
+ $output .= "<B>Name:</B><BR>\n";
+ $output .= "<INPUT NAME=\"edit[title]\" SIZE=\"55\" VALUE=\"". check_textfield($edit[title]) ."\"><P>\n";
+
+ $output .= "<B>Body:</B><BR>\n";
+ $output .= "<TEXTAREA NAME=\"edit[body]\" COLS=\"55\" ROWS=\"10\" WRAP=\"virtual\">". check_textarea($edit[body]) ."</TEXTAREA><P>\n";
+
+ $output .= "<B>Type:</B><BR>\n";
+ foreach ($format as $key=>$value) $options .= "<OPTION VALUE=\"$key\"". ($edit[format] == $key ? " SELECTED" : "") .">$value</OPTION>\n";
+ $output .= "<SELECT NAME=\"edit[format]\">$options</SELECT><P>\n";
+
+ $output .= "<INPUT TYPE=\"hidden\" NAME=\"edit[nid]\" VALUE=\"$edit[nid]\">\n";
+
+ $output .= "<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Save page\">\n";
+ $output .= "</FORM>\n";
+
+ return $output;
+}
+
+function page_save($edit) {
+ global $status;
+ node_save(array_merge($edit, array(type => "page", status => $status[posted])));
+}
+
+function page_overview() {
+ return node_overview("type = 'page'");
+}
+
+function page_admin() {
+ global $id, $op, $edit;
+
+ print "<SMALL><A HREF=\"admin.php?mod=page&op=add\">add new page</A> | <A HREF=\"admin.php?mod=page\">overview</A> | <A HREF=\"admin.php?mod=page&op=help\">help</A></SMALL><HR>\n";
+
+ switch ($op) {
+ case "add":
+ print page_form();
+ break;
+ case "edit":
+ print page_form(node_get_array(nid, $id));
+ break;
+ case "Save page":
+ print status(page_save($edit));
+ // fall through:
+ default:
+ print page_overview();
+ }
+}
+
+?> \ No newline at end of file
diff --git a/modules/settings.module b/modules/settings.module
new file mode 100644
index 000000000..1bbe64fdb
--- /dev/null
+++ b/modules/settings.module
@@ -0,0 +1,115 @@
+<?php
+
+$module = array("admin" => "settings_admin");
+
+function settings_conf() {
+ global $conf, $cmodes, $corder;
+
+ $output .= "<H3>General settings</H3>\n";
+
+ $output .= "<B>Sitename:</B><BR>\n";
+ $output .= "<INPUT NAME=\"edit[site_name]\" MAXLENGTH=\"55\" SIZE=\"30\" VALUE=\"". variable_get(site_name, "drupal") ."\"><BR>\n";
+ $output .= "<I><SMALL>The name of this website.</SMALL></I><P>\n";
+
+ $output .= "<B>E-mail address:</B><BR>\n";
+ $output .= "<INPUT NAME=\"edit[site_mail]\" MAXLENGTH=\"55\" SIZE=\"30\" VALUE=\"". variable_get(site_mail, "root@localhost") ."\"><BR>\n";
+ $output .= "<I><SMALL>A valid e-mail address for this website, used by the auto-mailer to when creating new user accounts.</SMALL></I><P>\n";
+
+ $output .= "<B>URL of site:</B><BR>\n";
+ $output .= "<INPUT NAME=\"edit[site_url]\" MAXLENGTH=\"55\" SIZE=\"30\" VALUE=\"". variable_get(site_url, "http://drupal/") ."\"><BR>\n";
+ $output .= "<I><SMALL>The fully qualified URL of this website: starts with \"http://\" and ends with a trailing slash!</SMALL></I><P>\n";
+
+ $output .= "<B>Anonymous user:</B><BR>\n";
+ $output .= "<INPUT NAME=\"edit[anonymous]\" MAXLENGTH=\"55\" SIZE=\"30\" VALUE=\"". variable_get(anonymous, "Anonymous") ."\"><BR>\n";
+ $output .= "<I><SMALL>The name displayed for anonymous users.</SMALL></I><P>\n";
+
+ $output .= "<HR>\n";
+ $output .= "<H3>Comment system</H3>\n";
+
+ $output .= "<B>Default display mode:</B><BR>\n";
+ foreach ($cmodes as $key=>$value) $options1 .= "<OPTION VALUE=\"$key\"". ($conf[default_comment_mode] == $key ? " SELECTED" : "") .">$value</OPTION>\n";
+ $output .= "<SELECT NAME=\"edit[default_comment_mode]\">$options1</SELECT><BR>\n";
+ $output .= "<I><SMALL>The default mode in which comments are displayed.</SMALL></I><P>\n";
+
+ $output .= "<B>Default display mode:</B><BR>\n";
+ foreach ($corder as $key=>$value) $options2 .= "<OPTION VALUE=\"$key\"". ($conf[default_comment_order] == $key ? " SELECTED" : "") .">$value</OPTION>\n";
+ $output .= "<SELECT NAME=\"edit[default_comment_order]\">$options2</SELECT><BR>\n";
+ $output .= "<I><SMALL>The default mode in which comments are displayed.</SMALL></I><P>\n";
+
+ $output .= "<B>Default threshold:</B><BR>\n";
+ for ($i = -1; $i < 6; $i++) $options3 .= " <OPTION VALUE=\"$i\"". ($conf[default_comment_threshold] == $i ? " SELECTED" : "") .">Filter - $i</OPTION>";
+ $output .= "<SELECT NAME=\"edit[default_comment_threshold]\">$options3</SELECT><BR>\n";
+ $output .= "<I><SMALL>The default threshold used to filter comments.</SMALL></I><P>\n";
+
+ $output .= "<HR>\n";
+ $output .= "<H3>Submission system</H3>\n";
+
+ $size = array(1000 => "1.000 characters", 5000 => "5.000 characters", 10000 => "10.000 characters", 15000 => "15.000 characters", 30.000 => "30.000 characters", 50000 => "50.000 characters", 100000 => "100.000 characters");
+
+ $output .= "<B>Maximum submission size:</B><BR>\n";
+ foreach ($size as $key=>$value) $options4 .= " <OPTION VALUE=\"$key\"". ((variable_get(max_input_size, 10000) == $key) ? " SELECTED" : "") .">$value</OPTION>\n";
+ $output .= "<SELECT NAME=\"edit[max_input_size]\">$options4</SELECT><BR>\n";
+ $output .= "<I><SMALL>The maximum number of characters someone can enter in a form.</SMALL></I><P>\n";
+
+ $rate = array(1 => "maximum 1 every second", 5 => "maximum 1 every 5 seconds", 15 => "maximum 1 every 15 seconds", 30 => "maximum 1 every 30 seconds", 60 => "maximum 1 every minute", 300 => "maximum 1 every 5 minutes", 900 => "maximum 1 every 15 minutes", 1800 => "maximum 1 every 30 minutes", 3600 => "maximum 1 every hour", 21600 => "maximum 1 every 6 hour", 43200 => "maximum 1 every 12 hour");
+
+ $output .= "<B>Maximum node rate:</B><BR>\n";
+ foreach ($rate as $key=>$value) $options5 .= " <OPTION VALUE=\"$key\"". ((variable_get(max_node_rate, 900) == $key) ? " SELECTED" : "") .">$value</OPTION>\n";
+ $output .= "<SELECT NAME=\"edit[max_node_rate]\">$options5</SELECT><BR>\n";
+ $output .= "<I><SMALL>The maximum submission rate for nodes. Its purpose is to stop potential abuse or denial of service attacks.</SMALL></I><P>\n";
+
+ $output .= "<B>Maximum comment rate:</B><BR>\n";
+ foreach ($rate as $key=>$value) $options6 .= " <OPTION VALUE=\"$key\"". ((variable_get(max_comment_rate, 120) == $key) ? " SELECTED" : "") .">$value</OPTION>\n";
+ $output .= "<SELECT NAME=\"edit[max_comment_rate]\"$options6</SELECT><BR>\n";
+ $output .= "<I><SMALL>The maximum submission rate for comments. Its purpose is to stop potential abuse or denial of service attacks.</SMALL></I><P>\n";
+
+ return $output;
+}
+
+function settings_save($edit) {
+ global $conf;
+ if ($edit) {
+ db_query("DELETE FROM variable");
+ foreach ($edit as $name=>$value) db_query("INSERT INTO variable (name, value) VALUES ('". check_input($name) ."', '". check_input($value) ."')");
+ }
+ $conf = variable_init();
+ return "all settings have been saved.";
+}
+
+function settings_module($name, $module) {
+ global $settings;
+
+ if ($module["conf"]) {
+ $settings .= "<H3>". ucfirst($name) ." module</H3>\n";
+ $settings .= $module["conf"]();
+ $settings .= "<HR>\n";
+ }
+}
+
+function settings_overview() {
+ global $settings;
+
+ module_iterate("settings_module");
+
+ $output .= "<FORM ACTION=\"admin.php?mod=settings\" METHOD=\"post\">\n";
+ $output .= settings_conf();
+ $output .= $settings;
+ $output .= "<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Save settings\">\n";
+ $output .= "</FORM>\n";
+
+ return $output;
+}
+
+function settings_admin() {
+ global $edit, $op;
+
+ switch ($op) {
+ case "Save settings":
+ print status(settings_save($edit));
+ // fall through:
+ default;
+ print settings_overview();
+ }
+}
+
+?> \ No newline at end of file
diff --git a/modules/story.module b/modules/story.module
index a750beffc..1ab6f6da5 100644
--- a/modules/story.module
+++ b/modules/story.module
@@ -31,6 +31,10 @@ function story_timout_threshold($node, $default) {
return section_timout_threshold($node->section, $default);
}
+function story_status() {
+ return array(dumped, queued, posted);
+}
+
function story_find($keys) {
global $status, $user;
$find = array();
diff --git a/modules/story/story.module b/modules/story/story.module
index a750beffc..1ab6f6da5 100644
--- a/modules/story/story.module
+++ b/modules/story/story.module
@@ -31,6 +31,10 @@ function story_timout_threshold($node, $default) {
return section_timout_threshold($node->section, $default);
}
+function story_status() {
+ return array(dumped, queued, posted);
+}
+
function story_find($keys) {
global $status, $user;
$find = array();
diff --git a/updates/2.00-to-x.xx.sql b/updates/2.00-to-x.xx.sql
index 391d8af44..247aae9cf 100644
--- a/updates/2.00-to-x.xx.sql
+++ b/updates/2.00-to-x.xx.sql
@@ -1,4 +1,12 @@
-# 05/04/2001:
+# 07/04/2001:
+CREATE TABLE page (
+ lid int(10) unsigned DEFAULT '0' NOT NULL auto_increment,
+ nid int(10) unsigned DEFAULT '0' NOT NULL,
+ body text NOT NULL,
+ format tinyint(2) DEFAULT '0' NOT NULL,
+ PRIMARY KEY (lid)
+);
+
CREATE TABLE variable (
name varchar(32) DEFAULT '' NOT NULL,
value varchar(128) DEFAULT '' NOT NULL,