Ejemplo n.º 1
0
function sms_autoreply_handle($c_uid, $sms_datetime, $sms_sender, $sms_receiver, $autoreply_id, $autoreply_keyword, $autoreply_param = '', $smsc = '', $raw_message = '')
{
    $ok = false;
    $autoreply_keyword = strtoupper(trim($autoreply_keyword));
    $autoreply_param = strtoupper(trim($autoreply_param));
    $autoreply_request = $autoreply_keyword . " " . $autoreply_param;
    $array_autoreply_request = preg_split('/[\\s]+/', $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\t\tSELECT autoreply_scenario_result FROM " . _DB_PREF_ . "_featureAutoreply_scenario \n\t\tWHERE autoreply_id='{$autoreply_id}' AND {$autoreply_scenario_param_list} 1=1";
    $db_result = dba_query($db_query);
    $db_row = dba_fetch_array($db_result);
    if ($autoreply_scenario_result = $db_row['autoreply_scenario_result']) {
        $ok = false;
        $c_username = user_uid2username($c_uid);
        $unicode = core_detect_unicode($autoreply_scenario_result);
        $autoreply_scenario_result = addslashes($autoreply_scenario_result);
        list($ok, $to, $smslog_id, $queue) = sendsms_helper($c_username, $sms_sender, $autoreply_scenario_result, 'text', $unicode, $smsc);
        $ok = $ok[0];
    }
    return $ok;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
0
function sms_custom_handle($sms_datetime, $sms_sender, $custom_keyword, $custom_param = '')
{
    global $datetime_now;
    $ok = false;
    $db_query = "SELECT custom_url 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);
    $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);
    $connection = fsockopen($url['host'], $url['port'], $error_number, $error_description, 60);
    if ($connection) {
        socket_set_blocking($connection, false);
        fputs($connection, "GET {$custom_url} HTTP/1.0\r\n\r\n");
        $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;
}
Ejemplo n.º 4
0
function gw_set_delivery_status($gp_code = "", $uid = "", $smslog_id = "", $p_datetime = "", $p_update = "")
{
    // global $uplink_param;
    // p_status :
    // 0 = pending
    // 1 = delivered
    // 2 = failed
    // setsmsdeliverystatus($smslog_id,$uid,$p_status);
    global $uplink_param;
    $db_query = "SELECT * FROM phpgw_sms_gwmodUplink WHERE up_status='0' AND up_local_slid='{$smslog_id}'";
    $db_result = dba_query($db_query);
    while ($db_row = dba_fetch_array($db_result)) {
        $local_slid = $db_row[up_local_slid];
        $remote_slid = $db_row[up_remote_slid];
        $query_string = "ws.php?u=" . $uplink_param[username] . "&p=" . $uplink_param[password] . "&ta=ds&slid=" . $remote_slid;
        $url = $uplink_param[master] . "/" . $query_string;
        $response = @implode('', file($url));
        switch ($response) {
            case "1":
                $p_status = 1;
                setsmsdeliverystatus($local_slid, $uid, $p_status);
                $db_query1 = "UPDATE phpgw_sms_gwmodUplink SET up_status='1' WHERE up_remote_slid='{$remote_slid}'";
                $db_result1 = dba_query($db_query1);
                break;
            case "2":
            case "ERR 400":
                $p_status = 2;
                setsmsdeliverystatus($local_slid, $uid, $p_status);
                $db_query1 = "UPDATE phpgw_sms_gwmodUplink SET up_status='2' WHERE up_remote_slid='{$remote_slid}'";
                $db_result1 = dba_query($db_query1);
                break;
        }
    }
}
Ejemplo n.º 5
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);
        }
    }
}
Ejemplo n.º 6
0
function outgoing_prefix2smsc($prefix, $uid = 0)
{
    $prefix = (string) substr($prefix, 0, 8);
    $uid = (int) $uid ? (int) $uid : 0;
    $db_query = "SELECT smsc FROM " . _DB_PREF_ . "_featureOutgoing WHERE prefix='{$prefix}' AND uid='{$uid}'";
    $db_result = dba_query($db_query);
    while ($db_row = dba_fetch_array($db_result)) {
        $smsc[] = $db_row['smsc'];
    }
    // _log('prefix: ' . $prefix . ' uid:' . $uid . ' debug:' . print_r($smsc, 1), 3, 'outgoing_hook_sendsms_intercept');
    return $smsc;
}
Ejemplo n.º 7
0
function msgtemplate_hook_sendsms_get_template()
{
    $ret = array();
    $db_query = "SELECT * FROM " . _DB_PREF_ . "_featureMsgtemplate WHERE uid='" . $_SESSION['uid'] . "' ORDER BY t_title ASC";
    $db_result = dba_query($db_query);
    $i = 0;
    while ($db_row = dba_fetch_array($db_result)) {
        $ret[$i]['text'] = $db_row['t_text'];
        $ret[$i]['title'] = $db_row['t_title'];
        $i++;
    }
    return $ret;
}
Ejemplo n.º 8
0
function autorespond_hook_recvsms_intercept_after($sms_datetime, $sms_sender, $message, $sms_receiver, $feature, $status, $uid, $smsc)
{
    $ret = array();
    $hooked = FALSE;
    // process only when the previous feature is not 'incoming'
    if ($feature != 'incoming' && $status) {
        return $ret;
    }
    if ($message) {
        $db_query = "SELECT * FROM " . _DB_PREF_ . "_featureAutorespond WHERE flag_deleted='0'";
        $db_result = dba_query($db_query);
        while ($db_row = dba_fetch_array($db_result)) {
            $continue = TRUE;
            // only check sms receiver if set
            if ($db_row['sms_receiver']) {
                if ($sms_receiver != $db_row['sms_receiver']) {
                    $continue = FALSE;
                }
            }
            if ($continue) {
                // match SMS with regex
                if (preg_match($db_row['regex'], $message)) {
                    // match found, send respond
                    $c_uid = $db_row['uid'];
                    $c_username = user_uid2username($c_uid);
                    $c_message = $db_row['message'];
                    if (core_detect_unicode($c_message)) {
                        $unicode = 1;
                    }
                    $smsc = gateway_decide_smsc($smsc, $db_row['smsc']);
                    _log("match found dt:" . $sms_datetime . " s:" . $sms_sender . " r:" . $sms_receiver . " uid:" . $c_uid . " username:"******" service:[" . $db_row['service_name'] . "] regex:[" . $db_row['regex'] . "] m:[" . $message . "] smsc:" . $smsc, 3, "autorespond");
                    sendsms_helper($c_username, $sms_sender, $c_message, 'text', $unicode, $smsc);
                    // log it
                    $hooked = TRUE;
                    // found then stop
                    break;
                }
            }
        }
    }
    if ($c_uid && $hooked) {
        _log("hooked dt:" . $sms_datetime . " s:" . $sms_sender . " r:" . $sms_receiver . " uid:" . $c_uid . " username:"******" service:[" . $db_row['service_name'] . "] regex:[" . $db_row['regex'] . "] m:[" . $message . "] smsc:" . $smsc, 3, "autorespond");
        $ret['modified'] = TRUE;
        $ret['param']['feature'] = 'autorespond';
        $ret['param']['status'] = 1;
        $ret['uid'] = $c_uid;
        $ret['hooked'] = $hooked;
    }
    return $ret;
}
Ejemplo n.º 9
0
function logger_get_error_string($id, $nodel = false)
{
    $ret_string = "";
    $db_query = "SELECT error_string FROM " . _DB_PREF_ . "_tblErrorString WHERE id='{$id}'";
    $db_result = dba_query($db_query);
    if ($db_row = dba_fetch_array($db_result)) {
        $ret_string = $db_row['error_string'];
        if (!$nodel) {
            $db_query = "DELETE FROM " . _DB_PREF_ . "_tblErrorString WHERE id='{$id}'";
            $db_result = @dba_affected_rows($db_query);
        }
    }
    return $ret_string;
}
Ejemplo n.º 10
0
function queuelog_countall()
{
    global $user_config;
    $ret = 0;
    if ($user_config['status'] != 2) {
        $user_query = "AND uid='" . $user_config['uid'] . "'";
    }
    $db_query = "SELECT count(*) AS count FROM " . _DB_PREF_ . "_tblSMSOutgoing_queue WHERE (flag='0' OR flag='3') " . $user_query;
    $db_result = dba_query($db_query);
    if ($db_row = dba_fetch_array($db_result)) {
        $ret = $db_row['count'];
    }
    return $ret;
}
Ejemplo n.º 11
0
function simplebilling_hook_billing_getdata($smslog_id)
{
    $ret = array();
    logger_print("smslog_id:" . $smslog_id, 3, "simplebilling getdata");
    $db_query = "SELECT id,rate,credit,status FROM " . _DB_PREF_ . "_tblBilling WHERE smslog_id='{$smslog_id}'";
    $db_result = dba_query($db_query);
    if ($db_row = dba_fetch_array($db_result)) {
        $id = $db_row['id'];
        $post_datetime = $db_row['post_datetime'];
        $rate = $db_row['rate'];
        $credit = $db_row['credit'];
        $status = $db_row['status'];
        $ret = array('id' => $id, 'smslog_id' => $smslog_id, 'post_datetime' => $post_datetime, 'status' => $status, 'rate' => $rate, 'credit' => $credit);
    }
    return $ret;
}
Ejemplo n.º 12
0
function getsmsstatus()
{
    $smsc = core_smsc_get();
    $smsc_data = gateway_get_smscbyname($smsc);
    $gateway = $smsc_data['gateway'];
    $db_query = "SELECT * FROM " . _DB_PREF_ . "_tblSMSOutgoing WHERE p_status='0' AND p_gateway='{$smsc}'";
    $db_result = dba_query($db_query);
    while ($db_row = dba_fetch_array($db_result)) {
        $uid = $db_row['uid'];
        $smslog_id = $db_row['smslog_id'];
        $p_datetime = $db_row['p_datetime'];
        $p_update = $db_row['p_update'];
        $gpid = $db_row['p_gpid'];
        core_hook($gateway, 'getsmsstatus', array($gpid, $uid, $smslog_id, $p_datetime, $p_update));
    }
}
Ejemplo n.º 13
0
/**
 * Set the language for the user, if it's no defined just leave it with the default
 * @param string $var_username Username
 * @return boolean TRUE if valid
 */
