diff --git a/library/NGNPro/Records/SipAccounts.php b/library/NGNPro/Records/SipAccounts.php
index 8d190e8..d015dee 100644
--- a/library/NGNPro/Records/SipAccounts.php
+++ b/library/NGNPro/Records/SipAccounts.php
@@ -1,1267 +1,1278 @@
'Change date',
'username' => 'Username',
'domain' => 'Domain'
);
var $store_clear_text_passwords=true;
var $default_account_type = 'postpaid';
var $group_filter_list = array('blocked' => 'Blocked',
'quota' => 'Quota Exceeded',
'prepaid' => 'Prepaid',
'free-pstn' => 'PSTN Access',
'anonymous' => 'Anonymous',
'anonymous-reject' => 'Reject Anonymous',
'voicemail' => 'Has Voicemail',
'missed-calls' => 'Missed Calls',
'trunking' => 'Trunking'
);
public function __construct($SoapEngine)
{
dprint("init SipAccounts");
$this->filters = array('username' => strtolower(trim($_REQUEST['username_filter'])),
'domain' => strtolower(trim($_REQUEST['domain_filter'])),
'firstname'=> trim($_REQUEST['firstname_filter']),
'lastname' => trim($_REQUEST['lastname_filter']),
'email' => htmlspecialchars(trim($_REQUEST['email_filter'])),
'owner' => trim($_REQUEST['owner_filter']),
'customer' => trim($_REQUEST['customer_filter']),
'reseller' => trim($_REQUEST['reseller_filter']),
'group' => trim($_REQUEST['group_filter'])
);
parent::__construct($SoapEngine);
if (strlen($this->SoapEngine->call_limit)) {
$this->platform_call_limit = $this->SoapEngine->call_limit;
} else {
$this->platform_call_limit;
}
$this->getTimezones();
}
function getRecordKeys() {
if (preg_match("/^(.*)@(.*)$/",$this->filters['username'], $m)) {
$this->filters['username'] = $m[1];
$this->filters['domain'] = $m[2];
}
// Filter
$filter=array('username' => $this->filters['username'],
'domain' => $this->filters['domain'],
'firstName'=> $this->filters['firstname'],
'lastName' => $this->filters['lastname'],
'email' => $this->filters['email'],
'owner' => intval($this->filters['owner']),
'customer' => intval($this->filters['customer']),
'reseller' => intval($this->filters['reseller']),
'groups' => array($this->filters['group'])
);
// Range
$range=array('start' => 0,
'count' => 500
);
// Order
if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate';
if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC';
$orderBy = array('attribute' => $this->sorting['sortBy'],
'direction' => $this->sorting['sortOrder']
);
// Compose query
$Query=array(
'filter' => $filter,
'orderBy' => $orderBy,
'range' => $range
);
// Insert credetials
$this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth);
$this->log_action('getAccounts');
// Call function
$result = $this->SoapEngine->soapclient->getAccounts($Query);
if ((new PEAR)->isError($result)) {
$error_msg = $result->getMessage();
$error_fault= $result->getFault();
$error_code = $result->getCode();
$log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring);
syslog(LOG_NOTICE, $log);
return false;
} else {
foreach ($result->accounts as $account) {
$this->selectionKeys[]=array('username' => $account->id->username,
'domain' => $account->id->domain
);
}
return true;
}
return false;
}
function listRecords()
{
$this->getAllowedDomains();
if (preg_match("/^(.*)@(.*)$/",$this->filters['username'], $m)) {
$this->filters['username'] = $m[1];
$this->filters['domain'] = $m[2];
}
$this->showSeachForm();
// Filter
$filter=array('username' => $this->filters['username'],
'domain' => $this->filters['domain'],
'firstName'=> $this->filters['firstname'],
'lastName' => $this->filters['lastname'],
'email' => $this->filters['email'],
'owner' => intval($this->filters['owner']),
'customer' => intval($this->filters['customer']),
'reseller' => intval($this->filters['reseller']),
'groups' => array($this->filters['group'])
);
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
// Range
$range=array('start' => intval($this->next),
'count' => intval($this->maxrowsperpage)
);
// Order
if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate';
if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC';
$orderBy = array('attribute' => $this->sorting['sortBy'],
'direction' => $this->sorting['sortOrder']
);
// Compose query
$Query=array('filter' => $filter,
'orderBy' => $orderBy,
'range' => $range
);
// Insert credentials
$this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth);
$this->log_action('getAccounts');
// Call function
$result = $this->SoapEngine->soapclient->getAccounts($Query);
if ((new PEAR)->isError($result)) {
$error_msg = $result->getMessage();
$error_fault= $result->getFault();
$error_code = $result->getCode();
$log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring);
syslog(LOG_NOTICE, $log);
return false;
} else {
$this->rows = $result->total;
if ($this->rows && $action != 'PerformActions' && $action != 'Delete') {
$this->showActionsForm();
}
print "
$this->rows records found
Id |
SIP account";
$this->showSortCaret('username');
if ($this->sorting['sortBy'] == 'domain' ) {
print " (domain ";
$this->showSortCaret('domain');
print ")";
}
print " |
Full name |
Email address |
Timezone |
Capacity |
Quota |
Balance |
Owner |
Change date";
$this->showSortCaret('changeDate');
print " |
Actions |
";
if (!$this->next) $this->next=0;
if ($this->rows > $this->maxrowsperpage) {
$maxrows = $this->maxrowsperpage + $this->next;
if ($maxrows > $this->rows) $maxrows = $this->maxrowsperpage;
} else {
$maxrows=$this->rows;
}
if ($this->rows) {
$i=0;
$_prepaid_accounts=array();
while ($i < $maxrows) {
if (!$result->accounts[$i]) break;
$account = $result->accounts[$i];
if ($account->prepaid) {
$_prepaid_accounts[]=array("username" => $account->id->username,
"domain" => $account->id->domain
);
}
$i++;
}
if (count($_prepaid_accounts)) {
// Insert credetials
$this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth);
$this->log_action('getPrepaidStatus');
// Call function
$result1 = $this->SoapEngine->soapclient->getPrepaidStatus($_prepaid_accounts);
if (!(new PEAR)->isError($result1)) {
$j=0;
foreach ($result1 as $_account) {
$_sip_account=sprintf("%s@%s",$_prepaid_accounts[$j]['username'], $_prepaid_accounts[$j]['domain']);
$_prepaid_balance[$_sip_account]=$_account->balance;
$j++;
}
}
}
$i=0;
while ($i < $maxrows) {
if (!$result->accounts[$i]) break;
$account = $result->accounts[$i];
$index=$this->next+$i+1;
- $_url = $this->url.'&'.$this->addFiltersToURL().sprintf("&service=%s&action=Delete",
- urlencode($this->SoapEngine->service)
+ $deleteUrl = array(
+ 'service' => $this->SoapEngine->service,
+ 'action' => 'Delete',
+ 'key' => $account->id->username
);
if (!$this->filters['domain']) {
- $_url .= sprintf("&domain_filter=%s",urlencode($account->id->domain));
+ $deleteUrl['domain_filter'] = $account->id->domain;
}
if (!$this->filters['username']) {
- $_url .= sprintf("&username_filter=%s",urlencode($account->id->username));
+ $deleteUrl['username_filter'] = $account->id->username;
}
- $_url.= sprintf("&key=%s",urlencode($account->id->username));
-
if ($action == 'Delete' &&
$_REQUEST['key'] == $account->id->username &&
$_REQUEST['domain_filter'] == $account->id->domain) {
- $_url .= "&confirm=1";
+ $deleteUrl['confirm'] = 1;
$actionText = "Confirm";
} else {
$actionText = "Delete";
}
if ($account->reseller) {
$reseller_sip_settings_page=$account->reseller;
} else if ($this->SoapEngine->impersonate) {
// use the reseller from the soap engine
$reseller_sip_settings_page=$this->SoapEngine->impersonate;
} else {
// use the reseller from the login
$reseller_sip_settings_page=$this->reseller;
}
if ($this->sip_settings_page) {
- $url=sprintf('%s?account=%s@%s&sip_engine=%s',
- $this->sip_settings_page,urlencode($account->id->username),$account->id->domain, $this->SoapEngine->sip_engine);
+ $settingsUrl = array(
+ 'account' => sprintf('%s@%s', $account->id->username, $account->id->domain),
+ 'sip_engine' => $this->SoapEngine->sip_engine
+ );
if ($this->adminonly) {
- $url .= sprintf('&reseller=%s',$reseller_sip_settings_page);
- $url .= sprintf('&adminonly=%s',$this->adminonly);
+ $settingsUrl['reseller'] = $reseller_sip_settings_page;
+ $settingsUrl['adminonly'] = $this->adminonly;
} else {
- if ($account->reseller == $this->reseller) $url .= sprintf('&reseller=%s',$reseller_sip_settings_page);
+ if ($account->reseller == $this->reseller) $settingsUrl['reseller'] = $reseller_sip_settings_page;
}
foreach (array_keys($this->SoapEngine->extraFormElements) as $element) {
if (!strlen($this->SoapEngine->extraFormElements[$element])) continue;
- $url .= sprintf('&%s=%s',$element,urlencode($this->SoapEngine->extraFormElements[$element]));
+ $settingsUrl[$element] = $this->SoapEngine->extraFormElements[$elememt];
}
- $sip_account=sprintf("
-
- %s@%s",$url, $account->id->username, $account->id->domain);
+ $sip_account = sprintf(
+ "
+ %s@%s",
+ $this->sip_settings_page,
+ http_build_query($settingsUrl),
+ $account->id->username,
+ $account->id->domain
+ );
} else {
- $sip_account=sprintf("%s@%s",$account->id->username, $account->id->domain);
+ $sip_account = sprintf("%s@%s",$account->id->username, $account->id->domain);
}
/*
$_customer_url = $this->url.sprintf("&service=customers@%s&customer_filter=%s",
urlencode($this->SoapEngine->customer_engine),
urlencode($account->customer));
*/
if ($account->owner) {
- $_owner_url = sprintf
- ("%s",
- $this->url,
- urlencode($this->SoapEngine->soapEngine),
- urlencode($account->owner),
- $account->owner
+ $ownersUrlData = array(
+ 'service' => sprintf('customers@%s', $this->SoapEngine->soapEngine),
+ 'customer_filter' => $account->owner
+ );
+ $_owner_url = sprintf(
+ '%s',
+ $this->url,
+ http_build_query($ownersUrlData),
+ $account->owner
);
} else {
$_owner_url='';
}
- $prepaid_account=sprintf("%s@%s",$account->id->username, $account->id->domain);
+ $prepaid_account = sprintf("%s@%s", $account->id->username, $account->id->domain);
if ($account->callLimit) {
$callLimit = $account->callLimit;
} else if ($this->platform_call_limit) {
$callLimit = $this->platform_call_limit;
} else {
$callLimit = '';
}
- printf("
-
- %s |
- %s |
- %s %s |
- %s |
- %s |
- %s |
- %s |
- %s |
- %s |
- %s |
- %s |
-
- ",
- $index,
- $sip_account,
- $account->firstName,
- $account->lastName,
- $account->email,
- $account->email,
- $account->timezone,
- $callLimit,
- $account->quota,
- $_prepaid_balance[$prepaid_account],
- $_owner_url,
- $account->changeDate,
- $_url,
- $actionText
+ printf(
+ '
+
+ %s |
+ %s |
+ %s %s |
+ %s |
+ %s |
+ %s |
+ %s |
+ %s |
+ %s |
+ %s |
+ %s |
+
+ ',
+ $index,
+ $sip_account,
+ $account->firstName,
+ $account->lastName,
+ $account->email,
+ $account->email,
+ $account->timezone,
+ $callLimit,
+ $account->quota,
+ $_prepaid_balance[$prepaid_account],
+ $_owner_url,
+ $account->changeDate,
+ $this->url.'&'.$this->addFiltersToURL().'&'.http_build_query($deleteUrl),
+ $actionText
);
$i++;
}
}
print "
";
$this->showPagination($maxrows);
return true;
}
}
function showSeachFormCustom()
{
printf ("
Account
",$this->filters['username']);
printf ("@");
if (count($this->allowedDomains) > 0) {
if ($this->filters['domain'] && !in_array($this->filters['domain'], $this->allowedDomains)) {
printf ("",$this->filters['domain']);
} else {
$selected_domain[$this->filters['domain']]='selected';
printf ("\n");
}
} else {
printf ("",$this->filters['domain']);
}
printf (" FN
\n",$this->filters['firstname']);
printf (" LN
\n",$this->filters['lastname']);
printf (" Email
\n",$this->filters['email']);
printf (" Owner
\n",$this->filters['owner']);
$selected_group[$this->filters['group']]='selected';
print "";
}
function deleteRecord($dictionary=array())
{
if (!$dictionary['confirm'] && !$_REQUEST['confirm']) {
print "Please press on Confirm to confirm the delete. ";
return true;
}
if ($dictionary['username']) {
$username=$dictionary['username'];
} else {
$username=$_REQUEST['key'];
}
if ($dictionary['domain']) {
$domain=$dictionary['domain'];
} else {
$domain=$this->filters['domain'];
}
if (!strlen($username) || !strlen($domain)) {
print "
Error: missing SIP account username or domain. ";
return false;
}
$account=array('username' => $username,
'domain' => $domain
);
$function=array('commit' => array('name' => 'deleteAccount',
'parameters' => array($account),
'logs' => array('success' => sprintf('SIP account %s@%s has been deleted',$_REQUEST['key'], $this->filters['domain'])
)
)
);
foreach (array_keys($this->filters) as $_filter) {
if ($_filter == 'username' || $_filter == 'domain') continue;
$new_filters[$_filter]=$this->filters[$_filter];
}
$this->filters=$new_filters;
return $this->SoapEngine->execute($function, $this->html);
}
function showAddForm()
{
if ($this->filters['username']) return;
if (!count($this->allowedDomains)) {
print "
You must create at least one SIP domain before adding SIP accounts
";
return false;
}
printf ("
";
}
function addRecord($dictionary = array())
{
dprint_r($dictionary);
if ($dictionary['account']) {
$account_els = explode("@", $dictionary['account']);
$this->skipSaveProperties=true;
} else {
$account_els = explode("@", trim($_REQUEST['account']));
}
list($customer, $reseller) = $this->customerFromLogin($dictionary);
$username=$account_els[0];
if (strlen($account_els[1])) {
$domain=$account_els[1];
} else if ($dictionary['domain']) {
$domain=$dictionary['domain'];
} else if ($_REQUEST['domain']) {
$domain=trim($_REQUEST['domain']);
} else {
printf ("Error: Missing SIP domain");
return false;
}
if (!$this->validDomain($domain)) {
print "Error: invalid domain name";
return false;
}
if ($dictionary['fullname']) {
$name_els = explode(" ", $dictionary['fullname']);
} else {
$name_els = explode(" ", trim($_REQUEST['fullname']));
}
if (strlen($name_els[0])) {
$firstName=$name_els[0];
} else {
$firstName='Account';
}
if (strlen($name_els[1])) {
$j=1;
while ($j < count($name_els)) {
$lastName .= $name_els[$j].' ';
$j++;
}
} else {
if ($username=="") {
$lastName="Unknown";
} else {
$lastName=$username;
}
}
$lastName=trim($lastName);
if (strlen($dictionary['timezone'])) {
$timezone=$dictionary['timezone'];
} else if (strlen(trim($_REQUEST['timezone']))) {
$timezone=trim($_REQUEST['timezone']);
} else if ($this->SoapEngine->default_timezone) {
$timezone=$this->SoapEngine->default_timezone;
} else {
$timezone='Europe/Amsterdam';
}
if (!in_array($timezone, $this->timezones)) {
$timezone='Europe/Amsterdam';
}
if (strlen($dictionary['password'])) {
$password=$dictionary['password'];
} else if (strlen(trim($_REQUEST['password']))) {
$password=trim($_REQUEST['password']);
} else {
$password=$this->RandomString(10);
}
if (is_array($dictionary['groups'])) {
$groups=$dictionary['groups'];
} else {
$groups=array();
}
if (is_array($dictionary['ip_access_list'])) {
$ip_access_list=$dictionary['ip_access_list'];
} else {
$ip_access_list=array();
}
if (strlen($dictionary['call_limit'])) {
$call_limit=$dictionary['call_limit'];
} else {
$call_limit=$_REQUEST['call_limit'];
}
if($dictionary['pstn'] || $_REQUEST['pstn']) {
$_pstn=1;
$groups[]='free-pstn';
} else {
$_pstn=0;
}
if (strlen($dictionary['email'])) {
$email=$dictionary['email'];
} else {
$email=trim($_REQUEST['email']);
}
if (strlen($dictionary['rpid'])) {
$rpid=$dictionary['rpid'];
} else {
$rpid=trim($_REQUEST['rpid']);
}
if (strlen($dictionary['owner'])) {
$owner=intval($dictionary['owner']);
} else {
$owner=intval($_REQUEST['owner']);
}
if (!$owner) {
$owner = intval($customer);
}
if (strlen($dictionary['quota'])) {
$quota=intval($dictionary['quota']);
} else {
$quota=intval($_REQUEST['quota']);
}
if ($this->prepaidChangesAllowed()) {
if (strlen($dictionary['prepaid'])) {
$prepaid=intval($dictionary['prepaid']);
} else {
$prepaid=intval($_REQUEST['prepaid']);
}
} else {
$prepaid = 1;
}
if ($prepaid) {
$groups[]='prepaid';
}
if (!$email) {
if ($username=="") {
$email='unknown@'.strtolower($domain);
} else {
$email=strtolower($username).'@'.strtolower($domain);
}
}
if (!$this->skipSaveProperties) {
$_p=array(
array('name' => 'sip_accounts_last_domain',
'category' => 'web',
'value' => "$domain",
'permission' => 'customer'
),
array('name' => 'sip_accounts_last_username',
'category' => 'web',
'value' => "$username",
'permission' => 'customer'
),
array('name' => 'sip_accounts_last_timezone',
'category' => 'web',
'value' => "$timezone",
'permission' => 'customer'
),
array('name' => 'sip_accounts_last_quota',
'category' => 'web',
'value' => "$quota",
'permission' => 'customer'
),
array('name' => 'sip_accounts_last_pstn',
'category' => 'web',
'value' => "$_pstn",
'permission' => 'customer'
),
array('name' => 'sip_accounts_last_prepaid',
'category' => 'web',
'value' => "$prepaid",
'permission' => 'customer'
)
);
$this->setCustomerProperties($_p);
}
if (is_array($dictionary['properties'])) {
$properties=$dictionary['properties'];
} else {
$properties=array();
}
if ($this->SoapEngine->login_credentials['reseller']) {
$reseller_properties=$this->getResellerProperties($this->SoapEngine->login_credentials['reseller'],'store_clear_text_passwords');
if (strlen($reseller_properties['store_clear_text_passwords'])) {
$this->store_clear_text_passwords=$reseller_properties['store_clear_text_passwords'];
}
} else {
$_reseller=$this->getResellerForDomain(strtolower($domain));
if ($_reseller) {
$reseller_properties = $this->getResellerProperties($_reseller, 'store_clear_text_passwords');
if (strlen($reseller_properties['store_clear_text_passwords'])) {
$this->store_clear_text_passwords = $reseller_properties['store_clear_text_passwords'];
}
}
}
if ($this->store_clear_text_passwords || $username == '') {
$password_final=$password;
} else {
$md1=strtolower($username).':'.strtolower($domain).':'.$password;
$md2=strtolower($username).'@'.strtolower($domain).':'.strtolower($domain).':'.$password;
$password_final=md5($md1).':'.md5($md2);
}
$account=array(
'id' => array('username' => strtolower($username),
'domain' => strtolower($domain)
),
'firstName' => $firstName,
'lastName' => $lastName,
'password' => $password_final,
'timezone' => $timezone,
'email' => strtolower($email),
'owner' => $owner,
'rpid' => $rpid,
'groups' => $groups,
'prepaid' => $prepaid,
'quota' => $quota,
'acl' => $ip_access_list,
'properties' => $properties
);
if (isset($call_limit)) {
$account['callLimit'] = intval($call_limit);
}
//print_r($account);
$deleteAccount=array('username' => $username,
'domain' => $domain);
if ($this->html) {
if ($username == '') {
$success_log=sprintf('SIP account has been generated in domain %s',$domain);
} else {
$success_log=sprintf('SIP account %s@%s has been added',$username, $domain);
}
}
$function=array('commit' => array('name' => 'addAccount',
'parameters' => array($account),
'logs' => array('success' => $success_log))
);
return $this->SoapEngine->execute($function, $this->html);
}
function getAllowedDomains()
{
// Filter
$filter = array(
'domain' => ''
);
// Range
$range = array(
'start' => 0,
'count' => 750
);
$orderBy = array(
'attribute' => 'domain',
'direction' => 'ASC'
);
// Compose query
$Query = array(
'filter' => $filter,
'orderBy' => $orderBy,
'range' => $range
);
$this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth);
$this->log_action('getDomains');
$result = $this->SoapEngine->soapclient->getDomains($Query);
if ((new PEAR)->isError($result)) {
$error_msg = $result->getMessage();
$error_fault= $result->getFault();
$error_code = $result->getCode();
printf(
"Error in getAllowedDomains from %s: %s (%s): %s",
$this->SoapEngine->SOAPurl,
$error_msg,
$error_fault->detail->exception->errorcode,
$error_fault->detail->exception->errorstring
);
//return false;
} else {
foreach ($result->domains as $_domain) {
if ($this->validDomain($_domain->domain)) {
$this->allowedDomains[] = $_domain->domain;
}
}
}
}
function showPasswordReminderForm($accounts = array())
{
print "
";
}
function showPasswordReminderUpdateFormEncrypted($id, $account)
{
if ($account) {
print "
";
print _("
Please choose new passwords for your account, if you leave them empty no change will be performed
");
print "
";
}
}
function showPasswordReminderFormEncrypted($accounts = array())
{
print "
";
if(count($accounts) < 1 && $_REQUEST['sip_filter']) {
print "";
}
}
function getAccountsForPasswordReminderEncrypted($maximum_accounts = 5)
{
$accounts=array();
//$filter = array('email' => $this->filters['email']);
if ($_REQUEST['sip_filter']) {
list($username, $domain) = explode('@', trim($_REQUEST['sip_filter']));
if ($username && $domain) {
$filter = array(
'username' => $username,
'domain' => $domain,
'email' => $this->filters['email']
);
}
} else {
$filter = array('email' => $this->filters['email']);
}
$range = array(
'start' => 0,
'count' => $maximum_accounts
);
$orderBy = array(
'attribute' => 'changeDate',
'direction' => 'DESC'
);
$Query = array(
'filter' => $filter,
'orderBy' => $orderBy,
'range' => $range
);
$this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth);
$this->log_action('getAccounts');
$result = $this->SoapEngine->soapclient->getAccounts($Query);
if ((new PEAR)->isError($result)) {
$error_msg = $result->getMessage();
$error_fault= $result->getFault();
$error_code = $result->getCode();
$log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring);
syslog(LOG_NOTICE, $log);
} else {
$i = 0;
while ($i < $result->total) {
if (!$result->accounts[$i]) break;
$account = $result->accounts[$i];
$accounts[]=array('username'=> $account->id->username,
'domain' => $account->id->domain
);
$i++;
}
}
return $accounts;
}
function getAccountsForPasswordReminder($maximum_accounts = 5)
{
$accounts = array();
$filter = array('email' => $this->filters['email']);
if ($_REQUEST['sip_filter']) {
list($username, $domain) = explode('@', trim($_REQUEST['sip_filter']));
if ($username && $domain) {
$filter = array( 'username' => $username,
'domain' => $domain
);
}
}
$range = array('start' => 0,
'count' => $maximum_accounts);
$orderBy = array('attribute' => 'changeDate',
'direction' => 'DESC');
$Query = array('filter' => $filter,
'orderBy' => $orderBy,
'range' => $range);
$this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth);
$this->log_action('getAccounts');
$result = $this->SoapEngine->soapclient->getAccounts($Query);
if ((new PEAR)->isError($result)) {
$error_msg = $result->getMessage();
$error_fault= $result->getFault();
$error_code = $result->getCode();
$log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring);
syslog(LOG_NOTICE, $log);
} else {
$i=0;
while ($i < $result->total) {
if (!$result->accounts[$i]) break;
$account = $result->accounts[$i];
$accounts[]=array('username'=> $account->id->username,
'domain' => $account->id->domain
);
$i++;
}
}
return $accounts;
}
function getResellerForDomain($domain='')
{
// Filter
$filter=array(
'domain' => $domain
);
// Range
$range=array('start' => 0,
'count' => 1
);
$orderBy = array('attribute' => 'changeDate',
'direction' => 'DESC'
);
// Compose query
$Query=array('filter' => $filter,
'orderBy' => $orderBy,
'range' => $range
);
// Insert credetials
$this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth);
$this->log_action('getDomains');
// Call function
$result = $this->SoapEngine->soapclient->getDomains($Query);
if ((new PEAR)->isError($result)) {
$error_msg = $result->getMessage();
$error_fault= $result->getFault();
$error_code = $result->getCode();
$log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring);
syslog(LOG_NOTICE, $log);
return false;
} else {
if ($result->domains[0]) {
return $result->domains[0]->reseller;
} else {
return false;
}
}
}
function getResellerProperties($reseller='',$property='')
{
$properties=array();
if (!$this->SoapEngine->customer_engine) {
dprint ("No customer_engine available");
return true;
}
if (!$reseller) {
dprint ("No customer provided");
return true;
}
if (!$property) {
dprint ("No property provided");
return true;
}
$this->SoapEngine->soapclientCustomers->addHeader($this->SoapEngine->SoapAuthCustomers);
$result = $this->SoapEngine->soapclientCustomers->getProperties(intval($reseller));
dprint_r($result);
if ((new PEAR)->isError($result)) {
$error_msg = $result->getMessage();
$error_fault= $result->getFault();
$error_code = $result->getCode();
$log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring);
syslog(LOG_NOTICE, $log);
return false;
}
foreach ($result as $_property) {
$properties[$_property->name]=$_property->value;
}
return $properties;
}
function pstnChangesAllowed()
{
//dprint_r($this->loginProperties);
$_customer_pstn_changes=$this->getCustomerProperty('pstn_changes');
$_reseller_pstn_changes=$this->getCustomerProperty('pstn_changes');
if ($this->adminonly) {
return true;
} else if ($this->customer == $this->reseller && $_reseller_pstn_changes) {
return true;
} else if ($this->loginImpersonate == $this->reseller && $_reseller_pstn_changes) {
return true;
} else if ($_reseller_pstn_changes && $_customer_pstn_changes) {
return true;
}
return false;
}
function prepaidChangesAllowed()
{
//dprint_r($this->loginProperties);
$_customer_prepaid_changes=$this->getCustomerProperty('prepaid_changes');
$_reseller_prepaid_changes=$this->getCustomerProperty('prepaid_changes');
if ($this->adminonly) {
return true;
} else if ($this->customer == $this->reseller && $_reseller_prepaid_changes) {
return true;
} else if ($this->loginImpersonate == $this->reseller && $_reseller_prepaid_changes) {
return true;
} else if ($_reseller_prepaid_changes && $_customer_prepaid_changes) {
return true;
}
return false;
}
function getTimezones ()
{
$this->timezones=array();
if (!$fp = fopen("timezones", "r")) {
print _("Failed to open timezone file.");
return false;
}
while ($buffer = fgets($fp,1024)) {
$this->timezones[]=trim($buffer);
}
fclose($fp);
}
function showTextBeforeCustomerSelection()
{
print _("Domain owner");
}
}