Merge pull request #2323 from annando/1601-dfrn-import
Complete rewrite of DFRN import
This commit is contained in:
commit
0c67c89715
7 changed files with 1451 additions and 2192 deletions
|
@ -726,10 +726,11 @@ function guess_image_type($filename, $fromcurl=false) {
|
||||||
* @param string $avatar Link to avatar picture
|
* @param string $avatar Link to avatar picture
|
||||||
* @param int $uid User id of contact owner
|
* @param int $uid User id of contact owner
|
||||||
* @param int $cid Contact id
|
* @param int $cid Contact id
|
||||||
|
* @param bool $force force picture update
|
||||||
*
|
*
|
||||||
* @return array Returns array of the different avatar sizes
|
* @return array Returns array of the different avatar sizes
|
||||||
*/
|
*/
|
||||||
function update_contact_avatar($avatar,$uid,$cid) {
|
function update_contact_avatar($avatar,$uid,$cid, $force = false) {
|
||||||
|
|
||||||
$r = q("SELECT `avatar`, `photo`, `thumb`, `micro` FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid));
|
$r = q("SELECT `avatar`, `photo`, `thumb`, `micro` FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid));
|
||||||
if (!$r)
|
if (!$r)
|
||||||
|
@ -737,7 +738,7 @@ function update_contact_avatar($avatar,$uid,$cid) {
|
||||||
else
|
else
|
||||||
$data = array($r[0]["photo"], $r[0]["thumb"], $r[0]["micro"]);
|
$data = array($r[0]["photo"], $r[0]["thumb"], $r[0]["micro"]);
|
||||||
|
|
||||||
if ($r[0]["avatar"] != $avatar) {
|
if (($r[0]["avatar"] != $avatar) OR $force) {
|
||||||
$photos = import_profile_photo($avatar,$uid,$cid, true);
|
$photos = import_profile_photo($avatar,$uid,$cid, true);
|
||||||
|
|
||||||
if ($photos) {
|
if ($photos) {
|
||||||
|
|
|
@ -374,7 +374,7 @@ function delivery_run(&$argv, &$argc){
|
||||||
break;
|
break;
|
||||||
|
|
||||||
logger('mod-delivery: local delivery');
|
logger('mod-delivery: local delivery');
|
||||||
local_delivery($x[0],$atom);
|
dfrn::import($atom, $x[0]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
1403
include/dfrn.php
1403
include/dfrn.php
File diff suppressed because it is too large
Load diff
2147
include/items.php
2147
include/items.php
File diff suppressed because it is too large
Load diff
|
@ -17,15 +17,6 @@ define('OSTATUS_DEFAULT_POLL_INTERVAL', 30); // given in minutes
|
||||||
define('OSTATUS_DEFAULT_POLL_TIMEFRAME', 1440); // given in minutes
|
define('OSTATUS_DEFAULT_POLL_TIMEFRAME', 1440); // given in minutes
|
||||||
define('OSTATUS_DEFAULT_POLL_TIMEFRAME_MENTIONS', 14400); // given in minutes
|
define('OSTATUS_DEFAULT_POLL_TIMEFRAME_MENTIONS', 14400); // given in minutes
|
||||||
|
|
||||||
define("NS_ATOM", "http://www.w3.org/2005/Atom");
|
|
||||||
define("NS_THR", "http://purl.org/syndication/thread/1.0");
|
|
||||||
define("NS_GEORSS", "http://www.georss.org/georss");
|
|
||||||
define("NS_ACTIVITY", "http://activitystrea.ms/spec/1.0/");
|
|
||||||
define("NS_MEDIA", "http://purl.org/syndication/atommedia");
|
|
||||||
define("NS_POCO", "http://portablecontacts.net/spec/1.0");
|
|
||||||
define("NS_OSTATUS", "http://ostatus.org/schema/1.0");
|
|
||||||
define("NS_STATUSNET", "http://status.net/schema/api/1/");
|
|
||||||
|
|
||||||
function ostatus_check_follow_friends() {
|
function ostatus_check_follow_friends() {
|
||||||
$r = q("SELECT `uid`,`v` FROM `pconfig` WHERE `cat`='system' AND `k`='ostatus_legacy_contact' AND `v` != ''");
|
$r = q("SELECT `uid`,`v` FROM `pconfig` WHERE `cat`='system' AND `k`='ostatus_legacy_contact' AND `v` != ''");
|
||||||
|
|
||||||
|
@ -193,14 +184,14 @@ function ostatus_salmon_author($xml, $importer) {
|
||||||
@$doc->loadXML($xml);
|
@$doc->loadXML($xml);
|
||||||
|
|
||||||
$xpath = new DomXPath($doc);
|
$xpath = new DomXPath($doc);
|
||||||
$xpath->registerNamespace('atom', "http://www.w3.org/2005/Atom");
|
$xpath->registerNamespace('atom', NAMESPACE_ATOM1);
|
||||||
$xpath->registerNamespace('thr', "http://purl.org/syndication/thread/1.0");
|
$xpath->registerNamespace('thr', NAMESPACE_THREAD);
|
||||||
$xpath->registerNamespace('georss', "http://www.georss.org/georss");
|
$xpath->registerNamespace('georss', NAMESPACE_GEORSS);
|
||||||
$xpath->registerNamespace('activity', "http://activitystrea.ms/spec/1.0/");
|
$xpath->registerNamespace('activity', NAMESPACE_ACTIVITY);
|
||||||
$xpath->registerNamespace('media', "http://purl.org/syndication/atommedia");
|
$xpath->registerNamespace('media', NAMESPACE_MEDIA);
|
||||||
$xpath->registerNamespace('poco', "http://portablecontacts.net/spec/1.0");
|
$xpath->registerNamespace('poco', NAMESPACE_POCO);
|
||||||
$xpath->registerNamespace('ostatus', "http://ostatus.org/schema/1.0");
|
$xpath->registerNamespace('ostatus', NAMESPACE_OSTATUS);
|
||||||
$xpath->registerNamespace('statusnet', "http://status.net/schema/api/1/");
|
$xpath->registerNamespace('statusnet', NAMESPACE_STATUSNET);
|
||||||
|
|
||||||
$entries = $xpath->query('/atom:entry');
|
$entries = $xpath->query('/atom:entry');
|
||||||
|
|
||||||
|
@ -224,14 +215,14 @@ function ostatus_import($xml,$importer,&$contact, &$hub) {
|
||||||
@$doc->loadXML($xml);
|
@$doc->loadXML($xml);
|
||||||
|
|
||||||
$xpath = new DomXPath($doc);
|
$xpath = new DomXPath($doc);
|
||||||
$xpath->registerNamespace('atom', "http://www.w3.org/2005/Atom");
|
$xpath->registerNamespace('atom', NAMESPACE_ATOM1);
|
||||||
$xpath->registerNamespace('thr', "http://purl.org/syndication/thread/1.0");
|
$xpath->registerNamespace('thr', NAMESPACE_THREAD);
|
||||||
$xpath->registerNamespace('georss', "http://www.georss.org/georss");
|
$xpath->registerNamespace('georss', NAMESPACE_GEORSS);
|
||||||
$xpath->registerNamespace('activity', "http://activitystrea.ms/spec/1.0/");
|
$xpath->registerNamespace('activity', NAMESPACE_ACTIVITY);
|
||||||
$xpath->registerNamespace('media', "http://purl.org/syndication/atommedia");
|
$xpath->registerNamespace('media', NAMESPACE_MEDIA);
|
||||||
$xpath->registerNamespace('poco', "http://portablecontacts.net/spec/1.0");
|
$xpath->registerNamespace('poco', NAMESPACE_POCO);
|
||||||
$xpath->registerNamespace('ostatus', "http://ostatus.org/schema/1.0");
|
$xpath->registerNamespace('ostatus', NAMESPACE_OSTATUS);
|
||||||
$xpath->registerNamespace('statusnet', "http://status.net/schema/api/1/");
|
$xpath->registerNamespace('statusnet', NAMESPACE_STATUSNET);
|
||||||
|
|
||||||
$gub = "";
|
$gub = "";
|
||||||
$hub_attributes = $xpath->query("/atom:feed/atom:link[@rel='hub']")->item(0)->attributes;
|
$hub_attributes = $xpath->query("/atom:feed/atom:link[@rel='hub']")->item(0)->attributes;
|
||||||
|
@ -1120,16 +1111,16 @@ function ostatus_format_picture_post($body) {
|
||||||
function ostatus_add_header($doc, $owner) {
|
function ostatus_add_header($doc, $owner) {
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
|
||||||
$root = $doc->createElementNS(NS_ATOM, 'feed');
|
$root = $doc->createElementNS(NAMESPACE_ATOM1, 'feed');
|
||||||
$doc->appendChild($root);
|
$doc->appendChild($root);
|
||||||
|
|
||||||
$root->setAttribute("xmlns:thr", NS_THR);
|
$root->setAttribute("xmlns:thr", NAMESPACE_THREAD);
|
||||||
$root->setAttribute("xmlns:georss", NS_GEORSS);
|
$root->setAttribute("xmlns:georss", NAMESPACE_GEORSS);
|
||||||
$root->setAttribute("xmlns:activity", NS_ACTIVITY);
|
$root->setAttribute("xmlns:activity", NAMESPACE_ACTIVITY);
|
||||||
$root->setAttribute("xmlns:media", NS_MEDIA);
|
$root->setAttribute("xmlns:media", NAMESPACE_MEDIA);
|
||||||
$root->setAttribute("xmlns:poco", NS_POCO);
|
$root->setAttribute("xmlns:poco", NAMESPACE_POCO);
|
||||||
$root->setAttribute("xmlns:ostatus", NS_OSTATUS);
|
$root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
|
||||||
$root->setAttribute("xmlns:statusnet", NS_STATUSNET);
|
$root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
|
||||||
|
|
||||||
$attributes = array("uri" => "https://friendi.ca", "version" => FRIENDICA_VERSION."-".DB_UPDATE_VERSION);
|
$attributes = array("uri" => "https://friendi.ca", "version" => FRIENDICA_VERSION."-".DB_UPDATE_VERSION);
|
||||||
xml_add_element($doc, $root, "generator", FRIENDICA_PLATFORM, $attributes);
|
xml_add_element($doc, $root, "generator", FRIENDICA_PLATFORM, $attributes);
|
||||||
|
@ -1321,6 +1312,10 @@ function ostatus_add_author($doc, $owner) {
|
||||||
function ostatus_entry($doc, $item, $owner, $toplevel = false, $repeat = false) {
|
function ostatus_entry($doc, $item, $owner, $toplevel = false, $repeat = false) {
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
|
||||||
|
if (($item["id"] != $item["parent"]) AND (normalise_link($item["author-link"]) != normalise_link($owner["url"]))) {
|
||||||
|
logger("OStatus entry is from author ".$owner["url"]." - not from ".$item["author-link"].". Quitting.", LOGGER_DEBUG);
|
||||||
|
}
|
||||||
|
|
||||||
$is_repeat = false;
|
$is_repeat = false;
|
||||||
|
|
||||||
/* if (!$repeat) {
|
/* if (!$repeat) {
|
||||||
|
@ -1343,15 +1338,15 @@ function ostatus_entry($doc, $item, $owner, $toplevel = false, $repeat = false)
|
||||||
$entry = $doc->createElement("activity:object");
|
$entry = $doc->createElement("activity:object");
|
||||||
$title = sprintf("New note by %s", $owner["nick"]);
|
$title = sprintf("New note by %s", $owner["nick"]);
|
||||||
} else {
|
} else {
|
||||||
$entry = $doc->createElementNS(NS_ATOM, "entry");
|
$entry = $doc->createElementNS(NAMESPACE_ATOM1, "entry");
|
||||||
|
|
||||||
$entry->setAttribute("xmlns:thr", NS_THR);
|
$entry->setAttribute("xmlns:thr", NAMESPACE_THREAD);
|
||||||
$entry->setAttribute("xmlns:georss", NS_GEORSS);
|
$entry->setAttribute("xmlns:georss", NAMESPACE_GEORSS);
|
||||||
$entry->setAttribute("xmlns:activity", NS_ACTIVITY);
|
$entry->setAttribute("xmlns:activity", NAMESPACE_ACTIVITY);
|
||||||
$entry->setAttribute("xmlns:media", NS_MEDIA);
|
$entry->setAttribute("xmlns:media", NAMESPACE_MEDIA);
|
||||||
$entry->setAttribute("xmlns:poco", NS_POCO);
|
$entry->setAttribute("xmlns:poco", NAMESPACE_POCO);
|
||||||
$entry->setAttribute("xmlns:ostatus", NS_OSTATUS);
|
$entry->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
|
||||||
$entry->setAttribute("xmlns:statusnet", NS_STATUSNET);
|
$entry->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
|
||||||
|
|
||||||
$author = ostatus_add_author($doc, $owner);
|
$author = ostatus_add_author($doc, $owner);
|
||||||
$entry->appendChild($author);
|
$entry->appendChild($author);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
require_once('include/items.php');
|
require_once('include/items.php');
|
||||||
|
require_once('include/dfrn.php');
|
||||||
require_once('include/event.php');
|
require_once('include/event.php');
|
||||||
|
|
||||||
require_once('library/defuse/php-encryption-1.2.1/Crypto.php');
|
require_once('library/defuse/php-encryption-1.2.1/Crypto.php');
|
||||||
|
@ -209,7 +210,7 @@ function dfrn_notify_post(&$a) {
|
||||||
logger('rino: decrypted data: ' . $data, LOGGER_DATA);
|
logger('rino: decrypted data: ' . $data, LOGGER_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
$ret = local_delivery($importer,$data);
|
$ret = dfrn::import($data, $importer);
|
||||||
xml_status($ret);
|
xml_status($ret);
|
||||||
|
|
||||||
// NOTREACHED
|
// NOTREACHED
|
||||||
|
|
|
@ -392,7 +392,11 @@ function ping_get_notifications($uid) {
|
||||||
// Replace the name with {0} but ensure to make that only once
|
// Replace the name with {0} but ensure to make that only once
|
||||||
// The {0} is used later and prints the name in bold.
|
// The {0} is used later and prints the name in bold.
|
||||||
|
|
||||||
$pos = strpos($notification["message"],$notification['name']);
|
if ($notification['name'] != "")
|
||||||
|
$pos = strpos($notification["message"],$notification['name']);
|
||||||
|
else
|
||||||
|
$pos = false;
|
||||||
|
|
||||||
if ($pos !== false)
|
if ($pos !== false)
|
||||||
$notification["message"] = substr_replace($notification["message"],"{0}",$pos,strlen($notification["name"]));
|
$notification["message"] = substr_replace($notification["message"],"{0}",$pos,strlen($notification["name"]));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue