Posted on: 01/25/02 06:02am
By: dreamscape
This started out as an innocent question this morning in #geeklog (yes, people do chat there). Tane asked if I knew of a decent shout box that could be easily converted to a php block for geeklog. Well I didn't.
Falkware[*1] has a pretty good custom one written by John Holmes. He provided some insight into problems mine might have on the geeklog-devel list. Maybe if you bug him he'll release his super version.
Beyond that, there wasn't much, so I did a little research and finally said we can do this ourselves. So that is what we set out to do, and did.
This is how to do it:
1) Add this mysql to your database:
CREATE TABLE `shoutbox` (
`id` int(11) NOT NULL auto_increment,
`name` text NOT NULL,
`message` longtext NOT NULL,
`time` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
2) Get your table listed in $_TABLES:
You need to go to ~/geeklog/system/lib-database.php and at the bottom of a long list of $_TABLES, you want to add this:
$_TABLES['shoutbox'] = 'shoutbox';
3) Now add the code to lib-custom.php file in the system directory. You can get the source for it here[*2]
Just don't include the tags in lib-custom.php
4) Configure it how you want it to act. There are 3 variables you might want to edit:
$wrap_width, the number of columns you want to wrap at. Very useful so someone doesn't type xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx with no space (thanks John).
$max_stories, how many shouts you want to show at any given time.
$welcome, just a quick message that will be displayed over the form input.
This was a quick hack to make something work. The database structure came from Spoono and John Holmes helped with some sticking points we didn't see.
If you have anything to add, ways to make it better, or just find an error let us know.
Source Updated
Posted on: 01/25/02 07:36am
By: Tony
If you grabbed the source for this before the time I posted this comment then you will want to update it...we now pass the shout text through COM_checkWords which censors the text and removes any invalid HTML
-----
The reason people blame things on previous generations is that there's only one other choice.
updated
Posted on: 01/25/02 08:02am
By: dreamscape
we\'ll keep updating the source as we make changes in both performance and functionality. So you can always come back and see if it\'s different or not.

