Lines 78-89
use Koha::Patrons;
Link Here
|
78 |
use Koha::Plugins; |
78 |
use Koha::Plugins; |
79 |
use Koha::Ratings; |
79 |
use Koha::Ratings; |
80 |
use Koha::Reviews; |
80 |
use Koha::Reviews; |
|
|
81 |
use Koha::SharedContent; |
81 |
use Koha::Serial::Items; |
82 |
use Koha::Serial::Items; |
82 |
use Koha::SearchEngine::Search; |
83 |
use Koha::SearchEngine::Search; |
83 |
use Koha::SearchEngine::QueryBuilder; |
84 |
use Koha::SearchEngine::QueryBuilder; |
84 |
use Koha::Util::MARC; |
85 |
use Koha::Util::MARC; |
85 |
|
86 |
|
86 |
use JSON qw( decode_json ); |
87 |
use JSON qw( decode_json ); |
|
|
88 |
use DateTime; |
89 |
use constant DURATION_BEFORE_REFRESH => DateTime::Duration->new( months => 3 ); |
87 |
|
90 |
|
88 |
my $query = CGI->new(); |
91 |
my $query = CGI->new(); |
89 |
|
92 |
|
Lines 921-926
$template->param( ocoins => $coins );
Link Here
|
921 |
|
924 |
|
922 |
my ( $loggedincommenter, $reviews ); |
925 |
my ( $loggedincommenter, $reviews ); |
923 |
if ( C4::Context->preference('OPACComments') ) { |
926 |
if ( C4::Context->preference('OPACComments') ) { |
|
|
927 |
if ( C4::Context->preference('Mana') ) { |
928 |
my $now = DateTime->now(); |
929 |
my $biblioitem = Koha::Biblioitems->find($biblionumber); |
930 |
$biblioitem = $biblioitem->unblessed if $biblioitem; |
931 |
my $last_update; |
932 |
eval { $last_update = DateTime::Format::MySQL->parse_date( $biblioitem->{last_mana_update} ) }; |
933 |
if ( ( !$last_update ) |
934 |
or DateTime::Duration->compare( ( $now - $last_update ), DURATION_BEFORE_REFRESH ) == -1 ) |
935 |
{ |
936 |
my $idtype; |
937 |
my $documentid; |
938 |
if ($isbn) { |
939 |
$idtype = 'isbn'; |
940 |
$documentid = $isbn; |
941 |
} elsif ( $biblioitem->{issn} ) { |
942 |
$idtype = 'issn'; |
943 |
$documentid = $biblioitem->{issn}; |
944 |
} elsif ( $biblioitem->{ean} ) { |
945 |
$idtype = 'ean'; |
946 |
$documentid = $ean; |
947 |
} |
948 |
if ( $documentid and $idtype ) { |
949 |
my $mana_ip = C4::Context->config('mana_config'); |
950 |
my $url = "$mana_ip/review.json?documentid=$documentid&idtype=$idtype"; |
951 |
my $request = HTTP::Request->new( GET => $url ); |
952 |
$request->content_type('aplication/json'); |
953 |
my $response = Koha::SharedContent::manaRequest($request); |
954 |
my $mana_reviews = $response->{data}; |
955 |
foreach my $mana_review (@$mana_reviews) { |
956 |
my $existing = Koha::Reviews->search( mana_id => $mana_review->{id} ); |
957 |
unless ( scalar @{ $existing->unblessed } ) { |
958 |
my $review; |
959 |
$review->{borrowernumber} = undef; |
960 |
$review->{biblionumber} = $biblionumber; |
961 |
$review->{review} = $mana_review->{review}; |
962 |
$review->{approved} = 1; |
963 |
$review->{datereviewed} = DateTime->now(); |
964 |
$review->{share_auth} = 1; |
965 |
$review->{mana_id} = $mana_review->{id}; |
966 |
Koha::Review->new($review)->store; |
967 |
} |
968 |
} |
969 |
} |
970 |
} |
971 |
$biblioitem->last_mana_update( $now->ymd() ); |
972 |
$biblioitem->store(); |
973 |
} |
974 |
|
924 |
$reviews = Koha::Reviews->search( |
975 |
$reviews = Koha::Reviews->search( |
925 |
{ |
976 |
{ |
926 |
biblionumber => $biblionumber, |
977 |
biblionumber => $biblionumber, |