alert

function untuk membuat notifikasi yang ditujukan untuk pengguna baik member maupun admin

includes/function/alert.php

alert_add

mengirimkan notifikasi ke member/admin atau ke global baik di admin maupun public area

alert_add($title, $description, $params = array(), $user_id='none', $group_id=0, $module = '');

Contoh penggunaan
$title    = 'judul';
$message  = 'message description';
$params   = array(
  'url'       => 'string (public url if user opened from member area)',
  'url_admin' => 'string (admin url for admin section)'
  );
$user_id  = number|array(numbers)|email|admin|member|public
$group_id = number|array

## MENGIRIM KE USER TERTENTU:
// ke user dgn user_id=1
alert_add($title, $message, $params, 1);
// ke banyak user dengan user_id= 1 atau 2 atau 3
alert_add($title, $message, $params, array(1,2,3));
// ke user yang punya email tertentu
alert_add($title, $message, $params, 'danang@fisip.net');

## MENGIRIM KE ADMIN (**)
// siapapun yang login ke admin
alert_add($title, $message, $params, 'admin');
// user_id=1/2/3 yang login ke admin
alert_add($title, $message, $params, array('admin', 1, 2, 3));

## MENGIRIM KE MEMBER (**)
// siapapun yang login ke member area
alert_add($title, $message, $params, 'member');
// user_id=1/2/3 yang login ke member area
alert_add($title, $message, $params, array('member', 1, 2, 3));

## MENGIRIM KE PUBLIC (PENGUNJUNG YANG BELUM LOGIN) (**)
// siapapun yang mengunjungi web (jika block notif di pasang di template public)
alert_add($title, $message, $params, 'public');

## MENGIRIM KE GROUP USER TERTENTU (**)
// ke user yang masuk ke dalam group_id=1
alert_add($title, $message, $params, 0, 1);
// ke user dengan group_id 1/2/3
alert_add($title, $message, $params, 0, array(1,2,3));
#Keterangan:

alert_fcm

function untuk memanggil array yang ada di variable constant _FCM_SERVER_JSON jika function alert_push aktif

alert_fcm($key='');

alert_fcm_subscribe

mensubscribe kan member ke dalam topic, jika function alert_push sudah diaktifkan

alert_fcm_subscribe($user_ids, $topic, $last_id = 0 );

function ini dipanggil ketika kita membuat topic di menu admin "Control Panel / User Manager / Mobile Notification" atau menambahkan subscriber pada topic tertentu

alert_fcm_token

mengenerate token atau mengambil token dari cache sebagai key untuk eksekusi API dari HTTP API V1 firebase messaging

alert_fcm_token();
function hanya dipanggil di dalam function yang akan men-curl JWT HTTP API V1 dari google

alert_fcm_topic_subscribe

dipanggil oleh function alert_fcm_subscribe tidak untuk dipanggil secara langsung

alert_fcm_topic_subscribe($tokens, $topics, $i=0);

jika $tokens berisi Array maka $topics harus berisi string begitu juga sebaliknya agar bisa di eksekusi secara berurutan

alert_fcm_topic_unsubscribe

dipanggil oleh function alert_fcm_subscribe tidak untuk dipanggil secara langsung

alert_fcm_topic_unsubscribe($tokens, $topics, $i=0);

jika $tokens berisi Array maka $topics harus berisi string begitu juga sebaliknya agar bisa di eksekusi secara berurutan

alert_fcm_verify

menghapus token yang sudah 3bulan tidak aktif dan sudah tidak valid, jika function alert_push aktif

alert_fcm_verify($limit=1000, $i=0);

function ini dipanggil setiap hari sekali jika ada member yang update pertama kali di hari itu di URL user/push-token

alert_push

untuk mengirimkan notifikasi kepada pengguna mobile app

alert_push($to, $title, $message, $module = 'content', $arguments = array(), $action = 'default', $sending_id=0);

function ini hanya menyimpan data message yang akan dikirimkan, sedangkan pengiriman nya akan di lakukan secara background pada function alert_push_send untuk menjaga performa system dan stabilitas server. Sedangkan setiap notifikasi ketika di baca oleh user maka anda HARUS mengkonfirmasi kembali bahwa message atau notif tersebut telah terbaca ke URL dari domain yang mengirim notif semisal domain nya adalah aku.com maka url yang perlu anda akses adalah url aku.com/user/push-read dengan parameter POST notif_id dan secretkey.

sedangkan untuk mengkases daftar notifikasi bisa diambil dari url aku.com/user/push-notif menggunakan method POST dengan parameter:
$user_id   = [opsional]
$group_id  = [opsional] comma separated or Array
$username  = [opsional]
$token     = [wajib]
$push_id   = [optional] ID dari hasil return push-token sebelumnya untuk diupdate (biasanya krn update token krn tolen ada umurnya)
$old_id    = [optional] ID dari hasil return push-token sebelumnya untuk dihapus
$device    = [optional] nama atau jenis device yang digunakan untuk membuka app
$secretkey = _class('crypt')->encode(_SALT.'|'.date()'Y-m-d H:i:s');
$group_id jika dikosongkan atau tidak ada maka daftar notifikasi yang di listkan adalah semua notifikasi untuk user tersebut, tidak perduli dia berada di group user apapun

untuk key 'secretkey' sendiri adalah hasil encode dari format _SALT.'|'.yyyy-mm-dd HH:ii:ss

