Usar PHP para Construir um Sistema Semelhante ao Twitter em seu Site

É simples incluir um microblog semelhante ao Twitter em qualquer aplicativo usando PHP

Aprenda como usar PHP para incluir uma interface semelhante a do Twitter em seus aplicativos. Especificamente, mostramos como permitir que usuários incluam postagens, como disseminar essas postagens a outros usuários que desejam recebê-las e como permitir que usuários optem por seguir postagens de outros usuários.

Thomas Myer, Principal, Triple Dog Dare Media

authorThomas Myer é o cofundador da Triple Dog Dare Media, em Austin, Texas, empresa de consultoria. Thomas escreve sobre os assuntos de gerenciamento de conhecimento, design de informações e capacidade de uso. Você pode enviar um e-mail para ele em tom@tripledogdaremedia.com.



24/Fev/2009

Se esteve prestando alguma atenção, sabe que o Twitter é uma das maiores sensações no mundo Web 2.0. Para aqueles que não sabem, o Twitter (um serviço disponível em Twitter.com) é um serviço de microblog simples que permite que usuários façam postagens (chamadas de tweets) de até 140 caracteres que respondam a pergunta "O que você está fazendo agora?" Os usuários podem seguir pessoas que acharem interessantes e ter seguidores próprios. Dessa forma, as informações podem ser publicadas para uma pequena comitiva ou disseminadas para longe e amplamente.

Uma olhada rápida em qualquer conta do Twitter revela que os usuários geralmente produzem tweets sobre diversos assuntos, de coisas do dia a dia (por exemplo, "Estou comendo um sanduíche") até coisas mais sublimes. Frequentemente, há links integrados a imagens, arquivos de mídia e postagens de blogs. Essas URLs são frequentemente ofuscadas por serviços como TinyURL, principalmente para manter o comprimento total de caracteres da postagem em 140 caracteres ou menos.

Há muitas pessoas que tornaram o Twitter um hábito e transformaram o formato supercondensado em uma forma de arte, mesmo conversando com outros usuários (direcionando seus comentários para @usuário, por exemplo). A partir desse início simples, uma galáxia inteira de aplicativos remotos e outras ferramentas ativados para o Twitter surgiram. Há ate mesmo prêmios agora para os tweets mais engraçados, mais sublimes e mais cheios de fatos, além de aplicativos on-line que controlam o estado dos diversos aplicativos do Twitter que estão por aí.

Muitos outros sites e serviços, como o LinkedIn e o Facebook, agora permitem que seus usuários atualizem seu status atual de maneira decididamente semelhante a do Twitter. Ou seja, atualizar seu status no Facebook envolve o uso de uma mensagem condensada e, é claro, o status geralmente responde a pergunta "O que você está fazendo agora?"

Incluir um microblog ou uma ferramenta de atualização de status em seu próprio site não requer muito trabalho e fornece a seus usuários uma maneira divertidas e simples de se comunicar. O objetivo deste artigo é mostrar como fazer isso. Mas, primeiro, preciso fazer algumas suposições sobre você.

Primeiro, suponho que conheça algo sobre PHP e MySQL. Suponho também que tenha acesso a algum tipo de servidor da Web Apache disponível localmente que execute PHP e MySQL. Para os propósitos deste artigo, eu desenvolvo em um MacBook Pro usando Macintosh, Apache, MySQL, and PHP (MAMP), um programa freeware que fornece de forma conveniente um ambiente de desenvolvimento completo em um pacote. No entanto, você deve poder desenvolver no Microsoft® Windows® ou no Linux® sem qualquer dificuldade. Por fim, suponho que você tenha um aplicativo existente em execução agora que envolva usuários de algum tipo e que estará incluindo microblogging ou tweeting nesse aplicativo de alguma maneira. Por essa razão, ignoro algumas partes mais centradas no usuário do aplicativo (por exemplo, efetuar login, gerenciar um perfil, etc.) em favor das postagens.

Projetando o Back End do Aplicativo

De forma bem simples, o serviço do Twitter gira em torno de dois substantivos: usuários e mensagens. Se já tiver construído um aplicativo e queira incluir um serviço semelhante ao Twitter nele, provavelmente já possui o gerenciamento de usuários. Se não tiver, precisa ter alguma maneira de identificar exclusivamente cada usuários em uma tabela de banco de dados (uma chave principal, geralmente um número inteiro), um nome de usuário (também exclusivo), um endereço de e-mail, uma senha, etc.

