~canonical-sysadmins/wordpress/5.1.4

« back to all changes in this revision

Viewing changes to wp-admin/includes/class-wp-comments-list-table.php

  • Committer: Barry Price
  • Date: 2019-02-22 03:51:26 UTC
  • mfrom: (1.2.12 upstream)
  • Revision ID: barry.price@canonical.com-20190222035126-o28k38qs8jfyjsxt
Merge WP5.1 from upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
                        add_filter( 'comment_author', array( $this, 'floated_admin_avatar' ), 10, 2 );
46
46
                }
47
47
 
48
 
                parent::__construct( array(
49
 
                        'plural' => 'comments',
50
 
                        'singular' => 'comment',
51
 
                        'ajax' => true,
52
 
                        'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
53
 
                ) );
 
48
                parent::__construct(
 
49
                        array(
 
50
                                'plural'   => 'comments',
 
51
                                'singular' => 'comment',
 
52
                                'ajax'     => true,
 
53
                                'screen'   => isset( $args['screen'] ) ? $args['screen'] : null,
 
54
                        )
 
55
                );
54
56
        }
55
57
 
56
58
        public function floated_admin_avatar( $name, $comment_ID ) {
57
59
                $comment = get_comment( $comment_ID );
58
 
                $avatar = get_avatar( $comment, 32, 'mystery' );
 
60
                $avatar  = get_avatar( $comment, 32, 'mystery' );
59
61
                return "$avatar $name";
60
62
        }
61
63
 
63
65
         * @return bool
64
66
         */
65
67
        public function ajax_user_can() {
66
 
                return current_user_can('edit_posts');
 
68
                return current_user_can( 'edit_posts' );
67
69
        }
68
70
 
69
71
        /**
70
 
         *
71
72
         * @global int    $post_id
72
73
         * @global string $comment_status
73
74
         * @global string $search
77
78
                global $post_id, $comment_status, $search, $comment_type;
78
79
 
79
80
                $comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all';
80
 
                if ( !in_array( $comment_status, array( 'all', 'moderated', 'approved', 'spam', 'trash' ) ) )
 
81
                if ( ! in_array( $comment_status, array( 'all', 'mine', 'moderated', 'approved', 'spam', 'trash' ) ) ) {
81
82
                        $comment_status = 'all';
 
83
                }
82
84
 
83
 
                $comment_type = !empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : '';
 
85
                $comment_type = ! empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : '';
84
86
 
85
87
                $search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : '';
86
88
 
89
91
                $user_id = ( isset( $_REQUEST['user_id'] ) ) ? $_REQUEST['user_id'] : '';
90
92
 
91
93
                $orderby = ( isset( $_REQUEST['orderby'] ) ) ? $_REQUEST['orderby'] : '';
92
 
                $order = ( isset( $_REQUEST['order'] ) ) ? $_REQUEST['order'] : '';
 
94
                $order   = ( isset( $_REQUEST['order'] ) ) ? $_REQUEST['order'] : '';
93
95
 
94
96
                $comments_per_page = $this->get_per_page( $comment_status );
95
97
 
97
99
 
98
100
                if ( isset( $_REQUEST['number'] ) ) {
99
101
                        $number = (int) $_REQUEST['number'];
100
 
                }
101
 
                else {
 
102
                } else {
102
103
                        $number = $comments_per_page + min( 8, $comments_per_page ); // Grab a few extra
103
104
                }
104
105
 
115
116
                }
116
117
 
117
118
                $status_map = array(
 
119
                        'mine'      => '',
118
120
                        'moderated' => 'hold',
119
 
                        'approved' => 'approve',
120
 
                        'all' => '',
 
121
                        'approved'  => 'approve',
 
122
                        'all'       => '',
121
123
                );
122
124
 
123
125
                $args = array(
124
 
                        'status' => isset( $status_map[$comment_status] ) ? $status_map[$comment_status] : $comment_status,
125
 
                        'search' => $search,
126
 
                        'user_id' => $user_id,
127
 
                        'offset' => $start,
128
 
                        'number' => $number,
129
 
                        'post_id' => $post_id,
130
 
                        'type' => $comment_type,
131
 
                        'orderby' => $orderby,
132
 
                        'order' => $order,
 
126
                        'status'    => isset( $status_map[ $comment_status ] ) ? $status_map[ $comment_status ] : $comment_status,
 
127
                        'search'    => $search,
 
128
                        'user_id'   => $user_id,
 
129
                        'offset'    => $start,
 
130
                        'number'    => $number,
 
131
                        'post_id'   => $post_id,
 
132
                        'type'      => $comment_type,
 
133
                        'orderby'   => $orderby,
 
134
                        'order'     => $order,
133
135
                        'post_type' => $post_type,
134
136
                );
135
137
 
 
138
                /**
 
139
                 * Filters the arguments for the comment query in the comments list table.
 
140
                 *
 
141
                 * @since 5.1.0
 
142
                 *
 
143
                 * @param array $args An array of get_comments() arguments.
 
144
                 */
 
