DFRN-Import is now nearly complete, changed namespace constants
This commit is contained in:
parent
1cdcb9fc2e
commit
decaac6c31
|
@ -386,15 +386,15 @@ class dfrn {
|
|||
$root = $doc->createElementNS(NS_ATOM, 'feed');
|
||||
$doc->appendChild($root);
|
||||
|
||||
$root->setAttribute("xmlns:thr", NS_THR);
|
||||
$root->setAttribute("xmlns:at", "http://purl.org/atompub/tombstones/1.0");
|
||||
$root->setAttribute("xmlns:media", NS_MEDIA);
|
||||
$root->setAttribute("xmlns:dfrn", "http://purl.org/macgirvin/dfrn/1.0");
|
||||
$root->setAttribute("xmlns:activity", NS_ACTIVITY);
|
||||
$root->setAttribute("xmlns:georss", NS_GEORSS);
|
||||
$root->setAttribute("xmlns:poco", NS_POCO);
|
||||
$root->setAttribute("xmlns:ostatus", NS_OSTATUS);
|
||||
$root->setAttribute("xmlns:statusnet", NS_STATUSNET);
|
||||
$root->setAttribute("xmlns:thr", NAMESPACE_THREAD);
|
||||
$root->setAttribute("xmlns:at", NAMESPACE_TOMB);
|
||||
$root->setAttribute("xmlns:media", NAMESPACE_MEDIA);
|
||||
$root->setAttribute("xmlns:dfrn", NAMESPACE_DFRN);
|
||||
$root->setAttribute("xmlns:activity", NAMESPACE_ACTIVITY);
|
||||
$root->setAttribute("xmlns:georss", NAMESPACE_GEORSS);
|
||||
$root->setAttribute("xmlns:poco", NAMESPACE_POCO);
|
||||
$root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
|
||||
$root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
|
||||
|
||||
xml_add_element($doc, $root, "id", app::get_baseurl()."/profile/".$owner["nick"]);
|
||||
xml_add_element($doc, $root, "title", $owner["name"]);
|
||||
|
|
|
@ -263,7 +263,7 @@ $onlyfetch = true; // Test
|
|||
return($objxml);
|
||||
}
|
||||
|
||||
private function process_mail($header, $xpath, $mail, $importer, $contact) {
|
||||
private function process_mail($xpath, $mail, $importer) {
|
||||
|
||||
$msg = array();
|
||||
$msg["uid"] = $importer['importer_uid'];
|
||||
|
@ -281,15 +281,10 @@ $onlyfetch = true; // Test
|
|||
|
||||
dbesc_array($msg);
|
||||
|
||||
//$r = dbq("INSERT INTO `mail` (`" . implode("`, `", array_keys($msg))
|
||||
// . "`) VALUES ('" . implode("', '", array_values($msg)) . "')" );
|
||||
|
||||
print_r($msg);
|
||||
$r = dbq("INSERT INTO `mail` (`".implode("`, `", array_keys($msg))."`) VALUES ('".implode("', '", array_values($msg))."')");
|
||||
|
||||
// send notifications.
|
||||
|
||||
require_once('include/enotify.php');
|
||||
|
||||
$notif_params = array(
|
||||
'type' => NOTIFY_MAIL,
|
||||
'notify_flags' => $importer['notify-flags'],
|
||||
|
@ -305,15 +300,178 @@ print_r($msg);
|
|||
'otype' => 'mail'
|
||||
);
|
||||
|
||||
// notification($notif_params);
|
||||
print_r($notif_params);
|
||||
notification($notif_params);
|
||||
}
|
||||
|
||||
private function process_suggestion($xpath, $suggestion, $importer) {
|
||||
|
||||
$suggest = array();
|
||||
$suggest["uid"] = $importer["importer_uid"];
|
||||
$suggest["cid"] = $importer["id"];
|
||||
$suggest["url"] = $xpath->query('dfrn:url/text()', $suggestion)->item(0)->nodeValue;
|
||||
$suggest["name"] = $xpath->query('dfrn:name/text()', $suggestion)->item(0)->nodeValue;
|
||||
$suggest["photo"] = $xpath->query('dfrn:photo/text()', $suggestion)->item(0)->nodeValue;
|
||||
$suggest["request"] = $xpath->query('dfrn:request/text()', $suggestion)->item(0)->nodeValue;
|
||||
$suggest["note"] = $xpath->query('dfrn:note/text()', $suggestion)->item(0)->nodeValue;
|
||||
|
||||
// Does our member already have a friend matching this description?
|
||||
|
||||
$r = q("SELECT `id` FROM `contact` WHERE `name` = '%s' AND `nurl` = '%s' AND `uid` = %d LIMIT 1",
|
||||
dbesc($suggest["name"]),
|
||||
dbesc(normalise_link($suggest["url"])),
|
||||
intval($suggest["uid"])
|
||||
);
|
||||
if(count($r))
|
||||
return false;
|
||||
|
||||
// Do we already have an fcontact record for this person?
|
||||
|
||||
$fid = 0;
|
||||
$r = q("SELECT `id` FROM `fcontact` WHERE `url` = '%s' AND `name` = '%s' AND `request` = '%s' LIMIT 1",
|
||||
dbesc($suggest["url"]),
|
||||
dbesc($suggest["name"]),
|
||||
dbesc($suggest["request"])
|
||||
);
|
||||
if(count($r)) {
|
||||
$fid = $r[0]["id"];
|
||||
|
||||
// OK, we do. Do we already have an introduction for this person ?
|
||||
$r = q("SELECT `id` FROM `intro` WHERE `uid` = %d AND `fid` = %d LIMIT 1",
|
||||
intval($suggest["uid"]),
|
||||
intval($fid)
|
||||
);
|
||||
if(count($r))
|
||||
return false;
|
||||
}
|
||||
if(!$fid)
|
||||
$r = q("INSERT INTO `fcontact` (`name`,`url`,`photo`,`request`) VALUES ('%s', '%s', '%s', '%s')",
|
||||
dbesc($suggest["name"]),
|
||||
dbesc($suggest["url"]),
|
||||
dbesc($suggest["photo"]),
|
||||
dbesc($suggest["request"])
|
||||
);
|
||||
$r = q("SELECT `id` FROM `fcontact` WHERE `url` = '%s' AND `name` = '%s' AND `request` = '%s' LIMIT 1",
|
||||
dbesc($suggest["url"]),
|
||||
dbesc($suggest["name"]),
|
||||
dbesc($suggest["request"])
|
||||
);
|
||||
if(count($r))
|
||||
$fid = $r[0]["id"];
|
||||
else
|
||||
// database record did not get created. Quietly give up.
|
||||
return false;
|
||||
|
||||
|
||||
$hash = random_string();
|
||||
|
||||
$r = q("INSERT INTO `intro` (`uid`, `fid`, `contact-id`, `note`, `hash`, `datetime`, `blocked`)
|
||||
VALUES(%d, %d, %d, '%s', '%s', '%s', %d)",
|
||||
intval($suggest["uid"]),
|
||||
intval($fid),
|
||||
intval($suggest["cid"]),
|
||||
dbesc($suggest["body"]),
|
||||
dbesc($hash),
|
||||
dbesc(datetime_convert()),
|
||||
intval(0)
|
||||
);
|
||||
|
||||
notification(array(
|
||||
'type' => NOTIFY_SUGGEST,
|
||||
'notify_flags' => $importer["notify-flags"],
|
||||
'language' => $importer["language"],
|
||||
'to_name' => $importer["username"],
|
||||
'to_email' => $importer["email"],
|
||||
'uid' => $importer["importer_uid"],
|
||||
'item' => $suggest,
|
||||
'link' => App::get_baseurl()."/notifications/intros",
|
||||
'source_name' => $importer["name"],
|
||||
'source_link' => $importer["url"],
|
||||
'source_photo' => $importer["photo"],
|
||||
'verb' => ACTIVITY_REQ_FRIEND,
|
||||
'otype' => "intro"
|
||||
));
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
private function process_suggestion($header, $xpath, $suggestion, $importer, $contact) {
|
||||
private function process_relocation($xpath, $relocation, $importer) {
|
||||
|
||||
$relocate = array();
|
||||
$relocate["uid"] = $importer["importer_uid"];
|
||||
$relocate["cid"] = $importer["id"];
|
||||
$relocate["url"] = $xpath->query('dfrn:url/text()', $relocation)->item(0)->nodeValue;
|
||||
$relocate["name"] = $xpath->query('dfrn:name/text()', $relocation)->item(0)->nodeValue;
|
||||
$relocate["photo"] = $xpath->query('dfrn:photo/text()', $relocation)->item(0)->nodeValue;
|
||||
$relocate["thumb"] = $xpath->query('dfrn:thumb/text()', $relocation)->item(0)->nodeValue;
|
||||
$relocate["micro"] = $xpath->query('dfrn:micro/text()', $relocation)->item(0)->nodeValue;
|
||||
$relocate["request"] = $xpath->query('dfrn:request/text()', $relocation)->item(0)->nodeValue;
|
||||
$relocate["confirm"] = $xpath->query('dfrn:confirm/text()', $relocation)->item(0)->nodeValue;
|
||||
$relocate["notify"] = $xpath->query('dfrn:notify/text()', $relocation)->item(0)->nodeValue;
|
||||
$relocate["poll"] = $xpath->query('dfrn:poll/text()', $relocation)->item(0)->nodeValue;
|
||||
$relocate["sitepubkey"] = $xpath->query('dfrn:sitepubkey/text()', $relocation)->item(0)->nodeValue;
|
||||
|
||||
// update contact
|
||||
$r = q("SELECT `photo`, `url` FROM `contact` WHERE `id` = %d AND `uid` = %d;",
|
||||
intval($importer["id"]),
|
||||
intval($importer["importer_uid"]));
|
||||
if (!$r)
|
||||
return false;
|
||||
|
||||
$old = $r[0];
|
||||
|
||||
$x = q("UPDATE `contact` SET
|
||||
`name` = '%s',
|
||||
`photo` = '%s',
|
||||
`thumb` = '%s',
|
||||
`micro` = '%s',
|
||||
`url` = '%s',
|
||||
`nurl` = '%s',
|
||||
`request` = '%s',
|
||||
`confirm` = '%s',
|
||||
`notify` = '%s',
|
||||
`poll` = '%s',
|
||||
`site-pubkey` = '%s'
|
||||
WHERE `id` = %d AND `uid` = %d;",
|
||||
dbesc($relocate["name"]),
|
||||
dbesc($relocate["photo"]),
|
||||
dbesc($relocate["thumb"]),
|
||||
dbesc($relocate["micro"]),
|
||||
dbesc($relocate["url"]),
|
||||
dbesc(normalise_link($relocate["url"])),
|
||||
dbesc($relocate["request"]),
|
||||
dbesc($relocate["confirm"]),
|
||||
dbesc($relocate["notify"]),
|
||||
dbesc($relocate["poll"]),
|
||||
dbesc($relocate["sitepubkey"]),
|
||||
intval($importer["id"]),
|
||||
intval($importer["importer_uid"]));
|
||||
|
||||
if ($x === false)
|
||||
return false;
|
||||
|
||||
// update items
|
||||
$fields = array(
|
||||
'owner-link' => array($old["url"], $relocate["url"]),
|
||||
'author-link' => array($old["url"], $relocate["url"]),
|
||||
'owner-avatar' => array($old["photo"], $relocate["photo"]),
|
||||
'author-avatar' => array($old["photo"], $relocate["photo"]),
|
||||
);
|
||||
foreach ($fields as $n=>$f){
|
||||
$x = q("UPDATE `item` SET `%s` = '%s' WHERE `%s` = '%s' AND `uid` = %d",
|
||||
$n, dbesc($f[1]),
|
||||
$n, dbesc($f[0]),
|
||||
intval($importer["importer_uid"]));
|
||||
if ($x === false)
|
||||
return false;
|
||||
}
|
||||
|
||||
private function process_relocation($header, $xpath, $relocation, $importer, $contact) {
|
||||
/// @TODO
|
||||
/// merge with current record, current contents have priority
|
||||
/// update record, set url-updated
|
||||
/// update profile photos
|
||||
/// schedule a scan?
|
||||
return true;
|
||||
}
|
||||
|
||||
private function process_entry($header, $xpath, $entry, $importer, $contact) {
|
||||
|
@ -511,7 +669,11 @@ print_r($notif_params);
|
|||
return $item_id;
|
||||
}
|
||||
|
||||
function import($xml,$importer,&$contact, &$hub) {
|
||||
private function process_deletion($header, $xpath, $entry, $importer, $contact) {
|
||||
die("blubb");
|
||||
}
|
||||
|
||||
function import($xml,$importer) {
|
||||
|
||||
$a = get_app();
|
||||
|
||||
|
@ -524,16 +686,19 @@ print_r($notif_params);
|
|||
@$doc->loadXML($xml);
|
||||
|
||||
$xpath = new DomXPath($doc);
|
||||
$xpath->registerNamespace('atom', "http://www.w3.org/2005/Atom");
|
||||
$xpath->registerNamespace('thr', "http://purl.org/syndication/thread/1.0");
|
||||
$xpath->registerNamespace('at', "http://purl.org/atompub/tombstones/1.0");
|
||||
$xpath->registerNamespace('media', "http://purl.org/syndication/atommedia");
|
||||
$xpath->registerNamespace('dfrn', "http://purl.org/macgirvin/dfrn/1.0");
|
||||
$xpath->registerNamespace('activity', "http://activitystrea.ms/spec/1.0/");
|
||||
$xpath->registerNamespace('georss', "http://www.georss.org/georss");
|
||||
$xpath->registerNamespace('poco', "http://portablecontacts.net/spec/1.0");
|
||||
$xpath->registerNamespace('ostatus', "http://ostatus.org/schema/1.0");
|
||||
$xpath->registerNamespace('statusnet', "http://status.net/schema/api/1/");
|
||||
$xpath->registerNamespace('atom', NAMESPACE_ATOM1);
|
||||
$xpath->registerNamespace('thr', NAMESPACE_THREAD);
|
||||
$xpath->registerNamespace('at', NAMESPACE_TOMB);
|
||||
$xpath->registerNamespace('media', NAMESPACE_MEDIA);
|
||||
$xpath->registerNamespace('dfrn', NAMESPACE_DFRN);
|
||||
$xpath->registerNamespace('activity', NAMESPACE_ACTIVITY);
|
||||
$xpath->registerNamespace('georss', NAMESPACE_GEORSS);
|
||||
$xpath->registerNamespace('poco', NAMESPACE_POCO);
|
||||
$xpath->registerNamespace('ostatus', NAMESPACE_OSTATUS);
|
||||
$xpath->registerNamespace('statusnet', NAMESPACE_STATUSNET);
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `self`", intval($importer["uid"]));
|
||||
$contact = $r[0];
|
||||
|
||||
$header = array();
|
||||
$header["uid"] = $importer["uid"];
|
||||
|
@ -559,15 +724,15 @@ print_r($notif_params);
|
|||
|
||||
$mails = $xpath->query('/atom:feed/dfrn:mail');
|
||||
foreach ($mails AS $mail)
|
||||
self::process_mail($header, $xpath, $mail, $importer, $contact);
|
||||
self::process_mail($xpath, $mail, $importer);
|
||||
|
||||
$suggestions = $xpath->query('/atom:feed/dfrn:suggest');
|
||||
foreach ($suggestions AS $suggestion)
|
||||
self::process_suggestion($header, $xpath, $suggestion, $importer, $contact);
|
||||
self::process_suggestion($xpath, $suggestion, $importer);
|
||||
|
||||
$relocations = $xpath->query('/atom:feed/dfrn:relocate');
|
||||
foreach ($relocations AS $relocation)
|
||||
self::process_relocation($header, $xpath, $relocation, $importer, $contact);
|
||||
self::process_relocation($xpath, $relocation, $importer);
|
||||
|
||||
$entries = $xpath->query('/atom:feed/atom:entry');
|
||||
foreach ($entries AS $entry)
|
||||
|
|
|
@ -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_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() {
|
||||
$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);
|
||||
|
||||
$xpath = new DomXPath($doc);
|
||||
$xpath->registerNamespace('atom', "http://www.w3.org/2005/Atom");
|
||||
$xpath->registerNamespace('thr', "http://purl.org/syndication/thread/1.0");
|
||||
$xpath->registerNamespace('georss', "http://www.georss.org/georss");
|
||||
$xpath->registerNamespace('activity', "http://activitystrea.ms/spec/1.0/");
|
||||
$xpath->registerNamespace('media', "http://purl.org/syndication/atommedia");
|
||||
$xpath->registerNamespace('poco', "http://portablecontacts.net/spec/1.0");
|
||||
$xpath->registerNamespace('ostatus', "http://ostatus.org/schema/1.0");
|
||||
$xpath->registerNamespace('statusnet', "http://status.net/schema/api/1/");
|
||||
$xpath->registerNamespace('atom', NAMESPACE_ATOM1);
|
||||
$xpath->registerNamespace('thr', NAMESPACE_THREAD);
|
||||
$xpath->registerNamespace('georss', NAMESPACE_GEORSS);
|
||||
$xpath->registerNamespace('activity', NAMESPACE_ACTIVITY);
|
||||
$xpath->registerNamespace('media', NAMESPACE_MEDIA);
|
||||
$xpath->registerNamespace('poco', NAMESPACE_POCO);
|
||||
$xpath->registerNamespace('ostatus', NAMESPACE_OSTATUS);
|
||||
$xpath->registerNamespace('statusnet', NAMESPACE_STATUSNET);
|
||||
|
||||
$entries = $xpath->query('/atom:entry');
|
||||
|
||||
|
@ -224,14 +215,14 @@ function ostatus_import($xml,$importer,&$contact, &$hub) {
|
|||
@$doc->loadXML($xml);
|
||||
|
||||
$xpath = new DomXPath($doc);
|
||||
$xpath->registerNamespace('atom', "http://www.w3.org/2005/Atom");
|
||||
$xpath->registerNamespace('thr', "http://purl.org/syndication/thread/1.0");
|
||||
$xpath->registerNamespace('georss', "http://www.georss.org/georss");
|
||||
$xpath->registerNamespace('activity', "http://activitystrea.ms/spec/1.0/");
|
||||
$xpath->registerNamespace('media', "http://purl.org/syndication/atommedia");
|
||||
$xpath->registerNamespace('poco', "http://portablecontacts.net/spec/1.0");
|
||||
$xpath->registerNamespace('ostatus', "http://ostatus.org/schema/1.0");
|
||||
$xpath->registerNamespace('statusnet', "http://status.net/schema/api/1/");
|
||||
$xpath->registerNamespace('atom', NAMESPACE_ATOM1);
|
||||
$xpath->registerNamespace('thr', NAMESPACE_THREAD);
|
||||
$xpath->registerNamespace('georss', NAMESPACE_GEORSS);
|
||||
$xpath->registerNamespace('activity', NAMESPACE_ACTIVITY);
|
||||
$xpath->registerNamespace('media', NAMESPACE_MEDIA);
|
||||
$xpath->registerNamespace('poco', NAMESPACE_POCO);
|
||||
$xpath->registerNamespace('ostatus', NAMESPACE_OSTATUS);
|
||||
$xpath->registerNamespace('statusnet', NAMESPACE_STATUSNET);
|
||||
|
||||
$gub = "";
|
||||
$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) {
|
||||
$a = get_app();
|
||||
|
||||
$root = $doc->createElementNS(NS_ATOM, 'feed');
|
||||
$root = $doc->createElementNS(NAMESPACE_ATOM1, 'feed');
|
||||
$doc->appendChild($root);
|
||||
|
||||
$root->setAttribute("xmlns:thr", NS_THR);
|
||||
$root->setAttribute("xmlns:georss", NS_GEORSS);
|
||||
$root->setAttribute("xmlns:activity", NS_ACTIVITY);
|
||||
$root->setAttribute("xmlns:media", NS_MEDIA);
|
||||
$root->setAttribute("xmlns:poco", NS_POCO);
|
||||
$root->setAttribute("xmlns:ostatus", NS_OSTATUS);
|
||||
$root->setAttribute("xmlns:statusnet", NS_STATUSNET);
|
||||
$root->setAttribute("xmlns:thr", NAMESPACE_THREAD);
|
||||
$root->setAttribute("xmlns:georss", NAMESPACE_GEORSS);
|
||||
$root->setAttribute("xmlns:activity", NAMESPACE_ACTIVITY);
|
||||
$root->setAttribute("xmlns:media", NAMESPACE_MEDIA);
|
||||
$root->setAttribute("xmlns:poco", NAMESPACE_POCO);
|
||||
$root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
|
||||
$root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
|
||||
|
||||
$attributes = array("uri" => "https://friendi.ca", "version" => FRIENDICA_VERSION."-".DB_UPDATE_VERSION);
|
||||
xml_add_element($doc, $root, "generator", FRIENDICA_PLATFORM, $attributes);
|
||||
|
@ -1343,15 +1334,15 @@ function ostatus_entry($doc, $item, $owner, $toplevel = false, $repeat = false)
|
|||
$entry = $doc->createElement("activity:object");
|
||||
$title = sprintf("New note by %s", $owner["nick"]);
|
||||
} else {
|
||||
$entry = $doc->createElementNS(NS_ATOM, "entry");
|
||||
$entry = $doc->createElementNS(NAMESPACE_ATOM1, "entry");
|
||||
|
||||
$entry->setAttribute("xmlns:thr", NS_THR);
|
||||
$entry->setAttribute("xmlns:georss", NS_GEORSS);
|
||||
$entry->setAttribute("xmlns:activity", NS_ACTIVITY);
|
||||
$entry->setAttribute("xmlns:media", NS_MEDIA);
|
||||
$entry->setAttribute("xmlns:poco", NS_POCO);
|
||||
$entry->setAttribute("xmlns:ostatus", NS_OSTATUS);
|
||||
$entry->setAttribute("xmlns:statusnet", NS_STATUSNET);
|
||||
$entry->setAttribute("xmlns:thr", NAMESPACE_THREAD);
|
||||
$entry->setAttribute("xmlns:georss", NAMESPACE_GEORSS);
|
||||
$entry->setAttribute("xmlns:activity", NAMESPACE_ACTIVITY);
|
||||
$entry->setAttribute("xmlns:media", NAMESPACE_MEDIA);
|
||||
$entry->setAttribute("xmlns:poco", NAMESPACE_POCO);
|
||||
$entry->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
|
||||
$entry->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
|
||||
|
||||
$author = ostatus_add_author($doc, $owner);
|
||||
$entry->appendChild($author);
|
||||
|
|
Loading…
Reference in New Issue
Block a user