forked from openemr/openemr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cron_sms_notification.php
144 lines (114 loc) · 4.62 KB
/
cron_sms_notification.php
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?
////////////////////////////////////////////////////////////////////
// Package: sms_cron_notification
// Purpose: to be run by cron every hour, look for appointments
// in the pre-notification period and send an sms reminder
//
// Created by:
// Updated by: Larry Lart on 11/03/2008
////////////////////////////////////////////////////////////////////
// larry :: hack add for command line version
$_SERVER['REQUEST_URI']=$_SERVER['PHP_SELF'];
$_SERVER['SERVER_NAME']='localhost';
$backpic = "";
// email notification
$ignoreAuth=1;
include_once("../../interface/globals.php");
include_once("cron_functions.php");
// check command line for quite option
$bTestRun = 0;
if( $argc > 1 && $argv[1] == 'test' ) $bTestRun = 1;
$TYPE = "SMS";
$CRON_TIME = 5;
$curr_date = date("Y-m-d");
$curr_time = time();
$check_date = date("Y-m-d", mktime(date("h")+$SMS_NOTIFICATION_HOUR, 0, 0, date("m"), date("d"), date("Y")));
// larry :: move this in the loop to keep it fresh - perhaps try to use it without change
// it's content - to do latter
$db_email_msg = cron_getNotificationData($TYPE);
// object for sms
global $mysms;
if( $db_email_msg['sms_gateway_type']=='CLICKATELL' )
{
include_once("sms_clickatell.php");
}else if($db_email_msg['sms_gateway_type']=='TMB4')
{
include_once("sms_tmb4.php");
}
// get notification settings
$vectNotificationSettings = cron_GetNotificationSettings( );
$SMS_GATEWAY_USENAME = $vectNotificationSettings['SMS_gateway_username'];
$SMS_GATEWAY_PASSWORD = $vectNotificationSettings['SMS_gateway_password'];
$SMS_GATEWAY_APIKEY = $vectNotificationSettings['SMS_gateway_apikey'];
// set cron time (time to event ?) - todo extra tests
$CRON_TIME = $vectNotificationSettings['Send_SMS_Before_Hours'];
//echo "\nDEBUG :: user=".$vectNotificationSettings['SMS_gateway_username']."\n";
// create sms object
$mysms = new sms( $SMS_GATEWAY_USENAME, $SMS_GATEWAY_PASSWORD, $SMS_GATEWAY_APIKEY );
$db_patient = cron_getAlertpatientData($TYPE);
echo "\n<br>Total ".count($db_patient)." Records Found";
// for every event found
for( $p=0; $p<count($db_patient); $p++ )
{
$prow =$db_patient[$p];
//echo "\n-----\nDEBUG :cron_sms: found patient = ".$prow['fname']." ".$prow['lname']."\n";
// my_print_r($prow);
/*
if($prow['pc_eventDate'] < $check_date)
{
$app_date = date("Y-m-d")." ".$prow['pc_startTime'];
}else{
$app_date = $prow['pc_eventDate']." ".$prow['pc_startTime'];
}
*/
$app_date = $prow['pc_eventDate']." ".$prow['pc_startTime'];
$app_time = strtotime($app_date);
$app_time_hour = round($app_time/3600);
$curr_total_hour = round(time()/3600);
$remaining_app_hour = round($app_time_hour - $curr_total_hour);
$remain_hour = round($remaining_app_hour - $SMS_NOTIFICATION_HOUR);
// larry :: debug
//echo "\nDEBUG :: checkdate=$check_date, app_date=$app_date, apptime=$app_time remain_hour=$remain_hour -- CRON_TIME=$CRON_TIME\n";
// build log message
$strMsg = "\n========================".$TYPE." || ".date("Y-m-d H:i:s")."=========================";
$strMsg .= "\nSEND NOTIFICATION BEFORE:".$SMS_NOTIFICATION_HOUR." || CRONJOB RUN EVERY:".$CRON_TIME." || APPDATETIME:".$app_date." || REMAINING APP HOUR:".($remaining_app_hour)." || SEND ALERT AFTER:".($remain_hour);
// check in the interval
if( $remain_hour >= -($CRON_TIME) && $remain_hour <= $CRON_TIME )
{
// insert entry in notification_log table
cron_InsertNotificationLogEntry($TYPE,$prow,$db_email_msg);
//set message
$db_email_msg['message'] = cron_setmessage($prow,$db_email_msg);
// send sms to patinet - if not in test mode
if( $bTestRun == 0 )
{
cron_SendSMS( $prow['phone_cell'], $db_email_msg['email_subject'],
$db_email_msg['message'], $db_email_msg['email_sender'] );
}
// larry :: debug
echo "\nDEBUG :: sms was sent to= ".$prow['phone_cell'].
" \nsender= ".$db_email_msg['email_sender'].
" \nsbj= ". $db_email_msg['email_subject'].
" \nmsg= ".$db_email_msg['message']."\n";
//update entry >> pc_sendalertsms='Yes'
cron_updateentry($TYPE,$prow['pid'],$prow['pc_eid']);
$strMsg .= " || ALERT SENT SUCCESSFULLY TO ".$prow['phone_cell'];
$strMsg .= "\n".$patient_info."\n".$smsgateway_info."\n".$data_info."\n".$db_email_msg['message'];
}
// write logs for every reminder sent
WriteLog($strMsg);
// larry :: update notification data again - todo :: fix change in cron_updateentry
$db_email_msg = cron_getNotificationData($TYPE);
}
unset($mysms);
sqlClose();
?>
<html>
<head>
<title>Conrjob - SMS Notification</title>
</head>
<body>
<center>
</center>
</body>
</html>