Файл: concrete5.7.5.6/concrete/src/User/PrivateMessage/PrivateMessage.php
Строк: 120
<?php
namespace ConcreteCoreUserPrivateMessage;
use ConcreteCoreFoundationObject;
use ConcreteCoreUserPrivateMessageMailbox as UserPrivateMessageMailbox;
use Loader;
use UserInfo;
use Events;
class PrivateMessage extends Object {
protected $authorName = false;
protected $mailbox;
public function getMessageDelimiter() {
return t('-------------------- Original Message --------------------');
}
public static function getByID($msgID, $mailbox = false) {
$db = Loader::db();
$row = $db->GetRow('select uAuthorID, msgDateCreated, msgID, msgSubject, msgBody, uToID from UserPrivateMessages where msgID = ?', array($msgID));
if (!isset($row['msgID'])) {
return false;
}
$upm = new static();
$upm->setPropertiesFromArray($row);
if ($mailbox) {
// we add in some mailbox-specific attributes
$row = $db->GetRow('select msgID, msgIsNew, msgIsUnread, msgMailboxID, msgIsReplied, uID from UserPrivateMessagesTo where msgID = ? and uID = ?', array($msgID, $mailbox->getMailboxUserID()));
if (isset($row['msgID'])) {
$upm->setPropertiesFromArray($row);
}
$upm->mailbox = $mailbox;
}
return $upm;
}
public function getMessageStatus() {
if (is_object($this->mailbox)) {
if (!$this->msgIsUnread) {
return t('Read');
}
if ($this->mailbox->getMailboxID() == UserPrivateMessageMailbox::MBTYPE_SENT) {
return t("Sent");
}
}
if ($this->msgIsNew) {
return t('New');
}
if ($this->msgIsUnread) {
return t('Unread');
}
if ($this->msgIsReplied) {
return t('Replied');
}
return t("Read");
}
public function markAsRead() {
if (!$this->uID) {
return false;
}
$db = Loader::db();
if ($this->uID != $this->uAuthorID) {
$ue = new Event($this);
Events::dispatch('on_private_message_marked_as_read', $ue);
$db->Execute('update UserPrivateMessagesTo set msgIsUnread = 0 where msgID = ? and msgMailboxID = ? and uID = ?', array($this->msgID, $this->msgMailboxID, $this->uID));
}
}
public function getMessageAuthorID() {return $this->uAuthorID;}
public function getMessageID() {return $this->msgID;}
public function getMessageUserID() {return $this->uID;}
public function getMessageAuthorObject() {return UserInfo::getByID($this->uAuthorID);}
public function getMessageUserToID() {return $this->uToID;}
public function getMessageRelevantUserID() {
if (is_object($this->mailbox)) {
if ($this->mailbox->getMailboxID() == UserPrivateMessageMailbox::MBTYPE_SENT) {
return $this->uToID;
}
}
return $this->uAuthorID;
}
/**
* Responsible for converting line breaks to br tags, perhaps running bbcode, as well as making the older replied-to messages gray
*/
public function getFormattedMessageBody() {
$msgBody = $this->getMessageBody();
$txt = Loader::helper('text');
$repliedPos = strpos($msgBody, $this->getMessageDelimiter());
if ($repliedPos > -1) {
$repliedText = substr($msgBody, $repliedPos);
$messageText = substr($msgBody, 0, $repliedPos);
$msgBody = $messageText . '<div class="ccm-profile-message-replied">' . nl2br($txt->entities($repliedText)) . '</div>';
$msgBody = str_replace($this->getMessageDelimiter(), '<hr />', $msgBody);
} else {
$msgBody = nl2br($txt->entities($msgBody));
}
return $msgBody;
}
public function delete() {
$db = Loader::db();
if (!$this->uID) {
return false;
}
$ue = new Event($this);
$ue = Events::dispatch('on_private_message_delete', $ue);
if (!$ue) {
return;
}
$db->Execute('delete from UserPrivateMessagesTo where uID = ? and msgID = ?', array($this->uID, $this->msgID));
}
public function getMessageRelevantUserObject() {
$ui = UserInfo::getByID($this->getMessageRelevantUserID());
return $ui;
}
public function getMessageRelevantUserName() {
$ui = UserInfo::getByID($this->getMessageRelevantUserID());
if (is_object($ui)) {
return $ui->getUserName();
}
}
public function getMessageAuthorName() {
if ($this->authorName == false) {
$author = $this->getMessageAuthorObject();
if (is_object($author)) {
$this->authorName = $author->getUserName();
} else {
$this->authorName = t('Unknown User');
}
}
return $this->authorName;
}
public function getMessageDateAdded() {
return $this->msgDateCreated;
}
public function getMessageSubject() {return $this->msgSubject;}
public function getFormattedMessageSubject() {
$txt = Loader::helper('text');
return $txt->entities($this->msgSubject);
}
public function getMessageBody() {return $this->msgBody;}
}