Tweets (ou postagens) são armazenados em uma tabela de postagens, com cada postagem tendo uma chave principal (algum tipo de número inteiro sequencial), um relacionamento de chave externa de volta ao usuário que fez a postagem, a própria postagem (limitada a um número de caracteres) e um registro de data e hora.

A peça final do quebra-cabeça é uma tabela de banco de dados que mostra quais usuários estão seguindo quem. Tudo isso é necessário de alguma forma para registrar um ID de usuário e o ID do seguidor, fornecendo a seu aplicativo a capacidade de construir listas de seguidores rapidamente e de disseminar informações facilmente para aqueles que se registraram para seguir outra pessoa.

Se estiver acompanhando, siga em frente e configure suas três tabelas de banco de dados agira. Use o código SQL mostrado na Lista 1 para criar a primeira tabela, chamada users. (Se já tiver uma tabela users, ignore isso.)

Lista 1. A Tabela users
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`email` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 8 ) NOT NULL ,
`status` ENUM( 'active', 'inactive' ) NOT NULL
) ENGINE = MYISAM ;

A segunda tabela, chamada posts, é mostrada abaixo.

Lista 2. A Tabela posts
CREATE TABLE `posts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user_id` INT NOT NULL ,
`body` VARCHAR( 140 ) NOT NULL ,
`stamp` DATETIME NOT NULL
) ENGINE = MYISAM ;

A Lista 3 mostra a última tabela, chamada following. Observe que essa tabela possui duas chaves principais.

Lista 3. A Tabela following
CREATE TABLE `following` (
`user_id` INT NOT NULL ,
`follower_id` INT NOT NULL ,
PRIMARY KEY ( `user_id` , `follower_id` )
) ENGINE = MYISAM ;

Antes de seguir adiante, crie um arquivo chamado header.php e coloque todas as duas cadeias de caracteres de conexão para MySQL nele. Se já tiver um arquivo que faça isso, ignore-me por ora. Simplesmente assegure que esse arquivo seja incluído em todos os locais, pois precisará dele. A Lista 4 mostra qual pode ser a aparência desse arquivo.

Lista 4. Arquivo header.php de Amostra
$SERVER = 'localhost';
$USER = 'username';
$PASS = 'password';
$DATABASE = 'microblogger';


if (!($mylink = mysql_connect( $SERVER, $USER, $PASS))){
	echo  "<h3>Sorry, could not connect to database.</h3><br/>
	Please contact your system's admin for more help\n";
	exit;
}

mysql_select_db( $DATABASE );

Observe que está livre também para incluir qualquer outro tipo de verificação de segurança nesse arquivo header.php. Por exemplo, você poderia verificar se um ID de usuário foi configurado em uma variável de sessão (mostrando que o usuário realmente efetuou login). Se um usuário não tiver efetuado login, é possível redirecionar esse usuário para uma página de login. Este artigo não abrange tudo isso, mas é bem fácil incluir isso quando necessário.


Criando o Formulário de Entrada

Agora que você possui as tabelas de back end configuradas, chegou a hora de considerar o PHP que tratará de quaisquer inserções e atualizações de dados. O que você precisa agora são algumas funções simples que irão:

  1. Permitir que os usuários efetuem login e incluam postagens.
  2. Disseminar essas postagens para qualquer pessoa seguindo o usuário.
  3. Permitir que usuários sigam outros usuários.

Geralmente trabalho no contexto de uma estrutura de aplicativo Model-View-Controller (MVC), como CodeIgniter, pois fornece um conjunto de ferramentas sério para criar esses tipos de aplicativos. Por exemplo, normalmente, começo criando dois modelos (um para usuários e o outro para postagens) que permitam a interação com as tabelas users, posts e following, depois sigo em frente daí.

Como pode ser que já esteja trabalhando em uma estrutura diferente, optei por não usar essa abordagem aqui. Em vez disso, optei por uma abordagem mais simples que não é específica da estrutura. Além disso, só por hoje, vou fazer você trapacear só um pouquinho e incluir um registro em sua tabela users para criar uma série de usuários de teste que ficarão disponíveis para seu aplicativo. Crio três usuários com os nomes de usuários jane, tommy e bill.

Quando isso estiver pronto, crie um arquivo PHP simples chamado functions.php que conterá sua principal funcionalidade. Você irá criar diversas funções nesse arquivo que permitirão ações no contexto de seu aplicativo de microblog.

