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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/sms/sms-home.tt (-35 lines)
Lines 1-35 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
<title>Koha &rsaquo; Tools &rsaquo; Send SMS message</title>
3
[% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body id="sms_sms-home" class="pat">
6
[% INCLUDE 'header.inc' %]
7
[% INCLUDE 'cat-search.inc' %]
8
9
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> &rsaquo; Send SMS message</div>
10
11
<div id="doc3" class="yui-t2">
12
13
   <div id="bd">
14
       <div id="yui-main">
15
	       <div class="yui-b">
16
17
[% IF ( error ) %]<div class="dialog alert">[% error %] </div>[% END %]
18
<form action="/cgi-bin/koha/sms/sms.pl" method="post">
19
<fieldset class="rows">
20
<legend>SMS Messaging</legend>
21
<ol>
22
    <li><label for="message">Your message: </label><textarea name="message" id="message" cols="35" rows="4">[% message %]</textarea></li>
23
	<li><label for="phone">Phone:</label><input type="text" name="phone" id="phone" value="[% phone %]"/> (e.g., 5338644143)</li>
24
</ol>
25
</fieldset>
26
<fieldset class="action"><input type="submit" value="Send SMS"><a class="cancel" href="/cgi-bin/koha/sms/sms.pl">Cancel</a></fieldset>
27
</form>
28
29
</div>
30
</div>
31
<div class="yui-b">
32
[% INCLUDE 'tools-menu.inc' %]
33
</div>
34
</div>
35
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/sms/sms.pl (-37 lines)
Lines 1-37 Link Here
1
#!/usr/bin/perl
2
3
use strict;
4
#use warnings; FIXME - Bug 2505
5
use CGI qw ( -utf8 );
6
use C4::SMS;
7
use C4::Output;
8
use C4::Auth;
9
10
my $query = new CGI;
11
my $message   = $query->param( 'message' );
12
my $phone     = $query->param(  'phone'  );
13
my $operation = $query->param('operation');
14
my $result;
15
my $errorcode;
16
my ($template, $loggedinuser, $cookie)
17
    = get_template_and_user({template_name => "sms/sms-home.tt",
18
		query => $query,
19
		type => "intranet",
20
		authnotrequired => 0,
21
		flagsrequired => {circulate => "circulate_remaining_permissions" },
22
		debug => 1,
23
	});
24
if ($operation eq "sendsms"){
25
	$phone=parse_phone($phone);
26
	if ($phone){
27
		##write to a queue and exit
28
		my $me=C4::Context->userenv;
29
		$result=write_sms($me->{cardnumber},$message,$phone);
30
	} else {
31
		$errorcode=-1104;
32
	}
33
}
34
my $error=error_codes($errorcode);
35
$template->param(error=>$error);
36
output_html_with_http_headers $query, $cookie, $template->output;
37
(-)a/sms/sms_listen.pl (-123 lines)
Lines 1-123 Link Here
1
#!/usr/bin/perl
2
3
use strict;
4
use warnings;
5
6
use C4::SMS;
7
use C4::Auth;
8
use C4::Context;
9
use C4::Members;
10
use C4::Circulation;
11
12
my ($res,$ua);
13
my $message;
14
my $result;
15
my $errorcode;
16
my $smsid;
17
my $wait=600;## 10 mn. wait between sms checking
18
my $dbh=C4::Context->dbh;
19
20
STARTAGAIN:
21
($res,$ua)=get_sms_auth();
22
AGAIN:
23
$errorcode=0;
24
if ($res->{pRetCode}==200){
25
	$result=read_sms($ua,$res->{pSessionId});
26
	$errorcode=$result->{pErrCode};
27
	print "connected\n";
28
} else {
29
	kill_sms($ua,$res->{pSessionId});
30
	warn (error_codes($res->{pErrCode}),$res->{pErrcode}) ;
31
#	sleep $wait;
32
	goto FINISH;
33
}
34
if ($errorcode && $errorcode !=-9005){
35
	kill_sms($ua,$res->{pSessionId});
36
	warn error_codes($errorcode) ;
37
	# sleep $wait;
38
	goto FINISH;
39
} elsif ($errorcode ==-9005){
40
	print "no more messages to read\n";
41
	goto WAITING;
42
}
43
44
45
#Parse the message to a useful hash
46
my @action=parse_message( $result->{pContent});
47
## Log the request in our database;
48
$smsid=write_sms($action[1], $result->{pContent},$result->{pMsisdn});
49
print "message logged\n";
50
##Now do the service required
51
if (uc($action[0]) eq "RN"){
52
	print "dealing request\n";
53
	my ($ok,$cardnumber)=C4::Auth::checkpw($dbh,$action[1],$action[2]);
54
    unless ($ok) {
55
		##wrong user/pass
56
		$message="Yanlis kullanici/sifre! :Wrong username/password!";
57
		my $send=send_message($result,$message,$smsid);
58
		goto AGAIN;
59
    }
60
	my $item=getiteminformation(undef,0,$action[3]);
61
	if ($item){
62
		my $borrower=getmember($cardnumber);
63
		my $status=renewstatus(undef,$borrower->{borrowernumber},$item->{itemnumber});
64
		if ($status==1) {
65
			my $date=renewbook(undef,$borrower->{borrowernumber},$item->{itemnumber});
66
			$message="Uzatildi :Renewed ".$item->{barcode}." : ".$date;
67
		} elsif($status==2) {
68
			$message="Cok erken- yenilenmedi! :Too early-not renewed:".$item->{barcode};
69
		} elsif($status==3) {
70
			$message="Uzatamazsiniz GERI getiriniz! :No more renewals RETURN the item:".$item->{barcode};
71
		} elsif($status==4) {
72
			$message="Ayirtildi GERI getiriniz! :Reserved RETURN the item:".$item->{barcode};
73
		} elsif($status==0) {
74
			$message="Uzatilamaz! :Can not renew:".$item->{barcode};
75
		}
76
	} else {
77
	   $message="Yanlis barkot! :Wrong barcode!";
78
	}	
79
} else {
80
	## reply about error
81
	$message="Yanlis mesaj formati! :Wrong message! :
82
		 RN usercardno password barcode";
83
}	### wrong service
84
send_message($result,$message,$smsid);
85
86
goto AGAIN;
87
88
89
WAITING:
90
##Now send the messages waiting in queue
91
my $smssth=$dbh->prepare("SELECT smsid,user_phone,message from sms_messages where date_replied like '0000-00-00%' ");
92
$smssth->execute();
93
my @phones;
94
while (my $data=$smssth->fetchrow_hashref){
95
	push @phones,$data;
96
}
97
$smssth->finish;
98
99
foreach my $user(@phones){
100
	print "replying $user->{user_phone}";
101
	my $send=send_sms($ua,$user->{user_phone},$user->{message},$res->{pSessionId});
102
	my $reply="--failed\n";
103
	if ($send->{pRetCode}==200){
104
		$reply= "--replied\n";
105
		mod_sms($user->{smsid},"Sent");
106
	}
107
	print $reply;
108
}
109
110
sub send_message {
111
	my ($mes,$message,$smsid)=@_;
112
	my $send=send_sms($ua,$mes->{pMsisdn},$message,$res->{pSessionId});
113
	if ($send->{pRetCode}==200){
114
		mod_sms($smsid,$message);
115
	} else {
116
		my $error=error_codes($send->{pErrCode});
117
		mod_sms($smsid,"Not replied error:".$error);
118
	}
119
	return $send;
120
}
121
FINISH:
122
1;
123
__END__
(-)a/sms/sms_listen_windows_start.pl (-17 lines)
Lines 1-17 Link Here
1
#!/usr/bin/perl
2
# script that starts the zebraqueue
3
#  Written by TG on 01/08/2006
4
use strict;
5
#use warnings; FIXME - Bug 2505
6
7
use Win32::Process;
8
use Win32;
9
use C4::Context;
10
use CGI qw ( -utf8 );
11
my $input=new CGI;
12
my $fileplace=C4::Context->config('intranetdir');
13
my $fullpath=$fileplace."/cgi-bin/sms";
14
my $ZebraObj;
15
my $pid=Win32::Process::Create($ZebraObj, "C:/perl/bin/perl.exe", 'perl sms_listen.pl', 0, DETACHED_PROCESS, $fullpath);
16
17
print $input->redirect("/cgi-bin/koha/mainpage.pl?pid=$pid");
(-)a/t/db_dependent/00-strict.t (-3 / +2 lines)
Lines 16-24 my @dirs = ( 'acqui', 'admin', 'authorities', 'basket', Link Here
16
    'mainpage.pl', 'Makefile.PL', 'members', 'misc', 'offline_circ', 'opac',
16
    'mainpage.pl', 'Makefile.PL', 'members', 'misc', 'offline_circ', 'opac',
17
    'patroncards', 'reports', 'reserve', 'reviews',
17
    'patroncards', 'reports', 'reserve', 'reviews',
18
    'rewrite-config.PL', 'rotating_collections', 'serials', 'services', 'skel',
18
    'rewrite-config.PL', 'rotating_collections', 'serials', 'services', 'skel',
19
    'sms', 'suggestion', 'svc', 'tags', 'tools', 'virtualshelves' );
19
    'suggestion', 'svc', 'tags', 'tools', 'virtualshelves' );
20
20
21
$Test::Strict::TEST_STRICT = 0;
21
$Test::Strict::TEST_STRICT = 0;
22
$Test::Strict::TEST_SKIP = [ 'misc/kohalib.pl', 'sms/sms_listen_windows_start.pl', 'misc/plack/koha.psgi' ];
22
$Test::Strict::TEST_SKIP = [ 'misc/kohalib.pl', 'misc/plack/koha.psgi' ];
23
23
24
all_perl_files_ok(@dirs);
24
all_perl_files_ok(@dirs);
25
- 

Return to bug 19178