Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

serrano

criação de bot para shoutbox

Mensagens Recomendadas

serrano    0
serrano

ola pessoal.

no seguimento de um outro topico com a mesma duvida, que coloquei na zona do javascript, os amigos aqui da comunidade aconselharam-me a trabalhar com o php em vez de javascript..

então é assim..

eu tenho um forum, e nele, na primeira pagina tem um chat (shoutbox) , queria então que nesse chat, fosse postadas mensagens automaticas de dez em dez minutos, mensagens mas são só duas...

agora uma depois outra, e assim sucessivamente...

como será possivel fazer isso..?

cumps

serrano

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
serrano    0
serrano

boa pergunta...lol

este é o codigo da shout....

<?php
// ---------------------------------------------------
// Start Set PHP Environment
// ---------------------------------------------------

error_reporting(E_ALL & ~E_NOTICE);

// ---------------------------------------------------
// End Set PHP Environment
// ---------------------------------------------------

// ---------------------------------------------------
// Start Define Important Constants
// ---------------------------------------------------

define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'vbshout');

// ---------------------------------------------------
// End Define Important Constants
// ---------------------------------------------------

// ---------------------------------------------------
// Start Cache Of Any Needed Templates/Phrase's
// ---------------------------------------------------

$phrasegroups = array();

$specialtemplates = array();

$actiontemplates = array(
	'archive' => array(
			'GENERIC_SHELL',
			'forumhome_vbshout_archive_shout',
			'forumhome_vbshout_archive',
			'forumhome_vbshout_archive_topshouter',
			),
);


$globaltemplates = array(
'forumhome_vbshout_shout',
);

// ---------------------------------------------------
// End Cache Of Any Needed Templates/Phrase's
// ---------------------------------------------------



// ---------------------------------------------------
// Start Require Globalized Settings
// ---------------------------------------------------

require_once('./global.php');
require_once(DIR . '/includes/functions_user.php');
require_once(DIR . '/includes/functions_newpost.php');
require_once(DIR . '/includes/class_bbcode.php');


$DB                       = $db; // What? Its easier to write ^_^;
$vbulletin->vbshout_parse =& new vB_BbCodeParser($vbulletin, fetch_tag_list());

$perpage    = $vbulletin->input->clean_gpc('r', 'perpage', TYPE_UINT);
$page       = $vbulletin->input->clean_gpc('r', 'pagenumber', TYPE_UINT);

// ---------------------------------------------------
// End Require Globalized Settings
// ---------------------------------------------------

// ---------------------------------------------------
// Start Incorrect Page Navigation Set
// ---------------------------------------------------

// Navigation
$navbits     = array();
$navbits[""] = "";

// ---------------------------------------------------
// End Incorrect Page Navigation Set
// ---------------------------------------------------

// ---------------------------------------------------
// Start Does The Page Have An Action Specified?
// ---------------------------------------------------

if ((!$_GET['do'] || $_GET['do'] == '') && !$_POST['do'])
{
$_GET['do'] = 'latest';
}

// ---------------------------------------------------
// End Does The Page Have An Action Specified?
// ---------------------------------------------------


function buildTime($time = TIMENOW)
{
global $vbulletin;

        $Time  = vbdate($vbulletin->options['dateformat'], $time, $vbulletin->options['yestoday']);
$Time .= ' ';
        $Time .= vbdate($vbulletin->options['timeformat'], $time, $vbulletin->options['yestoday']);

return $Time;
}

function bbcodeparser($text = '', $striphtml = true)
{
global $vbulletin;

if ($striphtml)
{
	$text = htmlspecialchars_uni(trim($text));
}

if ($vbulletin->options['shout_bbcode'])
{
	return $vbulletin->vbshout_parse->parse(convert_url_to_bbcode($text), 'nonforum');
}
else
{
	return $text;
}
}

