Merge branch 'MDL-30022_message_duplicate' of git://github.com/andyjdavis/moodle
authorSam Hemelryk <sam@moodle.com>
Tue, 4 Sep 2012 04:50:36 +0000 (16:50 +1200)
committerSam Hemelryk <sam@moodle.com>
Tue, 4 Sep 2012 04:50:36 +0000 (16:50 +1200)
1  2 
message/lib.php

diff --combined message/lib.php
@@@ -749,29 -749,15 +749,15 @@@ function message_get_recent_conversatio
          }
      }
  
-     //Sort the conversations. This is a bit complicated as we need to sort by $conversation->timecreated
-     //and there may be multiple conversations with the same timecreated value.
-     //The conversations array contains both read and unread messages (different tables) so sorting by ID won't work
-     usort($conversations, "conversationsort");
+     // Sort the conversations by $conversation->timecreated, newest to oldest
+     // There may be multiple conversations with the same timecreated
+     // The conversations array contains both read and unread messages (different tables) so sorting by ID won't work
+     $result = collatorlib::asort_objects_by_property($conversations, 'timecreated', collatorlib::SORT_NUMERIC);
+     $conversations = array_reverse($conversations);
  
      return $conversations;
  }
  
- /**
-  * Sort function used to order conversations
-  *
-  * @param object $a A conversation object
-  * @param object $b A conversation object
-  * @return integer
-  */
- function conversationsort($a, $b)
- {
-     if ($a->timecreated == $b->timecreated) {
-         return 0;
-     }
-     return ($a->timecreated > $b->timecreated) ? -1 : 1;
- }
  /**
   * Get the users recent event notifications
   *
@@@ -844,7 -830,7 +830,7 @@@ function message_print_recent_notificat
  
      $showicontext = false;
      $showotheruser = false;
 -    message_print_recent_messages_table($notifications, $user, $showotheruser, $showicontext);
 +    message_print_recent_messages_table($notifications, $user, $showotheruser, $showicontext, true);
  }
  
  /**
   * @param object $user the current user
   * @param bool $showotheruser display information on the other user?
   * @param bool $showicontext show text next to the action icons?
 + * @param bool $forcetexttohtml Force text to go through @see text_to_html() via @see format_text()
   * @return void
   */
 -function message_print_recent_messages_table($messages, $user=null, $showotheruser=true, $showicontext=false) {
 +function message_print_recent_messages_table($messages, $user=null, $showotheruser=true, $showicontext=false, $forcetexttohtml=false) {
      global $OUTPUT;
      static $dateformat;
  
          }
  
          echo html_writer::tag('span', userdate($message->timecreated, $dateformat), array('class' => 'messagedate'));
 -        echo html_writer::tag('span', format_text($messagetoprint, FORMAT_HTML), array('class' => 'themessage'));
 +        echo html_writer::tag('span', format_text($messagetoprint, $forcetexttohtml?FORMAT_MOODLE:FORMAT_HTML), array('class' => 'themessage'));
          echo message_format_contexturl($message);
          echo html_writer::end_tag('div');//end singlemessage
      }
@@@ -1805,7 -1790,7 +1791,7 @@@ function message_get_history($user1, $u
                                                      array($user1->id, $user2->id, $user2->id, $user1->id, $user1->id),
                                                      "timecreated $sort", '*', 0, $limitnum)) {
          foreach ($messages_read as $message) {
-             $messages[$message->timecreated] = $message;
+             $messages[] = $message;
          }
      }
      if ($messages_new =  $DB->get_records_select('message', "((useridto = ? AND useridfrom = ?) OR
                                                      array($user1->id, $user2->id, $user2->id, $user1->id, $user1->id),
                                                      "timecreated $sort", '*', 0, $limitnum)) {
          foreach ($messages_new as $message) {
-             $messages[$message->timecreated] = $message;
+             $messages[] = $message;
          }
      }
  
+     $result = collatorlib::asort_objects_by_property($messages, 'timecreated', collatorlib::SORT_NUMERIC);
      //if we only want the last $limitnum messages
-     ksort($messages);
      $messagecount = count($messages);
-     if ($limitnum>0 && $messagecount>$limitnum) {
-         $messages = array_slice($messages, $messagecount-$limitnum, $limitnum, true);
+     if ($limitnum > 0 && $messagecount > $limitnum) {
+         $messages = array_slice($messages, $messagecount - $limitnum, $limitnum, true);
      }
  
      return $messages;