Адресная книга (cck + ldap)

Главные вкладки

Аватар пользователя talgar talgar 9 июля 2008 в 15:21

Для нужд собственной компании необходимо было сделать адресную книгу. Реализовать хотелось в друпале, но с поддержкой LDAP чтобы можно было пользоваться напрямую из почтовых клиентов.
Решение оказалось простым и надежным. Создаем новый тип нода (например, person), прописываем необходимые поля (ФИО, адрес, контакты, почта и т.д.) через CCK. Добавляем еще одно логическое поле «Публиковать в LDAP».
Далее с помощью модуля workflow-ng отлавливаем событие «изменение нода person», и в действие на это событие добавляем «custom php code»
В этом коде выясняем значение поля «Публиковать в LDAP», и в случае публикации коннектимся к LDAP каталогу и создаем нужный объект.
Вот как происходит заполнение полей в этом коде:

$object["givenname"] = "[node:field_first_name-raw]";
$object["cn"] = "[node:field_last_name-raw] [node:field_first_name-raw]";
if ("[node:field_middle_name-raw]") $object["initials"] = "[node:field_middle_name-raw]";
if ("[node:field_email-email]") $object["mail"] = "[node:field_email-email]";

В итоге получили адресную книгу, которой можно управлять через друпаловский интерфейс, контакты использовать в связке с другими друпаловскими нодами и самое главное получать доступ к данным адресной книги через LDAP.