# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
-use Carp;
-use DateTime::Format::MySQL;
-use DBI qw(:sql_types);
use Koha::Database;
-use Koha::DateUtils qw(dt_from_string);
+use Koha::Quotes;
use base qw(Koha::Object);
=cut
-=head2 get_daily_quote($opts)
+=head3 to_api_mapping
-Takes a hashref of options
-
-Currently supported options are:
-
-'id' An exact quote id
-'random' Select a random quote
-noop When no option is passed in, this sub will return the quote timestamped for the current day
-
-The function returns an anonymous hash following this format:
-
- {
- 'source' => 'source-of-quote',
- 'timestamp' => 'timestamp-value',
- 'text' => 'text-of-quote',
- 'id' => 'quote-id'
- };
+This method returns the mapping for representing a Koha::Quote object
+on the API.
=cut
-# This is definitely a candidate for some sort of caching once we finally settle caching/persistence issues...
-# at least for default option
-
-sub get_daily_quote {
- my ($self, %opts) = @_;
- my $dbh = C4::Context->dbh;
- my $query = '';
- my $sth = undef;
- my $quote = undef;
- if ($opts{'id'}) {
- $query = 'SELECT * FROM quotes WHERE id = ?';
- $sth = $dbh->prepare($query);
- $sth->execute($opts{'id'});
- $quote = $sth->fetchrow_hashref();
- }
- elsif ($opts{'random'}) {
- # Fall through... we also return a random quote as a catch-all if all else fails
- }
- else {
- $query = 'SELECT * FROM quotes WHERE timestamp LIKE CONCAT(CURRENT_DATE,\'%\') ORDER BY timestamp DESC LIMIT 0,1';
- $sth = $dbh->prepare($query);
- $sth->execute();
- $quote = $sth->fetchrow_hashref();
- }
- unless ($quote) { # if there are not matches, choose a random quote
- # get a list of all available quote ids
- $sth = C4::Context->dbh->prepare('SELECT count(*) FROM quotes;');
- $sth->execute;
- my $range = ($sth->fetchrow_array)[0];
- # chose a random id within that range if there is more than one quote
- my $offset = int(rand($range));
- # grab it
- $query = 'SELECT * FROM quotes ORDER BY id LIMIT 1 OFFSET ?';
- $sth = C4::Context->dbh->prepare($query);
- # see http://www.perlmonks.org/?node_id=837422 for why
- # we're being verbose and using bind_param
- $sth->bind_param(1, $offset, SQL_INTEGER);
- $sth->execute();
- $quote = $sth->fetchrow_hashref();
- # update the timestamp for that quote
- $query = 'UPDATE quotes SET timestamp = ? WHERE id = ?';
- $sth = C4::Context->dbh->prepare($query);
- $sth->execute(
- DateTime::Format::MySQL->format_datetime( dt_from_string() ),
- $quote->{'id'}
- );
- }
- return $quote;
+sub to_api_mapping {
+ return {
+ id => 'quote_id',
+ source => 'source',
+ text => 'text',
+ timestamp => 'displayed_on',
+ };
}
=head3 _type
return 'Quote';
}
-1;
\ No newline at end of file
+1;