19declare(strict_types=1);
51 $this->
lng = $DIC->language();
52 $this->
ctrl = $DIC->ctrl();
53 $this->
access = $DIC->access();
54 $this->
error = $DIC[
'ilErr'];
55 $this->
user = $DIC->user();
56 $this->ilObjDataCache =
$DIC[
'ilObjDataCache'];
57 $this->
http = $DIC->http();
63 $this->frm = $forum->Forum;
66 $this->frm->setForumId($forum->getId());
67 $this->frm->setForumRefId($forum->getRefId());
69 $this->
lng->loadLanguageModule(
'forum');
71 $this->is_moderator = $this->
access->checkAccess(
'moderate_frm',
'', $this->ref_id);
77 if ($this->
http->wrapper()->query()->has(
'ref_id')) {
78 $ref_id = $this->
http->wrapper()->query()->retrieve(
98 $this->
error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->MESSAGE);
104 $next_class = $this->
ctrl->getNextClass($this);
105 $cmd = $this->
ctrl->getCmd();
107 switch ($next_class) {
116 $tpl->setCurrentBlock(
'posts_row');
121 $post->getPosAuthorId()
123 $rowCol =
'ilModeratorPosting';
124 } elseif (
$post->isAuthorModerator()) {
125 $rowCol =
'ilModeratorPosting';
133 $tpl->setVariable(
'ROWCOL',
' ' . $rowCol);
135 if (
$post->isCensored()) {
136 $tpl->setVariable(
'TXT_CENSORSHIP_ADVICE', $this->
lng->txt(
'post_censored_comment_by_moderator'));
137 $rowCol =
'tblrowmarked';
140 $tpl->setVariable(
'ROWCOL',
' ' . $rowCol);
141 if (!
$post->isActivated() &&
$post->isOwner($this->user->getId())) {
142 $tpl->setVariable(
'POST_NOT_ACTIVATED_YET', $this->
lng->txt(
'frm_post_not_activated_yet'));
146 $post->getPosAuthorId(),
147 $post->getDisplayUserId(),
148 (
string)
$post->getUserAlias(),
149 (
string)
$post->getImportName()
152 if ($authorinfo->hasSuffix()) {
153 if (!$authorinfo->isDeleted()) {
154 $tpl->setVariable(
'USR_NAME', $authorinfo->getAlias());
156 $tpl->setVariable(
'AUTHOR', $authorinfo->getSuffix());
158 if ($authorinfo->getAuthorName(
true) && !$this->objProperties->isAnonymized()) {
159 $tpl->setVariable(
'USR_NAME', $authorinfo->getAuthorName(
true));
161 $tpl->setVariable(
'AUTHOR', $authorinfo->getAuthorShortName());
164 if (self::MODE_EXPORT_CLIENT === $mode) {
165 if ($authorinfo->getAuthor()->getPref(
'public_profile') !==
'n') {
166 $tpl->setVariable(
'TXT_REGISTERED', $this->
lng->txt(
'registered_since'));
169 $this->frm->convertDate($authorinfo->getAuthor()->getCreateDate())
173 if (
$post->getDisplayUserId()) {
174 if ($this->is_moderator) {
175 $num_posts = $this->frm->countUserArticles(
$post->getDisplayUserId());
177 $num_posts = $this->frm->countActiveUserArticles(
$post->getDisplayUserId());
179 $tpl->setVariable(
'TXT_NUM_POSTS', $this->
lng->txt(
'forums_posts'));
184 $tpl->setVariable(
'USR_IMAGE', $authorinfo->getProfilePicture());
187 $post->getPosAuthorId()
189 if ($authorinfo->getAuthor()->getGender() ===
'f') {
190 $tpl->setVariable(
'ROLE', $this->
lng->txt(
'frm_moderator_f'));
191 } elseif ($authorinfo->getAuthor()->getGender() ===
'm') {
192 $tpl->setVariable(
'ROLE', $this->
lng->txt(
'frm_moderator_m'));
201 $spanClass =
'moderator_small';
207 $post->getPosAuthorId(),
208 $post->getDisplayUserId(),
209 (
string)
$post->getUserAlias(),
215 $this->
lng->txt(
'edited_on') .
': ' . $this->frm->convertDate(
$post->getChangeDate()) .
' - ' . strtolower($this->
lng->txt(
'by'))
217 $tpl->
setVariable(
'UPDATE_AUTHOR', $authorinfo->getLinkedAuthorShortName());
218 if ($authorinfo->getAuthorName(
true) && !$this->objProperties->isAnonymized()) {
219 $tpl->setVariable(
'UPDATE_USR_NAME', $authorinfo->getAuthorName(
true));
223 $post->setMessage($this->frm->prepareText(
$post->getMessage()));
224 $tpl->setVariable(
'POST_DATE', $this->frm->convertDate(
$post->getCreateDate()));
225 $tpl->setVariable(
'SUBJECT',
$post->getSubject());
227 if (!
$post->isCensored()) {
230 $spanClass =
'moderator';
234 if (
$post->getMessage() === strip_tags(
$post->getMessage())) {
236 $post->setMessage(nl2br(
$post->getMessage()));
239 if ($spanClass !==
'') {
251 $tpl->setVariable(
'POST',
"<span class=\"moderator\">" . nl2br((
string)
$post->getCensorshipComment()) .
"</span>");
254 $tpl->parseCurrentBlock(
'posts_row');
260 !$this->
access->checkAccess(
'read,visible',
'', $this->ref_id) ||
261 !$this->http->wrapper()->query()->has(
'thr_top_fk') ||
262 !$this->http->wrapper()->query()->has(
'print_thread')
264 $this->
error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->MESSAGE);
273 $tpl->setVariable(
'LOCATION_STYLESHEET', $location_stylesheet);
278 $this->frm->setMDB2WhereCondition(
'top_pk = %s ', [
'integer'], [$this->
http->wrapper()->query()->retrieve(
280 $this->refinery->kindlyTo()->int()
282 $frmData = $this->frm->getOneTopic();
284 if ($frmData->getTopPk() > 0) {
287 $this->refinery->kindlyTo()->int()
288 ), $this->is_moderator);
292 $topic->setOrderField(
'frm_posts_tree.rgt');
293 $first_post = $topic->getPostRootNode();
294 $post_collection = $topic->getPostTree($first_post);
295 $num_posts = count($post_collection);
297 $tpl->setVariable(
'TITLE', $topic->getSubject());
300 $this->
lng->txt(
'forum') .
': ' . $frmData->getTopName() .
' > ' .
301 $this->lng->txt(
'forums_thread') .
': ' . $topic->getSubject() .
' > ' .
302 $this->lng->txt(
'forums_count_art') .
': ' . $num_posts
306 foreach ($post_collection as
$post) {
311 $tpl->printToStdout();
316 if (!$this->
access->checkAccess(
'read,visible',
'', $this->ref_id)) {
317 $this->
error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->MESSAGE);
326 $tpl->setVariable(
'LOCATION_STYLESHEET', $location_stylesheet);
331 $this->frm->setMDB2WhereCondition(
'top_pk = %s ', [
'integer'], [$this->
http->wrapper()->query()->retrieve(
333 $this->refinery->kindlyTo()->int()
335 $frmData = $this->frm->getOneTopic();
337 if ($frmData->getTopPk() > 0) {
340 $this->refinery->kindlyTo()->int()
341 ), $this->is_moderator);
344 $tpl->setVariable(
'TITLE',
$post->getThread()->getSubject());
347 $this->
lng->txt(
'forum') .
': ' . $frmData->getTopName() .
' > ' .
348 $this->lng->txt(
'forums_thread') .
': ' .
$post->getThread()->getSubject()
353 $tpl->printToStdout();
356 public function exportHTML(): void
358 if (!$this->
access->checkAccess(
'read,visible',
'', $this->ref_id)) {
359 $this->
error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->MESSAGE);
368 $tpl->setVariable(
'LOCATION_STYLESHEET', $location_stylesheet);
369 $tpl->setVariable(
'BASE', (substr(ILIAS_HTTP_PATH, -1) ===
'/' ? ILIAS_HTTP_PATH : ILIAS_HTTP_PATH .
'/'));
378 if ($this->
http->wrapper()->post()->has(
'thread_ids')) {
379 $thread_ids = $this->
http->wrapper()->post()->retrieve(
381 $this->
refinery->kindlyTo()->listOf($this->refinery->kindlyTo()->int())
384 array_walk($thread_ids,
function (
int $threadId) use (&$threads, $isModerator):
void {
388 $threads[] = $thread;
392 foreach ($threads as $topic) {
393 $this->frm->setMDB2WhereCondition(
'top_pk = %s ', [
'integer'], [$topic->getForumId()]);
394 $frmData = $this->frm->getOneTopic();
396 if ($frmData->getTopPk() > 0) {
398 $tpl->setVariable(
'TITLE', $frmData->getTopName());
401 $first_post = $topic->getPostRootNode();
402 $topic->setOrderField(
'frm_posts_tree.rgt');
403 $post_collection = $topic->getPostTree($first_post);
406 foreach ($post_collection as
$post) {
410 $tpl->setCurrentBlock(
'thread_headline');
411 $tpl->setVariable(
'T_TITLE', $topic->getSubject());
412 if ($this->is_moderator) {
413 $tpl->setVariable(
'T_NUM_POSTS', $topic->countPosts(
true));
415 $tpl->setVariable(
'T_NUM_POSTS', $topic->countActivePosts(
true));
417 $tpl->setVariable(
'T_NUM_VISITS', $topic->getVisits());
418 $tpl->setVariable(
'T_FORUM', $frmData->getTopName());
420 $topic->getThrAuthorId(),
421 $topic->getDisplayUserId(),
422 (
string) $topic->getUserAlias(),
423 (
string) $topic->getImportName()
425 $tpl->setVariable(
'T_AUTHOR', $authorinfo->getAuthorName());
426 $tpl->setVariable(
'T_TXT_FORUM', $this->
lng->txt(
'forum') .
': ');
427 $tpl->setVariable(
'T_TXT_TOPIC', $this->
lng->txt(
'forums_thread') .
': ');
428 $tpl->setVariable(
'T_TXT_AUTHOR', $this->
lng->txt(
'forums_thread_create_from') .
': ');
429 $tpl->setVariable(
'T_TXT_NUM_POSTS', $this->
lng->txt(
'forums_articles') .
': ');
430 $tpl->setVariable(
'T_TXT_NUM_VISITS', $this->
lng->txt(
'visits') .
': ');
431 $tpl->parseCurrentBlock();
436 $tpl->setCurrentBlock(
'thread_block');
437 $tpl->parseCurrentBlock();
442 'forum_html_export_' . $this->ref_id .
'.html'
static setUseRelativeDates(bool $a_status)
set use relative dates
Error Handling & global info handling uses PEAR error class.
Forum export to HTML and Print.
ilForumProperties $objProperties
renderPostHtml(ilGlobalTemplateInterface $tpl, ilForumPost $post, int $counter, int $mode)
ensureThreadBelongsToForum(int $objId, ilForumTopic $thread)
ilObjectDataCache $ilObjDataCache
static getInstance(int $a_obj_id=0)
Class Forum core functions for forum.
static _isModerator(int $a_ref_id, int $a_usr_id)
special template class to simplify handling of ITX/PEAR
static getInstance()
Singleton: get instance for use in ILIAS requests with a config loaded from the settings.
static lookupForumIdByObjId(int $obj_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _replaceMediaObjectImageSrc(string $a_text, int $a_direction=0, string $nic='')
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
static getStyleSheetLocation(string $mode="output", string $a_css_name="", string $a_css_location="")
get full style sheet file name (path inclusive) of current user
static switchColor(int $a_num, string $a_css1, string $a_css2)
switches style sheets for each even $a_num (used for changing colors of different result rows)
static deliverData(string $a_data, string $a_filename, string $mime="application/octet-stream")
static initjQuery(ilGlobalTemplateInterface $a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
Interface GlobalHttpState.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setVariable(string $variable, $value='')
Sets the given variable to the given value.
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
static http()
Fetches the global http state from ILIAS.