A primeira função, mostrada na Lista 5, é simples e permite incluir conteúdo na tabela posts.

Lista 5. Função para Incluir Conteúdo na Tabela posts
function add_post($userid,$body){
	$sql = "insert into posts (user_id, body, stamp)
			values ($userid, '". mysql_real_escape_string($body). "',now())";

	$result = mysql_query($sql);
}

Para testar essa função simples, é necessário incluir dois ou mais arquivos PHP na combinação. O primeiro é o arquivo index.php, que contém um pequeno formulário básico por ora — um pouco mais será incluído na página posteriormente. O segundo é o arquivo PHP no qual o formulário é postado, chamado add.php. A Lista 6 é a marcação para o arquivo index.php. Observe que está sendo usada uma sessão PHP para colocar em código permanente o valor de um ID de usuário igual a 1, que é o usuário jane em meu banco de dados. Isso é perfeitamente OK de se fazer agora, mas obviamente precisará ser alterado posteriormente.

Lista 6. Marcação para o Arquivo index.php
<?php
session_start();
include_once('header.php');
include_once('functions.php');

$_SESSION['userid'] = 1;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<title>Microblogging Application</title>
</head>
vbody>

<?php
if (isset($_SESSION['message'])){
	echo "<b>". $_SESSION['message']."</b>";
	unset($_SESSION['message']);
}
?>
<form method='post' action='add.php'>
<p>Your status:</p>
<textarea name='body' rows='5' cols='40' wrap=VIRTUAL></textarea>
<p><input type='submit' value='submit'/></p>
</form>

</body>
</html>

Além disso, observe que deixei algum espaço logo acima do formulário para uma mensagem de status, que será configurada dinamicamente em add.php, conforme mostrado abaixo.

Lista 7. Incluindo Postagens no Banco de Dados com o Arquivo add.php
<?php
session_start();
include_once("header.php");
include_once("functions.php");

$userid = $_SESSION['userid'];
$body = substr($_POST['body'],0,140);

add_post($userid,$body);
$_SESSION['message'] = "Your post has been added!";

header("Location:index.php");
?>

Não deve haver nada de especialmente surpreendente com esse código. Ele simplesmente pega o campo chamado body no formulário e o ID do usuário configurado na sessão PHP e passa os mesmos para a função add_post() no arquivo functions.php. Em seguida, uma outra variável de sessão é configurada (a mensagem de atualização) e o usuário é redirecionado de volta à página index.php.

Se testar essa pequena função, a única maneira de saber se funciona é verificando as postagens no banco de dados. Isso não é exatamente fácil e simples, é? O que se precisa é que as postagens atualizem diretamente em sua página inicial. Para isso, é necessário incluir uma segunda função no arquivo functions.php e usá-la em sua página inicial.


Incluindo uma Lista de Atualizações

Chegou a hora de abrir o arquivo functions.php e incluir uma seguida função. Desta vez, chame a função show_posts(). Fará exatamente isso, mostrar todas as postagens de um ID de usuário específico, conforme mostrado abaixo.

Lista 8. A Função show_posts()
function show_posts($userid){
	$posts = array();

	$sql = "select body, stamp from posts
	 where user_id = '$userid' order by stamp desc";
	$result = mysql_query($sql);

	while($data = mysql_fetch_object($result)){
		$posts[] = array( 	'stamp' => $data->stamp,
							'userid' => $userid,
							'body' => $data->body
					);
	}
	return $posts;

}

Se passar a essa função específica um ID de usuário, ela retorna todas as postagens feitas por esse usuário em ordem cronológica inversa, todas agrupadas em uma bela array multidimensional. Para usá-la, tudo que precisa fazer é chamar essa função no index.php e recuperar todas as postagens para esse usuário. Como está lidando com uma pequena quantidade de dados para cada registro, esse tipo de consulta escala muito bem.

A Lista 9 é o código que é incluído na página index.php, logo após o formulário inserido antes. Usando a função show_posts() em combinação com a variável de sessão, é possível captar todas as postagens do usuário que efetuou login. Se não houver nenhuma postagem, mostre algum tipo de mensagem de erro. Se houver postagens, mostre uma por vez em uma tabela — ou, se quiser algo mais sofisticado, crie seu próprio Cascading Style Sheets (CSS).

Lista 9. Mostrando Postagens na Página index.php
<?php
$posts = show_posts($_SESSION['userid']);