AKTIFASI FITUR PUSH NOTIF
function ini hanya bisa digunakan apabila table bbc_user_push sudah di aktifkan, untuk mengaktifkan silahkan ke admin "control panel / user manager" dibagian bawah table akan muncul tombol untuk mengaktifkan fitur push notif jika belum aktif. Tetapi sebelumnya anda harus menambahkan variable constant _FCM_SENDER_ID dan _FCM_SERVER_JSON pada config.php.
Berikut keterangan untuk tiap const variable yang bisa di pakai 
  1. _FCM_ICON_BG
    • berisi warna background yang akan digunakan ketika device (android) menampilan notification contoh: #f68c29
  2. _FCM_SENDER_ID
    • masuk ke firebase console
    • pilih project yang ingin di pilih
    • masuk ke project setting
    • click tab "Cloud Messaging"
  3. _FCM_SERVER_JSON
    • masuk ke google console
    • pilih project yang akan digunakan (bisa juga dr link "Manage Service Accounts" disamping Sender ID di gambar atas)
    • pilih salah satu email dr service account yang tersedia
    • masuk ke tab "KEYS"
    • klik ADD KEY lalu Create new key dan pilih JSON
    • file JSON akan otomatis terdownload dan copy isi dari file tsb. sebagai value dari constant variable _FCM_SERVER_JSON 

alert_push_send

function yang otomatis akan dipanggil ketika alert_push dieksekusi

alert_push_send($id, $last_id);

function ini dipanggil otomatis oleh system, jadi anda tidak perlu menggunakan function ini ketika ingin mengirimkan notifikasi, yang perlu anda gunakan adalah function alert_push dimana function tersebut secara otomatis akan mengeksekusi function ini satu per satu untuk tiap pengguna aplikasi mobile

alert_push_signup

meyimpan data token dari para pengguna aplikasi mobile yang terintegrasi dengan project yang anda buat

alert_push_signup($token, $user_id, $group_ids, $username, $device, $os, $push_id = 0);

Fungsi ini adalah hookable function, jadi anda bisa membuat function di dalam module yang anda buat sendiri untuk menambahkan proses penyimpanan token, semisal ingin mengkelompokkan user berdasarkan category, wilayah atau lainya,
adapun argument dari function anda sendiri sama persis seperti function ini, hanya saja pada $push_id akan terisi ID yang baru saja dimasukkan

Return dari function ini adalah $push_id yaitu ID dari table `bbc_user_push` yang barusan dimasukkan ke dalam table atau id yang diedit saat itu

Untuk mengakses function ini dari URL anda bisa mem-POST-kan parameter ke url domainanda/user/push-token lalu valriable POST nya adalah:
$user_id   = [opsional]
$group_id  = [opsional] comma separated or Array
$username  = [opsional]
$token     = [wajib]
$push_id   = [optional] ID dari hasil return push-token sebelumnya untuk diupdate
$old_id    = [optional] ID dari hasil return push-token sebelumnya untuk dihapus
$device    = [optional] nama atau jenis device yang digunakan untuk membuka app
$os        = [optional] nama atau jenis os yang digunakan untuk membuka app
$secretkey = _class('crypt')->encode(_SALT.'|'.date()'Y-m-d H:i:s');
dengan return nya berupa array:
{"ok": 1,
    "message": "success",
    "result": "integer ID dari table `bbc_user_push`"
}
sedangkan untuk mengirimkan notificationnya, anda bisa menggunakan function alert_push

alert_push_topic

function ini dieksekusi oleh alert_push_signup untuk menampilkan topic-topic yang perlu di subscribe melalui device ketika login/logout ataupun ada perubahan data di member

alert_push_topic($push_id, $user_id, $is_subscribe=true, &$topics=array());

ini adalah hookable function tetapi agak sedikit berbeda cara penggunaan hookable nya. berikut dibawah adalah contoh apabila anda membuat function di module agenda:
function agenda_alert_push_topic($push_id, $user_id, $is_subscribe, &$topics)
{if ($is_subscribe)
    {
        $topics[] = 'percobaan';
        $topics['info']['percobaan'] = 'ini hanya percobaan membuat topic saja';
   }
}
perhatikan pada argument &$topics terdapat tambahan & untuk menjaga topic2 yang sudah ditambahkan oleh function yang lain

alert_push_topic_delete

menghapus topic beserta member nya, jika function alert_push diaktifkan

alert_push_topic_delete($topic);

function ini dipanggil di menu admin "Control Panel / User Manager / Mobile Notification" ketika admin menghapus topic dimana semua member akan di unsubscribe kan dr topic sebelum topic dihapus dari database

alert_view

menampilkan pesan ke daftar notifikasi jika ada notifikasi baru

alert_view($data);

function ini adalah hookable function dimana bisa anda tambahkan proses di dalam module anda

_alert_push_insert

function ini dipanggil oleh alert_push tidak untuk dipanggil secara langsung

_alert_push_insert($ids, $data, $tos, $group_id, $sending_id, $last_id = 0);

function ini tidak diperuntukan dipanggil secara langsung kecuali untuk keperluan testing, silahkan gunakan alert_push jika ingin mengirim notifikasi

_alert_view_cpanel

mengambil ID dari database table `bbc_menu` dipanggil oleh function alert_view

_alert_view_cpanel($link);

function ini sebenar nya hanya difungsikan untuk mencocok kan path yg ada di table db bbc_menu jika tidak ditemukan maka akan dipotong bagian terakhir lalu di cari lagi sampai ketemu menu yg sesuai di table bbc_menu