145
                $args = apply_filters( 'comments_list_table_query_args', $args );
 
146
 
136
147
                $_comments = get_comments( $args );
137
148
                if ( is_array( $_comments ) ) {
138
149
                        update_comment_cache( $_comments );
139
150
 
140
 
                        $this->items = array_slice( $_comments, 0, $comments_per_page );
 
151
                        $this->items       = array_slice( $_comments, 0, $comments_per_page );
141
152
                        $this->extra_items = array_slice( $_comments, $comments_per_page );
142
153
 
143
154
                        $_comment_post_ids = array_unique( wp_list_pluck( $_comments, 'comment_post_ID' ) );
145
156
                        $this->pending_count = get_pending_comments_num( $_comment_post_ids );
146
157
                }
147
158
 
148
 
                $total_comments = get_comments( array_merge( $args, array(
149
 
                        'count' => true,
150
 
                        'offset' => 0,
151
 
                        'number' => 0
152
 
                ) ) );
 
159
                $total_comments = get_comments(
 
160
                        array_merge(
 
161
                                $args,
 
162
                                array(
 
163
                                        'count'  => true,
 
164
                                        'offset' => 0,
 
165
                                        'number' => 0,
 
166
                                )
 
167
                        )
 
168
                );
153
169
 
154
 
                $this->set_pagination_args( array(
155
 
                        'total_items' => $total_comments,
156
 
                        'per_page' => $comments_per_page,
157
 
                ) );
 
170
                $this->set_pagination_args(
 
171
                        array(
 
172
                                'total_items' => $total_comments,
 
173
                                'per_page'    => $comments_per_page,
 
174
                        )
 
175
                );
158
176
        }
159
177
 
160
178
        /**
161
 
         *
162
179
         * @param string $comment_status
163
180
         * @return int
164
181
         */
176
193
        }
177
194
 
178
195
        /**
179
 
         *
180
196
         * @global string $comment_status
181
197
         */
182
198
        public function no_items() {
190
206
        }
191
207
 
192
208
        /**
193
 
         *
194
209
         * @global int $post_id
195
210
         * @global string $comment_status
196
211
         * @global string $comment_type
203
218
 
204
219
                $stati = array(
205
220
                        /* translators: %s: all comments count */