if (count($posts)){
?>
<table border='1' cellspacing='0' cellpadding='5' width='500'>
<?php
foreach ($posts as $key => $list){
	echo "<tr valign='top'>\n";
	echo "<td>".$list['userid'] ."</td>\n";
	echo "<td>".$list['body'] ."<br/>\n";
	echo "<small>".$list['stamp'] ."</small></td>\n";
	echo "</tr>\n";
}
?>
</table>
<?php
}else{
?>
<p><b>You haven't posted anything yet!</b></p>
<?php
}
?>

A Figura 1 mostra a interface básica construída até o momento — nada mal para apenas alguns minutos de trabalho.

Figura 1. A Interface Básica
Interface Básica

A parte fácil acabou. Agora você tem um aplicativo básico que permite que os usuários postem seu status e vejam esse status exibido. No entanto, há uma parte importante ausente: não há ninguém lá fora para ver suas atualizações de status além de você mesmo. Na próxima seção, é criada uma interface simples que lista todos os usuários do sistema e permite que os usuários que efetuaram login realmente seguirem outros usuários e verem suas atualizações de status combinadas às suas próprias.


Seguindo Outros Usuários

Chegou a hora de incluir mais substância no arquivo functions.php. Uma função show_users() é necessária para fornecer uma lista de todos os usuários do sistema. Essa função será usada para preencher uma lista de usuários.

Lista 10. A Função show_users()
function show_users(){
	$users = array();
	$sql = "select id, username from users where status='active' order by username";
	$result = mysql_query($sql);

	while ($data = mysql_fetch_object($result)){
		$users[$data->id] = $data->username;
	}
	return $users;
}

Agora que possui a função show_users() , é possível criar um arquivo users.php que a executa e exibe uma lista de todos os usuários do sistema, cada um com um link que diz seguir ao lado do nome de usuário.

Lista 11. Um Arquivo users.php que Executa a Função show_users()
<?php
session_start();
include_once("header.php");
include_once("functions.php");

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<title>Microblogging Application - Users</title>
</head>
<body>

<h1>List of Users</h1>
<?php
$users = show_users();

if (count($users)){
?>
<table border='1' cellspacing='0' cellpadding='5' width='500'>
<?php
foreach ($users as $key => $value){
	echo "<tr valign='top'>\n";
	echo "<td>".$key ."</td>\n";
	echo "<td>".$value ." <small><a href='#'>follow</a></small></td>\n";
	echo "</tr>\n";
}
?>
</table>
<?php
}else{
?>
<p><b>There are no users in the system!</b></p>
<?php
}
?>
</body>
</html>

Para acessar essa lista de usuários, inclua um link para users.php no arquivo index.php, logo acima do formulário:

<p><a href='users.php'>see list of users</a></p>

O que se tem no final é uma tabela de fácil utilização de nomes de usuários, cada um com um link seguir .

Figura 2. Lista de Usuários
Lista de Usuários

Antes de seguir para a próxima fase, faz sentido gravar uma pequena função que indica quem o usuário atual já está seguindo. Dessa forma, os usuários podem usar essa lista para determinar se desejam seguir ou deixar de seguir outro usuário.

Volte ao arquivo functions.php e inclua uma função chamada following(), mostrada na Lista 12. O ID do usuário atual é passado para essa função para obter de volta todos os IDs de usuários que esse usuário está seguindo.

Lista 12. A Função following()
function following($userid){
	$users = array();

	$sql = "select distinct user_id from following
			where follower_id = '$userid'";
	$result = mysql_query($sql);

	while($data = mysql_fetch_object($result)){
		array_push($users, $data->user_id);

	}

	return $users;

}

Agora é possível executar essa função em users.php e verificar se um ID de usuário específico esta na array. Se estiver, use o link deixar de seguir. Se não estiver, então, use como padrão seguir. A Lista 13 mostra o código revisado.

Lista 13. Arquivo users.php Revisado, Mostrando os Links Seguir e Deixar de Seguir
<?php
$users = show_users();
$following = following($_SESSION['userid']);

