View | Details | Raw Unified | Return to bug 23916
Collapse All | Expand All

(-)a/Koha/Patrons.pm (-2 / +1 lines)
Lines 196-203 sub anonymise_issue_history { Link Here
196
        );
196
        );
197
        my $anonymous_patron = C4::Context->preference('AnonymousPatron') || undef;
197
        my $anonymous_patron = C4::Context->preference('AnonymousPatron') || undef;
198
        $nb_rows += $old_issues_to_anonymise->update( {
198
        $nb_rows += $old_issues_to_anonymise->update( {
199
            'old_issues.borrowernumber' => $anonymous_patron,
199
            'old_issues.borrowernumber' => $anonymous_patron
200
            'old_issues.issuer'         => $anonymous_patron
201
        } );
200
        } );
202
    }
201
    }
203
    return $nb_rows;
202
    return $nb_rows;
(-)a/installer/data/mysql/atomicupdate/bug_23916_add_issues_issuer.perl (-33 lines)
Lines 13-50 if( CheckVersion( $DBversion ) ) { Link Here
13
        $dbh->do( q| ALTER TABLE old_issues ADD CONSTRAINT `old_issues_ibfk_borrowers_borrowernumber` FOREIGN KEY (`issuer`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE | );
13
        $dbh->do( q| ALTER TABLE old_issues ADD CONSTRAINT `old_issues_ibfk_borrowers_borrowernumber` FOREIGN KEY (`issuer`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE | );
14
    }
14
    }
15
15
16
    # Now attempt to migrate previously action logged issues into issues.issuer
17
    # We assume that an item issued to a borrower on the same day is the same issue
18
    #
19
    # Get existing action logs
20
    # - user = issuer
21
    # - object = borrowernumber
22
    # - info = itemnumber
23
    my $action_logs = $dbh->selectall_arrayref("SELECT DATE(timestamp) AS dt, user, object, info FROM action_logs WHERE module='CIRCULATION' and action='ISSUE'", { Slice => {} });
24
25
    foreach my $log( @{$action_logs} ) {
26
        # Look for an issue of this item, to this borrower, on this day
27
        # We're doing DATE comparison in the database to avoid invoking
28
        # DateTime and it's performance sapping ways...
29
        #
30
        # If we're dealing with an actual borrower
31
        if ($log->{user} != 0) {
32
            my $done_issue = $dbh->do(
33
                "UPDATE issues SET issuer = ? WHERE DATE(timestamp) = ? AND borrowernumber = ? AND itemnumber = ?",
34
                undef,
35
                ( $log->{user}, $log->{dt}, $log->{object}, $log->{info} )
36
            );
37
            # If we didn't find the issue in 'issues', look in 'old_issues'
38
            if (!$done_issue) {
39
                $dbh->do(
40
                    "UPDATE old_issues SET issuer = ? WHERE DATE(timestamp) = ? AND borrowernumber = ? AND itemnumber = ?",
41
                    undef,
42
                    ( $log->{user}, $log->{dt}, $log->{object}, $log->{info} )
43
                );
44
            }
45
        }
46
    }
47
48
    SetVersion( $DBversion );
16
    SetVersion( $DBversion );
49
    print "Upgrade to $DBversion done (Bug 23916 - Add issues.issuer)\n";
17
    print "Upgrade to $DBversion done (Bug 23916 - Add issues.issuer)\n";
50
}
18
}
51
- 

Return to bug 23916