diff --git a/includes/activitypub.js b/includes/activitypub.js index 4700c00..25a57e1 100644 --- a/includes/activitypub.js +++ b/includes/activitypub.js @@ -5,12 +5,10 @@ if ( $('body').hasClass('edit-comments-php') ) { //Insert Mentions into comment content on reply $( '.comment-inline.button-link' ).on( 'click', function( event ) { - // Summary/ContentWarning Syntax [CW] - var summary = $(this).attr('data-summary') ? '[' + $(this).attr('data-summary') + '] ' : ''; var recipients = $(this).attr('data-recipients') ? $(this).attr('data-recipients') + ' ' : ''; setTimeout(function() { - if ( summary || recipients ){ - $('#replycontent').val( summary + recipients ) + if ( recipients ){ + $('#replycontent').val( recipients ) } }, 100); }) diff --git a/includes/class-admin.php b/includes/class-admin.php index 5144537..f46580c 100644 --- a/includes/class-admin.php +++ b/includes/class-admin.php @@ -18,7 +18,7 @@ class Admin { \add_action( 'admin_enqueue_scripts', array( '\Activitypub\Admin', 'enqueue_script_actions' ), 10, 2 ); \add_action( 'wp_ajax_migrate_post', array( '\Activitypub\Admin', 'migrate_post_action' ) ); \add_filter( 'comment_row_actions', array( '\Activitypub\Admin', 'reply_comments_actions' ), 10, 2 ); - + \add_filter( 'views_tools_page_activitypub_tools', array( '\Activitypub\Table\Migrate_List', 'get_activitypub_tools_views' ), 10 ); } /** @@ -213,6 +213,10 @@ class Admin { wp_die(); } + /** + * hook comment_row_actions + * Reply to ActivityPub Comments from the edit-comments.php screen + */ public static function reply_comments_actions( $actions, $comment ) { $recipients = \Activitypub\get_recipients( $comment->comment_ID ); $summary = \Activitypub\get_summary( $comment->comment_ID ); diff --git a/includes/class-tools.php b/includes/class-tools.php index 1cf6538..e0191bc 100644 --- a/includes/class-tools.php +++ b/includes/class-tools.php @@ -39,13 +39,18 @@ class Posts { public static function get_posts_with_activitypub_comments() { $args = array( 'comment_type' => 'activitypub', + 'status' => 'all', ); $activitypub_comments = \get_comments( $args ); $activitypub_comments_posts = array(); foreach ( $activitypub_comments as $comment ) { + $meta = \get_post_meta( $comment->comment_post_ID, '_activitypub_permalink_compat', true ); + if ( ! $meta ) { + continue; + } $activitypub_comments_posts[] = $comment->comment_post_ID; } - return \get_posts( \array_unique( $activitypub_comments_posts ) ); + return ( empty( \array_unique( $activitypub_comments_posts ) ) ? $activitypub_comments_posts : \get_posts( \array_unique( $activitypub_comments_posts ) ) ); } public static function count_posts_to_migrate() { @@ -53,6 +58,11 @@ class Posts { return \count( $posts ); } + public static function count_posts_with_comments_to_migrate() { + $posts = self::get_posts_with_activitypub_comments(); + return \count( $posts ); + } + /** * migrate_post * Federate Delete diff --git a/includes/table/migrate-list.php b/includes/table/migrate-list.php index cdddfbc..907f41a 100644 --- a/includes/table/migrate-list.php +++ b/includes/table/migrate-list.php @@ -21,27 +21,80 @@ class Migrate_List extends \WP_List_Table { public function get_sortable_columns() { return array(); } + + function get_bulk_actions() { + $actions = array( + 'delete' => 'Remove backwards compatibility' + ); + return $actions; + } + + public static function get_activitypub_tools_views() { + $posts_count = \Activitypub\Tools\Posts::count_posts_to_migrate(); + $comments_posts_count = \Activitypub\Tools\Posts::count_posts_with_comments_to_migrate(); + $activitypub_tools_page = 'tools.php?page=activitypub_tools'; + $view_slugs = array( + array('all', NULL, __('All', 'activitypub'), $posts_count), + array('comments', 'activitypub', __('Posts with Comments', 'activitypub'), $comments_posts_count), + ); + $post_status_var = get_query_var('comments'); + $view_count = count($view_slugs); + for ($x = 0; $x < $view_count; $x++) { + $class = ($post_status_var == $view_slugs[$x][1]) ? ' class="current"' : ''; + $post_status_temp = $view_slugs[$x][1]; + if($post_status_temp != '') { + $post_status_temp = '&comments='.$view_slugs[$x][1]; + } + $views[$view_slugs[$x][0]] = sprintf(__('' . + $view_slugs[$x][2] . + ' (%d)'), + $view_slugs[$x][3]); + } + return $views; + } public function prepare_items() { $columns = $this->get_columns(); $hidden = array( 'post_author', 'migrate' ); $sortable = $this->get_sortable_columns(); - - $this->process_action(); $this->_column_headers = array( $columns, $hidden, $sortable ); - foreach ( \Activitypub\Tools\Posts::get_posts_to_migrate() as $post ) { - $this->items[] = array( - 'post_author' => $post->post_author, - 'title' => \sprintf( - '%2s', - \get_permalink( $post->ID ), - $post->post_title - ), - 'comments' => $post->comment_count, - 'date' => $post->post_date, - 'migrate' => \get_post_meta( $post->ID, '_activitypub_permalink_compat', true ), - ); + $this->items = array(); + $this->process_action(); + if ( 'activitypub_tools' === $_REQUEST['page'] ) { + if ( isset( $_REQUEST['comments'] ) && 'activitypub' === $_REQUEST['comments'] ) { + foreach ( \Activitypub\Tools\Posts::get_posts_with_activitypub_comments() as $ap_post ) { + $this->items[] = array( + 'post_author' => $ap_post->post_author, + 'title' => \sprintf( + '%2s', + \get_permalink( $ap_post->ID ), + $ap_post->post_title + ), + 'comments' => $ap_post->comment_count, + 'date' => $ap_post->post_date, + 'migrate' => \get_post_meta( $ap_post->ID, '_activitypub_permalink_compat', true ), + ); + } + } else { + foreach ( \Activitypub\Tools\Posts::get_posts_to_migrate() as $post ) { + $this->items[] = array( + 'post_author' => $post->post_author, + 'title' => \sprintf( + '%2s', + \get_permalink( $post->ID ), + $post->post_title + ), + 'comments' => $post->comment_count, + 'date' => $post->post_date, + 'migrate' => \get_post_meta( $post->ID, '_activitypub_permalink_compat', true ), + ); + } + } } // pagination @@ -64,7 +117,7 @@ class Migrate_List extends \WP_List_Table { // delete if ( isset( $_REQUEST['action'] ) && 'activitypub_tools' === $_REQUEST['page'] && 'delete_notice' === $_REQUEST['action'] ) { if ( wp_verify_nonce( $nonce, 'activitypub_migrate_actions' ) ) { - //\Activitypub\Tools\Posts::delete_url( rawurldecode( $_REQUEST['post_url'] ), absint( $_REQUEST['post_author'] ) ); + \Activitypub\Tools\Posts::delete_url( rawurldecode( $_REQUEST['post_url'] ), absint( $_REQUEST['post_author'] ) ); \delete_post_meta( \url_to_postid( $_REQUEST['post_url'] ), '_activitypub_permalink_compat' ); } } diff --git a/templates/tools-page.php b/templates/tools-page.php index 37291a7..fe189bd 100644 --- a/templates/tools-page.php +++ b/templates/tools-page.php @@ -9,6 +9,15 @@ if ( isset( $_REQUEST['post_url'] ) && $_REQUEST['page'] == "activitypub_tools" } } ?> +

@@ -24,15 +33,16 @@ if ( isset( $_REQUEST['post_url'] ) && $_REQUEST['page'] == "activitypub_tools"

prepare_items(); - $token_table->display(); + $token_table->views(); + $token_table->prepare_items(); + $token_table->display(); ?>