Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
chamilo-lms/src/CoreBundle/Entity/Message.php

397 lines
7.3 KiB

<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Message.
*
* @ORM\Table(name="message", indexes={
* @ORM\Index(name="idx_message_user_sender", columns={"user_sender_id"}),
* @ORM\Index(name="idx_message_user_receiver", columns={"user_receiver_id"}),
* @ORM\Index(name="idx_message_user_sender_user_receiver", columns={"user_sender_id", "user_receiver_id"}),
* @ORM\Index(name="idx_message_user_receiver_status", columns={"user_receiver_id", "msg_status"}),
* @ORM\Index(name="idx_message_receiver_status_send_date", columns={"user_receiver_id", "msg_status", "send_date"}),
* @ORM\Index(name="idx_message_group", columns={"group_id"}),
* @ORM\Index(name="idx_message_parent", columns={"parent_id"}),
* @ORM\Index(name="idx_message_status", columns={"msg_status"})
* })
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\MessageRepository")
*/
class Message
{
/**
* @var int
*
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue()
*/
protected $id;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="sentMessages")
* @ORM\JoinColumn(name="user_sender_id", referencedColumnName="id", nullable=false)
*/
protected $userSender;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="receivedMessages")
* @ORM\JoinColumn(name="user_receiver_id", referencedColumnName="id", nullable=true)
*/
protected $userReceiver;
/**
* @var bool
*
* @ORM\Column(name="msg_status", type="smallint", nullable=false)
*/
protected $msgStatus;
/**
* @var \DateTime
*
* @ORM\Column(name="send_date", type="datetime", nullable=false)
*/
protected $sendDate;
/**
* @var string
* @Assert\NotBlank
* @ORM\Column(name="title", type="string", length=255, nullable=false)
*/
protected $title;
/**
* @var string
* @Assert\NotBlank
*
* @ORM\Column(name="content", type="text", nullable=false)
*/
protected $content;
/**
* @var int
*
* @ORM\Column(name="group_id", type="integer", nullable=false)
*/
protected $groupId;
/**
* @var int
*
* @ORM\Column(name="parent_id", type="integer", nullable=false)
*/
protected $parentId;
/**
* @var \DateTime
*
* @ORM\Column(name="update_date", type="datetime", nullable=true)
*/
protected $updateDate;
/**
* @var int
*
* @ORM\Column(name="votes", type="integer", nullable=true)
*/
protected $votes;
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\MessageAttachment", mappedBy="message")
*/
protected $attachments;
/**
* Message constructor.
*/
public function __construct()
{
$this->attachments = new ArrayCollection();
}
/**
* Set userSender.
*
* @return Message
*/
public function setUserSender(User $userSender)
{
$this->userSender = $userSender;
return $this;
}
/**
* Get userSender.
*
* @return User
*/
public function getUserSender()
{
return $this->userSender;
}
/**
* Set userReceiver.
*
* @return Message
*/
public function setUserReceiver(User $userReceiver)
{
$this->userReceiver = $userReceiver;
return $this;
}
/**
* Get userReceiver.
*
* @return User
*/
public function getUserReceiver()
{
return $this->userReceiver;
}
/**
* Set msgStatus.
*
* @param bool $msgStatus
*
* @return Message
*/
public function setMsgStatus($msgStatus)
{
$this->msgStatus = $msgStatus;
return $this;
}
/**
* Get msgStatus.
*
* @return bool
*/
public function getMsgStatus()
{
return $this->msgStatus;
}
/**
* Set sendDate.
*
* @param \DateTime $sendDate
*
* @return Message
*/
public function setSendDate($sendDate)
{
$this->sendDate = $sendDate;
return $this;
}
/**
* Get sendDate.
*
* @return \DateTime
*/
public function getSendDate()
{
return $this->sendDate;
}
/**
* Set title.
*
* @param string $title
*
* @return Message
*/
public function setTitle($title)
{
$this->title = $title;
return $this;
}
/**
* Get title.
*
* @return string
*/
public function getTitle()
{
return $this->title;
}
/**
* Set content.
*
* @param string $content
*
* @return Message
*/
public function setContent($content)
{
$this->content = $content;
return $this;
}
/**
* Get content.
*
* @return string
*/
public function getContent()
{
return $this->content;
}
/**
* Set groupId.
*
* @param int $groupId
*
* @return Message
*/
public function setGroupId($groupId)
{
$this->groupId = $groupId;
return $this;
}
/**
* Get groupId.
*
* @return int
*/
public function getGroupId()
{
return $this->groupId;
}
/**
* Set parentId.
*
* @param int $parentId
*
* @return Message
*/
public function setParentId($parentId)
{
$this->parentId = $parentId;
return $this;
}
/**
* Get parentId.
*
* @return int
*/
public function getParentId()
{
return $this->parentId;
}
/**
* Set updateDate.
*
* @param \DateTime $updateDate
*
* @return Message
*/
public function setUpdateDate($updateDate)
{
$this->updateDate = $updateDate;
return $this;
}
/**
* Get updateDate.
*
* @return \DateTime
*/
public function getUpdateDate()
{
return $this->updateDate;
}
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set votes.
*
* @param int $votes
*
* @return Message
*/
public function setVotes($votes)
{
$this->votes = $votes;
return $this;
}
/**
* Get votes.
*
* @return int
*/
public function getVotes()
{
return $this->votes;
}
/**
* Get attachments.
*
* @return ArrayCollection
*/
public function getAttachments()
{
return $this->attachments;
}
/**
* Get an excerpt from the content.
*
* @param int $length Optional. Length of the excerpt.
*
* @return string
*/
public function getExcerpt($length = 50)
{
$striped = strip_tags($this->content);
$replaced = str_replace(["\r\n", "\n"], ' ', $striped);
$trimmed = trim($replaced);
return api_trunc_str($trimmed, $length);
}
}