updated
Posted on: 01/31/02 01:54pm
By: dreamscape
I've included the sql you need to create the database in the comments of the source file.
updated
Posted on: 01/31/02 02:04pm
By: dreamscape
i also put the count near the top, to show how many shouts you've gotten already.
Shoutbox?
Posted on: 02/02/02 09:12pm
By: Anonymous (Anonymous)
OK, silly question time. What is a "shoutbox"? Is it just a BBS/chat hybrid? Sort of a Usenet/IRC blend that goes on a web site? Or is it something more than that?
Shoutbox?
Posted on: 04/24/02 08:42pm
By: Anonymous (Anonymous)
It's just like a minichat room where people can leave you small messages or "shouts" on the main page.
updated
Posted on: 04/25/02 08:27am
By: lasttime
Where is the source file. The link http://www.geeklog.net/phpblocks/shoutbox.phps simply does not work.
writing the PHP Block
Posted on: 05/18/02 08:45am
By: isol8
How do you configure Shoutbox to show up after installing it? Something is wrong with the way I set up the phpblock. Anybody know how to set it up?
Here's my error
"Shoutbox
Error in PHP Block. Function, , does not exist. "
What is the correct block function and block content?
writing the PHP Block
Posted on: 05/18/02 07:46pm
By: Tony
Read the text in the admin/block.php. Your shoutbox code needs to be named with the phpblock_ prefix (e.g. function phpblock_shoutbox())
From there you need to create a new PHP Block in admin/block.php (be sure to select PHP as the type of block) and then it should start working. If you function doesn't hsave the phpblock_ prefix you get the error you are having. This is a security feature...if we didnt' force the use of the phpblock_ prefix you could do some nasty things.
writing the PHP Block
Posted on: 05/20/02 09:08am
By: isol8
another stupid mistake on my part.
the function is called shoutblock, not shoutbox
so it should be phpblock_shoutblock
thanks tony
Shout it out!
Posted on: 05/03/06 03:16pm
By: kemal
good but i have a little question..
how can i ignore Anonymous posts?
Shout it out!
Posted on: 05/08/06 03:08pm
By: Dirk
[QUOTE BY= kemal] how can i ignore Anonymous posts?[/QUOTE]
You could do what we do here on geeklog.net: Hide the block from anonymous users entirely.
bye, Dirk
Shout it out!
Posted on: 05/09/06 09:36am
By: LWC
I've stumbled across this topic because it was updated and decided to improve this block.
I've:
- Removed many unused variables.
- Added IP address' support (note for upgraders: you'd need to add the correct row to the table!).
- Made it multilingual (using global enough strings from the official language files, not the hack...).
- And most importantly - made it register_globals/register_long_arrays free!
I suggest to everyone to ignore instructions #1 and #2 from the original post as I've replaced #1 with new instructions and #2 (hacking Geeklog) was not correct anyway. The original block as well as mine call the table directly. I see no sense in doing it otherwise unless it was an official plugin.
Note: I haven't tested it! Please provide feedback.
I hope to see my version used on the PHPS file as well...and on this site's block, of course.
<?php
/*
*
* Shout box test
*
* Modified by: @ LWC
* http://lior.weissbrod.com
* Version 2
*
* you need to put this in your database:
CREATE TABLE `shoutbox` (
`id` int(11) NOT NULL auto_increment,
`name` text NOT NULL,
`message` longtext NOT NULL,
`time` text NOT NULL,
`remote_address` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
*/
function phpblock_shoutblock()
{
global $_CONF, $_USER, $LANG03, $LANG08;
$shout_out = "";
$wrap_width = 20;
$max_stories = 5;
$welcome = $LANG03[1] . ":<p>";
$shout_out .= $welcome;
if($_POST["shout_submit"])
{
$shout_name=COM_checkWords(strip_tags($_POST["shout_name"]));
$shout_message=COM_checkWords(strip_tags($_POST["shout_message"]));
$shout_remote_address=COM_checkWords(strip_tags($_POST["shout_remote_address"]));
$result = DB_query("INSERT INTO shoutbox (name,message,time,remote_address)"."VALUES (\"$shout_name\", \"$shout_message\",now(), \"$shout_remote_address\" )");
}
$count = DB_query("select count(*) as count from shoutbox");
$A = DB_fetchArray($count);
$shout_out .= '<b>' . $A['count'] . '</b> shouts already<p>';
$result = DB_query("select * from shoutbox order by id desc limit $max_stories");
$nrows = DB_numrows($result);
for ($i =1; $i <= $nrows; $i++) {
$A = DB_fetchArray($result);
$shout_out .= '<a title="' . $A['remote_address'] . '"><font color=blue><u><b>' .
$A['name'] . '</b></u></font></a>';
$thetime = COM_getUserDateTimeFormat($A['time']);
$shout_time = $thetime[0];
$shout_out .= '<i> on ' . $shout_time . '</i><br>';
$shout_out .= wordwrap($A['message'],$wrap_width,"<br>", 1) . '<br><br>';
}
$shout_out .= "\n<form name='shoutform' action='" . $_SERVER['PHP_SELF'] . "' method='post'>";
$shout_out .= "\n<input name='shout_remote_address' type=hidden value='" . $_SERVER['REMOTE_ADDR'] . "'>\n";
$shout_out .= '<b>' . $LANG08[11] . ':';
if (!empty($_USER['uid'])) {
$shout_out .= " " . $_USER['username'];
$shout_out .= '</b><br><input type=hidden value=\'' . $_USER['username'];
}
else
{
$shout_out .= '</b><br>';
$shout_out .= "<input type=text value='Anonymous";
}
$shout_out .= "' name='shout_name' ><b>Message:<b>";
$shout_out .= "\n<input type='text' value='Your Message' name='shout_message' size=20 maxlength='100'><br>";
$shout_out .= "\n<input type='submit' name='shout_submit' value='" . $LANG03[11] . "'>";
$shout_out .= "\n</form>";
return $shout_out;
}
Shout it out!
Posted on: 06/23/06 11:03am
By: kemal
my register globals is off and nut running soutbox or chatter block!
is there a way?
(i added
extract( $_POST );
extract( $_GET );
to lib-common.php but working again)
what can i do?
Shout it out!
Posted on: 06/24/06 04:11am
By: LWC
[QUOTE lwc]
And most importantly - made it register_globals/register_long_arrays free![/QUOTE]
What part wasn't understood (it's from my post above yours)? Just use my version (and report back).
Shout it out!
Posted on: 06/24/06 03:53pm
By: kemal
i am using your version but messages not send!
is mysql version a problem??
Shout it out!
Posted on: 06/24/06 05:26pm
By: LWC
First of all, it's just a guess but did you run my commented out MySQL command in PHPMyAdmin?
Secondly, if you want more than guesses no one would be able to help you unless you provide your error log.
Shout it out!
Posted on: 06/25/06 09:29pm
By: scroff
Hate to sound stupid (so why post, I know )
But what's the difference between this and the chatterblock?
Shout it out!
Posted on: 06/26/06 04:48am
By: LWC
I guess it's much more simple and doesn't require you to install a whole plugin (although some may argue creating a database table, editing system/lib_custom.php and creating the block compete with installing a plugin).
Furthermore, because of my improvements, unlike said plugin it's multilingual out of the box and register_globals/register_long_arrays free.
Shout it out!
Posted on: 06/28/06 09:50am
By: kemal
[QUOTE BY= LWC] First of all, it's just a guess but did you run my commented out MySQL command in PHPMyAdmin?
Secondly, if you want more than guesses no one would be able to help you unless you provide your error log.[/QUOTE]
first answer yes, sure!
second answer i looked my error.log but there is no any record!
and chatterblock plugin not run too.
other plugins running healtly,
i dont know what is the problem??
Shout it out!
Posted on: 07/14/06 06:37am
By: tgc
I created the shoutbox table in mysql and added the rest to lib-custom.php but I get this error:
Parse error: parse error, unexpected T_VARIABLE in /home/t/xxx.com/gl/system/lib-custom.php on line 502
chatterblock is working but only with register globals on. I want to have register globals turned off.
Frank
Shout it out!
Posted on: 07/14/06 04:36pm
By: Dirk
You have a syntax error, e.g. a missing semicolon or a missing quote, somewhere around line 502 (possibly before that line).
bye, Dirk
Shout it out!
Posted on: 07/15/06 05:39am
By: tgc
$shout_out .= "n<form name='shoutform' action="$_SERVER['PHP_SELF']" method='post'>";
this line cause the problem. When I use the older code it works...
Shout it out!
Posted on: 07/15/06 05:12pm
By: LWC
Sorry about that, I haven't written that I need feedback for nothing...
Being the first one who bothered trying this, you got to be the guinea pig...
Anyway, I've fixed the code so copy it again.