206
 
                        'all' => _nx_noop(
 
221
                        'all'       => _nx_noop(
207
222
                                'All <span class="count">(%s)</span>',
208
223
                                'All <span class="count">(%s)</span>',
209
224
                                'comments'
210
225
                        ), // singular not used
211
226
 
 
227
                        /* translators: %s: current user's comments count */
 
228
                        'mine'      => _nx_noop(
 
229
                                'Mine <span class="count">(%s)</span>',
 
230
                                'Mine <span class="count">(%s)</span>',
 
231
                                'comments'
 
232
                        ),
 
233
 
212
234
                        /* translators: %s: pending comments count */
213
235
                        'moderated' => _nx_noop(
214
236
                                'Pending <span class="count">(%s)</span>',
217
239
                        ),
218
240
 
219
241
                        /* translators: %s: approved comments count */
220
 
                        'approved' => _nx_noop(
 
242
                        'approved'  => _nx_noop(
221
243
                                'Approved <span class="count">(%s)</span>',
222
244
                                'Approved <span class="count">(%s)</span>',
223
245
                                'comments'
224
246
                        ),
225
247
 
226
248
                        /* translators: %s: spam comments count */
227
 
                        'spam' => _nx_noop(
 
249
                        'spam'      => _nx_noop(
228
250
                                'Spam <span class="count">(%s)</span>',
229
251
                                'Spam <span class="count">(%s)</span>',
230
252
                                'comments'
231
253
                        ),
232
254
 
233
255
                        /* translators: %s: trashed comments count */
234
 
                        'trash' => _nx_noop(
 
256
                        'trash'     => _nx_noop(
235
257
                                'Trash <span class="count">(%s)</span>',
236
258
                                'Trash <span class="count">(%s)</span>',
237
259
                                'comments'
238
 
                        )
 
260
                        ),
239
261
                );
240
262
 
241
 
                if ( !EMPTY_TRASH_DAYS )
242
 
                        unset($stati['trash']);
 
263
                if ( ! EMPTY_TRASH_DAYS ) {
 
264
                        unset( $stati['trash'] );
 
265
                }
243
266
 
244
267
                $link = admin_url( 'edit-comments.php' );
245
 
                if ( !empty($comment_type) && 'all' != $comment_type )
 
268
                if ( ! empty( $comment_type ) && 'all' != $comment_type ) {
246
269
                        $link = add_query_arg( 'comment_type', $comment_type, $link );
 
270
                }
247
271
 
248
272
                foreach ( $stati as $status => $label ) {
249
273
                        $current_link_attributes = '';
252
276
                                $current_link_attributes = ' class="current" aria-current="page"';
253
277
                        }
254
278
 
255
 
                        if ( !isset( $num_comments->$status ) )
 
279
                        if ( 'mine' === $status ) {
 
280
                                $current_user_id    = get_current_user_id();
 
281
                                $num_comments->mine = get_comments(
 
282
                                        array(
 
283
                                                'post_id' => $post_id ? $post_id : 0,
 
284
                                                'user_id' => $current_user_id,
 
285
                                                'count'   => true,
 
286
                                        )
 
287
                                );
 
288
                                $link               = add_query_arg( 'user_id', $current_user_id, $link );
 
289
                        } else {
 
290
                                $link = remove_query_arg( 'user_id', $link );
 
291
                        }
 
292
 
 
293
                        if ( ! isset( $num_comments->$status ) ) {
256
294
                                $num_comments->$status = 10;
 
295
                        }
257
296
                        $link = add_query_arg( 'comment_status', $status, $link );
258
 
                        if ( $post_id )
 
297
                        if ( $post_id ) {
259
298
                                $link = add_query_arg( 'p', absint( $post_id ), $link );
 
299
                        }
260
300
                        /*
261
301
                        // I toyed with this, but decided against it. Leaving it in here in case anyone thinks it is a good idea. ~ Mark
262
302
                        if ( !empty( $_REQUEST['s'] ) )
264
304
                        */
265
305
                        $status_links[ $status ] = "<a href='$link'$current_link_attributes>" . sprintf(
266
306
                                translate_nooped_plural( $label, $num_comments->$status ),
267
 
                                sprintf( '<span class="%s-count">%s</span>',
 
307
                                sprintf(
 
308
                                        '<span class="%s-count">%s</span>',
268
309
                                        ( 'moderated' === $status ) ? 'pending' : $status,
269
310
                                        number_format_i18n( $num_comments->$status )
270
311
                                )
275
316
                 * Filters the comment status links.
276
317
                 *
277
318
                 * @since 2.5.0
 
319
                 * @since 5.1.0 The 'Mine' link was added.
278
320
                 *
279
 
                 * @param array $status_links An array of fully-formed status links. Default 'All'.
280
 
                 *                            Accepts 'All', 'Pending', 'Approved', 'Spam', and 'Trash'.
 
321
                 * @param string[] $status_links An associative array of fully-formed comment status links. Includes 'All', 'Mine',
 
322
                 *                              'Pending', 'Approved', 'Spam', and 'Trash'.
281
323
                 */
282
324
                return apply_filters( 'comment_status_links', $status_links );
283
325
        }
284
326
 
285
327
        /**
286
 
         *
287
328
         * @global string $comment_status
288
329
         *
289
330
         * @return array
292
333
                global $comment_status;
293
334
 
294
335
                $actions = array();
295
 
                if ( in_array( $comment_status, array( 'all', 'approved' ) ) )
 
336
                if ( in_array( $comment_status, array( 'all', 'approved' ) ) ) {
296
337
                        $actions['unapprove'] = __( 'Unapprove' );
297
 
                if ( in_array( $comment_status, array( 'all', 'moderated' ) ) )
 
338
                }
 
339
                if ( in_array( $comment_status, array( 'all', 'moderated' ) ) ) {
298
340
                        $actions['approve'] = __( 'Approve' );
299
 
                if ( in_array( $comment_status, array( 'all', 'moderated', 'approved', 'trash' ) ) )
 
341
                }
 
342
                if ( in_array( $comment_status, array( 'all', 'moderated', 'approved', 'trash' ) ) ) {
300
343
                        $actions['spam'] = _x( 'Mark as Spam', 'comment' );
 
344
                }
301
345
 
302
346
                if ( 'trash' === $comment_status ) {
303
347
                        $actions['untrash'] = __( 'Restore' );
305
349
                        $actions['unspam'] = _x( 'Not Spam', 'comment' );
306
350
                }
307
351
 
308
 
                if ( in_array( $comment_status, array( 'trash', 'spam' ) ) || !EMPTY_TRASH_DAYS )
 
352
                if ( in_array( $comment_status, array( 'trash', 'spam' ) ) || ! EMPTY_TRASH_DAYS ) {
309
353
                        $actions['delete'] = __( 'Delete Permanently' );
310
 
                else
 
354
                } else {
311
355
                        $actions['trash'] = __( 'Move to Trash' );
 
356
                }
312
357
 
313
358
                return $actions;
314
359
        }
315
360
 
316
361
        /**
317
 
         *
318
362
         * @global string $comment_status
319
363
         * @global string $comment_type
320
364
         *
327
371
                if ( ! isset( $has_items ) ) {
328
372
                        $has_items = $this->has_items();
329
373
                }
330
 
?>
 
374
                ?>
331
375
                <div class="alignleft actions">
332
 
<?php
 
376
                <?php
333
377
                if ( 'top' === $which ) {
334
 
?>
335
 
                        <label class="screen-reader-text" for="filter-by-comment-type"><?php _e( 'Filter by comment type' ); ?></label>
336
 
                        <select id="filter-by-comment-type" name="comment_type">
337
 
                                <option value=""><?php _e( 'All comment types' ); ?></option>
338
 
<?php
 
378
                        ?>
 
379
        <label class="screen-reader-text" for="filter-by-comment-type"><?php _e( 'Filter by comment type' ); ?></label>
 
380
        <select id="filter-by-comment-type" name="comment_type">
 
381
                <option value=""><?php _e( 'All comment types' ); ?></option>
 
382
                        <?php
339
383
                                /**
340
384
                                 * Filters the comment types dropdown menu.
341
385
                                 *
342
386
                                 * @since 2.7.0
343
387
                                 *
344
 
                                 * @param array $comment_types An array of comment types. Accepts 'Comments', 'Pings'.
 
388
                                 * @param string[] $comment_types An array of comment types. Accepts 'Comments', 'Pings'.
345
389
                                 */
346
 
                                $comment_types = apply_filters( 'admin_comment_types_dropdown', array(
347
 
                                        'comment' => __( 'Comments' ),
348
 
                                        'pings' => __( 'Pings' ),
349
 
                                ) );
 
390
                                $comment_types = apply_filters(
 
391
                                        'admin_comment_types_dropdown',
 
392
                                        array(
 
393
                                                'comment' => __( 'Comments' ),
 
394
                                                'pings'   => __( 'Pings' ),
 
395
                                        )
 
396
                                );
350
397
 
351
 
                                foreach ( $comment_types as $type => $label )
352
 
                                        echo "\t" . '<option value="' . esc_attr( $type ) . '"' . selected( $comment_type, $type, false ) . ">$label</option>\n";
 
398
                        foreach ( $comment_types as $type => $label ) {
 
399
                                echo "\t" . '<option value="' . esc_attr( $type ) . '"' . selected( $comment_type, $type, false ) . ">$label</option>\n";
 
400
                        }
353
401
                        ?>
354
 
                        </select>
355
 
<?php
 
402
        </select>
 
403
                        <?php
356
404
                        /**
357
405
                         * Fires just before the Filter submit button for comment types.
358
406
                         *
382
430
         * @return string|false
383
431
         */
384
432
        public function current_action() {
385
 
                if ( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) )
 
433
                if ( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) ) {
386
434
                        return 'delete_all';
 
435
                }
387
436
 
388
437
                return parent::current_action();
389
438
        }
390
439
 
391
440
        /**
392
 
         *
393
441
         * @global int $post_id
394
442
         *
395
443
         * @return array
399
447
 
400
448
                $columns = array();
401
449
 
402
 
                if ( $this->checkbox )
 
450
                if ( $this->checkbox ) {
403
451
                        $columns['cb'] = '<input type="checkbox" />';
 
452
                }
404
453
 
405
 
                $columns['author'] = __( 'Author' );
 
454
                $columns['author']  = __( 'Author' );
406
455
                $columns['comment'] = _x( 'Comment', 'column name' );
407
456
 
408
457
                if ( ! $post_id ) {
416
465
        }
417
466
 
418
467
        /**
419
 
         *
420
468
         * @return array
421
469
         */
422
470
        protected function get_sortable_columns() {
423
471
                return array(
424
472
                        'author'   => 'comment_author',
425
473
                        'response' => 'comment_post_ID',
426
 
                        'date'     => 'comment_date'
 
474
                        'date'     => 'comment_date',
427
475
                );
428
476
        }
429
477
 
441
489
        /**
442
490
         */
443
491
        public function display() {
444
 
                wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' );
 
492
                wp_nonce_field( 'fetch-list-' . get_class( $this ), '_ajax_fetch_list_nonce' );
445
493
 
446
494
                $this->display_tablenav( 'top' );
447
495
 
448
496
                $this->screen->render_screen_reader_content( 'heading_list' );
449
497
 
450
 
?>
 
498
                ?>
451
499
<table class="wp-list-table <?php echo implode( ' ', $this->get_table_classes() ); ?>">
452
500
        <thead>
453
501
        <tr>
461
509
 
462
510
        <tbody id="the-extra-comment-list" data-wp-lists="list:comment" style="display: none;">
463
511
                <?php
 
512
                        /*
 
513
                         * Back up the items to restore after printing the extra items markup.
 
514
                         * The extra items may be empty, which will prevent the table nav from displaying later.
 
515
                         */
 
516
                        $items       = $this->items;
464
517
                        $this->items = $this->extra_items;
465
518
                        $this->display_rows_or_placeholder();
 
519
                        $this->items = $items;
466
520
                ?>
467
521
        </tbody>
468
522
 
473
527
        </tfoot>
474
528
 
475
529
</table>
476
 
<?php
 
530
                <?php
477
531
 
478
532
                $this->display_tablenav( 'bottom' );
479
533
        }
507
561
                unset( $GLOBALS['post'], $GLOBALS['comment'] );
508
562
        }
