~canonical-sysadmins/wordpress/4.7.4

« back to all changes in this revision

Viewing changes to wp-admin/comment.php

  • Committer: Jacek Nykis
  • Date: 2015-01-05 16:17:05 UTC
  • Revision ID: jacek.nykis@canonical.com-20150105161705-w544l1h5mcg7u4w9
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
/**
 
3
 * Comment Management Screen
 
4
 *
 
5
 * @package WordPress
 
6
 * @subpackage Administration
 
7
 */
 
8
 
 
9
/** Load WordPress Bootstrap */
 
10
require_once( dirname( __FILE__ ) . '/admin.php' );
 
11
 
 
12
$parent_file = 'edit-comments.php';
 
13
$submenu_file = 'edit-comments.php';
 
14
 
 
15
wp_reset_vars( array('action') );
 
16
 
 
17
if ( isset( $_POST['deletecomment'] ) )
 
18
        $action = 'deletecomment';
 
19
 
 
20
if ( 'cdc' == $action )
 
21
        $action = 'delete';
 
22
elseif ( 'mac' == $action )
 
23
        $action = 'approve';
 
24
 
 
25
if ( isset( $_GET['dt'] ) ) {
 
26
        if ( 'spam' == $_GET['dt'] )
 
27
                $action = 'spam';
 
28
        elseif ( 'trash' == $_GET['dt'] )
 
29
                $action = 'trash';
 
30
}
 
31
 
 
32
/**
 
33
 * Display error message at bottom of comments.
 
34
 *
 
35
 * @param string $msg Error Message. Assumed to contain HTML and be sanitized.
 
36
 */
 
37
function comment_footer_die( $msg ) {
 
38
        echo "<div class='wrap'><p>$msg</p></div>";
 
39
        include( ABSPATH . 'wp-admin/admin-footer.php' );
 
40
        die;
 
41
}
 