function setuserlang($username = "")
{
    global $language_module;
    $db_query = "SELECT `language_module` FROM " . _DB_PREF_ . "_tblUser WHERE username='******'";
    $db_result = dba_query($db_query);
    $db_row = dba_fetch_array($db_result);
    if (isset($db_row['language_module'])) {
        $language_module = $db_row['language_module'];
    }
    if (defined('LC_MESSAGES')) {
        // linux
        setlocale(LC_MESSAGES, $language_module, $language_module . '.utf8', $language_module . '.utf-8', $language_module . '.UTF8', $language_module . '.UTF-8');
    } else {
        // windows
        putenv("LC_ALL={$language_module}");
    }
}
Ejemplo n.º 14
0
/**
 * Set the language for the user, if it's no defined just leave it with the default
 * @param string $var_username Username
 * @return boolean TRUE if valid
 */
function core_setuserlang($username = "")
{
    global $core_config;
    $c_lang_module = core_lang_get();
    $db_query = "SELECT language_module FROM " . _DB_PREF_ . "_tblUser WHERE username='******'";
    $db_result = dba_query($db_query);
    $db_row = dba_fetch_array($db_result);
    if (trim($db_row['language_module'])) {
        $c_lang_module = $db_row['language_module'];
    }
    if (defined('LC_MESSAGES')) {
        // linux
        setlocale(LC_MESSAGES, $c_lang_module, $c_lang_module . '.utf8', $c_lang_module . '.utf-8', $c_lang_module . '.UTF8', $c_lang_module . '.UTF-8');
    } else {
        // windows
        putenv('LC_ALL={' . $c_lang_module . '}');
    }
}
Ejemplo n.º 15
0
function simplebilling_hook_billing_getdata_by_uid($uid)
{
    $ret = array();
    // logger_print("uid:".$uid, 2, "simplebilling summary");
    $db_query = "SELECT * FROM " . _DB_PREF_ . "_tblBilling AS A, " . _DB_PREF_ . "_tblUser AS B, " . _DB_PREF_ . "_tblSMSOutgoing AS C " . "WHERE B.flag_deleted='0' AND A.smslog_id=C.smslog_id AND B.uid=C.uid AND A.status='1' AND B.uid='{$uid}'";
    $db_result = dba_query($db_query);
    while ($db_row = dba_fetch_array($db_result)) {
        $id = $db_row['id'];
        $smslog_id = $db_row['smslog_id'];
        $post_datetime = $db_row['post_datetime'];
        $rate = $db_row['rate'];
        $credit = $db_row['credit'];
        $count = $db_row['count'];
        $charge = $db_row['charge'];
        $ret[] = array('id' => $id, 'smslog_id' => $smslog_id, 'post_datetime' => $post_datetime, 'rate' => $rate, 'credit' => $credit, 'count' => $count, 'charge' => $charge);
    }
    return $ret;
}
Ejemplo n.º 16
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;
                }
            }
            $ret = sendsms($core_config['main']['cfg_gateway_number'], '', $sms_to, $message, $c_uid, 0, 'text', $unicode);
            // $ok = $ok[0];
            $ok = $ret['status'];
        }
    } 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;
}
Ejemplo n.º 17
0
function sms_quiz_hook_recvsms_process($sms_datetime, $sms_sender, $quiz_keyword, $quiz_param = '', $sms_receiver = '', $smsc = '', $raw_message = '')
{
    $ok = false;
    $db_query = "SELECT * FROM " . _DB_PREF_ . "_featureQuiz WHERE quiz_keyword='{$quiz_keyword}'";
    $db_result = dba_query($db_query);
    if ($db_row = dba_fetch_array($db_result)) {
        if ($db_row['uid'] && $db_row['quiz_enable']) {
            $smsc = gateway_decide_smsc($smsc, $db_row['smsc']);
            logger_print('begin k:' . $quiz_keyword . ' c:' . $quiz_param, 2, 'sms_quiz');
            if (sms_quiz_handle($db_row, $sms_datetime, $sms_sender, $quiz_keyword, $quiz_param, $sms_receiver, $smsc, $raw_message)) {
                $ok = true;
            }
            $status = $ok ? 'handled' : 'unhandled';
            logger_print('end k:' . $quiz_keyword . ' c:' . $quiz_param . ' s:' . $status, 2, 'sms_quiz');
        }
    }
    $ret['uid'] = $db_row['uid'];
    $ret['status'] = $ok;
    return $ret;
}
Ejemplo n.º 18
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;
}
Ejemplo n.º 19
0
function webservices_ds_count($c_username, $c = 100, $last = false)
{
    $ret = "ERR 101";
    $uid = username2uid($c_username);
    if ($c) {
        $query_limit = " LIMIT 0,{$c}";
    } else {
        $query_limit = " LIMIT 0,100";
    }
    if ($last) {
        $query_last = "AND smslog_id>{$last}";
    }
    $content_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
    $content_csv = "";
    $db_query = "SELECT * FROM " . _DB_PREF_ . "_tblSMSOutgoing WHERE uid='{$uid}' {$query_last} ORDER BY p_datetime DESC {$query_limit}";
    $db_result = dba_query($db_query);
    while ($db_row = dba_fetch_array($db_result)) {
        $smslog_id = $db_row['smslog_id'];
        $p_src = $db_row['p_src'];
        $p_dst = $db_row['p_dst'];
        $p_datetime = $db_row['p_datetime'];
        $p_update = $db_row['p_update'];
        $p_status = $db_row['p_status'];
        $content_xml .= "<ds id=\"" . $smslog_id . "\" src=\"" . $p_src . "\" dst=\"" . $p_dst . "\" datetime=\"" . $p_datetime . "\" update=\"" . $p_update . "\" status=\"" . $p_status . "\"></ds>\n";
        $content_csv .= "\"{$smslog_id}\";\"{$p_src}\";\"{$p_dst}\";\"{$p_datetime}\";\"{$p_update}\";\"{$p_status}\";\n";
    }
    // if DS available by checking content_csv
    if ($content_csv) {
        if ($form == "XML") {
            header("Content-Type: text/xml");
            $ret = $content_xml;
        } else {
            $ret = $content_csv;
        }
    } else {
        $ret = "ERR 400";
    }
    return $ret;
}
Ejemplo n.º 20
0
function sms_custom_handle($c_uid, $sms_datetime, $sms_sender, $sms_receiver, $custom_keyword, $custom_param = '', $smsc = '', $raw_message = '')
{
    $ok = false;
    $custom_keyword = strtoupper(trim($custom_keyword));
    $custom_param = trim($custom_param);
    $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'];
    $username = user_uid2username($db_row['uid']);
    $custom_return_as_reply = $db_row['custom_return_as_reply'];
    if ($custom_keyword && $custom_url && $username) {
        $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);
        $custom_url = str_replace("{CUSTOMRAW}", urlencode($raw_message), $custom_url);
        logger_print("custom_url:" . $custom_url, 3, "sms custom");
        $parsed_url = parse_url($custom_url);
        $opts = array('http' => array('method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'content' => $parsed_url['query']));
        $context = stream_context_create($opts);
        $server_url = explode('?', $custom_url);
        $returns = file_get_contents($server_url[0], false, $context);
        if ($custom_return_as_reply == 1) {
            if ($returns = trim($returns)) {
                $unicode = core_detect_unicode($returns);
                $returns = addslashes($returns);
                logger_print("returns:" . $returns, 3, "sms custom");
                sendsms_helper($username, $sms_sender, $returns, 'text', $unicode, $smsc);
            } else {
                logger_print("returns empty", 3, "sms custom");
            }
        }
        $ok = true;
    }
    return $ok;
}
Ejemplo n.º 21
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;
}
Ejemplo n.º 22
0
function uplink_hook_getsmsstatus($gpid = 0, $uid = "", $smslog_id = "", $p_datetime = "", $p_update = "")
{
    // global $plugin_config;
    // p_status :
    // 0 = pending
    // 1 = delivered
    // 2 = failed
    // dlr($smslog_id,$uid,$p_status);
    global $plugin_config;
    $db_query = "SELECT * FROM " . _DB_PREF_ . "_gatewayUplink WHERE up_local_smslog_id='{$smslog_id}'";
    $db_result = dba_query($db_query);
    if ($db_row = dba_fetch_array($db_result)) {
        $local_smslog_id = $db_row['up_local_smslog_id'];
        $remote_smslog_id = $db_row['up_remote_smslog_id'];
        $remote_queue_code = $db_row['up_remote_queue_code'];
        $dst = $db_row['up_dst'];
        if ($local_smslog_id && ($remote_smslog_id || $remote_queue_code && $dst)) {
            $ws = new Playsms\Webservices();
            $ws->url = $plugin_config['uplink']['master'] . '/index.php?app=ws';
            $ws->username = $plugin_config['uplink']['username'];
            $ws->token = $plugin_config['uplink']['token'];
            $ws->smslog_id = $remote_smslog_id;
            $ws->queue = $remote_queue_code;
            $ws->count = 1;
            $ws->getOutgoing();
            // _log('url:'.$ws->getWebservicesUrl(), 3, 'uplink getsmsstatus');
            $response = $ws->getData()->data[0];
            if ($response->status == 2) {
                $p_status = 2;
                dlr($local_smslog_id, $uid, $p_status);
            } else {
                if ($p_status = (int) $response->status) {
                    dlr($local_smslog_id, $uid, $p_status);
                }
            }
        }
    }
}
Ejemplo n.º 23
0
function sms_command_handle($c_uid, $sms_datetime, $sms_sender, $sms_receiver, $command_keyword, $command_param = '', $smsc = '', $raw_message = '')
{
    global $plugin_config;
    $ok = false;
    $command_keyword = strtoupper(trim($command_keyword));
    $command_param = trim($command_param);
    $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'];
    $command_return_as_reply = $db_row['command_return_as_reply'];
    $username = user_uid2username($db_row['uid']);
    if ($command_keyword && $command_exec && $username) {
        $sms_datetime = core_display_datetime($sms_datetime);
        $command_exec = str_replace("{SMSDATETIME}", "\"{$sms_datetime}\"", $command_exec);
        $command_exec = str_replace("{SMSSENDER}", escapeshellarg($sms_sender), $command_exec);
        $command_exec = str_replace("{COMMANDKEYWORD}", escapeshellarg($command_keyword), $command_exec);
        $command_exec = str_replace("{COMMANDPARAM}", escapeshellarg($command_param), $command_exec);
        $command_exec = str_replace("{COMMANDRAW}", escapeshellarg($raw_message), $command_exec);
        $command_exec = str_replace("/", "", $command_exec);
        $command_exec = $plugin_config['sms_command']['bin'] . "/" . $db_row['uid'] . "/" . $command_exec;
        $command_exec = escapeshellcmd($command_exec);
        logger_print("command_exec:" . addslashes($command_exec), 3, "sms command");
        $command_output = shell_exec($command_exec);
        if ($command_return_as_reply == 1) {
            $unicode = core_detect_unicode($command_output);
            if ($command_output = addslashes(trim($command_output))) {
                logger_print("command_output:" . $command_output, 3, "sms command");
                sendsms_helper($username, $sms_sender, $command_output, 'text', $unicode, $smsc);
            } else {
                logger_print("command_output is empty", 3, "sms command");
            }
        }
        $ok = true;
    }
    return $ok;
}
Ejemplo n.º 24
0
/**
 * Process register an account
 *
 */
