Баг или фича? buildTree в pdoTools не строит

Использую pdomenu для генерации дерева ресурсов начиная с определенной категории. Если коротко — не работает по крайней мере в одном случае. Ниже объясняю в каком.

Вызываю так
[[!pdoMenu?
                        &parents=`152`
                        &resources=`183,411,412,414`
                    ]]
где 411,412,414 — дети ресурса 183. В свою очередь 183 это потомок ресурса 152 из которого строю дерево.
Результат — pdoMenu ничего не выводит. Путем дебага выяснил что в методе pdoTools->buildTree не формируется дерево.

Обновление pdoTools не помогло.

Вся магия построения происходит тут
$rows = $tree = array();
            foreach ($tmp as $v) {
                $rows[$v[$id]] = $v;
            }
            foreach ($rows as $id => &$row) {
                if (empty($row[$parent]) || (!isset($rows[$row[$parent]]) && in_array($id, $roots))) {
                    $tree[$id] = &$row;
                } else {
                    $rows[$row[$parent]]['children'][$id] = &$row;
                }
            }
В моем же случае parent всегда есть (ни одного корневого элемента в &resources) и $id никогда не будет в $roots, поэтому во 2 цикле всегда отработает только 2 условие. При этом в массив $tree вообще ничего не попадает, и функция возвращает пустой массив.

Для того чтобы у меня на сайте работало как надо мне, я добавил третье условие во 2 цикл, in_array($row[$parent], $roots), и как временное решение это работает, но все же мне совсем не понятно почему pdoMenu не строит дерево не от корня.

И хотелось бы какое то перманентное решение.

Если я не понятно изъяснился, задавайте вопросы, как мне кажется довольно существенная проблемка.
kuzmin6969
08 июня 2016, 09:49
modx.pro
903
+2

Комментарии: 7

Василий Наумкин
08 июня 2016, 12:51
0
github.com/bezumkin/pdoTools/issues/new
А лучше сразу pull request с твоим исправлением.
    kuzmin6969
    08 июня 2016, 13:01
    0
    Запросто) будет
      kuzmin6969
      08 июня 2016, 13:23
      +1
        Василий Наумкин
        08 июня 2016, 14:15
        0
        Что-то я сначала смерджил, а потом решил проверить. И не могу никак воспроизвести твой баг.

        Покажи, пожалуйста, как у тебя эти ресурсы в дереве расположены?
          kuzmin6969
          08 июня 2016, 18:57
          0
          take.ms/Scyn8
          Категория, в ней категория тикетов, в ней 3 тикета.
          Кстати если указать только 183 в &resources, то pdoMenu выведет его.
          Если указать его с дочерними, то не выводит.
          Если указать еще одну категорию тикетов, в &resources, то правильно выведет обе ветки.
          Сам запутался
            kuzmin6969
            08 июня 2016, 19:12
            0
            &resources=`183` — выводит
            &resources=`411`, или любой другой тикет внутри — выводит
            &resources=`183,411` — ничего не выводит

            &resources=`183,411, любая другая категория тикетов на одном уровне со 183` — все выводится ок
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    7