Files
php_task_1/application/libraries/Sms_service.php
T

236 lines
6.6 KiB
PHP
Raw Normal View History

2022-06-30 05:46:02 -04:00
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
use Twilio\Rest\Client;
/*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2021*/
/**
* Sms Service
*
* @copyright 2019 Manaknightdigital Inc.
* @link https://manaknightdigital.com
* @license Proprietary Software licensing
* @author Ryan Wong
*/
class Sms_service
{
/**
* Mail Adapter
*
* @var mixed
*/
public $_adapter = null;
/**
* Adapter selected
*
* @var string
*/
public $_type = '';
/**
* From Number
*
* @var string
*/
public $_from = '';
/**
* CI
*
* @var mixed
*/
public $_ci = null;
/**
* Set mail service to correct way to send emails
*
* @param string $type
* @throws Exception
*/
public function set_adapter ($type)
{
$this->_type = $type;
$this->_ci = &get_instance();
$this->_from = $this->_ci->config->item('twilio_phone_number');
switch ($type)
{
case 'sms':
$this->_adapter = new Client($this->_ci->config->item('twilio_sid'), $this->_ci->config->item('twilio_token'));
break;
case 'whatsapp':
// Your Account Sid and Auth Token from twilio.com/user/account
$this->_adapter = new Client($this->_ci->config->item('twilio_sid'), $this->_ci->config->item('twilio_token'));
case 'test':
break;
default:
break;
}
}
/**
* Send email
*
* @param string $to
* @param string $message
*/
public function send ($to, $message)
{
switch ($this->_type)
{
case 'sms':
try {
$result = $this->_adapter->messages->create(
"{$to}",
[
'from' => "{$this->_from}",
'body' => $message,
]
);
error_log('TO: ' . $to);
error_log('Message: ' . $message);
error_log('Result: ' . $result);
if (!$result || !$result->sid)
{
return NULL;
}
// error_log(print_r($result, TRUE));
return $result->sid;
} catch (Exception $e) {
error_log('TO: ' . $to);
error_log('Message: ' . $message);
error_log('SMS Error: ' . $e->getMessage());
return FALSE;
}
break;
case 'test':
return TRUE;
break;
case 'whatsapp':
try {
$result = $this->_adapter->messages->create(
"whatsapp:{$to}",
[
'from' => "whatsapp:{$this->_from}",
'body' => $message,
]
);
error_log('TO: ' . $to);
error_log('Message: ' . $message);
error_log('Result: ' . $result);
return TRUE;
} catch (Exception $e) {
error_log('TO: ' . $to);
error_log('Message: ' . $message);
error_log('SMS Error: ' . $e->getMessage());
return FALSE;
}
break;
default:
break;
}
}
/**
* Send email
*
* @param string $to
* @param string $message
*/
public function send_callback ($to, $message, $callback_url)
{
switch ($this->_type)
{
case 'sms':
try {
$result = $this->_adapter->messages->create(
"{$to}",
[
'from' => "{$this->_from}",
'body' => $message,
'statusCallback' => $callback_url
]
);
error_log('TO: ' . $to);
error_log('Message: ' . $message);
error_log('Result: ' . $result);
if (!$result || !$result->sid)
{
return NULL;
}
// error_log(print_r($result, TRUE));
return $result->sid;
} catch (Exception $e) {
error_log('TO: ' . $to);
error_log('Message: ' . $message);
error_log('SMS Error: ' . $e->getMessage());
return FALSE;
}
break;
case 'test':
return TRUE;
break;
case 'whatsapp':
try {
$result = $this->_adapter->messages->create(
"whatsapp:{$to}",
[
'from' => "whatsapp:{$this->_from}",
'body' => $message,
]
);
error_log('TO: ' . $to);
error_log('Message: ' . $message);
error_log('Result: ' . $result);
return TRUE;
} catch (Exception $e) {
error_log('TO: ' . $to);
error_log('Message: ' . $message);
error_log('SMS Error: ' . $e->getMessage());
return FALSE;
}
break;
default:
break;
}
}
public function retrieve_single_sms_log ($sid)
{
return $this->_adapter->messages($sid)->fetch();
}
public function add_country_code ($country_code=1, $phone_number)
{
$str_phone = (string) $phone_number;
if (substr($str_phone, 0, $country_code) === $country_code)
{
return '+' . $phone_number;
}
else
{
return '+' . $country_code . $phone_number;
}
}
public function add_custom_country_code ($country_code=1, $phone_number)
{
$str_phone = (string) $phone_number;
if (substr($str_phone, 0, $country_code) === $country_code)
{
return '+' . $phone_number;
}
else
{
return '+' . $country_code . $phone_number;
}
}
}