$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>"; }
/** * 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); }
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); }
/** * 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); }
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); }