if (count($users)){
?>
<table border='1' cellspacing='0' cellpadding='5' width='500'>
<?php
foreach ($users as $key => $value){
	echo "<tr valign='top'>\n";
	echo "<td>".$key ."</td>\n";
	echo "<td>".$value;
	if (in_array($key,$following)){
		echo " <small>
		<a href='action.php?id=$key&do=unfollow'>unfollow</a>
		</small>";
	}else{
		echo " <small>
		<a href='action.php?id=$key&do=follow'>follow</a>
		</small>";
	}
	echo "</td>\n";
	echo "</tr>\n";
}
?>

A próxima etapa é simples: criar o arquivo action.php usado nos links seguir e deixar de seguir. Esse arquivo aceita dois parâmetros GET : m para o ID do usuário e o outro para seguir ou deixar de seguir. Conforme mostrado na Lista 14, esse arquivo é simples e curto como o arquivo add.php.

Lista 14. O Arquivo action.php
<?php
session_start();
include_once("header.php");
include_once("functions.php");

$id = $_GET['id'];
$do = $_GET['do'];

switch ($do){
	case "follow":
		follow_user($_SESSION['userid'],$id);
		$msg = "You have followed a user!";
	break;

	case "unfollow":
		unfollow_user($_SESSION['userid'],$id);
		$msg = "You have unfollowed a user!";
	break;

}
$_SESSION['message'] = $msg;

header("Location:index.php");
?>

Como pode ver, executa-se duas ações muito diferentes —follow_user() ou unfollow_user()— dependendo do link selecionado antes. Você, então, configura uma mensagem e redireciona os usuários de volta à página index.php onde eles verão não apenas suas próprias mensagens, mas mensagens recentes incluídas pelos usuários que seguem. Ou, no caso de deixar de seguir, as mensagens desse usuário desaparecem da lista. É necessário incluir essa última parte de código em index.php um pouco mais tarde. Agora, está na hora de incluir as funções follow_user() e unfollow_user() em functions.php.

Precisa-se tomar um pouco de cuidado com ambas as funções. Não se pode simplesmente seguir cegamente ou deixar de seguir um usuário simplesmente porque alguém clica nesse link. Primeiro, é necessário verificar se há um relacionamento na tabela following. Se houver, pode-se então ignorar o pedido (no caso de seguir) ou agir sobre ele (no caso de deixar de seguir). Para simplificar as coisas, grave uma função check_count() que possa ser usada em ambos os casos, conforme mostrado abaixo.

Lista 15. A Função check_count()
function check_count($first, $second){
	$sql = "select count(*) from following
			where user_id='$second' and follower_id='$first'";
	$result = mysql_query($sql);

	$row = mysql_fetch_row($result);
	return $row[0];

}

function follow_user($me,$them){
	$count = check_count($me,$them);

	if ($count == 0){
		$sql = "insert into following (user_id, follower_id)
				values ($them,$me)";

		$result = mysql_query($sql);
	}
}


function unfollow_user($me,$them){
	$count = check_count($me,$them);

	if ($count != 0){
		$sql = "delete from following
				where user_id='$them' and follower_id='$me'
				limit 1";

		$result = mysql_query($sql);
	}
}

A próxima etapa é fácil: exibir uma lista de outros usuários que o usuário está seguindo na página inicial. Já existe uma função show_users() , mas isso mostra todos os usuários. Essa função pode ter o propósito alterado facilmente incluindo-se um argumento não necessário. Esse argumento é um ID de usuário usado para limitar a lista de usuários àqueles que tenham esse ID específico na posição seguir.

O que está ocorrendo no novo código regravado mostrado na Lista 16 é uma simples verificação do argumento $user_id recebido. Se o ID do usuário for maior que zero, use uma consulta para obter quaisquer IDs de usuários que estejam sendo seguidos por esse ID. Use a função implode() para tornar essa array de valores em uma lista separada por vírgula. Insira então essa cadeia de caracteres — que é semelhante a and id in (1,2,3...n)— na consulta SQL existente, limitando assim a lista de usuários àqueles que o usuário está seguindo.

Lista 16. Código Regravado para Limitar a Lista de Usuários Obtida pela Consulta
function show_users($user_id=0){

	if ($user_id > 0){
		$follow = array();
		$fsql = "select user_id from following
				where follower_id='$user_id'";
		$fresult = mysql_query($fsql);

		while($f = mysql_fetch_object($fresult)){
			array_push($follow, $f->user_id);
		}

		if (count($follow)){
			$id_string = implode(',', $follow);
			$extra =  " and id in ($id_string)";

		}else{
			return array();
		}

	}

	$users = array();
	$sql = "select id, username from users
		where status='active'
		$extra order by username";


	$result = mysql_query($sql);

	while ($data = mysql_fetch_object($result)){
		$users[$data->id] = $data->username;
	}
	return $users;
}

Em seguida, o código mostrado na Lista 17 é incluído na página inicial para exibir todos esses usuários seguidos.

Lista 17. Revisando index.php para Mostrar Usuários que Estão Sendo Seguidos
<h2>Users you're following</h2>

<?php
$users = show_users($_SESSION['userid']);

if (count($users)){
?>
<ul>
<?php
foreach ($users as $key => $value){
	echo "<li>".$value."</li>\n";
}
?>
</ul>
<?php
}else{
?>
<p><b>You're not following anyone yet!</b></p>
<?php
}
?>

Incluindo Postagens de Outros Usuários

Para incluir postagens de outros usuários na linha de tempo de um usuário, é necessário somente reutilizar algum código gravado anteriormente. Por exemplo, você já sabe como obter uma lista de usuários que o usuário está seguindo. Sabe também como obter todas as postagens de um determinado usuário. Precisa simplesmente ajustar a última função para poder aceitar uma lista de usuários em vez de um único usuário.

Tudo que precisa ser feito agora é mover a primeira função mais para cima no arquivo index.php, para que se possa tirar proveito dela antes, em seguida, usar a lista de IDs de usuários obtida da função para obter um número limitado de postagens de suas linhas de tempo — não quer todas elas, apenas umas cinco. Lembre-se, deseja colocar as postagens desses outros usuários em ordem cronológica inversa (a mais recente na parte superior).

Primeiro: inclua um argumento de limite na função show_posts() , configurando-o para zero, por padrão. Se esse limite for superior a zero, inclui-se um limite em sua instrução SQL para recuperar postagens. A outra coisa que se faz é transformar o argumento $userid em uma array que é analisada em um campo de vírgulas, que é então passado para a instrução SQL. Isso é um pouco de trabalho extra, mas recompensa muito bem, pois todas as postagens serão exibidas em ordem inversa, como pode-se ver.

Lista 18. Atualizando show_posts() para Aceitar uma Array de Usuários
function show_posts($userid,$limit=0){
	$posts = array();

	$user_string = implode(',', $userid);
	$extra =  " and id in ($user_string)";

	if ($limit > 0){
		$extra = "limit $limit";
	}else{
		$extra = '';	
	}

	$sql = "select user_id,body, stamp from posts
		where user_id in ($user_string)
		order by stamp desc $extra";
	echo $sql;
	$result = mysql_query($sql);

	while($data = mysql_fetch_object($result)){
		$posts[] = array( 	'stamp' => $data->stamp,
							'userid' => $data->user_id,
							'body' => $data->body
					);
	}
	return $posts;

}

Agora volte ao arquivo index.php e trabalhe em passar mais de um ID de usuário para show_posts(), conforme mostrado abaixo. É uma coisa simples, realmente, já que os usuários já foram reunidos. Simplesmente obtém-se as chaves usando array_keys() e inclui-se a variável de sessão na combinação. No mínimo, isso envia uma array com um valor (o ID do usuário com login atualmente efetuado). No máximo, envia o ID do usuário com login efetuado e o ID de cada usuário que o usuário está seguindo.

Lista 19. Passando uma Array de Usuários para a Função show_posts()
$users = show_users($_SESSION['userid']);
if (count($users)){
	$myusers = array_keys($users);
}else{
	$myusers = array();
}
$myusers[] = $_SESSION['userid'];

$posts = show_posts($myusers,5);

Conclusão

Neste artigo, você aprendeu como construir um serviço de microblog simples baseado em PHP semelhante ao Twitter e à ferramenta de atualização de status do Facebook. Com alguma sorte, poderá pegar o que aprendeu aqui, incluir em seu aplicativo e ajustar para suas necessidades.

Recursos

Aprender

Obter produtos e tecnologias

  • Crie para você mesmo uma conta do Twitter .
  • Inove seu próximo projeto de desenvolvimento de software livre com o software de avaliação da IBM, disponível para download ou em DVD.
  • Faça download de versões de avaliação de produtos IBM e entre em contato com as ferramentas de desenvolvimento de aplicações e os produtos de middleware do DB2®, Lotus®, Rational®, Tivoli® e WebSphere®.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=423844
ArticleTitle=Usar PHP para Construir um Sistema Semelhante ao Twitter em seu Site
publish-date=02242009