function auth_register()
{
    global $core_config;
    $ok = false;
    if ($core_config['main']['cfg_enable_register']) {
        $username = trim($_REQUEST['username']);
        $email = trim($_REQUEST['email']);
        $name = trim($_REQUEST['name']);
        $mobile = trim($_REQUEST['mobile']);
        $error_string = _('Fail to register an account');
        if ($username && $email && $name && $mobile) {
            $db_query = "SELECT * FROM " . _DB_PREF_ . "_tblUser WHERE username='******'";
            $db_result = dba_query($db_query);
            if ($db_row = dba_fetch_array($db_result)) {
                $error_string = _('User is already exists') . " (" . _('username') . ": `" . $username . "`)";
            } else {
                $password = substr(md5(time()), 0, 6);
                $sender = ' - ' . $username;
                if (ereg("^(.+)(.+)\\.(.+)\$", $email, $arr)) {
                    // by default the status is 3 (normal user)
                    $db_query = "\n\t\t\tINSERT INTO " . _DB_PREF_ . "_tblUser (status,username,password,name,mobile,email,sender,credit)\n\t\t\tVALUES ('3','{$username}','{$password}','{$name}','{$mobile}','{$email}','{$sender}','" . $core_config['main']['cfg_default_credit'] . "')\n\t\t    ";
                    if ($new_uid = @dba_insert_id($db_query)) {
                        $ok = true;
                    }
                }
            }
            if ($ok) {
                logger_print("u:" . $username . " email:" . $email . " ip:" . $_SERVER['REMOTE_ADDR'], 3, "register");
                $subject = "[SMSGW] " . _('New account registration');
                $body = $core_config['main']['cfg_web_title'] . "\n";
                $body .= $core_config['http_path']['base'] . "\n\n";
                $body .= _('Username') . "\t: {$username}\n";
                $body .= _('Password') . "\t: {$password}\n\n";
                $body .= $core_config['main']['cfg_email_footer'] . "\n\n";
                $error_string = _('User has been added') . " (" . _('username') . ": `" . $username . "`)";
                $error_string .= "<br />";
                if (sendmail($core_config['main']['cfg_email_service'], $email, $subject, $body)) {
                    $error_string .= _('Password has been sent to your email');
                } else {
                    $error_string .= _('Fail to send email');
                }
            }
        }
    } else {
        $error_string = _('Public registration disabled');
    }
    $errid = logger_set_error_string($error_string);
    header("Location: " . $core_config['http_path']['base'] . "?errid=" . $errid);
    exit;
}
Ejemplo n.º 25
0
 }
 $line_per_page = 50;
 $max_nav = 15;
 $db_query = "SELECT count(*) as count FROM " . _DB_PREF_ . "_tblSMSOutgoing WHERE flag_deleted='0'";
 $db_result = dba_query($db_query);
 $db_row = dba_fetch_array($db_result);
 $num_rows = $db_row['count'];
 $pages = ceil($num_rows / $line_per_page);
 $nav_pages = themes_navbar($pages, $nav, $max_nav, "index.php?app=menu&inc=all_outgoing&op=all_outgoing", $page);
 $limit = ($page - 1) * $line_per_page;
 $content = "\n\t    <h2>" . _('All outgoing SMS') . "</h2>\n\t    <p>{$nav_pages}</p>\n\t    <form name=\"fm_outgoing\" action=\"index.php?app=menu&inc=all_outgoing&op=act_del\" method=post onSubmit=\"return SureConfirm()\">\n\t    <table width=100% cellpadding=1 cellspacing=2 border=0 class=\"sortable\">\n        <thead>\n\t    <tr>\n\t      <th align=center width=4>*</th>\n\t      <th align=center width=10%>" . _('User') . "</th>\n\t      <th align=center width=20%>" . _('Time') . "</th>\n\t      <th align=center width=10%>" . _('Gateway') . "</th>\n\t      <th align=center width=10%>" . _('Receiver') . "</th>\n\t      <th align=center width=40%>" . _('Message') . "</th>\n\t      <th align=center width=10%>" . _('Status') . "</th>\n\t      <th align=center width=4>" . _('Group') . "</th>\n\t      <th align=center width=4 class=\"sorttable_nosort\">" . _('Action') . "</th>\n\t      <th width=4 class=\"sorttable_nosort\"><input type=checkbox onclick=CheckUncheckAll(document.fm_outgoing)></td>\n\t    </tr>\n        </thead>\n        <tbody>\n\t";
 $db_query = "SELECT * FROM " . _DB_PREF_ . "_tblSMSOutgoing WHERE flag_deleted='0' ORDER BY smslog_id DESC LIMIT {$limit},{$line_per_page}";
 $db_result = dba_query($db_query);
 $i = $num_rows - $line_per_page * ($page - 1) + 1;
 $j = 0;
 while ($db_row = dba_fetch_array($db_result)) {
     $j++;
     $current_slid = $db_row['smslog_id'];
     $p_username = uid2username($db_row['uid']);
     $p_dst = $db_row['p_dst'];
     $p_desc = phonebook_number2name($p_dst);
     $current_p_dst = $p_dst;
     if ($p_desc) {
         $current_p_dst = "{$p_dst}<br>({$p_desc})";
     }
     $hide_p_dst = $p_dst;
     if ($p_desc) {
         $hide_p_dst = "{$p_dst} ({$p_desc})";
     }
     $p_sms_type = $db_row['p_sms_type'];
     $hide_p_dst = str_replace("\\'", "", $hide_p_dst);
Ejemplo n.º 26
0
function phonebook_hook_phonebook_search_group($uid, $keyword = "", $count = 0)
{
    $ret = array();
    $db_query = "\n\t\tSELECT DISTINCT id AS gpid, name AS group_name, code, flag_sender\n\t\tFROM " . _DB_PREF_ . "_featurePhonebook_group\n\t\tWHERE (\n\t\t\tuid='{$uid}' OR\n\t\t\tid in (\n\t\t\t\tSELECT B.id AS id FROM " . _DB_PREF_ . "_featurePhonebook AS A\n\t\t\t\tLEFT JOIN " . _DB_PREF_ . "_featurePhonebook_group_contacts AS C ON A.id=C.pid\n\t\t\t\tLEFT JOIN " . _DB_PREF_ . "_featurePhonebook_group AS B ON B.id=C.gpid\n\t\t\t\tWHERE A.mobile='" . user_getfieldbyuid($uid, 'mobile') . "' AND B.flag_sender='1'\n\t\t\t) OR (\n\t\t\tuid <>'{$uid}' AND flag_sender>'1'\n\t\t\t)\n\t\t)";
    if ($keyword) {
        $db_query .= " AND (\n\t\t\t\t\tname LIKE '%" . $keyword . "%' OR\n\t\t\t\t\tcode LIKE '%" . $keyword . "%'\n\t\t\t\t\t)";
    }
    if ($count > 0) {
        $db_query .= " LIMIT " . $count;
    }
    $db_result = dba_query($db_query);
    while ($db_row = dba_fetch_array($db_result)) {
        $ret[] = $db_row;
    }
    return $ret;
}
Ejemplo n.º 27
0
     break;
 case "sms_autosend_status":
     $autosend_id = $_REQUEST['autosend_id'];
     $ps = $_REQUEST['ps'];
     $db_query = "UPDATE " . _DB_PREF_ . "_featureAutosend SET c_timestamp='" . mktime() . "',autosend_enable='{$ps}' WHERE autosend_id='{$autosend_id}'";
     $db_result = @dba_affected_rows($db_query);
     if ($db_result > 0) {
         $error_string = _('SMS autosend status has been changed');
     }
     header("Location: index.php?app=menu&inc=feature_sms_autosend&op=sms_autosend_edit&autosend_id={$autosend_id}&err=" . urlencode($error_string));
     break;
 case "sms_autosend_del":
     $autosend_id = $_REQUEST['autosend_id'];
     $db_query = "SELECT autosend_id FROM " . _DB_PREF_ . "_featureAutosend WHERE autosend_id='{$autosend_id}'";
     $db_result = dba_query($db_query);
     $db_row = dba_fetch_array($db_result);
     $autosend_id = $db_row['autosend_id'];
     if ($autosend_id) {
         $db_query = "DELETE FROM " . _DB_PREF_ . "_featureAutosend WHERE autosend_id='{$autosend_id}'";
         if (@dba_affected_rows($db_query)) {
             $db_query = "DELETE FROM " . _DB_PREF_ . "_featureAutosend_time WHERE  autosend_id='{$autosend_id}'";
             if ($db_result = dba_affected_rows($db_query)) {
                 $error_string = _('SMS autosend has been deleted');
             }
         }
     }
     header("Location: index.php?app=menu&inc=feature_sms_autosend&op=sms_autosend_list&err=" . urlencode($error_string));
     break;
 case "sms_autosend_add":
     if ($err) {
         $content = "<div class=error_string>{$err}</div>";
Ejemplo n.º 28
0
function credit_hook_rate_getusercredit($username)
{
    $balance = 0;
    if ($username) {
        $db_query = "SELECT credit FROM " . _DB_PREF_ . "_tblUser WHERE username='******'";
        $db_result = dba_query($db_query);
        $db_row = dba_fetch_array($db_result);
        $balance = $db_row['credit'];
    }
    $balance = (double) ($balance ? $balance : 0);
    $balance = number_format($balance, 3, '.', '');
    return $balance;
}
Ejemplo n.º 29
0
/**
 * Get SMS data from $smslog_id
 *
 * @param integer $smslog_id        	
 * @return array
 */
function sendsms_get_sms($smslog_id)
{
    $data = array();
    $db_query = "SELECT * FROM " . _DB_PREF_ . "_tblSMSOutgoing WHERE smslog_id='{$smslog_id}'";
    $db_result = dba_query($db_query);
    if ($db_row = dba_fetch_array($db_result)) {
        $data = $db_row;
    }
    return $data;
}
Ejemplo n.º 30
0
 * along with playSMS. If not, see <http://www.gnu.org/licenses/>.
 */
defined('_SECURE_') or die('Forbidden');
if (!auth_isadmin()) {
    auth_block();
}
$tpl = array('name' => 'report_admin', 'vars' => array('Report' => _('Report'), 'All reports' => _('All reports'), 'User' => _('User'), 'Pending' => _('Pending'), 'Sent' => _('Sent'), 'Delivered' => _('Delivered'), 'Failed' => _('Failed'), 'Billing' => _('Billing'), 'Credit' => _('Credit')));
// p_status values mapped to tpl array elements
$map_values = array('0' => 'num_rows_pending', '1' => 'num_rows_sent', '2' => 'num_rows_failed', '3' => 'num_rows_delivered');
$l = 0;
// USER LIST RESTRIVAL
$rows = dba_search(_DB_PREF_ . '_tblUser', 'username, uid, credit, status, 0 as num_rows_pending, 0 as num_rows_sent, 0 as num_rows_delivered, 0 as num_rows_failed', '', '', array('ORDER BY' => 'status'));
// populate array with the values from the mysql query
$db_query = "SELECT uid, flag_deleted, p_status, COUNT(*) AS count from " . _DB_PREF_ . "_tblSMSOutgoing GROUP BY uid, flag_deleted, p_status";
$db_result = dba_query($db_query);
for ($iset = array(); $irow = dba_fetch_array($db_result); $iset[] = $irow) {
}
// update the rows array with values from the iset array
for ($i = 0; $i < count($iset); $i++) {
    $c = 0;
    // find the array key to update based on uid
    for ($ii = 0; $ii < count($rows); ++$ii) {
        if ($rows[$ii]['uid'] === $iset[$i]['uid']) {
            $array_key = $ii;
            break;
        }
    }
    /*
     * update values of pending, sent, delivered, failed and deleted messages. might be better to update the billing and credit from the last mysql query as well to avoid any incorrect values because of delays between the first and the second query on busy or overloaded systems
     */
    if ($iset[$i]['flag_deleted'] == 0) {