Bug 22278: Clear cache when creating new report groups or subgroups
authorNick Clemens <nick@bywatersolutions.com>
Wed, 6 Feb 2019 12:49:58 +0000 (12:49 +0000)
committerNick Clemens <nick@bywatersolutions.com>
Fri, 8 Feb 2019 20:46:26 +0000 (20:46 +0000)
When a user adds a new group we create it, then fetch the groups from the cache. However, we aren't clearing the cache on creation. This patch fixes that

To test:
 0) Start a new report
 1) Pick create for the group
 2) Enter code and value
 3) Save
 4) You remain on the page and value and code are now empty (ok)
 5) BUT: The pull down for the group remains "None" instead of reflecting
    the new group
 6) Open a new tab and browse to reports - note the group exists and the report is in it
 7) On original tab save report again, the group was not selected so is lost
 8) Apply patch
 9) Retest with a new report
10) Group is created, saved, and selected upon save
11) Subsequent edits include the new group
12) Test with subgroups as well

Signed-off-by: Liz Rea <wizzyrea@gmail.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

reports/guided_reports.pl

index 80edc2a..e27e436 100755 (executable)
@@ -600,7 +600,6 @@ elsif ( $phase eq 'Save Report' ) {
     }
 
     create_non_existing_group_and_subgroup($input, $group, $subgroup);
-
     ## FIXME this is AFTER entering a name to save the report under
     if ($sql =~ /;?\W?(UPDATE|DELETE|DROP|INSERT|SHOW|CREATE)\W/i) {
         push @errors, {sqlerr => $1};
@@ -659,7 +658,6 @@ elsif ( $phase eq 'Save Report' ) {
                     cache_expiry   => $cache_expiry,
                     public         => $public,
                 } );
-
                 logaction( "REPORTS", "ADD", $id, "$name | $sql" ) if C4::Context->preference("ReportsLog");
             $template->param(
                 'save_successful' => 1,
@@ -1058,7 +1056,6 @@ sub groups_with_subgroups {
 
 sub create_non_existing_group_and_subgroup {
     my ($input, $group, $subgroup) = @_;
-
     if (defined $group and $group ne '') {
         my $report_groups = C4::Reports::Guided::get_report_groups;
         if (not exists $report_groups->{$group}) {
@@ -1068,6 +1065,9 @@ sub create_non_existing_group_and_subgroup {
                 authorised_value => $group,
                 lib => $groupdesc,
             })->store;
+            my $cache_key = "AuthorisedValues-REPORT_GROUP-0-".C4::Context->userenv->{"branch"};
+            my $cache  = Koha::Caches->get_instance();
+            my $result = $cache->clear_from_cache($cache_key);
         }
         if (defined $subgroup and $subgroup ne '') {
             if (not exists $report_groups->{$group}->{subgroups}->{$subgroup}) {
@@ -1078,6 +1078,9 @@ sub create_non_existing_group_and_subgroup {
                     lib => $subgroupdesc,
                     lib_opac => $group,
                 })->store;
+            my $cache_key = "AuthorisedValues-REPORT_SUBGROUP-0-".C4::Context->userenv->{"branch"};
+            my $cache  = Koha::Caches->get_instance();
+            my $result = $cache->clear_from_cache($cache_key);
             }
         }
     }