conversation sql optimisations
This commit is contained in:
parent
f1ee5f48d4
commit
4c35a6b0d7
3 changed files with 72 additions and 28 deletions
|
|
@ -884,3 +884,62 @@ function status_editor($a,$x, $notes_cid = 0) {
|
|||
|
||||
return $o;
|
||||
}
|
||||
|
||||
|
||||
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');
|
||||
|
||||
foreach($parents as $x)
|
||||
$x['children'] = array();
|
||||
|
||||
foreach($arr as $x) {
|
||||
if($x['id'] != $x['parent']) {
|
||||
$p = find_thread_parent_index($parents,$x);
|
||||
$parents[$p]['children'][] = $x;
|
||||
}
|
||||
}
|
||||
foreach($parents as $x)
|
||||
if(count($x['children']))
|
||||
usort($x['children'],'sort_thr_created_rev');
|
||||
|
||||
$ret = array();
|
||||
foreach($parents as $x) {
|
||||
$ret[] = $x;
|
||||
foreach($x['children'] as $y)
|
||||
$ret[] = $y;
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
function sort_thr_created($a,$b) {
|
||||
return strcmp($b['created'],$a['created']);
|
||||
}
|
||||
|
||||
function sort_thr_created_rev($a,$b) {
|
||||
return strcmp($a['created'],$b['created']);
|
||||
}
|
||||
|
||||
function sort_thr_commented($a,$b) {
|
||||
return strcmp($b['commented'],$a['commented']);
|
||||
}
|
||||
|
||||
function find_thread_parent_index($arr,$x) {
|
||||
foreach($arr as $k => $v)
|
||||
if($v['id'] == $x['parent'])
|
||||
return $k;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue