fixed OU changing
This commit is contained in:
parent
40b433f545
commit
e09ea0a8d6
|
@ -502,25 +502,28 @@ class asteriskExtensionNewUI extends baseModule {
|
|||
return array();
|
||||
}
|
||||
|
||||
function getOrigDNSuffix(){
|
||||
$dn_orig_array = explode(",", $this->getAccountContainer()->dn_orig);
|
||||
$orig_suffix = implode(",", array_slice($dn_orig_array, 1, count($dn_orig_array)));
|
||||
return $orig_suffix;
|
||||
}
|
||||
|
||||
/*
|
||||
* Gwet list of all application for given extension and move it into given suffix
|
||||
/**
|
||||
* Get list of all applications for given extension and move it into new suffix.
|
||||
*
|
||||
* @return array list of error messages
|
||||
*/
|
||||
|
||||
function move_extention_to_new_suffix() {
|
||||
$orig_suffix = $this->getOrigDNSuffix();
|
||||
if (strcmp($orig_suffix, $this->getAccountContainer()->dnSuffix) != 0 && !$this->getAccountContainer()->isNewAccount) {
|
||||
$is_rename_success = false;
|
||||
$errors = array();
|
||||
$orig_suffix = extractDNSuffix($this->getAccountContainer()->dn_orig);
|
||||
if (strcmp($orig_suffix, $this->getAccountContainer()->dnSuffix) != 0 && !$this->getAccountContainer()->isNewAccount) {
|
||||
$is_rename_success = false;
|
||||
for ($rowCounter = 0; $rowCounter < count($this->extensionRows); $rowCounter++) {
|
||||
$row = $this->extensionRows[$rowCounter];
|
||||
$is_rename_success = ldap_rename($_SESSION['ldap']->server(), "cn=" . $row["cn"][0] . "," . $orig_suffix, "cn=" . $row["cn"][0], $this->getAccountContainer()->dnSuffix, true);
|
||||
$oldDN = "cn=" . $row["cn"][0] . "," . $orig_suffix;
|
||||
$newRDN = "cn=" . $row["cn"][0];
|
||||
$is_rename_success = @ldap_rename($_SESSION['ldap']->server(), $oldDN, $newRDN, $this->getAccountContainer()->dnSuffix, true);
|
||||
if (!$is_rename_success) {
|
||||
$errors[] = array('ERROR', sprintf(_('Was unable to rename DN: %s.'), $this->dn_orig), ldap_error($_SESSION['ldap']->server()));
|
||||
logNewMessage(LOG_ERR, 'Unable to rename ' . $oldDN . ' to ' . $newRDN . ',' . $this->getAccountContainer()->dnSuffix);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $errors;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -695,12 +698,10 @@ class asteriskExtensionNewUI extends baseModule {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Search by extension name and retun true if fileds wtith this extension name is presented
|
||||
/**
|
||||
* Search by extension name and retun true if fields wtith this extension name is presented
|
||||
* and false otherwise.
|
||||
*
|
||||
*/
|
||||
|
||||
function isThisExtensionPresented($extension) {
|
||||
$searchClass = "AsteriskExtension";
|
||||
$searchScope = 'asteriskExtNewUI';
|
||||
|
@ -715,12 +716,11 @@ class asteriskExtensionNewUI extends baseModule {
|
|||
return $isPresented;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function search in in the base subtree and find all extensions names within.
|
||||
/**
|
||||
* This function searches in the base subtree and finds all extensions names within.
|
||||
* The generation algorithm is the naive one, so only work when extension is numbers.
|
||||
* All extension name is sorted and new extension name will be greates on + 1.
|
||||
*/
|
||||
|
||||
function generateNextExtensionName() {
|
||||
$searchClass = "AsteriskExtension";
|
||||
$searchScope = 'asteriskExtNewUI';
|
||||
|
@ -862,13 +862,32 @@ class asteriskExtensionNewUI extends baseModule {
|
|||
|
||||
|
||||
|
||||
//public
|
||||
|
||||
function save_attributes() {
|
||||
|
||||
/**
|
||||
* Returns a list of modifications which have to be made to the LDAP account.
|
||||
*
|
||||
* Calling this method requires the existence of an enclosing {@link accountContainer}.<br>
|
||||
* <br>
|
||||
*
|
||||
* <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 is possible to change several DNs (e.g. create a new user and add him
|
||||
* to some groups via attribute memberUid)<br>
|
||||
* <br><b>"add"</b> are attributes which have to be added to the LDAP entry
|
||||
* <br><b>"remove"</b> are attributes which have to be removed from the LDAP entry
|
||||
* <br><b>"modify"</b> are attributes which have to be modified in the LDAP entry
|
||||
* <br><b>"notchanged"</b> are attributes which stay unchanged
|
||||
* <br><b>"info"</b> values with informational value (e.g. to be used later by pre/postModify actions)
|
||||
* <br>
|
||||
* <br>This builds the required comands from $this-attributes and $this->orig.
|
||||
*
|
||||
* @return array list of modifications
|
||||
*/
|
||||
function save_attributes() {
|
||||
$errors = array();
|
||||
$this->extensionRows = $this->array_sort($this->extensionRows, 'astpriority');
|
||||
|
||||
$this->move_extention_to_new_suffix(); //Muve extension to new suffix if necessary
|
||||
$moveErrors = $this->move_extention_to_new_suffix(); // move extension to new suffix if necessary
|
||||
$errors = array_merge($errors, $moveErrors);
|
||||
//Modify existent config roes if necessary
|
||||
for ($rowCounter = 0; $rowCounter < count($this->extensionRowsOrig); $rowCounter++) {
|
||||
$rowOrig = $this->extensionRowsOrig[$rowCounter];
|
||||
|
@ -897,7 +916,8 @@ class asteriskExtensionNewUI extends baseModule {
|
|||
ldap_add($_SESSION['ldap']->server(), "cn=" . $row["cn"][0] . "," . $this->getAccountContainer()->dnSuffix, $row);
|
||||
}
|
||||
//this is trick for Edit again button to work
|
||||
$this->finalDN = "cn=" . $this->extensionRowsOrig[0]['cn'][0] . "," . $this->getAccountContainer()->dnSuffix;
|
||||
$this->getAccountContainer()->dn_orig = "cn=" . $this->extensionRowsOrig[0]['cn'][0] . "," . $this->getAccountContainer()->dnSuffix;
|
||||
$this->getAccountContainer()->finalDN = "cn=" . $this->extensionRowsOrig[0]['cn'][0] . "," . $this->getAccountContainer()->dnSuffix;
|
||||
|
||||
$retun_obj = $this->getAccountContainer()->save_module_attributes($this->orig, $this->orig);
|
||||
|
||||
|
|
Loading…
Reference in New Issue