function isBanned($user)
{
return (isBanned_Check($user['userid'], 'shout_banned_users') || isBanned_Check($user['usergroupid'], 'shout_banned_usergroups'));	
}

function isBanned_Check($bash, $against)
{
global $vbulletin;
return in_array($bash, iif($vbulletin->options[$against], explode(',', $vbulletin->options[$against]), array()));
}

function canCommand()
{
global $vbulletin;

return $vbulletin->options['shout_can_commnd'] && can_moderate();
}

function execCommand($Command)
{
global $meShout;

if (preg_match_all("#^/pruneshout(.*)$#", $Command, $Matches, PREG_SET_ORDER) && canCommand())
{
	return execCommand_pruneshout($Matches);
}
else if (preg_match_all("#^/prune(.*)$#", $Command, $Matches, PREG_SET_ORDER) && canCommand())
{
	return execCommand_prune($Matches);
}
else if (preg_match_all("#^/me(.*)$#", $Command, $Matches, PREG_SET_ORDER))
{
	$meShout = 1;
	return trim($Matches[0][1]);
}

return $Command;
}

function execCommand_pruneshout($Data)
{
global $vbulletin;

$Data = trim($Data[0][1]);

if (!empty($Data))
{
	$vbulletin->db->query('delete from '.TABLE_PREFIX.'shout where s_me in(0,1) and s_shout = \''.addslashes($Data).'\' or s_shout = \''.addslashes(fetch_word_wrapped_string($Data)).'\'');
}

return true;
}

function execCommand_prune($Data)
{
global $vbulletin;

$Data = trim($Data[0][1]);

if (empty($Data))
{
	$vbulletin->db->query('delete from '.TABLE_PREFIX.'shout');
}
else
{
	if ($u = $vbulletin->db->query_first('select userid from '.TABLE_PREFIX.'user where username = \''.addslashes(htmlspecialchars_uni($Data)).'\''))
	{
		$vbulletin->db->query('delete from '.TABLE_PREFIX.'shout where s_by = \''.intval($u['userid']).'\'');
	}
}

return true;
}

// ---------------------------------------------------
// Grab Latest X Shouts
// ---------------------------------------------------

