Back-End

12 nov, 2010

Use PHP para construir um sistema semelhante ao Twitter em seu site

Publicidade

Aprenda como usar PHP para incluir uma interface semelhante a do Twitter
em seus aplicativos.
Neste artigo vamos mostrar especificamente 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.

Twitter: sensação no mundo web 2.0

Se você não esteve ausente do mundo digital nos últimos dois anos, já sabe que o Twitter é uma das
maiores sensações no mundo Web 2.0. Para os ainda não iniciados, o
Twitter é um
serviço de microblog simples que permite que usuários façam postagens de até 140 caracteres que respondam a pergunta “O que está acontecendo 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 até assuntos de abrangência internacional.
Frequentemente, há links integrados a imagens, arquivos de mídia e
postagens de blogs.
Essas URLs são frequentemente encurtadas por serviços como TinyURL e bit.ly – 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ário. 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 online 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, 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 está acontecendo 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 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. 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. 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. 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. 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 Ppostagens 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. 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.

Agora vamos criar 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. 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 qrquivo 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

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. 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. 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. 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

Discutir

***

artigo publicado originalmente developerWorks Brasil, por Thomas Myer

*

Thomas 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.