fixed issue when saving '0' values
This commit is contained in:
parent
a5522c29ab
commit
38cf0b2108
|
@ -1494,10 +1494,14 @@ class accountContainer {
|
|||
foreach ($orig[$name] as $j => $value) {
|
||||
if (is_array($attributes[$name])) {
|
||||
if (!in_array($value, $attributes[$name], true)) {
|
||||
if ($value != '') $torem[$name][] = $value;
|
||||
if (($value !== null) && ($value !== '')) {
|
||||
$torem[$name][] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ($value != '') $torem[$name][] = $value;
|
||||
elseif (($value !== null) && ($value !== '')) {
|
||||
$torem[$name][] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
// find new attributes
|
||||
|
@ -1505,17 +1509,19 @@ class accountContainer {
|
|||
foreach ($attributes[$name] as $j => $value) {
|
||||
if (isset($orig[$name]) && is_array($orig[$name])) {
|
||||
if (!in_array($value, $orig[$name], true))
|
||||
if ($value != '') {
|
||||
if (($value !== null) && ($value !== '')) {
|
||||
$toadd[$name][] = $value;
|
||||
}
|
||||
}
|
||||
else if ($value != '') $toadd[$name][] = $value;
|
||||
elseif (($value !== null) && ($value !== '')) {
|
||||
$toadd[$name][] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
// find unchanged attributes
|
||||
if (isset($orig[$name]) && is_array($orig[$name]) && is_array($attributes[$name])) {
|
||||
foreach ($attributes[$name] as $j => $value) {
|
||||
if (($value != '') && in_array($value, $orig[$name], true)) {
|
||||
if (($value !== null) && ($value !== '') && in_array($value, $orig[$name], true)) {
|
||||
$notchanged[$name][] = $value;
|
||||
}
|
||||
}
|
||||
|
@ -1524,26 +1530,33 @@ class accountContainer {
|
|||
// create modify with add and remove
|
||||
$attributes2 = array_keys($toadd);
|
||||
for ($i=0; $i<count($attributes2); $i++) {
|
||||
if (isset($torem[$attributes2[$i]]))
|
||||
if ((count($toadd[$attributes2[$i]]) > 0) && (count($torem[$attributes2[$i]]) > 0)) {
|
||||
// found attribute which should be modified
|
||||
$tomodify[$attributes2[$i]] = $toadd[$attributes2[$i]];
|
||||
// merge unchanged values
|
||||
if (isset($notchanged[$attributes2[$i]])) {
|
||||
$tomodify[$attributes2[$i]] = array_merge($tomodify[$attributes2[$i]], $notchanged[$attributes2[$i]]);
|
||||
unset($notchanged[$attributes2[$i]]);
|
||||
}
|
||||
// remove old add and remove commands
|
||||
unset($toadd[$attributes2[$i]]);
|
||||
unset($torem[$attributes2[$i]]);
|
||||
if (isset($torem[$attributes2[$i]]) && (count($toadd[$attributes2[$i]]) > 0) && (count($torem[$attributes2[$i]]) > 0)) {
|
||||
// found attribute which should be modified
|
||||
$tomodify[$attributes2[$i]] = $toadd[$attributes2[$i]];
|
||||
// merge unchanged values
|
||||
if (isset($notchanged[$attributes2[$i]])) {
|
||||
$tomodify[$attributes2[$i]] = array_merge($tomodify[$attributes2[$i]], $notchanged[$attributes2[$i]]);
|
||||
unset($notchanged[$attributes2[$i]]);
|
||||
}
|
||||
// remove old add and remove commands
|
||||
unset($toadd[$attributes2[$i]]);
|
||||
unset($torem[$attributes2[$i]]);
|
||||
}
|
||||
if (count($toadd)!=0) $return[$this->dn_orig]['add'] = $toadd;
|
||||
if (count($torem)!=0) $return[$this->dn_orig]['remove'] = $torem;
|
||||
if (count($tomodify)!=0) $return[$this->dn_orig]['modify'] = $tomodify;
|
||||
if (count($notchanged)!=0) $return[$this->dn_orig]['notchanged'] = $notchanged;
|
||||
return $return;
|
||||
}
|
||||
if (count($toadd) > 0) {
|
||||
$return[$this->dn_orig]['add'] = $toadd;
|
||||
}
|
||||
if (count($torem) > 0) {
|
||||
$return[$this->dn_orig]['remove'] = $torem;
|
||||
}
|
||||
if (count($tomodify) > 0) {
|
||||
$return[$this->dn_orig]['modify'] = $tomodify;
|
||||
}
|
||||
if (count($notchanged) > 0) {
|
||||
$return[$this->dn_orig]['notchanged'] = $notchanged;
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads an LDAP account with the given DN.
|
||||
|
|
Loading…
Reference in New Issue