Buscando posts do Facebook

Desenvolvi este script para o site www.adcw.com.br, ele busca os posts na fan-page da agência no facebook e retorna em um ajax, aqui simplifiquei um pouco, utilizando “echo” mesmo…

 

<?

//@include("config.php");
define("CFG_FACEBOOK_FPID", "157126511023182");

//verifica o arquivo de cache
$CACHEFILE = "fbcache.tmp";
if ((!file_exists($CACHEFILE)) || ((time() - filemtime($CACHEFILE)) > 1800)) {

$targetdomain = 'www.facebook.com';
$hostIP = gethostbyname($targetdomain);
$fp = fsockopen($hostIP, 80, $errno, $errstr, 10);

$getString = "GET /feeds/page.php?id=".CFG_FACEBOOK_FPID."&amp;amp;amp;amp;    format=rss20 HTTP/1.1\r\nHost: $targetdomain\r\nConnection: close\r\n";
$getString .= "User-agent: Mozilla\r\nAccept: text/plain,text/html\r\n";
$getString .= "\r\n";

$feed_contents = "";
fputs($fp,$getString);
while ( (!feof($fp))  &&  ($line = fread( $fp, 8192 )) ) {
$feed_contents.=$line;
}

$fp = @fopen($CACHEFILE, 'w+');
fwrite($fp, $feed_contents);
fclose($fp);
$xml = $feed_contents;

}
else {
//se não puxou um novo arquivo do facebook faz a leitura da cache
$fp = fopen($CACHEFILE, 'r');
$xml = fread($fp, filesize($CACHEFILE));
fclose($fp);
}

//interpreta o XML
$i=0;
$items=array();

