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

(-)a/opac/opac-review.pl (-36 / +47 lines)
Lines 31-38 use Koha::Reviews; Link Here
31
31
32
my $query        = CGI->new;
32
my $query        = CGI->new;
33
my $biblionumber = $query->param('biblionumber');
33
my $biblionumber = $query->param('biblionumber');
34
my $review       = $query->param('review');   # if defined submit
34
my $review       = $query->param('review');         # if defined submit
35
my $reviewid     = $query->param('reviewid'); # if defined edit
35
my $reviewid     = $query->param('reviewid');       # if defined edit
36
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
36
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
37
    {
37
    {
38
        template_name   => 'opac-review.tt',
38
        template_name   => 'opac-review.tt',
Lines 47-93 my ( $template, $borrowernumber, $cookie ) = get_template_and_user( Link Here
47
my ( $clean, @errors, $savedreview, $affectedreview );
47
my ( $clean, @errors, $savedreview, $affectedreview );
48
48
49
my $submitting = ( defined $review && $review ne q{} ) ? 1 : 0;
49
my $submitting = ( defined $review && $review ne q{} ) ? 1 : 0;
50
my $editing    = ( defined $reviewid ) ? 1: 0;
50
my $editing = ( defined $reviewid ) ? 1 : 0;
51
51
52
my $biblio = GetBiblioData($biblionumber);
52
my $biblio = GetBiblioData($biblionumber);
53
53
54
if( !$biblio ) {
54
if ( !$biblio ) {
55
    push @errors, { nobiblio => 1 };
55
    push @errors, { nobiblio => 1 };
56
} elsif( $reviewid ) { # edit existing one, check on creator
56
}
57
    $savedreview = Koha::Reviews->search({ reviewid => $reviewid, borrowernumber => $borrowernumber })->next;
57
elsif ($reviewid) {    # edit existing one, check on creator
58
    if (!$savedreview) { push @errors, { unauthorized => 1 } };
58
    $savedreview = Koha::Reviews->search(
59
} else { # this check prevents adding multiple comments
59
        { reviewid => $reviewid, borrowernumber => $borrowernumber } )->next;
60
    # FIXME biblionumber, borrowernumber should be a unique key of reviews
60
    if ( !$savedreview ) { push @errors, { unauthorized => 1 } }
61
    $savedreview = Koha::Reviews->search({ biblionumber => $biblionumber, borrowernumber => $borrowernumber })->next;
61
}
62
    $review = $savedreview? $savedreview->review: $review;
62
else {                 # this check prevents adding multiple comments
63
        # FIXME biblionumber, borrowernumber should be a unique key of reviews
64
    $savedreview = Koha::Reviews->search(
65
        { biblionumber => $biblionumber, borrowernumber => $borrowernumber } )
66
      ->next;
67
    $review = $savedreview ? $savedreview->review : $review;
63
}
68
}
64
69
65
if( !@errors && $submitting ) {
70
if ( !@errors && $submitting ) {
66
    if ($review !~ /\S/xsm) {
71
    if ( $review !~ /\S/xsm ) {
67
        push @errors, {empty=>1};
72
        push @errors, { empty => 1 };
68
    } else {
73
    }
74
    else {
69
        $clean = C4::Scrubber->new('comment')->scrub($review);
75
        $clean = C4::Scrubber->new('comment')->scrub($review);
70
        if ($clean !~ /\S/xsm) {
76
        if ( $clean !~ /\S/xsm ) {
71
            push @errors, {scrubbed_all=>1};
77
            push @errors, { scrubbed_all => 1 };
72
        } else {
78
        }
73
            if ($clean ne $review) {
79
        else {
74
                push @errors, {scrubbed=>$clean};
80
            if ( $clean ne $review ) {
81
                push @errors, { scrubbed => $clean };
75
            }
82
            }
76
            my $js_ok_review = $clean;
83
            my $js_ok_review = $clean;
77
            $js_ok_review =~ s/"/"/gx;    # probably redundant w/ TMPL ESCAPE=JS
84
            $js_ok_review =~
78
            $template->param(clean_review=>$js_ok_review);
85
              s/"/"/gx;    # probably redundant w/ TMPL ESCAPE=JS
86
            $template->param( clean_review => $js_ok_review );
79
            if ($editing) {
87
            if ($editing) {
80
                my $updatedreview = $savedreview->set(
88
                my $updatedreview = $savedreview->set(
81
                    {
89
                    {
82
                        review        => $clean,
90
                        review       => $clean,
83
                        approved      => 0,
91
                        approved     => 0,
84
                        datereviewed  => dt_from_string
92
                        datereviewed => dt_from_string
85
                    }
93
                    }
86
                )->store;
94
                )->store;
87
                $affectedreview = $updatedreview;
95
                $affectedreview = $updatedreview;
88
            } else {
96
            }
97
            else {
89
                my $newreview = Koha::Review->new(
98
                my $newreview = Koha::Review->new(
90
                    {   biblionumber   => $biblionumber,
99
                    {
100
                        biblionumber   => $biblionumber,
91
                        borrowernumber => $borrowernumber,
101
                        borrowernumber => $borrowernumber,
92
                        review         => $clean,
102
                        review         => $clean,
93
                    }
103
                    }
Lines 96-114 if( !@errors && $submitting ) { Link Here
96
                $affectedreview = $newreview;
106
                $affectedreview = $newreview;
97
            }
107
            }
98
            if ($reviewid) {
108
            if ($reviewid) {
99
                $affectedreview->SendReviewAlert({
109
                $affectedreview->SendReviewAlert(
100
                    'borrowernumber' => $borrowernumber,
110
                    {
101
                    'reviewid'       => $reviewid,
111
                        'borrowernumber' => $borrowernumber,
102
                    'biblionumber'   => $biblionumber
112
                        'reviewid'       => $reviewid,
103
                });
113
                        'biblionumber'   => $biblionumber
114
                    }
115
                );
104
            }
116
            }
105
117
106
            if (@errors = 0){ $template->param(WINDOW_CLOSE=>1); }
118
            if ( @errors = 0 ) { $template->param( WINDOW_CLOSE => 1 ); }
107
        }
119
        }
108
    }
120
    }
109
}
121
}
110
(@errors   ) and $template->param(   ERRORS=>\@errors);
122
(@errors)    and $template->param( ERRORS    => \@errors );
111
($cgi_debug) and $template->param(cgi_debug=>1       );
123
($cgi_debug) and $template->param( cgi_debug => 1 );
112
$review = $clean;
124
$review = $clean;
113
if ($savedreview) { $review ||= $savedreview->review; }
125
if ($savedreview) { $review ||= $savedreview->review; }
114
$template->param(
126
$template->param(
115
- 

Return to bug 1985