, Ghent University * @Copyright Ghent University * @Copyright Patrick Cool */ require_once __DIR__.'/../inc/global.inc.php'; // The section (tabs). $this_section = SECTION_COURSES; // Notification for unauthorized people. api_protect_course_script(true); $nameTools = get_lang('Forums'); // Unset the formElements in session before the includes function works unset($_SESSION['formelements']); $htmlHeadXtra[] = api_get_jquery_libraries_js(['jquery-ui', 'jquery-upload']); $htmlHeadXtra[] = ''; // The next javascript script is to manage ajax upload file $htmlHeadXtra[] = api_get_jquery_libraries_js(['jquery-ui', 'jquery-upload']); // Recover Thread ID, will be used to generate delete attachment URL to do ajax $threadId = isset($_REQUEST['thread']) ? (int) ($_REQUEST['thread']) : 0; $forumId = isset($_REQUEST['forum']) ? (int) ($_REQUEST['forum']) : 0; $ajaxUrl = api_get_path(WEB_AJAX_PATH).'forum.ajax.php?'.api_get_cidreq(); // The next javascript script is to delete file by ajax $htmlHeadXtra[] = ''; // Are we in a lp ? $origin = api_get_origin(); /* MAIN DISPLAY SECTION */ /* Retrieving forum and forum category information */ // We are getting all the information about the current forum and forum category. // Note pcool: I tried to use only one sql statement (and function) for this, // but the problem is that the visibility of the forum AND forum category are stored in the item_property table. $forumId = isset($_GET['forum']) ? (int) $_GET['forum'] : 0; $userId = api_get_user_id(); $repo = Container::getForumRepository(); /** @var CForum $forum */ $forum = $repo->find($forumId); $repoThread = Container::getForumThreadRepository(); /** @var CForumThread $thread */ $thread = $repoThread->find($_GET['thread']); $category = $forum->getForumCategory(); $postRepo = Container::getForumPostRepository(); /** @var CForumPost $post */ $post = $postRepo->find($_GET['post']); $courseEntity = api_get_course_entity(); $sessionEntity = api_get_session_entity(); $forumIsVisible = $forum->isVisible($courseEntity); $categoryIsVisible = $category->isVisible($courseEntity) && !api_get_session_id(); if (empty($post)) { api_not_allowed(true); } api_block_course_item_locked_by_gradebook($_GET['thread'], LINK_FORUM_THREAD); $isEditable = postIsEditableByStudent($forum, $post); if (!$isEditable) { api_not_allowed(true); } if (api_is_in_gradebook()) { $interbreadcrumb[] = [ 'url' => Category::getUrl(), 'name' => get_lang('Assessments'), ]; } $group_id = api_get_group_id(); $groupEntity = null; if ('group' === $origin && $group_id) { $groupEntity = api_get_group_entity($group_id); $_clean['toolgroup'] = api_get_group_id(); $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'group/group.php?'.api_get_cidreq(), 'name' => get_lang('Groups'), ]; $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'group/group_space.php?'.api_get_cidreq(), 'name' => get_lang('Group area').' '.$groupEntity->getTitle(), ]; $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'forum/viewforum.php?'.api_get_cidreq().'&forum='.$forumId, 'name' => prepare4display($forum->getTitle()), ]; $interbreadcrumb[] = ['url' => 'javascript: void (0);', 'name' => get_lang('Edit a post')]; } else { $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'forum/index.php?'.api_get_cidreq(), 'name' => $nameTools, ]; $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'forum/index.php?forumcategory='.$category->getIid().'&'.api_get_cidreq(), 'name' => prepare4display($category->getTitle()), ]; $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'forum/viewforum.php?forum='.$forumId.'&'.api_get_cidreq(), 'name' => prepare4display($forum->getTitle()), ]; $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'forum/viewthread.php?'.api_get_cidreq().'&forum='.$forumId.'&thread='.(int) ($_GET['thread']), 'name' => prepare4display($thread->getTitle()), ]; $interbreadcrumb[] = ['url' => 'javascript: void (0);', 'name' => get_lang('Edit a post')]; } $table_link = Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK); /* Header */ $htmlHeadXtra[] = << $(function() { $('#reply-add-attachment').on('click', function(e) { e.preventDefault(); var newInputFile = $('', { type: 'file', name: 'user_upload[]' }); $('[name="user_upload[]"]').parent().append(newInputFile); }) }); JS; /* Is the user allowed here? */ // The user is not allowed here if // 1. the forum category, forum or thread is invisible (visibility==0) // 2. the forum category, forum or thread is locked (locked <>0) // 3. if anonymous posts are not allowed // 4. if editing of replies is not allowed // The only exception is the course manager // I have split this is several pieces for clarity. if (!api_is_allowed_to_create_course() && ( (false === $categoryIsVisible) || false === $forumIsVisible ) && (!api_is_course_admin()) ) { api_not_allowed(true); } if (!api_is_allowed_to_edit(null, true) && ( ($category->getLocked()) || 0 != $forum->getLocked() || 0 != $thread->getLocked() ) ) { api_not_allowed(true); } if (!$userId && 0 == $forum->getAllowAnonymous()) { api_not_allowed(true); } $group_id = api_get_group_id(); if (!api_is_allowed_to_edit(null, true) && 0 == $forum->getAllowEdit() && !GroupManager::isTutorOfGroup(api_get_user_id(), $groupEntity) ) { api_not_allowed(true); } Display::display_header(); // Action links if ('learnpath' !== $origin) { $actions = ''; //$actions .= ''.search_link().''; if ('group' === $origin) { $actions .= ''. Display::getMdiIcon(ActionIcon::BACK, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Back to').' '.get_lang('Groups')). ''; } else { $actions .= ''. Display::getMdiIcon(ActionIcon::BACK, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Back toForumOverview')). ''; } $actions .= ''. Display::getMdiIcon('comment-quote', 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Back toForum')). ''; echo Display::toolbarAction('toolbar', [$actions]); } /* Display Forum Category and the Forum information */ /*New display forum div*/ /*New display forum div*/ echo '
'; echo '

'; echo Display::url( prepare4display($forum->getTitle()), 'viewforum.php?'.api_get_cidreq().'&'.http_build_query([ 'origin' => $origin, 'forum' => $forum->getIid(), ]), ['class' => false === $forumIsVisible ? 'text-muted' : null] ); echo '

'; echo '

'.prepare4display($forum->getForumComment()).'

'; echo '
'; /* End new display forum */ // Set forum attachment data into $_SESSION getAttachedFiles( $forum->getIid(), $thread->getIid(), $post->getIid() ); show_edit_post_form( $post, $thread, $forum, isset($_SESSION['formelements']) ? $_SESSION['formelements'] : '' ); // Footer if (isset($origin) && 'learnpath' === $origin) { Display::display_reduced_footer(); } else { Display::display_footer(); }