|
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, |