case "sms_subscribe_add_yes": $add_subscribe_keyword = strtoupper($_POST['add_subscribe_keyword']); $add_subscribe_msg = $_POST['add_subscribe_msg']; $add_unsubscribe_msg = $_POST['add_unsubscribe_msg']; $add_subscribe_param = strtoupper($_POST['add_subscribe_param']); $add_unsubscribe_param = strtoupper($_POST['add_unsubscribe_param']); $add_forward_param = strtoupper($_POST['add_forward_param'] ? $_POST['add_forward_param'] : 'BC'); $add_unknown_format_msg = $_POST['add_unknown_format_msg']; $add_already_member_msg = $_POST['add_already_member_msg']; $add_expire_msg = $_POST['add_expire_msg']; $add_duration = (int) $_POST['add_duration']; if (auth_isadmin()) { $smsc = $_REQUEST['smsc']; } if ($add_subscribe_keyword && $add_subscribe_msg && $add_unsubscribe_msg && $add_forward_param && $add_unknown_format_msg && $add_already_member_msg) { if (checkavailablekeyword($add_subscribe_keyword)) { $db_query = "\n\t\t\t\t\tINSERT INTO " . _DB_PREF_ . "_featureSubscribe (uid,subscribe_keyword,subscribe_msg,unsubscribe_msg, subscribe_param, unsubscribe_param, forward_param, unknown_format_msg, already_member_msg,smsc,duration,expire_msg)\n\t\t\t\t\tVALUES ('" . $user_config['uid'] . "','{$add_subscribe_keyword}','{$add_subscribe_msg}','{$add_unsubscribe_msg}','{$add_subscribe_param}','{$add_unsubscribe_param}','{$add_forward_param}','{$add_unknown_format_msg}','{$add_already_member_msg}','{$smsc}','{$add_duration}','{$add_expire_msg}')"; if ($new_uid = @dba_insert_id($db_query)) { $_SESSION['error_string'] = _('SMS subscribe has been added') . " (" . _('keyword') . ": {$add_subscribe_keyword})"; } else { $_SESSION['error_string'] = _('Fail to add SMS subscribe') . " (" . _('keyword') . ": {$add_subscribe_keyword})"; } } else { $_SESSION['error_string'] = _('SMS subscribe already exists, reserved or use by other feature') . " (" . _('keyword') . ": {$add_subscribe_keyword})"; } } else { $_SESSION['error_string'] = _('You must fill all fields'); } header("Location: " . _u('index.php?app=main&inc=feature_sms_subscribe&op=sms_subscribe_add')); exit; break;
$message_id = $r['message_id']; $sms_datetime = core_display_datetime(core_get_datetime()); $sms_sender = $r['from']; $message = $r['message']; $sms_receiver = $r['sent_to']; $ok = FALSE; if ($sms_sync_enable && $c_uid && $r['secret'] == $sms_sync_secret && $message_id && $sms_sender && $message) { $db_table = _DB_PREF_ . '_featureSmssysnc'; $conditions = array('uid' => $c_uid, 'message_id' => $message_id); if (dba_isavail($db_table, $conditions, 'AND')) { _log("saving uid:" . $c_uid . " dt:" . $sms_datetime . " ts:" . $r['sent_timestamp'] . " message_id:" . $message_id . " s:" . $sms_sender . " m:" . $message . " r:" . $sms_receiver, 3, "sms_sync sync"); // if keyword does not exists (checkavailablekeyword == TRUE) // then prefix the message with an @username so that it will be routed to $c_uid's inbox $m = explode(' ', $message); $c_m = str_replace('#', '', $m[0]); if (checkavailablekeyword($c_m)) { _log("forwarded to inbox uid:" . $c_uid . " message_id:" . $message_id, 3, "sms_sync sync"); $message = "@" . user_uid2username($c_uid) . " " . $message; } // route it if ($recvsms_id = recvsms($sms_datetime, $sms_sender, $message, $sms_receiver)) { $items = array('uid' => $c_uid, 'message_id' => $message_id, 'recvsms_id' => $recvsms_id); dba_add($db_table, $items); _log("saved uid:" . $c_uid . " message_id:" . $message_id . " recvsms_id:" . $recvsms_id, 3, "sms_sync sync"); $ret = array('payload' => array('success' => "true", 'error' => NULL)); $ok = TRUE; } else { $error_string = "fail to save uid:" . $c_uid . " message_id:" . $message_id; _log($error_string, 3, "sms_sync sync"); } } else {
} } header("Location: " . _u('index.php?app=main&inc=feature_sms_board&op=sms_board_list')); exit; break; case "sms_board_add": $content = _err_display() . "\n\t\t\t<h2>" . _('Manage board') . "</h2>\n\t\t\t<h3>" . _('Add SMS board') . "</h3>\n\t\t\t<form action=index.php?app=main&inc=feature_sms_board&op=sms_board_add_yes method=post>\n\t\t\t" . _CSRF_FORM_ . "\n\t\t\t<table class=playsms-table cellpadding=1 cellspacing=2 border=0>\n\t\t\t<tr>\n\t\t\t\t<td class=label-sizer>" . _('SMS board keyword') . "</td><td><input type=text maxlength=30 name=add_board_keyword value=\"{$add_board_keyword}\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>" . _('Forward to email') . "</td><td><input type=text name=add_email value=\"{$add_email}\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>" . _('CSS URL') . "</td><td><input type=text name=add_css value=\"{$add_css}\"></td>\n\t\t\t</tr>\n\t\t\t</table>\n\t\t\t<p><input type=submit class=button value=\"" . _('Save') . "\">\n\t\t\t</form>\n\t\t\t" . _back('index.php?app=main&inc=feature_sms_board&op=sms_board_list'); _p($content); break; case "sms_board_add_yes": $add_board_keyword = strtoupper($_POST['add_board_keyword']); $add_email = $_POST['add_email']; $add_css = $_POST['add_css']; $add_template = $_POST['add_template']; if ($add_board_keyword) { if (checkavailablekeyword($add_board_keyword)) { if (!$add_template) { $add_template = "<div class=sms_board_row>\n"; $add_template .= "\t<div class=sender>{SENDER}</div>\n"; $add_template .= "\t<div class=datetime>{DATETIME}</div>\n"; $add_template .= "\t<div class=message>{MESSAGE}</div>\n"; $add_template .= "</div>\n"; } $db_query = "\n\t\t\t\t\tINSERT INTO " . _DB_PREF_ . "_featureBoard (uid,board_keyword,board_forward_email,board_css,board_pref_template)\n\t\t\t\t\tVALUES ('" . $user_config['uid'] . "','{$add_board_keyword}','{$add_email}','{$add_css}','{$add_template}')"; if ($new_uid = @dba_insert_id($db_query)) { $_SESSION['error_string'] = _('SMS board has been added') . " (" . _('keyword') . ": {$add_board_keyword})"; } else { $_SESSION['error_string'] = _('Fail to add SMS board') . " (" . _('keyword') . ": {$add_board_keyword})"; } } else { $_SESSION['error_string'] = _('SMS keyword already exists, reserved or use by other feature') . " (" . _('keyword') . ": {$add_board_keyword})";
} } header("Location: index.php?app=menu&inc=feature_sms_custom&op=sms_custom_list&err=" . urlencode($error_string)); break; case "sms_custom_add": if ($err) { $content = "<div class=error_string>{$err}</div>"; } $content .= "\n\t <h2>" . _('Add SMS custom') . "</h2>\n\t <p>\n\t <form action=index.php?app=menu&inc=feature_sms_custom&op=sms_custom_add_yes method=post>\n\t <p>" . _('SMS custom keyword') . ": <input type=text size=10 maxlength=10 name=add_custom_keyword value=\"{$add_custom_keyword}\">\n\t <p>" . _('Pass these parameter to custom URL field') . ":\n\t <p><b>{SMSDATETIME}</b> " . _('will be replaced by SMS incoming date/time') . "\n\t <p><b>{SMSSENDER}</b> " . _('will be replaced by sender number') . "\n\t <p><b>{CUSTOMKEYWORD}</b> " . _('will be replaced by custom keyword') . "\n\t <p><b>{CUSTOMPARAM}</b> " . _('will be replaced by custom parameter passed to server from SMS') . "\n\t <p>" . _('SMS custom URL') . ": <input type=text size=60 maxlength=200 name=add_custom_url value=\"{$add_custom_url}\">\n\t <p><input type=submit class=button value=\"" . _('Add') . "\">\n\t </form>\n\t"; echo $content; break; case "sms_custom_add_yes": $add_custom_keyword = strtoupper($_POST['add_custom_keyword']); $add_custom_url = $_POST['add_custom_url']; if ($add_custom_keyword && $add_custom_url) { if (checkavailablekeyword($add_custom_keyword)) { $db_query = "INSERT INTO " . _DB_PREF_ . "_featureCustom (uid,custom_keyword,custom_url) VALUES ('{$uid}','{$add_custom_keyword}','{$add_custom_url}')"; if ($new_uid = @dba_insert_id($db_query)) { $error_string = _('SMS custom has been added') . " (" . _('keyword') . ": `{$add_custom_keyword}`)"; } else { $error_string = _('Fail to add SMS custom') . " (" . _('keyword') . ": `{$add_custom_keyword}`)"; } } else { $error_string = _('SMS custom already exists, reserved or use by other feature') . " (" . _('keyword') . ": `{$add_custom_keyword}`)"; } } else { $error_string = _('You must fill all fields'); } header("Location: index.php?app=menu&inc=feature_sms_custom&op=sms_custom_add&err=" . urlencode($error_string)); break; }
} header("Location: index.php?app=menu&inc=feature_sms_collect&op=sms_collect_list"); exit; break; case "sms_collect_add": if ($err = $_SESSION['error_string']) { $content = "<div class=error_string>{$err}</div>"; } $content .= "\n\t\t\t<h2>" . _('Manage collect') . "</h2>\n\t\t\t<h3>" . _('Add SMS collect') . "</h3>\n\t\t\t<form action=index.php?app=menu&inc=feature_sms_collect&op=sms_collect_add_yes method=post>\n\t\t\t<table width=100%>\n\t\t\t<tr>\n\t\t\t\t<td width=270>" . _('SMS collect keyword') . "</td><td><input type=text size=8 maxlength=10 name=add_collect_keyword value=\"{$add_collect_keyword}\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>" . _('SMS collect reply') . "</td><td><input type=text size=30 maxlength=200 name=add_collect_msg value=\"{$add_collect_msg}\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>" . _('Forward to email') . "</td><td><input type=text size=30 maxlength=250 name=add_collect_fwd_email value=\"{$add_collect_fwd_email}\"></td>\n\t\t\t</tr>\n\t\t\t</table>\n\t\t\t<p><input type=submit class=button value=\"" . _('Save') . "\">\n\t\t\t</form>\n\t\t\t" . _b('index.php?app=menu&inc=feature_sms_collect&op=sms_collect_list'); echo $content; break; case "sms_collect_add_yes": $add_collect_keyword = strtoupper($_REQUEST['add_collect_keyword']); $add_collect_msg = $_REQUEST['add_collect_msg']; $add_collect_fwd_email = $_REQUEST['add_collect_fwd_email']; if ($add_collect_keyword && $add_collect_msg) { if (checkavailablekeyword($add_collect_keyword)) { $db_query = "\n\t\t\t\t\tINSERT INTO " . _DB_PREF_ . "_featureCollect (uid,collect_keyword,collect_msg, collect_fwd_email)\n\t\t\t\t\tVALUES ('{$uid}','{$add_collect_keyword}','{$add_collect_msg}', '{$add_collect_fwd_email}')"; if ($new_uid = @dba_insert_id($db_query)) { $_SESSION['error_string'] = _('SMS collect has been added') . " (" . _('keyword') . ": " . $add_collect_keyword . ")"; } } else { $_SESSION['error_string'] = _('SMS collect already exists, reserved or use by other feature') . " (" . _('keyword') . ": " . $add_collect_keyword . ")"; } } else { $_SESSION['error_string'] = _('You must fill all fields'); } header("Location: index.php?app=menu&inc=feature_sms_collect&op=sms_collect_add"); exit; break; }
$error_string = _('Fail to delete SMS autoreply') . " (" . _('keyword') . ": `{$keyword_name}`"; } } header("Location: index.php?app=menu&inc=feature_sms_autoreply&op=sms_autoreply_list&err=" . urlencode($error_string)); break; case "sms_autoreply_add": if ($err) { $content = "<div class=error_string>{$err}</div>"; } $content .= "\n\t <h2>" . _('Add SMS autoreply') . "</h2>\n\t <p>\n\t <form action=index.php?app=menu&inc=feature_sms_autoreply&op=sms_autoreply_add_yes method=post>\n\t <p>" . _('SMS autoreply keyword') . ": <input type=text size=10 maxlength=10 name=add_autoreply_keyword value=\"{$add_autoreply_keyword}\">\n\t <p><input type=submit class=button value=" . _('Add') . ">\n\t </form>\n\t"; echo $content; break; case "sms_autoreply_add_yes": $add_autoreply_keyword = strtoupper($_POST['add_autoreply_keyword']); if ($add_autoreply_keyword) { if (checkavailablekeyword($add_autoreply_keyword)) { $db_query = "INSERT INTO " . _DB_PREF_ . "_featureAutoreply (uid,autoreply_keyword) VALUES ('{$uid}','{$add_autoreply_keyword}')"; if ($new_uid = @dba_insert_id($db_query)) { $error_string = _('SMS autoreply keyword has been added') . " (" . _('keyword') . ": `{$add_autoreply_keyword}`)"; } else { $error_string = _('Fail to add SMS autoreply') . " (" . _('keyword') . ": `{$add_autoreply_keyword}`)"; } } else { $error_string = _('SMS keyword already exists, reserved or use by other feature') . " (" . _('keyword') . ": `{$add_autoreply_keyword}`)"; } } else { $error_string = _('You must fill all fields'); } header("Location: index.php?app=menu&inc=feature_sms_autoreply&op=sms_autoreply_add&err=" . urlencode($error_string)); break; // scenario
} header("Location: index.php?app=menu&inc=feature_sms_quiz&op=sms_quiz_list&err=" . urlencode($error_string)); break; case "sms_quiz_add": if ($err) { $content = "<div class=error_string>{$err}</div>"; } $content .= "\n\t\t\t\t<h2>" . _('Add SMS quiz') . "</h2>\n\t\t\t\t<p>\n\t\t\t\t<form action=index.php?app=menu&inc=feature_sms_quiz&op=sms_quiz_add_yes method=post>\n\t\t\t<table width=100% cellpadding=1 cellspacing=2 border=0>\n\t\t\t\t<tr>\n\t\t\t\t<td width=150>" . _('SMS quiz keyword') . "</td><td width=5>:</td><td><input type=text size=3 maxlength=10 name=add_quiz_keyword value=\"{$add_quiz_keyword}\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t<td>" . _('SMS quiz question') . "</td><td>:</td><td><input type=text size=40 maxlength=200 name=add_quiz_question value=\"{$add_quiz_question}\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t<td>" . _('SMS quiz answer') . "</td><td>:</td><td><input type=text size=12 maxlength=200 name=add_quiz_answer value=\"{$add_quiz_answer}\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t<td>" . _('Message when correct') . "</td><td>:</td><td><input type=text size=40 maxlength=200 name=add_quiz_msg_correct value=\"{$add_quiz_msg_correct}\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t<td>" . _('Message when incorrect') . "</td><td>:</td><td><input type=text size=40 maxlength=200 name=add_quiz_msg_incorrect value=\"{$add_quiz_msg_incorrect}\"></td>\n\t\t\t\t</tr>\t \n\t\t\t</table>\n\t\t\t\t<p><input type=submit class=button value=\"" . _('Add') . "\">\n\t\t\t\t</form>\n\t\t\t"; echo $content; break; case "sms_quiz_add_yes": $add_quiz_keyword = strtoupper($_POST['add_quiz_keyword']); $add_quiz_question = $_POST['add_quiz_question']; $add_quiz_answer = strtoupper($_POST['add_quiz_answer']); $add_quiz_msg_correct = $_POST['add_quiz_msg_correct']; $add_quiz_msg_incorrect = $_POST['add_quiz_msg_incorrect']; if ($add_quiz_keyword && $add_quiz_answer) { if (checkavailablekeyword($add_quiz_keyword)) { $db_query = "\n\t\t\t\t\t\t\tINSERT INTO " . _DB_PREF_ . "_featureQuiz (uid,quiz_keyword,quiz_question,quiz_answer,quiz_msg_correct,quiz_msg_incorrect)\n\t\t\t\t\t\t\tVALUES ('{$uid}','{$add_quiz_keyword}','{$add_quiz_question}','{$add_quiz_answer}','{$add_quiz_msg_correct}','{$add_quiz_msg_incorrect}')\n\t\t\t\t\t\t"; if ($new_uid = @dba_insert_id($db_query)) { $error_string = _('SMS quiz has been added') . " (" . _('keyword') . ": `{$add_quiz_keyword}`)"; } } else { $error_string = _('SMS quiz already exists, reserved or use by other feature') . " (" . _('keyword') . ": `{$add_quiz_keyword}`)"; } } else { $error_string = _('You must fill all field'); } header("Location: index.php?app=menu&inc=feature_sms_quiz&op=sms_quiz_add&err=" . urlencode($error_string)); break; }
dba_query($db_query); $error_string = _('SMS poll choice and all its voters has been deleted') . " (" . _('keyword') . ": `{$choice_keyword}`)"; } } header("Location: index.php?app=menu&inc=feature_sms_poll&op=sms_poll_edit&poll_id={$poll_id}&err=" . urlencode($error_string)); break; case "sms_poll_add": if ($err) { $content = "<div class=error_string>{$err}</div>"; } $content .= "\n\t <h2>" . _('Add SMS poll') . "</h2>\n\t <p>\n\t <form action=index.php?app=menu&inc=feature_sms_poll&op=sms_poll_add_yes method=post>\n\t<table width=100% cellpadding=1 cellspacing=2 border=0>\n\t <tr>\n\t\t<td width=150>" . _('SMS poll keyword') . "</td><td width=5>:</td><td><input type=text size=3 maxlength=10 name=add_poll_keyword value=\"{$add_poll_keyword}\"></td>\n\t </tr>\n\t <tr>\n\t\t<td>" . _('SMS poll title') . "</td><td>:</td><td><input type=text size=60 maxlength=200 name=add_poll_title value=\"{$add_poll_title}\"></td>\n\t </tr>\t \n\t</table>\n\t <p><input type=submit class=button value=\"" . _('Add') . "\">\n\t </form>\n\t"; echo $content; break; case "sms_poll_add_yes": $add_poll_keyword = strtoupper($_POST['add_poll_keyword']); $add_poll_title = $_POST['add_poll_title']; if ($add_poll_title && $add_poll_keyword) { if (checkavailablekeyword($add_poll_keyword)) { $db_query = "\n\t\t INSERT INTO " . _DB_PREF_ . "_featurePoll (uid,poll_keyword,poll_title)\n\t\t VALUES ('{$uid}','{$add_poll_keyword}','{$add_poll_title}')\n\t\t"; if ($new_uid = @dba_insert_id($db_query)) { $error_string = _('SMS poll has been added') . " (" . _('keyword') . ": `{$add_poll_keyword}`)"; } } else { $error_string = _('SMS poll already exists, reserved or use by other feature') . " (" . _('keyword') . ": `{$add_poll_keyword}`)"; } } else { $error_string = _('You must fill all fields'); } header("Location: index.php?app=menu&inc=feature_sms_poll&op=sms_poll_add&err=" . urlencode($error_string)); break; }
function sms_survey_dataadd($keyword, $title) { global $core_config; // check available keyword in the system, it will returns TRUE if available if (checkavailablekeyword($keyword)) { $datetime_now = $core_config['datetime']['now']; $uid = $core_config['user']['uid']; $keyword = trim(strtoupper($keyword)); $db_query = "INSERT INTO " . _DB_PREF_ . "_featureSurvey (uid,keyword,title,creation_datetime) "; $db_query .= "VALUES ('{$uid}','{$keyword}','{$title}','{$datetime_now}')"; $id = dba_insert_id($db_query); } return $id; }
function inboxgroup_dataedit($rid, $keywords, $description, $exclusive) { $db_query = "SELECT keywords FROM " . _DB_PREF_ . "_featureInboxgroup WHERE id='{$rid}'"; $db_result = dba_query($db_query); $db_row = dba_fetch_array($db_result); $orig_keywords = explode(',', $db_row['keywords']); $exclusive = $exclusive ? 1 : 0; $keywords = str_replace(' ', '', $keywords); $keywords = trim(strtoupper($keywords)); $keywords = explode(',', $keywords); $k = ''; for ($i = 0; $i < count($keywords); $i++) { if (checkavailablekeyword($keywords[$i])) { $k .= $keywords[$i] . ','; } else { for ($j = 0; $j < count($orig_keywords); $j++) { if ($keywords[$i] == $orig_keywords[$j]) { $k .= $keywords[$i] . ','; } } } } if ($keywords = substr($k, 0, -1)) { $db_query = "UPDATE " . _DB_PREF_ . "_featureInboxgroup SET c_timestamp='" . mktime() . "',keywords='{$keywords}',description='{$description}',exclusive='{$exclusive}' WHERE deleted='0' AND id='{$rid}'"; $db_result = dba_affected_rows($db_query); } else { $db_result = true; } return $db_result; }
case "sms_command_add": if ($err) { $content = "<div class=error_string>{$err}</div>"; } $content .= "\n\t <h2>" . _('Add SMS command') . "</h2>\n\t <p>\n\t <form action=index.php?app=menu&inc=feature_sms_command&op=sms_command_add_yes method=post>\n\t <p>" . _('SMS command keyword') . ": <input type=text size=10 maxlength=10 name=add_command_keyword value=\"{$add_command_keyword}\">\n\t <p>" . _('Pass these parameter to command exec field') . ":\n\t <p><b>{SMSDATETIME}</b> " . _('will be replaced by SMS incoming date/time') . "\n\t <p><b>{SMSSENDER}</b> " . _('will be replaced by sender number') . "\n\t <p><b>{COMMANDKEYWORD}</b> " . _('will be replaced by command keyword') . "\n\t <p><b>{COMMANDPARAM}</b> " . _('will be replaced by command parameter passed to server from SMS') . "\n\t <p>" . _('SMS command exec path') . ": <b>" . $plugin_config['feature']['sms_command']['bin'] . "</b>\n\t <p>" . _('SMS command exec') . ": <input type=text size=60 maxlength=200 name=add_command_exec value=\"{$add_command_exec}\">\n\t <p><input type=submit class=button value=\"" . _('Add') . "\">\n\t </form>\n\t"; echo $content; break; case "sms_command_add_yes": $add_command_keyword = strtoupper($_POST['add_command_keyword']); $add_command_exec = $_POST['add_command_exec']; if ($add_command_keyword && $add_command_exec) { $add_command_exec = $add_command_exec; $add_command_exec = str_replace("/", "", $add_command_exec); $add_command_exec = str_replace("|", "", $add_command_exec); $add_command_exec = str_replace("\\", "", $add_command_exec); if (checkavailablekeyword($add_command_keyword)) { $db_query = "INSERT INTO " . _DB_PREF_ . "_featureCommand (uid,command_keyword,command_exec) VALUES ('{$uid}','{$add_command_keyword}','{$add_command_exec}')"; if ($new_uid = @dba_insert_id($db_query)) { $error_string = _('SMS command has been added') . " (" . _('keyword') . " `{$add_command_keyword}`)"; } else { $error_string = _('Fail to add SMS command') . " (" . _('keyword') . ": `{$add_command_keyword}`)"; } } else { $error_string = _('SMS command already exists, reserved or use by other feature') . " (" . _('keyword') . ": `{$add_command_keyword}`)"; } } else { $error_string = _('You must fill all fields'); } header("Location: index.php?app=menu&inc=feature_sms_command&op=sms_command_add&err=" . urlencode($error_string)); break; }
/** * Intercept on before-process stage for incoming SMS * * @param $sms_datetime incoming * SMS date/time * @param $sms_sender incoming * SMS sender * @param $message incoming * SMS message before interepted * @param $sms_receiver receiver * number that is receiving incoming SMS * @param $reference_id reference_id * data * @return array $ret */ function incoming_hook_recvsms_intercept($sms_datetime, $sms_sender, $message, $sms_receiver, $reference_id) { $ret = array(); $found_bc = FALSE; $found_pv = FALSE; // continue only when keyword does not exists $m = explode(' ', $message); if (!checkavailablekeyword($m[0])) { return $ret; } // get settings $settings = incoming_settings_get(); // get post rules $pre_rules = incoming_pre_rules_get(); // scan for #<sender's phonebook group code> and @<username> according to pre rules $msg = explode(' ', $message); if (count($msg) > 0) { $bc = array(); $pv = array(); for ($i = 0; $i < count($msg); $i++) { $c_text = trim($msg[$i]); // scan message for @username if ($pre_rules['match_username']) { if (substr($c_text, 0, 1) === '@') { $pv[] = strtolower(substr($c_text, 1)); $found_pv = TRUE; } } // scan message for #groupcode if ($pre_rules['match_groupcode']) { if (substr($c_text, 0, 1) === '#') { $bc[] = strtoupper(substr($c_text, 1)); $found_bc = TRUE; } } } } if ($found_bc || $found_pv) { _log("recvsms_intercept dt:" . $sms_datetime . " s:" . $sms_sender . " r:" . $sms_receiver . " m:" . $message, 3, 'incoming recvsms_intercept'); } if ($found_bc) { $groups = array_unique($bc); foreach ($groups as $key => $c_group_code) { $c_group_code = strtoupper($c_group_code); $c_group_code = core_sanitize_alphanumeric($c_group_code); $c_uid = user_mobile2uid($sms_sender); if ($c_uid && ($c_gpid = phonebook_groupcode2id($c_uid, $c_group_code))) { $c_username = user_uid2username($c_uid); _log("bc g:" . $c_group_code . " gpid:" . $c_gpid . " uid:" . $c_uid . " dt:" . $sms_datetime . " s:" . $sms_sender . " r:" . $sms_receiver . " m:" . $message, 3, 'incoming recvsms_intercept'); sendsms_bc($c_username, $c_gpid, $message); _log("bc end", 3, 'incoming recvsms_intercept'); $ret['uid'] = $c_uid; $ret['hooked'] = true; } else { // check the group_code for flag_sender<>0 $db_query = "SELECT id,uid,flag_sender FROM " . _DB_PREF_ . "_featurePhonebook_group WHERE code='{$c_group_code}' AND flag_sender<>0"; $db_result = dba_query($db_query); if ($db_row = dba_fetch_array($db_result)) { $c_gpid = $db_row['id']; $c_uid = $db_row['uid']; $c_flag_sender = $db_row['flag_sender']; if ($c_flag_sender == 2) { $c_username = user_uid2username($c_uid); _log("bc mobile flag_sender:" . $c_flag_sender . " username:"******" uid:" . $c_uid . " g:" . $c_group_code . " gpid:" . $c_gpid . " uid:" . $c_uid . " dt:" . $sms_datetime . " s:" . $sms_sender . " r:" . $sms_receiver . " m:" . $message, 3, 'incoming recvsms_intercept'); $sender = trim(phonebook_number2name($sms_sender, $c_username)); $sender = $sender ? $sender : $sms_sender; sendsms_bc($c_username, $c_gpid, $sender . ":" . $message); _log("bc mobile end", 3, 'incoming recvsms_intercept'); $ret['uid'] = $c_uid; $ret['hooked'] = true; } else { if ($c_flag_sender == 1) { // check whether sms_sender belongs to c_group_code $db_query = "SELECT B.id AS id FROM " . _DB_PREF_ . "_featurePhonebook AS A\n\t\t\t\t\t\t\t\tLEFT JOIN playsms.playsms_featurePhonebook_group_contacts AS C ON A.id=C.pid\n\t\t\t\t\t\t\t\tLEFT JOIN playsms.playsms_featurePhonebook_group AS B ON B.id=C.gpid\n\t\t\t\t\t\t\t\tWHERE A.mobile LIKE '%" . substr($sms_sender, 3) . "' AND B.code='" . $c_group_code . "'"; $db_result = dba_query($db_query); if ($db_row = dba_fetch_array($db_result)) { $c_username = user_uid2username($c_uid); _log("bc mobile flag_sender:" . $c_flag_sender . " username:"******" uid:" . $c_uid . " g:" . $c_group_code . " gpid:" . $c_gpid . " uid:" . $c_uid . " dt:" . $sms_datetime . " s:" . $sms_sender . " r:" . $sms_receiver . " m:" . $message, 3, 'incoming recvsms_intercept'); $sender = trim(phonebook_number2name($sms_sender, $c_username)); $sender = $sender ? $sender : $sms_sender; sendsms_bc($c_username, $c_gpid, $sender . ":" . $message); _log("bc mobile end", 3, 'incoming recvsms_intercept'); $ret['uid'] = $c_uid; $ret['hooked'] = true; } } } } } } } if ($found_pv) { $users = array_unique($pv); foreach ($users as $key => $c_username) { $c_username = core_sanitize_username($c_username); if ($c_uid = user_username2uid($c_username)) { _log("pv u:" . $c_username . " uid:" . $c_uid . " dt:" . $sms_datetime . " s:" . $sms_sender . " r:" . $sms_receiver . " m:[" . $message . "] reference_id:" . $reference_id, 3, 'incoming recvsms_intercept'); recvsms_inbox_add($sms_datetime, $sms_sender, $c_username, $message, $sms_receiver, $reference_id); _log("pv end", 3, 'incoming recvsms_intercept'); $ret['uid'] = $c_uid; $ret['hooked'] = true; } } } return $ret; }
break; case "incoming_save": // form pre rules // scan message for @username $pre_rules['match_username'] = (int) $_REQUEST['incoming_match_username']; $items['incoming_match_username'] = $pre_rules['match_username']; // scan message for #groupcode $pre_rules['match_groupcode'] = (int) $_REQUEST['incoming_match_groupcode']; $items['incoming_match_groupcode'] = $pre_rules['match_groupcode']; // form post rules // sandbox match receiver number and sender ID $post_rules['match_sender_id'] = (int) $_REQUEST['sandbox_match_sender_id']; $items['sandbox_match_sender_id'] = $post_rules['match_sender_id']; // sandbox prefix $post_rules['insert_prefix'] = trim(strtoupper(core_sanitize_alphanumeric($_REQUEST['sandbox_prefix']))); if ($post_rules['insert_prefix'] && checkavailablekeyword($post_rules['insert_prefix'])) { $_SESSION['error_string'][] = _('Fail to insert keyword') . ' (' . _('keyword') . ': ' . $post_rules['insert_prefix'] . ')'; $post_rules['insert_prefix'] = ''; } $items['sandbox_prefix'] = $post_rules['insert_prefix']; // sandbox forward to users $post_rules['forward_to'] = serialize(array_unique($_REQUEST['uids'])); $items['sandbox_forward_to'] = $post_rules['forward_to']; // form settings // settings to leave copy on sandbox $items['settings_leave_copy_sandbox'] = (int) $_REQUEST['settings_leave_copy_sandbox']; // settings to match with all approved sender ID $items['settings_match_all_sender_id'] = (int) $_REQUEST['settings_match_all_sender_id']; // save to registry if (count($items)) { registry_update(1, 'feature', 'incoming', $items);