Merge branch 'MDL-22937_message_html2' of git://github.com/andyjdavis/moodle
authorAparup Banerjee <aparup@moodle.com>
Mon, 6 Aug 2012 08:23:05 +0000 (16:23 +0800)
committerAparup Banerjee <aparup@moodle.com>
Mon, 6 Aug 2012 08:23:05 +0000 (16:23 +0800)
1  2 
mod/chat/lib.php
mod/chat/locallib.php

diff --combined mod/chat/lib.php
@@@ -280,7 -280,7 +280,7 @@@ function chat_print_recent_activity($co
          }
  
          if (groups_get_activity_groupmode($cm) != SEPARATEGROUPS
 -         or has_capability('moodle/site:accessallgroups', get_context_instance(CONTEXT_MODULE, $cm->id))) {
 +         or has_capability('moodle/site:accessallgroups', context_module::instance($cm->id))) {
              if ($timeout > time() - $cm->lasttime) {
                  $current[] = $cm;
              } else {
@@@ -875,7 -875,8 +875,8 @@@ function chat_format_message($message, 
   * @return bool|string Returns HTML or false
   */
  function chat_format_message_theme ($message, $chatuser, $currentuser, $groupingid, $theme = 'bubble') {
-     global $CFG, $USER, $OUTPUT, $COURSE, $DB;
+     global $CFG, $USER, $OUTPUT, $COURSE, $DB, $PAGE;
+     require_once($CFG->dirroot.'/mod/chat/locallib.php');
  
      static $users;     // Cache user lookups
  
      if(!empty($message->system)) {
          $result->type = 'system';
  
-         $userlink = new moodle_url('/user/view.php', array('id'=>$message->userid,'course'=>$courseid));
-         $patterns = array();
-         $replacements = array();
-         $patterns[] = '___senderprofile___';
-         $patterns[] = '___sender___';
-         $patterns[] = '___time___';
-         $patterns[] = '___event___';
-         $replacements[] = $CFG->wwwroot.'/user/view.php?id='.$sender->id.'&amp;course='.$courseid;
-         $replacements[] = fullname($sender);
-         $replacements[] = $message->strtime;
-         $replacements[] = get_string('message'.$message->message, 'chat', fullname($sender));
-         $result->html = str_replace($patterns, $replacements, $chattheme_cfg->event_message);
+         $senderprofile = $CFG->wwwroot.'/user/view.php?id='.$sender->id.'&amp;course='.$courseid;
+         $event = get_string('message'.$message->message, 'chat', fullname($sender));
+         $eventmessage = new event_message($senderprofile, fullname($sender), $message->strtime, $event, $theme);
+         $output = $PAGE->get_renderer('mod_chat');
+         $result->html = $output->render($eventmessage);
          return $result;
      }
  
  
      $result->text = strip_tags($outtime.': '.$outmain);
  
-     $ismymessage = '';
-     $rightalign = '';
+     $mymessageclass = '';
      if ($sender->id == $USER->id) {
-         $ismymessage = ' class="mymessage"';
-         $rightalign = ' align="right"';
-     }
-     $patterns = array();
-     $replacements = array();
-     $patterns[] = '___avatar___';
-     $patterns[] = '___sender___';
-     $patterns[] = '___senderprofile___';
-     $patterns[] = '___time___';
-     $patterns[] = '___message___';
-     $patterns[] = '___mymessageclass___';
-     $patterns[] = '___tablealign___';
-     $replacements[] = $message->picture;
-     $replacements[] = fullname($sender);
-     $replacements[] = $CFG->wwwroot.'/user/view.php?id='.$sender->id.'&amp;course='.$courseid;
-     $replacements[] = $outtime;
-     $replacements[] = $outmain;
-     $replacements[] = $ismymessage;
-     $replacements[] = $rightalign;
-     if (!empty($chattheme_cfg->avatar) and !empty($chattheme_cfg->align)) {
-         if (!empty($ismymessage)) {
-             $result->html = str_replace($patterns, $replacements, $chattheme_cfg->user_message_right);
-         } else {
-             $result->html = str_replace($patterns, $replacements, $chattheme_cfg->user_message_left);
-         }
-     } else {
-         $result->html = str_replace($patterns, $replacements, $chattheme_cfg->user_message);
+         $mymessageclass = 'chat-message-mymessage';
      }
  
+     $senderprofile = $CFG->wwwroot.'/user/view.php?id='.$sender->id.'&amp;course='.$courseid;
+     $usermessage = new user_message($senderprofile, fullname($sender), $message->picture, $mymessageclass, $outtime, $outmain, $theme);
+     $output = $PAGE->get_renderer('mod_chat');
+     $result->html = $output->render($usermessage);
      //When user beeps other user, then don't show any timestamp to other users in chat.
      if (('' === $outmain) && $special) {
          return false;
@@@ -1218,7 -1192,7 +1192,7 @@@ function chat_extend_navigation($naviga
  
      $currentgroup = groups_get_activity_group($cm, true);
  
 -    if (has_capability('mod/chat:chat', get_context_instance(CONTEXT_MODULE, $cm->id))) {
 +    if (has_capability('mod/chat:chat', context_module::instance($cm->id))) {
          $strenterchat    = get_string('enterchat', 'chat');
  
          $target = $CFG->wwwroot.'/mod/chat/';
diff --combined mod/chat/locallib.php
@@@ -103,7 -103,7 +103,7 @@@ class chat_portfolio_caller extends por
       * @return bool
       */
      public function check_permissions() {
 -        $context = get_context_instance(CONTEXT_MODULE, $this->cm->id);
 +        $context = context_module::instance($this->cm->id);
          return has_capability('mod/chat:exportsession', $context)
              || ($this->participated
                  && has_capability('mod/chat:exportparticipatedsession', $context));
                  : '');
      }
  }
+ /**
+  * A chat event such a user entering or leaving a chat activity
+  *
+  * @package    mod_chat
+  * @copyright  2012 Andrew Davis
+  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+  */
+ class event_message implements renderable {
+     /** @var string The URL of the profile of the user who caused the event */
+     public $senderprofile;
+     /** @var string The ready to display name of the user who caused the event */
+     public $sendername;
+     /** @var string Ready to display event time */
+     public $time;
+     /** @var string Event description */
+     public $event;
+     /** @var string The chat theme name */
+     public $theme;
+     /**
+      * event_message constructor
+      *
+      * @param string $senderprofile The URL of the profile of the user who caused the event
+      * @param string $sendername The ready to display name of the user who caused the event
+      * @param string $time Ready to display event time
+      * @param string $theme The chat theme name
+      */
+     function __construct($senderprofile, $sendername, $time, $event, $theme) {
+         $this->senderprofile = $senderprofile;
+         $this->sendername = $sendername;
+         $this->time = $time;
+         $this->event = $event;
+         $this->theme = $theme;
+     }
+ }
+ /**
+  * A chat message from a user
+  *
+  * @package    mod_chat
+  * @copyright  2012 Andrew Davis
+  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+  */
+ class user_message implements renderable {
+     /** @var string The URL of the profile of the user sending the message */
+     public $senderprofile;
+     /** @var string The ready to display name of the user sending the message */
+     public $sendername;
+     /** @var string HTML for the avatar of the user sending the message */
+     public $avatar;
+     /** @var string Empty or a html class definition to append to the html */
+     public $mymessageclass;
+     /** @var string Ready to display message time */
+     public $time;
+     /** @var string The message */
+     public $message;
+     /** @var string The name of the chat theme to use */
+     public $theme;
+     /**
+      * user_message constructor
+      *
+      * @param string $senderprofile The URL of the profile of the user sending the message
+      * @param string $sendername The ready to display name of the user sending the message
+      * @param string $avatar HTML for the avatar of the user sending the message
+      * @param string $mymessageclass Empty or a html class definition to append to the html
+      * @param string $time Ready to display message time
+      * @param string $message The message
+      * @param string $theme The name of the chat theme to use
+      */
+     function __construct($senderprofile, $sendername, $avatar, $mymessageclass, $time, $message, $theme) {
+         $this->sendername = $sendername;
+         $this->avatar = $avatar;
+         $this->mymessageclass = $mymessageclass;
+         $this->time = $time;
+         $this->message = $message;
+         $this->theme = $theme;
+     }
+ }