function inboxgroup_forwardcatchall($data, $log_in_id, $sms_sender, $message) { global $core_config; logger_print("forwardcatchall id:" . $data['id'] . " s:" . $sms_sender . " r:" . $data['in_receiver'] . " m:" . $message, 3, "inboxgroup"); if ($username = uid2username($data['uid'])) { $users = inboxgroup_getcatchall($data['id']); $continue = false; if ($data['exclusive']) { for ($i = 0; $i < count($users); $i++) { if ($sms_sender == $users[$i]['mobile']) { $continue = true; } } } else { $continue = true; } if ($continue) { for ($i = 0; $i < count($users); $i++) { if (($sms_to = $users[$i]['mobile']) && $sms_to != $sms_sender) { //list($ok, $to, $smslog_id) = sendsms_pv($username, $sms_to, $message, 'text', 0); //logger_print("forwardcatchall sendsms smslog_id:".$smslog_id[0]." to:".$sms_to, 3, "inboxgroup"); //inboxgroup_saveoutlog($log_in_id, $smslog_id[0], 1, $users[$i]['uid']); $c_username = uid2username($users[$i]['uid']); insertsmstoinbox($core_config['datetime']['now'], $sms_sender, $c_username, $message, $data['in_receiver']); } } } } }
function setsmsincomingaction($sms_datetime, $sms_sender, $message, $sms_receiver = "") { global $gateway_module, $core_config; // make sure sms_datetime is in supported format and in GMT+0 $sms_datetime = core_adjust_datetime($sms_datetime); // incoming sms will be handled by plugin/tools/* first $ret_intercept = interceptincomingsms($sms_datetime, $sms_sender, $message, $sms_receiver); if ($ret_intercept['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; $message = $ret_intercept['param']['message'] ? $ret_intercept['param']['message'] : $message; $sms_receiver = $ret_intercept['param']['sms_receiver'] ? $ret_intercept['param']['sms_receiver'] : $sms_receiver; } // if hooked function returns cancel=true then stop the processing incoming sms, return false if ($ret_intercept['cancel']) { logger_print("cancelled datetime:" . $sms_datetime . " sender:" . $sms_sender . " receiver:" . $sms_receiver . " message:" . $message, 3, "setsmsincomingaction"); return false; } $c_uid = 0; $c_feature = ""; $ok = false; $array_target_keyword = explode(" ", $message); $target_keyword = strtoupper(trim($array_target_keyword[0])); $message_full = $message; $message = $array_target_keyword[1]; for ($i = 2; $i < count($array_target_keyword); $i++) { $message .= " " . $array_target_keyword[$i]; } switch ($target_keyword) { case "BC": $c_uid = mobile2uid($sms_sender); $c_username = uid2username($c_uid); $c_feature = 'core'; $array_target_group = explode(" ", $message); $target_group = strtoupper(trim($array_target_group[0])); $c_gpid = phonebook_groupcode2id($c_uid, $target_group); $message = $array_target_group[1]; for ($i = 2; $i < count($array_target_group); $i++) { $message .= " " . $array_target_group[$i]; } logger_print("username:"******" gpid:" . $c_gpid . " sender:" . $sms_sender . " receiver:" . $sms_receiver . " message:" . $message, 3, "setsmsincomingaction bc"); list($ok, $to, $queue) = sendsms_bc($c_username, $c_gpid, $message); $ok = true; break; case "PV": $c_feature = 'core'; $array_target_user = explode(" ", $message); $target_user = strtoupper(trim($array_target_user[0])); $c_uid = username2uid($target_user); $message = $array_target_user[1]; for ($i = 2; $i < count($array_target_user); $i++) { $message .= " " . $array_target_user[$i]; } logger_print("datetime:" . $sms_datetime . " sender:" . $sms_sender . " receiver:" . $sms_receiver . " target:" . $target_user . " message:" . $message, 3, "setsmsincomingaction pv"); if (insertsmstoinbox($sms_datetime, $sms_sender, $target_user, $message, $sms_receiver)) { $ok = true; } break; default: for ($c = 0; $c < count($core_config['featurelist']); $c++) { $c_feature = $core_config['featurelist'][$c]; $ret = x_hook($c_feature, 'setsmsincomingaction', array($sms_datetime, $sms_sender, $target_keyword, $message, $sms_receiver)); if ($ok = $ret['status']) { $c_uid = $ret['uid']; logger_print("feature:" . $c_feature . " datetime:" . $sms_datetime . " sender:" . $sms_sender . " receiver:" . $sms_receiver . " keyword:" . $target_keyword . " message:" . $message, 3, "setsmsincomingaction"); break; } } } $c_status = $ok ? 1 : 0; if ($c_status == 0) { $c_feature = ''; $target_keyword = ''; $message = $message_full; // from interceptincomingsms(), force status as 'handled' if ($ret_intercept['hooked']) { $c_status = 1; logger_print("intercepted datetime:" . $sms_datetime . " sender:" . $sms_sender . " receiver:" . $sms_receiver . " message:" . $message, 3, "setsmsincomingaction"); } else { logger_print("unhandled datetime:" . $sms_datetime . " sender:" . $sms_sender . " receiver:" . $sms_receiver . " message:" . $message, 3, "setsmsincomingaction"); } } $db_query = "\n INSERT INTO " . _DB_PREF_ . "_tblSMSIncoming \n (in_uid,in_feature,in_gateway,in_sender,in_receiver,in_keyword,in_message,in_datetime,in_status)\n VALUES\n ('{$c_uid}','{$c_feature}','{$gateway_module}','{$sms_sender}','{$sms_receiver}','{$target_keyword}','{$message}','{$sms_datetime}','{$c_status}')\n "; $db_result = dba_query($db_query); return $ok; }
function setsmsincomingaction($sms_datetime, $sms_sender, $message) { global $system_from; $ok = false; $keywords = explode(' ', $message); $target_code = strtoupper($keywords[0]); switch ($target_code) { case 'BC': $array_target_group = explode(" ", $message); $target_group = strtoupper(trim($array_target_group[0])); $message = $array_target_group[1]; for ($i = 2; $i < count($array_target_group); $i++) { $message .= " " . $array_target_group[$i]; } if (send2group($sms_sender, $target_group, $message)) { $ok = true; } break; case 'PV': $array_target_user = explode(" ", $message); $target_user = strtoupper(trim($array_target_user[0])); $message = $array_target_user[1]; for ($i = 2; $i < count($array_target_user); $i++) { $message .= " " . $array_target_user[$i]; } if (insertsmstoinbox($sms_datetime, $sms_sender, $target_user, $message)) { $ok = true; } break; default: // try as autoreply $ok = processAutoreply($sms_datetime, $sms_sender, $message); // maybe its for sms poll if (!$ok) { $db_query = "SELECT poll_id FROM playsms_featPoll WHERE poll_code='{$target_code}'"; if ($db_result = dba_num_rows($db_query)) { $ok = savepoll($sms_sender, $target_code, $message); } } // or maybe its for sms command if (!$ok) { $db_query = "SELECT command_id FROM playsms_featCommand WHERE command_code='{$target_code}'"; if ($db_result = dba_num_rows($db_query)) { $ok = execcommand($sms_datetime, $sms_sender, $target_code, $message); } } // or maybe its for sms custom if (!$ok) { $db_query = "SELECT custom_id FROM playsms_featCustom WHERE custom_code='{$target_code}'"; if ($db_result = dba_num_rows($db_query)) { $ok = processcustom($sms_datetime, $sms_sender, $target_code, $message); } } // its for sms board if (!$ok) { $db_query = "SELECT board_id FROM playsms_featBoard WHERE board_code='{$target_code}'"; if ($db_result = dba_num_rows($db_query)) { $ok = insertsmstodb($sms_datetime, $sms_sender, $target_code, $message); } } // if its from the known system messsage sender, // then process it as a system message $syssenders = explode(',', $system_from); foreach ($syssenders as $syssender) { if (0 == strcasecmp($sms_sender, $syssender)) { $saveToInbox = true; $ok = processSystemMessage($sms_sender, "{$target_code} {$message}"); } } break; } if (!$ok) { $saveToInbox = true; // If all else failed, then check the autoreplies again, // this time with a more sophisticated match. // // Note that since this can result in autoreply error messages, // we only do this if its a regular number, not a shortcode or // some special cell provider number // (if we don't check we can get into an infinite loop, us // sending an error message to another autmoated system, which // sends us an error message...) if (strlen($sms_sender) > 4 && ereg('^\\+?[0-9]+$', $sms_sender)) { $ok = processAutoreply($sms_datetime, $sms_sender, $message, false); $saveToInbox = !$ok; } } if ($saveToInbox) { error_log("saving to inbox..."); if (insertsmstoinbox($sms_datetime, $sms_sender, "admin", $message)) { $ok = true; } } return $ok; }