View | Details | Raw Unified | Return to bug 18922
Collapse All | Expand All

(-)a/installer/data/mysql/atomicupdate/bug_18922_add_reader_auth.sql (+4 lines)
Line 0 Link Here
1
ALTER TABLE reviews ADD COLUMN share_auth integer;
2
ALTER TABLE reviews ADD COLUMN mana_id integer UNIQUE;
3
4
ALTER TABLE biblioitems ADD COLUMN last_mana_update date;
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/web_services.pref (+1 lines)
Lines 65-70 Web services: Link Here
65
            - pref: AutoShareWithMana
65
            - pref: AutoShareWithMana
66
              multiple:
66
              multiple:
67
                subscription: Subscriptions
67
                subscription: Subscriptions
68
                review: Reviews
68
    Reporting:
69
    Reporting:
69
        -
70
        -
70
            - Only return
71
            - Only return
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reviews/reviewswaiting.tt (-1 / +8 lines)
Lines 14-21 Link Here
14
   <div id="bd">
14
   <div id="bd">
15
	<div id="yui-main">
15
	<div id="yui-main">
16
	<div class="yui-b">
16
	<div class="yui-b">
17
        <h1>Comments</h1>
17
18
18
<h1>Comments</h1>
19
        [% IF msg %]
20
            [% IF code  %]
21
                <div class="dialog message"> Error occured, mana server returned [% msg %] with statuscode [% code %] </div>
22
            [% ELSE  %]
23
                <div class="dialog message"> [% msg %] </div>
24
            [% END %]
25
        [% END %]
19
26
20
<!-- The manual invoice and credit buttons -->
27
<!-- The manual invoice and credit buttons -->
21
<div class="statictabs">
28
<div class="statictabs">
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-review.tt (+1 lines)
Lines 49-54 Link Here
49
                            [% IF ( reviewid ) %]<input type="hidden" name="reviewid" value="[% reviewid | html%]" />[% END %]
49
                            [% IF ( reviewid ) %]<input type="hidden" name="reviewid" value="[% reviewid | html%]" />[% END %]
50
                            <fieldset>
50
                            <fieldset>
51
                                <textarea id="review" name="review" cols="60" rows="8">[% review %]</textarea>
51
                                <textarea id="review" name="review" cols="60" rows="8">[% review %]</textarea>
52
                                <input type=checkbox name=share_auth> I Accept to share anonymously this comment with all users of the Mana KB.
52
                            </fieldset>
53
                            </fieldset>
53
                            <p>Note: Your comment must be approved by a librarian. </p>
54
                            <p>Note: Your comment must be approved by a librarian. </p>
54
                            <fieldset class="action">
55
                            <fieldset class="action">
