* Description: Synchronizes the Facebook Newsfeed
* Version: 1.0
* Author: Michael Vogel <https://pirati.ca/profile/heluecht>
+ * Status: Unsupported
*/
/* To-Do
logger("fbsync_follow: Check if contact is facebook contact. ".$contact["url"], LOGGER_DEBUG);
- if (!strstr($contact["url"], "://www.facebook.com") AND !strstr($contact["url"], "://facebook.com") AND !strstr($contact["url"], "@facebook.com"))
+ if (!strstr($contact["url"], "://www.facebook.com") && !strstr($contact["url"], "://facebook.com") && !strstr($contact["url"], "@facebook.com"))
return;
// contact seems to be a facebook contact, so continue
}
logger('fbsync_cron: cron_start');
+ $abandon_days = intval(get_config('system','account_abandon_days'));
+ if ($abandon_days < 1)
+ $abandon_days = 0;
+
+ $abandon_limit = date("Y-m-d H:i:s", time() - $abandon_days * 86400);
+
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'fbsync' AND `k` = 'sync' AND `v` = '1' ORDER BY RAND()");
if(count($r)) {
foreach($r as $rr) {
+
+ if ($abandon_days != 0) {
+ $user = q("SELECT `login_date` FROM `user` WHERE uid=%d AND `login_date` >= '%s'", $rr['uid'], $abandon_limit);
+ if (!count($user)) {
+ logger('abandoned account: timeline from user '.$rr['uid'].' will not be imported');
+ continue;
+ }
+ }
+
fbsync_get_self($rr['uid']);
logger('fbsync_cron: importing timeline from user '.$rr['uid']);
$access_token = get_pconfig($uid,'facebook','access_token');
require_once("include/oembed.php");
+ require_once("include/network.php");
+ require_once("include/items.php");
// check if it was already imported
$r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
$contact_id = 0;
- if (($post->parent_post_id != "") AND ($post->actor_id == $post->source_id)) {
+ if (($post->parent_post_id != "") && ($post->actor_id == $post->source_id)) {
$pos = strpos($post->parent_post_id, "_");
if ($pos != 0) {
$postarray['contact-id'] = $contact_id;
- if (array_key_exists("name", $userdata) AND ($userdata["name"] != "") AND !link_compare($userdata["link"], $postarray['author-link'])) {
+ if (array_key_exists("name", $userdata) && ($userdata["name"] != "") && !link_compare($userdata["link"], $postarray['author-link'])) {
$postarray['owner-name'] = $userdata["name"];
$postarray['owner-link'] = $userdata["link"];
$postarray['owner-avatar'] = $userdata["avatar"];
// Testing if we know the source or the actor
$contact_id = fbsync_fetch_contact($uid, $contacts[$post->source_id], false);
- if (($contact_id == 0) and array_key_exists($post->actor_id, $contacts))
+ if (($contact_id == 0) && array_key_exists($post->actor_id, $contacts))
$contact_id = fbsync_fetch_contact($uid, $contacts[$post->actor_id], false);
// If we don't know anyone, we guess we should know the source. Could be the wrong decision
if ($contact_id == -1) {
logger('fbsync_createpost: Contact is blocked. Post not imported '.print_r($post, true), LOGGER_DEBUG);
return;
- } elseif (($contact_id <= 0) AND !$create_user) {
+ } elseif (($contact_id <= 0) && !$create_user) {
logger('fbsync_createpost: No matching contact found. Post not imported '.print_r($post, true), LOGGER_DEBUG);
return;
} elseif ($contact_id == 0) {
break;
}
+ $pagedata = array();
$content = "";
- $type = "";
+ $pagedata["type"] = "";
- if (isset($post->attachment->name) and isset($post->attachment->href)) {
+ if (isset($post->attachment->name) && isset($post->attachment->href)) {
+ $post->attachment->href = original_url($post->attachment->href);
$oembed_data = oembed_fetch_url($post->attachment->href);
- $type = $oembed_data->type;
- if ($type == "rich")
- $type = "link";
+ $pagedata["type"] = $oembed_data->type;
+ if ($pagedata["type"] == "rich")
+ $pagedata["type"] = "link";
+ $pagedata["url"] = $post->attachment->href;
+ $pagedata["title"] = $post->attachment->name;
$content = "[bookmark=".$post->attachment->href."]".$post->attachment->name."[/bookmark]";
// If a link is not only attached but also added in the body, look if it can be removed in the body.
$removedlink = trim(str_replace($post->attachment->href, "", $postarray["body"]));
- if (($removedlink == "") OR strstr($postarray["body"], $removedlink))
+ if (($removedlink == "") || strstr($postarray["body"], $removedlink))
$postarray["body"] = $removedlink;
- } elseif (isset($post->attachment->name) AND ($post->attachment->name != ""))
+ } elseif (isset($post->attachment->name) && ($post->attachment->name != ""))
$content = "[b]" . $post->attachment->name."[/b]";
- $quote = "";
- if (isset($post->attachment->description) and ($post->attachment->fb_object_type != "photo"))
- $quote = $post->attachment->description;
+ $pagedata["text"] = "";
+ if (isset($post->attachment->description) && ($post->attachment->fb_object_type != "photo"))
+ $pagedata["text"] = $post->attachment->description;
- if (isset($post->attachment->caption) and ($post->attachment->fb_object_type == "photo"))
- $quote = $post->attachment->caption;
+ if (isset($post->attachment->caption) && ($post->attachment->fb_object_type == "photo"))
+ $pagedata["text"] = $post->attachment->caption;
- if ($quote.$post->attachment->href.$content.$postarray["body"] == "")
+ if ($pagedata["text"].$post->attachment->href.$content.$postarray["body"] == "")
return;
- if (isset($post->attachment->media) AND (($type == "") OR ($type == "link"))) {
+ if (isset($post->attachment->media) && (($pagedata["type"] == "") || ($pagedata["type"] == "link"))) {
foreach ($post->attachment->media AS $media) {
if (isset($media->type))
- $type = $media->type;
+ $pagedata["type"] = $media->type;
if (isset($media->src))
- $preview = $media->src;
+ $pagedata["images"][0]["src"] = $media->src;
if (isset($media->photo)) {
- if (isset($media->photo->images) AND (count($media->photo->images) > 1))
- $preview = $media->photo->images[1]->src;
+ if (isset($media->photo->images) && (count($media->photo->images) > 1))
+ $pagedata["images"][0]["src"] = $media->photo->images[1]->src;
if (isset($media->photo->fbid)) {
logger('fbsync_createpost: fetching fbid '.$media->photo->fbid, LOGGER_DEBUG);
$feed = fetch_url($url);
$data = json_decode($feed);
if (isset($data->images)) {
- $preview = $data->images[0]->source;
- logger('fbsync_createpost: got fbid '.$media->photo->fbid.' image '.$preview, LOGGER_DEBUG);
+ $pagedata["images"][0]["src"] = $data->images[0]->source;
+ logger('fbsync_createpost: got fbid '.$media->photo->fbid.' image '.$pagedata["images"][0]["src"], LOGGER_DEBUG);
} else
logger('fbsync_createpost: error fetching fbid '.$media->photo->fbid.' '.print_r($data, true), LOGGER_DEBUG);
}
}
- if (isset($media->href) AND ($preview != "") AND ($media->href != ""))
- $content .= "\n".'[url='.$media->href.'][img]'.$preview.'[/img][/url]';
- else {
- if ($preview != "")
- $content .= "\n".'[img]'.$preview.'[/img]';
+ $pagedata["images"][0]["src"] = fbpost_cleanpicture($pagedata["images"][0]["src"]);
+
+ if (isset($media->href) && ($pagedata["images"][0]["src"] != "") && ($media->href != "")) {
+ $media->href = original_url($media->href);
+ $pagedata["url"] = $media->href;
+ $content .= "\n".'[url='.$media->href.'][img]'.$pagedata["images"][0]["src"].'[/img][/url]';
+ } else {
+ if ($pagedata["images"][0]["src"] != "")
+ $content .= "\n".'[img]'.$pagedata["images"][0]["src"].'[/img]';
// if just a link, it may be a wall photo - check
if (isset($post->link))
}
}
- if ($type == "link")
- $postarray["object-type"] = ACTIVITY_OBJ_BOOKMARK;
-
- if ($content)
- $postarray["body"] .= "\n";
-
- if ($type)
- $postarray["body"] .= "[class=type-".$type."]";
-
- if ($content)
- $postarray["body"] .= trim($content);
+ if ($pagedata["type"] != "") {
+ if ($pagedata["type"] == "link")
+ $postarray["object-type"] = ACTIVITY_OBJ_BOOKMARK;
- if ($quote)
- $postarray["body"] .= "\n[quote]".trim($quote)."[/quote]";
+ $postarray["body"] .= add_page_info_data($pagedata);
+ } else {
+ if ($content)
+ $postarray["body"] .= "\n".trim($content);
- if ($type)
- $postarray["body"] .= "[/class]";
+ if ($pagedata["text"])
+ $postarray["body"] .= "\n[quote]".trim($pagedata["text"])."[/quote]";
- $postarray["body"] = trim($postarray["body"]);
+ $postarray["body"] = trim($postarray["body"]);
+ }
if (trim($postarray["body"]) == "")
return;
}
// Is blocked? Then return
- if ($r[0]["readonly"] OR $r[0]["blocked"]) {
+ if ($r[0]["readonly"] || $r[0]["blocked"]) {
logger("fbsync_createcomment: UID ".$uid." - Contact '".$r[0]["nick"]."' is blocked or readonly.", LOGGER_DEBUG);
return;
}
return;
$item = item_store($postarray);
+ $postarray["id"] = $item;
+
logger('fbsync_createcomment: UID '.$uid.' - CID '.$postarray['contact-id'].' - Nick '.$contact_nick.' posted comment '.$item, LOGGER_DEBUG);
if ($item == 0)
foreach($myconv as $conv) {
// now if we find a match, it means we're in this conversation
- if(!link_compare($conv['author-link'],$importer_url) AND !link_compare($conv['author-link'],$own_contact[0]["url"]))
+ if(!link_compare($conv['author-link'],$importer_url) && !link_compare($conv['author-link'],$own_contact[0]["url"]))
continue;
require_once('include/enotify.php');
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
intval($uid), dbesc("facebook::".$contact->id));
- if(!count($r) AND !$create_user)
+ if(!count($r) && !$create_user)
return(0);
- if (count($r) AND ($r[0]["readonly"] OR $r[0]["blocked"])) {
+ if (count($r) && ($r[0]["readonly"] || $r[0]["blocked"])) {
logger("fbsync_fetch_contact: Contact '".$r[0]["nick"]."' is blocked or readonly.", LOGGER_DEBUG);
return(-1);
}
intval($uid), dbesc("facebook::".$id));
if (count($contact)) {
- if (($contact[0]["readonly"] OR $contact[0]["blocked"])) {
+ if (($contact[0]["readonly"] || $contact[0]["blocked"])) {
logger("fbsync_fetchuser: Contact '".$contact[0]["nick"]."' is blocked or readonly.", LOGGER_DEBUG);
$user["contact-id"] = -1;
} else
require_once('include/items.php');
- //if ($last_updated == "")
+ if ($last_updated == "")
$last_updated = 0;
logger("fbsync_fetchfeed: fetching content for user ".$self_id);