diff --git a/library/NGNPro/Records/SipAccounts.php b/library/NGNPro/Records/SipAccounts.php index 7f10f3e..742b034 100644 --- a/library/NGNPro/Records/SipAccounts.php +++ b/library/NGNPro/Records/SipAccounts.php @@ -1,1268 +1,1269 @@ '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 ($this->checkLogSoapError($result, true)) { 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 ($this->checkLogSoapError($result, true)) { return false; } else { $this->rows = $result->total; if ($this->rows && $action != 'PerformActions' && $action != 'Delete') { $this->showActionsForm(); } print "

$this->rows records found

"; 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; $deleteUrl = array( 'service' => $this->SoapEngine->service, 'action' => 'Delete', 'key' => $account->id->username ); if (!$this->filters['domain']) { $deleteUrl['domain_filter'] = $account->id->domain; } if (!$this->filters['username']) { $deleteUrl['username_filter'] = $account->id->username; } if ($action == 'Delete' && $_REQUEST['key'] == $account->id->username && $_REQUEST['domain_filter'] == $account->id->domain) { $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) { $settingsUrl = array( 'account' => sprintf('%s@%s', $account->id->username, $account->id->domain), 'sip_engine' => $this->SoapEngine->sip_engine ); if ($this->adminonly) { $settingsUrl['reseller'] = $reseller_sip_settings_page; $settingsUrl['adminonly'] = $this->adminonly; } else { 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; $settingsUrl[$element] = $this->SoapEngine->extraFormElements[$element]; } $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); } /* $_customer_url = $this->url.sprintf("&service=customers@%s&customer_filter=%s", urlencode($this->SoapEngine->customer_engine), urlencode($account->customer)); */ if ($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); if ($account->callLimit) { $callLimit = $account->callLimit; } elseif ($this->platform_call_limit) { $callLimit = $this->platform_call_limit; } else { $callLimit = ''; } printf( ' ', $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 "
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
%s %s %s %s %s %s %s %s %s %s %s %s
"; $this->showPagination($maxrows); return true; } } function showSeachFormCustom() { printf( "

Account
", $this->filters['username'] ); print "@"; 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("
", $_SERVER['PHP_SELF']); print "
"; print " "; if ($_REQUEST['account']) { $_account = $_REQUEST['account']; } else { $_account = $this->getCustomerProperty('sip_accounts_last_username'); } printf("
Account
",$_account); if ($_REQUEST['domain']) { $_domain = $_REQUEST['domain']; $selected_domain[$_REQUEST['domain']]='selected'; } else if ($this->filters['domain']) { $_domain = $this->filters['domain']; $selected_domain[$this->filters['domain']]='selected'; } else if ($_domain = $this->getCustomerProperty('sip_accounts_last_domain')) { $selected_domain[$_domain]='selected'; } if (count($this->allowedDomains) > 0) { print "@"; } else { printf("", $_domain); } if ($_REQUEST['quota']) { $_quota = $_REQUEST['quota']; } else { $_quota = $this->getCustomerProperty('sip_accounts_last_quota'); } if (!$_quota) $_quota=''; if ($_prepaid = $this->getCustomerProperty('sip_accounts_last_prepaid')) { $checked_prepaid='checked'; } else { $checked_prepaid=''; } if ($_pstn = $this->getCustomerProperty('sip_accounts_last_pstn')) { $checked_pstn='checked'; } else { $checked_pstn=''; } printf("
Password
",$_REQUEST['password']); printf("
Name
",$_REQUEST['fullname']); printf("
Email
",$_REQUEST['email']); printf("
Owner
",$_REQUEST['owner']); if ($this->getResellerProperty('pstn_access')) { printf(" PSTN ", $checked_pstn); printf("
Quota
",$_quota); if ($this->prepaidChangesAllowed()) { printf(" Prepaid ",$checked_prepaid); } else { printf(" Prepaid "); } } $this->printHiddenFormElements(); print "
"; } 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']; } elseif (strlen(trim($_REQUEST['timezone']))) { $timezone = trim($_REQUEST['timezone']); } elseif ($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']; } elseif (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 "

"; print _("Login account reminder"); print "

"; print _("

Fill in the e-mail address used during the registration of the SIP account:

"); printf( ""; if (count($accounts) > 1 || $_REQUEST['sip_filter']) { print "

"; print _("Warning"); print " "; print _("More than one account uses this email address. If you wish to receive the password for a particular account fill in the SIP account below, default it has been send it to the first 5 accounts found"); print "
"; printf( "", htmlspecialchars($_REQUEST['sip_filter']) ); } print "
"; } function showPasswordReminderUpdateFormEncrypted($id, $account) { if ($account) { print "

"; print _("Update passwords"); print ""; print " (for "; print $account; print ")

"; print _("

Please choose new passwords for your account, if you leave them empty no change will be performed

"); print "
"; print "
"; print "
"; print ""; print "
"; print ""; print ""; print "
"; print "
"; print ""; print "
"; print ""; print ""; print "
"; print "
"; print "
"; } } function showPasswordReminderFormEncrypted($accounts = array()) { print "

