Bug 20310: (follow-up) Add or remove orgcode in second try
[koha-ffzg.git] / Koha / Quote.pm
index 244aea0..49868aa 100644 (file)
@@ -17,12 +17,9 @@ package Koha::Quote;
 
 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::Exceptions::UnknownProgramState;
+use Koha::Quotes;
 
 use base qw(Koha::Object);
 
@@ -36,100 +33,20 @@ Koha::Quote - Koha Quote object class
 
 =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'
-        };
-
-=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;
-}
-
-=head2 get_daily_quote_for_interface
-
-    my $quote = Koha::Quote->get_daily_quote_for_interface();
-
-Is a wrapper for get_daily_quote(), with an extra check for using the correct
-interface defined in the syspref 'QuoteOfTheDay'.
-If the current interface is not allowed to display quotes, then returns nothing.
+This method returns the mapping for representing a Koha::Quote object
+on the API.
 
 =cut
 
-sub get_daily_quote_for_interface {
-    my ($self, %opts) = @_;
-    my $qotdPref = C4::Context->preference('QuoteOfTheDay');
-    my $interface = C4::Context->interface();
-    unless ($interface) {
-        my @cc = caller(3);
-        Koha::Exceptions::UnknownProgramState->throw(error => $cc[3]."()> C4::Context->interface() is not set! Don't know are you in OPAC or staff client?");
-    }
-    unless ($qotdPref =~ /$interface/) {
-        return;
-    }
-
-    return $self->get_daily_quote(%opts);
+sub to_api_mapping {
+    return {
+        id        => 'quote_id',
+        source    => 'source',
+        text      => 'text',
+        timestamp => 'displayed_on',
+    };
 }
 
 =head3 _type
@@ -140,4 +57,4 @@ sub _type {
     return 'Quote';
 }
 
-1;
\ No newline at end of file
+1;