if ($_GET['do'] == 'latest')
{
$Output = array();
$Shouts = $DB->query('
		select s.*, u.username, u.usergroupid from '.TABLE_PREFIX.'shout s
		left join '.TABLE_PREFIX.'user u on (u.userid = s.s_by)
		order by s.sid desc limit ' . $vbulletin->options['shout_display']);

while ($Shout = $DB->fetch_array($Shouts))
{
	$Shout['time']     = buildTime($Shout['s_time']);
	$Shout['s_shout']  = bbcodeparser($Shout['s_shout']);
	$Shout['style']    = '';
	$Shout['data']     = unserialize($Shout['s_data']);
	$Shout['username'] = fetch_musername($Shout, 'usergroupid');

	if ($Shout['data']['color'])
	{
		$Shout['style'] .= 'color:'.$Shout['data']['color'].';';
	}

	if ($Shout['data']['font'])
	{
		$Shout['style'] .= 'font-family:'.$Shout['data']['font'].';';
	}

	if ($Shout['data']['bold'])
	{
		$Shout['style'] .= 'font-weight:'.$Shout['data']['bold'].';';
	}

	if ($Shout['data']['underline'])
	{
		$Shout['style'] .= 'text-decoration:'.$Shout['data']['underline'].';';
	}

	if ($Shout['data']['italic'])
	{
		$Shout['style'] .= 'font-style:'.$Shout['data']['italic'].';';
	}

	if ($Shout['style'])
	{
		$Shout['s_shout'] = '<font style="'.$Shout['style'].'">'.$Shout['s_shout'].'</font>';
	}

	eval('$Output[] .= "' . fetch_template('forumhome_vbshout_shout') . '";');
}

if (isBanned($vbulletin->userinfo) && $vbulletin->options['shout_banned_perms'] > 0)
{
	$Output = '';
	$Shout  = array(
			'time'     => buildTime(),
			'username' => 'System Reponse',
			's_shout'    => 'You are currently banned from the shoutbox',
		);

	eval('$Output .= "' . fetch_template('forumhome_vbshout_shout') . '";');
}

if (empty($Output))
{
	$Output = '';
	$Shout  = array(
			'time'     => buildTime(),
			'username' => 'System Reponse',
			's_shout'    => 'No Current Shouts',
		);

	eval('$Output .= "' . fetch_template('forumhome_vbshout_shout') . '";');
}
else
{
	if ($vbulletin->options['shout_messages_order'])
	{
		$Output = array_reverse($Output);
	}

	$Shouts = $Output;
	$Output = '';

	foreach ($Shouts as $Shout)
	{
		$Output .= $Shout;
	}
}

unset($Shouts, $Shout);

echo $Output;
exit;
}

// ---------------------------------------------------
// End Latest X Shouts
// ---------------------------------------------------

// ---------------------------------------------------
// Shout
// ---------------------------------------------------

if ($_POST['do'] == 'shout')
{
$vbulletin->input->clean_array_gpc('p', array(
	'shout'	         => TYPE_STR,
	'color'          => TYPE_NOHTML,
	'fontFamily'     => TYPE_NOHTML,
	'fontWeight'     => TYPE_NOHTML,
	'fontStyle'      => TYPE_NOHTML,
	'textDecoration' => TYPE_NOHTML,
));

$meShout = 0;

if (!empty($vbulletin->GPC['shout']) && $vbulletin->userinfo['userid'] > 0 && !isBanned($vbulletin->userinfo))
{

	$ShoutData = addslashes(serialize(array(
			'color'      => addslashes(convert_urlencoded_unicode($vbulletin->GPC['color'])),
			'font'       => addslashes(convert_urlencoded_unicode($vbulletin->GPC['fontFamily'])),
			'bold'       => addslashes(convert_urlencoded_unicode($vbulletin->GPC['fontWeight'])),
			'italic'     => addslashes(convert_urlencoded_unicode($vbulletin->GPC['fontStyle'])),
			'underline'  => addslashes(convert_urlencoded_unicode($vbulletin->GPC['textDecoration'])),
	)));

	$vbulletin->GPC['shout'] = convert_urlencoded_unicode($vbulletin->GPC['shout']);

	if (($vbulletin->GPC['shout'] = execCommand($vbulletin->GPC['shout'])) !== true)
	{
		$DB->query("
			insert into ".TABLE_PREFIX."shout
			(s_time, s_by, s_shout, s_data, s_me)
			values
			(".TIMENOW.", {$vbulletin->userinfo['userid']}, '".addslashes($vbulletin->GPC['shout'])."', '{$ShoutData}', $meShout)
		");
	}
}

exit;
}

// ---------------------------------------------------
// End Shout
// ---------------------------------------------------

// ---------------------------------------------------
// Display Shout Archive
// ---------------------------------------------------

if ($_GET['do'] == 'archive')
{
$navbits     = array("vbshout.php?" . $vbulletin->session->vars['sessionurl'] . "do=archive" => 'Archive');
$navbits[""] = 'Viewing Shoutbox Archive';

$TopTen = '';

$TS   = $DB->query_first("select count(*) as `ts` from " . TABLE_PREFIX . "shout");
$TS_D = $TS['ts'];
$TS   = vb_number_format($TS['ts']);

$T4 = $DB->query_first("select count(*) as `T4` from " . TABLE_PREFIX . "shout where s_time > " . (TIMENOW - (60 * 60 * 24)));
$T4 = vb_number_format($T4['T4']);

$TY = $DB->query_first("select count(*) as `TY` from " . TABLE_PREFIX . "shout where s_by = '{$vbulletin->userinfo['userid']}'");
$TY = vb_number_format($TY['TY']);

$TT = $DB->query('
		select s.*, count(s.sid) as `TS`, u.username, u.usergroupid from '.TABLE_PREFIX.'shout s
		left join '.TABLE_PREFIX.'user u on (u.userid = s.s_by)
		group by s.s_by having TS > 0
		order by TS desc limit 10');

while ($TTS = $DB->fetch_array($TT))
{
	$TTS['username'] = fetch_musername($TTS, 'usergroupid');
	eval('$TopTen .= "' . fetch_template('forumhome_vbshout_archive_topshouter') . '";');
}

sanitize_pageresults($TS_D, $page, $perpage, 40, 10);

$limitlower = ($page - 1) * $perpage + 1;
if ($limitlower <= 0)
{
	$limitlower = 1;
}

$Output = array();
$Shouts = $DB->query('
		select s.*, u.username, u.usergroupid from '.TABLE_PREFIX.'shout s
		left join '.TABLE_PREFIX.'user u on (u.userid = s.s_by)
		order by s.sid desc limit ' . ($limitlower - 1) . ',' . $perpage);

while ($Shout = $DB->fetch_array($Shouts))
{
	$Shout['msg_safe'] = $Shout['s_shout'];
	$Shout['time']     = buildTime($Shout['s_time']);
	$Shout['s_shout']  = bbcodeparser($Shout['s_shout']);
	$Shout['style']    = '';
	$Shout['data']     = unserialize($Shout['s_data']);
	$Shout['username'] = fetch_musername($Shout, 'usergroupid');

	if ($Shout['data']['color'])
	{
		$Shout['style'] .= 'color:'.$Shout['data']['color'].';';
	}

	if ($Shout['data']['font'])
	{
		$Shout['style'] .= 'font-family:'.$Shout['data']['font'].';';
	}

	if ($Shout['data']['bold'])
	{
		$Shout['style'] .= 'font-weight:'.$Shout['data']['bold'].';';
	}

	if ($Shout['data']['underline'])
	{
		$Shout['style'] .= 'text-decoration:'.$Shout['data']['underline'].';';
	}

	if ($Shout['data']['italic'])
	{
		$Shout['style'] .= 'font-style:'.$Shout['data']['italic'].';';
	}

	if ($Shout['style'])
	{
		$Shout['s_shout'] = '<font style="'.$Shout['style'].'">'.$Shout['s_shout'].'</font>';
	}

	eval('$Output[] .= "' . fetch_template('forumhome_vbshout_archive_shout') . '";');
}

if (isBanned($vbulletin->userinfo) && $vbulletin->options['shout_banned_perms'] > 0)
{
	$Output = '';
	$Shout  = array(
			'time'     => buildTime(),
			'username' => 'System Reponse',
			's_shout'    => 'You are currently banned from the shoutbox',
		);

	eval('$Output .= "' . fetch_template('forumhome_vbshout_archive_shout') . '";');
}

if (empty($Output))
{
	$Output = '';
	$Shout  = array(
			'time'     => buildTime(),
			'username' => 'System Reponse',
			's_shout'    => 'No Current Shouts',
		);

	eval('$Output .= "' . fetch_template('forumhome_vbshout_archive_shout') . '";');
}
else
{
	$Shouts = $Output;
	$Output = '';

	foreach ($Shouts as $Shout)
	{
		$Output .= $Shout;
	}
}

unset($Shouts, $Shout);

$pagenav = construct_page_nav($page, $perpage, $TS_D, 'vbshout.php?' . $vbulletin->session->vars['sessionurl'] . 'do=archive', ''
	. (!empty($vbulletin->GPC['perpage']) ? "&pp=$perpage" : "")
);

eval('$HTML = "' . fetch_template('forumhome_vbshout_archive') . '";');
}

// ---------------------------------------------------
// Display Shout Archive
// ---------------------------------------------------

// ---------------------------------------------------
// AJAX Edit Shout
// ---------------------------------------------------

if ($_POST['do'] == 'editshout')
{
$vbulletin->input->clean_array_gpc('p', array(
	'id'	         => TYPE_UNIT,
	'shout'          => TYPE_STR,
));

if (!$Shout = $DB->query_first("select * from " . TABLE_PREFIX . "shout where sid = '{$vbulletin->GPC['id']}'"))
{
	echo $vbulletin->GPC['shout'];
	exit;
}

if ($Shout['sid'] != $vbulletin->userinfo['userid'] && !can_moderate())
{
	echo $vbulletin->GPC['shout'];
	exit;
}

$vbulletin->GPC['shout'] = convert_urlencoded_unicode($vbulletin->GPC['shout']);

$DB->query("update " . TABLE_PREFIX . "shout set s_shout = '".addslashes($vbulletin->GPC['shout'])."' where sid = $Shout[sid]");

$Shout = $DB->query_first("select * from " . TABLE_PREFIX . "shout where sid = '{$vbulletin->GPC['id']}'");

$Shout['s_shout']  = bbcodeparser($Shout['s_shout']);
$Shout['style']    = '';
$Shout['data']     = unserialize($Shout['s_data']);

if ($Shout['data']['color'])
{
	$Shout['style'] .= 'color:'.$Shout['data']['color'].';';
}

if ($Shout['data']['font'])
{
	$Shout['style'] .= 'font-family:'.$Shout['data']['font'].';';
}

if ($Shout['data']['bold'])
{
	$Shout['style'] .= 'font-weight:'.$Shout['data']['bold'].';';
}

if ($Shout['data']['underline'])
{
	$Shout['style'] .= 'text-decoration:'.$Shout['data']['underline'].';';
}

if ($Shout['data']['italic'])
{
	$Shout['style'] .= 'font-style:'.$Shout['data']['italic'].';';
}

if ($Shout['style'])
{
	$Shout['s_shout'] = '<font style="'.$Shout['style'].'">'.$Shout['s_shout'].'</font>';
}

echo $Shout['s_shout'];
exit;
}

// ---------------------------------------------------
// AJAX Edit Shout
// ---------------------------------------------------

// ---------------------------------------------------
// AJAX Delete Shout
// ---------------------------------------------------

if ($_POST['do'] == 'deleteshout')
{
$vbulletin->input->clean_array_gpc('p', array(
	'id' => TYPE_UNIT,
));

if (!$Shout = $DB->query_first("select * from " . TABLE_PREFIX . "shout where sid = '{$vbulletin->GPC['id']}'"))
{
	echo 'false';
	exit;
}

if ($Shout['sid'] != $vbulletin->userinfo['userid'] && !can_moderate())
{
	echo 'false';
	exit;
}

$vbulletin->GPC['shout'] = convert_urlencoded_unicode($vbulletin->GPC['shout']);

$DB->query("delete from " . TABLE_PREFIX . "shout where sid = $Shout[sid]");

echo 'true';
exit;
}

// ---------------------------------------------------
// AJAX Delete Shout
// ---------------------------------------------------

// ---------------------------------------------------
// Start Page Output
// ---------------------------------------------------


$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('GENERIC_SHELL') . '");');


// ---------------------------------------------------
// End Page Output
// ---------------------------------------------------
?>

depois ainda existe outro que é o template, que não contem nada de especial, só a estrutura e alguma javascript...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
serrano    0
serrano

esquice-me tambem de mencionar,pois existe outro comando que se coloca na caixa de texto da shout, como se fosse um shout, que faz delete a todos os houts..

/prune

é o comando

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triton    12
Triton

Pelo que percebi do código (análise muito superficial), basta fazeres um include desse ficheiro num novo ficheiro .php, criares um novo objecto da shoutbox e usar o método shout para meter um novo comentário.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade