Сегодня столкнулся с тем что, API функция getChildIds (выдает список id дочерних элементов на всю глубину вложенности) после обновления движка Modx Evolution с версии 1.0.2 до 1.0.5 перестала правильно выдавать количество строк. Перековыряв весь сниппет TvTagCloud, в котором проблема выявилась острее всего, оказалось, что все таки проблема в последней версии движка.
Сама функция находится в файле document.parser.class.inc.php. Недолго думая, скопировал всю функцию из движка 1.0.2 в версию 1.0.5 и вуаля, все стало на свои места.
function getChildIds($id, $depth= 10, $children= array ()) {
$c= null;
foreach ($this->documentMap as $mapEntry) {
if (isset ($mapEntry[$id])) {
$childId= $mapEntry[$id];
$childKey= array_search($childId, $this->documentListing);
if (!$childKey) {
$childKey= "$childId";
}
$c[$childKey]= $childId;
}
}
$depth--;
if (is_array($c)) {
if (is_array($children)) {
$children= $children + $c;
} else {
$children= $c;
}
if ($depth) {
foreach ($c as $child) {
$children= $children + $this->getChildIds($child, $depth, $children);
}
}
}
return $children;
}