This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/plugins/product/VOIP.php
2008-11-26 14:50:40 -08:00

950 lines
24 KiB
PHP

<?php
/**
* AgileBill - Open Billing Software
*
* This body of work is free software; you can redistribute it and/or
* modify it under the terms of the Open AgileBill License
* License as published at http://www.agileco.com/agilebill/license1-4.txt
*
* For questions, help, comments, discussion, etc., please join the
* Agileco community forums at http://forum.agileco.com/
*
* @link http://www.agileco.com/
* @copyright 2004-2008 Agileco, LLC.
* @license http://www.agileco.com/agilebill/license1-4.txt
* @author Tony Landis <tony@agileco.com> and Thralling Penguin, LLC <http://www.thrallingpenguin.com>
* @package AgileBill
* @version 1.4.93
*/
require_once PATH_MODULES.'voip/base_voip_plugin.inc.php';
class voipDID
{
var $data;
var $plugin_id = 0;
var $has_callwaiting = 1;
function load($did)
{
$db =& DB();
$rs = $db->Execute($sql=sqlSelect($db,"voip_did","*","did=::$did::"));
#echo $sql."<BR />";
$this->data = $rs->fields;
}
function save()
{
if(!is_array($this->data)) {
echo "Invalid state to save voipDID.";
return;
}
$db =& DB();
$sql = sqlUpdate($db,"voip_did",$this->data,"id=::".$this->data['id']."::");
#echo $sql."<BR />";
$db->Execute($sql);
}
function insert()
{
if(!is_array($this->data)) {
echo "Invalid state to insert voipDID.";
return;
}
$db =& DB();
$sql = sqlInsert($db,"voip_did",$this->data);
#echo $sql."<BR />";
if(!$db->Execute($sql)) {
echo $db->ErrorMsg();
}
}
function delete()
{
if(!is_array($this->data)) {
echo "Invalid state to delete voipDID.";
return;
}
$db =& DB();
$db->Execute(sqlDelete($db,"voip_did","id=::".$this->data['id']."::"));
}
function getPluginID()
{
if($this->plugin_id) return $this->plugin_id;
require_once PATH_MODULES."voip/voip.inc.php";
$v = new voip;
$didtable = $v->get_did_e164($this->data['did']);
$this->plugin_id = $didtable['voip_did_plugin_id'];
return $this->plugin_id;
}
function getDID()
{
return $this->data['did'];
}
function setDID($did)
{
$this->data['did'] = $did;
}
function getID()
{
return $this->data['id'];
}
function getAccountID()
{
return $this->data['account_id'];
}
function setAccountID($id)
{
$this->data['account_id'] = $id;
}
function getActive()
{
return $this->data['active'];
}
function setActive($v)
{
$this->data['active'] = $v;
}
function setServiceID($v)
{
$this->data['service_id'] = $v;
}
function setServiceParentID($v)
{
$this->data['service_parent_id'] = $v;
}
function setCNAM($v)
{
$this->data['cnam'] = $v;
}
function setBlacklist($v)
{
$this->data['blacklist'] = $v;
}
function setANIRouting($v)
{
$this->data['anirouting'] = $v;
}
function setVoicemail($v)
{
$this->data['voicemailenabled'] = $v;
$this->data['voicemailafter'] = 30;
}
function setFailover($v)
{
$this->data['failover'] = $v;
}
function setRemoteCallForwarding($v)
{
$this->data['remotecallforward'] = $v;
}
function setFax($v, $email)
{
$this->data['rxfax'] = $v;
$this->data['faxemail'] = $email;
}
function setConference($v, $lim)
{
$this->data['conf'] = $v;
$this->data['conflimit'] = $lim;
}
function setFaxDetection($v, $email)
{
$this->data['faxdetection'] = $v;
$this->data['faxemail'] = $email;
}
function setBusyCallForward($v)
{
$this->data['busycallforwardenabled'] = $v;
}
function setCallForward($v)
{
$this->data['callforwardingenabled'] = $v;
}
function setChannel($v)
{
$this->data['channel'] = $v;
}
function setChannelArg($v)
{
$this->data['channelarg'] = $v;
}
function setCallWaiting($v)
{
$this->has_callwaiting = $v;
}
function getCallWaiting()
{
return $this->has_callwaiting;
}
}
/**
* Parent class for VoIP provisioning
*/
class voip_provisioning
{
/**
* The default voicemail PIN code
*/
var $voip_vm_passwd;
/**
* The method of password generation
*/
var $voip_secret_gen;
/**
* Reference to underlying product plugin
*/
var $prod_plugin;
/**
* Authorized domain
*/
var $voip_domain;
function voip_provisioning(&$prod_plugin)
{
$this->prod_plugin =& $prod_plugin;
}
function load_config()
{
$db =& DB();
$sql = sqlSelect($db, "voip", "voip_vm_passwd, voip_secret_gen, auth_domain", "");
$rs = $db->Execute($sql);
$this->voip_vm_passwd = $rs->fields['voip_vm_passwd'];
$this->voip_secret_gen = $rs->fields['voip_secret_gen'];
$this->voip_domain = $rs->fields['auth_domain'];
}
function generate_secret(&$didClass)
{
$this->load_config();
switch ($this->voip_secret_gen) {
case 0:
$secret = substr(ereg_replace("[^0-9]","",microtime()),0,7);
break;
case 1:
$secret = strrev($didClass->getDID());
break;
case 2:
$secret = $didClass->getDID();
break;
default:
$secret = strrev($didClass->getDID());
break;
}
return $secret;
}
function call_did_plugin(&$didClass, $method)
{
$db =& DB();
if(!is_a($didClass,'voipDID')) {
echo 'First parameter was not a voipDID class.';
exit;
}
$plugin_id = $didClass->getPluginID();
$rs = & $db->Execute(sqlSelect($db,"voip_did_plugin","plugin,avail_countries","id = $plugin_id"));
if($rs && $rs->RecordCount() > 0) {
$plugin = $rs->fields['plugin'];
} else {
return false;
}
// load the plugin and call purchase();
$file = PATH_PLUGINS.'voip_did/'.$plugin.'.php';
if(is_file($file)) {
include_once($file);
eval('$plg = new plgn_voip_did_'.$plugin.';');
if(is_object($plg)) {
if(is_callable(array($plg, $method))) {
$plg->id = $plugin_id;
$plg->did = $didClass->getDID();
$plg->did_id = $didClass->getID();
$plg->account_id = $didClass->getAccountID();
eval('$plg->'.$method.'();');
return true;
}
}
}
return false;
}
function add_in_network(&$didClass)
{
if(!is_a($didClass,'voipDID'))
die('Parameter must be a voipDID');
$db =& DB();
$f = array(
'did' => $didClass->getDID(),
'site_id' => DEFAULT_SITE
);
$sql = sqlInsert($db,"voip_in_network",$f);
#echo $sql."<BR />";
$db->Execute($sql);
}
function delete_in_network(&$didClass)
{
if(!is_a($didClass,'voipDID')) die('Parameter must be of voipDID');
$db =& DB();
$sql = sqlDelete($db,"voip_in_network","did=::".$didClass->getDID()."::");
#echo $sql."<BR />";
$db->Execute($sql);
}
function add_voicemail(&$didClass)
{
if(!is_a($didClass,'voipDID')) die('parameter must be of voipDID');
$db =& DB();
$this->load_config();
# get the account information
$account = $db->Execute(sqlSelect($db,"account","first_name,last_name,email","id=::".$didClass->getAccountID()."::"));
$f = array(
'account_id' => $didClass->getAccountID(),
'context' => 'default',
'mailbox' => $didClass->getDID(),
'password' => $this->voip_vm_passwd,
'fullname' => $account->fields['first_name']." ".$account->fields['last_name'],
'email' => $account->fields['email']
);
$db->Execute($sql=sqlInsert($db,"voip_vm",$f));
#echo $sql."<BR />";
}
function delete_voicemail(&$didClass)
{
$db =& DB();
if(!is_a($didClass,'voipDID')) die('parameter must be of voipDID');
$db->Execute($sql=sqlDelete($db,"voip_vm","context=::default:: and mailbox=::".$didClass->getDID()."::"));
#echo $sql."<BR />";
}
}
class ser_voip_provisioning extends voip_provisioning
{
var $ser_host = 'localhost';
var $ser_type = 'mysql';
var $ser_name = 'serdb';
var $ser_user = '';
var $ser_pass = '';
var $tbl_subscriber = 'subscriber';
var $tbl_alias = 'aliases';
var $tbl_group = 'grp';
var $tbl_acc = 'acc';
var $ser_ip = 'localhost';
function & DBFactory()
{
static $dbc;
if(!is_resource($dbc)) {
$dbc = NewADOConnection($this->ser_type);
$dbc->Connect($this->ser_host, $this->ser_user, $this->ser_pass, $this->ser_name);
}
return $dbc;
}
function ser_voip_provisioning(&$prod_plugin)
{
parent::voip_provisioning($prod_plugin);
# Load our needed configuration items
$this->ser_ip = $prod_plugin->plugin_data['ser_ip'];
$this->ser_host = $prod_plugin->plugin_data['ser_db_host'];
$this->ser_name = $prod_plugin->plugin_data['ser_db_name'];
$this->ser_user = $prod_plugin->plugin_data['ser_db_user'];
$this->ser_pass = $prod_plugin->plugin_data['ser_db_pass'];
$this->tbl_subscriber = $prod_plugin->plugin_data['ser_db_subscriber'];
$this->tbl_alias = $prod_plugin->plugin_data['ser_db_alias'];
$this->tbl_group = $prod_plugin->plugin_data['ser_db_grp'];
$this->tbl_acc = $prod_plugin->plugin_data['ser_db_acc'];
}
function addCustom(&$didClass)
{
}
function removeCustom(&$didClass)
{
}
function addDID(&$didClass)
{
if(!is_a($didClass,'voipDID')) die('parameter must of voipDID');
$this->load_config();
$db =& DB();
$account = $db->Execute(sqlSelect($db,"account","*","id=::".$didClass->getAccountID()."::"));
$pw = $this->generate_secret($didClass);
$dbs =& $this->DBFactory();
$f = array(
'phplib_id' => md5($didClass->getDID()),
'username' => $didClass->getDID(),
'domain' => $this->voip_domain,
'password' => $pw,
'first_name' => $account->fields['first_name'],
'last_name' => $account->fields['last_name'],
'flag' => 'o',
'ha1' => md5($didClass->getDID().":".$this->voip_domain.":".$pw),
'ha1b' => md5($didClass->getDID()."@".$this->voip_domain.":".$this->voip_domain.":".$pw)
);
$fsql = ""; $vsql = "";
foreach($f as $fld => $val) {
$fsql .= $fld.",";
$vsql .= $db->qstr($val).",";
}
$fsql = substr($fsql,0,strlen($fsql)-1);
$vsql = substr($vsql,0,strlen($vsql)-1);
$sql = "INSERT INTO ".$this->tbl_subscriber." ($fsql) VALUES ($vsql)";
#echo $sql."<br>";
if(!$dbs->Execute($sql)) echo $dbs->ErrorMsg();
# store off the group permissions
$grps = explode(",",str_replace(" ","",$this->prod_plugin->plugin_data['context']));
foreach($grps as $group) {
$f = array(
'username' => $db->qstr($didClass->getDID()),
'domain' => $db->qstr($this->voip_domain),
'grp' => $db->qstr($group),
'last_modified' => 'NOW()'
);
$fsql = ""; $vsql = "";
foreach($f as $fld => $val) {
$fsql .= $fld.",";
$vsql .= $val.",";
}
$fsql = substr($fsql,0,strlen($fsql)-1);
$vsql = substr($vsql,0,strlen($vsql)-1);
$sql = "INSERT INTO ".$this->tbl_group." ($fsql) VALUES ($vsql)";
#echo $sql."<br />";
if(!$dbs->Execute($sql)) echo $dbs->ErrorMsg();
}
}
function addVirtualDID(&$didClass)
{
if(!is_a($didClass,'voipDID')) die("Parameter is not a voipDID class.");
$this->load_config();
$db =& DB();
$parent_did = $this->prod_plugin->get_parent_did($this->prod_plugin->prod_attr_cart['parent_service_id']);
$contact = 'sip:'.$parent_did.'@'.$this->ser_ip;
$dbs =& $this->DBFactory();
$f = array(
'username' => $dbs->qstr($didClass->getDID()),
'domain' => $dbs->qstr($this->voip_domain),
'contact' => $dbs->qstr($contact),
'expires' => $dbs->qstr('2010-12-25 01:01:01'),
'q' => '1',
'callid' => $dbs->qstr('The-Answer-To-The-Ultimate-Question-Of-Life-Universe-And-Everything'),
'cseq' => '42',
'last_modified' => 'NOW()',
'replicate' => '0',
'state' => '0',
'flags' => '128',
'user_agent' => $dbs->qstr('AgileVoice')
);
$fsql = ""; $vsql = "";
foreach($f as $fld => $val) {
$fsql .= $fld.",";
$vsql .= $val.",";
}
$fsql = substr($fsql,0,strlen($fsql)-1);
$vsql = substr($vsql,0,strlen($vsql)-1);
$sql = "INSERT INTO ".$this->tbl_alias." ($fsql) VALUES ($vsql)";
#echo $sql."<br>";
if(!$dbs->Execute($sql)) echo $dbs->ErrorMsg();
}
function deleteDID(&$didClass)
{
if(!is_a($didClass,'voipDID')) die('parameter must be of voipDID');
$this->load_config();
$dbs =& $this->DBFactory();
$sql = "DELETE FROM ".$this->tbl_subscriber." WHERE username=".$dbs->qstr($didClass->getDID())." AND
domain=".$dbs->qstr($this->voip_domain);
#echo $sql."<br>";
$dbs->Execute($sql);
}
function deleteVirtualDID(&$didClass)
{
if(!is_a($didClass,'voipDID')) die('parameter must be of voipDID');
$this->load_config();
$dbs =& $this->DBFactory();
$sql = "DELETE FROM ".$this->tbl_alias." WHERE username=".$dbs->qstr($didClass->getDID())." AND
domain=".$dbs->qstr($this->voip_domain);
#echo $sql."<br>";
$dbs->Execute($sql);
}
}
class asterisk_voip_provisioning extends voip_provisioning
{
function asterisk_voip_provisioning(&$prod_plugin)
{
parent::voip_provisioning($prod_plugin);
}
function addCustom(&$didClass)
{
;
}
function removeCustom(&$didClass)
{
;
}
function addDID(&$didClass)
{
if(!is_a($didClass,'voipDID')) die('parameter must of voipDID');
$this->load_config();
$db =& DB();
$account = $db->Execute(sqlSelect($db,"account","*","id=::".$didClass->getAccountID()."::"));
$pw = $this->generate_secret($didClass);
$fullname = trim($account->fields['first_name']." ".$account->fields['last_name']);
$channel = 'SIP';
$channel_table = 'voip_sip';
$channel_key = 'sip';
if(@$this->prod_plugin->plugin_data['provision_channel'] == 1) {
$channel = 'IAX2';
$channel_table = 'voip_iax';
$channel_key = 'iax';
}
$sql = "delete from ".AGILE_DB_PREFIX.$channel_table." WHERE
$channel_key=".$db->qstr($didClass->getDID())." and site_id=".$db->qstr(DEFAULT_SITE);
#echo $sql."<br>";
$db->Execute($sql);
$f = array(
'account' => $didClass->getDID(),
'canreinvite' => 'no',
'insecure' => 'very',
'dtmfmode' => 'rfc2833',
'host' => 'dynamic',
'nat' => 'yes',
'qualify' => '5000',
'secret' => $pw,
'type' => 'friend',
'username' => $didClass->getDID(),
'context' => 'default',
'callerid' => sprintf("\"%s\" <%s>", $fullname, $didClass->getDID())
);
if(strlen($this->prod_plugin->plugin_data['context']))
$f['context'] = $this->prod_plugin->plugin_data['context'];
if($this->prod_plugin->plugin_data['voicemail_enabled'])
$f['mailbox'] = $didClass->getDID();
if($didClass->getCallWaiting() == 0)
$f['incominglimit'] = '1';
foreach($f as $fld => $val) {
$flds = array(
$channel_key => $didClass->getDID(),
'keyword' => $fld,
'data' => $val,
'flags' => ''
);
$sql = sqlInsert($db,$channel_table,$flds);
#echo $sql."<br />";
$db->Execute($sql);
}
}
function addVirtualDID(&$didClass)
{
if(!is_a($didClass,'voipDID')) die("Parameter is not a voipDID class.");
$this->load_config();
$db =& DB();
# A virtual DID is just a regular DID that has a channelarg set to the parent DIDs number
$parent_did = $this->prod_plugin->get_parent_did($this->prod_plugin->prod_attr_cart['parent_service_id']);
$didClass->setChannelArg($parent_did);
}
function deleteDID(&$didClass)
{
if(!is_a($didClass,'voipDID')) die('parameter must be of voipDID');
}
function deleteVirtualDID(&$didClass)
{
if(!is_a($didClass,'voipDID')) die('parameter must be of voipDID');
}
}
class plgn_prov_VOIP extends base_voip_plugin
{
function plgn_prov_VOIP()
{
$this->name = 'VOIP';
$this->task_based = false;
$this->remote_based = true;
}
function delete_cart($VAR, $cart)
{
parent::delete_cart($VAR, $cart, false);
}
function validate_cart($VAR,$product)
{
// verify that attr['station'] is defined and numeric
@$did = $VAR['attr']['station'];
$ported = 0;
if (@$VAR['attr']['ported']) {
$did = $VAR['attr']['ported'];
$ported = 1;
}
$db =& DB();
$rs = $db->Execute(sqlSelect($db,"product","prod_plugin_data","id=::".$VAR['product_id']));
$prod_plugin_data = unserialize($rs->fields['prod_plugin_data']);
if(!empty($VAR['attr']['parent_service_id']) || $prod_plugin_data['rate_accountcode'] == 1)
return true;
if((empty($did) || !is_numeric($did)))
return "Sorry, the DID format specified is incorrect.";
return parent::validate_cart($VAR, $product, $did, $ported);
}
function getDID(&$ported)
{
$did = str_replace("-","",@$this->prod_attr_cart['station']);
if (strlen(@$this->prod_attr_cart['ported'])) {
$did = $this->prod_attr_cart['ported'];
$ported = true;
}
return $did;
}
# add new service
function p_new()
{
#echo 'p_new<br />';
$db = &DB();
if (empty($this->prod_attr_cart['parent_service_id'])) {
$this->prod_attr_cart['parent_service_id'] = 0;
}
#echo 'Retrieving did.<br />';
$ported = false;
$did = $this->getDID($ported);
#echo 'DID is: '.$did.'<br />';
switch(@$this->plugin_data['voip_platform']) {
case 'ser':
$vp = new ser_voip_provisioning($this);
#echo 'Created ser<br />';
break;
case 'asterisk':
default:
$vp = new asterisk_voip_provisioning($this);
#echo 'Created asterisk<br />';
}
if($this->plugin_data['rate_accountcode'])
return true;
# figure out which object to load
#echo 'Creating voipDID.<br />';
$didClass = new voipDID;
if($this->prod_attr_cart['parent_service_id'] && !$this->plugin_data['virtual_number']) {
$didClass->load($this->get_parent_did($this->prod_attr_cart['parent_service_id']));
} else {
# new did needs create
$didClass->setDID($did);
$didClass->setAccountID($this->account['id']);
$didClass->setServiceID($this->service['id']);
$didClass->setServiceParentID($this->prod_attr_cart['parent_service_id']);
$didClass->setActive(1);
$didClass->insert();
#echo 'Loading didClass.<br />';
$didClass->load($did);
# go ahead and call the did plugin's purchase method,
# if the number isn't ported
if($ported==false && $vp->call_did_plugin($didClass,'purchase') == false) {
# purchase method failed. Post an error message and bomb out
$didClass->delete();
return false;
}
if($this->plugin_data['virtual_number']) {
# provision a virtual number
$vp->addVirtualDID($didClass);
} else {
# provision a regular number
$vp->addDID($didClass);
}
}
#echo 'Set channel and features.<br />';
# set the channel type
$didClass->setChannel('SIP');
if(@$this->plugin_data['provision_channel'] == 1)
$didClass->setChannel('IAX2');
# set all of the features entailed with this account
if(@$this->plugin_data['cnam_enabled'])
$didClass->setCNAM(1);
if(@$this->plugin_data['blacklist_enabled'])
$didClass->setBlacklist(1);
if(@$this->plugin_data['anirouting_enabled'])
$didClass->setANIRouting(1);
if(@$this->plugin_data['can_failover'])
$didClass->setFailover(1);
if(@$this->plugin_data['remote_call_forwarding'])
$didClass->setRemoteCallForwarding(1);
if(@$this->plugin_data['fax_account'])
$didClass->setFax(1,$this->account['email']);
if(@$this->plugin_data['meetme_account'])
$didClass->setConference(1, $this->plugin_data['meetme_min_limit']);
if(@$this->plugin_data['faxdetection_enabled'])
$didClass->setFaxDetection(1,$this->account['email']);
if(@$this->plugin_data['callwaiting_enabled'])
$didClass->setCallWaiting(1);
# Callforward and Busycallforward are missing!
if(@$this->plugin_data['voicemail_enabled']) {
# provision voicemail to this account
$didClass->setVoicemail(1);
$vp->add_voicemail($didClass);
}
# Call custom handler
# SER -> add entries to 'group' table
$vp->addCustom($didClass);
$didClass->save();
#echo 'Called save voipDID.<br />';
if($this->plugin_data['innetwork_enabled']) {
# set this number to innetwork
$vp->add_in_network($didClass);
}
# send the user the details
include_once(PATH_MODULES.'email_template/email_template.inc.php');
$email = new email_template;
$email->send('voip_new_service', $this->account['id'], $this->service_id, $did, $did);
# send the admin the provisioning details
include_once(PATH_MODULES.'email_template/email_template.inc.php');
$email = new email_template;
$email->send('admin->voip_manual', $this->account['id'], $this->service_id, $did, 'Provision VoIP Adaptor');
return true;
}
function p_inactive()
{
$db = &DB();
if (empty($this->prod_attr_cart['parent_service_id'])) {
$this->prod_attr_cart['parent_service_id'] = 0;
}
$ported = false;
$did = $this->getDID($ported);
switch(@$this->plugin_data['voip_platform']) {
case 'ser':
$vp = new ser_voip_provisioning($this);
break;
case 'asterisk':
default:
$vp = new asterisk_voip_provisioning($this);
}
# figure out which didVOIP object to load
$didClass = new voipDID;
$didClass->load($this->get_parent_did($this->prod_attr_cart['parent_service_id']));
$didClass->setActive(0);
$didClass->save();
return true;
}
function p_active()
{
$db = &DB();
if (empty($this->prod_attr_cart['parent_service_id'])) {
$this->prod_attr_cart['parent_service_id'] = 0;
}
$ported = false;
$did = $this->getDID($ported);
switch(@$this->plugin_data['voip_platform']) {
case 'ser':
$vp = new ser_voip_provisioning($this);
break;
case 'asterisk':
default:
$vp = new asterisk_voip_provisioning($this);
}
# figure out which didVOIP object to load
$didClass = new voipDID;
$didClass->load($this->get_parent_did($this->prod_attr_cart['parent_service_id']));
$didClass->setActive(1);
$didClass->save();
return true;
}
function p_delete()
{
$db = &DB();
if (empty($this->prod_attr_cart['parent_service_id'])) {
$this->prod_attr_cart['parent_service_id'] = 0;
}
$debug = "";
$ported = false;
$did = $this->getDID($ported);
switch(@$this->plugin_data['voip_platform']) {
case 'ser':
$vp = new ser_voip_provisioning($this);
break;
case 'asterisk':
default:
$vp = new asterisk_voip_provisioning($this);
}
# figure out which object to load
$didClass = new voipDID;
if($this->prod_attr_cart['parent_service_id'] && $this->plugin_data['virtual_number'] != 1) {
$didClass->load($this->get_parent_did($this->prod_attr_cart['parent_service_id']));
} else {
$didClass->load($did);
}
# set all of the features entailed with this account
if(@$this->plugin_data['cnam_enabled'])
$didClass->setCNAM(0);
if(@$this->plugin_data['blacklist_enabled'])
$didClass->setBlacklist(0);
if(@$this->plugin_data['anirouting_enabled'])
$didClass->setANIRouting(0);
if(@$this->plugin_data['can_failover'])
$didClass->setFailover(0);
if(@$this->plugin_data['remote_call_forwarding'])
$didClass->setRemoteCallForwarding(0);
if(@$this->plugin_data['fax_account'])
$didClass->setFax(0,$this->account['email']);
if(@$this->plugin_data['meetme_account'])
$didClass->setConference(0, $this->plugin_data['meetme_min_limit']);
if(@$this->plugin_data['faxdetection_enabled'])
$didClass->setFaxDetection(0, $this->account['email']);
# Callforward and Busycallforward are missing!
if(@$this->plugin_data['voicemail_enabled']) {
# provision voicemail to this account
$vp->delete_voicemail($didClass);
}
if(@$this->plugin_data['provision_enabled']) {
$didClass->setActive(0);
if($this->plugin_data['virtual_number']) {
# have ser provision a virtual number
$vp->deleteVirtualDID($didClass);
} else {
# have ser provision a regular number
$vp->deleteDID($didClass);
}
if($this->plugin_data['innetwork_enabled']) {
$vp->delete_in_network($didClass);
}
# go ahead and call the did plugin's release method,
# if the number wasn't ported
if($ported == false && $vp->call_did_plugin($didClass,'release') == false) {
# Post an error message
;
}
$didClass->delete();
} else {
$didClass->save();
}
return true;
}
function p_one($id)
{
$db =& DB();
# Get the asterisk global configuration
$sql = sqlSelect($db, "voip", "voip_vm_passwd, voip_secret_gen", "");
$rs = $db->Execute($sql);
$this->voip_vm_passwd = $rs->fields['voip_vm_passwd'];
$this->voip_secret_gen = $rs->fields['voip_secret_gen'];
# pass onto the parent class
parent::p_one($id);
}
# send a debugging email
function sendDebug($defined_vars, $d = 'Nothing')
{
$ignorelist=array("HTTP_POST_VARS","HTTP_GET_VARS",
"HTTP_COOKIE_VARS","HTTP_SERVER_VARS","_SERVER",
"HTTP_ENV_VARS","HTTP_SESSION_VARS",
"_ENV","PHPSESSID","SESS_DBUSER",
"SESS_DBPASS","HTTP_COOKIE");
$timestamp=date("m/d/Y h:j:s");
$message="Debug report created $timestamp\n";
$message .= "\n\nLocally generated messages:\n\n";
$message .= $d;
if (defined('PROVISIONING_DEBUG')) {
mail('me@me.com','VOIP Plugin Debug for '.URL,$message);
}
}
}
?>