diff --git a/wp-includes/comment.php b/wp-includes/comment.php
index e19540f841..f71c2c975f 100644
--- a/wp-includes/comment.php
+++ b/wp-includes/comment.php
@@ -73,16 +73,20 @@ function get_approved_comments($post_id) {
function &get_comment(&$comment, $output = OBJECT) {
global $comment_cache, $wpdb;
- if ( empty($comment) )
- return null;
-
- if ( is_object($comment) ) {
+ if ( empty($comment) ) {
+ if ( isset($GLOBALS['comment']) )
+ $_comment = & $GLOBALS['comment'];
+ else
+ $_comment = null;
+ } elseif ( is_object($comment) ) {
if ( !isset($comment_cache[$comment->comment_ID]) )
$comment_cache[$comment->comment_ID] = &$comment;
$_comment = & $comment_cache[$comment->comment_ID];
} else {
$comment = (int) $comment;
- if ( !isset($comment_cache[$comment]) ) {
+ if ( isset($GLOBALS['comment']) && ($GLOBALS['comment']->id == $comment) ) {
+ $_comment = & $GLOBALS['comment'];
+ } elseif ( !isset($comment_cache[$comment]) ) {
$_comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment' LIMIT 1");
$comment_cache[$comment->comment_ID] = & $_comment;
} else {
diff --git a/wp-includes/link-template.php b/wp-includes/link-template.php
index 0b45c7a422..7275825107 100644
--- a/wp-includes/link-template.php
+++ b/wp-includes/link-template.php
@@ -296,7 +296,21 @@ function get_edit_post_link( $id = 0 ) {
function edit_post_link( $link = 'Edit This', $before = '', $after = '' ) {
global $post;
-
+
+ if ( $post->post_type == 'attachment' )
+ return;
+ elseif ( $post->post_type == 'page' ) {
+ if ( !current_user_can( 'edit_page', $post->ID ) )
+ return;
+
+ $file = 'page';
+ } else {
+ if ( !current_user_can( 'edit_post', $post->ID ) )
+ return;
+
+ $file = 'post';
+ }
+
$link = '' . $link . '';
echo $before . apply_filters( 'edit_post_link', $link, $post->ID ) . $after;
}
@@ -319,8 +333,17 @@ function get_edit_comment_link( $comment_id = 0 ) {
}
function edit_comment_link( $link = 'Edit This', $before = '', $after = '' ) {
- global $comment;
-
+ global $comment, $post;
+
+ if ( $post->post_type == 'attachment' )
+ return;
+ elseif ( $post->post_type == 'page' )
+ if ( !current_user_can( 'edit_page', $post->ID ) )
+ return;
+ else
+ if ( !current_user_can( 'edit_post', $post->ID ) )
+ return;
+
$link = '' . $link . '';
echo $before . apply_filters( 'edit_comment_link', $link, $comment->comment_ID ) . $after;
}