, Ghent University * @Copyright Ghent University * @Copyright Patrick Cool */ require_once __DIR__.'/../inc/global.inc.php'; // Notification for unauthorized people. api_protect_course_script(true); $cidreq = api_get_cidreq(); $_user = api_get_user_info(); $nameTools = get_lang('Forums'); $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(); $forumId = isset($_GET['forum']) ? (int) $_GET['forum'] : 0; $repo = Container::getForumRepository(); $forumEntity = null; if (!empty($forumId)) { /** @var CForum $forumEntity */ $forumEntity = $repo->find($forumId); } $courseEntity = api_get_course_entity(api_get_course_int_id()); $sessionEntity = api_get_session_entity(api_get_session_id()); $current_forum_category = $forumEntity->getForumCategory(); $logInfo = [ 'tool' => TOOL_FORUM, 'tool_id' => $forumId, 'action' => 'add-thread', ]; Event::registerLog($logInfo); if (api_is_in_gradebook()) { $interbreadcrumb[] = [ 'url' => Category::getUrl(), 'name' => get_lang('Assessments'), ]; } /* Is the user allowed here? */ // The user is not allowed here if: // 1. the forumcategory or forum is invisible (visibility==0) and the user is not a course manager if (!api_is_allowed_to_create_course() && //is a student ( ($current_forum_category && false == $current_forum_category->isVisible($courseEntity)) || false == $current_forum_category->isVisible($courseEntity) ) && !api_get_session_id() ) { api_not_allowed(true); } // 2. the forumcategory or forum is locked (locked <>0) and the user is not a course manager if (!api_is_allowed_to_edit(false, true) && (($current_forum_category->isVisible($courseEntity) && 0 != $current_forum_category->getLocked()) || 0 != $forumEntity->getLocked()) ) { api_not_allowed(); } // 3. new threads are not allowed and the user is not a course manager if (!api_is_allowed_to_edit(false, true) && 1 != $forumEntity->getAllowNewThreads() ) { api_not_allowed(); } // 4. anonymous posts are not allowed and the user is not logged in if (!$_user['user_id'] && 1 != $forumEntity->getAllowAnonymous()) { api_not_allowed(); } // 5. Check user access if (0 != $forumEntity->getForumOfGroup()) { $show_forum = GroupManager::userHasAccess( api_get_user_id(), api_get_group_entity($forumEntity->getForumOfGroup()), GroupManager::GROUP_TOOL_FORUM ); if (!$show_forum) { api_not_allowed(); } } // 6. Invited users can't create new threads if (api_is_invitee()) { api_not_allowed(true); } $groupId = api_get_group_id(); if (!empty($groupId)) { $groupProperties = GroupManager::get_group_properties($groupId); $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'group/group.php?'.$cidreq, 'name' => get_lang('Groups'), ]; $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'group/group_space.php?'.$cidreq, 'name' => get_lang('Group area').' '.$groupProperties['name'], ]; $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'forum/viewforum.php?'.$cidreq.'&forum='.(int) ($_GET['forum']), 'name' => $forumEntity->getTitle(), ]; $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'forum/newthread.php?'.$cidreq.'&forum='.(int) ($_GET['forum']), 'name' => get_lang('Create thread'), ]; } else { $interbreadcrumb[] = ['url' => api_get_path(WEB_CODE_PATH).'forum/index.php?'.$cidreq, 'name' => $nameTools]; if ($current_forum_category) { $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'forum/index.php?'.$cidreq.'&forumcategory='.$current_forum_category->getIid(), 'name' => $current_forum_category->getTitle(), ]; } $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'forum/viewforum.php?'.$cidreq.'&forum='.$forumId, 'name' => $forumEntity->getTitle(), ]; $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Create thread')]; } $htmlHeadXtra[] = " "; $form = newThread( $forumEntity, isset($_SESSION['formelements']) ? $_SESSION['formelements'] : null ); Display::display_header(); //$actions ''.search_link().''; $actions = ''. Display::getMdiIcon(ActionIcon::BACK, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Back to forum')).''; echo Display::toolbarAction('toolbar', [$actions]); // Set forum attachment data into $_SESSION getAttachedFiles($forumEntity->getIid(), 0, 0); if ($form) { $form->display(); } if ('learnpath' == $origin) { Display::display_reduced_footer(); } else { Display::display_footer(); }