← Index
NYTProf Performance Profile   « line view »
For starman worker -M FindBin --max-requests 50 --workers 2 --user=kohadev-koha --group kohadev-koha --pid /var/run/koha/kohadev/plack.pid --daemonize --access-log /var/log/koha/kohadev/plack.log --error-log /var/log/koha/kohadev/plack-error.log -E deployment --socket /var/run/koha/kohadev/plack.sock /etc/koha/sites/kohadev/plack.psgi
  Run on Fri Jan 8 14:16:49 2016
Reported on Fri Jan 8 14:23:09 2016

Filename/home/vagrant/kohaclone/Koha/Objects.pm
StatementsExecuted 0 statements in 22µs
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Koha::Objects;
2
3# Copyright ByWater Solutions 2014
4#
5# This file is part of Koha.
6#
7# Koha is free software; you can redistribute it and/or modify it under the
8# terms of the GNU General Public License as published by the Free Software
9# Foundation; either version 3 of the License, or (at your option) any later
10# version.
11#
12# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License along
17# with Koha; if not, write to the Free Software Foundation, Inc.,
18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20use Modern::Perl;
21
22use Carp;
23
24use Koha::Database;
25
26our $type;
27
28=head1 NAME
29
30Koha::Objects - Koha Object set base class
31
32=head1 SYNOPSIS
33
34 use Koha::Objects;
35 my @objects = Koha::Objects->search({ borrowernumber => $borrowernumber});
36
37=head1 DESCRIPTION
38
39This class must be subclassed.
40
41=head1 API
42
43=head2 Class Methods
44
45=cut
46
47=head3 Koha::Objects->new();
48
49my $object = Koha::Objects->new();
50
51=cut
52
53sub new {
54 my ($class) = @_;
55 my $self = {};
56
57 bless( $self, $class );
58}
59
60=head3 Koha::Objects->_new_from_dbic();
61
62my $object = Koha::Objects->_new_from_dbic( $resultset );
63
64=cut
65
66sub _new_from_dbic {
67 my ( $class, $resultset ) = @_;
68 my $self = { _resultset => $resultset };
69
70 bless( $self, $class );
71}
72
73=head3 Koha::Objects->find();
74
75my $object = Koha::Objects->find($id);
76my $object = Koha::Objects->find( { keypart1 => $keypart1, keypart2 => $keypart2 } );
77
78=cut
79
80sub find {
81 my ( $self, $id ) = @_;
82
83 return unless $id;
84
85 my $result = $self->_resultset()->find($id);
86
87 return unless $result;
88
89 my $object = $self->object_class()->_new_from_dbic( $result );
90
91 return $object;
92}
93
94=head3 Koha::Objects->search();
95
96my @objects = Koha::Objects->search($params);
97
98=cut
99
100sub search {
101 my ( $self, $params, $attributes ) = @_;
102
103 if (wantarray) {
104 my @dbic_rows = $self->_resultset()->search($params, $attributes);
105
106 return $self->_wrap(@dbic_rows);
107
108 }
109 else {
110 my $class = ref($self) ? ref($self) : $self;
111120µs my $rs = $self->_resultset()->search($params, $attributes);
112
113 return $class->_new_from_dbic($rs);
114 }
115}
116
117=head3 Koha::Objects->count();
118
119my @objects = Koha::Objects->count($params);
120
121=cut
122
123sub count {
124 my ( $self, $params ) = @_;
125
126 return $self->_resultset()->count($params);
127}
128
129=head3 Koha::Objects->pager();
130
131my $pager = Koha::Objects->pager;
132
133=cut
134
135sub pager {
136 my ( $self ) = @_;
137 return $self->_resultset->pager;
138}
139
140=head3 Koha::Objects->next();
141
142my $object = Koha::Objects->next();
143
144Returns the next object that is part of this set.
145Returns undef if there are no more objects to return.
146
147=cut
148
149sub next {
150 my ( $self ) = @_;
151
152 my $result = $self->_resultset()->next();
153 return unless $result;
154
155 my $object = $self->object_class()->_new_from_dbic( $result );
156
157 return $object;
158}
159
160=head3 Koha::Objects->reset();
161
162Koha::Objects->reset();
163
164resets iteration so the next call to next() will start agein
165with the first object in a set.
166
167=cut
168
169sub reset {
170 my ( $self ) = @_;
171
172 $self->_resultset()->reset();
173
174 return $self;
175}
176
177=head3 Koha::Objects->as_list();
178
179Koha::Objects->as_list();
180
181Returns an arrayref of the objects in this set.
182
183=cut
184
185sub as_list {
186 my ( $self ) = @_;
187
188 my @dbic_rows = $self->_resultset()->all();
189
190 my @objects = $self->_wrap(@dbic_rows);
191
192 return wantarray ? @objects : \@objects;
193}
194
195=head3 Koha::Objects->unblessed
196
197Returns an unblessed representation of objects.
198
199=cut
200
201sub unblessed {
202 my ($self) = @_;
203
204 return [ map { $_->unblessed } $self->as_list ];
205}
206
207=head3 Koha::Objects->_wrap
208
209wraps the DBIC object in a corresponding Koha object
210
211=cut
212
213sub _wrap {
214 my ( $self, @dbic_rows ) = @_;
215
216 my @objects = map { $self->object_class()->_new_from_dbic( $_ ) } @dbic_rows;
217
218 return @objects;
219}
220
221=head3 Koha::Objects->_resultset
222
223Returns the internal resultset or creates it if undefined
224
225=cut
226
227sub _resultset {
228 my ($self) = @_;
229
230 if ( ref($self) ) {
231 $self->{_resultset} ||=
232 Koha::Database->new()->schema()->resultset( $self->type() );
233
234 return $self->{_resultset};
235 }
236 else {
23713µs return Koha::Database->new()->schema()->resultset( $self->type() );
238 }
239}
240
241=head3 type
242
243The type method must be set for all child classes.
244The value returned by it should be the DBIC resultset name.
245For example, for holds, type should return 'Reserve'.
246
247=cut
248
249sub type { }
250
251=head3 object_class
252
253This method must be set for all child classes.
254The value returned by it should be the name of the Koha
255object class that is returned by this class.
256For example, for holds, object_class should return 'Koha::Hold'.
257
258=cut
259
260sub object_class { }
261
262sub DESTROY { }
263
264=head1 AUTHOR
265
266Kyle M Hall <kyle@bywatersolutions.com>
267
268=cut
269
2701;