function conv_sort($arr, $order) { if (!(is_array($arr) && count($arr))) { return array(); } $parents = array(); foreach ($arr as $x) { if ($x['id'] == $x['parent']) { $parents[] = $x; } } if (stristr($order, 'created')) { usort($parents, 'sort_thr_created'); } elseif (stristr($order, 'commented')) { usort($parents, 'sort_thr_commented'); } elseif (stristr($order, 'ascending')) { usort($parents, 'sort_thr_created_rev'); } if (count($parents)) { foreach ($parents as $i => $_x) { $parents[$i]['children'] = get_item_children($arr, $_x); } } if (count($parents)) { foreach ($parents as $k => $v) { if (count($parents[$k]['children'])) { $parents[$k]['children'] = sort_item_children($parents[$k]['children']); } } } $ret = array(); if (count($parents)) { foreach ($parents as $x) { $ret[] = $x; if (count($x['children'])) { add_children_to_list($x['children'], $ret); } } } return $ret; }
function conv_sort($arr, $order) { if (!(is_array($arr) && count($arr))) { return array(); } $parents = array(); $children = array(); foreach ($arr as $x) { if ($x['id'] == $x['parent']) { $parents[] = $x; } } if (stristr($order, 'created')) { usort($parents, 'sort_thr_created'); } elseif (stristr($order, 'commented')) { usort($parents, 'sort_thr_commented'); } if (count($parents)) { foreach ($parents as $i => $_x) { $parents[$i]['children'] = get_item_children($arr, $_x); } } /*foreach($arr as $x) { if($x['id'] != $x['parent']) { $p = find_thread_parent_index($parents,$x); if($p !== false) $parents[$p]['children'][] = $x; } }*/ if (count($parents)) { foreach ($parents as $k => $v) { if (count($parents[$k]['children'])) { $parents[$k]['children'] = sort_item_children($parents[$k]['children']); /*$y = $parents[$k]['children']; usort($y,'sort_thr_created_rev'); $parents[$k]['children'] = $y;*/ } } } $ret = array(); if (count($parents)) { foreach ($parents as $x) { $ret[] = $x; if (count($x['children'])) { add_children_to_list($x['children'], $ret); } /*foreach($x['children'] as $y) $ret[] = $y;*/ } } return $ret; }
function conv_sort($arr, $order) { if (!(is_array($arr) && count($arr))) { return array(); } $parents = array(); $children = array(); $newarr = array(); // This is a preparation for having two different items with the same uri in one thread // This will otherwise lead to an endless loop. foreach ($arr as $x) { if (!isset($newarr[$x['uri']])) { $newarr[$x['uri']] = $x; } } $arr = $newarr; foreach ($arr as $x) { if ($x['id'] == $x['parent']) { $parents[] = $x; } } if (stristr($order, 'created')) { usort($parents, 'sort_thr_created'); } elseif (stristr($order, 'commented')) { usort($parents, 'sort_thr_commented'); } if (count($parents)) { foreach ($parents as $i => $_x) { $parents[$i]['children'] = get_item_children($arr, $_x); } } /*foreach($arr as $x) { if($x['id'] != $x['parent']) { $p = find_thread_parent_index($parents,$x); if($p !== false) $parents[$p]['children'][] = $x; } }*/ if (count($parents)) { foreach ($parents as $k => $v) { if (count($parents[$k]['children'])) { $parents[$k]['children'] = sort_item_children($parents[$k]['children']); /*$y = $parents[$k]['children']; usort($y,'sort_thr_created_rev'); $parents[$k]['children'] = $y;*/ } } } $ret = array(); if (count($parents)) { foreach ($parents as $x) { $ret[] = $x; if (count($x['children'])) { add_children_to_list($x['children'], $ret); } /*foreach($x['children'] as $y) $ret[] = $y;*/ } } return $ret; }