$is_moderator = xnp_is_moderator($xnpsid, $uid);
if ($is_moderator && $get_vals['puid'] > 0) {
    $puid = $get_vals['puid'];
} else {
    $puid = $uid;
}
if ($is_moderator) {
    filterMyIndex($indexes, $xnpsid, $puid);
}
if ($get_vals['edit']) {
    filterEditableIndex($indexes, $xnpsid, $uid, $puid, $get_vals['edit_public'] && !empty($_SESSION['xoonips_old_uid']));
}
if ($get_vals['private_only']) {
    filterPrivateIndex($indexes, $puid);
}
$indexes = genIndexTree1($indexes);
// get number of items under nodes (by index).
// use special function.
$itemCounts = array();
$result = xnp_get_item_count_group_by_index($xnpsid, $itemCounts);
$ct = count($indexes);
for ($i = 0; $i < $ct; $i++) {
    // can't change value in foreach
    $index =& $indexes[$i];
    $index_id = $index['item_id'];
}
unset($index);
$xoonips_tree_nodes_array = array();
$xoonips_tree_roots_array = array();
$length = count($indexes);
foreach ($indexes as $i => $index) {
/** get Index tree contains Public and Private Index.
 * @param $xnpsid XNPSID
 * @return tree Empty array in error.
 */
function genPublicPrivateIndexTree($xnpsid, $uid)
{
    $indexes = genIndexTree0($xnpsid);
    filterPublicPrivateIndex($indexes, $uid);
    return genIndexTree1($indexes);
}