| Current Path : /var/www/html/components/com_kunena/src/Controller/Topic/Form/History/ |
| Current File : /var/www/html/components/com_kunena/src/Controller/Topic/Form/History/TopicFormHistoryDisplay.php |
<?php
/**
* Kunena Component
*
* @package Kunena.Site
* @subpackage Controller.Topic
*
* @copyright Copyright (C) 2008 - 2026 Kunena Team. All rights reserved.
* @license https://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link https://www.kunena.org
**/
namespace Kunena\Forum\Site\Controller\Topic\Form\History;
\defined('_JEXEC') or die();
use Exception;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\Registry\Registry;
use Kunena\Forum\Libraries\Attachment\KunenaAttachmentHelper;
use Kunena\Forum\Libraries\Controller\KunenaControllerDisplay;
use Kunena\Forum\Libraries\Event\KunenaPrepareEvent;
use Kunena\Forum\Libraries\Forum\Message\KunenaMessageHelper;
use Kunena\Forum\Libraries\Forum\Topic\KunenaTopicHelper;
use Kunena\Forum\Libraries\KunenaPrivate\Message\KunenaPrivateMessageFinder;
use Kunena\Forum\Libraries\User\KunenaUserHelper;
/**
* Class ComponentTopicControllerFormHistoryDisplay
*
* TODO: merge to another controller...
*
* @since Kunena 4.0
*/
class TopicFormHistoryDisplay extends KunenaControllerDisplay
{
/**
* @var string
* @since Kunena 6.0
*/
protected $name = 'Topic/Edit/History';
public $topic;
public $history;
public $replycount;
public $historycount;
public $attachments;
public $inline_attachments;
/**
* Prepare reply history display.
*
* @return void
*
* @throws Exception
* @since Kunena 6.0
*/
protected function before()
{
parent::before();
$id = $this->input->getInt('id');
$me = KunenaUserHelper::getMyself();
$this->topic = KunenaTopicHelper::get($id);
$category = $this->topic->getCategory();
$this->history = KunenaMessageHelper::getMessagesByTopic(
$this->topic,
0,
(int) $this->config->historyLimit,
'DESC'
);
$this->replycount = $this->topic->getReplies();
$this->historycount = \count($this->history);
KunenaAttachmentHelper::getByMessage($this->history);
$userlist = [];
$messages = [];
foreach ($this->history as $message) {
$messages[$message->id] = $message;
$userlist[(int) $message->userid] = (int) $message->userid;
}
if ($me->exists()) {
$pmFinder = new KunenaPrivateMessageFinder();
$pmFinder->filterByMessageIds(array_keys($messages))->order('id');
if (!$me->isModerator($category)) {
$pmFinder->filterByUser($me);
}
$pms = $pmFinder->find();
foreach ($pms as $pm) {
$registry = new Registry($pm->params);
$posts = $registry->get('receivers.posts');
foreach ($posts as $post) {
if (!isset($messages[$post]->pm)) {
$messages[$post]->pm = [];
}
$messages[$post]->pm[$pm->id] = $pm;
}
}
}
$this->history = $messages;
KunenaUserHelper::loadUsers($userlist);
// Run events
$params = new Registry();
$params->set('ksource', 'kunena');
$params->set('kunena_view', 'topic');
$params->set('kunena_layout', 'history');
PluginHelper::importPlugin('kunena');
foreach ($this->history as &$result) {
$prepareEvent = new KunenaPrepareEvent('onKunenaPrepare', [
'context' => 'kunena.messages',
'subject' => $result,
'params' => $params,
'page' => 0
]);
$this->app->getDispatcher()->dispatch('onKunenaPrepare', $prepareEvent);
}
// FIXME: need to improve BBCode class on this...
$this->attachments = KunenaAttachmentHelper::getByMessage($this->history);
$this->inline_attachments = [];
$this->headerText = Text::_('COM_KUNENA_POST_EDIT') . ' ' . $this->topic->subject;
}
/**
* Prepare document.
*
* @return void
*
* @since Kunena 6.0
*/
protected function prepareDocument() {}
}