Ejemplo n.º 1
0
function simplerate_hook_rate_refund($smslog_id)
{
    $ok = false;
    logger_print("start smslog_id:" . $smslog_id, 3, "simplerate refund");
    $db_query = "SELECT p_dst,p_msg,uid FROM " . _DB_PREF_ . "_tblSMSOutgoing WHERE p_status='2' AND smslog_id='{$smslog_id}'";
    $db_result = dba_query($db_query);
    if ($db_row = dba_fetch_array($db_result)) {
        $p_dst = $db_row['p_dst'];
        $p_msg = $db_row['p_msg'];
        $uid = $db_row['uid'];
        if ($p_dst && $p_msg && $uid) {
            if (billing_rollback($smslog_id)) {
                $bill = billing_getdata($smslog_id);
                $rate = $bill['rate'];
                $status = $bill['status'];
                logger_print("rolling smslog_id:" . $smslog_id, 3, "simplerate refund");
                if ($status == '2') {
                    // here should be added a routine to check charset encoding
                    // utf8 devided by 140, ucs2 devided by 70
                    $count = ceil(strlen($p_msg) / 153);
                    $charge = $count * $rate;
                    $username = uid2username($uid);
                    $credit = rate_getusercredit($username);
                    $remaining = $credit + $charge;
                    if (rate_setusercredit($uid, $remaining)) {
                        logger_print("refund smslog_id:" . $smslog_id, 3, "simplerate refund");
                        $ok = true;
                    }
                }
            }
        }
    }
    return $ok;
}
Ejemplo n.º 2
0
function simplerate_hook_rate_refund($smslog_id)
{
    global $core_config;
    logger_print("start smslog_id:" . $smslog_id, 2, "simplerate refund");
    $db_query = "SELECT p_dst,p_msg,uid FROM " . _DB_PREF_ . "_tblSMSOutgoing WHERE p_status='2' AND smslog_id='{$smslog_id}'";
    $db_result = dba_query($db_query);
    if ($db_row = dba_fetch_array($db_result)) {
        $p_dst = $db_row['p_dst'];
        $p_msg = $db_row['p_msg'];
        $p_footer = $db_row['p_footer'];
        $uid = $db_row['uid'];
        $unicode = $db_row['unicode'];
        if ($p_dst && $p_msg && $uid) {
            if (billing_rollback($smslog_id)) {
                $bill = billing_getdata($smslog_id);
                $credit = $bill['credit'];
                $charge = $bill['charge'];
                $status = $bill['status'];
                logger_print("rolling smslog_id:" . $smslog_id, 2, "simplerate refund");
                if ($status == '2') {
                    // sender's
                    $username = user_uid2username($uid);
                    $credit = rate_getusercredit($username);
                    $balance = $credit + $charge;
                    // parent's when sender is a subuser
                    $parent_uid = user_getparentbyuid($uid);
                    if ($parent_uid) {
                        $username_parent = user_uid2username($parent_uid);
                        $credit_parent = rate_getusercredit($username_parent);
                        $balance_parent = $credit_parent + $charge;
                    }
                    // if sender have parent then deduct parent first
                    if ($parent_uid) {
                        if (!rate_setusercredit($parent_uid, $balance_parent)) {
                            return FALSE;
                        }
                        logger_print("parent uid:" . $uid . " parent_uid:" . $parent_uid . " smslog_id:" . $smslog_id . " credit_parent:" . $credit_parent . " balance_parent:" . $balance_parent, 2, "simplerate refund");
                    }
                    if (rate_setusercredit($uid, $balance)) {
                        logger_print("user uid:" . $uid . " parent_uid:" . $parent_uid . " smslog_id:" . $smslog_id . " credit:" . $credit . " balance:" . $balance, 2, "simplerate refund");
                        return TRUE;
                    }
                }
            }
        }
    }
    return FALSE;
}