https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=32476 --- Comment #14 from David Cook <dcook@prosentient.com.au> --- I did have some little mistakes in my previous example. Hopefully this is more illustrative. You don't need to use closures and personally I'm not a fan of "maybe_*" functions. -- Koha::Patron sub is_expired { my ($self, $params) = @_; ( $param->{cache} ) ? return $self->cache({ method => 'is_expired' }) : $self->cache({ method => 'is_expired', reset => 1 }); return ( $self->dateexpiry && $self->dateexpiry !~ '^9999' && dt_from_string( $self->dateexpiry ) < dt_from_string->truncate( to => 'day' ) ) ? 1 : 0; } sub has_overdues { my ($self, $params) = @_; ( $param->{cache} ) ? return $self->cache({ method => 'has_overdues' }) : $self->cache({ method => 'has_overdues', reset => 1 }); my $dtf = Koha::Database->new->schema->storage->datetime_parser; return $self->_result->issues->search({ date_due => { '<' => $dtf->format_datetime( dt_from_string() ) } })->count; } Koha::Object sub cache { my ($self, $args) = @_; my $method = $args->{method}; my $reset = $args->{reset}; my $value; if ($method){ if ($reset){ delete $self->{_cache}->{$method}; } else { if ( defined $self->{_cache}->{$method } ){ $value = $self->{_cache}->{$method }; } else { $value = $self->$method(); #Set cache $self->{_cache}->{$method} = $value; } } } return $value; } -- You are receiving this mail because: You are watching all bug changes.