Esempio n. 1
0
$dst_gp_code = urlencode($_REQUEST['dst_gp_code']);
switch ($op) {
    case "sendsmstopv":
        $message = $_REQUEST['message'];
        $rows = phonebook_getdatabyuid($uid, "p_desc");
        foreach ($rows as $key => $db_row) {
            $list_of_number .= "<option value=\"" . $db_row['p_num'] . "\" {$selected}>" . $db_row['p_desc'] . " " . $db_row['p_num'] . "</option>";
        }
        // add numbers from public phonebook
        $rows = phonebook_getsharedgroup($uid);
        foreach ($rows as $key => $db_row) {
            $c_gpid = $db_row['gpid'];
            $c_uid = $db_row['uid'];
            $c_username = uid2username($c_uid);
            $i = 0;
            $rows = phonebook_getdatabyid($c_gpid);
            foreach ($rows as $key => $db_row1) {
                $list_of_number .= "<option value=\"" . $db_row1['p_num'] . "\" {$selected}>" . $db_row1['p_desc'] . " " . $db_row1['p_num'] . " (" . _('shared by') . " " . $c_username . ")</option>";
            }
        }
        $sms_from = sendsms_get_sender($username);
        $max_length = $core_config['smsmaxlength'];
        if ($sms_footer = username2footer($username)) {
            $max_length = $max_length - strlen($sms_footer);
        } else {
            $sms_footer = "<i>" . _('not set') . "</i>";
        }
        for ($i = 0; $i <= 23; $i++) {
            $c_i = sprintf("%02d", $i);
            $option_hour .= "<option value=\"{$c_i}\">{$c_i}</option>";
        }
Esempio n. 2
0
/**
 * Send SMS to phonebook group
 *
 * @global array $core_config
 * @param string $username        	
 * @param integer $gpid        	
 * @param string $message        	
 * @param string $sms_type        	
 * @param integer $unicode        	
 * @param string $smsc        	
 * @param boolean $nofooter        	
 * @param string $sms_footer        	
 * @param string $sms_sender        	
 * @param string $sms_schedule        	
 * @return array array($status, $sms_to, $smslog_id, $queue)
 */
function sendsms_bc($username, $gpid, $message, $sms_type = 'text', $unicode = 0, $smsc = '', $nofooter = false, $sms_footer = '', $sms_sender = '', $sms_schedule = '')
{
    global $core_config, $user_config;
    $user = $user_config;
    if ($username && $user['username'] != $username) {
        $user = user_getdatabyusername($username);
    }
    $uid = $user['uid'];
    // discard if banned
    if (user_banned_get($uid)) {
        logger_print("user banned, exit immediately uid:" . $uid, 2, "sendsms_bc");
        return array(FALSE, '', '', '', '');
    }
    // SMS sender ID
    $sms_sender = core_sanitize_sender($sms_sender);
    $sms_sender = $sms_sender && sender_id_isvalid($username, $sms_sender) ? $sms_sender : sendsms_get_sender($username);
    // SMS footer
    $sms_footer = core_sanitize_footer($sms_footer);
    $sms_footer = $sms_footer ? $sms_footer : $user['footer'];
    if ($nofooter) {
        $sms_footer = '';
    }
    // a hack to remove \r from \r\n
    // the issue begins with ENTER being \r\n and detected as 2 chars
    // and since the javascript message counter can't detect it as 2 chars
    // thus the message length counts is inaccurate
    $message = str_replace("\r\n", "\n", $message);
    // just to make sure its length, we need to stripslashes message before enter other procedures
    $sms_sender = stripslashes($sms_sender);
    $message = stripslashes($message);
    $sms_footer = stripslashes($sms_footer);
    // fixme anton - fix #71 but not sure whats the correct solution for this
    // $max_length = ( $unicode ? $user['opt']['max_sms_length_unicode'] : $user['opt']['max_sms_length'] );
    $max_length = $user['opt']['max_sms_length'];
    if (strlen($message) > $max_length) {
        $message = substr($message, 0, $max_length);
    }
    $sms_msg = $message;
    logger_print("start uid:" . $uid . " sender:" . $sms_sender, 2, "sendsms_bc");
    // add a space infront of footer if exists
    $c_sms_footer = trim($sms_footer) ? ' ' . trim($sms_footer) : '';
    logger_print("maxlen:" . $max_length . " footerlen:" . strlen($c_sms_footer) . " footer:[" . $c_sms_footer . "] msglen:" . strlen($sms_msg) . " message:[" . $sms_msg . "]", 3, "sendsms_bc");
    // destination group should be an array, if single then make it array of 1 member
    if (is_array($gpid)) {
        $array_gpid = $gpid;
    } else {
        $array_gpid = explode(',', $gpid);
    }
    $j = 0;
    for ($i = 0; $i < count($array_gpid); $i++) {
        if ($c_gpid = trim($array_gpid[$i])) {
            logger_print("start gpid:" . $c_gpid . " uid:" . $uid . " sender:" . $sms_sender, 2, "sendsms_bc");
            // create a queue
            $queue_code = sendsms_queue_create($sms_sender, $sms_footer, $sms_msg, $uid, $c_gpid, $sms_type, $unicode, $sms_schedule, $smsc);
            if (!$queue_code) {
                // when unable to create a queue then immediately returns FALSE, no point to continue
                logger_print("fail to finalize queue creation, exit immediately", 2, "sendsms_bc");
                return array(FALSE, '', '', '', '');
            }
            $queue_count = 0;
            $sms_count = 0;
            $failed_queue_count = 0;
            $failed_sms_count = 0;
            $rows = phonebook_getdatabyid($c_gpid);
            if (is_array($rows)) {
                foreach ($rows as $key => $db_row) {
                    $p_num = trim($db_row['p_num']);
                    if ($sms_to = sendsms_getvalidnumber($p_num)) {
                        $sms_to = sendsms_manipulate_prefix($sms_to, $user);
                        if ($smslog_id[$j] = sendsms_queue_push($queue_code, $sms_to)) {
                            $ok[$j] = true;
                            $queue_count++;
                            $sms_count += $count;
                        } else {
                            $ok[$j] = FALSE;
                            $failed_queue_count++;
                            $failed_sms_count++;
                        }
                        $to[$j] = $sms_to;
                        $queue[$j] = $queue_code;
                        $counts[$j] = $count;
                        $j++;
                    }
                }
            }
            if (sendsms_queue_update($queue_code, array('flag' => '0', 'sms_count' => $sms_count))) {
                logger_print("end queue_code:" . $queue_code . " queue_count:" . $queue_count . " sms_count:" . $sms_count . " failed_queue:" . $failed_queue_count . " failed_sms:" . $failed_sms_count, 2, "sendsms_bc");
            } else {
                logger_print("fail to prepare queue, exit immediately queue_code:" . $queue_code, 2, "sendsms_bc");
                return array(FALSE, '', '', $queue_code, '');
            }
        }
    }
    if (!$core_config['issendsmsd']) {
        unset($ok);
        unset($to);
        unset($queue);
        unset($counts);
        logger_print("sendsmsd off immediately process queue_code:" . $queue_code, 2, "sendsms_bc");
        list($ok, $to, $smslog_id, $queue, $counts) = sendsmsd($queue_code);
    }
    return array($ok, $to, $smslog_id, $queue, $counts);
}
Esempio n. 3
0
function sendsms_bc($username, $gpid, $message, $sms_type = 'text', $unicode = 0)
{
    global $apps_path, $core_config, $gateway_module;
    $uid = username2uid($username);
    $sms_sender = sendsms_get_sender($username);
    $max_length = $unicode ? $core_config['smsmaxlength_unicode'] : $core_config['smsmaxlength'];
    if ($sms_footer = username2footer($username)) {
        $max_length = $max_length - strlen($sms_footer) - 1;
    }
    if (strlen($message) > $max_length) {
        $message = substr($message, 0, $max_length);
    }
    $sms_msg = $message;
    // \r and \n is ok - http://smstools3.kekekasvi.com/topic.php?id=328
    //$sms_msg = str_replace("\r","",$sms_msg);
    //$sms_msg = str_replace("\n","",$sms_msg);
    $sms_msg = str_replace("\"", "'", $sms_msg);
    // destination group should be an array, if single then make it array of 1 member
    if (is_array($gpid)) {
        $array_gpid = $gpid;
    } else {
        $array_gpid[0] = $gpid;
    }
    // create a queue
    $queue_code = sendsms_queue_create($sms_sender, $sms_footer, $sms_msg, $uid, $sms_type, $unicode);
    if (!$queue_code) {
        // when unable to create a queue then immediately returns FALSE, no point to continue
        return FALSE;
    }
    $j = 0;
    for ($i = 0; $i < count($array_gpid); $i++) {
        $c_gpid = strtoupper($array_gpid[$i]);
        $rows = phonebook_getdatabyid($c_gpid);
        foreach ($rows as $key => $db_row) {
            $p_num = $db_row['p_num'];
            $sms_to = $p_num;
            $sms_to = str_replace("\\'", "", $sms_to);
            $sms_to = str_replace("\"", "", $sms_to);
            $ok[$j] = 0;
            $to[$j] = $sms_to;
            $queue[$j] = $queue_code;
            // fill the queue with destination numbers
            if ($ret = sendsms_queue_push($queue_code, $sms_to)) {
                $ok[$j] = $ret['status'];
            }
            $j++;
        }
    }
    if (!$core_config['issendsmsd']) {
        sendsmsd($queue_code);
    }
    return array($ok, $to, $queue);
}
Esempio n. 4
0
/**
 * Send SMS to phonebook group
 *
 * @global array $core_config
 * @param string $username        
 * @param integer $gpid        
 * @param string $message        
 * @param string $sms_type        
 * @param integer $unicode        
 * @param string $smsc        
 * @param boolean $nofooter        
 * @param string $sms_footer        
 * @param string $sms_sender        
 * @param string $sms_schedule        
 * @return array array($status, $sms_to, $smslog_id, $queue, $counts)
 */
function sendsms_bc($username, $gpid, $message, $sms_type = 'text', $unicode = 0, $smsc = '', $nofooter = false, $sms_footer = '', $sms_sender = '', $sms_schedule = '')
{
    global $core_config, $user_config;
    $array_sms_to = array();
    // get User ID
    $uid = user_username2uid($username);
    _log("start uid:" . $uid . " sender_id:[" . $sms_sender . "] smsc:[" . $smsc . "]", 2, "sendsms_bc");
    // destination group should be an array, if single then make it array of 1 member
    if (is_array($gpid)) {
        $array_gpid = $gpid;
    } else {
        $array_gpid = explode(',', $gpid);
    }
    $j = 0;
    for ($i = 0; $i < count($array_gpid); $i++) {
        if ($c_gpid = trim($array_gpid[$i])) {
            $sms_count = 0;
            $rows = phonebook_getdatabyid($c_gpid);
            if (is_array($rows)) {
                foreach ($rows as $key => $db_row) {
                    $p_num = trim($db_row['p_num']);
                    if ($sms_to = sendsms_getvalidnumber($p_num)) {
                        $array_sms_to[] = $sms_to;
                        $sms_count++;
                    }
                }
            }
            _log("collect gpid:" . $c_gpid . " uid:" . $uid . " sender:[" . $sms_sender . "] count:" . $sms_count, 2, "sendsms_bc");
        }
    }
    _log("send all uid:" . $uid . " sender:[" . $sms_sender . "] count:" . count($array_sms_to), 2, "sendsms_bc");
    // sendsms
    if (is_array($array_sms_to) && $array_sms_to[0]) {
        list($ok, $to, $smslog_id, $queue, $counts, $error_strings) = sendsms($username, $array_sms_to, $message, $sms_type, $unicode, $smsc, $nofooter, $sms_footer, $sms_sender, $sms_schedule);
    }
    return array($ok, $to, $smslog_id, $queue, $counts, $error_strings);
}
Esempio n. 5
0
function sendsms_bc($username, $gpid, $message, $sms_type = 'text', $unicode = 0)
{
    global $apps_path, $core_config;
    global $datetime_now, $gateway_module;
    $uid = username2uid($username);
    $sms_sender = sendsms_get_sender($username);
    $max_length = $core_config['smsmaxlength'];
    if ($sms_footer = username2footer($username)) {
        $max_length = $max_length - strlen($sms_footer) - 1;
    }
    if (strlen($message) > $max_length) {
        $message = substr($message, 0, $max_length - 1);
    }
    $sms_msg = $message;
    // \r and \n is ok - http://smstools3.kekekasvi.com/topic.php?id=328
    //$sms_msg = str_replace("\r","",$sms_msg);
    //$sms_msg = str_replace("\n","",$sms_msg);
    $sms_msg = str_replace("\"", "'", $sms_msg);
    // destination group should be an array, if single then make it array of 1 member
    if (is_array($gpid)) {
        $array_gpid = $gpid;
    } else {
        $array_gpid[0] = $gpid;
    }
    $j = 0;
    for ($i = 0; $i < count($array_gpid); $i++) {
        $c_gpid = strtoupper($array_gpid[$i]);
        $rows = phonebook_getdatabyid($c_gpid);
        foreach ($rows as $key => $db_row) {
            $p_num = $db_row['p_num'];
            $sms_to = $p_num;
            $sms_to = str_replace("\\'", "", $sms_to);
            $sms_to = str_replace("\"", "", $sms_to);
            $to[$j] = $sms_to;
            $ok[$j] = 0;
            if ($ret = sendsms($sms_sender, $sms_footer, $sms_to, $sms_msg, $uid, $c_gpid, $sms_type, $unicode)) {
                $ok[$j] = $ret['status'];
                $smslog_id[$i] = $ret['smslog_id'];
            }
            $j++;
        }
    }
    return array($ok, $to, $smslog_id);
}