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;
}