Bug 12371 - Links in every patron self-registration email points to a single borrower
authorKyle M Hall <kyle@bywatersolutions.com>
Fri, 15 Aug 2014 16:45:44 +0000 (12:45 -0400)
committerFridolin Somers <fridolin.somers@biblibre.com>
Fri, 23 Jan 2015 12:44:30 +0000 (13:44 +0100)
If multiple registrations are submitted, the first patron to register
will be used for the first patron to click the registration confirmation
link!

Test Plan:
1) Submit 2 new patron registrations
2) Use the confirm link from the 2nd registration
3) Note you end up registering as the first submitted registration
4) Apply the patch
5) Repeat steps 1 and 2
6) Note you are now confirmed correctly

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>

Test plan appears to work fine, I have a feeling the sql could be
written better but can't come up with it on a Sunday morning

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Works as described and fixes a critical bug.
Passes tests and QA script.

Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 37fae3408b66d5b94f9fa4f4c2e5c02f360a8041)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>

C4/Letters.pm

index 2c4ff83..e24e465 100644 (file)
@@ -583,7 +583,7 @@ sub _parseletter_sth {
     ($table eq 'aqbooksellers') ? "SELECT * FROM $table WHERE             id = ?"                                  :
     ($table eq 'aqorders'     ) ? "SELECT * FROM $table WHERE    ordernumber = ?"                                  :
     ($table eq 'opac_news'    ) ? "SELECT * FROM $table WHERE          idnew = ?"                                  :
-    ($table eq 'borrower_modifications') ? "SELECT * FROM $table WHERE borrowernumber = ? OR verification_token =?":
+    ($table eq 'borrower_modifications') ? "SELECT * FROM $table WHERE ( borrowernumber = 0 OR borrowernumber = ? ) AND ( verification_token = '' OR verification_token = ? ) AND ( verification_token != '' OR borrowernumber != 0 )" :
     undef ;
     unless ($query) {
         warn "ERROR: No _parseletter_sth query for table '$table'";