509
563
 
510
 
        /**
511
 
         * Generate and display row actions links.
512
 
         *
513
 
         * @since 4.3.0
514
 
         *
515
 
         * @global string $comment_status Status for the current listed comments.
516
 
         *
517
 
         * @param WP_Comment $comment     The comment object.
518
 
         * @param string     $column_name Current column name.
519
 
         * @param string     $primary     Primary column name.
520
 
         * @return string|void Comment row actions output.
521
 
         */
522
 
        protected function handle_row_actions( $comment, $column_name, $primary ) {
523
 
                global $comment_status;
 
564
        /**
 
565
         * Generate and display row actions links.
 
566
         *
 
567
         * @since 4.3.0
 
568
         *
 
569
         * @global string $comment_status Status for the current listed comments.
 
570
         *
 
571
         * @param WP_Comment $comment     The comment object.
 
572
         * @param string     $column_name Current column name.
 
573
         * @param string     $primary     Primary column name.
 
574
         * @return string|void Comment row actions output.
 
575
         */
 
576
        protected function handle_row_actions( $comment, $column_name, $primary ) {
 
577
                global $comment_status;
524
578
 
525
579
                if ( $primary !== $column_name ) {
526
580
                        return '';
527
581
                }
528
582
 
529
 
                if ( ! $this->user_can ) {
530
 
                        return;
 
583
                if ( ! $this->user_can ) {
 
584
                        return;
531
585
                }
532
586
 
533
587
                $the_comment_status = wp_get_comment_status( $comment );
534
588
 
535
589
                $out = '';
536
590
 
537
 
                $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) );
 
591
                $del_nonce     = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) );
