2009-11-21 15:25:05 +00:00
< ? php
/*
$Id $
This code is part of LDAP Account Manager ( http :// www . sourceforge . net / projects / lam )
2012-01-12 19:22:00 +00:00
Copyright ( C ) 2009 - 2012 Pavel Pozdnyak
2012-01-11 18:50:49 +00:00
2009 - 2012 Roland Gruber
2009-11-21 15:25:05 +00:00
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
2009-12-16 18:45:26 +00:00
/**
* Manages the Asterisk extension of user accounts .
*
* @ package modules
*
* @ author Pavel Pozdnyak
* @ author Roland Gruber
*/
2009-11-21 15:25:05 +00:00
/**
2009-12-16 18:45:26 +00:00
* Manages the Asterisk extension of user accounts .
2009-11-21 15:25:05 +00:00
*
2009-12-16 18:56:51 +00:00
* @ package modules
2009-11-21 15:25:05 +00:00
*/
class asteriskAccount extends baseModule implements passwordService {
2010-04-07 19:24:27 +00:00
const ASTERISK_DEFAULT_REALM = " asterisk " ;
2010-03-17 17:48:42 +00:00
2009-11-21 15:25:05 +00:00
/**
* Creates a new asteriskAccount object .
*
* @ param string $scope account type ( user , group , host )
*/
function __construct ( $scope ) {
// call parent constructor
parent :: __construct ( $scope );
$this -> autoAddObjectClasses = false ;
}
/**
2010-06-12 17:17:31 +00:00
* Returns meta data that is interpreted by parent class .
2009-11-21 15:25:05 +00:00
*
* @ return array array with meta data
*/
function get_metaData () {
$return = array ();
// manages users accounts
2012-01-12 19:22:00 +00:00
$return [ " account_types " ] = array ( " user " , " host " );
2009-11-21 15:25:05 +00:00
$return [ " is_base " ] = false ;
// alias name
$return [ " alias " ] = _ ( " Asterisk " );
// module dependencies
2012-01-12 19:22:00 +00:00
$return [ 'dependencies' ] = array ( 'depends' => array (), 'conflicts' => array ());
2009-11-21 15:25:05 +00:00
// managed object classes
$return [ 'objectClasses' ] = array ( 'AsteriskSIPUser' );
// managed attributes
$return [ 'attributes' ] = array ( 'AstAccountCallerID' , 'AstAccountHost' ,
2011-03-21 20:50:45 +00:00
'AstAccountRealmedPassword' , 'AstAccountContext' , 'AstAccountType' ,
'AstAccountUserAgent' , 'AstAccountAMAFlags' , 'AstAccountCallGroup' ,
'AstAccountDTMFMode' , 'AstAccountFromUser' , 'AstAccountFromDomain' ,
'AstAccountFullContact' , 'AstAccountInsecure' , 'AstAccountMailbox' ,
'AstAccountNAT' , 'AstAccountDeny' , 'AstAccountPermit' ,
'AstAccountPickupGroup' , 'AstAccountPort' , 'AstAccountQualify' ,
'AstAccountRestrictCID' , 'AstAccountRTPTimeout' , 'AstAccountRTPHoldTimeout' ,
'AstAccountDisallowedCodec' , 'AstAccountAllowedCodec' , 'AstAccountMusicOnHold' ,
'AstAccountExpirationTimestamp' , 'AstAccountRegistrationContext' ,
'AstAccountRegistrationExten' , 'AstAccountCanCallForward' , 'AstAccountIPAddress' ,
'AstAccountDefaultUser' , 'AstAccountRegistrationServer' , 'AstAccountLastQualifyMilliseconds' ,
);
2009-11-21 15:25:05 +00:00
// icon
$return [ 'icon' ] = 'asterisk.png' ;
2010-09-02 18:21:59 +00:00
// self service
$return [ 'selfServiceFieldSettings' ] = array (
'syncAsteriskPassword' => _ ( 'Sync Asterisk password with Unix password' ),
);
2009-11-21 15:25:05 +00:00
// help
$return [ 'help' ] = array (
'AstAccountCallerID' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Caller ID " ), 'attr' => 'AstAccountCallerID' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " This is the ID of the user in the Asterisk database. It may contain digits and letters (e.g. user1 or 200134). " )
2009-11-21 15:25:05 +00:00
),
'AstAccountHost' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Host " ), 'attr' => 'AstAccountHost' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " This is the machine id (e.g. IP address or host name) from which the user can call/receive calls. " )
2009-11-21 15:25:05 +00:00
),
'AstAccountContext' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Account context " ), 'attr' => 'AstAccountContext' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " The account context stores information about the dial plan. " )
2009-11-22 13:41:20 +00:00
),
'AstAccountRealmedPassword' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Password " ), 'attr' => 'AstAccountRealmedPassword' ,
2009-11-22 13:41:20 +00:00
" Text " => _ ( " Please enter the password which you want to set for this account. " )
),
2011-02-24 18:51:57 +00:00
'AstAccountType' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Account type " ), 'attr' => 'AstAccountType' ,
2011-02-24 18:51:57 +00:00
" Text " => _ ( " Please enter the account's type (e.g. \" friend \" ). " )
),
2010-03-17 17:48:42 +00:00
'AsteriskRealm' => array (
" Headline " => _ ( " Asterisk realm " ),
2010-04-02 11:39:09 +00:00
" Text " => _ ( " Authentication realm for Asterisk server (default: asterisk). This value set in sip.conf (option: \" realm \" ). " )
2010-03-17 17:48:42 +00:00
),
2011-03-21 20:50:45 +00:00
'AstAccountUserAgent' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " User agent " ), 'attr' => 'AstAccountUserAgent' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " SIP user agent identification. " )
),
'AstAccountAMAFlags' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " AMA flags " ), 'attr' => 'AstAccountAMAFlags' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Asterisk AMA (Automated Message Accounting) flags. " )
),
'AstAccountCallGroup' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Call groups " ), 'attr' => 'AstAccountCallGroup' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " The user's call groups. " )
),
'AstAccountDTMFMode' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " DTMF mode " ), 'attr' => 'AstAccountDTMFMode' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " DTMF mode for SIP client configuration. " )
),
'AstAccountFromUser' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " From user " ), 'attr' => 'AstAccountFromUser' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " From user setting for this account. " )
),
'AstAccountFromDomain' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " From domain " ), 'attr' => 'AstAccountFromDomain' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " From domain setting for this account. " )
),
'AstAccountFullContact' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Full contact " ), 'attr' => 'AstAccountFullContact' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " SIP URI for a realtime peer. " )
),
'AstAccountInsecure' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Insecure " ), 'attr' => 'AstAccountInsecure' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " This is typically used to allow incoming calls (e.g. from FWD) while having a type=friend entry defined with username and password. " )
),
'AstAccountMailbox' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Mailbox " ), 'attr' => 'AstAccountMailbox' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Defines the mailbox to check for message waiting indication (MWI) for this peer. " )
),
'AstAccountNAT' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " NAT " ), 'attr' => 'AstAccountNAT' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " NAT setting for this account. " )
),
'AstAccountDeny' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Deny " ), 'attr' => 'AstAccountDeny' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Used to limit SIP traffic to and from this peer to a certain IP or network. " )
),
'AstAccountPermit' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Permit " ), 'attr' => 'AstAccountPermit' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Used to limit SIP traffic to and from this peer to a certain IP or network. " )
),
'AstAccountPickupGroup' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Pickup group " ), 'attr' => 'AstAccountPickupGroup' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Specifies the user's pickup group. " )
),
'AstAccountPort' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Port " ), 'attr' => 'AstAccountPort' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Port number. " )
),
'AstAccountQualify' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Qualify " ), 'attr' => 'AstAccountQualify' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Used to regularly check that a device is still online. " )
),
'AstAccountRestrictCID' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Restrict caller ID " ), 'attr' => 'AstAccountRestrictCID' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Use this to hide the caller ID. " )
),
'AstAccountRTPTimeout' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " RTP timeout " ), 'attr' => 'AstAccountRTPTimeout' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Used to automatically hangup the call if no RTP traffic is received. " )
),
'AstAccountRTPHoldTimeout' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " RTP hold timeout " ), 'attr' => 'AstAccountRTPHoldTimeout' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Maximum number of seconds of inactivity before terminating a call on hold. " )
),
'AstAccountDisallowedCodec' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Disallowed codec " ), 'attr' => 'AstAccountDisallowedCodec' ,
2011-03-27 19:27:21 +00:00
" Text " => _ ( " List of disallowed codecs. " )
2011-03-21 20:50:45 +00:00
),
'AstAccountAllowedCodec' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Allowed codec " ), 'attr' => 'AstAccountAllowedCodec' ,
2011-03-27 19:27:21 +00:00
" Text " => _ ( " List of allowed codecs. " )
2011-03-21 20:50:45 +00:00
),
'AstAccountMusicOnHold' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Music on hold " ), 'attr' => 'AstAccountMusicOnHold' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Music to play on hold. " )
),
'AstAccountExpirationTimestamp' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Expiration timestamp " ), 'attr' => 'AstAccountExpirationTimestamp' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Expiration timestamp ( \" regseconds \" option). " )
),
'AstAccountRegistrationContext' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Registration context " ), 'attr' => 'AstAccountRegistrationContext' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " If registration context is specified, Asterisk will dynamically create and destroy a NoOp priority 1 extension for a given peer who registers or unregisters with Asterisk. " )
),
'AstAccountRegistrationExten' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Registration extension " ), 'attr' => 'AstAccountRegistrationExten' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Used for registration context. " )
),
'AstAccountCanCallForward' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Can call forward " ), 'attr' => 'AstAccountCanCallForward' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Specifies if the user can call forward. " )
),
'AstAccountIPAddress' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " IP address " ), 'attr' => 'AstAccountIPAddress' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " IP address of the peer. Valid only for realtime peers. " )
),
'AstAccountDefaultUser' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Default user " ), 'attr' => 'AstAccountDefaultUser' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " Authentication user for outbound proxies. " )
),
'AstAccountRegistrationServer' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Registration server " ), 'attr' => 'AstAccountRegistrationServer' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " IP address or domain name of the registration server. " )
),
'AstAccountLastQualifyMilliseconds' => array (
2012-02-04 15:56:31 +00:00
" Headline " => _ ( " Last qualify milliseconds " ), 'attr' => 'AstAccountLastQualifyMilliseconds' ,
2011-03-21 20:50:45 +00:00
" Text " => _ ( " The number of milliseconds for the last qualify. " )
),
2011-03-26 13:53:34 +00:00
'hiddenOptions' => array (
" Headline " => _ ( " Hidden options " ),
" Text " => _ ( " The selected options will not be managed inside LAM. You can use this to reduce the number of displayed input fields. " )
),
2010-03-17 17:48:42 +00:00
);
2010-09-14 18:25:36 +00:00
// config options
$configContainer = new htmlTable ();
2011-03-26 13:53:34 +00:00
$configRealmTable = new htmlTable ();
$configRealmTable -> addElement ( new htmlTableExtendedInputField ( _ ( 'Asterisk realm' ), 'asteriskAccount_AsteriskRealm' , null , 'AsteriskRealm' ));
$configContainer -> addElement ( $configRealmTable , true );
$configContainer -> addElement ( new htmlSpacer ( null , '10px' ), true );
$configHiddenHead = new htmlTable ();
$configHiddenHead -> addElement ( new htmlOutputText ( _ ( 'Hidden options' )));
$configHiddenHead -> addElement ( new htmlHelpLink ( 'hiddenOptions' ));
$configContainerOptions = new htmlTable ();
$configContainer -> addElement ( $configHiddenHead , true );
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountUserAgent' , false , _ ( 'User agent' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountAMAFlags' , false , _ ( 'AMA flags' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountCallGroup' , false , _ ( 'Call groups' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountDTMFMode' , false , _ ( 'DTFM flags' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2012-01-11 18:50:49 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountFromUser' , false , _ ( 'From user' ), null , false ));
$configContainerOptions -> addNewLine ();
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountFromDomain' , false , _ ( 'From domain' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountFullContact' , false , _ ( 'Full contact' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountInsecure' , false , _ ( 'Insecure' ), null , false ));
2012-01-11 18:50:49 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountMailbox' , false , _ ( 'Mailbox' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountNAT' , false , _ ( 'NAT' ), null , false ));
2012-01-11 18:50:49 +00:00
$configContainerOptions -> addNewLine ();
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountDeny' , false , _ ( 'Deny' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountPermit' , false , _ ( 'Permit' ), null , false ));
2012-01-11 18:50:49 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountPickupGroup' , false , _ ( 'Pickup group' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountPort' , false , _ ( 'Port' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountQualify' , false , _ ( 'Qualify' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addNewLine ();
2012-01-11 18:50:49 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountRestrictCID' , false , _ ( 'Restrict caller ID' ), null , false ));
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountRTPTimeout' , false , _ ( 'RTP timeout' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountRTPHoldTimeout' , false , _ ( 'RTP hold timeout' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountDisallowedCodec' , false , _ ( 'Disallowed codec' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountAllowedCodec' , false , _ ( 'Allowed codec' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addNewLine ();
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountMusicOnHold' , false , _ ( 'Music on hold' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountExpirationTimestamp' , false , _ ( 'Expiration timestamp' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountRegistrationContext' , false , _ ( 'Registration context' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-04-09 13:11:38 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountRegistrationExten' , false , _ ( 'Registration extension' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2012-01-11 18:50:49 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountCanCallForward' , false , _ ( 'Can call forward' ), null , false ));
$configContainerOptions -> addNewLine ();
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountIPAddress' , false , _ ( 'IP address' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountDefaultUser' , false , _ ( 'Default user' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountRegistrationServer' , false , _ ( 'Registration server' ), null , false ));
2012-01-11 18:50:49 +00:00
$configContainerOptions -> addElement ( new htmlOutputText ( ' ' ));
2011-03-27 19:27:21 +00:00
$configContainerOptions -> addElement ( new htmlTableExtendedInputCheckbox ( 'asteriskAccount_hideAstAccountLastQualifyMilliseconds' , false , _ ( 'Last qualify milliseconds' ), null , false ));
2011-03-26 13:53:34 +00:00
$configContainerOptions -> addNewLine ();
$configContainer -> addElement ( $configContainerOptions , true );
2010-09-14 18:25:36 +00:00
$return [ 'config_options' ][ 'user' ] = $configContainer ;
2010-09-02 18:21:59 +00:00
// self service options
2010-09-14 18:25:36 +00:00
$selfServiceContainer = new htmlTable ();
2011-03-23 17:52:45 +00:00
$selfServiceContainer -> addElement ( new htmlTableExtendedInputField ( _ ( 'Asterisk realm' ), 'asteriskAccount_AsteriskRealm' , null ));
$selfServiceContainer -> addElement ( new htmlHelpLink ( 'AsteriskRealm' , get_class ( $this )));
2010-09-14 18:25:36 +00:00
$return [ 'selfServiceSettings' ] = $selfServiceContainer ;
2009-11-21 15:25:05 +00:00
// profile options
2010-09-14 18:25:36 +00:00
$profileContainer = new htmlTable ();
$profileContainer -> addElement ( new htmlTableExtendedInputField ( _ ( 'Host' ), 'asteriskAccount_AstAccountHost' , null , 'AstAccountHost' ), true );
$profileContainer -> addElement ( new htmlTableExtendedInputField ( _ ( 'Account context' ), 'asteriskAccount_AstAccountContext' , null , 'AstAccountContext' ), true );
2011-02-24 18:51:57 +00:00
$profileContainer -> addElement ( new htmlTableExtendedInputField ( _ ( 'Account type' ), 'asteriskAccount_AstAccountType' , null , 'AstAccountType' ), true );
2010-09-14 18:25:36 +00:00
$return [ 'profile_options' ] = $profileContainer ;
2009-11-21 15:25:05 +00:00
// profile mappings
$return [ 'profile_mappings' ] = array (
'asteriskAccount_AstAccountHost' => 'AstAccountHost' ,
2011-02-24 18:51:57 +00:00
'asteriskAccount_AstAccountContext' => 'AstAccountContext' ,
'asteriskAccount_AstAccountType' => 'AstAccountType' ,
2009-11-21 15:25:05 +00:00
);
2009-11-22 13:41:20 +00:00
// available PDF fields
$return [ 'PDF_fields' ] = array (
2010-04-05 12:38:23 +00:00
'AstAccountCallerID' => _ ( 'Caller ID' ),
'AstAccountContext' => _ ( 'Account context' ),
'AstAccountHost' => _ ( 'Host' ),
2011-02-24 18:51:57 +00:00
'AstAccountType' => _ ( 'Account type' ),
2011-03-21 20:50:45 +00:00
'AstAccountUserAgent' => _ ( 'User agent' ),
'AstAccountAMAFlags' => _ ( 'AMA flags' ),
'AstAccountCallGroup' => _ ( 'Call groups' ),
'AstAccountDTMFMode' => _ ( 'DTFM flags' ),
'AstAccountFromUser' => _ ( 'From user' ),
'AstAccountFromDomain' => _ ( 'From domain' ),
'AstAccountFullContact' => _ ( 'Full contact' ),
'AstAccountInsecure' => _ ( 'Insecure' ),
'AstAccountMailbox' => _ ( 'Mailbox' ),
'AstAccountNAT' => _ ( 'NAT' ),
'AstAccountDeny' => _ ( 'Deny' ),
'AstAccountPermit' => _ ( 'Permit' ),
'AstAccountPickupGroup' => _ ( 'Pickup group' ),
'AstAccountPort' => _ ( 'Port' ),
'AstAccountQualify' => _ ( 'Qualify' ),
'AstAccountRestrictCID' => _ ( 'Restrict caller ID' ),
'AstAccountRTPTimeout' => _ ( 'RTP timeout' ),
'AstAccountRTPHoldTimeout' => _ ( 'RTP hold timeout' ),
'AstAccountDisallowedCodec' => _ ( 'Disallowed codec' ),
'AstAccountAllowedCodec' => _ ( 'Allowed codec' ),
'AstAccountMusicOnHold' => _ ( 'Music on hold' ),
'AstAccountExpirationTimestamp' => _ ( 'Expiration timestamp' ),
'AstAccountRegistrationContext' => _ ( 'Registration context' ),
2011-04-09 13:11:38 +00:00
'AstAccountRegistrationExten' => _ ( 'Registration extension' ),
2011-03-21 20:50:45 +00:00
'AstAccountCanCallForward' => _ ( 'Can call forward' ),
'AstAccountIPAddress' => _ ( 'IP address' ),
'AstAccountDefaultUser' => _ ( 'Default user' ),
'AstAccountRegistrationServer' => _ ( 'Registration server' ),
'AstAccountLastQualifyMilliseconds' => _ ( 'Last qualify milliseconds' ),
2009-11-22 13:41:20 +00:00
);
// upload fields
$return [ 'upload_columns' ] = array (
array (
'name' => 'asteriskAccount_AstAccountCallerID' ,
'description' => _ ( 'Caller ID' ),
'help' => 'AstAccountCallerID' ,
'example' => '12345' ,
'required' => true
),
array (
'name' => 'asteriskAccount_AstAccountContext' ,
'description' => _ ( 'Account context' ),
'help' => 'AstAccountContext' ,
2009-12-08 21:29:19 +00:00
'example' => 'default' ,
2009-11-22 13:41:20 +00:00
'required' => true
),
array (
'name' => 'asteriskAccount_AstAccountHost' ,
'description' => _ ( 'Host' ),
'help' => 'AstAccountHost' ,
'example' => 'dynamic' ,
'default' => 'dynamic' ,
),
array (
'name' => 'asteriskAccount_AstAccountRealmedPassword' ,
'description' => _ ( 'Password' ),
'help' => 'AstAccountRealmedPassword' ,
'example' => _ ( 'secret' ),
),
2011-02-24 18:51:57 +00:00
array (
'name' => 'asteriskAccount_AstAccountType' ,
'description' => _ ( 'Account type' ),
'help' => 'AstAccountType' ,
'example' => 'friend' ,
'required' => true
),
2009-11-22 13:41:20 +00:00
);
2011-03-29 19:46:58 +00:00
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountUserAgent' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountUserAgent' ,
'description' => _ ( 'User agent' ),
'help' => 'AstAccountUserAgent' ,
);
}
2011-03-31 18:48:15 +00:00
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountAMAFlags' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountAMAFlags' ,
'description' => _ ( 'AMA flags' ),
'help' => 'AstAccountAMAFlags' ,
'example' => 'billing' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountCallGroup' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountCallGroup' ,
'description' => _ ( 'Call groups' ),
'help' => 'AstAccountCallGroup' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDTMFMode' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountDTMFMode' ,
'description' => _ ( 'DTFM flags' ),
'help' => 'AstAccountDTMFMode' ,
'example' => 'auto' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountFromUser' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountFromUser' ,
'description' => _ ( 'From user' ),
'help' => 'AstAccountFromUser' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountFromDomain' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountFromDomain' ,
'description' => _ ( 'From domain' ),
'help' => 'AstAccountFromDomain' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountFullContact' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountFullContact' ,
'description' => _ ( 'Full contact' ),
'help' => 'AstAccountFullContact' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountInsecure' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountInsecure' ,
'description' => _ ( 'Insecure' ),
'help' => 'AstAccountInsecure' ,
'example' => 'invite' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountMailbox' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountMailbox' ,
'description' => _ ( 'Mailbox' ),
'help' => 'AstAccountMailbox' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountNAT' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountNAT' ,
'description' => _ ( 'NAT' ),
'help' => 'AstAccountNAT' ,
'example' => 'never' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDeny' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountDeny' ,
'description' => _ ( 'Deny' ),
'help' => 'AstAccountDeny' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountPermit' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountPermit' ,
'description' => _ ( 'Permit' ),
'help' => 'AstAccountPermit' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountPickupGroup' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountPickupGroup' ,
'description' => _ ( 'Pickup group' ),
'help' => 'AstAccountPickupGroup' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountPort' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountPort' ,
'description' => _ ( 'Port' ),
'help' => 'AstAccountPort' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountQualify' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountQualify' ,
'description' => _ ( 'Qualify' ),
'help' => 'AstAccountQualify' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRestrictCID' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountRestrictCID' ,
'description' => _ ( 'Restrict caller ID' ),
'help' => 'AstAccountRestrictCID' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRTPTimeout' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountRTPTimeout' ,
'description' => _ ( 'RTP timeout' ),
'help' => 'AstAccountRTPTimeout' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRTPHoldTimeout' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountRTPHoldTimeout' ,
'description' => _ ( 'RTP hold timeout' ),
'help' => 'AstAccountRTPHoldTimeout' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDisallowedCodec' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountDisallowedCodec' ,
'description' => _ ( 'Disallowed codec' ),
'help' => 'AstAccountDisallowedCodec' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountAllowedCodec' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountAllowedCodec' ,
'description' => _ ( 'Allowed codec' ),
'help' => 'AstAccountAllowedCodec' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountMusicOnHold' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountMusicOnHold' ,
'description' => _ ( 'Music on hold' ),
'help' => 'AstAccountMusicOnHold' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountExpirationTimestamp' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountExpirationTimestamp' ,
'description' => _ ( 'Expiration timestamp' ),
'help' => 'AstAccountExpirationTimestamp' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRegistrationContext' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountRegistrationContext' ,
'description' => _ ( 'Registration context' ),
'help' => 'AstAccountRegistrationContext' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRegistrationExten' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountRegistrationExten' ,
2011-04-09 13:11:38 +00:00
'description' => _ ( 'Registration extension' ),
2011-03-31 18:48:15 +00:00
'help' => 'AstAccountRegistrationExten' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountCanCallForward' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountCanCallForward' ,
'description' => _ ( 'Can call forward' ),
'help' => 'AstAccountCanCallForward' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountIPAddress' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountIPAddress' ,
'description' => _ ( 'IP address' ),
'help' => 'AstAccountIPAddress' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDefaultUser' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountDefaultUser' ,
'description' => _ ( 'Default user' ),
'help' => 'AstAccountDefaultUser' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRegistrationServer' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountRegistrationServer' ,
'description' => _ ( 'Registration server' ),
'help' => 'AstAccountRegistrationServer' ,
);
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountLastQualifyMilliseconds' )) {
$return [ 'upload_columns' ][] = array (
'name' => 'asteriskAccount_AstAccountLastQualifyMilliseconds' ,
'description' => _ ( 'Last qualify milliseconds' ),
'help' => 'AstAccountLastQualifyMilliseconds' ,
);
}
2009-11-21 15:25:05 +00:00
return $return ;
}
/**
* This function fills the error message array with messages
*/
function load_Messages () {
$this -> messages [ 'AstAccountCallerID' ][ 0 ] = array ( 'ERROR' , _ ( 'Please enter a caller ID.' ));
$this -> messages [ 'AstAccountCallerID' ][ 1 ] = array ( 'ERROR' , _ ( 'The caller ID format is invalid.' ));
$this -> messages [ 'AstAccountCallerID' ][ 2 ] = array ( 'ERROR' , _ ( 'There is already another user with this caller ID.' ));
2009-11-22 13:41:20 +00:00
$this -> messages [ 'AstAccountCallerID' ][ 3 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' asteriskAccount_AstAccountCallerID' , _ ( 'The caller ID format is invalid.' ));
2009-11-21 15:25:05 +00:00
$this -> messages [ 'AstAccountContext' ][ 0 ] = array ( 'ERROR' , _ ( 'Please enter the extension context.' ));
2009-11-22 13:41:20 +00:00
$this -> messages [ 'AstAccountContext' ][ 1 ] = array ( 'ERROR' , _ ( 'The extension context is invalid.' ));
$this -> messages [ 'AstAccountContext' ][ 2 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' asteriskAccount_AstAccountContext' , _ ( 'The extension context is invalid.' ));
2009-11-21 15:25:05 +00:00
$this -> messages [ 'AstAccountHost' ][ 0 ] = array ( 'ERROR' , _ ( 'Please enter the host name.' ));
2009-11-22 13:41:20 +00:00
$this -> messages [ 'AstAccountHost' ][ 1 ] = array ( 'ERROR' , _ ( 'The host name is invalid.' ));
$this -> messages [ 'AstAccountHost' ][ 2 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' asteriskAccount_AstAccountHost' , _ ( 'The host name is invalid.' ));
2011-02-24 18:51:57 +00:00
$this -> messages [ 'AstAccountType' ][ 0 ] = array ( 'ERROR' , _ ( 'Please enter the account type.' ));
$this -> messages [ 'AstAccountType' ][ 1 ] = array ( 'ERROR' , _ ( 'The account type is invalid.' ));
$this -> messages [ 'AstAccountType' ][ 2 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' asteriskAccount_AstAccountType' , _ ( 'The account type is invalid.' ));
2011-03-29 19:46:58 +00:00
$this -> messages [ 'AstAccountFromUser' ][ 0 ] = array ( 'ERROR' , _ ( 'Please enter a valid from user.' ));
$this -> messages [ 'AstAccountFromUser' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' asteriskAccount_AstAccountFromUser' , _ ( 'Please enter a valid from user.' ));
$this -> messages [ 'AstAccountFromDomain' ][ 0 ] = array ( 'ERROR' , _ ( 'Please enter a valid from domain.' ));
$this -> messages [ 'AstAccountFromDomain' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' asteriskAccount_AstAccountFromDomain' , _ ( 'Please enter a valid from domain.' ));
$this -> messages [ 'AstAccountPort' ][ 0 ] = array ( 'ERROR' , _ ( 'Please enter a valid port number.' ));
$this -> messages [ 'AstAccountPort' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' asteriskAccount_AstAccountPort' , _ ( 'Please enter a valid port number.' ));
$this -> messages [ 'AstAccountIPAddress' ][ 0 ] = array ( 'ERROR' , _ ( 'The IP address is invalid.' ));
$this -> messages [ 'AstAccountIPAddress' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' asteriskAccount_AstAccountIPAddress' , _ ( 'The IP address is invalid.' ));
$this -> messages [ 'AstAccountDefaultUser' ][ 0 ] = array ( 'ERROR' , _ ( 'Please enter a valid default user.' ));
$this -> messages [ 'AstAccountDefaultUser' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' asteriskAccount_AstAccountDefaultUser' , _ ( 'Please enter a valid default user.' ));
2009-11-21 15:25:05 +00:00
}
/**
2010-09-18 11:37:22 +00:00
* Returns the HTML meta data for the main account page .
*
* @ return htmlElement HTML meta data
2009-11-21 15:25:05 +00:00
*/
function display_html_attributes () {
2010-09-14 18:25:36 +00:00
if ( isset ( $_POST [ 'addObjectClass' ])) {
2009-11-21 15:25:05 +00:00
$this -> attributes [ 'objectClass' ][] = 'AsteriskSIPUser' ;
}
2010-09-14 18:25:36 +00:00
$return = new htmlTable ();
2009-11-21 15:25:05 +00:00
if ( in_array ( 'AsteriskSIPUser' , $this -> attributes [ 'objectClass' ])) {
2010-09-14 18:25:36 +00:00
// caller ID
$callerId = '' ;
if ( isset ( $this -> attributes [ 'AstAccountCallerID' ][ 0 ])) {
$callerId = $this -> attributes [ 'AstAccountCallerID' ][ 0 ];
}
$callerIdInput = new htmlTableExtendedInputField ( _ ( " Caller ID " ), 'AstAccountCallerID' , $callerId , 'AstAccountCallerID' );
$callerIdInput -> setRequired ( true );
$return -> addElement ( $callerIdInput , true );
// host
$host = '' ;
if ( isset ( $this -> attributes [ 'AstAccountHost' ][ 0 ])) {
$host = $this -> attributes [ 'AstAccountHost' ][ 0 ];
}
$hostInput = new htmlTableExtendedInputField ( _ ( " Host " ), 'AstAccountHost' , $host , 'AstAccountHost' );
$hostInput -> setRequired ( true );
$return -> addElement ( $hostInput , true );
// context
$context = '' ;
if ( isset ( $this -> attributes [ 'AstAccountContext' ][ 0 ])) {
$context = $this -> attributes [ 'AstAccountContext' ][ 0 ];
}
$contextInput = new htmlTableExtendedInputField ( _ ( " Account context " ), 'AstAccountContext' , $context , 'AstAccountContext' );
$contextInput -> setRequired ( true );
$return -> addElement ( $contextInput , true );
2011-02-24 18:51:57 +00:00
// account type
$accountType = '' ;
if ( isset ( $this -> attributes [ 'AstAccountType' ][ 0 ])) {
$accountType = $this -> attributes [ 'AstAccountType' ][ 0 ];
}
$accountTypeInput = new htmlTableExtendedInputField ( _ ( " Account type " ), 'AstAccountType' , $accountType , 'AstAccountType' );
$accountTypeInput -> setRequired ( true );
$return -> addElement ( $accountTypeInput , true );
2011-03-27 19:27:21 +00:00
// user agent
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountUserAgent' )) {
$AstAccountUserAgent = '' ;
if ( isset ( $this -> attributes [ 'AstAccountUserAgent' ][ 0 ])) {
$AstAccountUserAgent = $this -> attributes [ 'AstAccountUserAgent' ][ 0 ];
}
$AstAccountUserAgentInput = new htmlTableExtendedInputField ( _ ( " User agent " ), 'AstAccountUserAgent' , $AstAccountUserAgent , 'AstAccountUserAgent' );
$return -> addElement ( $AstAccountUserAgentInput , true );
}
// AMA flags
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountAMAFlags' )) {
$AstAccountAMAFlagsOptions = array ( '-' , 'default' , 'omit' , 'billing' , 'documentation' );
$AstAccountAMAFlags = array ();
if ( isset ( $this -> attributes [ 'AstAccountAMAFlags' ][ 0 ])) {
$AstAccountAMAFlags [] = $this -> attributes [ 'AstAccountAMAFlags' ][ 0 ];
if (( $this -> attributes [ 'AstAccountAMAFlags' ][ 0 ] != '' ) && ! in_array ( $this -> attributes [ 'AstAccountAMAFlags' ][ 0 ], $AstAccountAMAFlagsOptions )) {
$AstAccountAMAFlagsOptions [] = $this -> attributes [ 'AstAccountAMAFlags' ][ 0 ];
}
}
$AstAccountAMAFlagsInput = new htmlTableExtendedSelect ( 'AstAccountAMAFlags' , $AstAccountAMAFlagsOptions , $AstAccountAMAFlags , _ ( " AMA flags " ), 'AstAccountAMAFlags' );
$return -> addElement ( $AstAccountAMAFlagsInput , true );
}
// call groups
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountCallGroup' )) {
$AstAccountCallGroup = '' ;
if ( isset ( $this -> attributes [ 'AstAccountCallGroup' ][ 0 ])) {
$AstAccountCallGroup = $this -> attributes [ 'AstAccountCallGroup' ][ 0 ];
}
$AstAccountCallGroupInput = new htmlTableExtendedInputField ( _ ( " Call groups " ), 'AstAccountCallGroup' , $AstAccountCallGroup , 'AstAccountCallGroup' );
$return -> addElement ( $AstAccountCallGroupInput , true );
}
// DTMF flags
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDTMFMode' )) {
$AstAccountDTMFModeOptions = array ( '-' , 'inband' , 'rfc2833' , 'info' , 'auto' );
$AstAccountDTMFMode = array ();
if ( isset ( $this -> attributes [ 'AstAccountDTMFMode' ][ 0 ])) {
$AstAccountDTMFMode [] = $this -> attributes [ 'AstAccountDTMFMode' ][ 0 ];
if (( $this -> attributes [ 'AstAccountDTMFMode' ][ 0 ] != '' ) && ! in_array ( $this -> attributes [ 'AstAccountDTMFMode' ][ 0 ], $AstAccountDTMFModeOptions )) {
$AstAccountDTMFModeOptions [] = $this -> attributes [ 'AstAccountDTMFMode' ][ 0 ];
}
}
$AstAccountDTMFModeInput = new htmlTableExtendedSelect ( 'AstAccountDTMFMode' , $AstAccountDTMFModeOptions , $AstAccountDTMFMode , _ ( " DTFM flags " ), 'AstAccountDTMFMode' );
$return -> addElement ( $AstAccountDTMFModeInput , true );
}
// from user
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountFromUser' )) {
$AstAccountFromUser = '' ;
if ( isset ( $this -> attributes [ 'AstAccountFromUser' ][ 0 ])) {
$AstAccountFromUser = $this -> attributes [ 'AstAccountFromUser' ][ 0 ];
}
$AstAccountFromUserInput = new htmlTableExtendedInputField ( _ ( " From user " ), 'AstAccountFromUser' , $AstAccountFromUser , 'AstAccountFromUser' );
$return -> addElement ( $AstAccountFromUserInput , true );
}
// from domain
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountFromDomain' )) {
$AstAccountFromDomain = '' ;
if ( isset ( $this -> attributes [ 'AstAccountFromDomain' ][ 0 ])) {
$AstAccountFromDomain = $this -> attributes [ 'AstAccountFromDomain' ][ 0 ];
}
$AstAccountFromDomainInput = new htmlTableExtendedInputField ( _ ( " From domain " ), 'AstAccountFromDomain' , $AstAccountFromDomain , 'AstAccountFromDomain' );
$return -> addElement ( $AstAccountFromDomainInput , true );
}
// full contact
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountFullContact' )) {
$AstAccountFullContact = '' ;
if ( isset ( $this -> attributes [ 'AstAccountFullContact' ][ 0 ])) {
$AstAccountFullContact = $this -> attributes [ 'AstAccountFullContact' ][ 0 ];
}
$AstAccountFullContactInput = new htmlTableExtendedInputField ( _ ( " Full contact " ), 'AstAccountFullContact' , $AstAccountFullContact , 'AstAccountFullContact' );
$return -> addElement ( $AstAccountFullContactInput , true );
}
// insecure
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountInsecure' )) {
$AstAccountInsecureOptions = array ( '-' , 'port' , 'invite' , 'port,invite' );
$AstAccountInsecure = array ();
if ( isset ( $this -> attributes [ 'AstAccountInsecure' ][ 0 ])) {
$AstAccountInsecure [] = $this -> attributes [ 'AstAccountInsecure' ][ 0 ];
if (( $this -> attributes [ 'AstAccountInsecure' ][ 0 ] != '' ) && ! in_array ( $this -> attributes [ 'AstAccountInsecure' ][ 0 ], $AstAccountInsecureOptions )) {
$AstAccountInsecureOptions [] = $this -> attributes [ 'AstAccountInsecure' ][ 0 ];
}
}
$AstAccountInsecureInput = new htmlTableExtendedSelect ( 'AstAccountInsecure' , $AstAccountInsecureOptions , $AstAccountInsecure , _ ( " Insecure " ), 'AstAccountInsecure' );
$return -> addElement ( $AstAccountInsecureInput , true );
}
// mailbox
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountMailbox' )) {
$AstAccountMailbox = '' ;
if ( isset ( $this -> attributes [ 'AstAccountMailbox' ][ 0 ])) {
$AstAccountMailbox = $this -> attributes [ 'AstAccountMailbox' ][ 0 ];
}
$AstAccountMailboxInput = new htmlTableExtendedInputField ( _ ( " Mailbox " ), 'AstAccountMailbox' , $AstAccountMailbox , 'AstAccountMailbox' );
$return -> addElement ( $AstAccountMailboxInput , true );
}
// NAT
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountNAT' )) {
$AstAccountNATOptions = array ( '-' , 'yes' , 'no' , 'never' , 'route' );
$AstAccountNAT = array ();
if ( isset ( $this -> attributes [ 'AstAccountNAT' ][ 0 ])) {
$AstAccountNAT [] = $this -> attributes [ 'AstAccountNAT' ][ 0 ];
if (( $this -> attributes [ 'AstAccountNAT' ][ 0 ] != '' ) && ! in_array ( $this -> attributes [ 'AstAccountNAT' ][ 0 ], $AstAccountNATOptions )) {
$AstAccountNATOptions [] = $this -> attributes [ 'AstAccountNAT' ][ 0 ];
}
}
$AstAccountNATInput = new htmlTableExtendedSelect ( 'AstAccountNAT' , $AstAccountNATOptions , $AstAccountNAT , _ ( " NAT " ), 'AstAccountNAT' );
$return -> addElement ( $AstAccountNATInput , true );
}
// deny
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDeny' )) {
$AstAccountDeny = '' ;
if ( isset ( $this -> attributes [ 'AstAccountDeny' ][ 0 ])) {
$AstAccountDeny = $this -> attributes [ 'AstAccountDeny' ][ 0 ];
}
$AstAccountDenyInput = new htmlTableExtendedInputField ( _ ( " Deny " ), 'AstAccountDeny' , $AstAccountDeny , 'AstAccountDeny' );
$return -> addElement ( $AstAccountDenyInput , true );
}
// permit
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountPermit' )) {
$AstAccountPermit = '' ;
if ( isset ( $this -> attributes [ 'AstAccountPermit' ][ 0 ])) {
$AstAccountPermit = $this -> attributes [ 'AstAccountPermit' ][ 0 ];
}
$AstAccountPermitInput = new htmlTableExtendedInputField ( _ ( " Permit " ), 'AstAccountPermit' , $AstAccountPermit , 'AstAccountPermit' );
$return -> addElement ( $AstAccountPermitInput , true );
}
// pickup group
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountPickupGroup' )) {
$AstAccountPickupGroup = '' ;
if ( isset ( $this -> attributes [ 'AstAccountPickupGroup' ][ 0 ])) {
$AstAccountPickupGroup = $this -> attributes [ 'AstAccountPickupGroup' ][ 0 ];
}
$AstAccountPickupGroupInput = new htmlTableExtendedInputField ( _ ( " Pickup group " ), 'AstAccountPickupGroup' , $AstAccountPickupGroup , 'AstAccountPickupGroup' );
$return -> addElement ( $AstAccountPickupGroupInput , true );
}
// port
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountPort' )) {
$AstAccountPort = '' ;
if ( isset ( $this -> attributes [ 'AstAccountPort' ][ 0 ])) {
$AstAccountPort = $this -> attributes [ 'AstAccountPort' ][ 0 ];
}
$AstAccountPortInput = new htmlTableExtendedInputField ( _ ( " Port " ), 'AstAccountPort' , $AstAccountPort , 'AstAccountPort' );
2011-10-19 17:57:57 +00:00
$AstAccountPortInput -> setValidationRule ( htmlElement :: VALIDATE_NUMERIC );
2011-03-27 19:27:21 +00:00
$return -> addElement ( $AstAccountPortInput , true );
}
// qualify
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountQualify' )) {
$AstAccountQualify = '' ;
if ( isset ( $this -> attributes [ 'AstAccountQualify' ][ 0 ])) {
$AstAccountQualify = $this -> attributes [ 'AstAccountQualify' ][ 0 ];
}
$AstAccountQualifyInput = new htmlTableExtendedInputField ( _ ( " Qualify " ), 'AstAccountQualify' , $AstAccountQualify , 'AstAccountQualify' );
$return -> addElement ( $AstAccountQualifyInput , true );
}
// restrict caller ID
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRestrictCID' )) {
$AstAccountRestrictCID = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRestrictCID' ][ 0 ])) {
$AstAccountRestrictCID = $this -> attributes [ 'AstAccountRestrictCID' ][ 0 ];
}
$AstAccountRestrictCIDInput = new htmlTableExtendedInputField ( _ ( " Restrict caller ID " ), 'AstAccountRestrictCID' , $AstAccountRestrictCID , 'AstAccountRestrictCID' );
$return -> addElement ( $AstAccountRestrictCIDInput , true );
}
// RTP timeout
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRTPTimeout' )) {
$AstAccountRTPTimeout = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRTPTimeout' ][ 0 ])) {
$AstAccountRTPTimeout = $this -> attributes [ 'AstAccountRTPTimeout' ][ 0 ];
}
$AstAccountRTPTimeoutInput = new htmlTableExtendedInputField ( _ ( " RTP timeout " ), 'AstAccountRTPTimeout' , $AstAccountRTPTimeout , 'AstAccountRTPTimeout' );
2011-10-19 17:57:57 +00:00
$AstAccountRTPTimeoutInput -> setValidationRule ( htmlElement :: VALIDATE_NUMERIC );
2011-03-27 19:27:21 +00:00
$return -> addElement ( $AstAccountRTPTimeoutInput , true );
}
// RTP hold timeout
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRTPHoldTimeout' )) {
$AstAccountRTPHoldTimeout = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRTPHoldTimeout' ][ 0 ])) {
$AstAccountRTPHoldTimeout = $this -> attributes [ 'AstAccountRTPHoldTimeout' ][ 0 ];
}
$AstAccountRTPHoldTimeoutInput = new htmlTableExtendedInputField ( _ ( " RTP hold timeout " ), 'AstAccountRTPHoldTimeout' , $AstAccountRTPHoldTimeout , 'AstAccountRTPHoldTimeout' );
2011-10-19 17:57:57 +00:00
$AstAccountRTPHoldTimeoutInput -> setValidationRule ( htmlElement :: VALIDATE_NUMERIC );
2011-03-27 19:27:21 +00:00
$return -> addElement ( $AstAccountRTPHoldTimeoutInput , true );
}
// disallowed codec
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDisallowedCodec' )) {
$AstAccountDisallowedCodec = '' ;
if ( isset ( $this -> attributes [ 'AstAccountDisallowedCodec' ][ 0 ])) {
$AstAccountDisallowedCodec = $this -> attributes [ 'AstAccountDisallowedCodec' ][ 0 ];
}
$AstAccountDisallowedCodecInput = new htmlTableExtendedInputField ( _ ( " Disallowed codec " ), 'AstAccountDisallowedCodec' , $AstAccountDisallowedCodec , 'AstAccountDisallowedCodec' );
$return -> addElement ( $AstAccountDisallowedCodecInput , true );
}
// allowed codec
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountAllowedCodec' )) {
$AstAccountAllowedCodec = '' ;
if ( isset ( $this -> attributes [ 'AstAccountAllowedCodec' ][ 0 ])) {
$AstAccountAllowedCodec = $this -> attributes [ 'AstAccountAllowedCodec' ][ 0 ];
}
$AstAccountAllowedCodecInput = new htmlTableExtendedInputField ( _ ( " Allowed codec " ), 'AstAccountAllowedCodec' , $AstAccountAllowedCodec , 'AstAccountAllowedCodec' );
$return -> addElement ( $AstAccountAllowedCodecInput , true );
}
// music on hold
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountMusicOnHold' )) {
$AstAccountMusicOnHold = '' ;
if ( isset ( $this -> attributes [ 'AstAccountMusicOnHold' ][ 0 ])) {
$AstAccountMusicOnHold = $this -> attributes [ 'AstAccountMusicOnHold' ][ 0 ];
}
$AstAccountMusicOnHoldInput = new htmlTableExtendedInputField ( _ ( " Music on hold " ), 'AstAccountMusicOnHold' , $AstAccountMusicOnHold , 'AstAccountMusicOnHold' );
$return -> addElement ( $AstAccountMusicOnHoldInput , true );
}
// expiration timestamp
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountExpirationTimestamp' )) {
$AstAccountExpirationTimestamp = '' ;
if ( isset ( $this -> attributes [ 'AstAccountExpirationTimestamp' ][ 0 ])) {
$AstAccountExpirationTimestamp = $this -> attributes [ 'AstAccountExpirationTimestamp' ][ 0 ];
}
$AstAccountExpirationTimestampInput = new htmlTableExtendedInputField ( _ ( " Expiration timestamp " ), 'AstAccountExpirationTimestamp' , $AstAccountExpirationTimestamp , 'AstAccountExpirationTimestamp' );
$return -> addElement ( $AstAccountExpirationTimestampInput , true );
}
// registration context
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRegistrationContext' )) {
$AstAccountRegistrationContext = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRegistrationContext' ][ 0 ])) {
$AstAccountRegistrationContext = $this -> attributes [ 'AstAccountRegistrationContext' ][ 0 ];
}
$AstAccountRegistrationContextInput = new htmlTableExtendedInputField ( _ ( " Registration context " ), 'AstAccountRegistrationContext' , $AstAccountRegistrationContext , 'AstAccountRegistrationContext' );
$return -> addElement ( $AstAccountRegistrationContextInput , true );
}
// registration extension
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRegistrationExten' )) {
$AstAccountRegistrationExten = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRegistrationExten' ][ 0 ])) {
$AstAccountRegistrationExten = $this -> attributes [ 'AstAccountRegistrationExten' ][ 0 ];
}
2011-04-09 13:11:38 +00:00
$AstAccountRegistrationExtenInput = new htmlTableExtendedInputField ( _ ( " Registration extension " ), 'AstAccountRegistrationExten' , $AstAccountRegistrationExten , 'AstAccountRegistrationExten' );
2011-03-27 19:27:21 +00:00
$return -> addElement ( $AstAccountRegistrationExtenInput , true );
}
// can call forward
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountCanCallForward' )) {
$AstAccountCanCallForwardOptions = array ( '-' , 'yes' , 'no' );
$AstAccountCanCallForward = array ();
if ( isset ( $this -> attributes [ 'AstAccountCanCallForward' ][ 0 ])) {
$AstAccountCanCallForward [] = $this -> attributes [ 'AstAccountCanCallForward' ][ 0 ];
if (( $this -> attributes [ 'AstAccountCanCallForward' ][ 0 ] != '' ) && ! in_array ( $this -> attributes [ 'AstAccountCanCallForward' ][ 0 ], $AstAccountCanCallForwardOptions )) {
$AstAccountCanCallForwardOptions [] = $this -> attributes [ 'AstAccountCanCallForward' ][ 0 ];
}
}
$AstAccountCanCallForwardInput = new htmlTableExtendedSelect ( 'AstAccountCanCallForward' , $AstAccountCanCallForwardOptions , $AstAccountCanCallForward , _ ( " Can call forward " ), 'AstAccountCanCallForward' );
$return -> addElement ( $AstAccountCanCallForwardInput , true );
}
// IP address
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountIPAddress' )) {
$AstAccountIPAddress = '' ;
if ( isset ( $this -> attributes [ 'AstAccountIPAddress' ][ 0 ])) {
$AstAccountIPAddress = $this -> attributes [ 'AstAccountIPAddress' ][ 0 ];
}
$AstAccountIPAddressInput = new htmlTableExtendedInputField ( _ ( " IP address " ), 'AstAccountIPAddress' , $AstAccountIPAddress , 'AstAccountIPAddress' );
$return -> addElement ( $AstAccountIPAddressInput , true );
}
// default user
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDefaultUser' )) {
$AstAccountDefaultUser = '' ;
if ( isset ( $this -> attributes [ 'AstAccountDefaultUser' ][ 0 ])) {
$AstAccountDefaultUser = $this -> attributes [ 'AstAccountDefaultUser' ][ 0 ];
}
$AstAccountDefaultUserInput = new htmlTableExtendedInputField ( _ ( " Default user " ), 'AstAccountDefaultUser' , $AstAccountDefaultUser , 'AstAccountDefaultUser' );
$return -> addElement ( $AstAccountDefaultUserInput , true );
}
// registration server
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRegistrationServer' )) {
$AstAccountRegistrationServer = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRegistrationServer' ][ 0 ])) {
$AstAccountRegistrationServer = $this -> attributes [ 'AstAccountRegistrationServer' ][ 0 ];
}
$AstAccountRegistrationServerInput = new htmlTableExtendedInputField ( _ ( " Registration server " ), 'AstAccountRegistrationServer' , $AstAccountRegistrationServer , 'AstAccountRegistrationServer' );
$return -> addElement ( $AstAccountRegistrationServerInput , true );
}
// last qualify milliseconds
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountLastQualifyMilliseconds' )) {
$AstAccountLastQualifyMilliseconds = '' ;
if ( isset ( $this -> attributes [ 'AstAccountLastQualifyMilliseconds' ][ 0 ])) {
$AstAccountLastQualifyMilliseconds = $this -> attributes [ 'AstAccountLastQualifyMilliseconds' ][ 0 ];
}
$AstAccountLastQualifyMillisecondsInput = new htmlTableExtendedInputField ( _ ( " Last qualify milliseconds " ), 'AstAccountLastQualifyMilliseconds' , $AstAccountLastQualifyMilliseconds , 'AstAccountLastQualifyMilliseconds' );
$return -> addElement ( $AstAccountLastQualifyMillisecondsInput , true );
}
2010-09-14 18:25:36 +00:00
}
else {
$return -> addElement ( new htmlButton ( 'addObjectClass' , _ ( 'Add Asterisk account' )));
2009-11-21 15:25:05 +00:00
}
return $return ;
}
/**
* Write variables into object and do some regex checks
*/
function process_attributes () {
if ( ! in_array ( 'AsteriskSIPUser' , $this -> attributes [ 'objectClass' ])) {
return array ();
}
$errors = array ();
$this -> attributes [ 'AstAccountCallerID' ] = array ();
$this -> attributes [ 'AstAccountHost' ] = array ();
$this -> attributes [ 'AstAccountContext' ] = array ();
2011-02-24 18:51:57 +00:00
$this -> attributes [ 'AstAccountType' ] = array ();
2009-11-21 15:25:05 +00:00
if ( isset ( $_POST [ 'AstAccountCallerID' ])) {
$this -> attributes [ 'AstAccountCallerID' ][ 0 ] = $_POST [ 'AstAccountCallerID' ];
2009-11-22 13:41:20 +00:00
// check if caller ID is empty
2009-11-21 15:25:05 +00:00
if ( $this -> attributes [ 'AstAccountCallerID' ][ 0 ] == '' ) {
$errors [] = $this -> messages [ 'AstAccountCallerID' ][ 0 ];
}
2009-11-22 13:41:20 +00:00
// check format
else if ( ! get_preg ( $this -> attributes [ 'AstAccountCallerID' ][ 0 ], 'username' )) {
$errors [] = $this -> messages [ 'AstAccountCallerID' ][ 1 ];
}
// check for duplicate caller ID
else if ( ! isset ( $this -> orig [ 'AstAccountCallerID' ][ 0 ]) || (( $this -> orig [ 'AstAccountCallerID' ][ 0 ] != $this -> attributes [ 'AstAccountCallerID' ][ 0 ]))) {
2010-02-06 13:38:13 +00:00
$entries = searchLDAPByAttribute ( 'AstAccountCallerID' , $this -> attributes [ 'AstAccountCallerID' ][ 0 ], 'AsteriskSIPUser' , array ( 'dn' ), array ( 'user' ));
if ( sizeof ( $entries ) > 0 ) {
2009-11-21 15:25:05 +00:00
$errors [] = $this -> messages [ 'AstAccountCallerID' ][ 2 ];
}
}
}
if ( isset ( $_POST [ 'AstAccountHost' ])) {
$this -> attributes [ 'AstAccountHost' ][ 0 ] = $_POST [ 'AstAccountHost' ];
if ( $this -> attributes [ 'AstAccountHost' ][ 0 ] == '' ) {
$errors [] = $this -> messages [ 'AstAccountHost' ][ 0 ];
}
2009-11-22 13:41:20 +00:00
elseif ( ! get_preg ( $this -> attributes [ 'AstAccountHost' ][ 0 ], 'hostname' )) {
$errors [] = $this -> messages [ 'AstAccountHost' ][ 1 ];
}
2009-11-21 15:25:05 +00:00
}
if ( isset ( $_POST [ 'AstAccountContext' ])) {
$this -> attributes [ 'AstAccountContext' ][ 0 ] = $_POST [ 'AstAccountContext' ];
if ( $this -> attributes [ 'AstAccountContext' ][ 0 ] == '' ) {
$errors [] = $this -> messages [ 'AstAccountContext' ][ 0 ];
}
2009-11-22 13:41:20 +00:00
elseif ( ! get_preg ( $this -> attributes [ 'AstAccountContext' ][ 0 ], 'username' )) {
$errors [] = $this -> messages [ 'AstAccountContext' ][ 1 ];
}
2009-11-21 15:25:05 +00:00
}
2011-02-24 18:51:57 +00:00
if ( isset ( $_POST [ 'AstAccountType' ])) {
$this -> attributes [ 'AstAccountType' ][ 0 ] = $_POST [ 'AstAccountType' ];
if ( $this -> attributes [ 'AstAccountType' ][ 0 ] == '' ) {
$errors [] = $this -> messages [ 'AstAccountType' ][ 0 ];
}
elseif ( ! get_preg ( $this -> attributes [ 'AstAccountType' ][ 0 ], 'username' )) {
$errors [] = $this -> messages [ 'AstAccountType' ][ 1 ];
}
}
2011-03-28 19:57:22 +00:00
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountUserAgent' )) {
$this -> attributes [ 'AstAccountUserAgent' ][ 0 ] = $_POST [ 'AstAccountUserAgent' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountAMAFlags' )) {
if (( $_POST [ 'AstAccountAMAFlags' ] == '-' ) && isset ( $this -> attributes [ 'AstAccountAMAFlags' ][ 0 ])) {
unset ( $this -> attributes [ 'AstAccountAMAFlags' ][ 0 ]);
}
else {
$this -> attributes [ 'AstAccountAMAFlags' ][ 0 ] = $_POST [ 'AstAccountAMAFlags' ];
}
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountCallGroup' )) {
$this -> attributes [ 'AstAccountCallGroup' ][ 0 ] = $_POST [ 'AstAccountCallGroup' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDTMFMode' )) {
if (( $_POST [ 'AstAccountDTMFMode' ] == '-' ) && isset ( $this -> attributes [ 'AstAccountDTMFMode' ][ 0 ])) {
unset ( $this -> attributes [ 'AstAccountDTMFMode' ][ 0 ]);
}
else {
$this -> attributes [ 'AstAccountDTMFMode' ][ 0 ] = $_POST [ 'AstAccountDTMFMode' ];
}
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountFromUser' )) {
$this -> attributes [ 'AstAccountFromUser' ][ 0 ] = $_POST [ 'AstAccountFromUser' ];
2011-03-29 19:46:58 +00:00
if (( $_POST [ 'AstAccountFromUser' ] != '' ) && ! get_preg ( $_POST [ 'AstAccountFromUser' ], 'username' )) {
$errors [] = $this -> messages [ 'AstAccountFromUser' ][ 0 ];
}
2011-03-28 19:57:22 +00:00
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountFromDomain' )) {
$this -> attributes [ 'AstAccountFromDomain' ][ 0 ] = $_POST [ 'AstAccountFromDomain' ];
2011-03-29 19:46:58 +00:00
if (( $_POST [ 'AstAccountFromDomain' ] != '' ) && ! get_preg ( $_POST [ 'AstAccountFromDomain' ], 'domainname' )) {
$errors [] = $this -> messages [ 'AstAccountFromDomain' ][ 0 ];
}
2011-03-28 19:57:22 +00:00
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountFullContact' )) {
$this -> attributes [ 'AstAccountFullContact' ][ 0 ] = $_POST [ 'AstAccountFullContact' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountInsecure' )) {
if (( $_POST [ 'AstAccountInsecure' ] == '-' ) && isset ( $this -> attributes [ 'AstAccountInsecure' ][ 0 ])) {
unset ( $this -> attributes [ 'AstAccountInsecure' ][ 0 ]);
}
else {
$this -> attributes [ 'AstAccountInsecure' ][ 0 ] = $_POST [ 'AstAccountInsecure' ];
}
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountMailbox' )) {
$this -> attributes [ 'AstAccountMailbox' ][ 0 ] = $_POST [ 'AstAccountMailbox' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountNAT' )) {
if (( $_POST [ 'AstAccountNAT' ] == '-' ) && isset ( $this -> attributes [ 'AstAccountNAT' ][ 0 ])) {
unset ( $this -> attributes [ 'AstAccountNAT' ][ 0 ]);
}
else {
$this -> attributes [ 'AstAccountNAT' ][ 0 ] = $_POST [ 'AstAccountNAT' ];
}
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDeny' )) {
$this -> attributes [ 'AstAccountDeny' ][ 0 ] = $_POST [ 'AstAccountDeny' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountPermit' )) {
$this -> attributes [ 'AstAccountPermit' ][ 0 ] = $_POST [ 'AstAccountPermit' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountPickupGroup' )) {
$this -> attributes [ 'AstAccountPickupGroup' ][ 0 ] = $_POST [ 'AstAccountPickupGroup' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountPort' )) {
$this -> attributes [ 'AstAccountPort' ][ 0 ] = $_POST [ 'AstAccountPort' ];
2011-03-29 19:46:58 +00:00
if (( $_POST [ 'AstAccountPort' ] != '' ) && ! get_preg ( $_POST [ 'AstAccountPort' ], 'digit' )) {
$errors [] = $this -> messages [ 'AstAccountPort' ][ 0 ];
}
2011-03-28 19:57:22 +00:00
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountQualify' )) {
$this -> attributes [ 'AstAccountQualify' ][ 0 ] = $_POST [ 'AstAccountQualify' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRestrictCID' )) {
$this -> attributes [ 'AstAccountRestrictCID' ][ 0 ] = $_POST [ 'AstAccountRestrictCID' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRTPTimeout' )) {
$this -> attributes [ 'AstAccountRTPTimeout' ][ 0 ] = $_POST [ 'AstAccountRTPTimeout' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRTPHoldTimeout' )) {
$this -> attributes [ 'AstAccountRTPHoldTimeout' ][ 0 ] = $_POST [ 'AstAccountRTPHoldTimeout' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDisallowedCodec' )) {
$this -> attributes [ 'AstAccountDisallowedCodec' ][ 0 ] = $_POST [ 'AstAccountDisallowedCodec' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountAllowedCodec' )) {
$this -> attributes [ 'AstAccountAllowedCodec' ][ 0 ] = $_POST [ 'AstAccountAllowedCodec' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountMusicOnHold' )) {
$this -> attributes [ 'AstAccountMusicOnHold' ][ 0 ] = $_POST [ 'AstAccountMusicOnHold' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountExpirationTimestamp' )) {
$this -> attributes [ 'AstAccountExpirationTimestamp' ][ 0 ] = $_POST [ 'AstAccountExpirationTimestamp' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRegistrationContext' )) {
$this -> attributes [ 'AstAccountRegistrationContext' ][ 0 ] = $_POST [ 'AstAccountRegistrationContext' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRegistrationExten' )) {
$this -> attributes [ 'AstAccountRegistrationExten' ][ 0 ] = $_POST [ 'AstAccountRegistrationExten' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountCanCallForward' )) {
if (( $_POST [ 'AstAccountCanCallForward' ] == '-' ) && isset ( $this -> attributes [ 'AstAccountCanCallForward' ][ 0 ])) {
unset ( $this -> attributes [ 'AstAccountCanCallForward' ][ 0 ]);
}
else {
$this -> attributes [ 'AstAccountCanCallForward' ][ 0 ] = $_POST [ 'AstAccountCanCallForward' ];
}
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountIPAddress' )) {
$this -> attributes [ 'AstAccountIPAddress' ][ 0 ] = $_POST [ 'AstAccountIPAddress' ];
2011-03-29 19:46:58 +00:00
if (( $_POST [ 'AstAccountIPAddress' ] != '' ) && ! get_preg ( $_POST [ 'AstAccountIPAddress' ], 'ip' )) {
$errors [] = $this -> messages [ 'AstAccountIPAddress' ][ 0 ];
}
2011-03-28 19:57:22 +00:00
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountDefaultUser' )) {
$this -> attributes [ 'AstAccountDefaultUser' ][ 0 ] = $_POST [ 'AstAccountDefaultUser' ];
2011-03-29 19:46:58 +00:00
if (( $_POST [ 'AstAccountDefaultUser' ] != '' ) && ! get_preg ( $_POST [ 'AstAccountDefaultUser' ], 'username' )) {
$errors [] = $this -> messages [ 'AstAccountDefaultUser' ][ 0 ];
}
2011-03-28 19:57:22 +00:00
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountRegistrationServer' )) {
$this -> attributes [ 'AstAccountRegistrationServer' ][ 0 ] = $_POST [ 'AstAccountRegistrationServer' ];
}
if ( ! $this -> isBooleanConfigOptionSet ( 'asteriskAccount_hideAstAccountLastQualifyMilliseconds' )) {
$this -> attributes [ 'AstAccountLastQualifyMilliseconds' ][ 0 ] = $_POST [ 'AstAccountLastQualifyMilliseconds' ];
}
2009-11-21 15:25:05 +00:00
return $errors ;
}
2009-11-24 12:09:29 +00:00
/**
* Returns a list of modifications which have to be made to the LDAP account .
*
* @ return array list of modifications
* < br > This function returns an array with 3 entries :
* < br > array ( DN1 ( 'add' => array ( $attr ), 'remove' => array ( $attr ), 'modify' => array ( $attr )), DN2 .... )
* < br > DN is the DN to change . It may be possible to change several DNs ( e . g . create a new user and add him to some groups via attribute memberUid )
* < br > " add " are attributes which have to be added to LDAP entry
* < br > " remove " are attributes which have to be removed from LDAP entry
* < br > " modify " are attributes which have to been modified in LDAP entry
2011-02-26 13:14:10 +00:00
* < br > " info " are values with informational value ( e . g . to be used later by pre / postModify actions )
2009-11-24 12:09:29 +00:00
*/
function save_attributes () {
if ( ! in_array ( 'AsteriskSIPUser' , $this -> attributes [ 'objectClass' ])) {
return array ();
}
return $this -> getAccountContainer () -> save_module_attributes ( $this -> attributes , $this -> orig );
}
2009-11-22 13:41:20 +00:00
/**
* Returns a list of PDF entries
*/
function get_pdfEntries () {
$return = array ();
$return [ get_class ( $this ) . '_AstAccountCallerID' ] = array ( '<block><key>' . _ ( 'Caller ID' ) . '</key><value>' . $this -> attributes [ 'AstAccountCallerID' ][ 0 ] . '</value></block>' );
$return [ get_class ( $this ) . '_AstAccountContext' ] = array ( '<block><key>' . _ ( 'Account context' ) . '</key><value>' . $this -> attributes [ 'AstAccountContext' ][ 0 ] . '</value></block>' );
$return [ get_class ( $this ) . '_AstAccountHost' ] = array ( '<block><key>' . _ ( 'Host' ) . '</key><value>' . $this -> attributes [ 'AstAccountHost' ][ 0 ] . '</value></block>' );
2011-02-24 18:51:57 +00:00
$return [ get_class ( $this ) . '_AstAccountType' ] = array ( '<block><key>' . _ ( 'Account type' ) . '</key><value>' . $this -> attributes [ 'AstAccountType' ][ 0 ] . '</value></block>' );
2011-03-21 20:50:45 +00:00
$AstAccountUserAgent = '' ;
if ( isset ( $this -> attributes [ 'AstAccountUserAgent' ][ 0 ])) $AstAccountUserAgent = $this -> attributes [ 'AstAccountUserAgent' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountUserAgent' ] = array ( '<block><key>' . _ ( 'User agent' ) . '</key><value>' . $AstAccountUserAgent . '</value></block>' );
$AstAccountAMAFlags = '' ;
if ( isset ( $this -> attributes [ 'AstAccountAMAFlags' ][ 0 ])) $AstAccountAMAFlags = $this -> attributes [ 'AstAccountAMAFlags' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountAMAFlags' ] = array ( '<block><key>' . _ ( 'AMA flags' ) . '</key><value>' . $AstAccountAMAFlags . '</value></block>' );
$AstAccountCallGroup = '' ;
if ( isset ( $this -> attributes [ 'AstAccountCallGroup' ][ 0 ])) $AstAccountCallGroup = $this -> attributes [ 'AstAccountCallGroup' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountCallGroup' ] = array ( '<block><key>' . _ ( 'Call groups' ) . '</key><value>' . $AstAccountCallGroup . '</value></block>' );
$AstAccountDTMFMode = '' ;
if ( isset ( $this -> attributes [ 'AstAccountDTMFMode' ][ 0 ])) $AstAccountDTMFMode = $this -> attributes [ 'AstAccountDTMFMode' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountDTMFMode' ] = array ( '<block><key>' . _ ( 'DTMF mode' ) . '</key><value>' . $AstAccountDTMFMode . '</value></block>' );
$AstAccountFromUser = '' ;
if ( isset ( $this -> attributes [ 'AstAccountFromUser' ][ 0 ])) $AstAccountFromUser = $this -> attributes [ 'AstAccountFromUser' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountFromUser' ] = array ( '<block><key>' . _ ( 'From user' ) . '</key><value>' . $AstAccountFromUser . '</value></block>' );
$AstAccountFromDomain = '' ;
if ( isset ( $this -> attributes [ 'AstAccountFromDomain' ][ 0 ])) $AstAccountFromDomain = $this -> attributes [ 'AstAccountFromDomain' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountFromDomain' ] = array ( '<block><key>' . _ ( 'From domain' ) . '</key><value>' . $AstAccountFromDomain . '</value></block>' );
$AstAccountFullContact = '' ;
if ( isset ( $this -> attributes [ 'AstAccountFullContact' ][ 0 ])) $AstAccountFullContact = $this -> attributes [ 'AstAccountFullContact' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountFullContact' ] = array ( '<block><key>' . _ ( 'Full contact' ) . '</key><value>' . $AstAccountFullContact . '</value></block>' );
$AstAccountInsecure = '' ;
if ( isset ( $this -> attributes [ 'AstAccountInsecure' ][ 0 ])) $AstAccountInsecure = $this -> attributes [ 'AstAccountInsecure' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountInsecure' ] = array ( '<block><key>' . _ ( 'Insecure' ) . '</key><value>' . $AstAccountInsecure . '</value></block>' );
$AstAccountMailbox = '' ;
if ( isset ( $this -> attributes [ 'AstAccountMailbox' ][ 0 ])) $AstAccountMailbox = $this -> attributes [ 'AstAccountMailbox' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountMailbox' ] = array ( '<block><key>' . _ ( 'Mailbox' ) . '</key><value>' . $AstAccountMailbox . '</value></block>' );
$AstAccountNAT = '' ;
if ( isset ( $this -> attributes [ 'AstAccountNAT' ][ 0 ])) $AstAccountNAT = $this -> attributes [ 'AstAccountNAT' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountNAT' ] = array ( '<block><key>' . _ ( 'NAT' ) . '</key><value>' . $AstAccountNAT . '</value></block>' );
$AstAccountDeny = '' ;
if ( isset ( $this -> attributes [ 'AstAccountDeny' ][ 0 ])) $AstAccountDeny = $this -> attributes [ 'AstAccountDeny' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountDeny' ] = array ( '<block><key>' . _ ( 'Deny' ) . '</key><value>' . $AstAccountDeny . '</value></block>' );
$AstAccountPermit = '' ;
if ( isset ( $this -> attributes [ 'AstAccountPermit' ][ 0 ])) $AstAccountPermit = $this -> attributes [ 'AstAccountPermit' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountPermit' ] = array ( '<block><key>' . _ ( 'Permit' ) . '</key><value>' . $AstAccountPermit . '</value></block>' );
$AstAccountPickupGroup = '' ;
if ( isset ( $this -> attributes [ 'AstAccountPickupGroup' ][ 0 ])) $AstAccountPickupGroup = $this -> attributes [ 'AstAccountPickupGroup' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountPickupGroup' ] = array ( '<block><key>' . _ ( 'Pickup group' ) . '</key><value>' . $AstAccountPickupGroup . '</value></block>' );
$AstAccountPort = '' ;
if ( isset ( $this -> attributes [ 'AstAccountPort' ][ 0 ])) $AstAccountPort = $this -> attributes [ 'AstAccountPort' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountPort' ] = array ( '<block><key>' . _ ( 'Port' ) . '</key><value>' . $AstAccountPort . '</value></block>' );
$AstAccountQualify = '' ;
if ( isset ( $this -> attributes [ 'AstAccountQualify' ][ 0 ])) $AstAccountQualify = $this -> attributes [ 'AstAccountQualify' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountQualify' ] = array ( '<block><key>' . _ ( 'Qualify' ) . '</key><value>' . $AstAccountQualify . '</value></block>' );
$AstAccountRestrictCID = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRestrictCID' ][ 0 ])) $AstAccountRestrictCID = $this -> attributes [ 'AstAccountRestrictCID' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountRestrictCID' ] = array ( '<block><key>' . _ ( 'Restrict caller ID' ) . '</key><value>' . $AstAccountRestrictCID . '</value></block>' );
$AstAccountRTPTimeout = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRTPTimeout' ][ 0 ])) $AstAccountRTPTimeout = $this -> attributes [ 'AstAccountRTPTimeout' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountRTPTimeout' ] = array ( '<block><key>' . _ ( 'RTP timeout' ) . '</key><value>' . $AstAccountRTPTimeout . '</value></block>' );
$AstAccountRTPHoldTimeout = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRTPHoldTimeout' ][ 0 ])) $AstAccountRTPHoldTimeout = $this -> attributes [ 'AstAccountRTPHoldTimeout' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountRTPHoldTimeout' ] = array ( '<block><key>' . _ ( 'RTP hold timeout' ) . '</key><value>' . $AstAccountRTPHoldTimeout . '</value></block>' );
$AstAccountDisallowedCodec = '' ;
if ( isset ( $this -> attributes [ 'AstAccountDisallowedCodec' ][ 0 ])) $AstAccountDisallowedCodec = implode ( '; ' , $this -> attributes [ 'AstAccountDisallowedCodec' ]);
$return [ get_class ( $this ) . '_AstAccountDisallowedCodec' ] = array ( '<block><key>' . _ ( 'Disallowed codec' ) . '</key><value>' . $AstAccountDisallowedCodec . '</value></block>' );
$AstAccountAllowedCodec = '' ;
if ( isset ( $this -> attributes [ 'AstAccountAllowedCodec' ][ 0 ])) $AstAccountAllowedCodec = implode ( '; ' , $this -> attributes [ 'AstAccountAllowedCodec' ]);
$return [ get_class ( $this ) . '_AstAccountAllowedCodec' ] = array ( '<block><key>' . _ ( 'Allowed codec' ) . '</key><value>' . $AstAccountAllowedCodec . '</value></block>' );
$AstAccountMusicOnHold = '' ;
if ( isset ( $this -> attributes [ 'AstAccountMusicOnHold' ][ 0 ])) $AstAccountMusicOnHold = $this -> attributes [ 'AstAccountMusicOnHold' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountMusicOnHold' ] = array ( '<block><key>' . _ ( 'Music on hold' ) . '</key><value>' . $AstAccountMusicOnHold . '</value></block>' );
$AstAccountExpirationTimestamp = '' ;
if ( isset ( $this -> attributes [ 'AstAccountExpirationTimestamp' ][ 0 ])) $AstAccountExpirationTimestamp = $this -> attributes [ 'AstAccountExpirationTimestamp' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountExpirationTimestamp' ] = array ( '<block><key>' . _ ( 'Expiration timestamp' ) . '</key><value>' . $AstAccountExpirationTimestamp . '</value></block>' );
$AstAccountRegistrationContext = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRegistrationContext' ][ 0 ])) $AstAccountRegistrationContext = $this -> attributes [ 'AstAccountRegistrationContext' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountRegistrationContext' ] = array ( '<block><key>' . _ ( 'Registration context' ) . '</key><value>' . $AstAccountRegistrationContext . '</value></block>' );
$AstAccountRegistrationExten = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRegistrationExten' ][ 0 ])) $AstAccountRegistrationExten = $this -> attributes [ 'AstAccountRegistrationExten' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountRegistrationExten' ] = array ( '<block><key>' . _ ( 'Registration extension' ) . '</key><value>' . $AstAccountRegistrationExten . '</value></block>' );
$AstAccountCanCallForward = '' ;
if ( isset ( $this -> attributes [ 'AstAccountCanCallForward' ][ 0 ])) $AstAccountCanCallForward = $this -> attributes [ 'AstAccountCanCallForward' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountCanCallForward' ] = array ( '<block><key>' . _ ( 'Can call forward' ) . '</key><value>' . $AstAccountCanCallForward . '</value></block>' );
$AstAccountIPAddress = '' ;
if ( isset ( $this -> attributes [ 'AstAccountIPAddress' ][ 0 ])) $AstAccountIPAddress = $this -> attributes [ 'AstAccountIPAddress' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountIPAddress' ] = array ( '<block><key>' . _ ( 'IP address' ) . '</key><value>' . $AstAccountIPAddress . '</value></block>' );
$AstAccountDefaultUser = '' ;
if ( isset ( $this -> attributes [ 'AstAccountDefaultUser' ][ 0 ])) $AstAccountDefaultUser = $this -> attributes [ 'AstAccountDefaultUser' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountDefaultUser' ] = array ( '<block><key>' . _ ( 'Default user' ) . '</key><value>' . $AstAccountDefaultUser . '</value></block>' );
$AstAccountRegistrationServer = '' ;
if ( isset ( $this -> attributes [ 'AstAccountRegistrationServer' ][ 0 ])) $AstAccountRegistrationServer = $this -> attributes [ 'AstAccountRegistrationServer' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountRegistrationServer' ] = array ( '<block><key>' . _ ( 'Registration server' ) . '</key><value>' . $AstAccountRegistrationServer . '</value></block>' );
$AstAccountLastQualifyMilliseconds = '' ;
if ( isset ( $this -> attributes [ 'AstAccountLastQualifyMilliseconds' ][ 0 ])) $AstAccountLastQualifyMilliseconds = $this -> attributes [ 'AstAccountLastQualifyMilliseconds' ][ 0 ];
$return [ get_class ( $this ) . '_AstAccountLastQualifyMilliseconds' ] = array ( '<block><key>' . _ ( 'Last qualify milliseconds' ) . '</key><value>' . $AstAccountLastQualifyMilliseconds . '</value></block>' );
2009-11-22 13:41:20 +00:00
return $return ;
}
2009-11-21 15:25:05 +00:00
/**
* In this function the LDAP account is built up .
*
* @ param array $rawAccounts list of hash arrays ( name => value ) from user input
* @ param array $partialAccounts list of hash arrays ( name => value ) which are later added to LDAP
* @ param array $ids list of IDs for column position ( e . g . " posixAccount_uid " => 5 )
2010-02-15 20:21:44 +00:00
* @ param array $selectedModules list of selected account modules
2009-11-21 15:25:05 +00:00
* @ return array list of error messages if any
*/
2010-02-15 20:21:44 +00:00
function build_uploadAccounts ( $rawAccounts , $ids , & $partialAccounts , $selectedModules ) {
2009-11-21 15:25:05 +00:00
$messages = array ();
for ( $i = 0 ; $i < sizeof ( $rawAccounts ); $i ++ ) {
// add object class
if ( ! in_array ( " AsteriskSIPUser " , $partialAccounts [ $i ][ 'objectClass' ])) $partialAccounts [ $i ][ 'objectClass' ][] = " AsteriskSIPUser " ;
2009-11-22 13:41:20 +00:00
// add account caller id
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountCallerID' ]], 'username' )) {
$partialAccounts [ $i ][ 'AstAccountCallerID' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountCallerID' ]];
}
else {
$errMsg = $this -> messages [ 'AstAccountCallerID' ][ 3 ];
array_push ( $errMsg , array ( $i ));
$messages [] = $errMsg ;
}
// add host
if ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountHost' ]] == " " ) {
// default value
$partialAccounts [ $i ][ 'AstAccountHost' ] = 'dynamic' ;
}
elseif ( get_preg ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountHost' ]], 'realname' )) {
$partialAccounts [ $i ][ 'AstAccountHost' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountHost' ]];
2009-11-21 15:25:05 +00:00
}
else {
2009-11-22 13:41:20 +00:00
$errMsg = $this -> messages [ 'AstAccountHost' ][ 2 ];
2009-11-21 15:25:05 +00:00
array_push ( $errMsg , array ( $i ));
$messages [] = $errMsg ;
}
2009-11-22 13:41:20 +00:00
//add context
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountContext' ]] != " " ) && ( get_preg ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountContext' ]], 'realname' )) ) {
$partialAccounts [ $i ][ 'AstAccountContext' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountContext' ]];
2009-11-21 15:25:05 +00:00
}
2009-11-22 13:41:20 +00:00
else {
$errMsg = $this -> messages [ 'AstAccountContext' ][ 2 ];
array_push ( $errMsg , array ( $i ));
$messages [] = $errMsg ;
2009-11-21 15:25:05 +00:00
}
2011-02-24 18:51:57 +00:00
//add account type
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountType' ]] != " " ) && ( get_preg ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountType' ]], 'username' )) ) {
$partialAccounts [ $i ][ 'AstAccountType' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountType' ]];
}
else {
$errMsg = $this -> messages [ 'AstAccountType' ][ 2 ];
array_push ( $errMsg , array ( $i ));
$messages [] = $errMsg ;
}
2009-11-22 13:41:20 +00:00
//add password
if ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRealmedPassword' ]] != " " ) {
2010-04-07 19:24:27 +00:00
$attributes = array ( 'AstAccountCallerID' => array ( $partialAccounts [ $i ][ 'AstAccountCallerID' ])); // fake attribute list for password building
$pwdString = asteriskAccount :: buildPasswordString ( $attributes , $this -> moduleSettings , $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRealmedPassword' ]]);
$partialAccounts [ $i ][ 'AstAccountRealmedPassword' ] = $pwdString ;
2009-11-21 15:25:05 +00:00
}
2011-03-31 18:48:15 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountUserAgent' ]] != " " ) {
$partialAccounts [ $i ][ 'AstAccountUserAgent' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountUserAgent' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountAMAFlags' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountAMAFlags' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountAMAFlags' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountCallGroup' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountCallGroup' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountCallGroup' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountDTMFMode' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountDTMFMode' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountDTMFMode' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountFromUser' ]] != " " )) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountFromUser' ]], 'username' )) {
$partialAccounts [ $i ][ 'AstAccountFromUser' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountFromUser' ]];
}
else {
$errMsg = $this -> messages [ 'AstAccountFromUser' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$messages [] = $errMsg ;
}
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountFromDomain' ]] != " " )) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountFromDomain' ]], 'domainname' )) {
$partialAccounts [ $i ][ 'AstAccountFromDomain' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountFromDomain' ]];
}
else {
$errMsg = $this -> messages [ 'AstAccountFromDomain' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$messages [] = $errMsg ;
}
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountFullContact' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountFullContact' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountFullContact' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountInsecure' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountInsecure' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountInsecure' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountMailbox' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountMailbox' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountMailbox' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountNAT' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountNAT' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountNAT' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountDeny' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountDeny' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountDeny' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountPermit' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountPermit' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountPermit' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountPickupGroup' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountPickupGroup' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountPickupGroup' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountPort' ]] != " " )) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountPort' ]], 'digit' )) {
$partialAccounts [ $i ][ 'AstAccountPort' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountPort' ]];
}
else {
$errMsg = $this -> messages [ 'AstAccountPort' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$messages [] = $errMsg ;
}
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountQualify' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountQualify' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountQualify' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRestrictCID' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountRestrictCID' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRestrictCID' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRTPTimeout' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountRTPTimeout' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRTPTimeout' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRTPHoldTimeout' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountRTPHoldTimeout' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRTPHoldTimeout' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountDisallowedCodec' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountDisallowedCodec' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountDisallowedCodec' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountAllowedCodec' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountAllowedCodec' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountAllowedCodec' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountMusicOnHold' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountMusicOnHold' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountMusicOnHold' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountExpirationTimestamp' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountExpirationTimestamp' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountExpirationTimestamp' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRegistrationContext' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountRegistrationContext' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRegistrationContext' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRegistrationExten' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountRegistrationExten' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRegistrationExten' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountCanCallForward' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountCanCallForward' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountCanCallForward' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountIPAddress' ]] != " " )) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountIPAddress' ]], 'ip' )) {
$partialAccounts [ $i ][ 'AstAccountIPAddress' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountIPAddress' ]];
}
else {
$errMsg = $this -> messages [ 'AstAccountIPAddress' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$messages [] = $errMsg ;
}
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountDefaultUser' ]] != " " )) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountDefaultUser' ]], 'username' )) {
$partialAccounts [ $i ][ 'AstAccountDefaultUser' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountDefaultUser' ]];
}
else {
$errMsg = $this -> messages [ 'AstAccountDefaultUser' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$messages [] = $errMsg ;
}
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRegistrationServer' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountRegistrationServer' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountRegistrationServer' ]];
}
if (( $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountLastQualifyMilliseconds' ]] != " " )) {
$partialAccounts [ $i ][ 'AstAccountLastQualifyMilliseconds' ] = $rawAccounts [ $i ][ $ids [ 'asteriskAccount_AstAccountLastQualifyMilliseconds' ]];
}
2009-11-21 15:25:05 +00:00
}
return $messages ;
}
2010-03-17 17:48:42 +00:00
/**
2009-11-21 15:25:05 +00:00
* This method specifies if a module manages password attributes .
* @ see passwordService :: managesPasswordAttributes
*
* @ return boolean true if this module manages password attributes
*/
public function managesPasswordAttributes () {
2010-04-01 17:31:55 +00:00
if ( ! in_array ( 'AsteriskSIPUser' , $this -> attributes [ 'objectClass' ])) {
return false ;
}
2009-11-21 15:25:05 +00:00
return true ;
}
2012-01-15 19:34:14 +00:00
/**
* Specifies if this module supports to force that a user must change his password on next login .
*
* @ return boolean force password change supported
*/
public function supportsForcePasswordChange () {
return false ;
}
2009-11-21 15:25:05 +00:00
/**
* This function is called whenever the password should be changed . Account modules
* must change their password attributes only if the modules list contains their module name .
*
* @ param String $password new password
* @ param $modules list of modules for which the password should be changed
2012-01-15 19:34:14 +00:00
* @ param boolean $forcePasswordChange force the user to change his password at next login
2009-11-21 15:25:05 +00:00
* @ return array list of error messages if any as parameter array for StatusMessage
* e . g . return arrray ( array ( 'ERROR' , 'Password change failed.' ))
* @ see passwordService :: passwordChangeRequested
*/
2012-01-15 19:34:14 +00:00
public function passwordChangeRequested ( $password , $modules , $forcePasswordChange ) {
2009-11-21 15:25:05 +00:00
if ( ! in_array ( get_class ( $this ), $modules )) {
return array ();
}
2010-04-07 19:24:27 +00:00
$this -> attributes [ 'AstAccountRealmedPassword' ][ 0 ] = asteriskAccount :: buildPasswordString ( $this -> attributes , $this -> moduleSettings , $password );
2009-11-21 15:25:05 +00:00
return array ();
}
2009-11-22 13:41:20 +00:00
2010-06-12 17:17:31 +00:00
/**
* Builds the password string for the password attribute .
*
* @ param array $attributes LDAP attributes
* @ param array $moduleSettings module configuration settings
* @ param String $password password
* @ return String value for password attribute
*/
2010-04-07 19:24:27 +00:00
public static function buildPasswordString ( & $attributes , & $moduleSettings , $password ) {
$astRealm = asteriskAccount :: ASTERISK_DEFAULT_REALM ;
$asteriskRealmFromProfile = $moduleSettings [ 'asteriskAccount_AsteriskRealm' ][ 0 ];
if ( $asteriskRealmFromProfile != " " ){
$astRealm = $asteriskRealmFromProfile ;
}
return asteriskAccount :: hashPassword ( $attributes [ 'AstAccountCallerID' ][ 0 ] . " : " . $astRealm . " : " . $password );
}
2009-11-22 13:41:20 +00:00
/**
* Hashes a password value to Asterisk format .
*
* @ param String $password password
* @ return String hash
*/
2010-04-07 19:24:27 +00:00
private static function hashPassword ( $password ) {
2010-03-17 17:48:42 +00:00
return " { MD5} " . md5 ( $password );
2009-11-22 13:41:20 +00:00
}
2009-11-21 15:25:05 +00:00
2010-09-02 18:21:59 +00:00
/**
2011-02-26 13:14:10 +00:00
* Checks if all input values are correct and returns the LDAP attributes which should be changed .
* < br > Return values :
* < br > messages : array of parameters to create status messages
* < br > add : array of attributes to add
* < br > del : array of attributes to remove
* < br > mod : array of attributes to modify
* < br > info : array of values with informational value ( e . g . to be used later by pre / postModify actions )
*
* Calling this method does not require the existence of an enclosing { @ link accountContainer } .
2010-09-02 18:21:59 +00:00
*
* @ param string $fields input fields
* @ param array $attributes LDAP attributes
2011-02-26 13:14:10 +00:00
* @ return array messages and attributes ( array ( 'messages' => array (), 'add' => array ( 'mail' => array ( 'test@test.com' )), 'del' => array (), 'mod' => array (), 'info' => array ()))
2010-09-02 18:21:59 +00:00
*/
function checkSelfServiceOptions ( $fields , $attributes ) {
2011-02-26 13:14:10 +00:00
$return = array ( 'messages' => array (), 'add' => array (), 'del' => array (), 'mod' => array (), 'info' => array ());
2010-09-02 18:21:59 +00:00
if ( ! in_array_ignore_case ( 'AsteriskSIPUser' , $attributes [ 'objectClass' ])) {
return $return ;
}
if ( isset ( $_POST [ 'posixAccount_password' ]) && ( $_POST [ 'posixAccount_password' ] != '' )) {
if ( $_POST [ 'posixAccount_password' ] != $_POST [ 'posixAccount_password2' ]) {
return $return ;
}
else {
if ( ! get_preg ( $_POST [ 'posixAccount_password' ], 'password' )) {
return $return ;
}
else {
// sync password
if ( in_array ( 'syncAsteriskPassword' , $fields )) {
$return [ 'mod' ][ 'AstAccountRealmedPassword' ][ 0 ] = asteriskAccount :: buildPasswordString ( $attributes , $this -> selfServiceSettings -> moduleSettings , $_POST [ 'posixAccount_password' ]);
}
}
}
}
return $return ;
}
2009-11-21 15:25:05 +00:00
}
?>