(PHP 5.4 >= 5.4.26, PHP 5.5 >= 5.5.10, PHP 5.6 >= 5.6.0, PHP 7, PHP 8)
ldap_modify_batch — Формирует и запускает пакетное изменение записи LDAP
$ldap,$dn,$modifications_info,$controls = nullФункция модифицирует существующую запись в каталоге LDAP. Функция даёт детально описать изменения.
ldapЭкземпляр класса LDAP\Connection, который возвращает функция ldap_connect().
dnУникальное имя объекта LDAP.
modifications_info
       Массив, который описывает необходимую модификацию. Каждая запись этого
       массива — ассоциативный массив с двумя или тремя ключами:
       attrib задаёт имя атрибута для изменения,
       modtype задаёт тип модификации
       и (в зависимости от типа модификации) values
       задаёт массив значений атрибутов, который соответствует этой модификации.
      
       Допустимые значения для modtype:
       
LDAP_MODIFY_BATCH_ADD
           Каждое значение, которое задали в элементе values
           будет добавлено (как дополнительное значение) к атрибуту attrib.
          
LDAP_MODIFY_BATCH_REMOVE
           Каждое значение, которое задали в элементе values
           будет удалено из атрибута, который задали в элементе attrib.
           Ни одно значение, которое не указали в элементе values,
           не будет затронуто.
          
LDAP_MODIFY_BATCH_REMOVE_ALL
           Все значения будут удалены у атрибута attrib.
           Параметр values не нужен.
          
LDAP_MODIFY_BATCH_REPLACE
           Все существующие значения атрибута attrib будут заменены
           значениями указанными в values.
          
       Обратите внимание, что все значения attrib должны быть строками,
       все значения values должны быть массивами строк и
       любые значения modtype должны быть одной из констант
       LDAP_MODIFY_BATCH_*, перечисленных выше.
      
controlsМассив управляющих объектов протокола LDAP для отправки в запросе.
   Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
  
| Версия | Описание | 
|---|---|
| 8.1.0 | Параметр ldapтеперь ожидает экземпляр класса LDAP\Connection;
  раньше параметр ждал ресурс (resource)ldap link. | 
| 8.0.0 | Параметр controlsтеперь допускает значение null;
  раньше значение по умолчанию равнялось[]. | 
| 7.3.0 | Добавлена поддержка параметра controls. | 
Пример #1 Добавление контакту телефонного номера
<?php
$dn = "cn=John Smith,ou=Wizards,dc=example,dc=com";
$modifs = [
    [
        "attrib"  => "telephoneNumber",
        "modtype" => LDAP_MODIFY_BATCH_ADD,
        "values"  => ["+1 555 555 1717"],
    ],
];
ldap_modify_batch($connection, $dn, $modifs);
?>Пример #2 Переименование пользователя
<?php
$dn = "cn=John Smith,ou=Wizards,dc=example,dc=com";
$modifs = [
    [
        "attrib"  => "sn",
        "modtype" => LDAP_MODIFY_BATCH_REPLACE,
        "values"  => ["Smith-Jones"],
    ],
    [
        "attrib"  => "givenName",
        "modtype" => LDAP_MODIFY_BATCH_REPLACE,
        "values"  => ["Jack"],
    ],
];
ldap_modify_batch($connection, $dn, $modifs);
ldap_rename($connection, $dn, "cn=Jack Smith-Jones", NULL, TRUE);
?>Пример #3 Добавление пользователю двух e-mail адресов
<?php
$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=example,dc=com";
$modifs = [
    [
        "attrib"  => "mail",
        "modtype" => LDAP_MODIFY_BATCH_ADD,
        "values"  => [
            "jack.smith@example.com",
            "jack.smith-jones@example.com",
        ],
    ],
];
ldap_modify_batch($connection, $dn, $modifs);
?>Пример #4 Изменение пароля пользователя
<?php
$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=example,dc=com";
$modifs = [
    [
        "attrib"  => "userPassword",
        "modtype" => LDAP_MODIFY_BATCH_REMOVE,
        "values"  => ["Tr0ub4dor&3"],
    ],
    [
        "attrib"  => "userPassword",
        "modtype" => LDAP_MODIFY_BATCH_ADD,
        "values"  => ["correct horse battery staple"],
    ],
];
ldap_modify_batch($connection, $dn, $modifs);
?>Пример #5 Изменение пароля пользователя (Active Directory)
<?php
function adifyPw($pw)
{
    return iconv("UTF-8", "UTF-16LE", '"' . $pw . '"');
}
$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=ad,dc=example,dc=com";
$modifs = [
    [
        "attrib"  => "unicodePwd",
        "modtype" => LDAP_MODIFY_BATCH_REMOVE,
        "values"  => [adifyPw("Tr0ub4dor&3")],
    ],
    [
        "attrib"  => "unicodePwd",
        "modtype" => LDAP_MODIFY_BATCH_ADD,
        "values"  => [adifyPw("correct horse battery staple")],
    ],
];
ldap_modify_batch($connection, $dn, $modifs);
?>