538
592
                $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) );
539
593
 
540
594
                $url = "comment.php?c=$comment->comment_ID";
541
595
 
542
 
                $approve_url = esc_url( $url . "&action=approvecomment&$approve_nonce" );
 
596
                $approve_url   = esc_url( $url . "&action=approvecomment&$approve_nonce" );
543
597
                $unapprove_url = esc_url( $url . "&action=unapprovecomment&$approve_nonce" );
544
 
                $spam_url = esc_url( $url . "&action=spamcomment&$del_nonce" );
545
 
                $unspam_url = esc_url( $url . "&action=unspamcomment&$del_nonce" );
546
 
                $trash_url = esc_url( $url . "&action=trashcomment&$del_nonce" );
547
 
                $untrash_url = esc_url( $url . "&action=untrashcomment&$del_nonce" );
548
 
                $delete_url = esc_url( $url . "&action=deletecomment&$del_nonce" );
 
598
                $spam_url      = esc_url( $url . "&action=spamcomment&$del_nonce" );
 
599
                $unspam_url    = esc_url( $url . "&action=unspamcomment&$del_nonce" );
 
600
                $trash_url     = esc_url( $url . "&action=trashcomment&$del_nonce" );
 
601
                $untrash_url   = esc_url( $url . "&action=untrashcomment&$del_nonce" );
 
