mirror of
https://git.sekbaer.de/Friendica/friendica.git
synced 2025-06-16 20:05:14 +02:00
Fix bugs in the retraction code
Currently, the following seems to be the functional status: For a Diaspora top-level post: Friendica comments show up AND delete Diaspora comments show up AND delete for top-level owner Diaspora comments show up for non-owner Diaspora comments sometimes don't delete for non-owner -> Appears to be Diaspora's fault, as a "not a valid object" error shows up in the log Friendica likes show up, but can't unlike (Friendica doesn't even message Diaspora) Diaspora likes show up Diaspora non-owner can't unlike -> Same as comments, seems to be Diaspora's fault For a Friendica top-level post: Friendica comments show up AND delete Diaspora comments show up AND delete Friendica likes don't show up in Diaspora sometimes Friendica doesn't even message Diaspora for unlikes (sometimes?) Diaspora likes and unlikes work
This commit is contained in:
parent
b000088ded
commit
77962aa79d
7 changed files with 42 additions and 66 deletions
|
@ -1168,22 +1168,7 @@ function diaspora_comment($importer,$xml,$msg) {
|
|||
);
|
||||
}
|
||||
|
||||
if(($parent_item['origin']) && (! $parent_author_signature)) { if(($parent_item['origin']) && (! $parent_author_signature)) {
|
||||
q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
|
||||
intval($message_id),
|
||||
dbesc($author_signed_data),
|
||||
dbesc(base64_encode($author_signature)),
|
||||
dbesc($diaspora_handle)
|
||||
);
|
||||
|
||||
// if the message isn't already being relayed, notify others
|
||||
// the existence of parent_author_signature means the parent_author or owner
|
||||
// is already relaying.
|
||||
|
||||
proc_run('php','include/notifier.php','comment',$message_id);
|
||||
}
|
||||
|
||||
|
||||
if(($parent_item['origin']) && (! $parent_author_signature)) {
|
||||
q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
|
||||
intval($message_id),
|
||||
dbesc($author_signed_data),
|
||||
|
@ -1846,7 +1831,7 @@ function diaspora_signed_retraction($importer,$xml,$msg) {
|
|||
|
||||
}
|
||||
|
||||
if($type === 'StatusMessage' || $type === 'Comment') {
|
||||
if($type === 'StatusMessage' || $type === 'Comment' || $type === 'Like') {
|
||||
$r = q("select * from item where guid = '%s' and uid = %d and not file like '%%[%%' limit 1",
|
||||
dbesc($guid),
|
||||
intval($importer['uid'])
|
||||
|
@ -1854,6 +1839,7 @@ function diaspora_signed_retraction($importer,$xml,$msg) {
|
|||
if(count($r)) {
|
||||
if(link_compare($r[0]['author-link'],$contact['url'])) {
|
||||
q("update item set `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '' , `title` = '' where `id` = %d limit 1",
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
intval($r[0]['id'])
|
||||
);
|
||||
|
@ -2184,16 +2170,6 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
|||
// I'm assuming for now that "$owner" will be the user of the top-level post for retractions too. Be
|
||||
// aware that another reasonable possibility is that it's the "$owner" of the deleted comment.
|
||||
|
||||
// TODO
|
||||
// CHECK 1. If we receive a retraction from Diaspora to be relayed by us, we need to insert the signature
|
||||
// into the DB and call notifier.php
|
||||
// CHECK 2. diaspora_send_retraction() needs to be modified to send
|
||||
// Diaspora a retraction for it to relay when appropriate
|
||||
// CHECK 3. notifier.php (and delivery.php?) need to be modified to call the right functions for the right
|
||||
// retraction situation
|
||||
// 4. If possible, modify notifier.php (and delivery.php?) to remove the relayable retraction's signature
|
||||
// from the DB after finishing with relaying retractions
|
||||
|
||||
|
||||
|
||||
$a = get_app();
|
||||
|
@ -2216,20 +2192,20 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
|||
$like = false;
|
||||
$relay_retract = false;
|
||||
$sql_sign_id = 'iid';
|
||||
if($item['verb'] === ACTIVITY_LIKE) {
|
||||
if( $item['deleted']) {
|
||||
$tpl = get_markup_template('diaspora_relayable_retraction.tpl');
|
||||
$relay_retract = true;
|
||||
$sql_sign_id = 'retract_iid';
|
||||
$target_type = ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment');
|
||||
}
|
||||
elseif($item['verb'] === ACTIVITY_LIKE) {
|
||||
$tpl = get_markup_template('diaspora_like_relay.tpl');
|
||||
$like = true;
|
||||
$target_type = 'Post';
|
||||
$positive = (($item['deleted']) ? 'false' : 'true');
|
||||
}
|
||||
elseif(! $item['deleted']) {
|
||||
$tpl = get_markup_template('diaspora_comment_relay.tpl');
|
||||
}
|
||||
else {
|
||||
$tpl = get_markup_template('diaspora_relayable_retraction.tpl');
|
||||
$relay_retract = true;
|
||||
$sql_sign_id = 'retract_iid';
|
||||
$target_type = 'Comment';
|
||||
$tpl = get_markup_template('diaspora_comment_relay.tpl');
|
||||
}
|
||||
|
||||
$body = $item['body'];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue