OneSignal integration

This commit is contained in:
ChiefSoft works
2022-07-10 05:04:48 +00:00
parent 767b76d8c7
commit 7d7c990821
4 changed files with 193 additions and 1 deletions
+45
View File
@@ -0,0 +1,45 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Onesignal extends Bko_Controller {
public function index() {
$data["username"] = "";
$this->load->view('bko/view_bko_login', $data);
}
public function message() {
$data = [];
$data["message"] = "";
$data["segments"] = "";
$data["push_message"] = "";
$data["select_segments"] = array("Subscribed Users", "Active Users", "Inactive Users", "All");
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$data["push_message"] = $this->input->post('push_message');
$data["segments"] = $this->input->post('segments');
if (trim($data["push_message"]) != "") {
$this->load->helper('OneSignal');
$in = array(
"message" => $data["push_message"],
"included_segments" => $data["segments"]
);
$out = onesignal_api($in);
if (is_array($out) && $out['result'] > 0) {
$data["message"] = "OneSignal API call success: ".$out["status"];
} else {
$data["message"] = "OneSignal API call failed".$out["status"];
}
$data["message"].= "<br/><pre>".json_encode($out["data"])."</pre>";
} else {
$data["message"] = "Missing push message!";
}
}
$this->load->view('bko/view_bko_header', $data);
$this->load->view('bko/view_bko_onesignal', $data);
$this->load->view('bko/view_bko_footer', $data);
}
}
+67
View File
@@ -0,0 +1,67 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
if ( ! function_exists('onesignal_api'))
{
function onesignal_api($in)
{
$OneSignalUrl = "https://onesignal.com/api/v1/notifications";
$OneSignalApp = "13755f98-ec69-45fd-a2f1-d2166afcaa51";
$OneSignalKey = "Mjk1OGNiM2ItZWU0ZC00NGJhLTg3YTMtOWMwNzZmZWEwMzBj";
$out = array();
$out['status'] = 'Unhandled error';
$out['result'] = -1;
$out['data'] = null;
// https://documentation.onesignal.com/reference/create-notification
$fields = array(
'app_id' => $OneSignalApp,
'included_segments' => array($in["included_segments"]), // "Subscribed Users",
/* 'data' => array("foo" => "bar"), */
'contents' => array(
"en" => $in["message"]
)
);
$fields = json_encode($fields);
//print("\nJSON sent:\n");
//print($fields);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $OneSignalUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: application/json',
'Content-Type: application/json; charset=utf-8',
'Authorization: Basic "'.$OneSignalKey."'"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
curl_close($ch);
//echo "<pre>${response}</pre>";
if ($response != "") {
$data = json_decode($response,true);
if (is_array($data) && count($data)>0) {
$out["data"] = $data;
if (array_key_exists("recipients",$data) && $data["recipients"] > 0
&& (!array_key_exists("errors",$data) || count($data["errors"]) < 1)) {
$out["status"] = "OneSignal API success: sent to ".$data["recipients"]." recipeint(s)";
} else {
$out["status"] = "OneSignal API failure: ".
(array_key_exists("errors",$data)?json_encode($data["errors"]):"unknown error");
}
} else {
$out["status"] = "Invalid OneSignal API response: ".$response;
}
} else {
$out["status"] = "Missing OneSignal API response";
}
return $out;
}
}
+1 -1
View File
@@ -139,7 +139,7 @@
<li><a href="/bkouser/faq">Transfer Fee</a></li>
<li><a href="/bkoadmin/users">Users Manager</a></li>
<li><a href="/bkoadmin/permission">Permissions</a></li>
<li><a href="/onesignal/message">OneSignal</a></li>
</ul>
</li>
@@ -0,0 +1,80 @@
<!-- Main content -->
<div class="content-wrapper">
<!-- Main charts -->
<div class="row">
<div class="col-lg-9">
<!-- Traffic sources -->
<div class="panel panel-flat">
<div class="panel-heading">
<h6 class="panel-title"><b>OneSignal Message</b></h6>
<div class="heading-elements">
<form class="heading-form" action="#">
</form>
</div>
</div>
<div class="container-fluid">
<div class="row">
<font color=red><b><?php echo $message; ?></b></font>
<form method="post">
<div style="width:500px;">
<table class="table table-striped table-hover table-bordered table-condensed">
<tr><td><b>Send to</b></td>
<td><select data-placeholder='Select your Extension' class='form-control select' name='segments'>
<?php foreach ($select_segments as $key) { ?>
<option value="<?php echo $key; ?>"<?php $key==$segments?" selected":""; ?>><?php echo $key; ?></option>
<?php } ?>
</select></td></tr>
<tr><td><b>Message</b></td>
<td><textarea cols="18" rows="3" name='push_message' class="form-control" style="height:180px;" placeholder="Enter message here ..."><?php echo $push_message; ?></textarea></td></tr>
<tr><td colspan="2" align="right"><button type="submit" class="btn bg-teal btn-block btn-lg">Send <i class="icon-circle-right2 position-right"></i></button></td></tr>
</table>
</div>
</form>
</div>
</div>
</div>
<!-- /traffic sources -->
</div>
<div class="col-lg-3">
<!-- Sales stats -->
<div class="panel panel-flat">
<div id='selected_detail'>
<div class="panel-heading">
<h6 class="panel-title"><b>.</b></h6>
<div class="heading-elements">
</div>
</div>
<div class="container-fluid">
<div class="row text-left">
</div>
</div>
<div class="content-group-sm" id="app_sales"></div>
<div id="monthly-sales-stats"></div>
</div>
</div>
<!-- /sales stats -->
</div>
</div>
<!-- /main charts -->
</div>