Handle incoming update and delete activities with linked comments

This commit is contained in:
Jeremy Dormitzer 2018-10-28 13:18:08 -04:00
parent 6cc82927d3
commit ff53ef2e9d
3 changed files with 48 additions and 0 deletions

View File

@ -38,4 +38,13 @@ function link_comment( $comment_id, $object_id ) {
'%d'
);
}
function unlink_comment( $comment_id, $object_id ) {
global $wpdb;
return $wpdb->delete(
"{$wpdb->prefix}pterotype_comments",
array( 'comment_id' => $comment_id, 'object_id' => $object_id ),
'%d'
);
}
?>

View File

@ -3,6 +3,7 @@ namespace pterotype\activities\delete;
require_once plugin_dir_path( __FILE__ ) . '../objects.php';
require_once plugin_dir_path( __FILE__ ) . '../actors.php';
require_once plugin_dir_path( __FILE__ ) . '../../commentlinks.php';
function handle_outbox( $actor, $activity ) {
if ( !array_key_exists( 'object', $activity ) ) {
@ -48,6 +49,7 @@ function handle_inbox( $actor_slug, $activity ) {
if ( is_wp_error( $authorized ) ) {
return $authorized;
}
delete_linked_comment( $object );
$res = \pterotype\objects\delete_object( $object );
if ( is_wp_error( $res ) ) {
return $res;
@ -55,6 +57,16 @@ function handle_inbox( $actor_slug, $activity ) {
return $activity;
}
function delete_linked_comment( $object ) {
$object_id = \pterotype\objects\get_object_id( $object['id'] );
$comment_id = \pterotype\commentlinks\get_comment_id( $object_id );
if ( ! $comment_id ) {
return;
}
\pterotype\commentlinks\unlink_comment( $comment_id, $object_id );
\wp_delete_comment( $comment_id, true );
}
function check_authorization( $activity ) {
$object = $activity['object'];
$activity_origin = parse_url( $activity['id'] )['host'];

View File

@ -2,6 +2,8 @@
namespace pterotype\activities\update;
require_once plugin_dir_path( __FILE__ ) . '../objects.php';
require_once plugin_dir_path( __FILE__ ) . '../../commentlinks.php';
require_once plugin_dir_path( __FILE__ ) . 'create.php';
function handle_outbox( $actor_slug, $activity ) {
if ( !(array_key_exists( 'type', $activity ) && $activity['type'] === 'Update') ) {
@ -76,6 +78,7 @@ function handle_inbox( $actor_slug, $activity ) {
if ( is_wp_error( $object_row ) ) {
return $object_row;
}
update_linked_comment( $object_row->object );
return $activity;
}
@ -105,4 +108,28 @@ function make_update( $actor_slug, $object ) {
'object' => $object
);
}
function update_linked_comment( $updated_object ) {
$object_id = \pterotype\objects\get_object_id( $updated_object['id'] );
$comment_id = \pterotype\commentlinks\get_comment_id( $object_id );
if ( ! $comment_id ) {
return;
}
$comment = \get_comment( $comment_id );
if ( ! $comment || is_wp_error( $comment ) ) {
return;
}
$post_id = $comment->comment_post_ID;
$comment_parent = null;
if ( $comment->comment_parent !== '0' ) {
$comment_parent = $comment->comment_parent;
}
$updated_comment = \pterotype\activities\create\make_comment_from_object(
$updated_object, $post_id, $comment_parent
);
$updated_comment['comment_ID'] = $comment->comment_ID;
if ( $comment != $updated_comment ) {
\wp_update_comment( $updated_comment );
}
}
?>