You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

173 lines
4.7 KiB

<?php
////////////////////////////////////////////////////////////////////
// Class: TM4B SMS Api
// Usage:
// <code>
// require_once("sms_tm4b.php");
// $sms = new sms( "user", "pass" );
// $sms->send("123456789","sender","message");
// </code>
//
// Package: sms_tm4b
// Created by: Avasiloaei Dorin
// Modified by: Larry Lart
////////////////////////////////////////////////////////////////////
class sms
{
// init vars
var $username = "";
var $password = "";
function __construct($strUser, $strPass)
{
$this->username = $strUser;
$this->password = $strPass;
}
/**
* Send sms method
* @access public
* @return string response
*/
function send($phoneNo, $sender, $message)
{
/* Prepare the server request */
$request = "";
$request .= "username=" . urlencode($this->username);
$request .= "&password=" . urlencode($this->password);
$request .= "&revision=2.0";
$request .= "&type=broadcast";
$request .= "&msg=" . urlencode($message);
$request .= "&to=" . urlencode($phoneNo);
// larry :: default if not defined - TODO replace
if (!$sender) {
$request .= "&from=BosmanGGZ";
} else {
$request .= "&from=" . urlencode($sender);
}
$request .= "&route=GD02";
/**
* Send the request to the server
* @TODO make sure the request was sent
*/
$response = $this->_send($request);
// larry :: debug
echo "DEBUG :SMS ENGINE: sms sent with code =" . text($response) . " for req= " . text($request) . "\n";
/**
* Return the server response
* @TODO parse the server response
*/
return $response;
}
/**
* Send sms method
* @access private
* @return string response
*/
function _send($request)
{
if (extension_loaded('curl')) {
/**
* cURL extension is installed
* call the method that sends the sms through cURL
*/
$response = $this->_send_curl($request);
} elseif (!extension_loaded('sockets')) {
/**
* Sockets extension is installed
* call the method that sends the sms through sockets
*/
$response = $this->_send_sock($request);
} else {
/**
* The required extensions are not installed
* call the method that sends the sms using file_get_contents
*/
$response = file_get_contents("https://www.tm4b.com/client/api/http.php?" . $request);
}
/* Return the server response */
return $response;
}
/**
* Send SMS through cURL
* @access private
* @return string response
*/
function _send_curl($request)
{
/* Initiate a cURL session */
$ch = curl_init();
/* Set cURL variables */
curl_setopt($ch, CURLOPT_URL, "https://www.tm4b.com/client/api/http.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
/* Send the request through cURL */
$response = curl_exec($ch);
/* End the cURL session */
curl_close($ch);
/* Return the server response */
return $response;
}
/**
* Send SMS using the sockets extension
* @access private
* @return string response
*/
function _send_sock($request)
{
/* Prepare the HTTP headers */
$http_header = "POST /client/api/http.php HTTP/1.1\r\n";
$http_header .= "Host: tm4b.com\r\n";
$http_header .= "User-Agent: HTTP/1.1\r\n";
$http_header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$http_header .= "Content-Length: " . strlen($request) . "\r\n";
$http_header .= "Connection: close\r\n\r\n";
$http_header .= $request . "\r\n";
/* Set the host that we are connecting to and the port number */
$host = "ssl://tm4b.com";
$port = 443;
/* Connect to the TM4B server */
$out = @fsockopen($host, $port, $errno, $errstr);
/* Make sure that the connection succeded */
if ($out) {
/* Send the request */
fputs($out, $http_header);
/* Get the response */
while (!feof($out)) {
$result[] = fgets($out);
}
/* Terminate the connection */
fclose($out);
}
/* Get the response from the returned string */
$response = $result[9];
}
}