static public function removeUnchangedAttributes($new_entry, $old_entry) {

    foreach ($new_entry as $key => $new_val) {
      $old_value = FALSE;
      $key_lcase = drupal_strtolower($key);
      if (isset($old_entry[$key_lcase])) {
        if ($old_entry[$key_lcase]['count'] == 1) {
          $old_value = $old_entry[$key_lcase][0];
          $old_value_is_scalar = TRUE;
        }
        else {
          unset($old_entry[$key_lcase]['count']);
          $old_value = $old_entry[$key_lcase];
          $old_value_is_scalar = FALSE;
        }
      }

      // identical multivalued attributes
      if (is_array($new_val) && is_array($old_value) && count(array_diff($new_val, $old_value)) == 0) {
        unset($new_entry[$key]);
      }
      elseif ($old_value_is_scalar && !is_array($new_val) && drupal_strtolower($old_value) == drupal_strtolower($new_val)) {
        unset($new_entry[$key]); // don't change values that aren't changing to avoid false permission constraints
      }
    }
    return $new_entry;
  }
static public function removeUnchangedAttributes($new_entry, $old_entry) {

    foreach ($new_entry as $key => $new_val) {
      $old_value = FALSE;
      $key_lcase = drupal_strtolower($key);
      if (isset($old_entry[$key_lcase])) {
        if ($old_entry[$key_lcase]['count'] == 1) {
          $old_value = $old_entry[$key_lcase][0];
          $old_value_is_scalar = TRUE;
        }
        else {
          unset($old_entry[$key_lcase]['count']);
          $old_value = $old_entry[$key_lcase];
          $old_value_is_scalar = FALSE;
        }
      }

      // identical multivalued attributes
      if (is_array($new_val) && is_array($old_value) && count(array_diff($new_val, $old_value)) == 0) {
        unset($new_entry[$key]);
      }
      elseif ($old_value_is_scalar && !is_array($new_val) && drupal_strtolower($old_value) == drupal_strtolower($new_val)) {
        unset($new_entry[$key]); // don't change values that aren't changing to avoid false permission constraints
      }
    }
    return $new_entry;
  }
static public function removeUnchangedAttributes ( $ new_entry , $ old_entry ) { foreach ( $ new_entry as $ key => $ new_val ) { $ old_value = FALSE ; $ key_lcase = drupal_strtolower ( $ key ) ; if ( isset ( $ old_entry [ $ key_lcase ] ) ) { if ( $ old_entry [ $ key_lcase ] [ 'count' ] == 1 ) { $ old_value = $ old_entry [ $ key_lcase ] [ 0 ] ; $ old_value_is_scalar = TRUE ; } else { unset ( $ old_entry [ $ key_lcase ] [ 'count' ] ) ; $ old_value = $ old_entry [ $ key_lcase ] ; $ old_value_is_scalar = FALSE ; } } // identical multivalued attributes if ( is_array ( $ new_val ) && is_array ( $ old_value ) && count ( array_diff ( $ new_val , $ old_value ) ) == 0 ) { unset ( $ new_entry [ $ key ] ) ; } elseif ( $ old_value_is_scalar && ! is_array ( $ new_val ) && drupal_strtolower ( $ old_value ) == drupal_strtolower ( $ new_val ) ) { unset ( $ new_entry [ $ key ] ) ; // don't change values that aren't changing to avoid false permission constraints } } return $ new_entry ; }
given 2 ldap entries, old and new, removed unchanged values to avoid security errors and incorrect date modifieds

@param ldap entry array $new_entry in form <attribute> => <value>
@param ldap entry array $old_entry in form <attribute> => array('count' => N, array(<value>,...<value>

@return ldap array with no values that have NOT changed
given 2 ldap entries old and new removed unchanged values to avoid security errors and incorrect date modifieds