364940cd8a84093ebdc1e0421443ca7d850823a0
[moodle.git] / message / classes / output / messagearea / contact.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Contains class used to prepare a contact for display.
19  *
20  * @package   core_message
21  * @copyright 2016 Mark Nelson <markn@moodle.com>
22  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 namespace core_message\output\messagearea;
27 defined('MOODLE_INTERNAL') || die();
29 use renderable;
30 use templatable;
32 /**
33  * Class to prepare a contact for display.
34  *
35  * @package   core_message
36  * @copyright 2016 Mark Nelson <markn@moodle.com>
37  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
38  */
39 class contact implements templatable, renderable {
41     /**
42      * @var int Maximum length of message to show in panel.
43      */
44     const MAX_MSG_LENGTH = 60;
46     /**
47      * @var int The userid.
48      */
49     public $userid;
51     /**
52      * @var int The id of the user who sent the last message.
53      */
54     public $useridfrom;
56     /**
57      * @var string The fullname.
58      */
59     public $fullname;
61     /**
62      * @var string The profile image url.
63      */
64     public $profileimageurl;
66     /**
67      * @var string The small profile image url.
68      */
69     public $profileimageurlsmall;
71     /**
72      * @var int The message id.
73      */
74     public $messageid;
76     /**
77      * @var bool Are we messaging the user?
78      */
79     public $ismessaging;
81     /**
82      * @var string The last message sent.
83      */
84     public $lastmessage;
86     /**
87      * @var int The last message sent timestamp.
88      */
89     public $lastmessagedate;
91     /**
92      * @var bool Is the user online?
93      */
94     public $isonline;
96     /**
97      * @var bool Is the user blocked?
98      */
99     public $isblocked;
101     /**
102      * @var bool Is the message read?
103      */
104     public $isread;
106     /**
107      * @var int The number of unread messages.
108      */
109     public $unreadcount;
111     /**
112      * @var int The id of the conversation to which to message belongs.
113      */
114     public $conversationid;
116     /**
117      * Constructor.
118      *
119      * @param \stdClass $contact
120      */
121     public function __construct($contact) {
122         $this->userid = $contact->userid;
123         $this->useridfrom = $contact->useridfrom;
124         $this->fullname = $contact->fullname;
125         $this->profileimageurl = $contact->profileimageurl;
126         $this->profileimageurlsmall = $contact->profileimageurlsmall;
127         $this->messageid = $contact->messageid;
128         $this->ismessaging = $contact->ismessaging;
129         $this->lastmessage = $contact->lastmessage;
130         $this->lastmessagedate = $contact->lastmessagedate;
131         $this->isonline = $contact->isonline;
132         $this->isblocked = $contact->isblocked;
133         $this->isread = $contact->isread;
134         $this->unreadcount = $contact->unreadcount;
135         $this->conversationid = $contact->conversationid ?? null;
136     }
138     public function export_for_template(\renderer_base $output) {
139         $contact = new \stdClass();
140         $contact->userid = $this->userid;
141         $contact->fullname = $this->fullname;
142         $contact->profileimageurl = $this->profileimageurl;
143         $contact->profileimageurlsmall = $this->profileimageurlsmall;
144         $contact->messageid = $this->messageid;
145         $contact->ismessaging = $this->ismessaging;
146         $contact->sentfromcurrentuser = false;
147         if ($this->lastmessage) {
148             if ($this->userid !== $this->useridfrom) {
149                 $contact->sentfromcurrentuser = true;
150             }
151             $contact->lastmessage = shorten_text($this->lastmessage, self::MAX_MSG_LENGTH);
152         } else {
153             $contact->lastmessage = null;
154         }
155         $contact->lastmessagedate = $this->lastmessagedate;
156         $contact->showonlinestatus = is_null($this->isonline) ? false : true;
157         $contact->isonline = $this->isonline;
158         $contact->isblocked = $this->isblocked;
159         $contact->isread = $this->isread;
160         $contact->unreadcount = $this->unreadcount;
161         $contact->conversationid = $this->conversationid;
163         return $contact;
164     }