13.Zend Framework 2 et 3

13.8.LDAP

13.8.5.L'écriture dans l'annuaire

13.8.5.3.Renommage/Déplacement d'un objet

13.8.5.3.1.Avec rename() (ou son alias move())

Pour renommer un objet (ou le déplacer dans l'arborescence de l'annuaire LDAP) vous pouvez utiliser la méthode rename() (ou son alias move()) de l'objet Ldap[en savoir plus] avec pour paramètres:
  • Le DN de l'objet à renommer/déplacer
  • Le nouveau DN de l'objet
<?php
// A priori ce bout de code devrait faire partie d'un projet plus global qui
// inclus déjà la bibliothèque zend-ldap (le "require_once" qui suit devrait
// être inutile voire pourrait poser problème).
// Mais pour utiliser cet exemple seul, il convient de faire l'include
// nécessaire. Ce qui dans le cas d'une installation de zend-ldap via composer
// peut se faire avec la ligne suivante (adapter le chemin au besoin)
require_once('vendor/autoload.php');
use Zend\Ldap\Ldap;

$params = [
    'host' => 'ldap.phpfacile.com',
    'port' => 389, // Port par défaut = 389
    'username' => 'cn=admin,dc=phpfacile,dc=com',
    'password' => 'motDePasseSecret',
    'baseDn' => 'ou=redacteurs,dc=phpfacile,dc=com'
];
$ldap = new Ldap($params);
$ldap->rename('cn=Heute Dmien,ou=redacteurs,dc=phpfacile,dc=com',
              'cn=Heute Damien,ou=redacteurs,dc=phpfacile,dc=com');
?>
<?php
// A priori ce bout de code devrait faire partie d'un projet plus global qui
// inclus déjà la bibliothèque zend-ldap (le "require_once" qui suit devrait
// être inutile voire pourrait poser problème).
// Mais pour utiliser cet exemple seul, il convient de faire l'include
// nécessaire. Ce qui dans le cas d'une installation de zend-ldap via composer
// peut se faire avec la ligne suivante (adapter le chemin au besoin)
require_once('vendor/autoload.php');
use Zend\Ldap\Ldap;

$params = array(
    'host' => 'ldap.mondomaine.com',
    'port' => 389, // Port par défaut = 389
    'username' => 'cn=admin,dc=mondomaine,dc=com',
    'password' => 'motDePasseSecret',
    'baseDn' => 'dc=mondomaine,dc=com'
);
$ldap = new Ldap($params);
$ldap->rename('cn=Heute Dmien,dc=mondomaine,dc=com',
              'cn=Heute Damien,dc=mondomaine,dc=com');
?>

13.8.5.3.2.Avec moveToSubTree

Lorsqu'il s'agit de déplacer un objet dans une autre arborescence (ex: cn=PHP Facile!,dc=mondomain,dc=com vers cn=PHP Facile!,ou=sitesweb,dc=mondomain,dc=com), il est possible d'utiliser la méthode rename() (ou l'alias move()) mais si l'on souhaite s'éviter des manipulations de construction de DN on peut utiliser la méthode moveToSubtree() afin de n'avoir à préciser comme DN de destination le DN parent
<?php
// A priori ce bout de code devrait faire partie d'un projet plus global qui
// inclus déjà la bibliothèque zend-ldap (le "require_once" qui suit devrait
// être inutile voire pourrait poser problème).
// Mais pour utiliser cet exemple seul, il convient de faire l'include
// nécessaire. Ce qui dans le cas d'une installation de zend-ldap via composer
// peut se faire avec la ligne suivante (adapter le chemin au besoin)
require_once('vendor/autoload.php');
use Zend\Ldap\Ldap;