602
                $delete_url    = esc_url( $url . "&action=deletecomment&$del_nonce" );
549
603
 
550
604
                // Preorder it: Approve | Reply | Quick Edit | Edit | Spam | Trash.
551
605
                $actions = array(
552
 
                        'approve' => '', 'unapprove' => '',
553
 
                        'reply' => '',
 
606
                        'approve'   => '',
 
607
                        'unapprove' => '',
 
608
                        'reply'     => '',
554
609
                        'quickedit' => '',
555
 
                        'edit' => '',
556
 
                        'spam' => '', 'unspam' => '',
557
 
                        'trash' => '', 'untrash' => '', 'delete' => ''
 
610
                        'edit'      => '',
 
611
                        'spam'      => '',
 
612
                        'unspam'    => '',
 
613
                        'trash'     => '',
 
614
                        'untrash'   => '',
 
615
                        'delete'    => '',
558
616
                );
559
617
 
560
618
                // Not looking at all comments.
565
623
                                $actions['approve'] = "<a href='$approve_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID:e7e7d3:action=dim-comment&amp;new=approved' class='vim-a vim-destructive' aria-label='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
566
624
                        }
567
625
                } else {
568
 
                        $actions['approve'] = "<a href='$approve_url' data-wp-lists='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=approved' class='vim-a' aria-label='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
 
626
                        $actions['approve']   = "<a href='$approve_url' data-wp-lists='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=approved' class='vim-a' aria-label='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
569
627
                        $actions['unapprove'] = "<a href='$unapprove_url' data-wp-lists='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved' class='vim-u' aria-label='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
570
628
                }
571
629
 
579
637
                        $actions['untrash'] = "<a href='$untrash_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID:66cc66:untrash=1' class='vim-z vim-destructive' aria-label='" . esc_attr__( 'Restore this comment from the Trash' ) . "'>" . __( 'Restore' ) . '</a>';
580
638
                }
581
639
 