"; print _("Sip Account Reminder/Password Reset"); print "

"; //print _("

Please fill in the SIP account and e-mail address used during the registration of the SIP account to receive a login reminder and a possiblity to reset your passwords.

"); if (count($accounts) < 1 && $_REQUEST['sip_filter'] && $_REQUEST['email_filter']) { print "
"; print _("Error"); print "
"; print _("The email adress does not match email address in the SIP account, or the SIP account does not exist."); print "
"; print _("An email has not been sent."); print "
"; } elseif (count($accounts) < 1 && $_REQUEST['email_filter']) { print "
"; print _("Error"); print ": "; print _("The email adress does not match the email address in any SIP account."); print "
"; print _("An email has not been sent."); print "
"; } print " "; print ""; print ""; 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 (!$this->checkLogSoapError($result, true)) { $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 - ); + '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 (!$this->checkLogSoapError($result, true)) { $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 ($this->checkLogSoapError($result, true)) { return false; } else { if ($result->domains[0]) { return $result->domains[0]->reseller; } else { return false; } } } - function getResellerProperties($reseller='',$property='') + 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 ($this->checkLogSoapError($result, true)) { 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; } elseif ($this->customer == $this->reseller && $_reseller_pstn_changes) { return true; } elseif ($this->loginImpersonate == $this->reseller && $_reseller_pstn_changes) { return true; } elseif ($_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; } elseif ($this->customer == $this->reseller && $_reseller_prepaid_changes) { return true; } elseif ($this->loginImpersonate == $this->reseller && $_reseller_prepaid_changes) { return true; } elseif ($_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"); } } diff --git a/library/NGNPro/Records/SipAliases.php b/library/NGNPro/Records/SipAliases.php index 0854a60..42003d0 100644 --- a/library/NGNPro/Records/SipAliases.php +++ b/library/NGNPro/Records/SipAliases.php @@ -1,525 +1,576 @@ 1) { - $target_domain=$target_filters_els[1]; + $target_domain = $target_filters_els[1]; } $this->filters = array( 'alias_username' => strtolower(trim($_REQUEST['alias_username_filter'])), 'alias_domain' => strtolower(trim($_REQUEST['alias_domain_filter'])), 'target_username' => strtolower($target_username), 'target_domain' => strtolower($target_domain) ); parent::__construct($SoapEngine); - $this->sortElements=array( + $this->sortElements = array( 'changeDate' => 'Change date', 'aliasUsername' => 'Alias user', 'aliasDomain' => 'Alias domain', 'targetUsername' => 'Target user', 'targetDomain' => 'Target domain', ); } function getRecordKeys() { // Filter - $filter=array('aliasUsername' => $this->filters['alias_username'], - 'aliasDomain' => $this->filters['alias_domain'], - 'targetUsername' => $this->filters['target_username'], - 'targetDomain' => $this->filters['target_domain'], - 'owner' => intval($this->filters['owner']), - 'customer' => intval($this->filters['customer']), - 'reseller' => intval($this->filters['reseller']) - ); + $filter = array( + 'aliasUsername' => $this->filters['alias_username'], + 'aliasDomain' => $this->filters['alias_domain'], + 'targetUsername' => $this->filters['target_username'], + 'targetDomain' => $this->filters['target_domain'], + 'owner' => intval($this->filters['owner']), + 'customer' => intval($this->filters['customer']), + 'reseller' => intval($this->filters['reseller']) + ); // Range - $range=array('start' => 0, - 'count' => 500 - ); + $range = array( + 'start' => 0, + 'count' => 500 + ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'aliasUsername'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; - $orderBy = array('attribute' => $this->sorting['sortBy'], - 'direction' => $this->sorting['sortOrder'] - ); + $orderBy = array( + 'attribute' => $this->sorting['sortBy'], + 'direction' => $this->sorting['sortOrder'] + ); // Compose query - $Query=array('filter' => $filter, - 'orderBy' => $orderBy, - 'range' => $range - ); + $Query = array( + 'filter' => $filter, + 'orderBy' => $orderBy, + 'range' => $range + ); //dprint_r($Query); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getAliases'); // Call function $result = $this->SoapEngine->soapclient->getAliases($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { foreach ($result->aliases as $alias) { - $this->selectionKeys[]=array('username' => $alias->id->username, + $this->selectionKeys[] = array('username' => $alias->id->username, 'domain' => $alias->id->domain); } return true; } } function listRecords() { $this->getAllowedDomains(); // Make sure we apply the domain filter from the login credetials $this->showSeachForm(); // Filter - $filter=array('aliasUsername' => $this->filters['alias_username'], + $filter = array('aliasUsername' => $this->filters['alias_username'], 'aliasDomain' => $this->filters['alias_domain'], 'targetUsername' => $this->filters['target_username'], 'targetDomain' => $this->filters['target_domain'], 'owner' => intval($this->filters['owner']), 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']) ); // Range - $range=array('start' => intval($this->next), + $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, + $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getAliases'); // Call function $result = $this->SoapEngine->soapclient->getAliases($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { $this->rows = $result->total; if ($this->rows && $_REQUEST['action'] != 'PerformActions' && $_REQUEST['action'] != 'Delete') { $this->showActionsForm(); } print "

$this->rows records found

"; if (!$this->next) $this->next=0; - if ($this->rows > $this->maxrowsperpage) { + if ($this->rows > $this->maxrowsperpage) { $maxrows = $this->maxrowsperpage + $this->next; if ($maxrows > $this->rows) $maxrows = $this->maxrowsperpage; } else { - $maxrows=$this->rows; + $maxrows = $this->rows; } $i=0; if ($this->rows) { - while ($i < $maxrows) { - + while ($i < $maxrows) { if (!$result->aliases[$i]) break; $alias = $result->aliases[$i]; $index = $this->next+$i+1; $deleteUrl = array( 'service' => $this->SoapEngine->service, 'action' => 'Delete', 'alias_username_filter' => $alias->id->username, 'alias_domain_filter' => $alias->id->domain ); if ($_REQUEST['action'] == 'Delete' && $_REQUEST['alias_username_filter'] == $alias->id->username && $_REQUEST['alias_domain_filter'] == $alias->id->domain) { $deleteUrl['confirm'] = 1; $actionText = "Confirm"; } else { $actionText = "Delete"; } $_url = sprintf( "%s&%s", $this->url, http_build_query($deleteUrl) ); /* $_customer_url = $this->url.sprintf("&service=customers@%s&customer_filter=%s", urlencode($this->SoapEngine->customer_engine), urlencode($alias->customer) ); */ $_sip_accounts_url = sprintf( '%s&%s', $this->url, http_build_query( array( 'service' => sprintf('sip_accounts@%s', $this->SoapEngine->soapEngine), 'username_filter' => $alias->target->username, 'domain_filter' => $alias->target->domain ) ) ); if ($alias->owner) { $_owner_url = sprintf( '%s', $this->url, http_build_query( array( 'service' => sprintf('customers@%s', $this->SoapEngine->soapEngine), 'customer_filter' => $alias->owner ) ), $alias->owner ); } else { $_owner_url=''; } - printf(" - - - - - - - - - ", - $index, - $alias->id->username, - $alias->id->domain, - $_sip_accounts_url, - $alias->target->username, - $alias->target->domain, - $_owner_url, - $alias->changeDate, - $_url, - $actionText + printf( + " + + + + + + + + + ", + $index, + $alias->id->username, + $alias->id->domain, + $_sip_accounts_url, + $alias->target->username, + $alias->target->domain, + $_owner_url, + $alias->changeDate, + $_url, + $actionText ); $i++; } } print "
Id SIP alias Redirect target Owner Change date Actions
%s%s@%s%s@%s%s%s%s
%s%s@%s%s@%s%s%s%s
"; $this->showPagination($maxrows); /* $_properties=array( array('name' => $this->SoapEngine->port.'_sortBy', 'value' => $this->sorting['sortBy'], 'permission' => 'customer', 'category' => 'web' ), array('name' => $this->SoapEngine->port.'_sortOrder', 'value' => $this->sorting['sortOrder'], 'permission' => 'customer', 'category' => 'web' ) ); print_r($_properties); $this->setCustomerProperties($_properties); */ return true; } } - function deleteRecord($dictionary=array()) + function deleteRecord($dictionary = array()) { if (!$dictionary['confirm'] && !$_REQUEST['confirm']) { print "

Please press on Confirm to confirm the delete. "; return true; } if ($dictionary['alias_username']) { - $alias_username=$dictionary['alias_username']; + $alias_username = $dictionary['alias_username']; } else { - $alias_username=$this->filters['alias_username']; + $alias_username = $this->filters['alias_username']; } if ($dictionary['alias_domain']) { - $alias_domain=$dictionary['alias_domain']; + $alias_domain = $dictionary['alias_domain']; } else { - $alias_domain=$this->filters['alias_domain']; + $alias_domain = $this->filters['alias_domain']; } if (!strlen($alias_username) || !strlen($alias_domain)) { print "

Error: missing SIP alias username or domain. "; return false; } - $alias=array('username' => $alias_username, + $alias = array('username' => $alias_username, 'domain' => $alias_domain ); - $function=array('commit' => array('name' => 'deleteAlias', + $function = array('commit' => array('name' => 'deleteAlias', 'parameters' => array($alias), 'logs' => array('success' => sprintf('SIP alias %s@%s has been deleted',$this->filters['alias_username'], $this->filters['alias_domain']) ) ) ); unset($this->filters); return $this->SoapEngine->execute($function, $this->html); } function showSeachFormCustom() { - printf ("

SIP alias
",$this->filters['alias_username']); - printf ("@"); + printf( + " +
+ SIP alias + +
+ ", + $this->filters['alias_username'] + ); + print "@"; if (count($this->allowedDomains) > 0) { if ($this->filters['alias_domain'] && !in_array($this->filters['alias_domain'], $this->allowedDomains)) { - printf ("",$this->filters['alias_domain']); + printf("", $this->filters['alias_domain']); } else { $selected_domain[$this->filters['alias_domain']]='selected'; - printf ("