OneSignal integration
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user