, Ghent University * @Copyright Ghent University * @Copyright Patrick Cool * * @package chamilo.forum */ require_once __DIR__.'/../inc/global.inc.php'; $current_course_tool = TOOL_FORUM; // Notification for unauthorized people. api_protect_course_script(true); api_protect_course_group(GroupManager::GROUP_TOOL_FORUM); // The section (tabs). $this_section = SECTION_COURSES; $nameTools = get_lang('ToolForum'); // Are we in a lp ? $origin = api_get_origin(); require_once 'forumfunction.inc.php'; $userId = api_get_user_id(); $sessionId = api_get_session_id(); $groupId = api_get_group_id(); $courseId = api_get_course_int_id(); $groupInfo = GroupManager::get_group_properties($groupId); $isTutor = GroupManager::is_tutor_of_group($userId, $groupInfo, $courseId); $isAllowedToEdit = api_is_allowed_to_edit(false, true) && api_is_allowed_to_session_edit(false, true); /* MAIN DISPLAY SECTION */ $my_forum = isset($_GET['forum']) ? (int) $_GET['forum'] : ''; // Note: This has to be validated that it is an existing forum. $current_forum = get_forum_information($my_forum); $isForumOpenByDateAccess = api_is_date_in_date_range($current_forum['start_time'], $current_forum['end_time']); if (!$isForumOpenByDateAccess && !$isAllowedToEdit) { if ($origin) { api_not_allowed(); } else { api_not_allowed(true); } } if (empty($current_forum)) { api_not_allowed(); } $current_forum_category = get_forumcategory_information($current_forum['forum_category']); $is_group_tutor = false; if (!empty($groupId)) { //Group info & group category info $group_properties = GroupManager::get_group_properties($groupId); $is_group_tutor = GroupManager::is_tutor_of_group( api_get_user_id(), $group_properties ); // Course if (!api_is_allowed_to_edit(false, true) && //is a student (($current_forum_category && $current_forum_category['visibility'] == 0) || $current_forum['visibility'] == 0) ) { api_not_allowed(true); } } else { //Course if (!api_is_allowed_to_edit(false, true) && ( ($current_forum_category && $current_forum_category['visibility'] == 0) || $current_forum['visibility'] == 0 ) //forum category or forum visibility is false ) { api_not_allowed(); } } /* Header and Breadcrumbs */ $my_search = isset($_GET['search']) ? $_GET['search'] : ''; $my_action = isset($_GET['action']) ? $_GET['action'] : ''; $logInfo = [ 'tool' => TOOL_FORUM, 'tool_id' => $my_forum, 'tool_id_detail' => 0, 'action' => !empty($my_action) ? $my_action : 'list-threads', 'action_details' => isset($_GET['content']) ? $_GET['content'] : '', ]; Event::registerLog($logInfo); if (api_is_in_gradebook()) { $interbreadcrumb[] = [ 'url' => Category::getUrl(), 'name' => get_lang('ToolGradebook'), ]; } $forumUrl = api_get_path(WEB_CODE_PATH).'forum/'; if (!empty($groupId)) { $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('GroupSpace').' '.$group_properties['name'], ]; $interbreadcrumb[] = [ 'url' => '#', 'name' => get_lang('Forum').' '.Security::remove_XSS($current_forum['forum_title']), ]; } else { $interbreadcrumb[] = [ 'url' => $forumUrl.'index.php?search='.Security::remove_XSS($my_search), 'name' => get_lang('ForumCategories'), ]; $interbreadcrumb[] = [ 'url' => $forumUrl.'viewforumcategory.php?forumcategory='.$current_forum_category['cat_id'] .'&search='.Security::remove_XSS(urlencode($my_search)), 'name' => prepare4display($current_forum_category['cat_title']), ]; $interbreadcrumb[] = [ 'url' => '#', 'name' => Security::remove_XSS($current_forum['forum_title']), ]; } if ($origin == 'learnpath') { Display::display_reduced_header(); } else { // The last element of the breadcrumb navigation is already set in interbreadcrumb, so give empty string. Display::display_header(); } /* Actions */ // Change visibility of a forum or a forum category. if (($my_action == 'invisible' || $my_action == 'visible') && isset($_GET['content']) && isset($_GET['id']) && $isAllowedToEdit ) { $message = change_visibility($_GET['content'], $_GET['id'], $_GET['action']); } // Locking and unlocking. if (($my_action == 'lock' || $my_action == 'unlock') && isset($_GET['content']) && isset($_GET['id']) && $isAllowedToEdit ) { $message = change_lock_status($_GET['content'], $_GET['id'], $my_action); } // Deleting. if ($my_action == 'delete' && isset($_GET['content']) && isset($_GET['id']) && $isAllowedToEdit ) { $locked = api_resource_is_locked_by_gradebook($_GET['id'], LINK_FORUM_THREAD); if ($locked == false) { $message = deleteForumCategoryThread($_GET['content'], $_GET['id']); // Delete link $link_info = GradebookUtils::isResourceInCourseGradebook( api_get_course_id(), 5, intval($_GET['id']), api_get_session_id() ); $link_id = $link_info['id']; if ($link_info !== false) { GradebookUtils::remove_resource_from_course_gradebook($link_id); } } } // Moving. if ($my_action == 'move' && isset($_GET['thread']) && $isAllowedToEdit ) { $message = move_thread_form(); } // Notification. if ($my_action == 'notify' && isset($_GET['content']) && isset($_GET['id']) && api_is_allowed_to_session_edit(false, true) ) { $return_message = set_notification($_GET['content'], $_GET['id']); echo Display::return_message($return_message, 'confirm', false); } // Student list if ($my_action == 'liststd' && isset($_GET['content']) && isset($_GET['id']) && (api_is_allowed_to_edit(null, true) || $is_group_tutor) ) { $active = null; $listType = isset($_GET['list']) ? $_GET['list'] : null; switch ($listType) { case 'qualify': $student_list = get_thread_users_qualify($_GET['id']); $nrorow3 = -2; $active = 2; break; case 'notqualify': $student_list = get_thread_users_not_qualify($_GET['id']); $nrorow3 = -2; $active = 3; break; default: $student_list = get_thread_users_details($_GET['id']); $nrorow3 = Database::num_rows($student_list); $active = 1; break; } $table_list = Display::page_subheader(get_lang('ThreadUsersList').': '.get_name_thread_by_id($_GET['id'])); if ($nrorow3 > 0 || $nrorow3 == -2) { $url = api_get_cidreq().'&forum='.$my_forum.'&action=' .Security::remove_XSS($_GET['action']).'&content=' .Security::remove_XSS($_GET['content'], STUDENT).'&id='.intval($_GET['id']); $tabs = [ [ 'content' => get_lang('AllStudents'), 'url' => $forumUrl.'viewforum.php?'.$url.'&list=all', ], [ 'content' => get_lang('StudentsQualified'), 'url' => $forumUrl.'viewforum.php?'.$url.'&list=qualify', ], [ 'content' => get_lang('StudentsNotQualified'), 'url' => $forumUrl.'viewforum.php?'.$url.'&list=notqualify', ], ]; $table_list .= Display::tabsOnlyLink($tabs, $active); $icon_qualify = 'quiz.png'; $table_list .= '
'.get_lang('NamesAndLastNames').' | '; if ($listType == 'qualify') { $table_list .= ''.get_lang('Qualification').' | '; } if (api_is_allowed_to_edit(null, true)) { $table_list .= ''.get_lang('Qualify').' | '; } $table_list .= '
---|---|---|
'; $table_list .= UserManager::getUserProfileLink($userInfo); $table_list .= ' | '; if ($listType == 'qualify') { $table_list .= ''.$row_student_list['qualify'].'/'.$max_qualify.' | '; } if (api_is_allowed_to_edit(null, true)) { $current_qualify_thread = showQualify( '1', $row_student_list['id'], $_GET['id'] ); $table_list .= '' .Display::return_icon($icon_qualify, get_lang('Qualify')).' |
'.get_lang('ThereIsNotQualifiedLearners').' | ||
'.get_lang('ThereIsNotUnqualifiedLearners').' |
'.get_lang('By').' '.$iconStatus.' '.$authorName.'
'; if ($last_post_info) { $html .= ''.Security::remove_XSS(cut($last_post_info['post_text'], 140)).'
'; } $html .= ''.Display::dateToStringAgoAndLongDate($row['insert_date']).'
'; if ($current_forum['moderated'] == 1 && api_is_allowed_to_edit(false, true)) { $waitingCount = getCountPostsWithStatus( CForumPost::STATUS_WAITING_MODERATION, $current_forum, $row['thread_id'] ); if (!empty($waitingCount)) { $html .= Display::label( get_lang('PostsPendingModeration').': '.$waitingCount, 'warning' ); } } $html .= '