(-)a/opac/opac-detail.pl (+58 lines)
Lines 55-60 use Koha::ItemTypes; Link Here
55
use Koha::Virtualshelves;
55
use Koha::Virtualshelves;
56
use Koha::Ratings;
56
use Koha::Ratings;
57
use Koha::Reviews;
57
use Koha::Reviews;
58
use Koha::SharedContent;
59
60
use DateTime;
61
use constant DURATION_BEFORE_REFRESH => DateTime::Duration->new( months => 3 );
58
62
59
BEGIN {
63
BEGIN {
60
	if (C4::Context->preference('BakerTaylorEnabled')) {
64
	if (C4::Context->preference('BakerTaylorEnabled')) {
Lines 819-824 $template->param( Link Here
819
823
820
my ( $loggedincommenter, $reviews );
824
my ( $loggedincommenter, $reviews );
821
if ( C4::Context->preference('reviewson') ) {
825
if ( C4::Context->preference('reviewson') ) {
826
    if ( C4::Context->preference( 'Mana' ) ){
827
        my $now = DateTime->now();
828
        my $biblioitem = Koha::Biblioitems->find( $biblionumber );
829
        $biblioitem = $biblioitem->unblessed if $biblioitem;
830
        my $last_update;
831
        eval {$last_update = DateTime::Format::MySQL->parse_date( $biblioitem->{last_mana_update} )};
832
        if ( (!$last_update) or DateTime::Duration->compare( ( $now - $last_update ), DURATION_BEFORE_REFRESH ) == -1 ){
833
            my $idtype;
834
            my $documentid;
835
            if ( $isbn ){
836
                $idtype= 'isbn';
837
                $documentid = $isbn;
838
            }
839
            elsif ( $biblioitem->{issn} ){
840
                $idtype = 'issn';
841
                $documentid= $biblioitem->{issn};
842
            }
843
            elsif ( $biblioitem->{ean} ){
844
                $idtype = 'ean';
845
                $documentid= $ean;
846
            }
847
848
            if ( $documentid and $idtype ){
849
                my $mana_ip = C4::Context->config('mana_config');
850
                my $url = "$mana_ip/review.json?documentid=$documentid&idtype=$idtype";
851
                my $request = HTTP::Request->new( GET => $url );
852
                $request->content_type('aplication/json');
853
                my $response = Koha::SharedContent::manaRequest( $request );
854
                my $mana_reviews = $response->{data};
855
                foreach my $mana_review ( @$mana_reviews ){
856
                    my $existing = Koha::Reviews->search( mana_id => $mana_review->{id});
857
                    unless ( scalar @{ $existing->unblessed } ){
858
                        my $review;
859
                        $review->{borrowernumber} = undef;
860
                        $review->{biblionumber} = $biblionumber;
861
                        $review->{review} = $mana_review->{review};
862
                        $review->{approved} = 1;
863
                        $review->{datereviewed} = DateTime->now();
864
                        $review->{share_auth} = 1;
865
                        $review->{mana_id} = $mana_review->{id};
866
                        Koha::Review->new( $review )->store;
867
                    }
868
                }
869
            }
870
        }
871
        my $biblioitem = Koha::Biblioitems->find( $biblionumber );
872
        $biblioitem->last_mana_update( $now->ymd() );
873
        $biblioitem->store();
874
875
    }
876
877
878
879
822
    $reviews = Koha::Reviews->search(
880
    $reviews = Koha::Reviews->search(
823
        {
881
        {
824
            biblionumber => $biblionumber,
882
            biblionumber => $biblionumber,
(-)a/opac/opac-review.pl (+3 lines)
Lines 33-38 my $query = new CGI; Link Here
33
my $biblionumber = $query->param('biblionumber');
33
my $biblionumber = $query->param('biblionumber');
34
my $review       = $query->param('review');
34
my $review       = $query->param('review');
35
my $reviewid     = $query->param('reviewid');
35
my $reviewid     = $query->param('reviewid');
36
my $share_auth   = ( $query->param('share_auth') eq 'on') ? 1 : 0 ;
36
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
37
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
37
    {
38
    {
38
        template_name   => "opac-review.tt",
39
        template_name   => "opac-review.tt",
Lines 78-83 if( !@errors && defined $review ) { Link Here
78
                        review        => $clean,
79
                        review        => $clean,
79
                        approved      => 0,
80
                        approved      => 0,
80
                        datereviewed  => dt_from_string
81
                        datereviewed  => dt_from_string
82
                        share_auth     => $share_auth,
81
                    }
83
                    }
82
                )->store;
84
                )->store;
83
            } else {
85
            } else {
Lines 85-90 if( !@errors && defined $review ) { Link Here
85
                    {   biblionumber   => $biblionumber,
87
                    {   biblionumber   => $biblionumber,
86
                        borrowernumber => $borrowernumber,
88
                        borrowernumber => $borrowernumber,
87
                        review         => $clean,
89
                        review         => $clean,
90
                        share_auth     => $share_auth,
88
                    }
91
                    }
89
                )->store->reviewid;
92
                )->store->reviewid;
90
            }
93
            }
(-)a/reviews/reviewswaiting.pl (-1 / +47 lines)
Lines 24-29 use C4::Context; Link Here
24
use C4::Members;
24
use C4::Members;
25
use C4::Biblio;
25
use C4::Biblio;
26
use Koha::Reviews;
26
use Koha::Reviews;
27
use Koha::SharedContent;
28
29
use HTTP::Request;
30
27
31
28
my $query = new CGI;
32
my $query = new CGI;
29
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
33
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
Lines 47-52 my $total = Koha::Reviews->search({ approved => $status })->count; Link Here
47
if ( $op eq 'approve' ) {
51
if ( $op eq 'approve' ) {
48
    my $review = Koha::Reviews->find( $reviewid );
52
    my $review = Koha::Reviews->find( $reviewid );
49
    $review->approve if $review;
53
    $review->approve if $review;
54
    my $biblioitem = Koha::Biblioitems->find( $review->biblionumber );
55
    my $documentid;
56
    my $idtype;
57
    if ( C4::Context->preference("Mana")
58
        and grep {$_ eq "review"}  split( /,/, C4::Context->preference('AutoShareWithMana'))
59
        and $review->share_auth){
60
61
        #searches for a valid identifier for Mana
62
        if ( $biblioitem->isbn ){
63
            $documentid = $biblioitem->isbn;
64
            $idtype = 'isbn';
65
        }
66
        elsif ( $biblioitem->issn ){
67
            $documentid = $biblioitem->issn;
68
            $idtype = 'issn';
69
        }
70
        elsif ( $biblioitem->ean ){
71
            $documentid = $biblioitem->ean;
72
            $idtype = 'ean';
73
        }
74
75
        #if the resource can be identified by Mana
76
        if ( $documentid and $idtype ){
77
            my $reviewforMana = {
78
                reviewid => $review->reviewid,
79
                review => $review->review,
80
                documentid => $documentid,
81
                idtype => $idtype,
82
                language => C4::Context->preference('language')
83
            };
84
            my $result = Koha::SharedContent::manaPostRequest( 'review', $reviewforMana );
85
warn Data::Dumper::Dumper( $result );
86
            $template->param(
87
                    msg => $result->{msg},
88
            );
89
            unless ( $result->{code} =~ /2../){
90
                $template->param(
91
                        code => $result->{code}
92
                );
93
            }
94
        }
95
    }
96
50
}
97
}
51
elsif ( $op eq 'unapprove' ) {
98
elsif ( $op eq 'unapprove' ) {
52
    my $review = Koha::Reviews->find( $reviewid );
99
    my $review = Koha::Reviews->find( $reviewid );
53
- 

Return to bug 18922