function display_date_time($timestamp = 0)
{
return date("Y-m-d H:i:s", $timestamp);
}
function new_msg($from, $to, $content)
{
$content = mysql_escape_string($content);
$sql = sprintf("INSERT INTO messages (sender, receiver, added, msg, msg_parsed, inverted_added) VALUES (%u, %u, NOW(), '%s', '%s', 4294967295-UNIX_TIMESTAMP(NOW()))", $from, $to, $content, format_comment($content));
do_mysql_query($sql) or stderr( _("Error"), "Query failed");
}
$smilies = array(
":-)" => "smile1.gif",
":smile:" => "smile2.gif",
":-D" => "grin.gif",
":lol:" => "laugh.gif",
":w00t:" => "w00t.gif",
":-P" => "tongue.gif",
";-)" => "wink.gif",
":-|" => "noexpression.gif",
":-/" => "confused.gif",
":-(" => "sad.gif",
":'-(" => "cry.gif",
":weep:" => "weep.gif",
":-O" => "ohmy.gif",
":o)" => "clown.gif",
"8-)" => "cool1.gif",
"|-)" => "sleeping.gif",
":innocent:" => "innocent.gif",
":whistle:" => "whistle.gif",
":unsure:" => "unsure.gif",
":closedeyes:" => "closedeyes.gif",
":cool:" => "cool2.gif",
":fun:" => "fun.gif",
":thumbsup:" => "thumbsup.gif",
":thumbsdown:" => "thumbsdown.gif",
":blush:" => "blush.gif",
":unsure:" => "unsure.gif",
":yes:" => "yes.gif",
":no:" => "no.gif",
":love:" => "love.gif",
":?:" => "question.gif",
":!:" => "excl.gif",
":idea:" => "idea.gif",
":arrow:" => "arrow.gif",
":arrow2:" => "arrow2.gif",
":hmm:" => "hmm.gif",
":hmmm:" => "hmmm.gif",
":huh:" => "huh.gif",
":geek:" => "geek.gif",
":look:" => "look.gif",
":rolleyes:" => "rolleyes.gif",
":kiss:" => "kiss.gif",
":shifty:" => "shifty.gif",
":blink:" => "blink.gif",
":smartass:" => "smartass.gif",
":sick:" => "sick.gif",
":crazy:" => "crazy.gif",
":wacko:" => "wacko.gif",
":alien:" => "alien.gif",
":wizard:" => "wizard.gif",
":wave:" => "wave.gif",
":wavecry:" => "wavecry.gif",
":baby:" => "baby.gif",
":angry:" => "angry.gif",
":ras:" => "ras.gif",
":sly:" => "sly.gif",
":devil:" => "devil.gif",
":evil:" => "evil.gif",
":evilmad:" => "evilmad.gif",
":sneaky:" => "sneaky.gif",
":axe:" => "axe.gif",
":slap:" => "slap.gif",
":wall:" => "wall.gif",
":rant:" => "rant.gif",
":jump:" => "jump.gif",
":yucky:" => "yucky.gif",
":nugget:" => "nugget.gif",
":smart:" => "smart.gif",
":shutup:" => "shutup.gif",
":shutup2:" => "shutup2.gif",
":crockett:" => "crockett.gif",
":zorro:" => "zorro.gif",
":snap:" => "snap.gif",
":beer:" => "beer.gif",
":beer2:" => "beer2.gif",
":drunk:" => "drunk.gif",
":strongbench:" => "strongbench.gif",
":weakbench:" => "weakbench.gif",
":dumbells:" => "dumbells.gif",
":music:" => "music.gif",
":stupid:" => "stupid.gif",
":dots:" => "dots.gif",
":offtopic:" => "offtopic.gif",
":spam:" => "spam.gif",
":oops:" => "oops.gif",
":lttd:" => "lttd.gif",
":please:" => "please.gif",
":sorry:" => "sorry.gif",
":hi:" => "hi.gif",
":yay:" => "yay.gif",
":cake:" => "cake.gif",
":hbd:" => "hbd.gif",
":band:" => "band.gif",
":punk:" => "punk.gif",
":rofl:" => "rofl.gif",
":bounce:" => "bounce.gif",
":mbounce:" => "mbounce.gif",
":thankyou:" => "thankyou.gif",
":gathering:" => "gathering.gif",
":hang:" => "hang.gif",
":chop:" => "chop.gif",
":rip:" => "rip.gif",
":whip:" => "whip.gif",
":judge:" => "judge.gif",
":chair:" => "chair.gif",
":tease:" => "tease.gif",
":box:" => "box.gif",
":boxing:" => "boxing.gif",
":guns:" => "guns.gif",
":shoot:" => "shoot.gif",
":shoot2:" => "shoot2.gif",
":flowers:" => "flowers.gif",
":wub:" => "wub.gif",
":lovers:" => "lovers.gif",
":kissing:" => "kissing.gif",
":kissing2:" => "kissing2.gif",
":console:" => "console.gif",
":group:" => "group.gif",
":hump:" => "hump.gif",
":hooray:" => "hooray.gif",
":happy2:" => "happy2.gif",
":clap:" => "clap.gif",
":clap2:" => "clap2.gif",
":weirdo:" => "weirdo.gif",
":yawn:" => "yawn.gif",
":bow:" => "bow.gif",
":dawgie:" => "dawgie.gif",
":cylon:" => "cylon.gif",
":book:" => "book.gif",
":fish:" => "fish.gif",
":mama:" => "mama.gif",
":pepsi:" => "pepsi.gif",
":medieval:" => "medieval.gif",
":rambo:" => "rambo.gif",
":ninja:" => "ninja.gif",
":hannibal:" => "hannibal.gif",
":party:" => "party.gif",
":snorkle:" => "snorkle.gif",
":evo:" => "evo.gif",
":king:" => "king.gif",
":chef:" => "chef.gif",
":mario:" => "mario.gif",
":pope:" => "pope.gif",
":fez:" => "fez.gif",
":cap:" => "cap.gif",
":cowboy:" => "cowboy.gif",
":pirate:" => "pirate.gif",
":pirate2:" => "pirate2.gif",
":rock:" => "rock.gif",
":cigar:" => "cigar.gif",
":icecream:" => "icecream.gif",
":oldtimer:" => "oldtimer.gif",
":trampoline:" => "trampoline.gif",
":banana:" => "bananadance.gif",
":smurf:" => "smurf.gif",
":yikes:" => "yikes.gif",
":osama:" => "osama.gif",
":saddam:" => "saddam.gif",
":santa:" => "santa.gif",
":indian:" => "indian.gif",
":pimp:" => "pimp.gif",
":nuke:" => "nuke.gif",
":jacko:" => "jacko.gif",
":ike:" => "ike.gif",
":greedy:" => "greedy.gif",
":super:" => "super.gif",
":wolverine:" => "wolverine.gif",
":spidey:" => "spidey.gif",
":spider:" => "spider.gif",
":bandana:" => "bandana.gif",
":construction:" => "construction.gif",
":sheep:" => "sheep.gif",
":police:" => "police.gif",
":detective:" => "detective.gif",
":bike:" => "bike.gif",
":fishing:" => "fishing.gif",
":clover:" => "clover.gif",
":horse:" => "horse.gif",
":shit:" => "shit.gif",
":soldiers:" => "soldiers.gif",
);
$privatesmilies = array(
":)" => "smile1.gif",
// ";)" => "wink.gif",
":wink:" => "wink.gif",
":D" => "grin.gif",
":P" => "tongue.gif",
":(" => "sad.gif",
":'(" => "cry.gif",
":|" => "noexpression.gif",
// "8)" => "cool1.gif", we don't want this as a smilie...
":Boozer:" => "alcoholic.gif",
":deadhorse:" => "deadhorse.gif",
":spank:" => "spank.gif",
":yoji:" => "yoji.gif",
":locked:" => "locked.gif",
":grrr:" => "angry.gif", // legacy
"O:-" => "innocent.gif", // legacy
":sleeping:" => "sleeping.gif", // legacy
"-_-" => "unsure.gif", // legacy
":clown:" => "clown.gif",
":mml:" => "mml.gif",
":rtf:" => "rtf.gif",
":morepics:" => "morepics.gif",
":rb:" => "rb.gif",
":rblocked:" => "rblocked.gif",
":maxlocked:" => "maxlocked.gif",
":hslocked:" => "hslocked.gif",
);
// Set this to the line break character sequence of your system
$linebreak = "\r\n";
function get_row_count($table, $suffix = "")
{
if ($suffix)
$suffix = ' '.$suffix;
($r = do_mysql_query("SELECT COUNT(*) FROM $table$suffix")) or die(mysql_error());
($a = mysql_fetch_row($r)) or die(mysql_error());
return $a[0];
}
function stdmsg($heading, $text)
{
print("
\n");
if ($heading)
print("$heading\n");
print(" |
\n");
}
function stderr($heading, $text)
{
stdhead();
stdmsg($heading, $text);
stdfoot();
die;
}
function sqlerr($file = '', $line = '')
{
print("" .
"SQL Error\n" .
"" . mysql_error() . ($file != '' && $line != '' ? "in $file, line $line " : "") . " |
");
die;
}
// Returns the current time in GMT in MySQL compatible format.
function get_date_time($timestamp = 0)
{
if ($timestamp > 0)
return date("Y-m-d H:i:s", $timestamp);
else
return gmdate("Y-m-d H:i:s");
}
function encodehtml($s, $linebreaks = true)
{
$s = htmlentities($s);
if ($linebreaks)
$s = nl2br($s);
return $s;
}
function get_dt_num()
{
return gmdate("YmdHis");
}
function format_urls($s)
{
return preg_replace(
"/(\A|[^=\]'\"a-zA-Z0-9])((http|ftp|https|ftps|irc):\/\/brokenstones[^()<>\s]+)/i",
"\\1\\2", $s);
}
/*
// Removed this fn, I've decided we should drop the redir script...
// it's pretty useless since ppl can still link to pics...
// -Rb
function format_local_urls($s)
{
return preg_replace(
"/(\s]*))>([^<]+)<\/a>/i",
"\\8", $s);
}
*/
//Finds last occurrence of needle in haystack
//in PHP5 use strripos() instead of this
function _strlastpos ($haystack, $needle, $offset = 0)
{
$addLen = strlen ($needle);
$endPos = $offset - $addLen;
while (true)
{
if (($newPos = strpos ($haystack, $needle, $endPos + $addLen)) === false) break;
$endPos = $newPos;
}
return ($endPos >= 0) ? $endPos : false;
}
function format_quotes($s)
{
while ($old_s != $s)
{
$old_s = $s;
//find first occurrence of [/quote]
$close = strpos($s, "[/quote]");
if ($close === false)
return $s;
//find last [quote] before first [/quote]
//note that there is no check for correct syntax
$open = _strlastpos(substr($s,0,$close), "[quote");
if ($open === false)
return $s;
$quote = substr($s,$open,$close - $open + 8);
//[quote]Text[/quote]
$quote = preg_replace(
"/\[quote\]\s*((\s|.)+?)\s*\[\/quote\]\s*/i",
"Quote:
", $quote);
//[quote=Author]Text[/quote]
$quote = preg_replace(
"/\[quote=(.+?)\]\s*((\s|.)+?)\s*\[\/quote\]\s*/i",
"\\1 wrote:
", $quote);
$s = substr($s,0,$open) . $quote . substr($s,$close + 8);
}
return $s;
}
function format_comment($text, $strip_html = true)
{
global $smilies, $privatesmilies, $CURUSER;
$s = $text;
// This fixes the extraneous ;) smilies problem. When there was an html escaped
// char before a closing bracket - like >), "), ... - this would be encoded
// to &xxx;), hence all the extra smilies. I created a new :wink: label, removed
// the ;) one, and replace all genuine ;) by :wink: before escaping the body.
// (What took us so long? :blush:)- wyz
$s = str_replace(";)", ":wink:", $s);
if ($strip_html)
$s = htmlspecialchars($s);
// [*]
//$s = preg_replace("/\[\*\]/", "", $s);
// [b]Bold[/b]
$s = preg_replace("/\[b\]((\s|.)+?)\[\/b\]/", "\\1", $s);
// [i]Italic[/i]
$s = preg_replace("/\[i\]((\s|.)+?)\[\/i\]/", "\\1", $s);
// [u]Underline[/u]
$s = preg_replace("/\[u\]((\s|.)+?)\[\/u\]/", "\\1", $s);
// [u]Underline[/u]
$s = preg_replace("/\[u\]((\s|.)+?)\[\/u\]/i", "\\1", $s);
// [s]Strike Thru[/s]
$s = preg_replace("/\[s\]((\s|.)+?)\[\/s\]/s", "\\1", $s);
// [img]http://www/image.gif[/img]
$s = preg_replace("/\[img\](http:\/\/[^\s'\"<>]+(\.(jpg|gif|png)))\[\/img\]/i","", $s);
// [img=http://www/image.gif]
$s = preg_replace("/\[img=(http:\/\/[^\s'\"<>]+(\.(jpg|gif|png)))\]/i","", $s);
// [color=blue]Text[/color]
$s = preg_replace(
"/\[color=([a-zA-Z]+)\]((\s|.)+?)\[\/color\]/i",
"\\2", $s);
// [color=#ffcc99]Text[/color]
$s = preg_replace(
"/\[color=(#[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9])\]((\s|.)+?)\[\/color\]/i",
"\\2", $s);
// [url=http://www.example.com]Text[/url]
$s = preg_replace(
"/\[url=([^()<>\s]+?)\]((\s|.)+?)\[\/url\]/i",
"\\2", $s);
// [url]http://www.example.com[/url]
$s = preg_replace(
"/\[url\]([^()<>\s]+?)\[\/url\]/i",
"\\1", $s);
// [size=4]Text[/size]
$s = preg_replace(
"/\[size=([1-7])\]((\s|.)+?)\[\/size\]/i",
"\\2", $s);
// [font=Arial]Text[/font]
$s = preg_replace(
"/\[font=([a-zA-Z ,]+)\]((\s|.)+?)\[\/font\]/i",
"\\2", $s);
// //[quote]Text[/quote]
// $s = preg_replace(
// "/\[quote\]\s*((\s|.)+?)\s*\[\/quote\]\s*/i",
// "Quote:
", $s);
// //[quote=Author]Text[/quote]
// $s = preg_replace(
// "/\[quote=(.+?)\]\s*((\s|.)+?)\s*\[\/quote\]\s*/i",
// "\\1 wrote:
", $s);
// Quotes
$s = format_quotes($s);
// URLs
$s = format_urls($s);
// $s = format_local_urls($s);
// Linebreaks
$s = nl2br($s);
// [pre]Preformatted[/pre]
$s = preg_replace("/\[pre\]((\s|.)+?)\[\/pre\]/i", "\\1", $s);
// [nfo]NFO-preformatted[/nfo]
$s = preg_replace("/\[nfo\]((\s|.)+?)\[\/nfo\]/i", "\\1", $s);
// Maintain spacing
$s = str_replace(" ", " ", $s);
// the [you] tag
$s = str_replace ("[you]", $CURUSER['username'], $s);
reset($smilies);
while (list($code, $url) = each($smilies))
$s = str_replace($code, "", $s);
//$s = str_replace( array_keys($smilies), array_values($smilies), $s);
reset($privatesmilies);
while (list($code, $url) = each($privatesmilies))
$s = str_replace($code, "", $s);
return $s;
}
function get_user_class()
{
global $CURUSER;
return $CURUSER["class"];
}
function get_user_class_name($class)
{
switch ($class)
{
case UC_PEASANT: return "Peasant";
case UC_USER: return "User";
case UC_POWER_USER: return "Power User";
case UC_VIP: return "VIP";
case UC_UPLOADER: return "Uploader";
case UC_MODERATOR: return "Moderator";
case UC_ADMINISTRATOR: return "Administrator";
case UC_SYSOP: return "Sysop";
}
return "";
}
function is_valid_user_class($class)
{
return floor($class) == $class && $class >= UC_PEASANT && $class <= UC_SYSOP;
}
function is_valid_id($id)
{
return ((int) $id > 0);
}
function textbbcode($form,$name,$content="") {
?>
|
|
global $smilies, $BASEURL;
while ((list($code, $url) = each($smilies)) && $count<20) {
if ($count % 4==0)
print("");
print("\n | ");
$count++;
if ($count % 4==0)
print(" ");
}
?>
echo MORE_SMILES;?>
|
}
//-------- Begins a main frame
function begin_main_frame()
{
print("" .
"\n");
}
//-------- Ends a main frame
function end_main_frame()
{
print(" |
\n");
}
function begin_frame($caption = "", $center = false, $padding = 10)
{
$tdextra = '';
if ($caption)
print("$caption
\n");
if ($center)
$tdextra .= " align=center";
print("\n");
}
function attach_frame($padding = 10)
{
print(" |
\n");
}
function end_frame()
{
print(" |
\n");
}
function begin_table($fullwidth = false, $padding = 5)
{
$width = '';
if ($fullwidth)
$width = " width=100%";
print("\n");
}
function end_table()
{
print("
\n");
}
//-------- Inserts a smilies frame
// (move to globals)
function insert_smilies_frame()
{
global $smilies, $BASEURL;
begin_frame("Smilies", true);
begin_table(false, 5);
print("Type... | To make a... |
\n");
while (list($code, $url) = each($smilies))
print("$code | | \n");
end_table();
end_frame();
}
function sql_timestamp_to_unix_timestamp($s)
{
return strtotime($s);
//return mktime(substr($s, 11, 2), substr($s, 14, 2), substr($s, 17, 2), substr($s, 5, 2), substr($s, 8, 2), substr($s, 0, 4));
}
function get_ratio_color($ratio)
{
if($ratio == '---') return '#000';
if ($ratio < 0.1) return "#ff0000";
if ($ratio < 0.2) return "#ee0000";
if ($ratio < 0.3) return "#dd0000";
if ($ratio < 0.4) return "#cc0000";
if ($ratio < 0.5) return "#bb0000";
if ($ratio < 0.6) return "#aa0000";
if ($ratio < 0.7) return "#990000";
if ($ratio < 0.8) return "#880000";
if ($ratio < 0.9) return "#770000";
if ($ratio < 1) return "#660000";
return "#000000";
}
function get_slr_color($ratio)
{
if ($ratio < 0.025) return "#ff0000";
if ($ratio < 0.05) return "#ee0000";
if ($ratio < 0.075) return "#dd0000";
if ($ratio < 0.1) return "#cc0000";
if ($ratio < 0.125) return "#bb0000";
if ($ratio < 0.15) return "#aa0000";
if ($ratio < 0.175) return "#990000";
if ($ratio < 0.2) return "#880000";
if ($ratio < 0.225) return "#770000";
if ($ratio < 0.25) return "#660000";
if ($ratio < 0.275) return "#550000";
if ($ratio < 0.3) return "#440000";
if ($ratio < 0.325) return "#330000";
if ($ratio < 0.35) return "#220000";
if ($ratio < 0.375) return "#110000";
return "#000000";
}
function write_log($text)
{
$text = sqlesc($text);
do_mysql_query("INSERT INTO sitelog (added, txt, inverted_timestamp) VALUES(NOW(), $text, (4294967295 - UNIX_TIMESTAMP(added)) )") or sqlerr(__FILE__, __LINE__);
}
function get_elapsed_time($ts)
{
$mins = floor((time() - $ts) / 60);
$hours = floor($mins / 60);
$mins -= $hours * 60;
$days = floor($hours / 24);
$hours -= $days * 24;
$weeks = floor($days / 7);
$days -= $weeks * 7;
$t = "";
if ($weeks > 0)
return "$weeks week" . ($weeks > 1 ? "s" : "");
if ($days > 0)
return "$days day" . ($days > 1 ? "s" : "");
if ($hours > 0)
return "$hours hour" . ($hours > 1 ? "s" : "");
if ($mins > 0)
return "$mins min" . ($mins > 1 ? "s" : "");
return "< 1 min";
}
/* Custom functions */
function auto_post($subject = "Error - Subject Missing",$body = "Error - No Body") // Function to use the special system message forum
{
$forumid = $GLOBALS['settings']['autopost_forum'];
mysql_query( "INSERT INTO topics (userid, forumid, subject) VALUES(0, $forumid, $subject)") or sqlerr(__FILE__, __LINE__);
$topicid = @mysql_insert_id();
// $added = "'" . get_date_time() . "'";
mysql_query( "INSERT INTO posts (topicid, userid, added, body_parsed) " .
"VALUES($topicid, 0, NOW(), $body)") or sqlerr(__FILE__, __LINE__);
$postid = @mysql_insert_id();
$lastpost = "".get_date_time()."
" .
"by System
" .
"in ".$subject."";
// Update forum lastpost string (saves quite some queries instead of saving the id)
do_mysql_query("UPDATE LOW_PRIORITY forums SET postcount=postcount+1, lastpost_txt='".mysql_escape_string($lastpost)."' WHERE id=".$forumid);
//------ Update topic last post
$lastpost_txt = ''.get_date_time().'
by System ';
do_mysql_query("UPDATE topics SET replies=replies+1, lastpost=$postid, lastpost_txt='$lastpost_txt' WHERE id=$topicid") or sqlerr(__FILE__, __LINE__);
}
?>