Bug 32162: DBIC schema
[srvgit] / Koha / Quote.pm
index ecfc086..3ce1985 100644 (file)
@@ -16,12 +16,9 @@ package Koha::Quote;
 # 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);
 
@@ -35,75 +32,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'
-        };
+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
@@ -114,4 +56,4 @@ sub _type {
     return 'Quote';
 }
 
-1;
\ No newline at end of file
+1;