home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress2 / wp-admin / comment.php < prev    next >
Encoding:
PHP Script  |  2016-10-03  |  10.2 KB  |  334 lines

  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. /**
  16.  * @global string $action
  17.  */
  18. global $action;
  19. wp_reset_vars( array('action') );
  20.  
  21. if ( isset( $_POST['deletecomment'] ) )
  22.     $action = 'deletecomment';
  23.  
  24. if ( 'cdc' == $action )
  25.     $action = 'delete';
  26. elseif ( 'mac' == $action )
  27.     $action = 'approve';
  28.  
  29. if ( isset( $_GET['dt'] ) ) {
  30.     if ( 'spam' == $_GET['dt'] )
  31.         $action = 'spam';
  32.     elseif ( 'trash' == $_GET['dt'] )
  33.         $action = 'trash';
  34. }
  35.  
  36. switch( $action ) {
  37.  
  38. case 'editcomment' :
  39.     $title = __('Edit Comment');
  40.  
  41.     get_current_screen()->add_help_tab( array(
  42.         'id'      => 'overview',
  43.         'title'   => __('Overview'),
  44.         'content' =>
  45.             '<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>' .
  46.             '<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>'
  47.     ) );
  48.  
  49.     get_current_screen()->set_help_sidebar(
  50.     '<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
  51.     '<p>' . __( '<a href="https://codex.wordpress.org/Administration_Screens#Comments">Documentation on Comments</a>' ) . '</p>' .
  52.     '<p>' . __( '<a href="https://wordpress.org/support/">Support Forums</a>' ) . '</p>'
  53.     );
  54.  
  55.     wp_enqueue_script('comment');
  56.     require_once( ABSPATH . 'wp-admin/admin-header.php' );
  57.  
  58.     $comment_id = absint( $_GET['c'] );
  59.  
  60.     if ( !$comment = get_comment( $comment_id ) )
  61.         comment_footer_die( __( 'Invalid comment ID.' ) . sprintf(' <a href="%s">' . __('Go back') . '</a>.', 'javascript:history.go(-1)') );
  62.  
  63.     if ( !current_user_can( 'edit_comment', $comment_id ) )
  64.         comment_footer_die( __('Sorry, you are not allowed to edit this comment.') );
  65.  
  66.     if ( 'trash' == $comment->comment_approved )
  67.         comment_footer_die( __('This comment is in the Trash. Please move it out of the Trash if you want to edit it.') );
  68.  
  69.     $comment = get_comment_to_edit( $comment_id );
  70.  
  71.     include( ABSPATH . 'wp-admin/edit-form-comment.php' );
  72.  
  73.     break;
  74.  
  75. case 'delete'  :
  76. case 'approve' :
  77. case 'trash'   :
  78. case 'spam'    :
  79.  
  80.     $title = __('Moderate Comment');
  81.  
  82.     $comment_id = absint( $_GET['c'] );
  83.  
  84.     if ( ! $comment = get_comment( $comment_id ) ) {
  85.         wp_redirect( admin_url('edit-comments.php?error=1') );
  86.         die();
  87.     }
  88.  
  89.     if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) {
  90.         wp_redirect( admin_url('edit-comments.php?error=2') );
  91.         die();
  92.     }
  93.  
  94.     // No need to re-approve/re-trash/re-spam a comment.
  95.     if ( $action == str_replace( '1', 'approve', $comment->comment_approved ) ) {
  96.         wp_redirect( admin_url( 'edit-comments.php?same=' . $comment_id ) );
  97.         die();
  98.      }
  99.  
  100.     require_once( ABSPATH . 'wp-admin/admin-header.php' );
  101.  
  102.     $formaction    = $action . 'comment';
  103.     $nonce_action  = 'approve' == $action ? 'approve-comment_' : 'delete-comment_';
  104.     $nonce_action .= $comment_id;
  105.  
  106. ?>
  107. <div class="wrap">
  108.  
  109. <h1><?php echo esc_html( $title ); ?></h1>
  110.  
  111. <?php
  112. switch ( $action ) {
  113.     case 'spam' :
  114.         $caution_msg = __('You are about to mark the following comment as spam:');
  115.         $button      = _x( 'Mark as Spam', 'comment' );
  116.         break;
  117.     case 'trash' :
  118.         $caution_msg = __('You are about to move the following comment to the Trash:');
  119.         $button      = __('Move to Trash');
  120.         break;
  121.     case 'delete' :
  122.         $caution_msg = __('You are about to delete the following comment:');
  123.         $button      = __('Permanently Delete Comment');
  124.         break;
  125.     default :
  126.         $caution_msg = __('You are about to approve the following comment:');
  127.         $button      = __('Approve Comment');
  128.         break;
  129. }
  130.  
  131. if ( $comment->comment_approved != '0' ) { // if not unapproved
  132.     $message = '';
  133.     switch ( $comment->comment_approved ) {
  134.         case '1' :
  135.             $message = __('This comment is currently approved.');
  136.             break;
  137.         case 'spam' :
  138.             $message  = __('This comment is currently marked as spam.');
  139.             break;
  140.         case 'trash' :
  141.             $message  = __('This comment is currently in the Trash.');
  142.             break;
  143.     }
  144.     if ( $message ) {
  145.         echo '<div id="message" class="notice notice-info"><p>' . $message . '</p></div>';
  146.     }
  147. }
  148. ?>
  149. <div id="message" class="notice notice-warning"><p><strong><?php _e( 'Caution:' ); ?></strong> <?php echo $caution_msg; ?></p></div>
  150.  
  151. <table class="form-table comment-ays">
  152. <tr>
  153. <th scope="row"><?php _e('Author'); ?></th>
  154. <td><?php comment_author( $comment ); ?></td>
  155. </tr>
  156. <?php if ( get_comment_author_email( $comment ) ) { ?>
  157. <tr>
  158. <th scope="row"><?php _e('Email'); ?></th>
  159. <td><?php comment_author_email( $comment ); ?></td>
  160. </tr>
  161. <?php } ?>
  162. <?php if ( get_comment_author_url( $comment ) ) { ?>
  163. <tr>
  164. <th scope="row"><?php _e('URL'); ?></th>
  165. <td><a href="<?php comment_author_url( $comment ); ?>"><?php comment_author_url( $comment ); ?></a></td>
  166. </tr>
  167. <?php } ?>
  168. <tr>
  169.     <th scope="row"><?php /* translators: column name or table row header */ _e( 'In Response To' ); ?></th>
  170.     <td>
  171.     <?php
  172.         $post_id = $comment->comment_post_ID;
  173.         if ( current_user_can( 'edit_post', $post_id ) ) {
  174.             $post_link = "<a href='" . esc_url( get_edit_post_link( $post_id ) ) . "'>";
  175.             $post_link .= esc_html( get_the_title( $post_id ) ) . '</a>';
  176.         } else {
  177.             $post_link = esc_html( get_the_title( $post_id ) );
  178.         }
  179.         echo $post_link;
  180.  
  181.         if ( $comment->comment_parent ) {
  182.             $parent      = get_comment( $comment->comment_parent );
  183.             $parent_link = esc_url( get_comment_link( $parent ) );
  184.             $name        = get_comment_author( $parent );
  185.             printf(
  186.                 /* translators: %s: comment link */
  187.                 ' | ' . __( 'In reply to %s.' ),
  188.                 '<a href="' . $parent_link . '">' . $name . '</a>'
  189.             );
  190.         }
  191.     ?>
  192.     </td>
  193. </tr>
  194. <tr>
  195.     <th scope="row"><?php _e( 'Submitted on' ); ?></th>
  196.     <td>
  197.     <?php
  198.         /* translators: 1: comment date, 2: comment time */
  199.         $submitted = sprintf( __( '%1$s at %2$s' ),
  200.             /* translators: comment date format. See https://secure.php.net/date */
  201.             get_comment_date( __( 'Y/m/d' ), $comment ),
  202.             get_comment_date( __( 'g:i a' ), $comment )
  203.         );
  204.         if ( 'approved' === wp_get_comment_status( $comment ) && ! empty ( $comment->comment_post_ID ) ) {
  205.             echo '<a href="' . esc_url( get_comment_link( $comment ) ) . '">' . $submitted . '</a>';
  206.         } else {
  207.             echo $submitted;
  208.         }
  209.     ?>
  210.     </td>
  211. </tr>
  212. <tr>
  213. <th scope="row"><?php /* translators: field name in comment form */ _ex('Comment', 'noun'); ?></th>
  214. <td class="comment-content">
  215.     <?php comment_text( $comment ); ?>
  216.     <p class="edit-comment"><a href="<?php echo admin_url( "comment.php?action=editcomment&c={$comment->comment_ID}" ); ?>"><?php esc_html_e( 'Edit' ); ?></a></p>
  217. </td>
  218. </tr>
  219. </table>
  220.  
  221. <form action="comment.php" method="get" class="comment-ays-submit">
  222.  
  223. <p>
  224.     <?php submit_button( $button, 'primary', 'submit', false ); ?>
  225.     <a href="<?php echo admin_url('edit-comments.php'); ?>" class="button-cancel"><?php esc_html_e( 'Cancel' ); ?></a>
  226. </p>
  227.  
  228. <?php wp_nonce_field( $nonce_action ); ?>
  229. <input type="hidden" name="action" value="<?php echo esc_attr($formaction); ?>" />
  230. <input type="hidden" name="c" value="<?php echo esc_attr($comment->comment_ID); ?>" />
  231. <input type="hidden" name="noredir" value="1" />
  232. </form>
  233.  
  234. </div>
  235. <?php
  236.     break;
  237.  
  238. case 'deletecomment'    :
  239. case 'trashcomment'     :
  240. case 'untrashcomment'   :
  241. case 'spamcomment'      :
  242. case 'unspamcomment'    :
  243. case 'approvecomment'   :
  244. case 'unapprovecomment' :
  245.     $comment_id = absint( $_REQUEST['c'] );
  246.  
  247.     if ( in_array( $action, array( 'approvecomment', 'unapprovecomment' ) ) )
  248.         check_admin_referer( 'approve-comment_' . $comment_id );
  249.     else
  250.         check_admin_referer( 'delete-comment_' . $comment_id );
  251.  
  252.     $noredir = isset($_REQUEST['noredir']);
  253.  
  254.     if ( !$comment = get_comment($comment_id) )
  255.         comment_footer_die( __( 'Invalid comment ID.' ) . sprintf(' <a href="%s">' . __('Go back') . '</a>.', 'edit-comments.php') );
  256.     if ( !current_user_can( 'edit_comment', $comment->comment_ID ) )
  257.         comment_footer_die( __('Sorry, you are not allowed to edit comments on this post.') );
  258.  
  259.     if ( '' != wp_get_referer() && ! $noredir && false === strpos(wp_get_referer(), 'comment.php') )
  260.         $redir = wp_get_referer();
  261.     elseif ( '' != wp_get_original_referer() && ! $noredir )
  262.         $redir = wp_get_original_referer();
  263.     elseif ( in_array( $action, array( 'approvecomment', 'unapprovecomment' ) ) )
  264.         $redir = admin_url('edit-comments.php?p=' . absint( $comment->comment_post_ID ) );
  265.     else
  266.         $redir = admin_url('edit-comments.php');
  267.  
  268.     $redir = remove_query_arg( array('spammed', 'unspammed', 'trashed', 'untrashed', 'deleted', 'ids', 'approved', 'unapproved'), $redir );
  269.  
  270.     switch ( $action ) {
  271.         case 'deletecomment' :
  272.             wp_delete_comment( $comment );
  273.             $redir = add_query_arg( array('deleted' => '1'), $redir );
  274.             break;
  275.         case 'trashcomment' :
  276.             wp_trash_comment( $comment );
  277.             $redir = add_query_arg( array('trashed' => '1', 'ids' => $comment_id), $redir );
  278.             break;
  279.         case 'untrashcomment' :
  280.             wp_untrash_comment( $comment );
  281.             $redir = add_query_arg( array('untrashed' => '1'), $redir );
  282.             break;
  283.         case 'spamcomment' :
  284.             wp_spam_comment( $comment );
  285.             $redir = add_query_arg( array('spammed' => '1', 'ids' => $comment_id), $redir );
  286.             break;
  287.         case 'unspamcomment' :
  288.             wp_unspam_comment( $comment );
  289.             $redir = add_query_arg( array('unspammed' => '1'), $redir );
  290.             break;
  291.         case 'approvecomment' :
  292.             wp_set_comment_status( $comment, 'approve' );
  293.             $redir = add_query_arg( array( 'approved' => 1 ), $redir );
  294.             break;
  295.         case 'unapprovecomment' :
  296.             wp_set_comment_status( $comment, 'hold' );
  297.             $redir = add_query_arg( array( 'unapproved' => 1 ), $redir );
  298.             break;
  299.     }
  300.  
  301.     wp_redirect( $redir );
  302.     die;
  303.  
  304. case 'editedcomment' :
  305.  
  306.     $comment_id = absint( $_POST['comment_ID'] );
  307.     $comment_post_id = absint( $_POST['comment_post_ID'] );
  308.  
  309.     check_admin_referer( 'update-comment_' . $comment_id );
  310.  
  311.     edit_comment();
  312.  
  313.     $location = ( empty( $_POST['referredby'] ) ? "edit-comments.php?p=$comment_post_id" : $_POST['referredby'] ) . '#comment-' . $comment_id;
  314.  
  315.     /**
  316.      * Filters the URI the user is redirected to after editing a comment in the admin.
  317.      *
  318.      * @since 2.1.0
  319.      *
  320.      * @param string $location The URI the user will be redirected to.
  321.      * @param int $comment_id The ID of the comment being edited.
  322.      */
  323.     $location = apply_filters( 'comment_edit_redirect', $location, $comment_id );
  324.     wp_redirect( $location );
  325.  
  326.     exit();
  327.  
  328. default:
  329.     wp_die( __('Unknown action.') );
  330.  
  331. } // end switch
  332.  
  333. include( ABSPATH . 'wp-admin/admin-footer.php' );
  334.