[buddypress-trac] [BuddyPress] #4933: Members Directory Search doesn't find O'Connor
    buddypress-trac 
    noreply at wordpress.org
       
    Mon Apr 15 15:23:46 UTC 2013
    
    
  
#4933: Members Directory Search doesn't find O'Connor
-------------------------------------+------------------------------
 Reporter:  dontdream                |       Owner:
     Type:  defect (bug)             |      Status:  new
 Priority:  normal                   |   Milestone:  Awaiting Review
Component:  Core                     |     Version:  1.7
 Severity:  normal                   |  Resolution:
 Keywords:  has-patch needs-testing  |
-------------------------------------+------------------------------
Changes (by boonebgorges):
 * keywords:  has-patch => has-patch needs-testing
Comment:
 Confirmed. Thanks for the report, dontdream.
 I found that simply swapping out the `like_escape()` wasn't enough to make
 the query succeed. In order to get things to work, I had to *double*
 escape the LIKE clause going in. See 4933.patch.
 The first escape makes sense, since the apostrophe is escaped in the
 database. In other words:
 {{{
 SELECT * FROM wp_bp_xprofile_data;
 |  5 |        1 |       5 | Foo\'Bar \"The Bomb\" | 2013-04-15 09:00:14 |
 }}}
 Based on this, you'd think that the following query would work:
 {{{
 SELECT user_id FROM wp_bp_xprofile_data WHERE value LIKE 'oo\\\'Bar';
 }}}
 But it doesn't - you need one more layer of escaping. I'm not 100% sure
 why this is the case. I think it has something to do with the way that
 MySQL interprets LIKE clauses - it could be that the escape character has
 an additional role in LIKE clauses (though I can't find any documentation
 that backs this up). So we end up needing a query that looks like this:
 {{{
 SELECT user_id FROM wp_bp_xprofile_data WHERE value LIKE 'oo\\\\\\\'Bar';
 }}}
 Also, we can't just remove call to `like_escape()`, because that'll break
 searches with percent-signs or underscores.
 4933.patch contains my reworked logic for the search_terms query, as well
 as unit tests for the cases of apostrophe, underscore, and percent-sign.
 They're all passing for me (the automated tests as well as when I test
 manually in the browser). But because of the double-encoding issue with
 the apostrophe, and because dontdream did *not* report that double-
 encoding was necessary, I would like to have a sanity check from another
 core dev before committing.
-- 
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/4933#comment:2>
BuddyPress <http://buddypress.org/>
BuddyPress
    
    
More information about the buddypress-trac
mailing list