moved qdb here because matt is lazy
[public/www-new.git] / pub / qdb / src / modules / Chirpy / Quote.pm
1 ###############################################################################\r
2 # Chirpy! 0.3, a quote management system                                      #\r
3 # Copyright (C) 2005-2007 Tim De Pauw <ceetee@users.sourceforge.net>          #\r
4 ###############################################################################\r
5 # This program is free software; you can redistribute it and/or modify it     #\r
6 # under the terms of the GNU General Public License as published by the Free  #\r
7 # Software Foundation; either version 2 of the License, or (at your option)   #\r
8 # any later version.                                                          #\r
9 #                                                                             #\r
10 # This program is distributed in the hope that it will be useful, but WITHOUT #\r
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or       #\r
12 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for   #\r
13 # more details.                                                               #\r
14 #                                                                             #\r
15 # You should have received a copy of the GNU General Public License along     #\r
16 # with this program; if not, write to the Free Software Foundation, Inc., 51  #\r
17 # Franklin St, Fifth Floor, Boston, MA  02110-1301  USA                       #\r
18 ###############################################################################\r
19 \r
20 ###############################################################################\r
21 # $Id:: Quote.pm 291 2007-02-05 21:24:46Z ceetee                            $ #\r
22 ###############################################################################\r
23 \r
24 =head1 NAME\r
25 \r
26 Chirpy::Quote - Represents a quote\r
27 \r
28 =head1 SYNOPSIS\r
29 \r
30  $quote = new Chirpy::Quote(\r
31      $id, $body, $notes, $rating, $vote_count,\r
32      $submitted, $approved, $flagged, $tags);\r
33 \r
34  $id = $quote->get_id();\r
35  $quote->set_id($id);\r
36 \r
37  $body = $quote->get_body();\r
38  $quote->set_body($body);\r
39 \r
40  $notes = $quote->get_notes();\r
41  $quote->set_notes($notes);\r
42 \r
43  $rating = $quote->get_rating();\r
44  $quote->set_rating($rating);\r
45  \r
46  $vote_count = $quote->get_vote_count();\r
47  $quote->set_vote_count($vote_count);\r
48 \r
49  $submitted = $quote->get_date_submitted();\r
50  $quote->set_date_submitted($submitted);\r
51 \r
52  $approved = $quote->is_approved();\r
53  $quote->set_approved($approved);\r
54 \r
55  $flagged = $quote->is_flagged();\r
56  $quote->set_flagged($flagged);\r
57  \r
58  $tags = $quote->get_tags();\r
59  $quote->set_tags($tags);\r
60  $quote->add_tag($tag);\r
61  $quote->remove_tag($tag);\r
62 \r
63 =head1 CONSTRAINTS\r
64 \r
65 =over 4\r
66 \r
67 =item ID\r
68 \r
69 The quote ID must be a positive non-zero integer.\r
70 \r
71 =item Body\r
72 \r
73 The quote body can be any text string.\r
74 \r
75 =item Notes\r
76 \r
77 The quote notes can be any text string, if any.\r
78 \r
79 =item Rating\r
80 \r
81 The quote rating must be an integer.\r
82 \r
83 =item Vote Count\r
84 \r
85 The vote count must be a positive integer; a value of zero is allowed.\r
86 \r
87 =item Submitted\r
88 \r
89 The date when the quote was submitted must be a UNIX timestamp.\r
90 \r
91 =item Approved\r
92 \r
93 The quote approval status is 1 if the quote has been approved, 0 if it has not.\r
94 \r
95 =item Flagged\r
96 \r
97 The quote flag status is 1 if the quote has been reported, 0 if it has not.\r
98 \r
99 =item Tags\r
100 \r
101 Tags must be passed as a reference to an array of strings, each of which\r
102 constructed of lowercase non-whitespace characters.\r
103 \r
104 =back\r
105 \r
106 =head1 AUTHOR\r
107 \r
108 Tim De Pauw E<lt>ceetee@users.sourceforge.netE<gt>\r
109 \r
110 =head1 SEE ALSO\r
111 \r
112 L<Chirpy>, L<http://chirpy.sourceforge.net/>\r
113 \r
114 =head1 COPYRIGHT\r
115 \r
116 Copyright 2005-2007 Tim De Pauw. All rights reserved.\r
117 \r
118 This program is free software; you can redistribute it and/or modify it under\r
119 the terms of the GNU General Public License as published by the Free Software\r
120 Foundation; either version 2 of the License, or (at your option) any later\r
121 version.\r
122 \r
123 This program is distributed in the hope that it will be useful, but WITHOUT ANY\r
124 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\r
125 PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
126 \r
127 =cut\r
128 \r
129 package Chirpy::Quote;\r
130 \r
131 use strict;\r
132 use warnings;\r
133 \r
134 use vars qw($VERSION);\r
135 \r
136 $VERSION = '0.3';\r
137 \r
138 use Chirpy 0.3;\r
139 \r
140 sub new {\r
141         my ($class, $id, $body, $notes,\r
142                 $rating, $vote_count, $submitted, $approved, $flagged, $tags) = @_;\r
143         my $self = {\r
144                 'id' => $id,\r
145                 'body' => $body,\r
146                 'notes' => (defined $notes && $notes ne '' ? $notes : undef),\r
147                 'rating' => $rating,\r
148                 'vote_count' => $vote_count,\r
149                 'submitted' => $submitted,\r
150                 'approved' => $approved,\r
151                 'flagged' => $flagged,\r
152                 'tags' => (ref $tags eq 'ARRAY' ? [ sort @$tags ] : [])\r
153         };\r
154         return bless($self, $class);\r
155 }\r
156 \r
157 sub get_id {\r
158         my $self = shift;\r
159         return $self->{'id'};\r
160 }\r
161 \r
162 sub set_id {\r
163         my $self = shift;\r
164         return ($self->{'id'} = shift);\r
165 }\r
166 \r
167 sub get_body {\r
168         my $self = shift;\r
169         return $self->{'body'};\r
170 }\r
171 \r
172 sub set_body {\r
173         my $self = shift;\r
174         return ($self->{'body'} = shift);\r
175 }\r
176 \r
177 sub get_notes {\r
178         my $self = shift;\r
179         return $self->{'notes'};\r
180 }\r
181 \r
182 sub set_notes {\r
183         my ($self, $notes) = @_;\r
184         return ($self->{'notes'}\r
185                 = (defined $notes && $notes ne '' ? $notes : undef));\r
186 }\r
187 \r
188 sub get_rating {\r
189         my $self = shift;\r
190         return $self->{'rating'};\r
191 }\r
192 \r
193 sub set_vote_count {\r
194         my $self = shift;\r
195         return ($self->{'vote_count'} = shift);\r
196 }\r
197 \r
198 sub get_vote_count {\r
199         my $self = shift;\r
200         return $self->{'vote_count'};\r
201 }\r
202 \r
203 sub set_rating {\r
204         my $self = shift;\r
205         return ($self->{'rating'} = shift);\r
206 }\r
207 \r
208 sub get_date_submitted {\r
209         my $self = shift;\r
210         return $self->{'submitted'};\r
211 }\r
212 \r
213 sub set_date_submitted {\r
214         my $self = shift;\r
215         return ($self->{'submitted'} = shift);\r
216 }\r
217 \r
218 sub is_approved {\r
219         my $self = shift;\r
220         return $self->{'approved'};\r
221 }\r
222 \r
223 sub set_approved {\r
224         my $self = shift;\r
225         return ($self->{'approved'} = shift);\r
226 }\r
227 \r
228 sub is_flagged {\r
229         my $self = shift;\r
230         return $self->{'flagged'};\r
231 }\r
232 \r
233 sub set_flagged {\r
234         my $self = shift;\r
235         return ($self->{'flagged'} = shift);\r
236 }\r
237 \r
238 sub get_tags {\r
239         my $self = shift;\r
240         return $self->{'tags'};\r
241 }\r
242 \r
243 sub set_tags {\r
244         my $self = shift;\r
245         return ($self->{'tags'} = shift);\r
246 }\r
247 \r
248 *get_approved = \&is_approved;\r
249 \r
250 *get_flagged = \&is_flagged;\r
251 \r
252 1;\r
253 \r
254 ###############################################################################