kopia lustrzana https://github.com/friendica/friendica
Merge pull request #431 from fermionic/diaspora-relays-and-tags
Couple of Diaspora fixespull/433/merge
commit
f8b969e252
|
@ -196,6 +196,14 @@ function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) {
|
||||||
// The bbcode parser now handles youtube-links (and the other stuff) correctly.
|
// The bbcode parser now handles youtube-links (and the other stuff) correctly.
|
||||||
// Additionally the html code is now fixed so that lists are now working.
|
// Additionally the html code is now fixed so that lists are now working.
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transform #tags, strip off the [url] and replace spaces with underscore
|
||||||
|
*/
|
||||||
|
$Text = preg_replace_callback('/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', create_function('$match',
|
||||||
|
'return \'#\'. str_replace(\' \', \'_\', $match[2]);'
|
||||||
|
), $Text);
|
||||||
|
|
||||||
|
|
||||||
// Converting images with size parameters to simple images. Markdown doesn't know it.
|
// Converting images with size parameters to simple images. Markdown doesn't know it.
|
||||||
$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $Text);
|
$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $Text);
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,37 @@ function diaspora_dispatch($importer,$msg) {
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function diaspora_handle_from_contact($contact_id) {
|
||||||
|
$handle = False;
|
||||||
|
|
||||||
|
logger("diaspora_handle_from_contact: contact id is " . $contact_id, LOGGER_DEBUG);
|
||||||
|
|
||||||
|
$r = q("SELECT network, addr, self, url, nick FROM contact WHERE id = %d",
|
||||||
|
intval($contact_id)
|
||||||
|
);
|
||||||
|
if($r) {
|
||||||
|
$contact = $r[0];
|
||||||
|
|
||||||
|
logger("diaspora_handle_from_contact: contact 'self' = " . $contact['self'] . " 'url' = " . $contact['url'], LOGGER_DEBUG);
|
||||||
|
|
||||||
|
if($contact['network'] === NETWORK_DIASPORA) {
|
||||||
|
$handle = $contact['addr'];
|
||||||
|
|
||||||
|
// logger("diaspora_handle_from_contact: contact id is a Diaspora person, handle = " . $handle, LOGGER_DEBUG);
|
||||||
|
}
|
||||||
|
elseif(($contact['network'] === NETWORK_DFRN) || ($contact['self'] == 1)) {
|
||||||
|
$baseurl_start = strpos($contact['url'],'://') + 3;
|
||||||
|
$baseurl_length = strpos($contact['url'],'/profile') - $baseurl_start; // allows installations in a subdirectory--not sure how Diaspora will handle
|
||||||
|
$baseurl = substr($contact['url'], $baseurl_start, $baseurl_length);
|
||||||
|
$handle = $contact['nick'] . '@' . $baseurl;
|
||||||
|
|
||||||
|
// logger("diaspora_handle_from_contact: contact id is a DFRN person, handle = " . $handle, LOGGER_DEBUG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $handle;
|
||||||
|
}
|
||||||
|
|
||||||
function diaspora_get_contact_by_handle($uid,$handle) {
|
function diaspora_get_contact_by_handle($uid,$handle) {
|
||||||
$r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `addr` = '%s' LIMIT 1",
|
$r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `addr` = '%s' LIMIT 1",
|
||||||
dbesc(NETWORK_DIASPORA),
|
dbesc(NETWORK_DIASPORA),
|
||||||
|
@ -1282,7 +1313,7 @@ function diaspora_comment($importer,$xml,$msg) {
|
||||||
// the existence of parent_author_signature means the parent_author or owner
|
// the existence of parent_author_signature means the parent_author or owner
|
||||||
// is already relaying.
|
// is already relaying.
|
||||||
|
|
||||||
proc_run('php','include/notifier.php','comment',$message_id);
|
proc_run('php','include/notifier.php','comment-import',$message_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
$myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0 ",
|
$myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0 ",
|
||||||
|
@ -1867,7 +1898,7 @@ EOT;
|
||||||
// is already relaying. The parent_item['origin'] indicates the message was created on our system
|
// is already relaying. The parent_item['origin'] indicates the message was created on our system
|
||||||
|
|
||||||
if(($parent_item['origin']) && (! $parent_author_signature))
|
if(($parent_item['origin']) && (! $parent_author_signature))
|
||||||
proc_run('php','include/notifier.php','comment',$message_id);
|
proc_run('php','include/notifier.php','comment-import',$message_id);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1993,7 +2024,7 @@ function diaspora_signed_retraction($importer,$xml,$msg) {
|
||||||
// is already relaying.
|
// is already relaying.
|
||||||
logger('diaspora_signed_retraction: relaying relayable_retraction');
|
logger('diaspora_signed_retraction: relaying relayable_retraction');
|
||||||
|
|
||||||
proc_run('php','include/notifier.php','relayable_retraction',$r[0]['id']);
|
proc_run('php','include/notifier.php','drop',$r[0]['id']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2153,12 +2184,6 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
/**
|
|
||||||
* Transform #tags, strip off the [url] and replace spaces with underscore
|
|
||||||
*/
|
|
||||||
$body = preg_replace_callback('/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', create_function('$match',
|
|
||||||
'return \'#\'. str_replace(\' \', \'_\', $match[2]);'
|
|
||||||
), $body);
|
|
||||||
|
|
||||||
//if(strlen($title))
|
//if(strlen($title))
|
||||||
// $body = "[b]".html_entity_decode($title)."[/b]\n\n".$body;
|
// $body = "[b]".html_entity_decode($title)."[/b]\n\n".$body;
|
||||||
|
@ -2344,8 +2369,8 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||||
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
|
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
|
||||||
// The only item with `parent` and `id` as the parent id is the parent item.
|
// The only item with `parent` and `id` as the parent id is the parent item.
|
||||||
$p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1",
|
$p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1",
|
||||||
intval($item['parent']),
|
intval($item['parent']),
|
||||||
intval($item['parent'])
|
intval($item['parent'])
|
||||||
);
|
);
|
||||||
//}
|
//}
|
||||||
if(count($p))
|
if(count($p))
|
||||||
|
@ -2368,7 +2393,6 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||||
$like = true;
|
$like = true;
|
||||||
|
|
||||||
$target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment');
|
$target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment');
|
||||||
// $target_type = (strpos($parent['type'], 'comment') ? 'Comment' : 'Post');
|
|
||||||
// $positive = (($item['deleted']) ? 'false' : 'true');
|
// $positive = (($item['deleted']) ? 'false' : 'true');
|
||||||
$positive = 'true';
|
$positive = 'true';
|
||||||
|
|
||||||
|
@ -2382,7 +2406,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||||
// fetch the original signature if the relayable was created by a Diaspora
|
// fetch the original signature if the relayable was created by a Diaspora
|
||||||
// or DFRN user. Relayables for other networks are not supported.
|
// or DFRN user. Relayables for other networks are not supported.
|
||||||
|
|
||||||
$r = q("select * from sign where " . $sql_sign_id . " = %d limit 1",
|
/* $r = q("select * from sign where " . $sql_sign_id . " = %d limit 1",
|
||||||
intval($item['id'])
|
intval($item['id'])
|
||||||
);
|
);
|
||||||
if(count($r)) {
|
if(count($r)) {
|
||||||
|
@ -2398,7 +2422,25 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||||
// function is called
|
// function is called
|
||||||
logger('diaspora_send_relay: original author signature not found, cannot send relayable');
|
logger('diaspora_send_relay: original author signature not found, cannot send relayable');
|
||||||
return;
|
return;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
/* Since the author signature is only checked by the parent, not by the relay recipients,
|
||||||
|
* I think it may not be necessary for us to do so much work to preserve all the original
|
||||||
|
* signatures. The important thing that Diaspora DOES need is the original creator's handle.
|
||||||
|
* Let's just generate that and forget about all the original author signature stuff.
|
||||||
|
*
|
||||||
|
* Note: this might be more of an problem if we want to support likes on comments for older
|
||||||
|
* versions of Diaspora (diaspora-pistos), but since there are a number of problems with
|
||||||
|
* doing that, let's ignore it for now.
|
||||||
|
*
|
||||||
|
* Currently, only DFRN contacts are supported. StatusNet shouldn't be hard, but it hasn't
|
||||||
|
* been done yet
|
||||||
|
*/
|
||||||
|
|
||||||
|
$handle = diaspora_handle_from_contact($item['contact-id']);
|
||||||
|
if(! $handle)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
if($relay_retract)
|
if($relay_retract)
|
||||||
$sender_signed_text = $item['guid'] . ';' . $target_type;
|
$sender_signed_text = $item['guid'] . ';' . $target_type;
|
||||||
|
|
|
@ -2459,6 +2459,7 @@ function local_delivery($importer,$data) {
|
||||||
|
|
||||||
$is_a_remote_delete = false;
|
$is_a_remote_delete = false;
|
||||||
|
|
||||||
|
// POSSIBLE CLEANUP --> Why select so many fields when only forum_mode and wall are used?
|
||||||
$r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`,
|
$r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`,
|
||||||
`contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item`
|
`contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item`
|
||||||
LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||||
|
@ -2472,7 +2473,7 @@ function local_delivery($importer,$data) {
|
||||||
intval($importer['importer_uid'])
|
intval($importer['importer_uid'])
|
||||||
);
|
);
|
||||||
if($r && count($r))
|
if($r && count($r))
|
||||||
$is_a_remote_delete = true;
|
$is_a_remote_delete = true;
|
||||||
|
|
||||||
// Does this have the characteristics of a community or private group comment?
|
// Does this have the characteristics of a community or private group comment?
|
||||||
// If it's a reply to a wall post on a community/prvgroup page it's a
|
// If it's a reply to a wall post on a community/prvgroup page it's a
|
||||||
|
@ -2799,7 +2800,7 @@ function local_delivery($importer,$data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if($posted_id && $parent) {
|
if($posted_id && $parent) {
|
||||||
|
|
||||||
proc_run('php',"include/notifier.php","comment-import","$posted_id");
|
proc_run('php',"include/notifier.php","comment-import","$posted_id");
|
||||||
|
|
||||||
if((! $is_like) && (! $importer['self'])) {
|
if((! $is_like) && (! $importer['self'])) {
|
||||||
|
|
|
@ -18,6 +18,31 @@ require_once('include/html2plain.php');
|
||||||
* us by hosting providers.
|
* us by hosting providers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The notifier is typically called with:
|
||||||
|
*
|
||||||
|
* proc_run('php', "include/notifier.php", COMMAND, ITEM_ID);
|
||||||
|
*
|
||||||
|
* where COMMAND is one of the following:
|
||||||
|
*
|
||||||
|
* activity (in diaspora.php, dfrn_confirm.php, profiles.php)
|
||||||
|
* comment-import (in diaspora.php, items.php)
|
||||||
|
* comment-new (in item.php)
|
||||||
|
* drop (in diaspora.php, items.php, photos.php)
|
||||||
|
* edit_post (in item.php)
|
||||||
|
* event (in events.php)
|
||||||
|
* expire (in items.php)
|
||||||
|
* like (in like.php, poke.php)
|
||||||
|
* mail (in message.php)
|
||||||
|
* suggest (in fsuggest.php)
|
||||||
|
* tag (in photos.php, poke.php, tagger.php)
|
||||||
|
* tgroup (in items.php)
|
||||||
|
* wall-new (in photos.php, item.php)
|
||||||
|
*
|
||||||
|
* and ITEM_ID is the id of the item in the database that needs to be sent to others.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
function notifier_run($argv, $argc){
|
function notifier_run($argv, $argc){
|
||||||
global $a, $db;
|
global $a, $db;
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue