comparison plugins/thunderbird_labels/thunderbird_labels.php @ 25:4b2bc456ce42

threaded dates sort working
author Charlie Root
date Thu, 18 Jan 2018 07:54:45 -0500
parents 4869fae20b88
children b2b6c0af2383
comparison
equal deleted inserted replaced
24:4869fae20b88 25:4b2bc456ce42
406 }; 406 };
407 if ($this->rc->config->get('message_threading')[$mbox]) { 407 if ($this->rc->config->get('message_threading')[$mbox]) {
408 // The threading information is contained in three fields: 408 // The threading information is contained in three fields:
409 // depth, parent_uid and uid 409 // depth, parent_uid and uid
410 // I _think_ if you gave every depth0 message its dates as key 410 // I _think_ if you gave every depth0 message its dates as key
411 // every depth>0 its date as key 411 // every depth>0 [already sorted by date, see list.inc:71]
412 // Then first sort all the depth0 messages into a new array 412 // Then first sort all the depth0 messages into a new array
413 // then iterate over them, pull all depth1 with shared parent and sort _them, 413 // then iterate over them, pull all depth1 with shared parent
414 // insert after parent 414 // insert after parent
415 // repeat at depth 1, etc. 415 // repeat at depth 1, etc.
416 $sm = array(); // sorted result accumulates here
417 $rm = array(); // unprocessed remnant
418 foreach ($args['messages'] as $m) {
419 if ($m->depth===0) {
420 $sm[]=$m;
421 }
422 else {
423 $rm[]=$m;
424 }
425 }
426 rcube::write_log($this->name,"ts0: |".$rm[0]->depth."| |".($rm[0]->depth===0)."|");
427 usort($sm,$datesSort);
428 $depth=0;
429 $foundSome=true;
430 while ($foundSome) {
431 rcube::write_log($this->name,"ts: $depth ".count($sm).' '.count($rm));
432 $foundSome=false;
433 $tsm = array();
434 $trm = array();
435 foreach ($sm as $m) {
436 $tsm[]=$m;
437 if ($m->depth===$depth) {
438 $puid = $m->uid;
439 foreach ($rm as $c) {
440 if ($c->parent_uid===$puid) {
441 $tsm[]=$c;
442 $foundSome=true;
443 }
444 else {
445 $trm[]=$c;
446 }
447 }
448 $rm = $trm;
449 $trm = array();
450 }
451 }
452 $sm = $tsm;
453 $depth+=1;
454 }
455 $args['messages']=$sm;
416 } 456 }
417 else { 457 else {
418 usort($args['messages'],$datesSort); 458 usort($args['messages'],$datesSort);
419 } 459 }
420 } 460 }