Example #1
0
function sms_command_handle($sms_datetime, $sms_sender, $command_keyword, $command_param = '')
{
    global $datetime_now, $plugin_config;
    $ok = false;
    $db_query = "SELECT command_exec,uid,command_return_as_reply FROM " . _DB_PREF_ . "_featureCommand WHERE command_keyword='{$command_keyword}'";
    $db_result = dba_query($db_query);
    $db_row = dba_fetch_array($db_result);
    $command_exec = $db_row['command_exec'];
    $sms_datetime = core_display_datetime($sms_datetime);
    $command_exec = str_replace("{SMSDATETIME}", "\"{$sms_datetime}\"", $command_exec);
    $command_exec = str_replace("{SMSSENDER}", "\"{$sms_sender}\"", $command_exec);
    $command_exec = str_replace("{COMMANDKEYWORD}", "\"{$command_keyword}\"", $command_exec);
    $command_exec = str_replace("{COMMANDPARAM}", "\"{$command_param}\"", $command_exec);
    $command_exec = $plugin_config['feature']['sms_command']['bin'] . "/" . $command_exec;
    $command_output = shell_exec(stripslashes($command_exec));
    $username = uid2username($db_row['uid']);
    if ($db_row['command_return_as_reply'] == 1) {
        sendsms_pv($username, $sms_sender, $command_output, 'text', 0);
    }
    $db_query = "\n\tINSERT INTO " . _DB_PREF_ . "_featureCommand_log\n\t(sms_sender,command_log_datetime,command_log_keyword,command_log_exec) \n\tVALUES\n\t('{$sms_sender}','{$datetime_now}','{$command_keyword}','{$command_exec}')\n    ";
    if ($new_id = @dba_insert_id($db_query)) {
        $ok = true;
    }
    return $ok;
}
Example #2
0
function webservices_pv($c_username, $to, $msg, $type = 'text', $unicode = 0)
{
    $ret = '';
    $arr_to = explode(',', $to);
    if ($c_username && $arr_to[1] && $msg) {
        // multiple destination
        list($ok, $to, $smslog_id) = sendsms_pv($c_username, $arr_to, $msg, $type, $unicode);
        for ($i = 0; $i < count($arr_to); $i++) {
            if ($ok[$i] && $to[$i] && $smslog_id[$i]) {
                $ret .= "OK " . $to[$i] . "," . $smslog_id[$i] . "\n";
            } else {
                $ret .= "OK " . $arr_to[$i] . "\n";
            }
        }
    } elseif ($c_username && $to && $msg) {
        // single destination
        list($ok, $to, $smslog_id) = sendsms_pv($c_username, $to, $msg, $type, $unicode);
        if ($ok[0] && $smslog_id[0]) {
            $ret = "OK " . $smslog_id[0];
        } else {
            $ret = "ERR 200";
        }
    } else {
        $ret = "ERR 201";
    }
    return $ret;
}
Example #3
0
function sms_autosend_hook_playsmsd()
{
    global $core_config;
    $timenow = mktime();
    $db_query = "SELECT uid,time_id," . _DB_PREF_ . "_featureAutosend.autosend_id, autosend_message,autosend_number,autosend_time\n\t\t\t\t\t\t\tFROM " . _DB_PREF_ . "_featureAutosend\n\t\t\t\t\t\t\tINNER JOIN " . _DB_PREF_ . "_featureAutosend_time\n\t\t\t\t\t\t\tON " . _DB_PREF_ . "_featureAutosend.autosend_id =  " . _DB_PREF_ . "_featureAutosend_time.autosend_id\n\t\t\t\t\t\t\tWHERE UNIX_TIMESTAMP(" . _DB_PREF_ . "_featureAutosend_time.autosend_time) <= '{$timenow}'\n\t\t\t\t\t\t\tAND " . _DB_PREF_ . "_featureAutosend_time.sent='0'\n\t\t\t\t\t\t\tAND autosend_time != ''\n\t\t\t\t\t\t\tAND " . _DB_PREF_ . "_featureAutosend.autosend_enable='1'";
    $db_result = dba_query($db_query);
    while ($db_row = dba_fetch_array($db_result)) {
        $message = $db_row['autosend_message'];
        $c_uid = $db_row['uid'];
        $username = uid2username($c_uid);
        $sms_to = $db_row['autosend_number'];
        // we are sending to this number
        $autosend_id = $db_row['autosend_id'];
        $time_id = $db_row['time_id'];
        $unicode = 0;
        if (function_exists('mb_detect_encoding')) {
            $encoding = mb_detect_encoding($message, 'auto');
            if ($encoding != 'ASCII') {
                $unicode = 1;
            }
        }
        list($ok, $to, $smslog_id) = sendsms_pv($username, $sms_to, $message, 'text', $unicode);
        if ($ok[0]) {
            $db_query = "UPDATE " . _DB_PREF_ . "_featureAutosend_time SET sent='1' WHERE time_id = '{$time_id}'";
            $db_result = @dba_affected_rows($db_query);
        }
    }
}
Example #4
0
function myauto_hook_interceptincomingsms($sms_datetime, $sms_sender, $message, $sms_receiver)
{
    global $core_config;
    // reply message
    $reply = 'Thank you for your message';
    // detect reply message, set unicode if not ASCII
    $unicode = 0;
    if (function_exists('mb_detect_encoding')) {
        $encoding = mb_detect_encoding($reply, 'auto');
        if ($encoding != 'ASCII') {
            $unicode = 1;
        }
    }
    // send reply
    list($ok, $to, $smslog_id) = sendsms_pv('admin', $sms_sender, $reply, 'text', $unicode);
    // log it
    $sms_datetime = core_display_datetime($sms_datetime);
    logger_print("dt:" . $sms_datetime . " s:" . $sms_sender . " r:" . $sms_receiver . " autorespon:" . $reply, 3, "myauto");
}
Example #5
0
function sms_quiz_handle($c_uid, $sms_datetime, $sms_sender, $quiz_keyword, $quiz_param = '')
{
    global $core_config, $datetime_now;
    $ok = false;
    $username = uid2username($c_uid);
    $sms_to = $sms_sender;
    // we are replying to this sender
    $db_query = "SELECT * FROM " . _DB_PREF_ . "_featureQuiz WHERE quiz_keyword='{$quiz_keyword}'";
    $db_result = dba_query($db_query);
    $db_row = dba_fetch_array($db_result);
    if ($db_row['quiz_enable'] == 1) {
        if ($db_row['quiz_answer'] == strtoupper($quiz_param)) {
            $message = $db_row['quiz_msg_correct'];
        } else {
            $message = $db_row['quiz_msg_incorrect'];
        }
        $quiz_id = $db_row['quiz_id'];
        $answer = strtoupper($quiz_param);
        $db_query = "INSERT INTO " . _DB_PREF_ . "_featureQuiz_log (quiz_id,quiz_answer,quiz_sender,in_datetime) VALUES ('{$quiz_id}','{$answer}','{$sms_to}','{$datetime_now}')";
        if ($logged = @dba_insert_id($db_query)) {
            //list($ok,$to,$smslog_id) = sendsms_pv($username, $sms_to, $message);
            $unicode = 0;
            if (function_exists('mb_detect_encoding')) {
                $encoding = mb_detect_encoding($message, 'auto');
                if ($encoding != 'ASCII') {
                    $unicode = 1;
                }
            }
            list($ok, $to, $smslog_id) = sendsms_pv($username, $sms_to, $message, 'text', $unicode);
            $ok = $ok[0];
        }
    } else {
        if ($db_row['quiz_keyword'] == $quiz_keyword) {
            // returns true even if its logged as correct/incorrect answer
            // this situation happens when user answers a disabled quiz
            // returning false will make this SMS as unhandled SMS
            $ok = true;
        }
    }
    return $ok;
}
Example #6
0
function sms_custom_handle($sms_datetime, $sms_sender, $custom_keyword, $custom_param = '')
{
    global $datetime_now;
    $ok = false;
    $db_query = "SELECT custom_url,uid,custom_return_as_reply FROM " . _DB_PREF_ . "_featureCustom WHERE custom_keyword='{$custom_keyword}'";
    $db_result = dba_query($db_query);
    $db_row = dba_fetch_array($db_result);
    $custom_url = $db_row['custom_url'];
    $sms_datetime = core_display_datetime($sms_datetime);
    $custom_url = str_replace("{SMSDATETIME}", urlencode($sms_datetime), $custom_url);
    $custom_url = str_replace("{SMSSENDER}", urlencode($sms_sender), $custom_url);
    $custom_url = str_replace("{CUSTOMKEYWORD}", urlencode($custom_keyword), $custom_url);
    $custom_url = str_replace("{CUSTOMPARAM}", urlencode($custom_param), $custom_url);
    $username = uid2username($db_row['uid']);
    $debug = dba_query("INSERT INTO " . _DB_PREF_ . "_toolsDebug (value)VALUES('{$username}')");
    $url = parse_url($custom_url);
    if (!$url['port']) {
        $url['port'] = 80;
    }
    // fixme anton -deprecated when using PHP5
    //$connection = fsockopen($url['host'],$url['port'],&$error_number,&$error_description,60);
    //fixme Edward, change to file_get_contents
    $returns = file_get_contents($custom_url);
    if ($returns) {
        //fixme Edward, change to file_get_contents
        //socket_set_blocking($connection, false);
        //fputs($connection, "GET $custom_url HTTP/1.0\r\n\r\n");
        $username = uid2username($db_row['uid']);
        if ($db_row['custom_return_as_reply'] == 1) {
            sendsms_pv($username, $sms_sender, $returns, 'text', 0);
        }
        $db_query = "\n\t    INSERT INTO " . _DB_PREF_ . "_featureCustom_log\n\t    (sms_sender,custom_log_datetime,custom_log_keyword,custom_log_url) \n\t    VALUES\n\t    ('{$sms_sender}','{$datetime_now}','{$custom_keyword}','{$custom_url}')\n\t";
        if ($new_id = @dba_insert_id($db_query)) {
            $ok = true;
        }
    }
    return $ok;
}
Example #7
0
     $p_num = $_POST['p_num_text'];
 }
 $sms_to = $p_num;
 $msg_flash = $_POST['msg_flash'];
 $msg_unicode = $_POST['msg_unicode'];
 $message = $_POST['message'];
 if (($p_num || $sms_to) && $message) {
     $sms_type = "text";
     if ($msg_flash == "on") {
         $sms_type = "flash";
     }
     $unicode = "0";
     if ($msg_unicode == "on") {
         $unicode = "1";
     }
     list($ok, $to, $smslog_id) = sendsms_pv($username, $sms_to, $message, $sms_type, $unicode);
     if (count($ok) <= 5) {
         for ($i = 0; $i < count($ok); $i++) {
             if ($ok[$i]) {
                 $error_string .= _('Your SMS has been delivered to queue') . " (" . _('to') . ": " . $to[$i] . ")<br>";
             } else {
                 $error_string .= _('Fail to sent SMS') . " (" . _('to') . ": `" . $to[$i] . "`)<br>";
             }
         }
     } else {
         // minimize delivery reports on web, actual status can be seen from outgoing SMS menu (emmanuel)
         $sms_sent = 0;
         $sms_failed = 0;
         for ($i = 0; $i < count($ok); $i++) {
             if ($ok[$i]) {
                 // $error_string .= _('Your SMS has been delivered to queue')." ("._('to').": `".$to[$i]."`)<br>";
Example #8
0
function sms_autoreply_handle($sms_datetime, $sms_sender, $c_uid, $autoreply_id, $autoreply_keyword, $autoreply_param = '')
{
    global $datetime_now;
    $ok = false;
    $autoreply_request = $autoreply_keyword . " " . $autoreply_param;
    $array_autoreply_request = explode(" ", $autoreply_request);
    for ($i = 0; $i < count($array_autoreply_request); $i++) {
        $autoreply_part[$i] = trim($array_autoreply_request[$i]);
        $tmp_autoreply_request .= trim($array_autoreply_request[$i]) . " ";
    }
    $autoreply_request = trim($tmp_autoreply_request);
    for ($i = 1; $i < 7; $i++) {
        $autoreply_scenario_param_list .= "autoreply_scenario_param{$i}='" . $autoreply_part[$i] . "' AND ";
    }
    $db_query = "\n\tSELECT autoreply_scenario_result FROM " . _DB_PREF_ . "_featureAutoreply_scenario \n\tWHERE autoreply_id='{$autoreply_id}' AND {$autoreply_scenario_param_list} 1=1\n    ";
    $db_result = dba_query($db_query);
    $db_row = dba_fetch_array($db_result);
    if ($autoreply_scenario_result = $db_row['autoreply_scenario_result']) {
        $db_query = "\n\t    INSERT INTO " . _DB_PREF_ . "_featureAutoreply_log\n\t    (sms_sender,autoreply_log_datetime,autoreply_log_keyword,autoreply_log_request) \n\t    VALUES\n\t    ('{$sms_sender}','{$datetime_now}','{$autoreply_keyword}','{$autoreply_request}')\n\t";
        if ($new_id = @dba_insert_id($db_query)) {
            $ok = true;
        }
    }
    if ($ok) {
        $ok = false;
        $c_username = uid2username($c_uid);
        //list($ok,$to,$smslog_id) = sendsms_pv($c_username,$sms_sender,$autoreply_scenario_result);
        //$ok = $ok[0];
        $unicode = 0;
        if (function_exists('mb_detect_encoding')) {
            $encoding = mb_detect_encoding($message, 'auto');
            if ($encoding != 'ASCII') {
                $unicode = 1;
            }
        }
        list($ok, $to, $smslog_id) = sendsms_pv($c_username, $sms_sender, $autoreply_scenario_result, 'text', $unicode);
        $ok = $ok[0];
    }
    return $ok;
}
Example #9
0
function insertsmstoinbox($sms_datetime, $sms_sender, $target_user, $message, $sms_receiver = "")
{
    global $core_config, $web_title, $email_service, $email_footer;
    // sms to inbox will be handled by plugin/tools/* first
    $ret_intercept = interceptsmstoinbox($sms_datetime, $sms_sender, $target_user, $message, $sms_receiver);
    if ($ret_intercept['param_modified']) {
        $sms_datetime = $ret_intercept['param']['sms_datetime'] ? $ret_intercept['param']['sms_datetime'] : $sms_datetime;
        $sms_sender = $ret_intercept['param']['sms_sender'] ? $ret_intercept['param']['sms_sender'] : $sms_sender;
        $target_user = $ret_intercept['param']['target_user'] ? $ret_intercept['param']['target_user'] : $target_user;
        $message = $ret_intercept['param']['message'] ? $ret_intercept['param']['message'] : $message;
        $sms_receiver = $ret_intercept['param']['sms_receiver'] ? $ret_intercept['param']['sms_receiver'] : $sms_receiver;
    }
    $ok = false;
    if ($sms_sender && $target_user && $message) {
        $user = user_getdatabyusername($target_user);
        if ($uid = $user['uid']) {
            // forward to Inbox
            if ($fwd_to_inbox = $user['fwd_to_inbox']) {
                $db_query = "\n\t\t    INSERT INTO " . _DB_PREF_ . "_tblUserInbox\n\t\t    (in_sender,in_receiver,in_uid,in_msg,in_datetime) \n\t\t    VALUES ('{$sms_sender}','{$sms_receiver}','{$uid}','{$message}','{$sms_datetime}')\n\t\t";
                logger_print("saving sender:" . $sms_sender . " receiver:" . $sms_receiver . " target:" . $target_user, 3, "insertsmstoinbox");
                if ($cek_ok = @dba_insert_id($db_query)) {
                    logger_print("saved sender:" . $sms_sender . " receiver:" . $sms_receiver . " target:" . $target_user, 3, "insertsmstoinbox");
                }
            }
            // forward to email
            if ($fwd_to_email = $user['fwd_to_email']) {
                if ($email = $user['email']) {
                    // make sure sms_datetime is in supported format and in user's timezone
                    $sms_datetime = core_display_datetime($sms_datetime);
                    // get name from target_user's phonebook
                    $c_name = phonebook_number2name($sms_sender, $target_user);
                    $sender = $c_name ? $c_name . ' <' . $sms_sender . '>' : $sms_sender;
                    // fixme anton - slash maddess
                    $message = stripslashes($message);
                    $subject = "[SMSGW-PV] " . _('from') . " {$sms_sender}";
                    $body = _('Forward Private WebSMS') . " ({$web_title})\n\n";
                    $body .= _('Date time') . ": {$sms_datetime}\n";
                    $body .= _('Sender') . ": {$sender}\n";
                    $body .= _('Receiver') . ": {$sms_receiver}\n\n";
                    $body .= _('Message') . ":\n{$message}\n\n";
                    $body .= $email_footer . "\n\n";
                    logger_print("send email from:" . $email_service . " to:" . $email, 3, "insertsmstoinbox");
                    sendmail($email_service, $email, $subject, $body);
                    logger_print("sent email from:" . $email_service . " to:" . $email, 3, "insertsmstoinbox");
                }
                $ok = true;
            }
            // forward to mobile
            if ($fwd_to_mobile = $user['fwd_to_mobile']) {
                if ($mobile = $user['mobile']) {
                    $unicode = 0;
                    if (function_exists('mb_detect_encoding')) {
                        $encoding = mb_detect_encoding($message, 'auto');
                        if ($encoding != 'ASCII') {
                            $unicode = 1;
                        }
                    }
                    $message = $sender . ' ' . $message;
                    logger_print("send to mobile:" . $mobile . " from:" . $sender . " user:"******"insertsmstoinbox");
                    list($ok, $to, $smslog_id) = sendsms_pv($target_user, $mobile, $message, 'text', $unicode);
                    if ($ok[0]) {
                        logger_print("sent to mobile:" . $mobile . " from:" . $sender . " user:"******"insertsmstoinbox");
                    }
                }
            }
        }
    }
    return $ok;
}
Example #10
0
function xlate_hook_interceptincomingsms($sms_datetime, $sms_sender, $message, $sms_receiver)
{
    global $core_config;
    $msg = explode(" ", $message);
    $ret = array();
    if (count($msg) > 1) {
        $keyword = trim($msg[0]);
        if (substr($keyword, 0, 1) == '@') {
            $xlate = substr($keyword, 1);
            $xlate = explode('2', $xlate);
            $xlate_from = $xlate[0];
            $xlate_to = $xlate[1];
            if ($xlate_from && $xlate_to && strlen($xlate_from) == 2 && strlen($xlate_to) == 2) {
                for ($i = 1; $i < count($msg); $i++) {
                    $words .= $msg[$i] . " ";
                }
                $words = trim($words);
                // contact google
                $lib = $core_config['apps_path']['plug'] . '/tools/xlate/lib/GoogleTranslate';
                // load JSON.php for PHP version lower than 5.2.x
                require_once $lib . '/JSON.php';
                require_once $lib . '/googleTranslate.class.php';
                if ($gt = new GoogleTranslateWrapper()) {
                    /* Translate */
                    $xlate_words = $gt->translate($words, $xlate_to, $xlate_from);
                    // incoming sms is handled
                    $ret['hooked'] = true;
                    /* Was translation successful */
                    $sms_datetime = core_display_datetime($sms_datetime);
                    if ($gt->isSuccess()) {
                        $reply = '@' . $xlate_from . '2' . $xlate_to . ' ' . $words . ' => ' . $xlate_words;
                        logger_print("success dt:" . $sms_datetime . " s:" . $sms_sender . " r:" . $sms_receiver . " w:" . $words . " from:" . $xlate_from . " to:" . $xlate_to . " xlate:" . $xlate_words, 3, "xlate");
                    } else {
                        $reply = '@' . $xlate_from . '2' . $xlate_to . ' ' . _("unable to translate") . ': ' . $words;
                        logger_print("failed dt:" . $sms_datetime . " s:" . $sms_sender . " r:" . $sms_receiver . " w:" . $words . " from:" . $xlate_from . " to:" . $xlate_to, 3, "xlate");
                    }
                    // detect reply message, set unicode if not ASCII
                    $unicode = 0;
                    if (function_exists('mb_detect_encoding')) {
                        $encoding = mb_detect_encoding($reply, 'auto');
                        if ($encoding != 'ASCII') {
                            $unicode = 1;
                        }
                    }
                    // send reply SMS using admin account
                    // should add a web menu in xlate.php to choose which account will be used to send reply SMS
                    // usualy we inspect the result of sendsms_pv, but not this time
                    logger_print("send reply encoding:" . $encoding, 3, "xlate");
                    list($ok, $to, $smslog_id) = sendsms_pv('admin', $sms_sender, $reply, 'text', $unicode);
                    // do not forget to tell parent that this SMS has been hooked
                    $ret['hooked'] = true;
                } else {
                    // unable to load the class, set incoming sms unhandled
                    $ret['hooked'] = false;
                    logger_print("class not exists or fail to load", 3, "xlate");
                }
            }
        }
    }
    return $ret;
}
Example #11
0
function sms_survey_handle($c_uid, $sms_datetime, $sms_sender, $sms_receiver, $survey_keyword, $survey_param = '')
{
    global $core_config;
    $ok = false;
    // get survey data by keyword
    $data = sms_survey_getdatabykeyword($survey_keyword);
    if ($data['status'] == 1) {
        // survey enabled, accept incoming answers
        $session = $data['session'];
        $sid = $data['id'];
        $m = sms_survey_getmemberbymobile($sid, $sms_sender);
        // link_id is used to link each questions and answers
        if ($link_id = sms_survey_getlinkid($session, $sid, $m['id'])) {
            // get last question data from log
            $l = sms_survey_getoutlogs($link_id);
            $outlogs = $l[count($l) - 1];
            $qn = $outlogs['question_number'];
            $next_qn = $qn + 1;
            // save answer in log
            $log = "";
            $log['incoming'] = 1;
            $log['question_number'] = $qn;
            $log['link_id'] = $link_id;
            $log['in_datetime'] = $sms_datetime;
            $log['in_sender'] = $sms_sender;
            $log['in_receiver'] = $sms_receiver;
            $log['answer'] = $survey_param;
            $log['session'] = $session;
            if (sms_survey_savelog($log)) {
                // get next question
                $q = sms_survey_getquestions($sid);
                // stop when ran out questions
                if ($qn < count($q)) {
                    $c_message = $q[$qn]['question'];
                    // yes, not $next_qn, array questions start from 0
                    $c_username = uid2username($c_uid);
                    $c_keyword = $survey_keyword;
                    $c_sms_msg = $c_keyword . " " . $c_message;
                    $c_sms_to = $sms_sender;
                    logger_print("playsmsd send start next qn:" . $next_qn . " sid:" . $c_sid . " username:"******" to:" . $c_sms_to . " msg:" . $c_sms_msg, 3, "sms_survey");
                    // if member's mobile, question and username owned the survey exists
                    if ($c_sms_to && $c_sms_msg && $c_username) {
                        $type = 'text';
                        $unicode = '0';
                        // send next question to member
                        list($ok, $to, $smslog_id) = sendsms_pv($c_username, $c_sms_to, $c_sms_msg, $type, $unicode);
                        $ok = $ok[0] ? "true" : "false";
                        logger_print("playsmsd send finish sid:" . $c_sid . " smslog_id:" . $smslog_id[0] . " ok:" . $ok, 3, "sms_survey");
                        // save the log
                        $log = "";
                        $log['survey_id'] = $sid;
                        $log['question_id'] = $q[$qn]['id'];
                        $log['member_id'] = $m['id'];
                        $log['link_id'] = $link_id;
                        $log['smslog_id'] = $smslog_id[0];
                        $log['name'] = $m['name'];
                        $log['mobile'] = $m['mobile'];
                        $log['question'] = $q[$qn]['question'];
                        $log['question_number'] = $next_qn;
                        $log['creation_datetime'] = $core_config['datetime']['now'];
                        $log['session'] = $session;
                        sms_survey_savelog($log);
                    }
                }
                // set handled
                $ok = true;
            }
        }
    } else {
        // returns true even if its not handled since survey is disabled
        // returning false will make this SMS as unhandled SMS
        $ok = true;
    }
    return $ok;
}
Example #12
0
     $p_num = $_POST['p_num_text'];
 }
 $sms_to = $p_num;
 $msg_flash = $_POST['msg_flash'];
 $msg_unicode = $_POST['msg_unicode'];
 $message = $_POST['message'];
 if (($p_num || $sms_to) && $message) {
     $sms_type = "text";
     if ($msg_flash == "on") {
         $sms_type = "flash";
     }
     $unicode = "0";
     if ($msg_unicode == "on") {
         $unicode = "1";
     }
     list($ok, $to, $queue) = sendsms_pv($username, $sms_to, $message, $sms_type, $unicode);
     $error_string = _('Your SMS has been delivered to queue');
     /*
     if (count($ok) <= 5) {
     	for ($i=0;$i<count($ok);$i++) {
     		if ($ok[$i]) {
     			$error_string .= _('Your SMS has been delivered to queue')." ("._('to').": ".$to[$i].")<br>";
     		} else {
     			$error_string .= _('Fail to sent SMS')." ("._('to').": `".$to[$i]."`)<br>";
     		}
     	}
     } else {
     	// minimize delivery reports on web, actual status can be seen from outgoing SMS menu (emmanuel)
     	$sms_sent = 0;
     	$sms_failed = 0;
     	for ($i=0;$i<count($ok);$i++) {
Example #13
0
function sms_subscribe_handle($c_uid, $sms_datetime, $sms_sender, $subscribe_keyword, $subscribe_param = '')
{
    global $core_config;
    $ok = false;
    $subscribe_param = strtoupper($subscribe_param);
    $subscribe_keyword = strtoupper($subscribe_keyword);
    $username = uid2username($c_uid);
    $sms_to = $sms_sender;
    // we are replying to this sender
    $db_query = "SELECT * FROM " . _DB_PREF_ . "_featureSubscribe WHERE subscribe_keyword='{$subscribe_keyword}'";
    $db_result = dba_query($db_query);
    if ($db_row = dba_fetch_array($db_result)) {
        if (!$db_row['subscribe_enable']) {
            $message = _('Subscribe service inactive');
            //list($ok,$to,$smslog_id) = sendsms_pv($username, $sms_to, $message);
            //$ok = $ok[0];
            $unicode = 0;
            if (function_exists('mb_detect_encoding')) {
                $encoding = mb_detect_encoding($message, 'auto');
                if ($encoding != 'ASCII') {
                    $unicode = 1;
                }
            }
            $ret = sendsms($core_config['main']['cfg_gateway_number'], '', $sms_to, $message, $c_uid, 0, 'text', $unicode);
            $ok = $ret['status'];
            return $ok;
        }
    }
    $c_uid = $db_row['uid'];
    $subscribe_id = $db_row['subscribe_id'];
    $num_rows = dba_num_rows($db_query);
    if ($num_rows) {
        $msg1 = $db_row['subscribe_msg'];
        $msg2 = $db_row['unsubscribe_msg'];
        $db_query = "SELECT * FROM " . _DB_PREF_ . "_featureSubscribe_member WHERE member_number='{$sms_to}' AND subscribe_id='{$subscribe_id}'";
        $db_result = dba_query($db_query);
        $db_row = dba_fetch_array($db_result);
        $num_rows = dba_num_rows($db_query);
        if ($num_rows == 0) {
            $member = false;
            $db_query = "INSERT INTO " . _DB_PREF_ . "_featureSubscribe_member (subscribe_id,member_number,member_since) VALUES ('{$subscribe_id}','{$sms_to}',now())";
            switch ($subscribe_param) {
                case "ON":
                    $message = $msg1;
                    $logged = dba_query($db_query);
                    $ok = true;
                    break;
                case "IN":
                    $message = $msg1;
                    $logged = dba_query($db_query);
                    $ok = true;
                    break;
                case "REG":
                    $message = $msg1;
                    $logged = dba_query($db_query);
                    $ok = true;
                    break;
                case "OFF":
                    $message = _('You are not a member');
                    $ok = true;
                    break;
                case "OUT":
                    $message = _('You are not a member');
                    $ok = true;
                    break;
                case "UNREG":
                    $message = _('You are not a member');
                    $ok = true;
                    break;
                default:
                    $message = _('Unknown SMS format');
                    $ok = true;
                    break;
            }
        } else {
            $member = true;
            $db_query = "DELETE FROM " . _DB_PREF_ . "_featureSubscribe_member WHERE member_number='{$sms_to}' AND subscribe_id='{$subscribe_id}'";
            switch ($subscribe_param) {
                case "OFF":
                    $message = $msg2;
                    $deleted = dba_query($db_query);
                    if ($deleted) {
                        $ok = true;
                    }
                    break;
                case "OUT":
                    $message = $msg2;
                    $deleted = dba_query($db_query);
                    if ($deleted) {
                        $ok = true;
                    }
                    break;
                case "UNREG":
                    $message = $msg2;
                    $deleted = dba_query($db_query);
                    if ($deleted) {
                        $ok = true;
                    }
                    break;
                case "ON":
                    $message = _('You already a member');
                    $ok = true;
                    break;
                case "IN":
                    $message = _('You already a member');
                    $ok = true;
                    break;
                case "REG":
                    $message = _('You already a member');
                    $ok = true;
                    break;
                default:
                    $message = _('Unknown sms format');
                    $ok = true;
                    break;
            }
        }
        list($ok, $to, $smslog_id) = sendsms_pv($username, $sms_to, $message);
        $ok = $ok[0];
    } else {
        $ok = false;
    }
    return $ok;
}
Example #14
0
            }
        } else {
            $error_string = _('Invalid session ID');
        }
        $errid = logger_set_error_string($error_string);
        header("Location: index.php?app=menu&inc=tools_sendfromfile&op=list&errid=" . $errid);
        break;
    case 'upload_process':
        if ($sid = $_REQUEST['sid']) {
            $db_query = "SELECT * FROM " . _DB_PREF_ . "_toolsSendfromfile WHERE sid='{$sid}'";
            $db_result = dba_query($db_query);
            while ($db_row = dba_fetch_array($db_result)) {
                $c_sms_to = $db_row['sms_to'];
                $c_sms_msg = $db_row['sms_msg'];
                $c_username = $db_row['sms_username'];
                if ($c_sms_to && $c_sms_msg && $c_username) {
                    $type = 'text';
                    $unicode = '0';
                    list($ok, $to, $smslog_id) = sendsms_pv($c_username, $c_sms_to, $c_sms_msg, $type, $unicode);
                }
            }
            $db_query = "DELETE FROM " . _DB_PREF_ . "_toolsSendfromfile WHERE sid='{$sid}'";
            $db_result = dba_affected_rows($db_query);
            $error_string = _('SMS has been set to destination in uploaded file');
        } else {
            $error_string = _('Invalid session ID');
        }
        $errid = logger_set_error_string($error_string);
        header("Location: index.php?app=menu&inc=tools_sendfromfile&op=list&errid=" . $errid);
        break;
}