support AstAccountType attribute

This commit is contained in:
Roland Gruber 2011-02-24 18:51:57 +00:00
parent fb340d8fd8
commit a162f9f654
2 changed files with 48 additions and 2 deletions

View File

@ -2,6 +2,7 @@ April 2011 3.4.0
- IMAP mailboxes: support to read user name from uid attribute
- Personal: added additional options for account profiles
- Mail aliases: sort receipients (RFE 3170336)
- Asterisk: support AstAccountType attribute
- LAM Pro:
-> support automount entries
-> Zarafa groups: allow combination with group of names

View File

@ -70,7 +70,7 @@ class asteriskAccount extends baseModule implements passwordService {
$return['objectClasses'] = array('AsteriskSIPUser');
// managed attributes
$return['attributes'] = array('AstAccountCallerID', 'AstAccountHost',
'AstAccountRealmedPassword', 'AstAccountContext');
'AstAccountRealmedPassword', 'AstAccountContext', 'AstAccountType');
// icon
$return['icon'] = 'asterisk.png';
// self service
@ -95,6 +95,10 @@ class asteriskAccount extends baseModule implements passwordService {
"Headline" => _("Password"),
"Text" => _("Please enter the password which you want to set for this account.")
),
'AstAccountType' => array(
"Headline" => _("Account type"),
"Text" => _("Please enter the account's type (e.g. \"friend\").")
),
'AsteriskRealm' => array(
"Headline" => _("Asterisk realm"),
"Text" => _("Authentication realm for Asterisk server (default: asterisk). This value set in sip.conf (option: \"realm\").")
@ -112,17 +116,20 @@ class asteriskAccount extends baseModule implements passwordService {
$profileContainer = new htmlTable();
$profileContainer->addElement(new htmlTableExtendedInputField(_('Host'), 'asteriskAccount_AstAccountHost', null, 'AstAccountHost'), true);
$profileContainer->addElement(new htmlTableExtendedInputField(_('Account context'), 'asteriskAccount_AstAccountContext', null, 'AstAccountContext'), true);
$profileContainer->addElement(new htmlTableExtendedInputField(_('Account type'), 'asteriskAccount_AstAccountType', null, 'AstAccountType'), true);
$return['profile_options'] = $profileContainer;
// profile mappings
$return['profile_mappings'] = array(
'asteriskAccount_AstAccountHost' => 'AstAccountHost',
'asteriskAccount_AstAccountContext' => 'AstAccountContext'
'asteriskAccount_AstAccountContext' => 'AstAccountContext',
'asteriskAccount_AstAccountType' => 'AstAccountType',
);
// available PDF fields
$return['PDF_fields'] = array(
'AstAccountCallerID' => _('Caller ID'),
'AstAccountContext' => _('Account context'),
'AstAccountHost' => _('Host'),
'AstAccountType' => _('Account type'),
);
// upload dependencies
$return['upload_preDepends'] = array('posixAccount', 'inetOrgPerson');
@ -155,6 +162,13 @@ class asteriskAccount extends baseModule implements passwordService {
'help' => 'AstAccountRealmedPassword',
'example' => _('secret'),
),
array(
'name' => 'asteriskAccount_AstAccountType',
'description' => _('Account type'),
'help' => 'AstAccountType',
'example' => 'friend',
'required' => true
),
);
return $return;
}
@ -173,6 +187,9 @@ class asteriskAccount extends baseModule implements passwordService {
$this->messages['AstAccountHost'][0] = array('ERROR', _('Please enter the host name.'));
$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.'));
$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.'));
}
/**
@ -211,6 +228,14 @@ class asteriskAccount extends baseModule implements passwordService {
$contextInput = new htmlTableExtendedInputField(_("Account context"), 'AstAccountContext', $context, 'AstAccountContext');
$contextInput->setRequired(true);
$return->addElement($contextInput, true);
// 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);
}
else {
$return->addElement(new htmlButton('addObjectClass', _('Add Asterisk account')));
@ -229,6 +254,7 @@ class asteriskAccount extends baseModule implements passwordService {
$this->attributes['AstAccountCallerID'] = array();
$this->attributes['AstAccountHost'] = array();
$this->attributes['AstAccountContext'] = array();
$this->attributes['AstAccountType'] = array();
if (isset($_POST['AstAccountCallerID'])) {
$this->attributes['AstAccountCallerID'][0] = $_POST['AstAccountCallerID'];
// check if caller ID is empty
@ -265,6 +291,15 @@ class asteriskAccount extends baseModule implements passwordService {
$errors[] = $this->messages['AstAccountContext'][1];
}
}
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];
}
}
return $errors;
}
@ -294,6 +329,7 @@ class asteriskAccount extends baseModule implements passwordService {
$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>');
$return[get_class($this) . '_AstAccountType'] = array('<block><key>' . _('Account type') . '</key><value>' . $this->attributes['AstAccountType'][0] . '</value></block>');
return $return;
}
@ -342,6 +378,15 @@ class asteriskAccount extends baseModule implements passwordService {
array_push($errMsg, array($i));
$messages[] = $errMsg;
}
//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;
}
//add password
if ($rawAccounts[$i][$ids['asteriskAccount_AstAccountRealmedPassword']] != "") {
$attributes = array('AstAccountCallerID' => array($partialAccounts[$i]['AstAccountCallerID'])); // fake attribute list for password building