582
 
                if ( 'spam' === $the_comment_status || 'trash' === $the_comment_status || !EMPTY_TRASH_DAYS ) {
 
640
                if ( 'spam' === $the_comment_status || 'trash' === $the_comment_status || ! EMPTY_TRASH_DAYS ) {
583
641
                        $actions['delete'] = "<a href='$delete_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::delete=1' class='delete vim-d vim-destructive' aria-label='" . esc_attr__( 'Delete this comment permanently' ) . "'>" . __( 'Delete Permanently' ) . '</a>';
584
642
                } else {
585
643
                        $actions['trash'] = "<a href='$trash_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::trash=1' class='delete vim-d vim-destructive' aria-label='" . esc_attr__( 'Move this comment to the Trash' ) . "'>" . _x( 'Trash', 'verb' ) . '</a>';
586
644
                }
587
645
 
588
646
                if ( 'spam' !== $the_comment_status && 'trash' !== $the_comment_status ) {
589
 
                        $actions['edit'] = "<a href='comment.php?action=editcomment&amp;c={$comment->comment_ID}' aria-label='" . esc_attr__( 'Edit this comment' ) . "'>". __( 'Edit' ) . '</a>';
 
647
                        $actions['edit'] = "<a href='comment.php?action=editcomment&amp;c={$comment->comment_ID}' aria-label='" . esc_attr__( 'Edit this comment' ) . "'>" . __( 'Edit' ) . '</a>';
590
648
 
591
 
                        $format = '<a data-comment-id="%d" data-post-id="%d" data-action="%s" class="%s" aria-label="%s" href="#">%s</a>';
 
649
                        $format = '<button type="button" data-comment-id="%d" data-post-id="%d" data-action="%s" class="%s button-link" aria-expanded="false" aria-label="%s">%s</button>';
592
650
 
593
651
                        $actions['quickedit'] = sprintf( $format, $comment->comment_ID, $comment->comment_post_ID, 'edit', 'vim-q comment-inline', esc_attr__( 'Quick edit this comment inline' ), __( 'Quick&nbsp;Edit' ) );
594
652
 
598
656
                /** This filter is documented in wp-admin/includes/dashboard.php */
599
657
                $actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment );
600
658
 
601
 
                $i = 0;
 
659
                $i    = 0;
602
660
                $out .= '<div class="row-actions">';
603
661
                foreach ( $actions as $action => $link ) {
604
662
                        ++$i;
605
663
                        ( ( ( 'approve' === $action || 'unapprove' === $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ';
606
664
 
607
665
                        // Reply and quickedit need a hide-if-no-js span when not added with ajax
608
 
                        if ( ( 'reply' === $action || 'quickedit' === $action ) && ! wp_doing_ajax() )
 
666
                        if ( ( 'reply' === $action || 'quickedit' === $action ) && ! wp_doing_ajax() ) {
609
667
                                $action .= ' hide-if-no-js';
610
 
                        elseif ( ( $action === 'untrash' && $the_comment_status === 'trash' ) || ( $action === 'unspam' && $the_comment_status === 'spam' ) ) {
611
 
                                if ( '1' == get_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', true ) )
 
668
                        } elseif ( ( $action === 'untrash' && $the_comment_status === 'trash' ) || ( $action === 'unspam' && $the_comment_status === 'spam' ) ) {
 
669
                                if ( '1' == get_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', true ) ) {
612
670
                                        $action .= ' approve';
613
 
                                else
 
671
                                } else {
614
672
                                        $action .= ' unapprove';
 
673
                                }
615
674
                        }
616
675
 
617
676
                        $out .= "<span class='$action'>$sep$link</span>";
624
683
        }
625
684
 
626
685
        /**
627
 
         *
628
686
         * @param WP_Comment $comment The comment object.
629
687
         */
630
688
        public function column_cb( $comment ) {
631
 
                if ( $this->user_can ) { ?>
 
689
                if ( $this->user_can ) {
 
690
                        ?>
632
691
                <label class="screen-reader-text" for="cb-select-<?php echo $comment->comment_ID; ?>"><?php _e( 'Select comment' ); ?></label>
633
692
                <input id="cb-select-<?php echo $comment->comment_ID; ?>" type="checkbox" name="delete_comments[]" value="<?php echo $comment->comment_ID; ?>" />
634
 
                <?php
 
693
                        <?php
635
694
                }
636
695
        }
637
696
 
647
706
                        $parent = get_comment( $comment->comment_parent );
648
707
                        if ( $parent ) {
649
708
                                $parent_link = esc_url( get_comment_link( $parent ) );
650
 
                                $name = get_comment_author( $parent );
 
709
                                $name        = get_comment_author( $parent );
651
710
                                printf(
652
711
                                        /* translators: %s: comment link */
653
712
                                        __( 'In reply to %s.' ),
657
716
                }
658
717
 
659
718
                comment_text( $comment );
660
 
                if ( $this->user_can ) { ?>
 
719
 
 
720
                if ( $this->user_can ) {
 
721
                        /** This filter is documented in wp-admin/includes/comment.php */
 
722
                        $comment_content = apply_filters( 'comment_edit_pre', $comment->comment_content );
 
723
                        ?>
661
724
                <div id="inline-<?php echo $comment->comment_ID; ?>" class="hidden">
662
 
                <textarea class="comment" rows="1" cols="1"><?php
663
 
                        /** This filter is documented in wp-admin/includes/comment.php */
664
 
                        echo esc_textarea( apply_filters( 'comment_edit_pre', $comment->comment_content ) );
665
 
                ?></textarea>
666
 
                <div class="author-email"><?php echo esc_attr( $comment->comment_author_email ); ?></div>
667
 
                <div class="author"><?php echo esc_attr( $comment->comment_author ); ?></div>
668
 
                <div class="author-url"><?php echo esc_attr( $comment->comment_author_url ); ?></div>
669
 
                <div class="comment_status"><?php echo $comment->comment_approved; ?></div>
 
725
                        <textarea class="comment" rows="1" cols="1"><?php echo esc_textarea( $comment_content ); ?></textarea>
 
726
                        <div class="author-email"><?php echo esc_attr( $comment->comment_author_email ); ?></div>
 
727
                        <div class="author"><?php echo esc_attr( $comment->comment_author ); ?></div>
 
728
                        <div class="author-url"><?php echo esc_attr( $comment->comment_author_url ); ?></div>
 
729
                        <div class="comment_status"><?php echo $comment->comment_approved; ?></div>
670
730
                </div>
671
 
                <?php
 
731
                        <?php
672
732
                }
673
733
        }
674
734
 
675
735
        /**
676
 
         *
677
736
         * @global string $comment_status
678
737
         *
679
738
         * @param WP_Comment $comment The comment object.
688
747
                        $author_url_display = wp_html_excerpt( $author_url_display, 49, '&hellip;' );
689
748
                }
690
749
 
691
 
                echo "<strong>"; comment_author( $comment ); echo '</strong><br />';
 
750
                echo '<strong>';
 
751
                comment_author( $comment );
 
752
                echo '</strong><br />';
692
753
                if ( ! empty( $author_url_display ) ) {
693
754
                        printf( '<a href="%s">%s</a><br />', esc_url( $author_url ), esc_html( $author_url_display ) );
694
755
                }
705
766
 
706
767
                        $author_ip = get_comment_author_IP( $comment );
707
768
                        if ( $author_ip ) {
708
 
                                $author_ip_url = add_query_arg( array( 's' => $author_ip, 'mode' => 'detail' ), admin_url( 'edit-comments.php' ) );
 
769
                                $author_ip_url = add_query_arg(
 
770
                                        array(
 
771
                                                's'    => $author_ip,
 
772
                                                'mode' => 'detail',
 
773
                                        ),
 
774
                                        admin_url( 'edit-comments.php' )
 
775
                                );
709
776
                                if ( 'spam' === $comment_status ) {
710
777
                                        $author_ip_url = add_query_arg( 'comment_status', 'spam', $author_ip_url );
711
778
                                }
715
782
        }
716
783
 
717
784
        /**
718
 
         *
719
785
         * @param WP_Comment $comment The comment object.
720
786
         */
721
787
        public function column_date( $comment ) {
722
788
                /* translators: 1: comment date, 2: comment time */
723
 
                $submitted = sprintf( __( '%1$s at %2$s' ),
 
789
                $submitted = sprintf(
 
790
                        __( '%1$s at %2$s' ),
724
791
                        /* translators: comment date format. See https://secure.php.net/date */
725
792
                        get_comment_date( __( 'Y/m/d' ), $comment ),
726
793
                        get_comment_date( __( 'g:i a' ), $comment )
727
794
                );
728
795
 
729
796
                echo '<div class="submitted-on">';
730
 
                if ( 'approved' === wp_get_comment_status( $comment ) && ! empty ( $comment->comment_post_ID ) ) {
 
797
                if ( 'approved' === wp_get_comment_status( $comment ) && ! empty( $comment->comment_post_ID ) ) {
731
798
                        printf(
732
799
                                '<a href="%s">%s</a>',
733
800
                                esc_url( get_comment_link( $comment ) ),
740
807
        }
741
808
 
742
809
        /**
743
 
         *
744
810
         * @param WP_Comment $comment The comment object.
745
811
         */
746
812
        public function column_response( $comment ) {
750
816
                        return;
751
817
                }
752
818
 
753
 
                if ( isset( $this->pending_count[$post->ID] ) ) {
754
 
                        $pending_comments = $this->pending_count[$post->ID];
 
819
                if ( isset( $this->pending_count[ $post->ID ] ) ) {
 
820
                        $pending_comments = $this->pending_count[ $post->ID ];
755
821
                } else {
756
822
                        $_pending_count_temp = get_pending_comments_num( array( $post->ID ) );
757
 
                        $pending_comments = $this->pending_count[$post->ID] = $_pending_count_temp[$post->ID];
 
823
                        $pending_comments    = $this->pending_count[ $post->ID ] = $_pending_count_temp[ $post->ID ];
758
824
                }
759
825
 
760
826
                if ( current_user_can( 'edit_post', $post->ID ) ) {
761
 
                        $post_link = "<a href='" . get_edit_post_link( $post->ID ) . "' class='comments-edit-item-link'>";
 
827
                        $post_link  = "<a href='" . get_edit_post_link( $post->ID ) . "' class='comments-edit-item-link'>";
762
828
                        $post_link .= esc_html( get_the_title( $post->ID ) ) . '</a>';
763
829
                } else {
764
830
                        $post_link = esc_html( get_the_title( $post->ID ) );
778
844
        }
779
845
 
780
846
        /**
781
 
         *
782
847
         * @param WP_Comment $comment     The comment object.
783
848
         * @param string     $column_name The custom column's name.
784
849
         */