154 lines
4.2 KiB
PHP
154 lines
4.2 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>
|
||
|
* @package AgileBill
|
||
|
* @version 1.4.93
|
||
|
*/
|
||
|
|
||
|
require_once PATH_MODULES.'voip/base_voip_plugin.inc.php';
|
||
|
|
||
|
class plgn_prov_PREPAID extends base_voip_plugin
|
||
|
{
|
||
|
function plgn_prov_PREPAID()
|
||
|
{
|
||
|
$this->name = 'PREPAID';
|
||
|
$this->task_based = false;
|
||
|
$this->remote_based = true;
|
||
|
}
|
||
|
|
||
|
function delete_cart($VAR, $cart)
|
||
|
{
|
||
|
parent::delete_cart($VAR, $cart, true);
|
||
|
}
|
||
|
|
||
|
function validate_cart($VAR, $product)
|
||
|
{
|
||
|
// check if prepaid type is ani or pin, if so, escape:
|
||
|
$unserial = unserialize($product->fields['prod_plugin_data']);
|
||
|
if(!empty($unserial['type']) && ( $unserial['type']=='ani' || $unserial['type']=='pin' ) ) return true;
|
||
|
|
||
|
// verify that attr['station'] is defined and numeric
|
||
|
@$did = $VAR['attr']['station'];
|
||
|
$ported = 0;
|
||
|
if (@$VAR['attr']['ported']) {
|
||
|
$did = $VAR['attr']['ported'];
|
||
|
$ported = 1;
|
||
|
}
|
||
|
if(empty($did) || !is_numeric($did))
|
||
|
return "Sorry, the DID format specified is incorrect.";
|
||
|
|
||
|
// check if user owns did && is in did pool
|
||
|
$db =& DB();
|
||
|
$didrs = $db->Execute(sqlSelect($db,"voip_did","id,did","did = ::{$did}:: AND account_id=".SESS_ACCOUNT));
|
||
|
if($didrs && $didrs->RecordCount()>0) return true;
|
||
|
|
||
|
return parent::validate_cart($VAR, $product, $did, $ported);
|
||
|
}
|
||
|
|
||
|
# add new service
|
||
|
function p_new()
|
||
|
{
|
||
|
# todo: check that the pin is random!
|
||
|
include_once(PATH_MODULES.'voip_prepaid/voip_prepaid.inc.php');
|
||
|
$prepaid= new voip_prepaid;
|
||
|
|
||
|
# determine the prepaid type:
|
||
|
switch($this->product_attr['type']) {
|
||
|
case 'did':
|
||
|
return $prepaid->provision_did_new($this);
|
||
|
break;
|
||
|
case 'ani':
|
||
|
return $prepaid->provision_ani_new($this);
|
||
|
break;
|
||
|
case 'pin':
|
||
|
return $prepaid->provision_pin_new($this);
|
||
|
break;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
# edit service
|
||
|
function p_edit()
|
||
|
{
|
||
|
# determine the prepaid type:
|
||
|
switch($this->product_attr['type']) {
|
||
|
case 'did':
|
||
|
include_once(PATH_PLUGINS.'product/VOIP.php');
|
||
|
$voip = new plgn_prov_VOIP;
|
||
|
if(!$voip->p_one($this->service_id)) return false;
|
||
|
break;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
# activate service
|
||
|
function p_inactive()
|
||
|
{
|
||
|
$db=&DB();
|
||
|
$rs = $db->Execute(sqlSelect($db,"voip_did","id,did","service_id = $this->service_id"));
|
||
|
$did_id = $rs->fields['id'];
|
||
|
$fields=Array('in_use'=>2);
|
||
|
$db->Execute(sqlUpdate($db,"voip_prepaid",$fields,"voip_did_id = {$did_id}"));
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
# deactivate service
|
||
|
function p_active()
|
||
|
{
|
||
|
$db=&DB();
|
||
|
$rs = $db->Execute(sqlSelect($db,"voip_did","id,did","service_id = $this->service_id"));
|
||
|
$did_id = $rs->fields['id'];
|
||
|
$fields=Array('in_use'=>0);
|
||
|
$db->Execute(sqlUpdate($db,"voip_prepaid",$fields,"voip_did_id = {$did_id}"));
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
# delete service
|
||
|
function p_delete()
|
||
|
{
|
||
|
$db =& DB();
|
||
|
# determine the prepaid type:
|
||
|
switch($this->product_attr['type']) {
|
||
|
case 'ani':
|
||
|
$sql = sqlDelete($db,"voip_prepaid","pin=::{$this->prod_attr_cart['ani_new']}::");
|
||
|
$db->Execute($sql);
|
||
|
break;
|
||
|
case 'did':
|
||
|
include_once(PATH_PLUGINS.'product/VOIP.php');
|
||
|
$voip = new plgn_prov_VOIP;
|
||
|
$voip->p_one($this->service_id);
|
||
|
break;
|
||
|
}
|
||
|
$rs = $db->Execute($sql=sqlSelect($db,"voip_did","id,did","service_id = $this->service_id"));
|
||
|
$did_id = $rs->fields['id'];
|
||
|
$db->Execute($sql=sqlDelete($db,"voip_prepaid","voip_did_id = {$did_id}"));
|
||
|
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'];
|
||
|
|
||
|
parent::p_one($id);
|
||
|
}
|
||
|
}
|
||
|
?>
|