module ActiveLdap::Operations::Update

def update_all(attributes, filter=nil, options={})

def update_all(attributes, filter=nil, options={})
  search_options = options.dup
  if filter
    if filter.is_a?(String) and /[=\(\)&\|]/ !~ filter
      search_options = search_options.merge(:value => filter)
    else
      search_options = search_options.merge(:filter => filter)
    end
  end
  targets = search(search_options).collect do |dn, attrs|
    dn
  end
  unnormalized_attributes = attributes.collect do |name, value|
    normalized_name, normalized_value = normalize_attribute(name, value)
    [:replace, normalized_name,
     unnormalize_attribute(normalized_name, normalized_value)]
  end
  options[:connection] ||= connection
  conn = options[:connection]
  targets.each do |dn|
    conn.modify(dn, unnormalized_attributes, options)
  end
end