42
 
 
43
switch( $action ) {
 
44
 
 
45
case 'editcomment' :
 
46
        $title = __('Edit Comment');
 
47
 
 
48
        get_current_screen()->add_help_tab( array(
 
49
                'id'      => 'overview',
 
50
                'title'   => __('Overview'),
 
51
                'content' =>
 
52
                        '<p>' . __( 'You can edit the information left in a comment if needed. This is often useful when you notice that a commenter has made a typographical error.' ) . '</p>' .
 
53
                        '<p>' . __( 'You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment.' ) . '</p>'
 
54
        ) );
 
55
 
 
56
        get_current_screen()->set_help_sidebar(
 
57
        '<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
 
58
        '<p>' . __( '<a href="http://codex.wordpress.org/Administration_Screens#Comments" target="_blank">Documentation on Comments</a>' ) . '</p>' .
 
59
        '<p>' . __( '<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
 
60
        );
 
61
 
 
62
        wp_enqueue_script('comment');
 
63
        require_once( ABSPATH . 'wp-admin/admin-header.php' );
 
64
 
 
65
        $comment_id = absint( $_GET['c'] );
 
66
 
 
67
        if ( !$comment = get_comment( $comment_id ) )
 
68
                comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">' . __('Go back') . '</a>.', 'javascript:history.go(-1)') );
 
69
 
 
70
        if ( !current_user_can( 'edit_comment', $comment_id ) )
 
71
                comment_footer_die( __('You are not allowed to edit this comment.') );
 
72
 
 
73
        if ( 'trash' == $comment->comment_approved )
 
74
                comment_footer_die( __('This comment is in the Trash. Please move it out of the Trash if you want to edit it.') );
 
75
 
 
76
        $comment = get_comment_to_edit( $comment_id );
 
77
 
 
78
        include( ABSPATH . 'wp-admin/edit-form-comment.php' );
 
79
 
 
80
        break;
 
81
 
 
82
case 'delete'  :
 
83
case 'approve' :
 
84
case 'trash'   :
 
85
case 'spam'    :
 
86
 
 
87
        $title = __('Moderate Comment');
 
88
 
 
89
        $comment_id = absint( $_GET['c'] );
 
90
 
 
91
        if ( !$comment = get_comment_to_edit( $comment_id ) ) {
 
92
                wp_redirect( admin_url('edit-comments.php?error=1') );
 
93
                die();
 
94
        }
 
95
 
 
96
        if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) {
 
97
                wp_redirect( admin_url('edit-comments.php?error=2') );
 
98
                die();
 
99
        }
 
100
 
 
101
        // No need to re-approve/re-trash/re-spam a comment.
 
102
        if ( $action == str_replace( '1', 'approve', $comment->comment_approved ) ) {
 
103
                wp_redirect( admin_url( 'edit-comments.php?same=' . $comment_id ) );
 
104
                die();
 
105
        }
 
106
 
 
107
        require_once( ABSPATH . 'wp-admin/admin-header.php' );
 
108
 
 
109
        $formaction    = $action . 'comment';
 
110
        $nonce_action  = 'approve' == $action ? 'approve-comment_' : 'delete-comment_';
 
111
        $nonce_action .= $comment_id;
 
112
 
 
113
?>
 
114
<div class="wrap">
 
115
 
 
116
<div class="narrow">
 
117
 
 
118
<h2><?php echo esc_html( $title ); ?></h2>
 
119
 
 
120
<?php
 
121
switch ( $action ) {
 
122
        case 'spam' :
 
123
                $caution_msg = __('You are about to mark the following comment as spam:');
 
124
                $button      = __('Spam Comment');
 
125
                break;
 
126
        case 'trash' :
 
127
                $caution_msg = __('You are about to move the following comment to the Trash:');
 
128
                $button      = __('Trash Comment');
 
129
                break;
 
130
        case 'delete' :
 
131
                $caution_msg = __('You are about to delete the following comment:');
 
132
                $button      = __('Permanently Delete Comment');
 
133
                break;
 
134
        default :
 
135
                $caution_msg = __('You are about to approve the following comment:');
 
136
                $button      = __('Approve Comment');
 
137
                break;
 
138
}
 
139
 
 
140
if ( $comment->comment_approved != '0' ) { // if not unapproved
 
141
        $message = '';
 
142
        switch ( $comment->comment_approved ) {
 
143
                case '1' :
 
144
                        $message = __('This comment is currently approved.');
 
145
                        break;
 
146
                case 'spam' :
 
147
                        $message  = __('This comment is currently marked as spam.');
 
148
                        break;
 
149
                case 'trash' :
 
150
                        $message  = __('This comment is currently in the Trash.');
 
151
                        break;
 
152
        }
 
153
        if ( $message )
 
154
                echo '<div class="updated"><p>' . $message . '</p></div>';
 
155
}
 
156
?>
 
157
<p><strong><?php _e('Caution:'); ?></strong> <?php echo $caution_msg; ?></p>
 
158
 
 
159
<table class="form-table comment-ays">
 
160
<tr class="alt">
 
161
<th scope="row"><?php _e('Author'); ?></th>
 
162
<td><?php echo $comment->comment_author; ?></td>
 
163
</tr>
 
164
<?php if ( $comment->comment_author_email ) { ?>
 
165
<tr>
 
166
<th scope="row"><?php _e('E-mail'); ?></th>
 
167
<td><?php echo $comment->comment_author_email; ?></td>
 
168
</tr>
 
169
<?php } ?>
 
170
<?php if ( $comment->comment_author_url ) { ?>
 
171
<tr>
 
172
<th scope="row"><?php _e('URL'); ?></th>
 
173
<td><a href="<?php echo $comment->comment_author_url; ?>"><?php echo $comment->comment_author_url; ?></a></td>
 
174
</tr>
 
175
<?php } ?>
 
176
<tr>
 
177
<th scope="row"><?php /* translators: field name in comment form */ _ex('Comment', 'noun'); ?></th>
 
178
<td><?php echo $comment->comment_content; ?></td>
 
179
</tr>
 
180
</table>
 
181
 
 
182
<p><?php _e('Are you sure you want to do this?'); ?></p>
 
183
 
 
184
<form action="comment.php" method="get">
 
185
 
 
186
<table width="100%">
 
187
<tr>
 
188
<td><a class="button" href="<?php echo admin_url('edit-comments.php'); ?>"><?php esc_attr_e('No'); ?></a></td>
 
189
<td class="textright"><?php submit_button( $button, 'button' ); ?></td>
 
190
</tr>
 
191
</table>
 
192
 
 
193
<?php wp_nonce_field( $nonce_action ); ?>
 
194
<input type="hidden" name="action" value="<?php echo esc_attr($formaction); ?>" />
 
195
<input type="hidden" name="c" value="<?php echo esc_attr($comment->comment_ID); ?>" />
 
196
<input type="hidden" name="noredir" value="1" />
 
197
</form>
 
198
 
 
199
</div>
 
200
</div>
 
201
<?php
 
202
        break;
 
203
 
 
204
case 'deletecomment'    :
 
205
case 'trashcomment'     :
 
206
case 'untrashcomment'   :
 
207
case 'spamcomment'      :
 
208
case 'unspamcomment'    :
 
209
case 'approvecomment'   :
 
210
case 'unapprovecomment' :
 
211
        $comment_id = absint( $_REQUEST['c'] );
 
212
 
 
213
        if ( in_array( $action, array( 'approvecomment', 'unapprovecomment' ) ) )
 
214
                check_admin_referer( 'approve-comment_' . $comment_id );
 
215
        else
 
216
                check_admin_referer( 'delete-comment_' . $comment_id );
 
217
 
 
218
        $noredir = isset($_REQUEST['noredir']);
 
219
 
 
220
        if ( !$comment = get_comment($comment_id) )
 
221
                comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">' . __('Go back') . '</a>.', 'edit-comments.php') );
 
222
        if ( !current_user_can( 'edit_comment', $comment->comment_ID ) )
 
223
                comment_footer_die( __('You are not allowed to edit comments on this post.') );
 
224
 
 
225
        if ( '' != wp_get_referer() && ! $noredir && false === strpos(wp_get_referer(), 'comment.php') )
 
226
                $redir = wp_get_referer();
 
227
        elseif ( '' != wp_get_original_referer() && ! $noredir )
 
228
                $redir = wp_get_original_referer();
 
229
        elseif ( in_array( $action, array( 'approvecomment', 'unapprovecomment' ) ) )
 
230
                $redir = admin_url('edit-comments.php?p=' . absint( $comment->comment_post_ID ) );
 
231
        else
 
232
                $redir = admin_url('edit-comments.php');
 
233
 
 
234
        $redir = remove_query_arg( array('spammed', 'unspammed', 'trashed', 'untrashed', 'deleted', 'ids', 'approved', 'unapproved'), $redir );
 
235
 
 
236
        switch ( $action ) {
 
237
                case 'deletecomment' :
 
238
                        wp_delete_comment( $comment_id );
 
239
                        $redir = add_query_arg( array('deleted' => '1'), $redir );
 
240
                        break;
 
241
                case 'trashcomment' :
 
242
                        wp_trash_comment($comment_id);
 
243
                        $redir = add_query_arg( array('trashed' => '1', 'ids' => $comment_id), $redir );
 
244
                        break;
 
245
                case 'untrashcomment' :
 
246
                        wp_untrash_comment($comment_id);
 
247
                        $redir = add_query_arg( array('untrashed' => '1'), $redir );
 
248
                        break;
 
249
                case 'spamcomment' :
 
250
                        wp_spam_comment($comment_id);
 
251
                        $redir = add_query_arg( array('spammed' => '1', 'ids' => $comment_id), $redir );
 
252
                        break;
 
253
                case 'unspamcomment' :
 
254
                        wp_unspam_comment($comment_id);
 
255
                        $redir = add_query_arg( array('unspammed' => '1'), $redir );
 
256
                        break;
 
257
                case 'approvecomment' :
 
258
                        wp_set_comment_status( $comment_id, 'approve' );
 
259
                        $redir = add_query_arg( array( 'approved' => 1 ), $redir );
 
260
                        break;
 
261
                case 'unapprovecomment' :
 
262
                        wp_set_comment_status( $comment_id, 'hold' );
 
263
                        $redir = add_query_arg( array( 'unapproved' => 1 ), $redir );
 
264
                        break;
 
265
        }
 
266
 
 
267
        wp_redirect( $redir );
 
268
        die;
 
269
 
 
270
case 'editedcomment' :
 
271
 
 
272
        $comment_id = absint( $_POST['comment_ID'] );
 
273
        $comment_post_id = absint( $_POST['comment_post_ID'] );
 
274
 
 
275
        check_admin_referer( 'update-comment_' . $comment_id );
 
276
 
 
277
        edit_comment();
 
278
 
 
279
        $location = ( empty( $_POST['referredby'] ) ? "edit-comments.php?p=$comment_post_id" : $_POST['referredby'] ) . '#comment-' . $comment_id;
 
280
 
 
281
        /**
 
282
         * Filter the URI the user is redirected to after editing a comment in the admin.
 
283
         *
 
284
         * @since 2.1.0
 
285
         *
 
286
         * @param string $location The URI the user will be redirected to.
 
287
         * @param int $comment_id The ID of the comment being edited.
 
288
         */
 
289
        $location = apply_filters( 'comment_edit_redirect', $location, $comment_id );
 
290
        wp_redirect( $location );
 
291
 
 
292
        exit();
 
293
 
 
294
default:
 
295
        wp_die( __('Unknown action.') );
 
296
 
 
297
} // end switch
 
298
 
 
299
include( ABSPATH . 'wp-admin/admin-footer.php' );