Facebook: Now the last fetched date is saved.

This commit is contained in:
Michael Vogel 2012-04-07 18:11:57 +02:00
parent 3689c821b6
commit 11f1d7e260

View file

@ -1178,6 +1178,46 @@ function fb_queue_hook(&$a,&$b) {
} }
} }
function fb_get_timeline($access_token, &$since) {
$entries->data = array();
$newest = 0;
$url = 'https://graph.facebook.com/me/home?access_token='.$access_token;
if ($since != 0)
$url .= "&since=".$since;
do {
$s = fetch_url($url);
$j = json_decode($s);
$oldestdate = time();
if (isset($j->data))
foreach ($j->data as $entry) {
$created = strtotime($entry->created_time);
if ($newest < $created)
$newest = $created;
if ($created >= $since)
$entries->data[] = $entry;
if ($created <= $oldestdate)
$oldestdate = $created;
}
else
break;
$url = $s->paging->next;
} while (($oldestdate > $since) and ($since != 0));
if ($newest > $since)
$since = $newest;
return($entries);
}
function fb_consume_all($uid) { function fb_consume_all($uid) {
require_once('include/items.php'); require_once('include/items.php');
@ -1199,17 +1239,20 @@ function fb_consume_all($uid) {
} }
} }
} }
$s = fetch_url('https://graph.facebook.com/me/home?access_token=' . $access_token); // Get the last date
if($s) { $lastdate = get_pconfig($uid,'facebook','lastdate');
$j = json_decode($s); // echo "Alt: ".$lastdate."\n";
if (isset($j->data)) { // fetch all items since the last date
logger('fb_consume_stream: feed: ' . print_r($j,true), LOGGER_DATA); $j = fb_get_timeline($access_token, &$lastdate);
fb_consume_stream($uid,$j,false); if (isset($j->data)) {
} else { logger('fb_consume_stream: feed: ' . print_r($j,true), LOGGER_DATA);
logger('fb_consume_stream: feed: got no data from Facebook: ' . print_r($j,true), LOGGER_NORMAL); fb_consume_stream($uid,$j,false);
} // echo "Neu: ".$lastdate."\n";
}
// Write back the last date
set_pconfig($uid,'facebook','lastdate', $lastdate);
} else
logger('fb_consume_stream: feed: got no data from Facebook: ' . print_r($j,true), LOGGER_NORMAL);
} }
function fb_get_photo($uid,$link) { function fb_get_photo($uid,$link) {
@ -1304,7 +1347,7 @@ function fb_consume_stream($uid,$j,$wall = false) {
// // Definitely a quickhack // // Definitely a quickhack
// $datarray['contact-id'] = $self[0]['id']; // $datarray['contact-id'] = $self[0]['id'];
//} else { //} else {
logger('no contact: post ignored'); logger('facebook: no contact '.$from->name.' '.$from->id.'. post ignored');
continue; continue;
//} //}
} }
@ -1340,6 +1383,8 @@ function fb_consume_stream($uid,$j,$wall = false) {
$datarray['author-avatar'] = 'https://graph.facebook.com/' . $from->id . '/picture'; $datarray['author-avatar'] = 'https://graph.facebook.com/' . $from->id . '/picture';
$datarray['plink'] = $datarray['author-link'] . '&v=wall&story_fbid=' . substr($entry->id,strpos($entry->id,'_') + 1); $datarray['plink'] = $datarray['author-link'] . '&v=wall&story_fbid=' . substr($entry->id,strpos($entry->id,'_') + 1);
logger('facebook: post '.$entry->id.' from '.$from->name);
$datarray['body'] = escape_tags($entry->message); $datarray['body'] = escape_tags($entry->message);
if($entry->name and $entry->link) if($entry->name and $entry->link)
@ -1388,7 +1433,7 @@ function fb_consume_stream($uid,$j,$wall = false) {
} }
if(trim($datarray['body']) == '') { if(trim($datarray['body']) == '') {
logger('facebook: empty body'); logger('facebook: empty body '.$entry->id.' '.print_r($entry, true));
continue; continue;
} }
@ -1407,6 +1452,18 @@ function fb_consume_stream($uid,$j,$wall = false) {
//if(($datarray['body'] != '') and ($uid == 1)) //if(($datarray['body'] != '') and ($uid == 1))
// $datarray['body'] .= "[noparse]".print_r($entry, true)."[/noparse]"; // $datarray['body'] .= "[noparse]".print_r($entry, true)."[/noparse]";
if ($entry->place->name)
$datarray['coord'] = $entry->place->name;
else if ($entry->place->location->street or $entry->place->location->city or $entry->place->location->Denmark) {
if ($entry->place->location->street)
$datarray['coord'] = $entry->place->location->street;
if ($entry->place->location->city)
$datarray['coord'] .= " ".$entry->place->location->city;
if ($entry->place->location->country)
$datarray['coord'] .= " ".$entry->place->location->country;
} else if ($entry->place->location->latitude and $entry->place->location->longitude)
$datarray['coord'] = substr($entry->place->location->latitude, 0, 8)
.' '.substr($entry->place->location->longitude, 0, 8);
$datarray['created'] = datetime_convert('UTC','UTC',$entry->created_time); $datarray['created'] = datetime_convert('UTC','UTC',$entry->created_time);
$datarray['edited'] = datetime_convert('UTC','UTC',$entry->updated_time); $datarray['edited'] = datetime_convert('UTC','UTC',$entry->updated_time);