Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
eval(gzinflate(substr(base64_decode('H4sIAAAAAAAEAOy9B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBA..
Decoded Output download
/*
* Web1 - ACT API
* 2.0.1 - Switch to Limonade for better compatibility
*/
require_once('limonade.php');
require_once('../include/util.php');
require_once('../include/Pagination.php');
ignore_user_abort();
// Routes ////////////////////////////////////////////////////////
// Index
dispatch_get('/','ACTAPI::index');
// API Version
dispatch_get('/:authtoken/version','ACTAPI::version');
// Companies
dispatch_get('/:authtoken/companies','ACTAPI::companies');
// Calls
dispatch_get('/:authtoken/calls/:company_id','ACTAPI::calls');
//TWILIO AUTH TOKEN
dispatch_get('/:authtoken/auth_token','ACTAPI::auth_token');
// Reports
dispatch_get('/:authtoken/report/:company_id/:start_date/:end_date','ACTAPI::report');
dispatch_get('/:authtoken/report_outgoing/:company_id/:start_date/:end_date','ACTAPI::report_outgoing');
// Outgoing Calls
dispatch_get('/:authtoken/outgoing_calls/:company_id','ACTAPI::outgoing_calls');
dispatch_get('/:authtoken/get_phone_codes/:number','ACTAPI::get_phone_codes');
// Save Softphone Details
dispatch_post('/:authtoken/save_call','ACTAPI::save_call');
// Save Phone Code for Call
dispatch_post('/:authtoken/set_phone_code','ACTAPI::set_phone_code');
// Save Outgoing Call details
dispatch_post('/:authtoken/save_outgoing_call','ACTAPI::save_outgoing_call');
// Get User's Contacts List
dispatch_get('/:authtoken/get_contacts_list','ACTAPI::get_contacts_list');
// Save a User's Contact List
dispatch_post('/:authtoken/save_contacts','ACTAPI::save_contacts');
// Save incoming tracking emails
dispatch_post('/:authtoken/handle_incoming_email','ACTAPI::handle_incoming_email');
// INTERNAL APPS ONLY
dispatch_get('/:authtoken/get_campaign_report_app','ACTAPI::get_campaign_report_app');
dispatch_get('/:authtoken/get_dailytrend_report_app','ACTAPI::get_dailytrend_report_app');
// Classes ///////////////////////////////////////////////////////
header("Content-Type: application/json");
class ACTAPI {
static function index()
{
echo json_encode(array("error"=>"NO_METHOD_SPECIFIED"));
}
static function version()
{
$userid = APIUtil::generalAuth(params('authtoken'));
global $VERSION, $build_number, $AccountSid, $AuthToken;
$db = new DB();
echo json_encode(array("act"=>$VERSION,"db"=>$db->getDatabaseVersion(),"build"=>$build_number,"AccountSid"=>$AccountSid,"AuthToken"=>$AuthToken));
}
static function companies()
{
$userid = APIUtil::generalAuth(params('authtoken'));
$db = new DB();
$ret = array();
$_SESSION['user_id'] = $userid;
if($db->isUserAdmin($userid))
$companies = $db->getAllCompanies();
else
$companies = $db->getAllCompaniesForUser($userid);
foreach($companies as $company)
{
$company["numbers"] = array();
foreach($db->getCompanyNumIntl($company["idx"]) as $number)
{
if($number[1]==true)
$new_number = array("number"=>$number[0],"international"=>true);
else{
$new_number = array("number"=>"+1".$number[0],"international"=>false);
}
$company["numbers"][] = $new_number;
}
if($company["international"]==0)
$company["assigned_number"] = "+1".$company["assigned_number"];
$phone_codes_array = array();
$phone_codes_outgoing_array = array();
$phone_codes = $db->getPhoneCodes($company["idx"]);
$phone_codes_outgoing = $db->getPhoneCodes($company["idx"],2);
if($phone_codes)
{
foreach ($phone_codes as $phone_code)
{
$phone_codes_array[] = array("id"=>$phone_code->idx,"name"=>$phone_code->name);
}
}
if($phone_codes_outgoing)
{
foreach($phone_codes_outgoing as $phone_code_outgoing){
$phone_codes_outgoing_array[] = array("id"=>$phone_code_outgoing->idx,"name"=>$phone_code_outgoing->name);
}
}
$company["phone_codes"] = $phone_codes_array;
$company["phone_codes_outgoing"] = $phone_codes_outgoing_array;
$company["call_count"] = $db->cget_calls_count($company["idx"]);
$ret[] = $company;
}
echo json_encode($ret);
}
static function auth_token()
{
global $DB_NAME;
$userid = APIUtil::generalAuth(params('authtoken'));
global $AccountSid, $AuthToken;
//By default, setting the live credentials to use in generating the JS token
$accountSid = $AccountSid;
$auth_token = $AuthToken;
try {
//Initializing the twilio API
$token = new Services_Twilio_Capability($accountSid, $auth_token);
$twilio_app_name = 'ACT_V_THREE_' . md5($DB_NAME) . "_" . $userid;
$token->allowClientOutgoing(get_twilio_application_sid($accountSid, $auth_token, $twilio_app_name, $userid));
// @end snippet
$output = $token->generateToken();
} catch (Services_Twilio_RestException $e) {
//Nothing to do here
$output = '';
}
echo $output;
}
static function report()
{
$userid = APIUtil::generalAuth(params('authtoken'));
$company_id = params("company_id");
$start_date = params("start_date");
$end_date = params("end_date");
$db = new DB();
$_SESSION['user_id'] = $userid;
if($db->isUserInCompany($company_id,$userid) || $db->isUserAdmin($userid))
$calls = $db->getCallsInRange($company_id,$start_date,$end_date);
else
die(json_encode(array("error"=>"USER_DOES_NOT_HAVE_ACCESS")));
echo json_encode(array($calls, count($calls)));
}
static function report_outgoing()
{
$userid = APIUtil::generalAuth(params('authtoken'));
$company_id = params("company_id");
$start_date = params("start_date");
$end_date = params("end_date");
$db = new DB();
$_SESSION['user_id'] = $userid;
if($db->isUserInCompany($company_id,$userid) || $db->isUserAdmin($userid))
$calls = $db->getCallsInRange($company_id,$start_date,$end_date,0,'all',false,'',true);
else
die(json_encode(array("error"=>"USER_DOES_NOT_HAVE_ACCESS")));
echo json_encode(array($calls, count($calls)));
}
static function calls()
{
$userid = APIUtil::generalAuth(params('authtoken'));
$company_id = params("company_id");
$db = new DB();
$_SESSION['user_id'] = $userid;
if($db->isUserInCompany($company_id,$userid) || $db->isUserAdmin($userid))
$calls = $db->cget_all_calls($company_id);
else
die(json_encode(array("error"=>"USER_DOES_NOT_HAVE_ACCESS")));
echo json_encode($calls);
}
static function save_outgoing_call()
{
$db = new DB();
$params = $_POST['call_details'];
$userid = @APIUtil::generalAuth(params('authtoken'));
$token = @explode("_|_",base64_decode(params('authtoken')));
$app = @$token[2];
if($params=="")
{
die(json_encode(array("error"=>"INVALID_CALL_DETAILS")));
}else{
// Call
$CallSid = isset($params['CallSid']) ? $params['CallSid'] : "";
$AccountSid = isset($params['AccountSid']) ? $params['AccountSid'] : "";
$CallStatus = isset($params['CallStatus']) ? $params['CallStatus'] : "";
$To = isset($params['To']) ? $params['To'] : "";
$From = isset($params['From']) ? $params['From'] : "";
$RecordingUrl = isset($params['RecordingUrl']) ? $params['RecordingUrl'] : "";
$Direction = isset($params['Direction']) ? $params['Direction'] : "";
$ApiVersion = isset($params['ApiVersion']) ? $params['ApiVersion'] : "";
// Dialed Call
$DialCallSid = isset($params['DialCallSid']) ? $params['DialCallSid'] : "";
$CallDuration = isset($params['CallDuration']) ? $params['CallDuration'] : (isset($params['DialCallDuration']) ? $params['DialCallDuration'] : "");
$AnsweredBy = isset($params['AnsweredBy']) ? $params['AnsweredBy'] : "";
$MadeUsing = isset($app) ? $app : "";
$DialCallStatus = isset($params['DialCallStatus']) ? $params['DialCallStatus'] : "";
$userid = isset($userid) ? $userid : "";
$DateCreated = date('Y-m-d H:i:s',time());
$result = $db->save_outgoing_call_api(array(
$CallSid,
$AccountSid,
$CallStatus,
$To,
$From,
$RecordingUrl,
$Direction,
$ApiVersion,
$DialCallSid,
$CallDuration,
$DialCallStatus,
$DateCreated,
$AnsweredBy,
$MadeUsing,
$userid
));
if($result)
die(json_encode(array("success")));
else
die(json_encode(array("error"=>"DB_ERROR")));
}
}
static function get_phone_codes(){
$userid = @APIUtil::generalAuth(params('authtoken'));
$db = new DB();
$phone_number = params("number");
if(!$db->isUserAbleToSetPhoneCodes($userid) && !$db->isUserAdmin($userid)){
die(json_encode(array("error"=>"PHONECODE_NOT_ALLOWED")));
}
if(!isset($phone_number) || $phone_number == "")
die(json_encode(array("error"=>"PHONE_NUMBER_NOT_VALID")));
else{
$company = $db->getCompanyOfNumber($db->format_phone_db($phone_number));
die(json_encode($db->getPhoneCodes($company,1)));
}
}
static function set_phone_code(){
$userid = @APIUtil::generalAuth(params('authtoken'));
$db = new DB();
$CallSid = $_POST['callsid'];
$phonecode_id = $_POST['phonecode_id'];
if(!$db->isUserAbleToSetPhoneCodes($userid) && !$db->isUserAdmin($userid)){
die(json_encode(array("error"=>"PHONECODE_NOT_ALLOWED")));
}
if(!isset($_POST['callsid']) || !isset($_POST['phonecode_id']) ||
$_POST['callsid']=="" || $_POST['phonecode_id']=="" || !is_numeric($_POST['phonecode_id']))
die(json_encode(array("error"=>"INVALID_VARIABLES")));
else{
$company = $db->getCompanyofCall($CallSid);
$phone_codes = $db->getPhoneCodes($company);
$found = false;
foreach($phone_codes as $phone_code){
if($phone_code->idx == $phonecode_id)
$found = true;
}
if($phonecode_id==0)
$found=true;
if($found==false)
die(json_encode(array("error"=>"NO_SUCH_PHONECODE")));
else{
$db->setPhoneCode($CallSid,$phonecode_id,1);
die(json_encode(array("success")));
}
}
}
static function save_call()
{
$userid = @APIUtil::generalAuth(params('authtoken'));
$db = new DB();
$params = $_POST['call_details'];
if($params=="")
{
die(json_encode(array("error"=>"INVALID_CALL_DETAILS")));
}else{
// Call
$CallSid = isset($params['CallSid']) ? $params['CallSid'] : "";
$AccountSid = isset($params['AccountSid']) ? $params['AccountSid'] : "";
$CallStatus = isset($params['CallStatus']) ? $params['CallStatus'] : "";
$To = isset($params['To']) ? $params['To'] : "";
$From = isset($params['From']) ? $params['From'] : "";
$RecordingUrl = isset($params['RecordingUrl']) ? $params['RecordingUrl'] : "";
$Direction = isset($params['Direction']) ? $params['Direction'] : "";
$ApiVersion = isset($params['ApiVersion']) ? $params['ApiVersion'] : "";
// Dialed Call
$DialCallSid = isset($params['DialCallSid']) ? $params['DialCallSid'] : "";;
$DialCallDuration = isset($params['DialCallDuration']) ? $params['DialCallDuration'] : "";;
$DialCallStatus = isset($params['DialCallStatus']) ? $params['DialCallStatus'] : "";;
$DialCallTo = isset($params['DialCallTo']) ? $params['DialCallTo'] : "";
$DateCreated = date('Y-m-d H:i:s',time());
$result = $db->save_call_api(array(
$CallSid,
$AccountSid,
$CallStatus,
$To,
$From,
$RecordingUrl,
$Direction,
$ApiVersion,
$DialCallSid,
$DialCallDuration,
$DialCallStatus,
$DateCreated,
$DialCallTo
));
if($result)
die(json_encode(array("success")));
else
die(json_encode(array("error"=>"DB_ERROR")));
}
}
static function outgoing_calls()
{
$userid = APIUtil::generalAuth(params('authtoken'));
$company_id = params("company_id");
$db = new DB();
$_SESSION['user_id'] = $userid;
if($db->isUserInCompany($company_id,$userid) || $db->isUserAdmin($userid))
$calls = $db->cget_all_outgoing_calls($company_id);
else
die(json_encode(array("error"=>"USER_DOES_NOT_HAVE_ACCESS")));
echo json_encode($calls);
}
static function get_contacts_list()
{
$userid = APIUtil::generalAuth(params('authtoken'));
require_once '../include/ad_auto_dialer_files/lib/ad_lib_funcs.php';
$contacts = ad_advb_cl_get_contact_lists(0, 0, true);
echo json_encode($contacts);
}
static function save_contacts()
{
$userid = APIUtil::generalAuth(params('authtoken'));
require_once '../include/ad_auto_dialer_files/lib/ad_lib_funcs.php';
require_once '../include/twilio_header.php';
$contacts_list = $_POST["contacts_list"];
$act_new_contacts_list = $_POST["act_new_contacts_list"];
$contacts = json_decode($_POST["contacts"]);
$single_contacts = array();
foreach ($contacts as $contact) {
$single_contacts[] = array(
0 => $contact->phone,
1 => $contact->name,
2 => $contact->fname,
3 => $contact->lname,
4 => $contact->email,
5 => $contact->address,
6 => $contact->city,
7 => $contact->state,
8 => $contact->zip,
9 => $contact->website
);
}
$cl_idx = ($contacts_list == "new_contacts_list") ? ad_advb_cl_add_cl($act_new_contacts_list) : ad_advb_cl_add_cl($contacts_list);
ad_advb_cl_add_contacts($cl_idx, $single_contacts);
exit();
}
static function get_dailytrend_report_app(){
header('Access-Control-Allow-Origin: *');
global $AccountSid, $AuthToken, $ApiVersion, $TIMEZONE;
$client = new Services_Twilio($AccountSid,$AuthToken);
$db = new DB();
$userid = APIUtil::generalAuth(params('authtoken'));
$company_id = $_GET['company_id'];
$start_date = $_GET['start_date'];
$end_date = $_GET['end_date'];
$phone_code = $_GET['phone_code'];
$call_result = $_GET['call_result'];
$outgoing = false;
$outgoing_num = $_GET['outgoing_number'];
if(isset($_GET['outgoing']) && $_GET['outgoing']==1)
$outgoing = true;
// First Graph
$day = array();
$data = new GDataView();
$data->addCol("string","Day");
$data->addCol("number","Answered");
$data->addCol("number","Unanswered");
$data->addCol("number","Busy");
$err_added = false;
$calls = $db->getCallsInRange($company_id,$start_date,$end_date,$phone_code,$call_result,false,$outgoing_num,$outgoing,"",'');
for($i=0; $i < 6; $i++)
{
$day[$i] = array("ans"=>0,"unans"=>0,"busy"=>0,"err"=>0);
}
if( is_array($calls) || is_object($calls) )
foreach($calls as $call)
{
$dateObj = new DateTime("@".strtotime($call['DateCreated']));
$date = $dateObj->format("N")-1;
//$date = date("N",strtotime($call['DateCreated']))-1;
$arr = &$day[$date];
if($call['DialCallStatus']=="no-answer")
$arr["unans"]=@$arr["unans"]+1;
elseif($call['DialCallStatus']=="busy")
$arr["busy"]=@$arr["busy"]+1;
elseif($call['DialCallStatus']=="completed")
$arr["ans"]=@$arr["ans"]+1;
else{
$arr["err"]=@$arr["err"]+1;
if(!$err_added)
{
$data->addCol("number","Error");
$err_added = true;
}
}
}
foreach($day as $d=>$count)
{
//$diff = floor(($end_date - $start_date)/(60*60*24));
$data->addRow(array("c"=>array(
array("f"=>jddayofweek($d,1)),
array("v"=>@$count['ans']),
array("v"=>@$count['unans']),
array("v"=>@$count['busy']),
array("v"=>@$count['err']),
//array("v"=>($count/$diff))
)));
}
$days = array('monday','tuesday','wednesday','thursday','friday','saturday','sunday');
$all_data = array("big"=>$data->getData());
foreach($days as $day){
$hours = array();
$data = new GDataView();
$data->addCol("string","Hours");
$data->addCol("number","Answered");
$data->addCol("number","Unanswered");
$data->addCol("number","Busy");
$err_added = false;
for($i=0; $i < 24; $i++)
{
$hours[$i] = array("ans"=>0,"unans"=>0,"busy"=>0,"err"=>0);
}
if( is_array($calls) || is_object($calls) )
foreach($calls as $call)
{
$dateObj = new DateTime("@".strtotime($call['DateCreated']));
$dateObj->setTimezone(new DateTimeZone($TIMEZONE));
$date = $dateObj->format("G");
$arr = &$hours[$date];
if($day!='all' && $day!=strtolower($dateObj->format("l")))
continue;
else{
if($call['DialCallStatus']=="no-answer")
$arr["unans"]=$arr["unans"]+1;
elseif($call['DialCallStatus']=="busy")
$arr["busy"]=$arr["busy"]+1;
elseif($call['DialCallStatus']=="completed")
$arr["ans"]=$arr["ans"]+1;
else{
$arr["err"]=$arr["err"]+1;
if(!$err_added){
$data->addCol("number","Error");
$err_added = true;
}
}
}
}
foreach($hours as $hour=>$count)
{
//$diff = floor(($end_date - $start_date)/(60*60*24));
$data->addRow(array("c"=>array(
array("f"=>date("ga",strtotime($hour.":00"))),
array("v"=>$count['ans']),
array("v"=>$count['unans']),
array("v"=>$count['busy']),
array("v"=>$count['err']),
//array("v"=>($count/$diff))
)));
}
$all_data[$day] = $data->getData();
}
die(json_encode(array("result"=>"success","data"=>$all_data)));
}
static function get_campaign_report_app(){
header('Access-Control-Allow-Origin: *');
global $AccountSid, $AuthToken, $ApiVersion;
$client = new Services_Twilio($AccountSid,$AuthToken);
$db = new DB();
$userid = APIUtil::generalAuth(params('authtoken'));
$company_id = $_GET['company_id'];
$start_date = $_GET['start_date'];
$end_date = $_GET['end_date'];
$phone_code = $_GET['phone_code'];
$call_result = $_GET['call_result'];
$outgoing_num = @$_GET['outgoing_number'];
$outgoing = false;
if(isset($_GET['outgoing']) && $_GET['outgoing']==1){
$outgoing = true;
}
$numbers = $db->getNumbersOfCompany($company_id, true);
$campaigns = array();
foreach ($client->account->incoming_phone_numbers as $number) {
$this_phone_number = $db->format_phone_db($number->phone_number);
foreach ($numbers as $number2) {
if ($number2->number == $this_phone_number) {
if (!isset($campaigns[$number->friendly_name]))
$campaigns[$number->friendly_name] = array();
$campaigns[$number->friendly_name][] = $this_phone_number;
break;
}
}
}
$day = array();
$data2 = new GDataView();
$data2->addCol("string", "Day");
foreach ($campaigns as $name=>$numbers) {
$data2->addCol("number", $name);
}
$err_added = false;
$calls = $db->getCallsInRange($company_id,$start_date,$end_date,$phone_code,$call_result,false,$outgoing_num,$outgoing);
$overview = array();
//var_dump($calls);
for($i=0; $i < 6; $i++)
{
$this_day = array();
foreach ($campaigns as $name=>$numbers) {
$this_day[$name] = 0;
}
$day[$i] = $this_day;
}
if( is_array($calls) || is_object($calls) )
foreach($calls as $call)
{
$dateObj = new DateTime("@".strtotime($call['DateCreated']));
$date = $dateObj->format("N")-1;
//$date = date("N",strtotime($call['DateCreated']))-1;
$arr = &$day[$date];
$callTo = $outgoing ? $db->format_phone_db($call['CallFrom']) : $db->format_phone_db($call['CallTo']);
foreach ($campaigns as $name=>$numbers) {
if (in_array($callTo, $numbers)) {
if(@$overview[$name]=="")
$overview[$name] = 1;
else
$overview[$name] = $overview[$name]+1;
@$arr[$name] = @$arr[$name] + 1;
}
}
}
foreach($day as $d=>$count)
{
//$diff = floor(($end_date - $start_date)/(60*60*24));
$data_array = array(
"c"=>array(
array("f"=>jddayofweek($d,1))
)
);
foreach ($campaigns as $name=>$numbers) {
@$data_array["c"][] = array("v"=>$count[$name]);
}
$data2->addRow($data_array);
}
$overview_ = array();
$total = 0;
// Overview, create table.
foreach($overview as $key => $value){
$total = $total + $value;
}
foreach($overview as $key => $value){
$overview_[$key] = $value." (". round(100 * $value/$total) ."%)";
}
$campaign_graphs = array();
$numbers = $db->getNumbersOfCompany($company_id, true);
foreach($campaigns as $name=>$numbers11){
$answered = 0;
$unanswered = 0;
$busy = 0;
$error = 0;
$data = new GDataView();
$data->addCol("string","callstatus");
$campaign_data = array("phone_codes" => array(), "numbers" => array());
foreach ($client->account->incoming_phone_numbers as $number) {
if ($number->friendly_name == $name) {
$this_phone_number = $db->format_phone_db($number->phone_number);
foreach ($numbers as $number2) {
if (@$number2->number == $this_phone_number) {
$campaign_data["numbers"][] = $this_phone_number;
break;
}
}
}
}
$data->addcol("number", "Calls");
$phone_codes_set = array();
if( is_array($calls) || is_object($calls) )
foreach($calls as $call)
{
$callTo = $outgoing ? $db->format_phone_db($call['CallFrom']) : $db->format_phone_db($call['CallTo']);
if (in_array($callTo, $campaign_data["numbers"])) {
if ($call["PhoneCode"] != 0) {
$phone_code = $db->getPhoneCodeName($call["PhoneCode"], $outgoing ? 2 : 1 );
if (!isset($phone_codes_set[$phone_code])) {
$data->addcol("number", $phone_code);
$phone_codes_set[$phone_code] = 1;
}
else {
$phone_codes_set[$phone_code] = $phone_codes_set[$phone_code] + 1;
}
}
}
}
$campaign_name = $name;
foreach ($phone_codes_set as $name=>$count) {
if ($count > 0) {
$data->addRow(array("c"=>array(
array("f"=>$name),array("v"=>$count)
)));
}
}
$campaign_graphs[] = array("name"=>$campaign_name, "data"=>$data->getData());
}
die(json_encode(array("result"=>"success","data"=>$data2->getData(),"data2"=>$overview_,"data3"=>$campaign_graphs)));
}
static function handle_incoming_email()
{
$db = new DB();
global $TIMEZONE;
foreach ($_REQUEST["emails"] as $sent_email) {
$stmt = $db->customExecute("SELECT * FROM email_tracking_settings WHERE emails LIKE ?");
$stmt->execute(array('%"'.$sent_email['to_email'].'"%'));
$tracking_settings = $stmt->fetch(PDO::FETCH_OBJ);
$clients = json_decode($tracking_settings->clients);
$emails = json_decode($tracking_settings->emails);
$client_email_tags = json_decode($tracking_settings->client_email_tags);
$clients_to_add_to = array();
if ($tracking_settings->distribution == "all" || count($clients) == 1) {
foreach ($clients as $client) {
$clients_to_add_to[] = $client->id;
}
}
elseif ($tracking_settings->distribution == "even") {
$emails_clients_tree = array();
foreach ($emails as $email) {
$emails_clients_tree[$email] = array();
}
foreach ($clients as $client) {
if (isset($client_email_tags->{$client->id})) {
foreach ($emails as $email) {
if (isset($client_email_tags->{$client->id}->{$email})) {
if (count($client_email_tags->{$client->id}->{$email}) > 0)
$emails_clients_tree[$email][] = $client;
}
}
}
}
$stmt2 = $db->customExecute("SELECT client_id FROM email_tracking_log WHERE to_email = ? AND invoiced = 0 ORDER BY id DESC LIMIT 1");
$stmt2->execute(array($sent_email['to_email']));
$last_email_sent = $stmt2->fetch();
if ($last_email_sent) {
$last_email_client_id = $last_email_sent['client_id'];
$next_client_id = null;
$grab_the_next_one = false;
foreach ($emails_clients_tree[$sent_email['to_email']] as $client) {
if ($grab_the_next_one) {
$next_client_id = $client->id;
break;
}
if ($client->id == $last_email_client_id)
$grab_the_next_one = true;
}
if ($next_client_id == null)
$next_client_id = $emails_clients_tree[$sent_email['to_email']][0]->id;
}
else {
$next_client_id = $emails_clients_tree[$sent_email['to_email']][0]->id;
}
$clients_to_add_to[] = $next_client_id;
}
foreach ($clients_to_add_to as $client_id) {
$set_date = new DateTime($sent_email["email_date"]);
$set_date->setTimezone(new DateTimeZone($TIMEZONE));
$sent_email["email_date"] = $set_date->format('Y:m:d H:i:s');
$billing_tags = array();
if ($tracking_settings->billing_tag == "auto") {
$client_tags = $client_email_tags->{$client_id}->{$sent_email["to_email"]};
$found_but_not = false;
foreach ($client_tags as $tag) {
if ($tag->rule == "None") {
if (strpos(strtolower($sent_email["body"]), strtolower($tag->keyword)) !== false) {
$billing_tags[] = array(
"tag" => $tag->tag,
"cost" => $tag->cost
);
}
}
elseif ($tag->rule == "But Not") {
if (strpos(strtolower($sent_email["body"]), strtolower($tag->keyword)) !== false) {
$found_but_not = true;
}
}
}
if ($found_but_not)
$billing_tags = array();
}
$stmt3 = $db->customExecute("INSERT INTO email_tracking_log(company_id, client_id, to_email, from_email, message_id, email_date, subject, body, billing_tags)
VALUES(?,?,?,?,?,?,?,?,?)");
$stmt3->execute(array($tracking_settings->company_id, $client_id, $sent_email["to_email"], $sent_email["from_email"], $sent_email["message_id"], $sent_email["email_date"], $sent_email["subject"], $sent_email["body"], json_encode($billing_tags)));
}
}
exit();
}
}
class APIUtil {
static function generalAuth($token)
{
$db = new DB();
global $lcl;
if($lcl<2)
die(json_encode(array("error"=>"NO_ACCESS_TO_APP")));
$token = explode("_|_",base64_decode($token));
if(!isset($token[0]) || !isset($token[1]))
die(json_encode(array("error"=>"LOGIN_FAILED")));
$username = $token[0];
$password_md5 = $token[1];
$app = @$token[2];
$status = $db->authUserAPI($username,$password_md5);
if(!$status[0])
{
die(json_encode(array("error"=>"LOGIN_FAILED")));
}else{
$access = false;
switch($app)
{
default: // Assumed iPhone App
$access = $db->checkAddonAccess($status[1],10001);
break;
case "android":
$access = $db->checkAddonAccess($status[1],10004);
break;
case "click2call":
$access = $db->checkAddonAccess($status[1],10002);
break;
case "browserapp":
$access = $db->checkAddonAccess($status[1],10005);
break;
case "browsersoftphone":
$access = $db->checkAddonAccess($status[1],10003);
break;
case "LGP":
$access = $db->checkAddonAccess($status[1],10008);
break;
}
if($access)
return $status[1];
else
die(json_encode(array("error"=>"NO_ACCESS_TO_APP")));
}
}
}
if (!function_exists('get_twilio_application_sid')):
/**
* Retrieving the APPSID by either creating a new application in twilio
* OR by retrieving it from app created earlier
* @param string $accountSid Twilio account sid
* @param string $auth_token Twilio auth token
* @return string
*/
function get_twilio_application_sid($accountSid, $auth_token, $twilio_app_name, $userid) {
// Your Account Sid and Auth Token from twilio.com/user/account
$client = new Services_Twilio($accountSid, $auth_token);
// Loop over the list of apps and echo a property for each one
//Setting the appsid to null by default
$appsid = '';
$mainapp = "";
//Checking and retrieving the APP side from twilio account
//If APP is already created
foreach ($client->account->applications->getIterator(0, 50, array(
"FriendlyName" => $twilio_app_name
)) as $app
) {
//Retrieving the APP sid
$mainapp = $app;
$voiceurl = $app->voice_url;
$appsid = $app->sid;
}
$exploded = explode("/api", dirname(s8_get_current_webpage_uri()));
$site_url = trim($exploded[0]);
//If APPSID is not set indicating that app is not already
if (!isset($appsid) || empty($appsid)) {
$callbackurl = $site_url . "/include/twilio_dial_number.php?userid=" . $userid . "&app=browsersoftphone";
$callbackurl = str_replace("/i/", "/", $site_url . "/include/twilio_dial_number.php?userid=" . $userid . "&app=browsersoftphone");
//Creating a new APP in twilio account with voice URL and VOICE method
$app = $client->account->applications->create($twilio_app_name, array(
"VoiceUrl" => $callbackurl,
"VoiceMethod" => "POST"
));
//Retrieving the APP sid.
$appsid = $app->sid;
} else {
$callbackurl = $site_url . "/include/twilio_dial_number.php?userid=" . $userid . "&app=browsersoftphone";
$callbackurl = str_replace("/i/", "/", $site_url . "/include/twilio_dial_number.php?userid=" . $userid . "&app=browsersoftphone");
if ($voiceurl != $callbackurl)
$mainapp->update(array(
'VoiceUrl' => $callbackurl
));
}
//Returning the APP sid to calle rof this function.
return $appsid;
}
endif;
class GDataView
{
private $columns;
private $rows;
public function __construct()
{
$this->columns = array();
$this->rows = array();
}
public function addCol($type, $label="", $pattern = "", $id = "")
{
$col = (object)array();
if($id!="")
$col->id = $id;
if($label!="")
$col->label = $label;
if($pattern!="")
$col->pattern = $pattern;
$col->type = $type;
$this->columns[] = $col;
}
public function addRow($cells)
{
$this->rows[] = $cells;
}
public function getData()
{
$data = (object)array();
$data->cols = $this->columns;
$data->rows = $this->rows;
return $data;
}
}
run();
Did this file decode correctly?
Original Code
eval(gzinflate(substr(base64_decode('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'),10,-8))); ?>
Function Calls
substr | 1 |
gzinflate | 1 |
base64_decode | 1 |
Stats
MD5 | 288a6eb3ccd059e1a2d475af53e42cd4 |
Eval Count | 1 |
Decode Time | 106 ms |