X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fostatus.php;h=a086177a7a0258578b578613cf7f5a36bfc9f0a2;hb=26c5c7991af3b27f079b5494def31707bfe1054a;hp=53887d535b1b5d3f8bcfdc55b176b19c8a2878d8;hpb=2b3ebb9c3e9286d1374eec5661bc8330d2b133af;p=friendica.git diff --git a/include/ostatus.php b/include/ostatus.php index 53887d535b..a086177a7a 100644 --- a/include/ostatus.php +++ b/include/ostatus.php @@ -7,11 +7,62 @@ require_once("mod/share.php"); require_once("include/enotify.php"); require_once("include/socgraph.php"); require_once("include/Photo.php"); +require_once("include/Scrape.php"); +require_once("include/follow.php"); define('OSTATUS_DEFAULT_POLL_INTERVAL', 30); // given in minutes define('OSTATUS_DEFAULT_POLL_TIMEFRAME', 1440); // given in minutes define('OSTATUS_DEFAULT_POLL_TIMEFRAME_MENTIONS', 14400); // given in minutes +function ostatus_check_follow_friends() { + $r = q("SELECT `uid`,`v` FROM `pconfig` WHERE `cat`='system' AND `k`='ostatus_legacy_contact' AND `v` != ''"); + + if (!$r) + return; + + foreach ($r AS $contact) { + ostatus_follow_friends($contact["uid"], $contact["v"]); + set_pconfig($contact["uid"], "system", "ostatus_legacy_contact", ""); + } +} + +function ostatus_follow_friends($uid, $url) { + $contact = probe_url($url); + + if (!$contact) + return; + + $api = $contact["baseurl"]."/api/"; + + // Fetching friends + $data = z_fetch_url($api."statuses/friends.json?screen_name=".$contact["nick"]); + + if (!$data["success"]) + return; + + $friends = json_decode($data["body"]); + + foreach ($friends AS $friend) { + $url = $friend->statusnet_profile_url; + $r = q("SELECT `url` FROM `contact` WHERE `uid` = %d AND + (`nurl` = '%s' OR `alias` = '%s' OR `alias` = '%s') AND + `network` != '%s' LIMIT 1", + intval($uid), dbesc(normalise_link($url)), + dbesc(normalise_link($url)), dbesc($url), dbesc(NETWORK_STATUSNET)); + if (!$r) { + $data = probe_url($friend->statusnet_profile_url); + if ($data["network"] == NETWORK_OSTATUS) { + $result = new_contact($uid,$friend->statusnet_profile_url); + if ($result["success"]) + logger($friend->name." ".$url." - success", LOGGER_DEBUG); + else + logger($friend->name." ".$url." - failed", LOGGER_DEBUG); + } else + logger($friend->name." ".$url." - not OStatus", LOGGER_DEBUG); + } + } +} + function ostatus_fetchauthor($xpath, $context, $importer, &$contact, $onlyfetch) { $author = array(); @@ -239,11 +290,13 @@ function ostatus_import($xml,$importer,&$contact, &$hub) { // Delete a message if ($item["verb"] == "qvitter-delete-notice") { // ignore "Delete" messages (by now) + logger("Ignore delete message ".print_r($item, true)); continue; } if ($item["verb"] == ACTIVITY_JOIN) { // ignore "Join" messages + logger("Ignore join message ".print_r($item, true)); continue; } @@ -258,10 +311,24 @@ function ostatus_import($xml,$importer,&$contact, &$hub) { } if ($item["verb"] == ACTIVITY_FAVORITE) { - // ignore "Favorite" messages + $orig_uri = $xpath->query("activity:object/atom:id", $entry)->item(0)->nodeValue; + logger("Favorite ".$orig_uri." ".print_r($item, true)); + + $item["verb"] = ACTIVITY_LIKE; + $item["parent-uri"] = $orig_uri; + $item["gravity"] = GRAVITY_LIKE; + } + + if ($item["verb"] == NAMESPACE_OSTATUS."/unfavorite") { + // Ignore "Unfavorite" message + logger("Ignore unfavorite message ".print_r($item, true)); continue; } + // http://activitystrea.ms/schema/1.0/rsvp-yes + if (!in_array($item["verb"], array(ACTIVITY_POST, ACTIVITY_LIKE, ACTIVITY_SHARE))) + logger("Unhandled verb ".$item["verb"]." ".print_r($item, true)); + $item["created"] = $xpath->query('atom:published/text()', $entry)->item(0)->nodeValue; $item["edited"] = $xpath->query('atom:updated/text()', $entry)->item(0)->nodeValue; $conversation = $xpath->query('ostatus:conversation/text()', $entry)->item(0)->nodeValue;