Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> каталог ldap, массив для древовидного меню 
:(
    Опции темы
alligator
Дата 2.5.2012, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 28.1.2004

Репутация: 1
Всего: 1



Доброго времени суток..... хочу сделать древовидный вывод данных из каталога ldap
никак не получается придумать алгоритм по формированию многомерного массива
Данные из каталога выводятся в таком виде.....
Код

Array
(
    [0] => 10
    [1] => Array
        (
            [objectclass] => Array
                (
                    [count] => 2
                    [0] => top
                    [1] => group
                )

            [0] => objectclass
            [samaccountname] => Array
                (
                    [count] => 1
                    [0] => _testgroup2
                )

            [1] => samaccountname
            [count] => 2
            [dn] => CN=Тестовая группа2,OU=Groups,DC=nit-energo,DC=ru
        )

    [2] => Array
        (
            [objectclass] => Array
                (
                    [count] => 2
                    [0] => top
                    [1] => group
                )

            [0] => objectclass
            [samaccountname] => Array
                (
                    [count] => 1
                    [0] => testgroup1
                )

            [1] => samaccountname
            [count] => 2
            [dn] => CN=Тестовая группа 1,OU=Groups,DC=nit-energo,DC=ru
        )

    [3] => Array
        (
            [objectclass] => Array
                (
                    [count] => 2
                    [0] => top
                    [1] => organizationalUnit
                )

            [0] => objectclass
            [ou] => Array
                (
                    [count] => 1
                    [0] => Groups
                )

            [1] => ou
            [count] => 2
            [dn] => OU=Groups,DC=nit-energo,DC=ru
        )

    [4] => Array
        (
            [objectclass] => Array
                (
                    [count] => 2
                    [0] => top
                    [1] => organizationalUnit
                )

            [0] => objectclass
            [ou] => Array
                (
                    [count] => 1
                    [0] => IT
                )

            [1] => ou
            [count] => 2
            [dn] => OU=IT,OU=Группы отделов,OU=Groups,DC=nit-energo,DC=ru
        )

    [5] => Array
        (
            [objectclass] => Array
                (
                    [count] => 2
                    [0] => top
                    [1] => organizationalUnit
                )

            [0] => objectclass
            [ou] => Array
                (
                    [count] => 1
                    [0] => Группы доступа
                )

            [1] => ou
            [count] => 2
            [dn] => OU=Группы доступа,OU=Groups,DC=nit-energo,DC=ru
        )

    [6] => Array
        (
            [objectclass] => Array
                (
                    [count] => 2
                    [0] => top
                    [1] => organizationalUnit
                )

            [0] => objectclass
            [ou] => Array
                (
                    [count] => 1
                    [0] => Группы отделов
                )

            [1] => ou
            [count] => 2
            [dn] => OU=Группы отделов,OU=Groups,DC=nit-energo,DC=ru
        )

    [7] => Array
        (
            [objectclass] => Array
                (
                    [count] => 2
                    [0] => top
                    [1] => organizationalUnit
                )

            [0] => objectclass
            [ou] => Array
                (
                    [count] => 1
                    [0] => Группы рассылки
                )

            [1] => ou
            [count] => 2
            [dn] => OU=Группы рассылки,OU=Groups,DC=nit-energo,DC=ru
        )

    [8] => Array
        (
            [objectclass] => Array
                (
                    [count] => 2
                    [0] => top
                    [1] => organizationalUnit
                )

            [0] => objectclass
            [ou] => Array
                (
                    [count] => 1
                    [0] => Пользователи
                )

            [1] => ou
            [count] => 2
            [dn] => OU=Пользователи,OU=Groups,DC=nit-energo,DC=ru
        )

    [9] => Array
        (
            [objectclass] => Array
                (
                    [count] => 2
                    [0] => top
                    [1] => organizationalUnit
                )

            [0] => objectclass
            [ou] => Array
                (
                    [count] => 1
                    [0] => Удаленный доступ
                )

            [1] => ou
            [count] => 2
            [dn] => OU=Удаленный доступ,OU=Groups,DC=nit-energo,DC=ru
        )

    [10] => Array
        (
            [objectclass] => Array
                (
                    [count] => 4
                    [0] => top
                    [1] => person
                    [2] => organizationalPerson
                    [3] => user
                )

            [0] => objectclass
            [displayname] => Array
                (
                    [count] => 1
                    [0] => Никонёнок Сергей Валентинович
                )

            [1] => displayname
            [useraccountcontrol] => Array
                (
                    [count] => 1
                    [0] => 512
                )

            [2] => useraccountcontrol
            [samaccountname] => Array
                (
                    [count] => 1
                    [0] => s.nikonyonok
                )

            [3] => samaccountname
            [count] => 4
            [dn] => CN=Никонёнок Сергей Валентинович,OU=Пользователи,OU=Groups,DC=nit-energo,DC=ru
        )

)


формирую так примерно
Код

    $tree_array=array();
    for($i=0;$i<sizeof($entries);$i++){
      $dn_size = sizeof($string_dn=explode(",", $entries[$i]['dn']));
             if($dn_size==3){$tree_array=array("".$entries[$i]['ou'][0]."" =>''); }
       if($dn_size==4){print_r($string_dn);}
    }


Хочу сделать универсальную функцию для любого уровня вложенности
Интересна сама реализация как это сделать..... очень надо!
PM MAIL   Вверх
Sentox
Дата 2.5.2012, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Лучше всего использовать паттерн Compostion. Такие структуры образовывать очень помагает объектный подход. 
Головной объект в который передаётся стрктура инициализирует "равзворачивание" дерева, то есть создание объекта композиции каждого уровня с соответственно определённым алгоритмом преобразования уровня. 
Задать для таких объектов интерфейс с методом допустим __toString() и/или getHtml(). При доступе к головному объекту ->getHtml(); (в нём же если существует дочерний уровень так же вызывается этот интерфейс) "раскручивается" генерация строки или кода HTML. В результате используем только инициализацию главного объекта композиции и вывод строки или html кода.
вроде такого:
Код

$ldap = array(........);
$composition = new ldapComposition($ldap);
$string = (string) $composition;
$html = $composition->getHtml();


Это сообщение отредактировал(а) Sentox - 2.5.2012, 20:34
PM MAIL   Вверх
alligator
Дата 3.5.2012, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 28.1.2004

Репутация: 1
Всего: 1



Погуглил но может нашел что-то не то(AdLdap 4.0.3)...., в коде мало полезного..... 
PM MAIL   Вверх
alligator
Дата 3.5.2012, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 28.1.2004

Репутация: 1
Всего: 1



может по DN анализировать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.