$xml = explode("\n",$xml);
for ($x=0; $x <= count($xml); $x++) {
$line = trim($xml&#91;$x&#93;);
if ($line == "<item>") { $i++; }
if ($i > 0) {
if (substr($line,0,7) == "<title>") { $items[$i]["title"] = htmlentities(trim(strip_tags($line)),  ENT_QUOTES|ENT_IGNORE,"UTF-8"); }
if (substr($line,0,6) == "<link>") { $items[$i]["link"] = htmlentities(trim(strip_tags($line)), ENT_QUOTES|ENT_IGNORE,"UTF-8"); }
if (substr($line,0,8) == "<author>") { $items[$i]["author"] = htmlentities(trim(strip_tags($line)), ENT_QUOTES|ENT_IGNORE,"UTF-8"); }

//-------------------------------
// pubDate
//-------------------------------

if (substr($line,0,9) == "<pubDate>") {
//formata a data para o formato da ADCW (Original: Wed, 06 Jul 2011 17:14:41)
//Thu, 14 Jul 2011 20:45:19 +0100
$data = htmlentities(strip_tags($line), ENT_QUOTES|ENT_IGNORE,"UTF-8");

$data = explode(" ",$data);
$items[$i]["pubDate"] = $data[1]." ".strtoupper($data[2])."<br>".$data[3];
}

//-------------------------------
// Links
//-------------------------------
$items[$i]["link"] = str_replace("&amp;amp;amp;amp;amp;","&amp;amp;amp;amp;",$items[$i]["link"]);

//-------------------------------
// description
//-------------------------------
if (substr($line,0,13) == "<description>") {

$data = htmlentities(trim(strip_tags(html_entity_decode($line),"<br>")),ENT_QUOTES|ENT_IGNORE,"UTF-8");

//titulo
if (substr($data,0,strlen($items[$i]["title"])) == $items[$i]["title"]) {
$data = trim(substr($data,strlen($items[$i]["title"])));
}
//autor
if (trim(substr($data,0,strlen($items[$i]["author"]))) == $items[$i]["author"]) {
$data = trim(substr($data,strlen($items[$i]["author"])));
}
//vimeo (retira url do inicio)
if (trim(substr($data,0,18)) == "vimeo.comvimeo.com") {
$data = trim(substr($data,18,(strlen($data)-18)));
}
//youtube (retira url do inicio)
if (trim(substr($data,0,30)) == "www.youtube.comwww.youtube.com") {
$data = trim(substr($data,30,(strlen($data)-30)));
}

//tira as quebras de linha do inicio do texto
if (substr($data,0,12) == "&amp;amp;amp;amp;lt;br /&amp;amp;amp;amp;gt;") { $data = trim(substr($data,12)); }
if (substr($data,0,12) == "&amp;amp;amp;amp;lt;br /&amp;amp;amp;amp;gt;") { $data = trim(substr($data,12)); }
//tira a mensagem FOTOS DO MURAL
if (substr($data,-14) == "Fotos do mural") {
$data = substr($data,0,(strlen($data)-14));
}
//--
$items[$i]["description"] = $data;
}

//-------------------------------
// image -> este campo ?xtraido do rss/description do fb
//-------------------------------
if (substr($line,0,13) == "<description>") {

$data = trim(strip_tags(html_entity_decode($line),"<img>"));
$data = explode(chr(34),$data);
for ($y=0; $y <= count($data); $y++) {
if ((substr($data&#91;$y&#93;,0,7) == "http://") &amp;amp;amp;amp;&amp;amp;amp;amp; (substr($data&#91;$y&#93;,-4) == ".jpg")) {
$data&#91;$y&#93; = str_replace("_s.jpg","_n.jpg",$data&#91;$y&#93;); //troca imagem pequena do RSS pela imagem tamanho normal
$items&#91;$i&#93;&#91;"image"&#93; = $data&#91;$y&#93;;
}
}
}
//-------------------------------

//-------------------------------
// video(vimeo) -> este campo extraido do rss/description do fb
//-------------------------------
if (substr($line,0,13) == "<description>") {
$data = trim(strip_tags(html_entity_decode($line),"<a>"));
$data = explode(chr(34),$data);
for ($y=0; $y <= count($data); $y++) {
if (substr($data&#91;$y&#93;,0,17) == "http://vimeo.com/") {
$items&#91;$i&#93;&#91;"video"&#93; = $data&#91;$y&#93;;
}
}
}
//-------------------------------

//-------------------------------
// video(youtube) -> este campo extraido do rss/description do fb
//-------------------------------
if (substr($line,0,13) == "<description>") {
$data = trim(strip_tags(html_entity_decode($line),"<a>"));
$data = explode(chr(34),$data);
for ($y=0; $y <= count($data); $y++) {
if (substr($data&#91;$y&#93;,0,31) == "http://www.youtube.com/watch?v=") {
$items&#91;$i&#93;&#91;"video"&#93; = $data&#91;$y&#93;;
}
}
}
//-------------------------------

}
}

//injeta o item mais recente no site usando jquery e eval
if (count($items) > 0) {

//echo $items[1]["description"];

echo "<h2>".$items[1]["pubDate"]."</h2>\n";
echo "<h1><a href=\"".$items&#91;1&#93;&#91;"link"&#93;."\">".$items[1]["title"]."</a></h1>\n";

if ($items[1]["video"] != "") {
if (substr($items[1]["video"],0,17) == "http://vimeo.com/") {
echo "<iframe id=\"facebook_image\" src=\"http://player.vimeo.com/video/".substr($items&#91;1&#93;&#91;"video"&#93;,17,(strlen($items&#91;1&#93;&#91;"video"&#93;)-17))."\" width=\"530\" height=\"310\" frameborder=\"0\" allowfullscreen></iframe>";
}
elseif (substr($items[1]["video"],0,31) == "http://www.youtube.com/watch?v=") {
echo "<iframe id=\"facebook_image\" width=\"530\" height=\"310\" src=\"http://www.youtube.com/embed/".substr($items&#91;1&#93;&#91;"video"&#93;,31,(strlen($items&#91;1&#93;&#91;"video"&#93;)-31))."\" frameborder=\"0\" allowfullscreen></iframe>";
}
else {
echo "<img id=\"facebook_image\" src=\"".$items&#91;1&#93;&#91;"image"&#93;."\" />\n";
}
}
else {
echo "<img id=\"facebook_image\" src=\"".$items&#91;1&#93;&#91;"image"&#93;."\" />\n";
}

}
else {
echo "Não foi possível buscar os dados...\n";
}

?>

Instalar APACHE + PHP + MySQL no Windows 7

– Atualizado em 07/05/2014

 

 

 

Apache

Instalação

  • Baixe o APACHE Http Server, na versão Win32 Binary without crypto (no mod_ssl) (MSI Installer) no site http://httpd.apache.org/download.cgi
  • Inicie a instalação
  • Na tela Server Information, digite as informações conforme abaixo, substituindo o Administrator’s email por seu email

  • Em Server Type, selecione Custom
  • Na tela Custom Setup, selecione as opções como abaixo, clique em Change para mudar o diretório para: C:\apache\

  • Na última tela de instalação, clique em Install

Configuração

  • Edite o arquivo C:\apache\conf\httpd.conf
  • Descomente a linha
    LoadModule rewrite_module modules/mod_rewrite.so
  • Adicione dentro de dir_moduleindex.php index.phtml”
     DirectoryIndex index.html index.php
  • Dentro de “Directory C:/apache/htdocs“, modifique a chave AllowOverride para All
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    
  • Role até o fim do arquivo e adicione as seguintes linhas
    PHPIniDir "C:\\apache\\php"
    LoadModule php5_module "C:\\apache\\php\\php5apache2_2.dll"
    <IfModule mod_mime.c>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    </IfModule>
    

PHP

Instalação

Configuração

  • Renomeie o arquivo “C:\apache\php\php.ini-recommended” para “php.ini
  • Edite o arquivo php.ini e modifique as seguintes chaves
    short_open_tag = On
    ...
    error_reporting = E_ALL & ~E_NOTICE
    ...
    display_errors = On
    display_startup_errors = On
    ...
    extension_dir = "./ext"
    ...
    upload_max_filesize = 50M
    ...
    extension=php_gd2.dll
    extension=php_gettext.dll
    extension=php_mbstring.dll
    extension=php_mcrypt.dll
    extension=php_mysql.dll
    extension=php_mysqli.dll
    extension=php_pdo.dll
    extension=php_sockets.dll
    extension=php_sqlite.dll
    ...
    date.timezone = America/Sao_Paulo
    
  • Edite a variável PATH nas variáveis do sistema (Painel de controle -> Sistema -> Configurações avançadas do sistema -> Avançado -> Variáveis de ambiente), adicione o caminho do php “C:\apache\php“, conforme abaixo

  • Reinicie o computador
  • Abra o bloco de notas, cole o seguinte código
    <? phpinfo(); ?>
    
  • Salve o arquivo em C:\apache\htdocs\info.php
  • Abra o navegador e direcione até http://localhost/info.php, se tudo estiver normal uma página de informações do PHP será mostrada

MySQL

Instalação

  • Em Custom Setup, clique em Browse, e indique o caminho “C:\apache\mysql” para o instalador

  • Clique em Next e depois em Install para concluir a instalação
  • No final da instalação, mantenha marcada a opção “Launch the MySQL Instance Configuration Wizard

Configuração

  • No MySQL Instance Configuration, selecione “Detailed Configuration

  • Na próxima tela, de perfil de instalação selecione “Developer Machine
  • Em “database usage“, selecione “Multifunctional Database

  • Em “InnoDB Tablespace Settings“, clique em “Next
  • Na configuração do número de conexões, selecione “Manual Setting” e configure para 20 o número máximo de conexões

  • Em “network options”, marque a opção “Add firewall exception for this port
  • Na próxima tela, “default charset set“, selecione “Manual Selected Default Charset Set / Collation” e digite ou selecione “latin1

  • Em “Windows options“, deixe marcado “Install as Windows Service” e “Start MySQL Server automatically“, clique em Next
  • Marque “Modify Security Settings“, digite uma nova senha para o root, re-digite no campo abaixo, se você deseja habilitar o acesso root remoto, marque “Enable root access from remote machines

  • Por fim, clique em “Execute” para salvar as configurações selecionadas

  • Vá no executar do windows e digite “services.msc” para abrir a tela de serviços, procure pelo serviço MySQL, clique em “Parar serviço

  • Edite o arquivo C:\apache\mysql\my.cnf, e altere a seguinte chave:
datadir="C:/apache/mysql/data"
  • Volte ao executar do Windows e digite
%programdata%\MySQL\MySQL Server 5.5\data
  • Recorte todos arquivos e cole em “C:\apache\mysql\data\“, sobre-escrevendo os arquivos antigos
  • Retorne a tela dos serviços (services.msc) e inicie o serviço MySQL

Final de partida, em caso de dúvidas utilize os comentários.. abraço!