From 4c5e091b784574337c7124b7763bbd19f4bc810f Mon Sep 17 00:00:00 2001
From: Friendika <info@friendika.com>
Date: Mon, 4 Apr 2011 20:40:31 -0700
Subject: [PATCH] better twitter follow support

---
 include/Scrape.php | 34 +++++++++++++++++++++++++++-------
 mod/follow.php     |  5 ++++-
 2 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/include/Scrape.php b/include/Scrape.php
index 21820ddaff..002fdfb35a 100644
--- a/include/Scrape.php
+++ b/include/Scrape.php
@@ -227,16 +227,36 @@ function scrape_feed($url) {
 	if(! $dom)
 		return $ret;
 
+
+	$items = $dom->getElementsByTagName('img');
+
+	// get img elements (twitter)
+
+	if($items) {
+		foreach($items as $item) {
+			$x = $item->getAttribute('id');
+			if($x === 'profile-image') {
+				$ret['photo'] = $item->getAttribute('src');
+			}
+		}
+	}
+
 	$items = $dom->getElementsByTagName('link');
 
-	// get Atom link elements
+	// get Atom/RSS link elements, take the first one of either.
 
-	foreach($items as $item) {
-		$x = $item->getAttribute('rel');
-		if(($x === 'alternate') && ($item->getAttribute('type') === 'application/atom+xml'))
-			$ret['feed_atom'] = $item->getAttribute('href');
-		if(($x === 'alternate') && ($item->getAttribute('type') === 'application/rss+xml'))
-			$ret['feed_rss'] = $item->getAttribute('href');
+	if($items) {
+		foreach($items as $item) {
+			$x = $item->getAttribute('rel');
+			if(($x === 'alternate') && ($item->getAttribute('type') === 'application/atom+xml')) {
+				if(! x($ret,'feed_atom'))
+					$ret['feed_atom'] = $item->getAttribute('href');
+			}
+			if(($x === 'alternate') && ($item->getAttribute('type') === 'application/rss+xml')) {
+				if(! x($ret,'feed_rss'))
+					$ret['feed_rss'] = $item->getAttribute('href');
+			}
+		}	
 	}
 
 	return $ret;
diff --git a/mod/follow.php b/mod/follow.php
index 06e81ceedd..48ad667476 100644
--- a/mod/follow.php
+++ b/mod/follow.php
@@ -112,6 +112,8 @@ function follow_post(&$a) {
 		if(count($ret) && ($ret['feed_atom'] || $ret['feed_rss'])) {
 			$poll = ((x($ret,'feed_atom')) ? unamp($ret['feed_atom']) : unamp($ret['feed_rss']));
 			$vcard = array();
+				if(x($ret,'photo'))
+					$vcard['photo'] = $ret['photo'];
 			require_once('simplepie/simplepie.inc');
 		    $feed = new SimplePie();
 			$xml = fetch_url($poll);
@@ -120,7 +122,8 @@ function follow_post(&$a) {
 
 		    $feed->init();
 
-			$vcard['photo'] = $feed->get_image_url();
+			if(! x($vcard,'photo'))
+				$vcard['photo'] = $feed->get_image_url();
 			$author = $feed->get_author();
 			if($author) {			
 				$vcard['fn'] = unxmlify(trim($author->get_name()));
-- 
2.39.5