-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathComment.pm
89 lines (71 loc) · 2.75 KB
/
Comment.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#
# Common: Shared library for voice-based applications.
#
# Copyright (C) 2010 Nokia Corporation.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Authors: Billy Odero, Jonathan Ledlie
package Nokia::Common::Comment;
use Exporter;
@ISA = ('Exporter');
@EXPORT = ('leave_comment_menu');
use strict;
use DBI;
use File::Copy;
use Nokia::Common::Stamp;
use Nokia::Common::Sound;
use Nokia::Common::Tools;
######################################################################
sub leave_comment_menu {
my ($self) = @_;
# leave a comment about Mosoko at the beep
# press pound when you are finished with your message
#if (&too_many_comments($self)) {
#$self->agi->stream_file(&msg($self,'too-many-comments'),"*#","0");
#return;
#}
my $comment = &record_file
($self, &msg($self,'leave-comment'), 90);
if ($comment eq 'timeout' || $comment eq 'cancel' ||
$comment eq 'hangup') {
return;
};
$comment = &mv_tmp_to_comment_dir ($self, $comment);
$self->log (4, "creating db record for new comment from ".
"user_id $self->{user}->{id}");
$self->{server}{comment_insert_sth} = $self->{server}{dbi}->prepare_cached
("INSERT INTO comments (comment_id, user_id, timestamp, rank, filename) VALUES (NULL, ?, NULL, -1, ?)");
$self->{server}{comment_insert_sth}->execute ($self->{user}->{id}, $comment);
$self->{server}{comment_insert_sth}->finish();
$self->log (4, "created db record for new comment from user_id ".
$self->{user}->{id});
$self->agi->stream_file
([&msg($self,'comment-recorded'),&msg($self,'thank-you')],"*#","0");
}
sub too_many_comments {
my ($self) = @_;
my $MAX_COMMENTS_PER_DAY = 5;
$self->{server}{comment_count_sth} =
$self->{server}{dbi}->prepare_cached
("select count(*) as comment_count from comments where user_id = ? AND timestamp > DATE_SUB(NOW(),INTERVAL 24 HOUR)");
$self->{server}{comment_count_sth}->execute ($self->{user}->{id});
my ($count) = $self->{server}{comment_count_sth}->fetchrow_array();
$self->{server}{comment_count_sth}->finish();
if ($count > $MAX_COMMENTS_PER_DAY) {
return 1;
}
return 0;
}
1;