コード例 #1
0
function get_system_config($cfg_name, $default = false)
{
    $v = fetch_one_value("select config_value from configs where config_name = '{$cfg_name}'");
    if ($v === false || $v == false || !$v || empty($v)) {
        return $default;
    } else {
        return $v;
    }
}
/**
 * Define your hook for specific SMS keyword. 
 * Return true to mark SMS as processed and 
 * will be passed on next processing.
 * Return false will cause the SMS to be 
 * reprocessed infinitely until you return true.
 */
function my_hook_stok_function($keyword, $params)
{
    global $app_name, $app_version, $nama_modem;
    // Sometime, you don't need to reply SMS from non-user number,
    // such as SMS from Service Center, message center,
    // or promotional SMS:
    if (strlen($params['sender']) <= 6) {
        return true;
    } else {
        // If the SMS requires reply, do it as follows:
        /*
         * return sms_send($params['sender'], 
         *                   'Thank your for texting us.', 
         *                   $nama_modem);
         */
        // or simply return true without replying it:
        /*
         * return true;
         */
        $tersedia = fetch_one_value("select sum(stok_inkubator) from vw_inkubator_tersedia");
        return sms_send($params['sender'], 'Inkubator tersedia: ' . $tersedia . ' buah.', $nama_modem);
    }
}
コード例 #3
0
                        </div>
                        <!-- /.panel-heading -->
                        <div class="panel-body">
                            <div class="row">
                                <div class="col-lg-6">   
                                    <label>Legenda Kode Pinjam:</label>                                    
                                    <span class="label label-danger">Ditolak</span>
                                    <span class="label label-warning">Ditunda</span>
                                    <span class="label label-success">Disetujui</span>
                                    <!--
                                    <span class="label label-default">Dikembalikan</span>
                                    -->
                                </div>
                                <div class="col-lg-6">
                                    <?php 
$states = fetch_one_value(" SELECT  replace(replace(replace(replace(COLUMN_TYPE,'''',''),'enum(',''),')',''),', ','')\n                                        from   information_schema.`COLUMNS` where table_schema = '" . DB_DATABASE . "' and table_name = 'inkubator_pinjam'\n                                        and COLUMN_name = 'status_pinjam' ;");
$states = explode(',', $states);
?>
                                      
                                    <div class="col-lg-12">
                                        <div class="btn-group pull-right">
                                        <?php 
echo '<a href="#" class="btn disabled btn-default btn-sm"><strong>Status Peminjaman:</strong></a>';
echo '<a href="' . $_SERVER['PHP_SELF'] . '" class="btn btn-default btn-sm">Semua</a>';
foreach ($states as $state) {
    echo '<a href="' . $_SERVER['PHP_SELF'] . '?status=' . urlencode($state) . '" class="btn btn-default btn-sm">' . ucfirst($state) . '</a>';
}
?>
                                    
                                        </div>
                                    </div>
コード例 #4
0
 * Include hook files:
 */
