protected function getUserProfileAdditional($a_forum_ref_id, $a_user_id) { /** * @var $lng ilLanguage * @var $ilAccess ilAccessHandler */ global $lng, $ilAccess; if (!$ilAccess->checkAccess('read', '', $a_forum_ref_id)) { $this->ilias->raiseError($lng->txt('permission_denied'), $this->ilias->error_obj->MESSAGE); } require_once 'Modules/Forum/classes/class.ilForum.php'; $lng->loadLanguageModule('forum'); /** * @var $ref_obj ilObjForum */ $ref_obj = ilObjectFactory::getInstanceByRefId($a_forum_ref_id); if ($ref_obj->getType() == 'frm') { $forumObj = new ilObjForum($a_forum_ref_id); $frm = $forumObj->Forum; $frm->setForumId($forumObj->getId()); $frm->setForumRefId($forumObj->getRefId()); } else { $frm = new ilForum(); } // count articles of user if ($ilAccess->checkAccess('moderate_frm', '', $a_forum_ref_id)) { $numPosts = $frm->countUserArticles(addslashes($a_user_id)); } else { $numPosts = $frm->countActiveUserArticles(addslashes($a_user_id)); } return array($lng->txt('forums_posts') => $numPosts); }
/** * @param ilTemplate $tpl * @param ilForumPost $post * @param int $counter * @param int $mode */ protected function renderPostHtml(ilTemplate $tpl, ilForumPost $post, $counter, $mode) { /** * @var $lng ilLanguage * @var $rbacreview ilRbacReview * @var $ilUser ilObjUser * @var $ilObjDataCache ilObjectDataCache */ global $lng, $rbacreview, $ilUser, $ilObjDataCache; $tpl->setCurrentBlock('posts_row'); if (ilForumProperties::getInstance($ilObjDataCache->lookupObjId($_GET['ref_id']))->getMarkModeratorPosts() == 1) { if ($post->getIsAuthorModerator() === null && ($is_moderator = ilForum::_isModerator($_GET['ref_id'], $post->getPosAuthorId()))) { $rowCol = 'ilModeratorPosting'; } else { if ($post->getIsAuthorModerator()) { $rowCol = 'ilModeratorPosting'; } else { $rowCol = ilUtil::switchColor($counter, 'tblrow1', 'tblrow2'); } } } else { $rowCol = ilUtil::switchColor($counter, 'tblrow1', 'tblrow2'); } $tpl->setVariable('ROWCOL', ' ' . $rowCol); // post is censored if ($post->isCensored()) { // display censorship advice $tpl->setVariable('TXT_CENSORSHIP_ADVICE', $lng->txt('post_censored_comment_by_moderator')); // highlight censored posts $rowCol = 'tblrowmarked'; } // set row color $tpl->setVariable('ROWCOL', ' ' . $rowCol); // if post is not activated display message for the owner if (!$post->isActivated() && $post->isOwner($ilUser->getId())) { $tpl->setVariable('POST_NOT_ACTIVATED_YET', $lng->txt('frm_post_not_activated_yet')); } $authorinfo = new ilForumAuthorInformation($post->getPosAuthorId(), $post->getDisplayUserId(), $post->getUserAlias(), $post->getImportName()); if ($authorinfo->hasSuffix()) { $tpl->setVariable('AUTHOR', $authorinfo->getSuffix()); $tpl->setVariable('USR_NAME', $post->getUserAlias()); } else { $tpl->setVariable('AUTHOR', $authorinfo->getAuthorShortName()); if ($authorinfo->getAuthorName(true)) { $tpl->setVariable('USR_NAME', $authorinfo->getAuthorName(true)); } } if (self::MODE_EXPORT_CLIENT == $mode) { if ($authorinfo->getAuthor()->getPref('public_profile') != 'n') { $tpl->setVariable('TXT_REGISTERED', $lng->txt('registered_since')); $tpl->setVariable('REGISTERED_SINCE', $this->frm->convertDate($authorinfo->getAuthor()->getCreateDate())); } if ($post->getDisplayUserId()) { if ($this->is_moderator) { $num_posts = $this->frm->countUserArticles($post->getDisplayUserId()); } else { $num_posts = $this->frm->countActiveUserArticles($post->getDisplayUserId()); } $tpl->setVariable('TXT_NUM_POSTS', $lng->txt('forums_posts')); $tpl->setVariable('NUM_POSTS', $num_posts); } } $tpl->setVariable('USR_IMAGE', $authorinfo->getProfilePicture()); if ($authorinfo->getAuthor()->getId() && ilForum::_isModerator((int) $_GET['ref_id'], $post->getPosAuthorId())) { if ($authorinfo->getAuthor()->getGender() == 'f') { $tpl->setVariable('ROLE', $lng->txt('frm_moderator_f')); } else { if ($authorinfo->getAuthor()->getGender() == 'm') { $tpl->setVariable('ROLE', $lng->txt('frm_moderator_m')); } } } // get create- and update-dates if ($post->getUpdateUserId() > 0) { $spanClass = ''; // last update from moderator? $posMod = $this->frm->getModeratorFromPost($post->getId()); if (is_array($posMod) && $posMod['top_mods'] > 0) { $MODS = $rbacreview->assignedUsers($posMod['top_mods']); if (is_array($MODS)) { if (in_array($post->getUpdateUserId(), $MODS)) { $spanClass = 'moderator_small'; } } } $post->setChangeDate($post->getChangeDate()); if ($spanClass == '') { $spanClass = 'small'; } require_once 'Modules/Forum/classes/class.ilForumAuthorInformation.php'; $authorinfo = new ilForumAuthorInformation($post->getPosAuthorId(), $post->getUpdateUserId(), '', ''); $tpl->setVariable('POST_UPDATE_TXT', $lng->txt('edited_on') . ': ' . $this->frm->convertDate($post->getChangeDate()) . ' - ' . strtolower($lng->txt('by'))); $tpl->setVariable('UPDATE_AUTHOR', $authorinfo->getLinkedAuthorShortName()); if ($authorinfo->getAuthorName(true)) { $tpl->setVariable('UPDATE_USR_NAME', $authorinfo->getAuthorName(true)); } } // prepare post $post->setMessage($this->frm->prepareText($post->getMessage())); $tpl->setVariable('POST_DATE', $this->frm->convertDate($post->getCreateDate())); $tpl->setVariable('SUBJECT', $post->getSubject()); if (!$post->isCensored()) { // post from moderator? $modAuthor = $this->frm->getModeratorFromPost($post->getId()); $spanClass = ""; if (is_array($modAuthor) && $modAuthor['top_mods'] > 0) { $MODS = $rbacreview->assignedUsers($modAuthor['top_mods']); if (is_array($MODS) && in_array($post->getDisplayUserId(), $MODS)) { $spanClass = 'moderator'; } } // possible bugfix for mantis #8223 if ($post->getMessage() == strip_tags($post->getMessage())) { // We can be sure, that there are not html tags $post->setMessage(nl2br($post->getMessage())); } if ($spanClass != "") { $tpl->setVariable('POST', "<span class=\"" . $spanClass . "\">" . ilRTE::_replaceMediaObjectImageSrc($post->getMessage(), 1) . "</span>"); } else { $tpl->setVariable('POST', ilRTE::_replaceMediaObjectImageSrc($post->getMessage(), 1)); } } else { $tpl->setVariable('POST', "<span class=\"moderator\">" . nl2br($post->getCensorshipComment()) . "</span>"); } $tpl->parseCurrentBlock('posts_row'); }