AutorÃa | Ultima modificación | Ver Log |
<?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;/** @var int $wordcount Number of words in the message */private $wordcount;/** @var int $charcount Number of chars in the message */private $charcount;/*** 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,?int $wordcount,?int $charcount) {$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;$this->wordcount = $wordcount;$this->charcount = $charcount;}/*** 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;}/*** Returns the word count.** @return int|null*/public function get_wordcount(): ?int {return $this->wordcount;}/*** Returns the char count.** @return int|null*/public function get_charcount(): ?int {return $this->charcount;}/*** This methods adds/updates forum posts' word count and char count attributes based on $data->message.** @param \stdClass $record A record ready to be inserted / updated in DB.* @return void.*/public static function add_message_counts(\stdClass $record): void {if (!empty($record->message)) {$record->wordcount = count_words($record->message, $record->messageformat);$record->charcount = count_letters($record->message, $record->messageformat);}}}