| version 1.7, 2002/03/29 19:45:45 |
version 1.8, 2002/04/13 22:49:49 |
|
|
| <?
|
<? |
| /*
|
/* |
| Module: WolBoard.php3
|
Module: WolBoard.php3 |
|
|
|
| Author: Martin Karas a.k.a. Wolcano
|
Author: Martin Karas a.k.a. Wolcano |
| Date: 14.03.2002
|
Date: 14.03.2002 |
| Mail: wolcano@pobox.sk
|
Mail: wolcano@pobox.sk |
| Version: v5.0
|
Version: v5.1 |
| License: not chosen yet - this file is strictly private,
|
License: not chosen yet - this file is strictly private, |
| you may not copy/change/distribute it without authors
|
you may not copy/change/distribute it without authors |
| explicit premission.
|
explicit premission. |
| Description: Simple message-board. Can store data in files or
|
Description: Simple message-board. Can store data in files or |
| PEAR-compliant DB (not fully implemented yet)
|
PEAR-compliant DB (not fully implemented yet) |
|
|
|
| TODO: (see TODO file)
|
TODO: (see TODO file) |
|
|
|
| External files specification:
|
External files specification: |
| $message_file :== (<message_line><eoln>)*
|
$message_file :== (<message_line><eoln>)* |
| <message_line> :== <unix_time>:<username>:<message> ||
|
<message_line> :== <unix_time>:<username>:<message> || |
| <unix_time>:<username>:<deleted_message>
|
<unix_time>:<username>:<deleted_message> |
| <deleted_message> :== *<message>
|
<deleted_message> :== *<message> |
|
|
|
| $user_file :== (<user_line><eoln>)*
|
$user_file :== (<user_line><eoln>)* |
| <user_line> :== <username>:<email>:<md5sum_of_password>
|
<user_line> :== <username>:<email>:<md5sum_of_password> |
|
|
|
| Database specification:
|
Database specification: |
| create table messages <unknown for now>
|
create table messages <unknown for now> |
|
|
|
| create table users <unknown>
|
create table users <unknown> |
|
|
|
|
|
|
| Input parameters:
|
Input parameters: |
| $pagesize - # of messages per page
|
$pagesize - # of messages per page |
| $page - #th page
|
$page - #th page |
| $autorefresh - refresh time (secs)
|
$autorefresh - refresh time (secs) |
| // $admin - user/message mantainance
|
// $admin - user/message mantainance |
| $style - message view style (0 = board, 1 = chat)
|
$style - message view style (0 = board, 1 = chat) |
| $time - message time index
|
$time - message time index |
| $nick - user nickname
|
$nick - user nickname |
| $pass - password
|
$pass - password |
| $message - text of the posted message
|
$message - text of the posted message |
| $header - shows only header
|
$header - shows only header |
| $body - show only body
|
$body - show only body |
| $bodyframe - target body frame
|
$bodyframe - target body frame |
| $headerframe - targer header frame
|
$headerframe - targer header frame |
| $disablepart - Wont show some parts of the whole document
|
$disablepart - Wont show some parts of the whole document |
| (0 - none, 1 - body, 2 - head, 3 - both)
|
(0 - none, 1 - body, 2 - head, 3 - both) |
| $setframes - 1 - create <framesset>
|
$setframes - 1 - create <framesset> |
| 0 - disable frames (?? :))
|
0 - disable frames (?? :)) |
| $frameset - are the frames set? :)
|
$frameset - are the frames set? :) |
|
|
$setframes - do we want to create framewires? |
| $createuser - (internal)
|
|
| $deleteok - (internal)
|
$createuser - (internal) |
| $newnick - (internal)
|
$deleteok - (internal) |
| $archive - archive file prefix
|
$newnick - (internal) |
| $archive_no - index of archived file
|
$archive - archive file prefix |
| $submit_type - submit button type
|
$archive_no - index of archived file |
|
|
$submit_type - submit button type |
| CHANGE LOG:
|
|
| * 5.0 - DB implementation finished (hopefully)
|
CHANGE LOG: |
| - now allowing some html tags (specified by (array) $allowed_tags)
|
* 5.1 - updated SQL queries |
| - no more dependent on external <framesets>! :) we do the dirty work
|
- sprtinf()-ed and quote()-ed all SQL queries |
| ourselves (try setting the setframes=1 GET parameter)
|
- some bug fixes |
| * 4.4.2 - 3/4 implementation DB done
|
* 5.0 - DB implementation finished (hopefully) |
| * 4.4 - DB/PEAR drafts
|
- now allowing some html tags (specified by (array) $allowed_tags) |
| - sources moved to CVS
|
- no more dependent on external <framesets>! :) we do the dirty work |
| * 4.3 - starting MySQL DB implementation
|
ourself (try setting the setframes=1 GET parameter) |
| * 4.2 - started documentation
|
* 4.4.2 - 3/4 implementation DB done |
| - removed autosubmit on nick change
|
* 4.4 - DB/PEAR drafts |
| - changed default autorefresh to 5 mins
|
- sources moved to CVS |
| *FIX* now rawurldecoding username (previously rawurlencoded)
|
* 4.3 - starting MySQL DB implementation |
| * 4.1 - undocumented :)
|
* 4.2 - started documentation |
| */
|
- removed autosubmit on nick change |
|
|
- changed default autorefresh to 5 mins |
|
|
*FIX* now rawurldecoding username (previously rawurlencoded) |
| // IMPORTANT CONSTANTS (change if needed)
|
* 4.1 - undocumented :) |
| $WB_version = "5.0";
|
*/ |
| $WB_name = "Wol's Message Board";
|
|
| $strip_slashes = 1;
|
|
| $DEFAULT_HEAD_FRAME = "";
|
// IMPORTANT CONSTANTS (change if needed) |
| $DEFAULT_BODY_FRAME = "";
|
$WB_version = "5.1"; |
| $use_virtual_delete = 1; //use delete flagging instead of real delete
|
$WB_name = "Wol's Message Board"; |
| $root_name = "root";
|
$strip_slashes = 0; |
| $root_md5_password = "896ae34257056a6edb7643e3db85bb21";
|
$DEFAULT_HEAD_FRAME = ""; |
|
|
$DEFAULT_BODY_FRAME = ""; |
| // Filesystem defaults
|
$use_virtual_delete = 1; //use delete flagging instead of real delete |
| $message_file = "board_messages.txt";
|
$root_name = "root"; |
| $user_file = "board_emails.txt";
|
$root_md5_password = "896ae34257056a6edb7643e3db85bb21"; |
| $move_old_mesages = 1;
|
|
| $old_messages_folder = "history/";
|
// Filesystem defaults |
| $hist_file_prefix = "board_hist_file_"; // used in REGEXPs! alphabeticals only
|
$message_file = "board_messages.txt"; |
| $max_msgs_in_one_file = 200;
|
$user_file = "board_emails.txt"; |
| $min_msgs_in_board = 50;
|
$move_old_mesages = 1; |
|
|
$old_messages_folder = "history/"; |
| // Database defaults
|
$hist_file_prefix = "board_hist_file_"; // used in REGEXPs! alphabeticals only |
| $use_db = 1;
|
$max_msgs_in_one_file = 200; |
| $db_message_table = "wolboard_messages";
|
$min_msgs_in_board = 50; |
| $db_user_table = "wolboard_users";
|
|
| //$db_host = "db.host.sk";
|
// Database defaults |
| $db_host = "localhost";
|
$use_db = 1; |
| $db_database = "syndrome";
|
$db_message_table = "wolboard_messages"; |
| //$db_user = "syndrome";
|
$db_user_table = "wolboard_users"; |
| $db_user = "";
|
//$db_host = "db.host.sk"; |
| //$db_pass = "kofola";
|
$db_host = "localhost"; |
| $db_pass = "";
|
$db_database = "syndrome"; |
|
|
$db_user = ""; |
| $allowed_tags = array(
|
$db_pass = ""; |
| "<b>", "</b>",
|
|
| "<i>", "</i>",
|
$allowed_tags = array( |
| "<u>", "</u>",
|
"<b>", "</b>", |
| "<del>", "</del>",
|
"<i>", "</i>", |
| "©"
|
"<u>", "</u>", |
| );
|
"<del>", "</del>", |
|
|
"©" |
|
|
); |
| // FUNCTIONS
|
|
|
|
|
| function good($a) {
|
// FUNCTIONS |
| return (isset($a)
|
|
| && (
|
function good($a) { |
| (is_string($a) && ($a != "")) ||
|
return (isset($a) |
| (!is_string($a) && ($a != 0))
|
&& ( |
| )
|
(is_string($a) && ($a != "")) || |
| );
|
(!is_string($a) && ($a != 0)) |
| }
|
) |
|
|
); |
| function link_replace($link, $paramname, $paramvalue) {
|
} // good($a) |
| $link = eregi_replace("&$", "", $link);
|
|
| $link = eregi_replace("&?$paramname=[^&]*", "", $link);
|
function link_replace($link, $paramname, $paramvalue) { |
| if ($paramvalue)
|
$link = eregi_replace("&$", "", $link); |
| $link .= "&$paramname=$paramvalue";
|
$link = eregi_replace("&?$paramname=[^&]*", "", $link); |
| return $link;
|
if ($paramvalue) |
| }
|
$link .= "&$paramname=$paramvalue"; |
|
|
return $link; |
| function show_array($a) {
|
} // link_replace($link, $paramname, $paramvalue) |
| echo "<table border=1>\n";
|
|
| $keys = array_keys($a);
|
function show_array($a) { |
|
|
echo "<table border=1>\n"; |
| for($i = 0; $i < sizeof($a); $i++) {
|
$keys = array_keys($a); |
| echo "<tr>\n";
|
|
| echo "<td>";
|
for($i = 0; $i < sizeof($a); $i++) { |
| echo $keys[$i]."</td>\n<td>";
|
echo "<tr>\n"; |
|
|
echo "<td>"; |
| if ((is_array($a[$keys[$i]])) && ($keys[$i] !== "GLOBALS")) {
|
echo $keys[$i] . "</td>\n<td>"; |
| show_array($a[$keys[$i]]);
|
|
| }
|
if ((is_array($a[$keys[$i]])) && ($keys[$i] !== "GLOBALS")) { |
| else {
|
show_array($a[$keys[$i]]); |
| echo $a[$keys[$i]];
|
} |
| };
|
else { |
| echo "</td>\n</tr>\n";
|
echo $a[$keys[$i]]; |
| }
|
}; |
| echo "</table>";
|
echo "</td>\n</tr>\n"; |
| }
|
} |
|
|
echo "</table>"; |
| function array_copy($a, $i, $n = "x") {
|
} // show_array($a) |
| if (($n == "x") || ($n > (sizeof($a) - $i)))
|
|
| $n = sizeof($a) - $i;
|
function array_copy($a, $i, $n = "x") { |
|
|
if (($n == "x") || ($n > (sizeof($a) - $i))) |
| for($j = 0; $j < $n; $j++) {
|
$n = sizeof($a) - $i; |
| $ret[$j] = $a[$j + $i];
|
|
| }
|
for($j = 0; $j < $n; $j++) { |
|
|
$ret[$j] = $a[$j + $i]; |
| return $ret;
|
} |
| }
|
|
|
|
return $ret; |
| function array_chunk($a, $n) {
|
} // array_copy($a, $i, $n = "x") |
| if (!is_array($a))
|
|
| return $a;
|
function array_chunk($a, $n) { |
| $splits = sizeof($a) / $n;
|
if (!is_array($a)) |
| for($i = 0; $i < $splits; $i++) {
|
return $a; |
| $ret[$i] = array_copy($a, $i*$n, $n);
|
$splits = sizeof($a) / $n; |
| }
|
for($i = 0; $i < $splits; $i++) { |
| return $ret;
|
$ret[$i] = array_copy($a, $i*$n, $n); |
| }
|
} |
|
|
return $ret; |
| function w_chk($n, $v) {
|
} // array_chunk($a, $n) |
| return ($v?"$n=$v&":"");
|
|
| }
|
function w_chk($n, $v) { |
|
|
return ($v ? "$n=$v&" : ""); |
| function create_link() {
|
} // w_chk($n, $v) |
| global $pagesize, $page, $autorefresh, $admin, $style,
|
|
| $time, $nick, $pass, $message, $createuser, $deleteok,
|
function create_link() { |
| $autorefresh, $disablepart, $frameset, $headframe,
|
global $pagesize, $page, $autorefresh, $admin, $style, |
| $bodyframe, $archive, $archive_no;
|
$time, $nick, $pass, $message, $createuser, $deleteok, |
| return eregi_replace("&$", "",
|
$autorefresh, $disablepart, $frameset, $headframe, |
| w_chk("nick", $nick).
|
$bodyframe, $archive, $archive_no; |
| w_chk("pagesize", $pagesize).
|
return eregi_replace("&$", "", |
| w_chk("page", $page).
|
w_chk("nick", $nick) . |
| // w_chk("time", $time).
|
w_chk("pagesize", $pagesize) . |
| // w_chk("pass", $pass).
|
w_chk("page", $page) . |
| // w_chk("message", $message).
|
// w_chk("time", $time) . |
| // w_chk("deleteok", $deleteok).
|
// w_chk("pass", $pass) . |
| // w_chk("createuser", $createuser).
|
// w_chk("message", $message) . |
| // w_chk("newnick", $newnick).
|
// w_chk("deleteok", $deleteok) . |
| w_chk("autorefresh", $autorefresh).
|
// w_chk("createuser", $createuser) . |
| w_chk("style", $style).
|
// w_chk("newnick", $newnick) . |
| w_chk("admin", $admin).
|
w_chk("autorefresh", $autorefresh) . |
| w_chk("disablepart", $disablepart).
|
w_chk("style", $style) . |
| w_chk("frameset", $frameset).
|
w_chk("admin", $admin) . |
| w_chk("headframe", $headframe).
|
w_chk("disablepart", $disablepart) . |
| w_chk("bodyframe", $bodyframe).
|
w_chk("frameset", $frameset) . |
| w_chk("archive", $archive).
|
w_chk("headframe", $headframe) . |
| w_chk("archive_no", $archive_no)
|
w_chk("bodyframe", $bodyframe) . |
| );
|
w_chk("archive", $archive) . |
| }
|
w_chk("archive_no", $archive_no) |
|
|
); |
| function wait_read_lock($f, $max_wait = 9999) {
|
} // create_link() |
| $start = time();
|
|
| while ((!flock($f, 1)) && ($start + $max_wait < time()))
|
function wait_read_lock($f, $max_wait = 9999) { |
| sleep(1);
|
$start = time(); |
| return ($start + $max_wait < time())?
|
while ((!flock($f, 1)) && ($start + $max_wait < time())) |
| 1:0;
|
sleep(1); |
| }
|
return ($start + $max_wait < time())? |
|
|
1:0; |
| function wait_write_lock($f, $max_wait = 9999) {
|
} // wait_read_lock($f, $max_wait = 9999) |
| $start = time();
|
|
| while ((!flock($f, 2)) && ($start + $max_wait < time()))
|
function wait_write_lock($f, $max_wait = 9999) { |
| sleep(1);
|
$start = time(); |
| }
|
while ((!flock($f, 2)) && ($start + $max_wait < time())) |
|
|
sleep(1); |
| function release_lock($f) {
|
} // wait_write_lock($f, $max_wait = 9999) |
| flock($f, 3);
|
|
| return 1;
|
function release_lock($f) { |
| }
|
flock($f, 3); |
|
|
return 1; |
| function show_options($optnames, $optvalues, $selected) {
|
} // release_lock($f) |
| if (!is_array($optvalues))
|
|
| return 0;
|
function show_options($optnames, $optvalues, $selected) { |
|
|
if (!is_array($optvalues)) |
| $found = 0;
|
return 0; |
| $ret = "";
|
|
| for($i = 0; $i < sizeof($optvalues); $i++) {
|
$found = 0; |
| $ret .= "<option";
|
$ret = ""; |
| if (good($optvalues[$i])) {
|
for($i = 0; $i < sizeof($optvalues); $i++) { |
| $ret .= " value=".$optvalues[$i];
|
$ret .= "<option"; |
| if ($optvalues[$i] == $selected) {
|
if (good($optvalues[$i])) { |
| $found++;
|
$ret .= " value=" . $optvalues[$i]; |
| $ret .= " selected";
|
if ($optvalues[$i] == $selected) { |
| }
|
$found++; |
| }
|
$ret .= " selected"; |
| $ret .= ">";
|
} |
| if (good($optnames[$i]))
|
} |
| $ret .= $optnames[$i];
|
$ret .= ">"; |
| $ret .= "</option>\n";
|
if (good($optnames[$i])) |
| }
|
$ret .= $optnames[$i]; |
| if ((!$found) && ($selected != ""))
|
$ret .= "</option>\n"; |
| $ret .= "<option value=$selected selected>Custom</option>\n";
|
} |
| echo $ret;
|
if ((!$found) && ($selected != "")) |
| }
|
$ret .= "<option value=$selected selected>Custom</option>\n"; |
|
|
echo $ret; |
| function get_user($str, $i = 0) {
|
} // show_options($optnames, $optvalues, $selected) |
| $tmp = strtok(trim($str), ":");
|
|
| if ($i)
|
function get_user($str, $i = 0) { |
| // (1) from $MESSAGE_FILE
|
$tmp = strtok(trim($str), ":"); |
| return strtok(":");
|
if ($i) |
| else
|
// (1) from $MESSAGE_FILE |
| // (0) from $USER_FILE
|
return strtok(":"); |
| return $tmp;
|
else |
| }
|
// (0) from $USER_FILE |
|
|
return $tmp; |
| function get_users($usr_file, $use_db = 0, $db_conn = 0) {
|
} // get_user($str, $i = 0) |
| if (!$use_db) {
|
|
| // Working with files
|
function get_users($usr_file, $use_db = 0, $db_conn = 0) { |
| $fp = fopen($usr_file, "r");
|
if (!$use_db) { |
| wait_read_lock($fp);
|
// Working with files |
| $ret = file($usr_file);
|
$fp = fopen($usr_file, "r"); |
| for($i = 0; $i < sizeof($ret); $i++) {
|
wait_read_lock($fp); |
| $ret[$i] = trim($ret[$i]);
|
$ret = file($usr_file); |
| $ret[$i] = get_user($ret[$i], 0);
|
for($i = 0; $i < sizeof($ret); $i++) { |
| }
|
$ret[$i] = trim($ret[$i]); |
| release_lock($fp);
|
$ret[$i] = get_user($ret[$i], 0); |
| return $ret;
|
} |
| }
|
release_lock($fp); |
| else {
|
return $ret; |
| // Working with DB
|
} |
| // $usr_file stores Table name
|
else { |
| if (!$db_conn)
|
// Working with DB |
| return false;
|
// $usr_file stores Table name |
|
|
if (!$db_conn) |
| $res = $db_conn->query("select nick from $usr_file");
|
return false; |
| $i = 0;
|
|
| while ($tmp = $res->fetchRow()) {
|
$sql = "SELECT nick FROM $usr_file"; |
| $ret[$i++] = $tmp["nick"];
|
$res = $db_conn->query($sql); |
| }
|
|
|
|
if (DB::isError($res)) |
| $db_conn->free;
|
return false; |
| return $ret;
|
|
| }
|
$i = 0; |
| }
|
while ($tmp = $res->fetchRow()) { |
|
|
$ret[$i++] = $tmp["nick"]; |
| function format_time($time, $style = 0) {
|
} |
| switch($style) {
|
|
| case 1:
|
$res->free(); |
| return date("H:i:s", $time);
|
return $ret; |
| default:
|
} |
| return date("H:i:s - d. M Y", $time);
|
} // get_users($usr_file, $use_db = 0, $db_conn = 0) |
| }
|
|
| }
|
function format_time($time, $style = 0) { |
|
|
switch($style) { |
| function get_time($str) {
|
case 1: |
| return strtok(trim($str), ":");
|
return date("H:i:s", $time); |
| }
|
default: |
|
|
return date("H:i:s - d. M Y", $time); |
| function get_pass($str) {
|
} |
| return rawurldecode(trim(strtr(strrchr($str, ":"), ":", ";")));
|
} // format_time($time, $style = 0) |
| }
|
|
|
|
function get_time($str) { |
| function get_email($str) {
|
return strtok(trim($str), ":"); |
| if (ereg("[^:]*:([^:]*):", $str, $regs))
|
} // get_time($str) |
| return $regs[1];
|
|
| else
|
function get_pass($str) { |
| return "";
|
return rawurldecode(trim(strtr(strrchr($str, ":"), ":", ";"))); |
| }
|
} // get_pass($str) |
|
|
|
| function write_mail($usr_file, $user, $mail = "", $pass = "", $use_db = 0, $db_conn) {
|
function get_email($str) { |
| $pass = md5(rawurlencode($pass));
|
if (ereg("[^:]*:([^:]*):", $str, $regs)) |
| if (!$use_db) {
|
return $regs[1]; |
| // Working with files
|
else |
| $fp = fopen($usr_file, "a");
|
return ""; |
| if (!wait_write_lock($fp))
|
} // get_email($str) |
| return false;
|
|
| fwrite($fp, strtr($user, ":", ";").":".strtr($mail, ":", ";").
|
function write_mail($usr_file, $user, $mail = "", $pass = "", $use_db = 0, $db_conn) { |
| ":".$pass."\n");
|
$pass = md5(rawurlencode($pass)); |
| release_lock($fp);
|
if (!$use_db) { |
| fclose($fp);
|
// Working with files |
| return true;
|
$fp = fopen($usr_file, "a"); |
| }
|
if (!wait_write_lock($fp)) |
| else {
|
return false; |
| // Working with DB
|
fwrite($fp, strtr($user, ":", ";") . ":" . strtr($mail, ":", ";") . |
| if (!$db_conn)
|
":" . $pass . "\n"); |
| return false;
|
release_lock($fp); |
|
|
fclose($fp); |
| $user = addslashes($user);
|
return true; |
| $mail = addslashes($mail);
|
} |
| $sql = "insert into $usr_file ".
|
else { |
| "(nick, email, pass) ".
|
// Working with DB |
| "values ".
|
if (!$db_conn) |
| "('$user', '$mail', '$pass')";
|
return false; |
| $res = $db_conn->query($sql);
|
|
| return (DB::isError($res));
|
$sql = sprintf("INSERT INTO %s (nick, email, pass) VALUES (%s, %s, %s)", |
| }
|
$usr_file, $db_conn->quote($user), |
| }
|
$db_conn->quote($mail), $db_conn->quote($pass)); |
|
|
|
| function change_mail($usr_file, $user, $newmail = "", $pass = "",
|
$res = $db_conn->query($sql); |
| $use_db = 0, $db_conn = 0) {
|
|
| function set_mail($usr_line, $newmail) {
|
return !(DB::isError($res)); |
| $ret = strtok($usr_line, ":");
|
} |
| strtok(":");
|
} // write_mail($usr_file, $user, $mail = "", $pass = "", $use_db = 0, $db_conn) |
| $ret .= $newmail.":".strtok(":");
|
|
| return $ret;
|
function change_mail($usr_file, $user, $newmail = "", $pass = "", |
| }
|
$use_db = 0, $db_conn = 0) { |
|
|
function set_mail($usr_line, $newmail) { |
| if (!$use_db) {
|
$ret = strtok($usr_line, ":"); |
| //check if valid data is sent
|
strtok(":"); |
| //we dont want to run for now
|
$ret .= $newmail . ":" . strtok(":"); |
| if (true)//!!!!!!!!
|
return $ret; |
| return 0;
|
} |
|
|
|
| // Using files
|
if (!$use_db) { |
| $fp = fopen($usr_file, "w+");
|
//check if valid data is sent |
| wait_write_lock($fp);
|
//we dont want to run for now |
| $tmp = files($usr_file);
|
if (true)//!!!!!!!! |
| $i = 0;
|
return 0; |
| $found = false;
|
|
| while (($i < length($tmp)) && (!$found)) {
|
// Using files |
| $u = get_user($tmp[$i]);
|
$fp = fopen($usr_file, "w+"); |
| if ($u == $user) {
|
wait_write_lock($fp); |
| $tmp[$i] = set_mail($tmp[$i], $newmail);
|
$tmp = files($usr_file); |
| $found = true;
|
$i = 0; |
| }
|
$found = false; |
| $i++;
|
while (($i < length($tmp)) && (!$found)) { |
| }
|
$u = get_user($tmp[$i]); |
|
|
if ($u == $user) { |
| if ($found) {
|
$tmp[$i] = set_mail($tmp[$i], $newmail); |
| fwrite($fp, $u);
|
$found = true; |
| release_lock($fp);
|
} |
| fclose($fp);
|
$i++; |
| return 1;
|
} |
| }
|
|
| else
|
if ($found) { |
| return 0;
|
fwrite($fp, $u); |
| }
|
release_lock($fp); |
| else {
|
fclose($fp); |
| // Using DB
|
return 1; |
| if (!$db_conn)
|
} |
| return false;
|
else |
|
|
return 0; |
| $sql = "update $usr_file set mail = '$newmail' ".
|
} |
| "where name = '$user' and pass = '$pass'";
|
else { |
| $res = $db_conn->query($sql);
|
// Using DB |
| if (DB::isError($res))
|
if (!$db_conn) |
| return false;
|
return false; |
| return 1;
|
|
| }
|
$sql = sprintf("UPDATE %s SET mail = %s WHERE name = %s AND pass = %s", |
| }
|
$usr_file, $db_conn->quote($newmail), |
|
|
$db_conn->quote($user), $db_conn->quote($pass)); |
| function delete_mail($usr_file, $user = "", $mail = "", $pass = "",
|
$res = $db_conn->query($sql); |
| $use_db = 0, $db_conn = 0) {
|
|
| if (!$use_db) {
|
return !(DB::isError($res)); |
| //!!!! TODO
|
} |
| // Use files
|
} |
| return 0;
|
|
| }
|
function delete_mail($usr_file, $user = "", $mail = "", $pass = "", |
| else {
|
$use_db = 0, $db_conn = 0) { |
| // Use DB
|
if (!$use_db) { |
| if (!$db_conn)
|
//!!!! TODO |
| return false;
|
// Use files |
|
|
return false; |
| $sql = "update $usr_file set mail = '' ".
|
} |
| "where name = '$user' and pass = '$pass'".
|
else { |
| "and mail = '$mail'";
|
// Use DB |
| $res = $db_conn->query($sql);
|
if (!$db_conn) |
| if (DB::isError($res))
|
return false; |
| return false;
|
|
|
|
$sql = sprintf("UPDATE %s SET mail = '' WHERE ". |
| return 0;
|
"name = %s AND pass = %s AND mail = %s", |
| }
|
$usr_file, $db_conn->quote($user), |
| }
|
$db_conn->quote($pass), $db_conn->quote($mail)); |
|
|
$res = $db_conn->query($sql); |
| function get_emails($usr_file, $use_db = 0, $db_conn = 0) {
|
|
| if (!$use_db) {
|
return !(DB::isError($res)); |
| // Use files
|
} |
| $fp = fopen($usr_file, "r");
|
} |
| wait_read_lock($fp);
|
|
| $f = file($usr_file);
|
function get_emails($usr_file, $use_db = 0, $db_conn = 0) { |
| for($i = 0; $i < sizeof($f); $i++)
|
if (!$use_db) { |
| $ret[get_user($f[$i], 0)] = get_email($f[$i]);
|
// Use files |
|
|
$fp = fopen($usr_file, "r"); |
| release_lock($fp);
|
wait_read_lock($fp); |
| return $ret;
|
$f = file($usr_file); |
| }
|
for($i = 0; $i < sizeof($f); $i++) |
| else {
|
$ret[get_user($f[$i], 0)] = get_email($f[$i]); |
| // Use DB
|
|
| if (!$db_conn)
|
release_lock($fp); |
| return false;
|
return $ret; |
|
|
} |
| $sql = "select nick, email from $usr_file";
|
else { |
| $res = $db_conn->query($sql);
|
// Use DB |
| if (DB::isError($res))
|
if (!$db_conn) |
| return false;
|
return false; |
| while ($row = $res->fetchRow()) {
|
|
| $rows[$row["nick"]] = $row["email"];
|
$sql = sprintf("SELECT nick, email FROM %s", $usr_file); |
| }
|
$res = $db_conn->query($sql); |
| return $rows;
|
if (DB::isError($res)) |
| }
|
return false; |
| }
|
|
|
|
while ($row = $res->fetchRow()) { |
| function read_messages($msg_file, $usr_file, $full = 0, $use_db = 0,
|
$rows[$row["nick"]] = $row["email"]; |
| $db_conn = 0) {
|
} |
| if (!$use_db) {
|
|
| $mails = get_emails($usr_file, 0);
|
$res->free(); |
| $mfp = fopen($msg_file, "r");
|
|
| wait_read_lock($mfp);
|
return $rows; |
| $f = file($msg_file);
|
} |
| $n = 0;
|
} // get_emails($usr_file, $use_db = 0, $db_conn = 0) |
| for ($i = 0; $i < sizeof($f); $i++) {
|
|
| if ($f[$i] != "") {
|
function read_messages($msg_file, $usr_file, $full = 0, $use_db = 0, |
| if ((!$full) && ereg("[^:]*:[^:]*:\*", $f[$i], $regs))
|
$db_conn = 0) { |
| continue;
|
if (!$use_db) { |
| $ret[$n]["time"] = strtok($f[$i], ":");
|
$mails = get_emails($usr_file, 0); |
| $ret[$n]["name"] = rawurldecode(strtok(":"));
|
$mfp = fopen($msg_file, "r"); |
| $ret[$n]["message"] = trim(rawurldecode(strtok(":")));
|
wait_read_lock($mfp); |
| $ret[$n]["email"] = $mails[$ret[$n]["name"]];
|
$f = file($msg_file); |
| $n++;
|
$n = 0; |
| }
|
for ($i = 0; $i < sizeof($f); $i++) { |
| }
|
if ($f[$i] != "") { |
| release_lock($mfp);
|
if ((!$full) && ereg("[^:]*:[^:]*:\*", $f[$i], $regs)) |
| return $ret;
|
continue; |
| }
|
$ret[$n]["time"] = strtok($f[$i], ":"); |
| else {
|
$ret[$n]["name"] = rawurldecode(strtok(":")); |
| // Use DB
|
$ret[$n]["message"] = trim(rawurldecode(strtok(":"))); |
| if (!$db_conn)
|
$ret[$n]["email"] = $mails[$ret[$n]["name"]]; |
| return false;
|
$n++; |
|
|
} |
| $sql = "select author_id, created AS time, text AS message from $msg_file";
|
} |
| if (!$full)
|
release_lock($mfp); |
| $sql .= " where flags = 0";
|
return $ret; |
|
|
} |
| $res = $db_conn->query($sql);
|
else { |
|
|
// Use DB |
| if (DB::isError($res))
|
if (!$db_conn) |
| return false;
|
return false; |
| $j = 0;
|
|
| while ($row = $res->fetchRow()) {
|
$sql = sprintf("SELECT author_id, created AS time, " . |
| $authors[$row["author_id"]][] = $j;
|
"text AS message FROM %s", $msg_file); |
| $t = $row["time"];
|
if (!$full) |
| /*
|
$sql .= " WHERE flags = 0"; |
| $time = unpack($row["time"],
|
|
| "a4year/a2month/a2day/a2hours/a2minutes/a2seconds");
|
$res = $db_conn->query($sql); |
| $row["time"] = mktime($time["seconds"],
|
if (DB::isError($res)) |
| $time["minutes"], $time["hours"],
|
return false; |
| $time["day"], $time["month"], $time["year"]);
|
|
| /*/
|
$j = 0; |
| $row["time"] = mktime(
|
while ($row = $res->fetchRow()) { |
| $row["time"][8] . $row["time"][9],
|
$authors[$row["author_id"]][] = $j; |
| $row["time"][10] . $row["time"][11],
|
$t = $row["time"]; |
| $row["time"][12] . $row["time"][13],
|
|
| $row["time"][4] . $row["time"][5],
|
$row["time"] = mktime( |
| $row["time"][6] . $row["time"][7],
|
$row["time"][8] . $row["time"][9], |
| $row["time"][0] . $row["time"][1] .
|
$row["time"][10] . $row["time"][11], |
| $row["time"][2] . $row["time"][3]
|
$row["time"][12] . $row["time"][13], |
| );
|
$row["time"][4] . $row["time"][5], |
| //*/
|
$row["time"][6] . $row["time"][7], |
| $row["message"] = rawurldecode($row["message"]);
|
$row["time"][0] . $row["time"][1] . |
| $messages[$j++] = $row;
|
$row["time"][2] . $row["time"][3] |
| }
|
); |
| $req->free;
|
|
|
|
$row["message"] = rawurldecode($row["message"]); |
| $sql = "select id, nick AS name, email from $usr_file ";
|
$messages[$j++] = $row; |
| if (is_array($authors))
|
} |
| $sql .= "where id = " . implode(array_keys($authors), "or id = ");
|
$res->free; |
|
|
|
| $res = $db_conn->query($sql);
|
$sql = sprintf("SELECT id, nick AS name, email FROM %s", $usr_file); |
|
|
if (is_array($authors)) { |
| if (DB::isError($res))
|
$sql .= " WHERE"; |
| return false;
|
$ids = array_keys($authors); |
|
|
for ($i = 0;;) { |
| while ($row = $res->fetchRow())
|
$sql .= " id = '" . $db_conn->quote($ids[$i]) . "'"; |
| for ($i = 0; $i < sizeof($authors[$row["id"]]); $i++) {
|
|
| $messages[$authors[$row["id"]][$i]]["name"] = rawurldecode($row["name"]);
|
if ($i < sizeof($ids)) |
| $messages[$authors[$row["id"]][$i]]["email"] = $row["email"];
|
break; |
| }
|
|
|
|
if ((++$i) < sizeof($ids)) |
| return $messages;
|
$sql .= " OR"; |
| }
|
} |
| }
|
} |
|
|
|
| function need_to_split($a, $max, $min) {
|
$res = $db_conn->query($sql); |
| if ((sizeof($a) - $max) <= $min)
|
|
| return false;
|
if (DB::isError($res)) |
| else
|
return false; |
| return true;
|
|
| }
|
while ($row = $res->fetchRow()) |
|
|
for ($i = 0; $i < sizeof($authors[$row["id"]]); $i++) { |
| function split_messages_to_more_files($msgs, $max_len, $min_len,
|
$messages[$authors[$row["id"]][$i]]["name"] = rawurldecode($row["name"]); |
| $hist_dir, $hist_file_prefix = "board_hist_file_", $index_style = 0) {
|
$messages[$authors[$row["id"]][$i]]["email"] = $row["email"]; |
| if (!need_to_split($msgs, $max_len, $min_len))
|
} |
| return $msgs;
|
|
| $full = array_chunk($msgs, $max_len);
|
$res->free(); |
|
|
|
| $d = opendir($hist_dir);
|
return $messages; |
| $i = -1;
|
} |
| $max_num = -1;
|
} |
| // looking for previous save of maximum index (and count of saves)
|
|
| while (($file = readdir($d)) !== false) {
|
function need_to_split($a, $max, $min) { |
| if (ereg("^$hist_file_prefix([0-9]*)", $file, $regs)) {
|
if ((sizeof($a) - $max) <= $min) |
| $i++;
|
return false; |
| if ($max_num < $regs[1])
|
else |
| $max_num = $regs[1];
|
return true; |
| }
|
} // need_to_split($a, $max, $min) |
| }
|
|
| closedir($d);
|
function split_messages_to_more_files($msgs, $max_len, $min_len, |
|
|
$hist_dir, $hist_file_prefix = "board_hist_file_", $index_style = 0) { |
| switch($index_style) {
|
if (!need_to_split($msgs, $max_len, $min_len)) |
| case "0":
|
return $msgs; |
| $new_index = $max_num + 1;
|
$full = array_chunk($msgs, $max_len); |
| break;
|
|
| case "1":
|
$d = opendir($hist_dir); |
| $new_index = ++$i;
|
$i = -1; |
| break;
|
$max_num = -1; |
| }
|
// looking for previous save of maximum index (and count of saves) |
|
|
while (($file = readdir($d)) !== false) { |
| for($i = 0; $i < (sizeof($full) - 1); $i++) {
|
if (ereg("^$hist_file_prefix([0-9]*)", $file, $regs)) { |
| $new_file = $hist_dir.$hist_file_prefix.($new_index + $i);
|
$i++; |
| $fp = fopen($new_file, "a");
|
if ($max_num < $regs[1]) |
| wait_write_lock($fp);
|
$max_num = $regs[1]; |
| fwrite($fp, implode($full[$i], ""));
|
} |
| release_lock($fp);
|
} |
| }
|
closedir($d); |
| $msgs = $full[sizeof($full) - 1];
|
|
|
|
switch($index_style) { |
| return $msgs;
|
case "0": |
| }
|
$new_index = $max_num + 1; |
|
|
break; |
| function validate_message($message, $allowed_tags) {
|
case "1": |
| $message = trim($message);
|
$new_index = ++$i; |
| //some fun :)
|
break; |
| $message = ereg_replace("ignor[^a-zA-Z]*", "igno-what? © Wol ", $message);
|
} |
| $message = rawurlencode(nl2br(htmlspecialchars($message)));
|
|
|
|
for($i = 0; $i < (sizeof($full) - 1); $i++) { |
| for ($i = 0; $i < sizeof($allowed_tags); $i++) {
|
$new_file = $hist_dir . $hist_file_prefix . ($new_index + $i); |
| $message = str_replace(
|
$fp = fopen($new_file, "a"); |
| rawurlencode(htmlspecialchars($allowed_tags[$i])),
|
wait_write_lock($fp); |
| $allowed_tags[$i],
|
fwrite($fp, implode($full[$i], "")); |
| $message
|
release_lock($fp); |
| );
|
} |
| }
|
$msgs = $full[sizeof($full) - 1]; |
|
|
|
| return $message;
|
return $msgs; |
| }
|
} |
|
|
|
| function write_message($msg_file, $usr_file, $user = "Anonym", $text = "<no message>",
|
function validate_message($message, $allowed_tags) { |
| $time = 0, $old_messages_folder, $max_msgs_in_one_file, $min_msgs_in_board,
|
$message = trim($message); |
| $hist_file_prefix, $allowed_tags, $use_db = 0, $db_conn = 0) {
|
//some fun :) |
|
|
$message = ereg_replace("ignor[^a-zA-Z]*", "igno-what? © Wol ", $message); |
| if (($time == 0) || !ereg("^[0-9]*$", $time))
|
$message = rawurlencode(nl2br(htmlspecialchars($message))); |
| $time = time();
|
|
| $text = validate_message($text, $allowed_tags);
|
for ($i = 0; $i < sizeof($allowed_tags); $i++) { |
|
|
$message = str_replace( |
| if (!$use_db) {
|
rawurlencode(htmlspecialchars($allowed_tags[$i])), |
| // Use files
|
$allowed_tags[$i], |
| $user = rawurlencode($user);
|
$message |
| if ($text[0] == '*') // this is used as the deleted flag prefix
|
); |
| $text = " ".$text;
|
} |
| $new_msg =
|
|
| "$time:$user:$text\n";
|
return $message; |
| $msgs = file($msg_file);
|
} // validate_message($message, $allowed_tags) |
| $msgs[] = $new_msg;
|
|
|
|
function write_message($msg_file, $usr_file, $user = "Anonym", $text = "<no message>", |
| if (need_to_split($msgs, $max_msgs_in_one_file,
|
$time = 0, $old_messages_folder, $max_msgs_in_one_file, $min_msgs_in_board, |
| $min_msgs_in_board)) {
|
$hist_file_prefix, $allowed_tags, $use_db = 0, $db_conn = 0) { |
| $fp = fopen($msg_file, "w");
|
|
| wait_write_lock($fp);
|
if (($time == 0) || !ereg("^[0-9]*$", $time)) |
| sort($msgs);
|
$time = time(); |
| $msgs = split_messages_to_more_files(
|
$text = validate_message($text, $allowed_tags); |
| $msgs,
|
|
| $max_msgs_in_one_file,
|
if (!$use_db) { |
| $min_msgs_in_board,
|
// Use files |
| $old_messages_folder,
|
$user = rawurlencode($user); |
| $hist_file_prefix,
|
if ($text[0] == '*') // this is used as the deleted flag prefix |
| 0
|
$text = " " . $text; |
| );
|
$new_msg = |
| $msgs = implode($msgs, "");
|
"$time:$user:$text\n"; |
| if (trim($msgs) == "")
|
$msgs = file($msg_file); |
| $msgs = "";
|
$msgs[] = $new_msg; |
| fwrite($fp, $msgs);
|
|
| }
|
if (need_to_split($msgs, $max_msgs_in_one_file, |
| else {
|
$min_msgs_in_board)) { |
| unset($msgs);
|
$fp = fopen($msg_file, "w"); |
| $fp = fopen($msg_file, "a");
|
wait_write_lock($fp); |
| wait_write_lock($fp);
|
sort($msgs); |
| fwrite($fp, $new_msg);
|
$msgs = split_messages_to_more_files( |
| }
|
$msgs, |
|
|
$max_msgs_in_one_file, |
| release_lock($fp);
|
$min_msgs_in_board, |
| fclose($fp);
|
$old_messages_folder, |
| return 1;
|
$hist_file_prefix, |
| }
|
0 |
| else {
|
); |
| // Use DB
|
$msgs = implode($msgs, ""); |
| // $msg_file stores Message Table name
|
if (trim($msgs) == "") |
| if (!$db_conn)
|
$msgs = ""; |
| return false;
|
fwrite($fp, $msgs); |
|
|
} |
| $user = addslashes($user);
|
else { |
| $text = addslashes($text);
|
unset($msgs); |
|
|
$fp = fopen($msg_file, "a"); |
| // get the authors id
|
wait_write_lock($fp); |
| $sql = "select id from $usr_file where nick='$user'";
|
fwrite($fp, $new_msg); |
| $res = $db_conn->query($sql);
|
} |
|
|
|
| if (DB::isError($res))
|
release_lock($fp); |
| return false;
|
fclose($fp); |
|
|
return 1; |
| $row = $res->fetchRow();
|
} |
| $author_id = $row["id"];
|
else { |
|
|
// Use DB |
| $sql = "insert into $msg_file" .
|
// $msg_file stores Message Table name |
| " (author_id, created, text) values " .
|
if (!$db_conn) |
| " ('$author_id', sysdate(), '$text')";
|
return false; |
| $res = $db_conn->query($sql);
|
|
|
|
// get the authors id |
| if (DB::isError($res))
|
$sql = sprintf("SELECT id FROM %s WHERE nick=%s", |
| return false;
|
$usr_file, $db_conn->quote($user)); |
|
|
$author_id = $db_conn->getOne($sql); |
| return true;
|
|
| }
|
if (DB::isError($author_id)) |
| }
|
return false; |
|
|
|
|
|
/* |
| function delete_message($msg_file, $usr_file, $user, $time, $pass,
|
$row = $res->fetchRow(); |
| $use_virtual_delete, $use_db = 0, $db_conn = 0) {
|
$res->free(); |
| if (!$use_db) {
|
$author_id = $row["id"]; |
| // Use files
|
*/ |
| $found = false;
|
|
| $i = 0;
|
$sql = sprintf("INSERT INTO %s (author_id, created, text) VALUES " . |
| $fp = fopen($usr_file, "r");
|
"(%s, sysdate(), %s)", |
| wait_read_lock($fp);
|
$msg_file, $db_conn->quote($author_id), $db_conn->quote($text)); |
| $p = file($usr_file);
|
$res = $db_conn->query($sql); |
| release_lock($fp);
|
|
| if ($user != "") {
|
return !(DB::isError($res)); |
| while ((!$found) && ($i < sizeof($p))) {
|
} |
| if ($user == get_user($p[$i], 0))
|
} |
| $found = true;
|
|
| $i++;
|
|
| };
|
function delete_message($msg_file, $usr_file, $user, $time, $pass, |
| }
|
$use_virtual_delete, $use_db = 0, $db_conn = 0) { |
| else
|
if (!$use_db) { |
| $found = true;
|
// Use files |
|
|
$found = false; |
| if (!$found)
|
$i = 0; |
| return 1;
|
$fp = fopen($usr_file, "r"); |
|
|
wait_read_lock($fp); |
| if (!(($user == "") && ($pass == "")))
|
$p = file($usr_file); |
| if (get_pass($p[--$i]) != md5($pass))
|
release_lock($fp); |
| return 2;
|
if ($user != "") { |
|
|
while ((!$found) && ($i < sizeof($p))) { |
| $fp = fopen($msg_file, "r");
|
if ($user == get_user($p[$i], 0)) |
| wait_read_lock($fp);
|
$found = true; |
| $f = file($msg_file);
|
$i++; |
| $found = false;
|
}; |
| $i = 0;
|
} |
| while (!$found && ($i < sizeof($f))) {
|
else |
| if (get_user($f[$i], 1) == $user && get_time($f[$i]) == $time)
|
$found = true; |
| $found = true;
|
|
| $i++;
|
if (!$found) |
| }
|
return 1; |
| if (!$found)
|
|
| return 3;
|
if (!(($user == "") && ($pass == ""))) |
| $i--;
|
if (get_pass($p[--$i]) != md5($pass)) |
|
|
return 2; |
| if ($use_virtual_delete) {
|
|
| // if already marked as deleted then delete it really
|
$fp = fopen($msg_file, "r"); |
| if (ereg("[^:]*:[^:]*:\*.*", $f[$i], $regs))
|
wait_read_lock($fp); |
| $f[$i] = $f[sizeof($f) - 1];
|
$f = file($msg_file); |
| // if not marked, mark it :)
|
$found = false; |
| else
|
$i = 0; |
| $f[$i] = ereg_replace("([^:]*:[^:]*:)(.*)", "\\1*\\2", $f[$i]);
|
while (!$found && ($i < sizeof($f))) { |
| }
|
if (get_user($f[$i], 1) == $user && get_time($f[$i]) == $time) |
| else {
|
$found = true; |
| if (sizeof($f) > 0) {
|
$i++; |
| $f[$i] = $f[sizeof($f) - 1];
|
} |
| }
|
if (!$found) |
| else
|
return 3; |
| $f = array();
|
$i--; |
| }
|
|
|
|
if ($use_virtual_delete) { |
| // we supppose the array to be sorted (sorting while insert)
|
// if already marked as deleted then delete it really |
| //sort($f);
|
if (ereg("[^:]*:[^:]*:\*.*", $f[$i], $regs)) |
|
|
$f[$i] = $f[sizeof($f) - 1]; |
| release_lock($fp);
|
// if not marked, mark it :) |
|
|
else |
| $fp = fopen($msg_file, "w");
|
$f[$i] = ereg_replace("([^:]*:[^:]*:)(.*)", "\\1*\\2", $f[$i]); |
| wait_write_lock($fp);
|
} |
| if (is_array($f))
|
else { |
| fwrite($fp, trim(implode($f, ""))."\n");
|
if (sizeof($f) > 0) { |
| else
|
$f[$i] = $f[sizeof($f) - 1]; |
| if (trim($f) != "")
|
} |
| fwrite($fp, trim($f)."\n");
|
else |
| release_lock($fp);
|
$f = array(); |
| fclose($fp);
|
} |
|
|
|
| return 0;
|
// we supppose the array to be sorted (sorting while insert) |
| }
|
//sort($f); |
| else {
|
|
| // Use DB
|
release_lock($fp); |
| if (!$db_conn)
|
|
| return false;
|
$fp = fopen($msg_file, "w"); |
|
|
wait_write_lock($fp); |
| $user = addslashes($user);
|
if (is_array($f)) |
| $pass = md5(addslashes($pass));
|
fwrite($fp, trim(implode($f, "")) . "\n"); |
| $time = date("YmdHis", $time);
|
else |
|
|
if (trim($f) != "") |
| $sql = "select id from $usr_file where " .
|
fwrite($fp, trim($f) . "\n"); |
| "nick = '$user' and pass = '$pass'";
|
release_lock($fp); |
| $res = $db_conn->query($sql);
|
fclose($fp); |
|
|
|
| if ((DB::isError($res)) || ($res->numRows() != 1))
|
return 0; |
| return 0;
|
} |
|
|
else { |
| $res->fetchInto($row);
|
// Use DB |
| $res->free;
|
if (!$db_conn) |
| $author_id = $row["id"];
|
return false; |
|
|
|
| switch($use_virtual_delete) {
|
$pass = md5($pass); |
| case true:
|
$time = date("YmdHis", $time); |
| $sql = "select id from $msg_file where flags=1 and author_id='".
|
|
| "$author_id' and created='$time'";
|
$sql = sprintf("SELECT id FROM %s WHERE nick=%s AND pass=%s", |
| $res = $db_conn->query($sql);
|
$usr_file, $db_conn->quote($user), $db_conn->quote($pass)); |
| if ($res->numRows() == 0) {
|
$author_id = $db_conn->getOne($sql); |
| $sql = "update $msg_file " .
|
|
| "set created='$time', deleted=sysdate(), flags=1 where ".
|
if (DB::isError($author_id)) |
| "author_id = '$author_id' and created='$time'";
|
return 2; // wrong password (or no such user) |
| $res->free;
|
|
| break;
|
switch($use_virtual_delete) { |
| }
|
case true: |
| // else continue to hard delete
|
$sql = sprintf("SELECT id FROM %s WHERE flags=1 AND author_id=%s " . |
| case false:
|
"AND created=%s", |
| $sql = "delete from $msg_file where ".
|
$msg_file, $db_conn->quote($author_id), $db_conn->quote($time)); |
| "author_id = '$author_id' and created='$time'";
|
$res = $db_conn->query($sql); |
| }
|
|
| echo "!@#$sql#@!";
|
if (DB::isError($res)) |
| $res = $db_conn->query($sql);
|
return false; |
| if (DB::isError($res))
|
|
| return false;
|
if ($res->numRows() == 0) { |
|
|
$res->free(); |
| $res->free;
|
$sql = sprintf("UPDATE %s SET created=%s, deleted=sysdate(), " . |
| return true;
|
"flags=1 WHERE author_id = %s AND created=%s", |
| }
|
$msg_file, $db_conn->quote($time), |
| }
|
$db_conn->quote($author_id), $db_conn->quote($time)); |
|
|
break; |
| function show_data_form($user_file, $self, $nick,
|
} |
| $style, $WB_name, $autorefresh, $pagesize, $use_db = 0, $db_conn = 0) {
|
// else continue to hard delete |
| global $headframe;
|
case false: |
| global $bodyframe;
|
$sql = sprintf("DELETE FROM %s WHERE author_id=%s AND created=%s", |
| global $show_body;
|
$msg_file, $db_conn->quote($author_id), $db_conn->quote($time)); |
| global $frameset;
|
} |
| ?>
|
//echo "!@#$sql#@!"; |
| <center>
|
$res = $db_conn->query($sql); |
| <font color="#C0C0C0" face="Courier" size=5><b><?echo $WB_name?></b></font><br>
|
|
| Current time is <?echo format_time(time())?>.
|
if (DB::isError($res)) |
| <br>
|
return 4; // unknown error (or No such message) |
| <table border=0>
|
else |
| <form name=data method=POST action="<?
|
return 0; |
| echo "$self?";
|
} |
| $tmp = link_replace(create_link(), "page", "");
|
} |
| if (good($frameset))
|
|
| $tmp = link_replace($tmp, "disablepart", "2");
|
function show_data_form($user_file, $self, $nick, |
| echo $tmp;
|
$style, $WB_name, $autorefresh, $pagesize, $use_db = 0, $db_conn = 0) { |
| ?>" target="<?echo $bodyframe?>">
|
// TODO !!!!!! |
| <tr>
|
global $headframe; |
| <td align=center valign=middle rowspan=3>
|
global $bodyframe; |
| <textarea name="message" cols=30 rows=5></textarea></td>
|
global $show_body; |
| <td align=center valign=middle><font face="Arial" color=#ffcc00 size=3>Nick</font></td>
|
global $frameset; |
| <td align=left valign=middle>
|
?> |
| <select name="nick">
|
<center> |
| <option value="Anonym"><choose></option>
|
<font color="#C0C0C0" face="Courier" size=5><b><?echo $WB_name?></b></font><br> |
| <?
|
Current time is <?echo format_time(time())?>. |
|
|
<br> |
| $nicknames = get_users($user_file, $use_db, $db_conn);
|
<table border=0> |
| sort($nicknames);
|
<form name=data method=POST action="<? |
| show_options(
|
echo "$self?"; |
| $nicknames,
|
$tmp = link_replace(create_link(), "page", ""); |
| $nicknames,
|
if (good($frameset)) |
| $nick);
|
$tmp = link_replace($tmp, "disablepart", "2"); |
| ?>
|
echo $tmp; |
| </select>
|
?>" target="<?echo $bodyframe?>"> |
| </td>
|
<tr> |
| </tr>
|
<td align=center valign=middle rowspan=3> |
| <tr>
|
<textarea name="message" cols=30 rows=5></textarea></td> |
| <td valign=middle align=center colspan=2 rowspan=1><input type=submit name=submit_type value="Send"<?
|
<td align=center valign=middle><font face="Arial" color=#ffcc00 size=3>Nick</font></td> |
| // TODO redo the JS inline function (it doesn't clear the memo now)
|
<td align=left valign=middle> |
| if (!$show_body)
|
<select name="nick"> |
| echo " onClick=\"javascript:submit();message.value=''\"";
|
<option value="Anonym"><choose></option> |
|
|
<? |
| ?>></td>
|
$nicknames = get_users($user_file, $use_db, $db_conn); |
| </tr>
|
|
| <tr></tr>
|
if (good($nicknames)) { |
| <tr>
|
sort($nicknames); |
| <td align=center>
|
show_options( |
| <a href="<?echo $self."?".link_replace(create_link(), "createuser", "1")?>">New nick</a>
|
$nicknames, |
| </td>
|
$nicknames, |
| <td align=right><?
|
$nick); |
| if (!$style)
|
} |
| echo "Board\t /</td><td><a href=$self?".
|
|
| link_replace(create_link(), "style", "1").">Chat</a></td>";
|
unset($nicknames); |
| else
|
?> |
| echo "<a href=$self?".link_replace(create_link(), "style", "0").
|
</select> |
| ">Board</a> /</td><td>Chat</td>";
|
</td> |
| ?>
|
</tr> |
| </tr>
|
<tr> |
| <tr>
|
<td valign=middle align=center colspan=2 rowspan=1><input type=submit name=submit_type value="Send"<? |
| <td align=center colspan=1>Autorefresh time:
|
// TODO redo the JS inline function (it doesn't clear the memo now) |
| <select name=autorefresh onChange="javascript:form.submit()">
|
if (!$show_body) |
| <?
|
echo " onClick=\"javascript:submit();message.value=''\""; |
| show_options(
|
|
| array("10 secs","30 secs", "1 min", "5 min", "10 min", "30 min", "infinite"),
|
?>></td> |
| array("10", "30", "60", "300", "600", "1800", "999999999"),
|
</tr> |
| $autorefresh);
|
<tr></tr> |
| ?>
|
<tr> |
| </select>
|
<td align=center> |
| </td><td align=center colspan=1>Page size:
|
<a href="<?echo $self . "?" . link_replace(create_link(), "createuser", "1")?>">New nick</a> |
| <select name=pagesize onChange="javascript:form.submit()">
|
</td> |
| <?
|
<td align=right><? |
| show_options(
|
if (!$style) |
| array("10", "25", "50", "100", "all"),
|
echo "Board\t /</td><td><a href=$self?" . |
| array("10", "25", "50", "100", "999999"),
|
link_replace(create_link(), "style", "1") . ">Chat</a></td>"; |
| $pagesize);
|
else |
| ?>
|
echo "<a href=$self?" . link_replace(create_link(), "style", "0") . |
| </select>
|
">Board</a> /</td><td>Chat</td>"; |
| </td>
|
?> |
| <td align=center>
|
</tr> |
| <a href="<?
|
<tr> |
| echo "$self?".link_replace(link_replace(create_link(), "setframes", 1), "disablepart", 3);
|
<td align=center colspan=1>Autorefresh time: |
| ?>" target=_top>Switch to frames</a>
|
<select name=autorefresh onChange="javascript:form.submit()"> |
| </td>
|
<? |
| </tr>
|
show_options( |
| </form>
|
array("10 secs", "30 secs", "1 min", "5 min", "10 min", "30 min", "infinite"), |
| </table>
|
array("10", "30", "60", "300", "600", "1800", "999999999"), |
| </center>
|
$autorefresh); |
| <?
|
?> |
| return 1;
|
</select> |
| }
|
</td><td align=center colspan=1>Page size: |
|
|
<select name=pagesize onChange="javascript:form.submit()"> |
| function show_page_walk($currentpage, $pagesize, $nummsgs, $firstmsg, $lastmsg) {
|
<? |
| global $self;
|
show_options( |
| $lastpage = ceil($nummsgs / $pagesize);
|
array("10", "25", "50", "100", "all"), |
|
|
array("10", "25", "50", "100", "999999"), |
| echo "<center>Messages ".($firstmsg + 1)."-".
|
$pagesize); |
| ($lastmsg + 1)." of $nummsgs<br>";
|
?> |
|
|
</select> |
| // REWIND to begin
|
</td> |
| if ($firstmsg == 0)
|
<td align=center> |
| echo "<<";
|
<a href="<? |
| else
|
echo "$self?" . link_replace(link_replace(create_link(), "setframes", 1), "disablepart", 3); |
| echo "<a href=$self?".link_replace(create_link(), "page", "1")."><<</a>";
|
?>" target=_top>Switch to frames</a> |
| echo " ";
|
</td> |
|
|
</tr> |
| // PREVIOUS PAGE
|
</form> |
| if ($firstmsg == 0)
|
</table> |
| echo "<";
|
</center> |
| else
|
<? |
| echo "<a href=$self?".link_replace(create_link(), "page", ($currentpage-1))."><</a>";
|
return 1; |
|
|
} |
| echo " ";
|
|
|
|
function show_page_walk($currentpage, $pagesize, $nummsgs, $firstmsg, $lastmsg) { |
| // OTHER PAGES
|
global $self; |
| for ($i = 1; $i <= $lastpage; $i++) {
|
$lastpage = ceil($nummsgs / $pagesize); |
| echo ($i == $currentpage)?"$i ":"<a href=$self?".
|
|
| link_replace(create_link(), "page", $i).">".$i."</a> ";
|
echo "<center>Messages " . ($firstmsg + 1) . "-" . |
| }
|
($lastmsg + 1) . " of $nummsgs<br>"; |
|
|
|
| // NEXT PAGE
|
// REWIND to begin |
| if ($lastmsg >= ($nummsgs - 1))
|
if ($firstmsg == 0) |
| echo ">";
|
echo "<<"; |
| else
|
else |
| echo "<a href=$self?".
|
echo "<a href=$self?" . link_replace(create_link(), "page", "1") . "><<</a>"; |
| link_replace(create_link(), "page", ($currentpage+1)).
|
echo " "; |
| ">></a>";
|
|
|
|
// PREVIOUS PAGE |
| echo " ";
|
if ($firstmsg == 0) |
|
|
echo "<"; |
| // REWIND PAGE to end
|
else |
| if ($lastmsg >= ($nummsgs - 1))
|
echo "<a href=$self?" . link_replace(create_link(), "page", ($currentpage-1)) . |
| echo ">>";
|
"><</a>"; |
| else
|
|
| echo "<a href=$self?".
|
echo " "; |
| link_replace(create_link(), "page", $lastpage).
|
|
| ">>></a>";
|
// OTHER PAGES |
|
|
for ($i = 1; $i <= $lastpage; $i++) { |
| echo "</center>\n";
|
echo ($i == $currentpage) ? "$i " : "<a href=$self?" . |
| }
|
link_replace(create_link(), "page", $i) . ">" . $i . "</a> "; |
|
|
} |
| function show_nonrefresh_head() {
|
|
| global $WB_name, $WB_version;
|
// NEXT PAGE |
| ?>
|
if ($lastmsg >= ($nummsgs - 1)) |
| <html>
|
echo ">"; |
| <head>
|
else |
| <title><?echo "$WB_name v$WB_version"?></title>
|
echo "<a href=$self?" . |
| </head>
|
link_replace(create_link(), "page", ($currentpage+1)) . |
| <body bgcolor="black" text="#C0C0C0" link="#888ff" alink="#888ff" vlink="#888ff">
|
">></a>"; |
| <?
|
|
| }
|
echo " "; |
|
|
|
| function show_delete_dialog($nick, $time) {
|
// REWIND PAGE to end |
| global $self; //!!!!!!!TODO
|
if ($lastmsg >= ($nummsgs - 1)) |
| echo "\n<center><font color=#C0C0C0 face=Courier size=4><b>Delete message</font></b><br><br>";
|
echo ">>"; |
| echo "\n<center>\n<form name=deletemessage method=post action=$self?".
|
else |
| link_replace(link_replace(create_link(), "deleteok", 1),
|
echo "<a href=$self?" . |
| "time", $time).">\n";
|
link_replace(create_link(), "page", $lastpage) . |
| echo "<table align=center>\n";
|
">>></a>"; |
| echo "\t\n<tr>\n\t\t<td>Nick:</td><td><input type=text value=\"$nick\" readonly></td></tr>\n";
|
|
| echo "\t\n<tr>\n\t\t<td>Message No.:</td><td><input type=text value=\"$time\" readonly></td></tr>\n";
|
echo "</center>\n"; |
| echo "\t\n<tr>\n\t\t<td>Password:</td><td><input type=password name=pass></td></tr>\n";
|
} // show_page_walk($currentpage, $pagesize, $nummsgs, $firstmsg, $lastmsg) |
| echo "\t\n<tr>\n\t\t<td colspan=2 align=center><input type=submit name=submit_type value=Delete>\n</td></tr>\n";
|
|
| echo "\t<tr><td align=center colspan=2><a href=$self?".
|
function show_nonrefresh_head() { |
| create_link().
|
global $WB_name, $WB_version; |
| ">cancel</a></td></tr>\n";
|
?> |
| echo "</table>\n";
|
<html> |
| echo "</form>\n</center>\n";
|
<head> |
| }
|
<title><?echo "$WB_name v$WB_version"?></title> |
|
|
</head> |
| function show_createuser_dialog($newnick, $email) {
|
<body bgcolor="black" text="#C0C0C0" link="#888ff" alink="#888ff" vlink="#888ff"> |
| global $self; // !!! TODO
|
<? |
| echo "\n<center><font color=#C0C0C0 face=Courier size=4><b>Create new user</font></b><br><br>";
|
} // show_nonrefresh_head() |
| echo "<table size=90% align=center>\n";
|
|
|
|
function show_delete_dialog($nick, $time) { |
| echo "\n<form name=createuser method=post action=$self?".
|
global $self; |
| link_replace(link_replace(
|
echo "\n<center><font color=#C0C0C0 face=Courier size=4><b>Delete message</font></b><br><br>"; |
| create_link(), "createok", 1), "createuser", 1
|
echo "\n<center>\n<form name=deletemessage method=post action=$self?" . |
| ).
|
link_replace(link_replace(create_link(), "deleteok", 1), |
| ">\n";
|
"time", $time) . ">\n"; |
| echo "\t<tr>\n\t\t<td>New Nick:</td><td><input type=text name=newnick maxsize=16 value=$newnick></td>\n";
|
echo "<table align=center>\n"; |
| echo "\t<tr><td>E-mail:</td><td><input type=text name=mail value=$email></td>\n\t</tr>\n";
|
echo "\t\n<tr>\n\t\t<td>Nick:</td><td><input type=text value=\"$nick\" readonly></td></tr>\n"; |
| echo "\t<tr><td>Password:</td><td><input type=password name=pass></td>\n\t</tr>\n";
|
echo "\t\n<tr>\n\t\t<td>Message No.:</td><td><input type=text value=\"$time\" readonly></td></tr>\n"; |
| echo "\t<tr><td align=center colspan=2><input type=submit name=submit_type value=Create></td>\n\t</tr>\n";
|
echo "\t\n<tr>\n\t\t<td>Password:</td><td><input type=password name=pass></td></tr>\n"; |
| echo "\t<tr><td align=center colspan=2><a href=$self?".
|
echo "\t\n<tr>\n\t\t<td colspan=2 align=center><input type=submit name=submit_type value=Delete>\n</td></tr>\n"; |
| link_replace(create_link(), "createuser", "").
|
echo "\t<tr><td align=center colspan=2><a href=$self?" . |
| ">cancel</a></td></tr>\n";
|
create_link() . |
| echo "</form>\n</table>\n</center>\n";
|
">cancel</a></td></tr>\n"; |
| }
|
echo "</table>\n"; |
|
|
echo "</form>\n</center>\n"; |
| function show_message($message, $style = 0) {
|
} // show_delete_dialog($nick, $time) |
| global $self; // !!!TODO
|
|
| switch($style) {
|
function show_createuser_dialog($newnick, $email) { |
| case 1:
|
global $self; |
| // Chat message line
|
echo "\n<center><font color=#C0C0C0 face=Courier size=4><b>Create new user</font></b><br><br>"; |
| echo "<tr><td valign=top>";
|
echo "<table size=90% align=center>\n"; |
| echo "<a href=$self?".
|
|
| link_replace(
|
echo "\n<form name=createuser method=post action=$self?" . |
| link_replace(
|
link_replace(link_replace( |
| create_link(), "time", $message["time"]
|
create_link(), "createok", 1), "createuser", 1 |
| ),
|
) . |
| "nick",
|
">\n"; |
| $message["name"]).
|
echo "\t<tr>\n\t\t<td>New Nick:</td><td><input type=text name=newnick maxsize=16 value=$newnick></td>\n"; |
| ">".format_time($message["time"], 1)."</a>_";
|
echo "\t<tr><td>E-mail:</td><td><input type=text name=mail value=$email></td>\n\t</tr>\n"; |
| if ($message["email"] != "")
|
echo "\t<tr><td>Password:</td><td><input type=password name=pass></td>\n\t</tr>\n"; |
| echo "<a href=\"mailto:".$message["email"].
|
echo "\t<tr><td align=center colspan=2><input type=submit name=submit_type value=Create></td>\n\t</tr>\n"; |
| "\""." class=\"amsg\">".
|
echo "\t<tr><td align=center colspan=2><a href=$self?" . |
| $message["name"]."</a>";
|
link_replace(create_link(), "createuser", "") . |
| else
|
">cancel</a></td></tr>\n"; |
| echo $message["name"];
|
echo "</form>\n</table>\n</center>\n"; |
| echo ":</td><td>".$message["message"];
|
} // show_createuser_dialog($newnick, $email) |
| echo "</td></tr>\n";
|
|
| break;
|
function show_message($message, $style = 0) { |
| default:
|
global $self; |
| // Board message style
|
switch($style) { |
| echo "<tr><td>";
|
case 1: |
| if ($message["email"] != "")
|
// Chat message line |
| echo "<a href=\"mailto:" .
|
echo "<tr><td valign=top class=time>"; |
| $message["email"] .
|
echo "<a href=$self?" . |
| "\" class=\"amsg\">\n";
|
link_replace( |
| echo "\t" . $message["name"] . "\n";
|
link_replace( |
| echo "</a>\n\t - ";
|
create_link(), "time", $message["time"] |
| echo "\t" . format_time($message["time"])."\n";
|
), |
| echo "\t\t - <a href=$self?" .
|
"nick", |
| link_replace(
|
$message["name"]) . |
| link_replace(
|
" class=time>" . format_time($message["time"], 1) . "</a></td>"; |
| create_link(), "time", $message["time"]
|
if ($message["email"] != "") |
| ),
|
echo "<td valign=top class=email><a href=\"mailto:" . $message["email"] . |
| "nick",
|
"\">" . $message["name"] . "</a>"; |
| $message["name"]).
|
else |
| ">delete</a>\n";
|
echo "<td valign=top class=nick>" . $message["name"]; |
| echo "<br>";
|
echo ":</td><td class=msg width=99%>" . $message["message"]; |
| echo "\t" . $message["message"] . "\n";
|
echo "</td></tr>\n"; |
| echo "</td></tr>\n";
|
break; |
| break;
|
default: |
| }
|
// Board message style |
| }
|
// remark this /* so the modes switch |
|
|
/* |
| function show_messages($message_file, $user_file, $page, $pagesize,
|
echo "<tr><td valign=top class=email>"; |
| $msg_style = 0, $show_all = 0, $use_db = 0, $db_conn = 0) {
|
if ($message["email"] != "") |
|
|
echo "<a href=\"mailto:" . $message["email"] . "\">\n"; |
| $messages = read_messages($message_file, $user_file, $show_all,
|
echo $message["name"] . "</a></td>\n"; |
| $use_db, $db_conn);
|
echo "\t<td class=time>" . format_time($message["time"]) . "</td>"; |
| if ($messages === false)
|
echo "<td><a href=$self?" . |
| $messages = array();
|
link_replace( |
| $n = sizeof($messages);
|
link_replace( |
| global $self;//!!!!! TODO
|
create_link(), "time", $message["time"] |
|
|
), |
| if ($n <= 0) {
|
"nick", |
| echo "<center><font color=red><b>No messages YeT !</b></font></center>";
|
$message["name"]) . |
| }
|
">delete</a>\n"; |
| else {
|
echo "</td></tr><tr><td colspan=3>"; |
| if ($page < 1)
|
echo "\t" . $message["message"] . "\n"; |
| $page = 1;
|
echo "</td></tr>\n"; |
| if ($page >= ($n / $pagesize))
|
/*/ |
| $page = ceil($n / $pagesize);
|
echo "<tr><td valign=top>"; |
|
|
if ($message["email"] != "") |
| $first = $pagesize * ($page - 1);
|
echo "<a href=\"mailto:" . $message["email"] . "\">\n"; |
| $last = ($pagesize * $page) - 1;
|
echo $message["name"] . "</a>\n"; |
|
|
echo "" . format_time($message["time"]) . ""; |
| if ($first < 0)
|
echo " <a href=$self?" . |
| $first = 0;
|
link_replace( |
| if ($first > $n)
|
link_replace( |
| $first = $n - 1;
|
create_link(), "time", $message["time"] |
|
|
), |
| if ($last > ($n - 1))
|
"nick", |
| $last = $n - 1;
|
$message["name"]) . |
| if ($last < $first)
|
">delete</a>\n"; |
| $last = $first;
|
echo "</td></tr><tr><td>"; |
|
|
echo "\t" . $message["message"] . "\n"; |
| show_page_walk($page, $pagesize, $n, $first, $last);
|
echo "</td></tr>\n"; |
|
|
|
| echo "<table width=100%>";
|
//*/ |
| for ($i = $first; $i <= $last; $i++) {
|
break; |
| show_message($messages[sizeof($messages) - 1 - $i], $msg_style);
|
} |
| }
|
} // show_message($message, $style = 0) |
| echo "</table>";
|
|
|
|
function show_messages($message_file, $user_file, $page, $pagesize, |
| show_page_walk($page, $pagesize, $n, $first, $last);
|
$msg_style = 0, $show_all = 0, $use_db = 0, $db_conn = 0) { |
| }
|
|
| }
|
$messages = read_messages($message_file, $user_file, $show_all, |
|
|
$use_db, $db_conn); |
|
|
|
| // ///////////////////////////////////////////////
|
if (!good($messages)) |
| // /////////// THIS IS MAIN FUNCTION /////////////
|
$messages = array(); |
| // ///////////////////////////////////////////////
|
$n = sizeof($messages); |
|
|
global $self; |
| // DEFAULTS
|
|
|
|
if ($n <= 0) { |
| if (!good($self))
|
echo "<center><font color=red><b>No messages YeT !</b></font></center>"; |
| $self = $PHP_SELF;
|
} |
|
|
else { |
| if ($strip_slashes) {
|
if ($page < 1) |
| $message = stripslashes($message);
|
$page = 1; |
| $nick = stripslashes($nick);
|
if ($page >= ($n / $pagesize)) |
| $pass = stripslashes($pass);
|
$page = ceil($n / $pagesize); |
| $header = stripslashes($header);
|
|
| $body = stripslashes($body);
|
$first = $pagesize * ($page - 1); |
| $bodyframe = stripslashes($bodyframe);
|
$last = ($pagesize * $page) - 1; |
| $headerframe = stripslashes($headerframe);
|
|
| $disablepart = stripslashes($disablepart);
|
if ($first < 0) |
| $newnick = stripslashes($newnick);
|
$first = 0; |
| }
|
if ($first > $n) |
|
|
$first = $n - 1; |
|
|
|
| if ($pagesize < 10)
|
if ($last > ($n - 1)) |
| $pagesize = 50;
|
$last = $n - 1; |
| settype($pagesize, integer);
|
if ($last < $first) |
|
|
$last = $first; |
| if ($autorefresh < 10)
|
|
| $autorefresh = 300;
|
show_page_walk($page, $pagesize, $n, $first, $last); |
| settype($autorefresh, integer);
|
|
|
|
echo "<table border=0>"; |
| if (!good($disablepart) || ($disablepart > 3) || ($disablepart < 0))
|
for ($i = $first; $i <= $last; $i++) { |
| $disablepart = 0;
|
show_message($messages[sizeof($messages) - 1 - $i], $msg_style); |
|
|
} |
| if (!good($headframe))
|
echo "</table>"; |
| $headframe = $DEFAULT_HEAD_FRAME;
|
|
|
|
show_page_walk($page, $pagesize, $n, $first, $last); |
| if (!good($bodyframe))
|
} |
| $bodyframe = $DEFAULT_BODY_FRAME;
|
} |
|
|
|
| switch ($disablepart) {
|
|
| case 0:
|
// /////////////////////////////////////////////// |
| $show_body = true;
|
// /////////// THIS IS MAIN FUNCTION ///////////// |
| $show_head = true;
|
// /////////////////////////////////////////////// |
| break;
|
|
| case 1:
|
// DEFAULTS |
| $show_head = true;
|
|
| $show_body = false;
|
if (!good($self)) |
| break;
|
$self = $PHP_SELF; |
| case 2:
|
|
| $show_head = false;
|
if ($strip_slashes) { |
| $show_body = true;
|
$message = stripslashes($message); |
| break;
|
$nick = stripslashes($nick); |
| case 3:
|
$pass = stripslashes($pass); |
| $show_body = false;
|
$header = stripslashes($header); |
| $show_head = false;
|
$body = stripslashes($body); |
| break;
|
$bodyframe = stripslashes($bodyframe); |
| }
|
$headerframe = stripslashes($headerframe); |
|
|
$disablepart = stripslashes($disablepart); |
| if (!good($page))
|
$newnick = stripslashes($newnick); |
| $page = 0;
|
} |
|
|
|
| if (!isset($nick) && good($newnick))
|
|
| $nick = $newnick;
|
settype($pagesize, integer); |
|
|
if ($pagesize < 10) |
| if (!good($mail))
|
$pagesize = 50; |
| $mail = get_email($nick);
|
|
|
|
settype($autorefresh, integer); |
| if (good($archive))
|
if ($autorefresh < 10) |
| $hist_file_prefix = $archive;
|
$autorefresh = 300; |
|
|
|
| if (good($archive_no) && !$use_db)
|
if (!good($disablepart) || ($disablepart > 3) || ($disablepart < 0)) |
| $message_file = $old_messages_folder.$hist_file_prefix.$archive_no;
|
$disablepart = 0; |
|
|
|
| //header ("Cache-Control: no-cache, must-revalidate");
|
if (!good($headframe)) |
| //header ("Pragma: no-cache");
|
$headframe = $DEFAULT_HEAD_FRAME; |
|
|
|
| if ($use_db) {
|
if (!good($bodyframe)) |
| require_once "DB.php";
|
$bodyframe = $DEFAULT_BODY_FRAME; |
| $db_handle = DB::connect("mysql://$db_user:$db_pass"
|
|
| . "@$db_host/$db_database");
|
switch ($disablepart) { |
| if (DB::isError($db_handle)) {
|
case 0: |
| echo $db_handle->getMessage();
|
$show_body = true; |
| $db_handle = 0;
|
$show_head = true; |
| //exit;
|
break; |
| }
|
case 1: |
| if ($use_db) {
|
$show_head = true; |
| $db_handle->setFetchMode(DB_FETCHMODE_ASSOC);
|
$show_body = false; |
| $user_file = $db_user_table;
|
break; |
| $message_file = $db_message_table;
|
case 2: |
| }
|
$show_head = false; |
| }
|
$show_body = true; |
| // CREATE NEW USER
|
break; |
| if ($createuser) {
|
case 3: |
| $mails = get_emails($user_file, $use_db, $db_handle);
|
$show_body = false; |
|
|
$show_head = false; |
| if (good($newnick) &&
|
break; |
| ($mails[$newnick] == "") &&
|
} |
| good($createok) &&
|
|
| ($createok == 1))
|
if (!good($page)) |
| write_mail($user_file, $newnick, $mail, $pass, $use_db, $db_handle);
|
$page = 0; |
| else {
|
|
| show_nonrefresh_head();
|
if (!isset($nick) && good($newnick)) |
| show_createuser_dialog($newnick, $email);
|
$nick = $newnick; |
| $show_head = false;
|
|
| $show_body = false;
|
if (!good($mail)) |
| }
|
$mail = get_email($nick); |
| }
|
|
|
|
if (good($archive)) |
| // WRITE MESSAGE TO DB
|
$hist_file_prefix = $archive; |
| if (good($message) && good($submit_type))
|
|
| write_message($message_file, $user_file, $nick, $message, 0,
|
if (good($archive_no) && !$use_db) |
| $old_messages_folder, $max_msgs_in_one_file, $min_msgs_in_board,
|
$message_file = $old_messages_folder . $hist_file_prefix . $archive_no; |
| $hist_file_prefix, $allowed_tags, $use_db, $db_handle);
|
|
|
|
//header ("Cache-Control: no-cache, must-revalidate"); |
| // DELETE MESSAGE FROM DB
|
//header ("Pragma: no-cache"); |
| if (good($time)) {
|
|
| if (good($deleteok) && ($deleteok == 1)){
|
if ($use_db) { |
| switch(delete_message($message_file, $user_file, $nick,
|
require_once "DB.php"; |
| $time, $pass, $use_virtual_delete, $use_db, $db_handle)) {
|
|
| // TOTO ESTE DOROBIT - SPRAVANIE SA
|
$db_handle = DB::connect("mysql://$db_user:$db_pass" |
| // SKRIPTU KED NASTANU PROBLEMY PRI DELETOVANI SPRAVY
|
. "@$db_host/$db_database"); |
| case 0: // All OK
|
if (DB::isError($db_handle)) { |
| // echo "<center>Message deleted succesfully<br></center>\n";
|
echo $db_handle->getMessage(); |
| break;
|
$db_handle = 0; |
| case 1: // No such user
|
$use_db = 0; |
| // echo "<center>Error while deleting: There is no such user!<br></center>\n";
|
//exit; |
| break;
|
} |
| case 2: // Wrong password
|
if ($use_db) { |
| // echo "<center>Error while deleting: Wrong password!<br></center>\n";
|
$db_handle->setFetchMode(DB_FETCHMODE_ASSOC); |
| break;
|
$user_file = $db_user_table; |
| case 3: // No such message
|
$message_file = $db_message_table; |
| // echo "<center>Error while deleting: No such message!<br></center>\n";
|
} |
| break;
|
} |
| default:// Unknown error
|
// CREATE NEW USER |
| // echo "<center>Fatal Error while deleting: unknown error code!</center><br>\n";
|
if ($createuser) { |
| break;
|
$mails = get_emails($user_file, $use_db, $db_handle); |
| }
|
if ((!($mails === false)) && |
| } else {
|
good($newnick) && |
| show_nonrefresh_head();
|
($mails[$newnick] == "") && |
| show_delete_dialog($nick, $time);
|
good($createok) && |
| $show_body = false;
|
($createok == 1)) { |
| $show_head = false;
|
if (write_mail($user_file, $newnick, $mail, $pass, $use_db, $db_handle)) |
| }
|
; // something failed, ignoring for now |
| }
|
} |
|
|
else { |
| // check for superuser view
|
show_nonrefresh_head(); |
| if (($nick == $root_name) && (md5($pass) == $root_md5_password))
|
show_createuser_dialog($newnick, $email); |
| $superuser = 1;
|
$show_head = false; |
| else
|
$show_body = false; |
| $superuser = 0;
|
} |
|
|
} |
| // We don't want to show body, when other form is shown
|
|
|
|
// WRITE MESSAGE TO DB |
| ?>
|
if (good($message) && good($submit_type)) { |
| <html>
|
if (write_message($message_file, $user_file, $nick, $message, 0, |
| <head>
|
$old_messages_folder, $max_msgs_in_one_file, $min_msgs_in_board, |
| <title><?echo "$WB_name v$WB_version"?></title>
|
$hist_file_prefix, $allowed_tags, $use_db, $db_handle)) |
| <?
|
; // something failed, ignoring for now |
| /*
|
} |
| If set, do nothing, just create frames and recursively call self
|
|
| */
|
// DELETE MESSAGE FROM DB |
| if (good($setframes)) {
|
if (good($time)) { |
| $frmlnk =
|
if (good($deleteok) && ($deleteok == 1)){ |
| link_replace(
|
switch(delete_message($message_file, $user_file, $nick, |
| link_replace(
|
$time, $pass, $use_virtual_delete, $use_db, $db_handle)) { |
| link_replace(create_link(), "frameset", 1),
|
case 0: // All OK |
| "bodyframe",
|
// echo "<center>Message deleted succesfully<br></center>\n"; |
| "bodyframe"),
|
break; |
| "headframe",
|
case 1: // No such user |
| "headframe"
|
// echo "<center>Error while deleting: There is no such user!<br></center>\n"; |
| );
|
break; |
| echo "<frameset rows=\"230,*\" framespacing=0 cols=*>\n";
|
case 2: // Wrong password |
| echo "<frame name=headframe src=\"$self?" .
|
// echo "<center>Error while deleting: Wrong password!<br></center>\n"; |
| link_replace($frmlnk, "disablepart", 1) .
|
break; |
| "\">\n";
|
case 3: // No such message |
| echo "<frame name=headframe src=\"$self?" .
|
// echo "<center>Error while deleting: No such message!<br></center>\n"; |
| link_replace($frmlnk, "disablepart", 2) .
|
break; |
| "\" scrolling=AUTO>\n";
|
default:// Unknown error |
| echo "</frameset>\n";
|
// echo "<center>Fatal Error while deleting: unknown error code!</center><br>\n"; |
| echo "</html>";
|
break; |
| $show_body = false;
|
} |
| $show_head = false;
|
} else { |
| }
|
show_nonrefresh_head(); |
|
|
show_delete_dialog($nick, $time); |
| if ($show_head) {
|
$show_body = false; |
| ?>
|
$show_head = false; |
| </head>
|
} |
| <body bgcolor=black text=#C0C0C0 link=#888ff alink=#888ff vlink=#888ff>
|
} |
| <?
|
|
| show_data_form($user_file, $self, $nick, $style, $WB_name,
|
// check for superuser view |
| $autorefresh, $pagesize, $use_db, $db_handle);
|
if (($nick == $root_name) && (md5($pass) == $root_md5_password)) |
| }
|
$superuser = 1; |
|
|
else |
| if ($show_body) {
|
$superuser = 0; |
| echo "<meta HTTP-EQUIV=\"Refresh\" CONTENT=\"$autorefresh URL=$self?".
|
|
| create_link()."\">\n";
|
// We don't want to show body, when other form is shown |
| ?>
|
|
| </head>
|
?> |
| <body bgcolor=black text=#C0C0C0 link=#888ff alink=#888ff vlink=#888ff>
|
<html> |
| <?
|
<head> |
| show_messages($message_file, $user_file, $page, $pagesize,
|
<title><?echo "$WB_name v$WB_version"?></title> |
| $style, $superuser, $use_db, $db_handle);
|
<? |
| }
|
/* |
|
|
If set, do nothing, just create frames and recursively call self |
| if ($use_db && $db_handle) {
|
*/ |
| $db_handle->disconnect();
|
if (good($setframes)) { |
| }
|
$frmlnk = |
| ?>
|
link_replace( |
| </body>
|
link_replace( |
| </html>
|
link_replace(create_link(), "frameset", 1), |
| |
"bodyframe", |
| |
"bodyframe"), |
| |
"headframe", |
| |
"headframe" |
| |
); |
| |
echo "<frameset rows=\"230,*\" framespacing=0 cols=*>\n"; |
| |
echo "<frame name=headframe src=\"$self?" . |
| |
link_replace($frmlnk, "disablepart", 1) . |
| |
"\">\n"; |
| |
echo "<frame name=bodyframe src=\"$self?" . |
| |
link_replace($frmlnk, "disablepart", 2) . |
| |
"\" scrolling=AUTO>\n"; |
| |
echo "</frameset>\n"; |
| |
echo "</html>"; |
| |
$show_body = false; |
| |
$show_head = false; |
| |
} |
| |
|
| |
if ($show_head) { |
| |
?> |
| |
</head> |
| |
<body bgcolor=black text=#C0C0C0 link=#888ff alink=#888ff vlink=#888ff> |
| |
<? |
| |
show_data_form($user_file, $self, $nick, $style, $WB_name, |
| |
$autorefresh, $pagesize, $use_db, $db_handle); |
| |
} |
| |
|
| |
if ($show_body) { |
| |
echo "<meta HTTP-EQUIV=\"Refresh\" CONTENT=\"$autorefresh URL=$self?" . |
| |
create_link() . "\">\n"; |
| |
?> |
| |
</head> |
| |
<body bgcolor=black text=#C0C0C0 link=#888ff alink=#888ff vlink=#888ff> |
| |
<? |
| |
show_messages($message_file, $user_file, $page, $pagesize, |
| |
$style, $superuser, $use_db, $db_handle); |
| |
} |
| |
|
| |
if ($use_db && $db_handle) { |
| |
$db_handle->disconnect(); |
| |
} |
| |
?> |
| |
</body> |
| |
</html> |