// $f = fopen('D:/testtt.txt','w');
foreach ($_SMS_PROCESSOR_DAEMON_HOOKS as $keyword) {
    $keyword_file = str_replace("\\", "/", dirname(dirname(__FILE__))) . '/sms-daemon-hooks/' . basename($keyword['file_name']);
    // fputs($f, $keyword_file ."\n");
    if (file_exists($keyword_file)) {
        include_once $keyword_file;
        // fputs($f, $keyword_file ."\n");
    }
}
// fclose($f);
$data_count_to_process = get_system_config('sms_to_process_per_minute', 10);
// execute 10 data every minute - as this task run
$nama_modem = fetch_one_value("select coalesce((select nama_modem from modem_gateway order by id desc limit 0,1),'')");
$last_id = fetch_one_value("select coalesce((select config_value from configs where config_name = '" . LAST_ID_CONFIG_NAME . "'),0)");
// create keyword state cache:
$keyword_states = keyword_fetch_states_from_db();
$sms_query = "select sv.id from sms_valid sv where sv.id > {$last_id} and sv.diproses = 'Ditunda' \n    order by sv.waktu_terima asc, sv.id asc limit 0, {$data_count_to_process}";
$smses = fetch_query($sms_query);
$last_processed_id = $last_id;
$all_ok = true;
$cnt = 0;
if (count($smses) == 0) {
    // No new message to process
    exit('No new message to process');
} else {
    echo 'Processing ' . count($smses) . ' SMS(es) : ';
    foreach ($smses as $sms) {
        $last_processed_id = $sms['id'];
        $sms_item = sms_fetch_item($last_processed_id);
/**
 * Define your hook for specific SMS keyword. 
 * Return true to mark SMS as processed and 
 * will be passed on next processing.
 * Return false will cause the SMS to be 
 * reprocessed infinitely until you return true.
 * 
 * AVOID HEAVY LONG PROCESS HERE. Database initializations are better be done on activation callback.
 */
function my_hook_monitor_function($keyword, $params)
{
    global $app_name, $app_version, $nama_modem;
    global $my_kembali_sms_format, $my_kembali_sms_sample;
    // Sometime, you don't need to reply SMS from non-user number,
    // such as SMS from Service Center, message center,
    // or promotional SMS:
    $valid_param_count = 5;
    // pre( $params);
    // return true;
    if (strlen($params['sender']) <= 6) {
        return true;
    } else {
        if (count($params['params']) != $valid_param_count) {
            sms_send($params['sender'], '1/2. SMS tidak valid. Jumlah parameter data harus ' . $valid_param_count . '.', $nama_modem);
            sms_send($params['sender'], '2/2. Format SMS: ' . $my_monitor_sms_format, $nama_modem);
            sms_send($params['sender'], '3/2. Contoh SMS: ' . $my_monitor_sms_sample, $nama_modem);
        } else {
            $kode_pinjam = strtoupper($params['params'][1]);
            // cek kode pinjam, jika ID = 0, berarti kode pinjam tidak valid:
            $id_pinjam = fetch_one_value("select coalesce( (\n                    select UUID_SHORT() id from inkubator_pinjam p where upper(p.kode_pinjam) = '{$kode_pinjam}'\n                    and p.status_pinjam  = 'Disetujui' \n                ),0) as id");
            if ($id_pinjam == 0) {
                sms_send($params['sender'], 'Kode Pinjam tidak ditemukan: ' . $kode_pinjam . '.', $nama_modem);
            } else {
                // proses SMS dan insert ke table `inkubator_kembali`:
                // Sample: KEMBALI*323431-353131-35*30*3.60*SEHAT;
                $p_pjg = trim($params['params'][2]);
                $p_berat = trim($params['params'][3]);
                $p_kondisi = strtoupper(trim($params['params'][4]));
                // cek tangal, panjang dan berat apakah formatnya sesuai atau tidak.
                // $p_validate_tgl     = '/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/'; // dd/mm/yyyy
                $p_validate_pjg = '/^[0-9]{1,2}+([\\,\\.][0-9]{1,2})?$/';
                // max2digits[.,]max2digits
                if (!preg_match($p_validate_pjg, $p_pjg)) {
                    sms_send($params['sender'], 'Maaf. Panjang bayi saat kembali salah. Contoh panjang bayi: 31.5', $nama_modem);
                } else {
                    if (!preg_match($p_validate_pjg, $p_berat)) {
                        sms_send($params['sender'], 'Maaf. Berat bayi saat kembali salah. Contoh berat bayi: 3,12', $nama_modem);
                    } else {
                        if ($p_kondisi != 'SEHAT' && $p_kondisi != 'SAKIT') {
                            sms_send($params['sender'], 'Maaf. Kondisi bayi salah. Harus SEHAT atau SAKIT.', $nama_modem);
                        } else {
                            // process tgl, berat & panjang:
                            // xx/yy/xxxx
                            $p_skor = $p_kondisi == 'SEHAT' ? 1 : 0;
                            $p_berat = str_replace(',', '.', $p_berat);
                            $p_pjg = str_replace(',', '.', $p_pjg);
                            // all set! save it to database.
                            $sub_mon_sql = "insert into inkubator_monitoring \n                \t\t(id, kode_pinjam, tgl_input, panjang_bayi, berat_bayi, kondisi, skor, keterangan)\n                \t   values\n                \t\t(UUID_SHORT(), '{$kode_pinjam}', CURRENT_TIMESTAMP(), {$p_pjg}, {$p_berat}, '{$p_kondisi}', {$p_skor},\n                \t\tconcat('Data monitoring ', (select p.nama_bayi from inkubator_pinjam p where p.kode_pinjam = '{$kode_pinjam}'))\n                \t   );";
                            /*
                            $f = fopen('d:/test-.txt','w');
                            fputs($f, $save_sql);
                            fputs($f, $sub_mon_sql);
                            fclose($f);
                            */
                            if (exec_query($sub_mon_sql)) {
                                sms_send($params['sender'], 'Data monitoring telah diterima.', $nama_modem);
                            } else {
                                sms_send($params['sender'], 'Maaf, server sedang sibuk. Cobalah beberapa saat lagi.', $nama_modem);
                            }
                        }
                    }
                }
            }
        }
        return true;
    }
}
コード例 #6
0
error_reporting(E_ALL);
/**
 * If this page is is being loaded using Ajax call,
 * fetch the requested data and skip the rest of the page:
 */
if ($ajax) {
    $sms_offset = post_var('sms_offset', 0);
    // default offset of first item to fetch.
    $sms_limit = post_var('sms_limit', 10);
    // default item count per page.
    $sms_keyword = post_var('sms_keyword', '');
    // default SMS with this keyword to display.
    // pre($sms_keyword);
    $sms_sort_order = post_var('sms_sortorder', 'asc');
    // default SMS will be sorted ascending way. Only SMS timestamp supported.
    $sms_count = fetch_one_value("select count(id) from sms_valid" . (!empty($sms_keyword) && $sms_keyword != '*' ? " where upper(jenis) = upper('{$sms_keyword}')" : ""));
    // $sms_count = 0;
    if ($sms_offset == -1) {
        $sms_offset = $sms_count - $sms_limit;
        if ($sms_offset < 0) {
            $sms_offset = 0;
        }
    }
    // $leftover_sql   = "select max(id) from sms_valid sv order by sv.waktu_terima $sms_sort_order, sv.id $sms_sort_order limit $sms_offset,$sms_limit";
    $sql = "select sv.id, sv.udh, sv.waktu_terima, sv.pengirim, sv.sms, sv.jenis, sv.param_count, sv.diproses\n        from sms_valid sv" . (!empty($sms_keyword) && $sms_keyword != '*' ? " where upper(sv.jenis) = upper('{$sms_keyword}')" : "") . " order by sv.waktu_terima {$sms_sort_order}, sv.id {$sms_sort_order} limit {$sms_offset},{$sms_limit}";
    /*
    echo $sql;
    echo '<hr>'.$sms_count;
    */
    if ($sms_count == 0) {
        ?>
コード例 #7
0
     */
     break;
 case 'checkkeyword':
     $req_kw = post_var('reqkw');
     if (keyword_hook_registered($req_kw) !== false) {
         echo 'ERKeyword telah digunakan sebelumnya.<br>Silahkan gunakan keyword lain.';
     } else {
         echo 'OKKeyword dapat digunakan';
     }
     break;
 case 'changestate':
     $req_id = post_var('reqid');
     $req_state = post_var('reqstate');
     try {
         exec_query("update sms_keywords set active = (case when active='Y' then 'N' else 'Y' end) where id = '{$req_id}';");
         $state = fetch_one_value("select upper(active) from sms_keywords where id = '{$req_id}'");
         echo 'OK' . ($state == 'Y' ? 'active' : 'disabled');
     } catch (Exception $e) {
         echo 'ER' . $req_state;
     }
     break;
 case 'dropkeyword':
     $req_id = post_var('reqid');
     try {
         $kw_data = fetch_query("select keyword, function_name, file_name from sms_keywords where id = '{$req_id}'");
         /*
         $kw_file = fetch_one_value("select file_name from sms_keywords where id = '$req_id'");
         $kw_keyword = fetch_one_value("select keyword from sms_keywords where id = '$req_id'");
         */
         $kw_keyword = $kw_data[0]['keyword'];
         $kw_function = $kw_data[0]['function_name'];
コード例 #8
0
}
require_once '../cores/db.php';
include_once '../cores/session.php';
// require_login('post.php?show/newest');
/**
 * If this page is is being loaded using Ajax call,
 * fetch the requested data and skip the rest of the page:
 */
if ($ajax) {
    $sms_offset = post_var('sms_offset', 0);
    // default offset of first item to fetch.
    $sms_limit = post_var('sms_limit', 10);
    // default item count per page.
    $sms_sort_order = post_var('sms_sortorder', 'asc');
    // default SMS will be sorted ascending way. Only SMS timestamp supported.
    $sms_count = fetch_one_value("select count(id) from sentitems");
    if ($sms_offset == -1) {
        $sms_offset = $sms_count - $sms_limit;
        if ($sms_offset < 0) {
            $sms_offset = 0;
        }
    }
    // $leftover_sql   = "select max(id) from sms_valid sv order by sv.waktu_terima $sms_sort_order, sv.id $sms_sort_order limit $sms_offset,$sms_limit";
    $sql = "select ss.ID id, ss.UDH udah, ss.SendingDateTime sent_time, ss.DestinationNumber no_tujuan, ss.TextDecoded sms,\n            ss.Status status_kirim\n            from sentitems ss order by ss.SendingDateTime {$sms_sort_order}, ss.id {$sms_sort_order} limit {$sms_offset},{$sms_limit}";
    // echo $sql;
    if ($sms_count == 0) {
        ?>
        <li class="left clearfix">
            <span class="chat-img pull-left">
                <img  class="img-circle" src="img/front-end/sms-data-sent.jpg" width="50" height="50" />                
            </span>
コード例 #9
0
}
require_once '../cores/db.php';
include_once '../cores/session.php';
// require_login('post.php?show/newest');
/**
 * If this page is is being loaded using Ajax call,
 * fetch the requested data and skip the rest of the page:
 */
if ($ajax) {
    $sms_offset = post_var('sms_offset', 0);
    // default offset of first item to fetch.
    $sms_limit = post_var('sms_limit', 10);
    // default item count per page.
    $sms_sort_order = post_var('sms_sortorder', 'asc');
    // default SMS will be sorted ascending way. Only SMS timestamp supported.
    $sms_count = fetch_one_value("select count(id) from outbox");
    if ($sms_offset == -1) {
        $sms_offset = $sms_count - $sms_limit;
        if ($sms_offset < 0) {
            $sms_offset = 0;
        }
    }
    // $leftover_sql   = "select max(id) from sms_valid sv order by sv.waktu_terima $sms_sort_order, sv.id $sms_sort_order limit $sms_offset,$sms_limit";
    $sql = "select ss.ID id, ss.UDH udah, ss.SendingDateTime send_time, ss.DestinationNumber no_tujuan, ss.TextDecoded sms\n            from outbox ss order by ss.SendingDateTime {$sms_sort_order}, ss.id {$sms_sort_order} limit {$sms_offset},{$sms_limit}";
    // echo $sql;
    if ($sms_count == 0) {
        ?>
        <li class="left clearfix">
            <span class="chat-img pull-left">
                <img  class="img-circle" src="img/front-end/sms-data-outbox.jpg" width="50" height="50" />                
            </span>