- 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
3-00
Dries Buytaert 2001-04-07 15:02:28 +00:00
parent 8213f5b262
commit 38806b4a39
14 changed files with 347 additions and 37 deletions

View File

@ -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>

View File

@ -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,

View File

@ -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");

View File

@ -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) {

View File

@ -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) {

View File

@ -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) {

View File

@ -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":

View File

@ -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":

83
modules/page.module Normal file
View File

@ -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();
}
}
?>

83
modules/page/page.module Normal file
View File

@ -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();
}
}
?>

115
modules/settings.module Normal file
View File

@ -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();
}
}
?>

View File

@ -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();

View File

@ -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();

View File

@ -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,