From a162f9f654459c8bbc7b899dbfc483645fcf09f4 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Thu, 24 Feb 2011 18:51:57 +0000 Subject: [PATCH] support AstAccountType attribute --- lam/HISTORY | 1 + lam/lib/modules/asteriskAccount.inc | 49 +++++++++++++++++++++++++++-- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/lam/HISTORY b/lam/HISTORY index 03f89827..687660e7 100644 --- a/lam/HISTORY +++ b/lam/HISTORY @@ -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 diff --git a/lam/lib/modules/asteriskAccount.inc b/lam/lib/modules/asteriskAccount.inc index eac0e7bf..b5e53f46 100644 --- a/lam/lib/modules/asteriskAccount.inc +++ b/lam/lib/modules/asteriskAccount.inc @@ -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('' . _('Caller ID') . '' . $this->attributes['AstAccountCallerID'][0] . ''); $return[get_class($this) . '_AstAccountContext'] = array('' . _('Account context') . '' . $this->attributes['AstAccountContext'][0] . ''); $return[get_class($this) . '_AstAccountHost'] = array('' . _('Host') . '' . $this->attributes['AstAccountHost'][0] . ''); + $return[get_class($this) . '_AstAccountType'] = array('' . _('Account type') . '' . $this->attributes['AstAccountType'][0] . ''); 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