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.
318 lines
8.4 KiB
318 lines
8.4 KiB
<?php
|
|
// This file is part of Moodle - http://moodle.org/
|
|
//
|
|
// Moodle is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Moodle is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
/**
|
|
* Post class.
|
|
*
|
|
* @package mod_forum
|
|
* @copyright 2019 Ryan Wyllie <ryan@moodle.com>
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
|
|
namespace mod_forum\local\entities;
|
|
|
|
defined('MOODLE_INTERNAL') || die();
|
|
|
|
use stdClass;
|
|
|
|
/**
|
|
* Post class.
|
|
*
|
|
* @copyright 2019 Ryan Wyllie <ryan@moodle.com>
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
class post {
|
|
/** @var int $id ID */
|
|
private $id;
|
|
/** @var int $discussionid The id of the discussion this post belongs to */
|
|
private $discussionid;
|
|
/** @var int $parentid The id of the post that this post is replying to. Zero if it isn't a reply. */
|
|
private $parentid;
|
|
/** @var int $authorid The id of user who authored the post */
|
|
private $authorid;
|
|
/** @var int $timecreated Timestamp for when the post was created */
|
|
private $timecreated;
|
|
/** @var int $timemodified Timestamp for when the post last modified */
|
|
private $timemodified;
|
|
/** @var bool $mailed If the post has been mailed */
|
|
private $mailed;
|
|
/** @var string $subject Post subject */
|
|
private $subject;
|
|
/** @var string $message Post message */
|
|
private $message;
|
|
/** @var int $messageformat Format of the post message */
|
|
private $messageformat;
|
|
/** @var bool $messagetrust Is this a trusted message, i.e. created by a trusted user. */
|
|
private $messagetrust;
|
|
/** @var bool $hasattachments Does the post have attachments */
|
|
private $hasattachments;
|
|
/** @var int $totalscore Total score */
|
|
private $totalscore;
|
|
/** @var bool $mailnow Should this post be mailed immediately */
|
|
private $mailnow;
|
|
/** @var bool $deleted Is the post deleted */
|
|
private $deleted;
|
|
/** @var int $privatereplyto The user being privately replied to */
|
|
private $privatereplyto;
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param int $id ID
|
|
* @param int $discussionid The id of the discussion this post belongs to
|
|
* @param int $parentid The id of the post that this post is replying to. Zero if it isn't a reply.
|
|
* @param int $authorid The id of user who authored the post
|
|
* @param int $timecreated Timestamp for when the post was created
|
|
* @param int $timemodified Timestamp for when the post last modified
|
|
* @param bool $mailed If the post has been mailed
|
|
* @param string $subject Post subject
|
|
* @param string $message Post message
|
|
* @param int $messageformat Format of the post message
|
|
* @param bool $messagetrust Is this a trusted message, i.e. created by a trusted user.
|
|
* @param bool $hasattachments Does the post have attachments
|
|
* @param int $totalscore Total score
|
|
* @param bool $mailnow Should this post be mailed immediately
|
|
* @param bool $deleted Is the post deleted
|
|
* @param int $privatereplyto Which user this reply is intended for in a private reply situation
|
|
*/
|
|
public function __construct(
|
|
int $id,
|
|
int $discussionid,
|
|
int $parentid,
|
|
int $authorid,
|
|
int $timecreated,
|
|
int $timemodified,
|
|
bool $mailed,
|
|
string $subject,
|
|
string $message,
|
|
int $messageformat,
|
|
bool $messagetrust,
|
|
bool $hasattachments,
|
|
int $totalscore,
|
|
bool $mailnow,
|
|
bool $deleted,
|
|
int $privatereplyto
|
|
) {
|
|
$this->id = $id;
|
|
$this->discussionid = $discussionid;
|
|
$this->parentid = $parentid;
|
|
$this->authorid = $authorid;
|
|
$this->timecreated = $timecreated;
|
|
$this->timemodified = $timemodified;
|
|
$this->mailed = $mailed;
|
|
$this->subject = $subject;
|
|
$this->message = $message;
|
|
$this->messageformat = $messageformat;
|
|
$this->messagetrust = $messagetrust;
|
|
$this->hasattachments = $hasattachments;
|
|
$this->totalscore = $totalscore;
|
|
$this->mailnow = $mailnow;
|
|
$this->deleted = $deleted;
|
|
$this->privatereplyto = $privatereplyto;
|
|
}
|
|
|
|
/**
|
|
* Get the post id.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_id() : int {
|
|
return $this->id;
|
|
}
|
|
|
|
/**
|
|
* Get the discussion id.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_discussion_id() : int {
|
|
return $this->discussionid;
|
|
}
|
|
|
|
/**
|
|
* Get the id of the parent post. Returns zero if this post is not a reply.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_parent_id() : int {
|
|
return $this->parentid;
|
|
}
|
|
|
|
/**
|
|
* Does this post have a parent? I.e. is it a reply?
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function has_parent() : bool {
|
|
return $this->get_parent_id() > 0;
|
|
}
|
|
|
|
/**
|
|
* Get the id of the user that authored the post.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_author_id() : int {
|
|
return $this->authorid;
|
|
}
|
|
|
|
/**
|
|
* Get the timestamp for when this post was created.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_time_created() : int {
|
|
return $this->timecreated;
|
|
}
|
|
|
|
/**
|
|
* Get the timestamp for when this post was last modified.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_time_modified() : int {
|
|
return $this->timemodified;
|
|
}
|
|
|
|
/**
|
|
* Has this post been mailed?
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function has_been_mailed() : bool {
|
|
return $this->mailed;
|
|
}
|
|
|
|
/**
|
|
* Get the post subject.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_subject() : string {
|
|
return $this->subject;
|
|
}
|
|
|
|
/**
|
|
* Get the post message.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_message() : string {
|
|
return $this->message;
|
|
}
|
|
|
|
/**
|
|
* Get the post message format.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_message_format() : int {
|
|
return $this->messageformat;
|
|
}
|
|
|
|
/**
|
|
* Is this a trusted message? I.e. was it authored by a trusted user?
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_message_trusted() : bool {
|
|
return $this->messagetrust;
|
|
}
|
|
|
|
/**
|
|
* Does this post have attachments?
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function has_attachments() : bool {
|
|
return $this->hasattachments;
|
|
}
|
|
|
|
/**
|
|
* Get the total score.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_total_score() : int {
|
|
return $this->totalscore;
|
|
}
|
|
|
|
/**
|
|
* Should this post be mailed now?
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function should_mail_now() : bool {
|
|
return $this->mailnow;
|
|
}
|
|
|
|
/**
|
|
* Is this post deleted?
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_deleted() : bool {
|
|
return $this->deleted;
|
|
}
|
|
|
|
/**
|
|
* Is this post private?
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_private_reply() : bool {
|
|
return !empty($this->privatereplyto);
|
|
}
|
|
|
|
/**
|
|
* Get the id of the user that this post was intended for.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_private_reply_recipient_id() : int {
|
|
return $this->privatereplyto;
|
|
}
|
|
|
|
|
|
/**
|
|
* Get the post's age in seconds.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_age() : int {
|
|
return time() - $this->get_time_created();
|
|
}
|
|
|
|
/**
|
|
* Check if the given user authored this post.
|
|
*
|
|
* @param stdClass $user The user to check.
|
|
* @return bool
|
|
*/
|
|
public function is_owned_by_user(stdClass $user) : bool {
|
|
return $this->get_author_id() == $user->id;
|
|
}
|
|
|
|
/**
|
|
* Check if the given post is a private reply intended for the given user.
|
|
*
|
|
* @param stdClass $user The user to check.
|
|
* @return bool
|
|
*/
|
|
public function is_private_reply_intended_for_user(stdClass $user) : bool {
|
|
return $this->get_private_reply_recipient_id() == $user->id;
|
|
}
|
|
}
|
|
|