cfgReadChar('mailsend.templates_dir'); $template_name = "DealTemplate.html"; // This is test template. $db_host = $savvyext->cfgReadChar('database.host'); $db_name = $savvyext->cfgReadChar('database.name'); $db_user = $savvyext->cfgReadChar('database.user'); $db_pass = $savvyext->cfgReadChar('database.pass'); $db_port = $savvyext->cfgReadLong('database.port'); $connstr = "host=${db_host} port=${db_port} dbname=${db_name} user=${db_user} password=${db_pass}"; $conn = pg_connect($connstr); $db_host = $savvyext->cfgReadChar('database_replica.host'); $db_name = $savvyext->cfgReadChar('database_replica.name'); $db_user = $savvyext->cfgReadChar('database_replica.user'); $db_pass = $savvyext->cfgReadChar('database_replica.pass'); $db_port = $savvyext->cfgReadLong('database_replica.port'); $readOnlyReplicaConnstr = "host=${db_host} port=${db_port} dbname=${db_name} user=${db_user} password=${db_pass}"; $readOnlyReplicaConn = pg_connect($readOnlyReplicaConnstr); include 'notifications_functions.php'; function Fextension_call($in, &$out) { // logToFl("Merchant_Name count->" . $in["merchant_name"]); $in["pid"] = 100; // not used currenlty global $savvyext; $out = $savvyext->savvyext_api($in); $ret = $out["retval"]; return $ret; } //exit(); $mysql = "SELECT value FROM global_settings WHERE key='tag_notififaction' AND value='1'"; $r = pg_query($readOnlyReplicaConn, $mysql); if ($r && pg_num_rows($r)) { $tag_message = true; } //=================================================================================================================== /* * DEACTIVATE 24 hours expired cards */ $mysql_expired_cards = "SELECT mc.id FROM members_card_assign mc " . "LEFT JOIN email_trigger et ON et.e_trigger=mc.trigger_key " . "WHERE mc.trigger_key IS NOT NULL " . "AND mc.status = 1 " . "AND et.expiration = 'EXP00002' " . "AND now() > mc.updated + '12 hours' LIMIT 500"; $mysql_del_list = "UPDATE members_card_assign SET status = 0 WHERE id IN ( $mysql_expired_cards ) AND trigger_key IS NOT NULL"; pg_query($conn, $mysql_del_list); // REAL UPDATE TO CARD STATUS //====================================================================================================================== $mysql = "SELECT n.id AS notify_id,m.id AS m_id,m.email AS reciever_email, n.*, e.category, e.frequency, e.send_day, e.send_time FROM members_notification n LEFT JOIN members m ON m.id = n.member_id LEFT JOIN email_trigger e ON e.e_trigger = n.trigger_key WHERE n.status IN (" . EMAIL_PENDING . ") AND m.alert_notification = 1 ORDER BY n.ic ASC LIMIT 100"; //AND m.id IN (SELECT member_id FROM test_accounts WHERE status=1) $r = pg_query($readOnlyReplicaConn, $mysql); $acc = array(); if ($r && pg_num_rows($r)) { // Load Email template $htm_template = file_get_contents($email_templates_dir . "/" . $template_name); while ($f = pg_fetch_assoc($r)) { $member_id = $f["member_id"]; $notify_id = $f["notify_id"]; $reciever_email = $f["reciever_email"]; $notice_type = $f["notice_type"]; $category = $f["category"]; $trigger_key = $f["trigger_key"]; $frequency_day = $f["frequency"];//num of days $send_day = $f["send_day"]; $send_time = $f["send_time"]; $current_day = strtolower(date('l'));//current day name $current_hour = date("H:00:00"); $message = $f["msg"]; $extension_call = false; $x["pid"] = 0; $x["member_id"] = $member_id; $x["notify_id"] = $notify_id; $extension_call = true; $q_count = "UPDATE members_notification SET ic=ic+1 WHERE id = " . $notify_id; pg_query($conn, $q_count); $approve_send = true; $send_count = 0; //CHECK FREQUENCY if(!empty($frequency_day) && !empty($send_day) && !empty($send_time)){ $day_check = strtolower(date('l', strtotime(-$frequency_day." days"))); if($day_check != $send_day){ $approve_send = false; } if($send_time != $current_hour){ $approve_send = false; } } if ($notice_type == "INSTANT") { $approve_send = true; // send instant immediatley; } else { // ANY MESSAGE IN THE LAST 12 HOURS =====================MOVE TO A FUNCTION $q_test = "SELECT count(id) AS send_count from members_notification WHERE member_id = $member_id AND status=5 AND date_sent IS NOT NULL AND now() < date_sent+'12 hour' AND trigger_key='".$trigger_key."'"; $r0 = pg_query($readOnlyReplicaConn, $q_test); if ($r0 && pg_num_rows($r0) > 0) { $f0 = pg_fetch_assoc($r0); $send_count = $f0["send_count"]; if ($send_count > 0) { $approve_send = false; } } if(!empty($frequency_day)){ $q_test = "SELECT count(id) AS send_count from members_notification WHERE member_id = $member_id AND status=5 AND date_sent IS NOT NULL AND now() < date_sent+'".$frequency_day." days' AND trigger_key='".$trigger_key."'"; $r0 = pg_query($readOnlyReplicaConn, $q_test); if ($r0 && pg_num_rows($r0) > 0) { $f0 = pg_fetch_assoc($r0); $send_count = $f0["send_count"]; if ($send_count > 0) { $approve_send = false; } } } } if (false == $approve_send && $send_count < 4) { } // ANY MESSAGE IN THE LAST 12 HOURS =====================MOVE TO A FUNCTION // // // SEND Notification if APPLICABLE $data = []; // reset the data $q = "SELECT * FROM members_devices WHERE status =1 AND member_id=${member_id} "; //$r = $this->db->query($q); $r1 = pg_query($readOnlyReplicaConn, $q); while ($f1 = pg_fetch_assoc($r1)) { $data["devices"][] = $f1["player_id"]; //$row->player_id; $device_count++; } //print_r( $data["devices"] ); // Let take a look at the last time the user get this trigger - see if we need to span the message if ($notice_type == 'GENALERT' || $notice_type == 'INSTANT') { $cat = $category; // "GOACTIVITY"; generateCard($notify_id, $member_id, $cat); $arrayData = array("NEXTSCREEN" => $cat); if (true == $approve_send) { //upodate before sedning $q_sent = "UPDATE members_notification SET status = " . EMAIL_SENT . ",date_sent=now() WHERE id = " . $notify_id; pg_query($conn, $q_sent); sendmemberMessage($member_id, $data["devices"], $message, $arrayData, $tag_message); } } if ($notice_type == 'EMAILALERT') { // sending email - IF APPLICABLE if ($reciever_email != '' && $htm_template) { $values = [ "to_emails" => "{" . $reciever_email . "}", "subject" => "Float Deal", "html_body" => pg_escape_string($htm_template), "status" => "0", "created_at" => (new DateTime())->format('c'), "updated_at" => (new DateTime())->format('c') ]; $values = array_filter($values, 'strlen'); $q = "INSERT INTO emails "; $q .= " (" . implode(", ", array_keys($values)) . ")"; $q .= " VALUES ('" . implode("', '", $values) . "') "; $rs = pg_query($conn, $q); if ($rs) { $q = "UPDATE members_notification SET status = " . EMAIL_SENT . " WHERE id = " . $notify_id; // $rs = pg_query($conn, $q); } } } // if EMAIl ALERT IS NEEDED // print_r($acc); } } function sendmemberMessage($member_id, $player_id_array, $message, $arrayData, $tag_message = false) { $ic = 0; $player_id_string = ""; // print_r($player_id_array); if (is_array($player_id_array) && $message != "" && count($player_id_array) > 0 && is_array($arrayData)) { if (true == $tag_message) { $message = $message . " - " . $member_id; } $one_success = false; foreach ($player_id_array as $pl) { $sprt = ""; if ($pl != '') { $player_id_array = array($pl); $result = postOneSignal($player_id_array, $message, $arrayData); //var_dump($result); // if result is true assign to one_success } } // if one succeess, then call sendKochavaEvent } else { echo "Invalid PLAYER_ID and/or MESSAGE!"; } } function sendKochavaEvent() { // send data here } function postOneSignal($player_id_array, $message, $arrayData) { global $savvyext; // $url = $savvyext->cfgReadChar('onesignal.url'); //echo $app_id = $savvyext->cfgReadChar('onesignal.app_id'); $url = "https://onesignal.com/api/v1/notifications"; $app_id = "e9a7bb38-0a27-4250-9fb7-9bd7871d7b63"; $data = [ 'app_id' => $app_id, 'contents' => ['en' => $message], 'headings' => ['en' => 'Float Activities'], 'subtitle' => ['en' => 'Your account activities message from Float.'], 'content_available' => true, 'mutable_content' => true, 'include_player_ids' => $player_id_array, 'data' => $arrayData ]; $opts = array( 'http' => array( 'method' => "POST", 'header' => "Content-Type: application/json; charset=utf-8\r\n" . "Accept: application/json\r\n", 'content' => json_encode($data) ) ); // print_r($opts); // print_r($data); // echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n
"; $context = stream_context_create($opts); $body = file_get_contents($url, false, $context); error_log($body); $result = json_decode($body, true); return $result; } pg_close($conn); pg_close($readOnlyReplicaConn); echo "[" . date("Y-m-d H:i:s") . "] member_notification job complete.\n"; ?>