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; }
// 3 = delivered if ($p_status == "1") { $p_status = "<span class=status_sent title='" . _('Sent') . "'/>"; } else { if ($p_status == "2") { $p_status = "<span class=status_failed title='" . _('Failed') . "'/>"; } else { if ($p_status == "3") { $p_status = "<span class=status_delivered title='" . _('Delivered') . "'/>"; } else { $p_status = "<span class=status_pending title='" . _('Pending') . "'/>"; } } } // get billing info $billing = billing_getdata($smslog_id); $p_count = $billing['count'] ? $billing['count'] : '0'; $p_rate = $billing['rate'] ? $billing['rate'] : '0.0'; $p_charge = $billing['charge'] ? $billing['charge'] : '0.0'; // if send SMS failed then display charge as 0 if ($list[$j]['p_status'] == 2) { $p_charge = '0.0'; } $msg = $list[$j]['p_msg']; $p_msg = core_display_text($msg); if ($msg && $p_dst) { $resend = _sendsms($p_dst, $msg, '', $icon_config['resend']); $forward = _sendsms('', $msg, '', $icon_config['forward']); } $c_message = "\n\t\t\t\t<div id=\"msg_label\">" . $p_datetime . " " . _('count') . ":" . $p_count . " " . _('rate') . ":" . $p_rate . " " . _('cost') . ":" . $p_charge . " " . $p_status . "</div>\n\t\t\t\t<div id=\"all_outgoing_msg\">" . $p_msg . "</div>\n\t\t\t\t<div id=\"msg_option\">" . $resend . " " . $forward . "</div>"; $i--;
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; }