[wp-trac] [WordPress Trac] #16215: Post Revision history displays the incorrect author

WordPress Trac wp-trac at lists.automattic.com
Thu Jan 13 06:52:07 UTC 2011


#16215: Post Revision history displays the incorrect author
--------------------------+----------------------------
 Reporter:  mdawaffe      |      Owner:
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Future Release
Component:  Revisions     |    Version:  3.1
 Severity:  normal        |   Keywords:
--------------------------+----------------------------
 Steps to reproduce:

 1. Create and Publish a new post as user admin.
 2. Edit that post and Update as user mdawaffe.
 3. View revision history for that post.  Note that the revisions are
 attributed to the wrong authors.

 The revision's post_author is currently being set to whoever edited the
 post away from the state represented by that revision row. It should be
 set to the person who edited the post *to* the state represented by that
 row.

 This bug has been around since the introduction of post revisions.

 To fix for future posts, I can think of two options.

 1. We should be able to pull the correct author for a new revision row
 from the _edit_lock/_edit_last post meta of the post (as long as we grab
 that before we update the post row).

 2. Currently, when a post is updated, revisions first grabs a copy of the
 current state of the post, stores it as a revision, then updates the post
 row.  To fix this bug, we could instead update the post row first then
 store a copy of that new state as a revision.  That would mean the most
 recent revision for all posts would be a duplicate of the actual post.

 Option 2 would be cleaner code, option 1 would be cleaner data.

 To fix for existing posts, we need to go through each post and fix each
 revision.  That's incredibly expensive to do on upgrade, so I suggest
 doing it per post on the fly when the post edit screen or post revisions
 screen is loaded.

 If we fix on the fly, we have to be able to keep track of which
 posts/revisions have been fixed and which haven't.  We could track that
 with:

 1. An option that is set on upgrade with a timestamp.  Compare
 post_modified to that timestamp.  This seems fragile to me since I bet
 there are plugins that override post_modifed.
 2. Post meta.  Easy, but adds one post meta per post just to fix a lame
 bug.
 3. Bump the menu_order of each fixed revision row from 0 -> 1.  (A version
 number for the revisioning system :)).  Hacky.

 I like 3: menu_order.

 We could also leave everything as is, allow the data to be wrong, and
 "fix" it on display or even in get_post().

 Aside: While we're in there, we may want to "fix" revisions' post_modified
 columns.  Currently, post_modified is identical to post_date, which is the
 time the post was put into the state represented by the revision.  We
 could make post_modified the time the post was edited away from the state
 represented by the revision.

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/16215>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list