$params = [
    'host' => 'ldap.phpfacile.com',
    'port' => 389, // Port par défaut = 389
    'username' => 'cn=admin,dc=phpfacile,dc=com',
    'password' => 'motDePasseSecret',
    'baseDn' => 'ou=redacteurs,dc=phpfacile,dc=com'
];
$ldap = new Ldap($params);
$ldap->moveToSubtree('cn=Dupond Jean,dc=phpfacile,dc=com',
                     'cn=Dupond Jean,ou=redacteurs,dc=phpfacile,dc=com');
?>
<?php
// A priori ce bout de code devrait faire partie d'un projet plus global qui
// inclus déjà la bibliothèque zend-ldap (le "require_once" qui suit devrait
// être inutile voire pourrait poser problème).
// Mais pour utiliser cet exemple seul, il convient de faire l'include
// nécessaire. Ce qui dans le cas d'une installation de zend-ldap via composer
// peut se faire avec la ligne suivante (adapter le chemin au besoin)
require_once('vendor/autoload.php');
use Zend\Ldap\Ldap;

$params = array(
    'host' => 'ldap.phpfacile.com',
    'port' => 389, // Port par défaut = 389
    'username' => 'cn=admin,dc=phpfacile,dc=com',
    'password' => 'motDePasseSecret',
    'baseDn' => 'ou=redacteurs,dc=phpfacile,dc=com'
);
$ldap = new Ldap($params);
$ldap->moveToSubtree('cn=Dupond Jean,dc=mondomain,dc=com',
                     'cn=Dupond Jean,ou=redacteurs,dc=phpfacile,dc=com');
?>

13.8.5.4.Suppression d'un objet

La suppression d'un objet se fera par l'appel de la méthode delete() pour laquelle il suffit de passer en paramètre le DN de l'objet à supprimer. Si le DN n'est pas une feuille de l'arbre (comme pour les "organizational units (ou)"), alors on précisera true dans un second paramètre afin de demander une suppression récursive (i.e. la branche et tous les éléments dessous).
<?php
// A priori ce bout de code devrait faire partie d'un projet plus global qui
// inclus déjà la bibliothèque zend-ldap (le "require_once" qui suit devrait
// être inutile voire pourrait poser problème).
// Mais pour utiliser cet exemple seul, il convient de faire l'include
// nécessaire. Ce qui dans le cas d'une installation de zend-ldap via composer
// peut se faire avec la ligne suivante (adapter le chemin au besoin)
require_once('vendor/autoload.php');
use Zend\Ldap\Ldap;

$params = [
    'host' => 'ldap.phpfacile.com',
    'port' => 389, // Port par défaut = 389
    'username' => 'cn=admin,dc=phpfacile,dc=com',
    'password' => 'motDePasseSecret',
    'baseDn' => 'ou=redacteurs,dc=phpfacile,dc=com'
];
$ldap = new Ldap($params);
$ldap->delete('cn=Dupond Jean,ou=redacteurs,dc=phpfacile,dc=com');
?>
<?php
// A priori ce bout de code devrait faire partie d'un projet plus global qui
// inclus déjà la bibliothèque zend-ldap (le "require_once" qui suit devrait
// être inutile voire pourrait poser problème).
// Mais pour utiliser cet exemple seul, il convient de faire l'include
// nécessaire. Ce qui dans le cas d'une installation de zend-ldap via composer
// peut se faire avec la ligne suivante (adapter le chemin au besoin)
require_once('vendor/autoload.php');
use Zend\Ldap\Ldap;

$params = array(
    'host' => 'ldap.phpfacile.com',
    'port' => 389, // Port par défaut = 389
    'username' => 'cn=admin,dc=phpfacile,dc=com',
    'password' => 'motDePasseSecret',
    'baseDn' => 'ou=redacteurs,dc=phpfacile,dc=com'
);
$ldap = new Ldap($params);
$ldap->delete('cn=Dupond Jean,ou=redacteurs,dc=phpfacile,dc=com');
?>
Avec, pour le cas de la suppression récursive:
$ldap->delete('ou=redacteurs,dc=phpfacile,dc=com', true);