PBLA: PHP BlogLines API (by Allan Psicobyte)
Indice
Código fuente
/*
PBLA: PHP BlogLines API
PBLA permite a programas PHP acceder a la API de Bloglines.
Versión: PBLA v1.1 (Beta, claro) 14 Diciembre 2005
Autor: Allan Psicobyte (http://www.psicobyte.com
PBLA website: http://www.psicobyte.com/pbla/
Licencia: Este programa se distribuye bajo una Licencia Pública GNU (http://gugs.sindominio.net/licencias/gples.html)
*/
function PBLA_Listsubs($usuario,$contrasena){
$archivoXML='rpc.bloglines.com';
$autoriza= $usuario.":".$contrasena;
$fp = @fsockopen($archivoXML, 80, $errnum, $errstr, 15); // Open a socket connection
if($fp) {
$fp_data="GET /listsubs HTTP/1.0\r\n";
$fp_data.="Host: $archivoXML\r\n";
$fp_data.="User-Agent: PHP BlogLines API (by Psicobyte)\r\n";
$fp_data.="Authorization: Basic ".base64_encode($autoriza)."\r\n";
$fp_data.="Connection: Close\r\n\r\n";
fputs($fp, $fp_data);
$bandera=0;
while($linea=fgets($fp,1024)) {
if ($linea=="\r\n"){
$bandera=1;
}
elseif ($bandera==1) {
$texto.=$linea;
}
else{
$cabecera.=$linea;
}
}
fclose($fp);
ereg( "HTTP/1.1 ([0-9]*)", $cabecera, $regs);
if ($regs[1]!='200'){
return $regs[1];
}
else {
$parser = xml_parser_create();
xml_parse_into_struct($parser, $texto, $salida1, $salida2);
xml_parser_free($parser);
$elemento=0;
$elem=0;
foreach ($salida1 as $valor){
if ($valor['tag']== 'OUTLINE' && $valor['attributes']['BLOGLINESSUBID']!=''){
if ($valor['attributes']['XMLURL']!= ''){
//Esto solo si está contenido en una carpeta
if ($nivel_ultima_carpeta!='' && $valor['level']> $nivel_ultima_carpeta){
$outlines['content'][$elemento-1]['content'][$elem]= $valor['attributes'];
$elem++;
$outlines['content'][$elemento-1]['unread']+= $valor['attributes']['BLOGLINESUNREAD'];
$outlines['unread']+= $valor['attributes']['BLOGLINESUNREAD'];
}
else {
$outlines['content'][$elemento]= $valor['attributes'];
$outlines['unread']+= $valor['attributes']['BLOGLINESUNREAD'];
$elemento++;
}
}
else{
$nivel_ultima_carpeta= $valor['level'];
$outlines['content'][$elemento]= $valor['attributes'];
$elemento++;
$elem=0;
}
}
elseif($valor['tag']== 'DATECREATED'){
$outlines['DATECREATED']= $valor['value'];
}
elseif($valor['tag']== 'OWNERNAME'){
$outlines['OWNERNAME']= $valor['value'];
}
elseif($valor['tag']== 'TITLE'){
$outlines['TITLE']= $valor['value'];
}
}
return $outlines;
}
}
else {
return '000';
}
}
function PBLA_Update($usuario){
$archivoXML='rpc.bloglines.com';
$fp = @fsockopen($archivoXML, 80, $errnum, $errstr, 15); // Open a socket connection
if($fp) {
$fp_data="GET /update?user=".$usuario."&ver=1 HTTP/1.0\r\n";
$fp_data.="Host: $archivoXML\r\n";
$fp_data.="User-Agent: PHP BlogLines API (by Psicobyte)\r\n";
$fp_data.="Connection: Close\r\n\r\n";
fputs($fp, $fp_data);
$bandera=0;
while($linea=fgets($fp,1024)) {
if ($linea=="\r\n"){
$bandera=1;
}
elseif ($bandera==1) {
$texto.=$linea;
}
else{
$cabecera.=$linea;
}
}
fclose($fp);
ereg( "HTTP/1.1 ([0-9]*)", $cabecera, $regs);
if ($regs[1]!='200'){
return $regs[1];
}
else {
ereg( "\|([0-9]*)\|([^\|]*)\|", $texto, $regs);
return Array($regs[1], $regs[2]);
}
}
else {
return '000';
}
}
function PBLA_Getitems($usuario,$contrasena,$identificador,$opciones){
$archivoXML='rpc.bloglines.com';
$autoriza= $usuario.":".$contrasena;
$query= '?s='.$identificador;
if ($opciones['mark_reads']=='1'){
$query.= '&n=1';
}
else {
$query.= '&n=0';
}
if ($opciones['date']!=''){
$query.= '&d='.$opciones['date'];
}
$fp = @fsockopen($archivoXML, 80, $errnum, $errstr, 15); // Open a socket connection
if($fp) {
$fp_data="GET /getitems".$query." HTTP/1.0\r\n";
$fp_data.="Host: $archivoXML\r\n";
$fp_data.="User-Agent: Psicobyte Client\r\n";
$fp_data.="Authorization: Basic ".base64_encode($autoriza)."\r\n";
$fp_data.="Connection: Close\r\n\r\n";
fputs($fp, $fp_data);
$bandera=0;
while($linea=fgets($fp,1024)) {
if (strlen($linea)< 3){
$bandera=1;
}
elseif ($bandera==1) {
$texto.=$linea;
}
else{
$cabecera.=$linea;
}
}
fclose($fp);
ereg( "HTTP/1.1 ([0-9]*)", $cabecera, $regs);
if ($regs[1]!='200'){
return $regs[1];
}
else {
return $texto;
}
}
else {
return '000';
}
}
function PBLA_ListFolders($outlines){
foreach ($outlines['content'] as $valor){
if ($valor['XMLURL']==''){
$valor['content']= sizeof($valor['content']);
$elementos[]= $valor;
}
}
return $elementos;
}
function PBLA_Blogroll($outlines,$folders_ignore,$options){
$carpetas= PBLA_ListFolders($outlines);
$completo= '<div class="pblamain">'."\n";
foreach ($carpetas as $valor){
if (!$folders_ignore || !in_array($valor['BLOGLINESSUBID'],$folders_ignore)){
$blogs=PBLA_ItemsInFolder($outlines,$valor['BLOGLINESSUBID']);
$completo.= '<div class="pblafolder">'."\n".'<div class="pblatitle">'.$valor['TITLE'].'</div>'."\n";
foreach ($blogs as $valor2){
if ($options['unreads']==1 && $valor2['BLOGLINESUNREAD']!=0){
$sinleer= " <strong>[".$valor2['BLOGLINESUNREAD']."]</strong> ";
}
else{
$sinleer="";
}
if ($options['rsslink']==1){
$fuenterss= ' <a href="'.$valor2['XMLURL'].'" class="pblarsslink">RSS</a>';
}
else{
$fuenterss='';
}
$completo.= '<div class="pblaitem"><a href="' . $valor2['HTMLURL'] . '">' . $valor2['TITLE'] . '</a>' . $fuenterss . $sinleer . '</div>' . "\n";
}
$completo.= '</div>'."\n";
}
}
$blogs=PBLA_ItemsInFolder($outlines,'');
$completo.= '<div class="pblafolder">'."\n".'<div class="blogroltitle">Sin Clasificar</div>'."\n";
foreach ($blogs as $valor2){
if ($options['unreads']==1 && $valor2['BLOGLINESUNREAD']!=0){
$sinleer= " <strong>[".$valor2['BLOGLINESUNREAD']."]</strong> ";
}
else{
$sinleer="";
}
if ($options['rsslink']==1){
$fuenterss= ' <a href="'.$valor2['XMLURL'].'" class="pblarsslink">RSS</a>';
}
else{
$fuenterss='';
}
$completo.= '<div class="pblaitem"><a href="' . $valor2['HTMLURL'] . '">' . $valor2['TITLE'] . '</a>' . $fuenterss . $sinleer . '</div>' . "\n";
}
$completo.= '</div>'."\n";
$completo.= '</div>'."\n";
return $completo;
}
function PBLA_ItemsInFolder($outlines,$folderid){
if ($folderid=='' || $folderid=='all'){
foreach ($outlines['content'] as $valor){
if ($valor['XMLURL']!=''){
$elementos[]= $valor;
}
}
}
if ($folderid!='') {
foreach ($outlines['content'] as $valor){
if ($folderid=='all' || $valor['BLOGLINESSUBID']==$folderid){
$elementos= array_merge($elementos, $valor['content']);
}
}
}
return $elementos;
}